From 1131e61ad52dd0331b596bc6964cded675853535 Mon Sep 17 00:00:00 2001 From: JoyerJin <116236375+JoyerJin@users.noreply.github.com> Date: Fri, 17 Apr 2026 18:22:55 +0800 Subject: [PATCH 01/98] Move existing benchmark cases from waza to evaluate --- .github/azure-typespec-author/SKILL.md | 123 + .../evaluate/.vally.yaml | 24 + .../evaluate/evals/001001.eval.yaml | 75 + .../evaluate/evals/001002.eval.yaml | 79 + .../evaluate/evals/001003.eval.yaml | 71 + .../evaluate/evals/001004.eval.yaml | 71 + .../evaluate/evals/001005.eval.yaml | 108 + .../evaluate/evals/001006.eval.yaml | 114 + .../evaluate/evals/001007.eval.yaml | 136 + .../evaluate/evals/001008.eval.yaml | 122 + .../evaluate/evals/001009.eval.yaml | 77 + .../evaluate/evals/001010.eval.yaml | 73 + .../evaluate/evals/001011.eval.yaml | 73 + .../evaluate/evals/001012.eval.yaml | 85 + .../evaluate/evals/001013.eval.yaml | 73 + .../evaluate/evals/002001.eval.yaml | 78 + .../evaluate/evals/002002.eval.yaml | 77 + .../evaluate/evals/002003.eval.yaml | 74 + .../evaluate/evals/002004.eval.yaml | 79 + .../evaluate/evals/002005.eval.yaml | 75 + .../evaluate/evals/002006.eval.yaml | 77 + .../evaluate/evals/002007.eval.yaml | 77 + .../evaluate/evals/002008.eval.yaml | 77 + .../evaluate/evals/002009.eval.yaml | 67 + .../evaluate/evals/002010.eval.yaml | 67 + .../evaluate/evals/003001.eval.yaml | 65 + .../evaluate/evals/003002.eval.yaml | 77 + .../evaluate/evals/003003.eval.yaml | 73 + .../evaluate/evals/004001.eval.yaml | 73 + .../evaluate/evals/004002.eval.yaml | 77 + .../evaluate/evals/004003.eval.yaml | 84 + .../evaluate/evals/005001.eval.yaml | 65 + .../employee.tsp | 100 + .../main.tsp | 32 + .../package.json | 50 + .../preview/2024-10-01-preview/widget.json | 693 +++ .../readme.md | 57 + .../shared.tsp | 8 + .../stable/2021-11-01/widget.json | 693 +++ .../tspconfig.yaml | 44 + .../employee.tsp | 104 + ...ployees_CreateOrUpdate_MaximumSet_Gen.json | 70 + .../Employees_Delete_MaximumSet_Gen.json | 18 + .../Employees_Get_MaximumSet_Gen.json | 35 + ...es_ListByResourceGroup_MaximumSet_Gen.json | 39 + ...es_ListByResourceGroup_MinimumSet_Gen.json | 21 + ...ees_ListBySubscription_MaximumSet_Gen.json | 38 + ...ees_ListBySubscription_MinimumSet_Gen.json | 20 + .../Employees_Update_MaximumSet_Gen.json | 43 + .../Operations_List_MaximumSet_Gen.json | 28 + .../Operations_List_MinimumSet_Gen.json | 12 + ...ployees_CreateOrUpdate_MaximumSet_Gen.json | 85 + .../Employees_Delete_MaximumSet_Gen.json | 18 + .../Employees_Get_MaximumSet_Gen.json | 40 + ...es_ListByResourceGroup_MaximumSet_Gen.json | 44 + ...es_ListByResourceGroup_MinimumSet_Gen.json | 21 + ...ees_ListBySubscription_MaximumSet_Gen.json | 43 + ...ees_ListBySubscription_MinimumSet_Gen.json | 20 + .../Employees_Update_MaximumSet_Gen.json | 53 + .../Operations_List_MaximumSet_Gen.json | 28 + .../Operations_List_MinimumSet_Gen.json | 12 + .../main.tsp | 31 + .../package.json | 50 + .../readme.md | 45 + .../shared.tsp | 8 + .../tspconfig.yaml | 44 + .../employee.tsp | 104 + ...ployees_CreateOrUpdate_MaximumSet_Gen.json | 70 + .../Employees_Delete_MaximumSet_Gen.json | 18 + .../Employees_Get_MaximumSet_Gen.json | 35 + ...es_ListByResourceGroup_MaximumSet_Gen.json | 39 + ...es_ListByResourceGroup_MinimumSet_Gen.json | 21 + ...ees_ListBySubscription_MaximumSet_Gen.json | 38 + ...ees_ListBySubscription_MinimumSet_Gen.json | 20 + .../Employees_Update_MaximumSet_Gen.json | 43 + .../Operations_List_MaximumSet_Gen.json | 28 + .../Operations_List_MinimumSet_Gen.json | 12 + ...ployees_CreateOrUpdate_MaximumSet_Gen.json | 85 + .../Employees_Delete_MaximumSet_Gen.json | 18 + .../Employees_Get_MaximumSet_Gen.json | 40 + ...es_ListByResourceGroup_MaximumSet_Gen.json | 44 + ...es_ListByResourceGroup_MinimumSet_Gen.json | 21 + ...ees_ListBySubscription_MaximumSet_Gen.json | 43 + ...ees_ListBySubscription_MinimumSet_Gen.json | 20 + .../Employees_Update_MaximumSet_Gen.json | 53 + .../Operations_List_MaximumSet_Gen.json | 28 + .../Operations_List_MinimumSet_Gen.json | 12 + .../main.tsp | 30 + .../package.json | 50 + .../readme.md | 57 + .../shared.tsp | 8 + .../tspconfig.yaml | 44 + .../employee.tsp | 104 + ...ployees_CreateOrUpdate_MaximumSet_Gen.json | 70 + .../Employees_Delete_MaximumSet_Gen.json | 18 + .../Employees_Get_MaximumSet_Gen.json | 35 + ...es_ListByResourceGroup_MaximumSet_Gen.json | 39 + ...es_ListByResourceGroup_MinimumSet_Gen.json | 21 + ...ees_ListBySubscription_MaximumSet_Gen.json | 38 + ...ees_ListBySubscription_MinimumSet_Gen.json | 20 + .../Employees_Update_MaximumSet_Gen.json | 43 + .../Operations_List_MaximumSet_Gen.json | 28 + .../Operations_List_MinimumSet_Gen.json | 12 + ...ployees_CreateOrUpdate_MaximumSet_Gen.json | 85 + .../Employees_Delete_MaximumSet_Gen.json | 18 + .../Employees_Get_MaximumSet_Gen.json | 40 + ...es_ListByResourceGroup_MaximumSet_Gen.json | 44 + ...es_ListByResourceGroup_MinimumSet_Gen.json | 21 + ...ees_ListBySubscription_MaximumSet_Gen.json | 43 + ...ees_ListBySubscription_MinimumSet_Gen.json | 20 + .../Employees_Update_MaximumSet_Gen.json | 53 + .../Operations_List_MaximumSet_Gen.json | 28 + .../Operations_List_MinimumSet_Gen.json | 12 + .../main.tsp | 31 + .../package.json | 50 + .../readme.md | 45 + .../shared.tsp | 8 + .../tspconfig.yaml | 44 + .../employee.tsp | 104 + ...ployees_CreateOrUpdate_MaximumSet_Gen.json | 70 + .../Employees_Delete_MaximumSet_Gen.json | 18 + .../Employees_Get_MaximumSet_Gen.json | 35 + ...es_ListByResourceGroup_MaximumSet_Gen.json | 39 + ...es_ListByResourceGroup_MinimumSet_Gen.json | 21 + ...ees_ListBySubscription_MaximumSet_Gen.json | 38 + ...ees_ListBySubscription_MinimumSet_Gen.json | 20 + .../Employees_Update_MaximumSet_Gen.json | 43 + .../Operations_List_MaximumSet_Gen.json | 28 + .../Operations_List_MinimumSet_Gen.json | 12 + ...ployees_CreateOrUpdate_MaximumSet_Gen.json | 85 + .../Employees_Delete_MaximumSet_Gen.json | 18 + .../Employees_Get_MaximumSet_Gen.json | 40 + ...es_ListByResourceGroup_MaximumSet_Gen.json | 44 + ...es_ListByResourceGroup_MinimumSet_Gen.json | 21 + ...ees_ListBySubscription_MaximumSet_Gen.json | 43 + ...ees_ListBySubscription_MinimumSet_Gen.json | 20 + .../Employees_Update_MaximumSet_Gen.json | 53 + .../Operations_List_MaximumSet_Gen.json | 28 + .../Operations_List_MinimumSet_Gen.json | 12 + .../main.tsp | 30 + .../package.json | 50 + .../readme.md | 45 + .../shared.tsp | 8 + .../tspconfig.yaml | 44 + .../employee.tsp | 104 + .../main.tsp | 32 + .../package.json | 50 + .../preview/2024-10-01-preview/widget.json | 710 +++ .../readme.md | 45 + .../shared.tsp | 8 + .../stable/2021-11-01/widget.json | 710 +++ .../tspconfig.yaml | 44 + .../badgeAssignment.tsp | 41 + .../employee.tsp | 100 + .../main.tsp | 33 + .../package.json | 50 + .../preview/2024-10-01-preview/widget.json | 1045 ++++ .../readme.md | 45 + .../shared.tsp | 8 + .../stable/2021-11-01/widget.json | 1045 ++++ .../tspconfig.yaml | 44 + .../002005-ARM-define-the-resource/main.tsp | 31 + .../package.json | 50 + .../002005-ARM-define-the-resource/readme.md | 45 + .../002005-ARM-define-the-resource/shared.tsp | 8 + .../tspconfig.yaml | 44 + .../employee.tsp | 99 + .../main.tsp | 32 + .../package.json | 50 + .../preview/2024-10-01-preview/widget.json | 548 ++ .../readme.md | 45 + .../shared.tsp | 8 + .../stable/2021-11-01/widget.json | 548 ++ .../tspconfig.yaml | 44 + .../003001-dataplane-async-delete-op/inma.tsp | 943 ++++ .../package.json | 50 + .../BastionHost.tsp | 214 + .../BgpConnection.tsp | 142 + .../ExpressRouteGateway.tsp | 214 + .../ExpressRoutePort.tsp | 195 + .../ExpressRouteProviderPort.tsp | 75 + .../NetworkInterface.tsp | 250 + .../P2SVpnGateway.tsp | 213 + .../Route.tsp | 80 + .../VpnServerConfigurationPolicyGroup.tsp | 98 + .../VpnSiteLinkConnection.tsp | 138 + .../package.json | 50 + .../models.tsp | 4942 +++++++++++++++++ .../package.json | 50 + .../Microsoft.Widget/Widget/employee.tsp | 100 + .../fixtures/Microsoft.Widget/Widget/main.tsp | 32 + .../Microsoft.Widget/Widget/package.json | 50 + .../preview/2024-10-01-preview/widget.json | 692 +++ .../Microsoft.Widget/Widget/readme.md | 45 + .../Microsoft.Widget/Widget/shared.tsp | 8 + .../Widget/stable/2021-11-01/widget.json | 692 +++ .../Microsoft.Widget/Widget/tspconfig.yaml | 44 + .../references/agentic-search.md | 15 + .../analyze-project-and-classify-task.md | 62 + .../references/api-version-evolution.md | 31 + .../references/general-authoring-intake.md | 42 + .../references/validation.md | 36 + .../TestData/TypeSpec/TestCases.json | 3 +- 203 files changed, 23304 insertions(+), 1 deletion(-) create mode 100644 .github/azure-typespec-author/SKILL.md create mode 100644 .github/azure-typespec-author/evaluate/.vally.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/001001.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/001002.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/001003.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/001004.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/001005.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/001006.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/001007.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/001008.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/001009.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/001010.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/001011.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/001012.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/001013.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/002001.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/002002.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/002003.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/002004.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/002005.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/002006.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/002007.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/002008.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/002009.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/002010.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/003001.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/003002.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/003003.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/004001.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/004002.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/004003.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/evals/005001.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/employee.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/main.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/package.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/preview/2024-10-01-preview/widget.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/readme.md create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/shared.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/stable/2021-11-01/widget.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/tspconfig.yaml create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/employee.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/main.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/package.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/readme.md create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/shared.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/tspconfig.yaml create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/employee.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Operations_List_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Operations_List_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Get_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Update_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Operations_List_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Operations_List_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/main.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/package.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/readme.md create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/shared.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/tspconfig.yaml create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/employee.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/main.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/package.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/readme.md create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/shared.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/tspconfig.yaml create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/employee.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Operations_List_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Operations_List_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Get_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Update_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Operations_List_MaximumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Operations_List_MinimumSet_Gen.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/main.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/package.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/readme.md create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/shared.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/tspconfig.yaml create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/employee.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/main.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/package.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/preview/2024-10-01-preview/widget.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/readme.md create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/shared.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/stable/2021-11-01/widget.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/tspconfig.yaml create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/badgeAssignment.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/employee.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/main.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/package.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/preview/2024-10-01-preview/widget.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/readme.md create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/shared.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/stable/2021-11-01/widget.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/tspconfig.yaml create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/main.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/package.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/readme.md create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/shared.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/tspconfig.yaml create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/employee.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/main.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/package.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/preview/2024-10-01-preview/widget.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/readme.md create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/shared.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/stable/2021-11-01/widget.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/tspconfig.yaml create mode 100644 .github/azure-typespec-author/evaluate/fixtures/003001-dataplane-async-delete-op/inma.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/003001-dataplane-async-delete-op/package.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/BastionHost.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/BgpConnection.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteGateway.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRoutePort.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteProviderPort.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/NetworkInterface.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/P2SVpnGateway.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/Route.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/VpnServerConfigurationPolicyGroup.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/VpnSiteLinkConnection.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/package.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/models.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/package.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/employee.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/main.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/package.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/readme.md create mode 100644 .github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/shared.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/tspconfig.yaml create mode 100644 .github/azure-typespec-author/references/agentic-search.md create mode 100644 .github/azure-typespec-author/references/analyze-project-and-classify-task.md create mode 100644 .github/azure-typespec-author/references/api-version-evolution.md create mode 100644 .github/azure-typespec-author/references/general-authoring-intake.md create mode 100644 .github/azure-typespec-author/references/validation.md diff --git a/.github/azure-typespec-author/SKILL.md b/.github/azure-typespec-author/SKILL.md new file mode 100644 index 00000000000..4d758549117 --- /dev/null +++ b/.github/azure-typespec-author/SKILL.md @@ -0,0 +1,123 @@ +--- +name: azure-typespec-author +license: MIT +metadata: + version: "1.0.0" +description: "Authors and modifies Azure TypeSpec (.tsp) API specifications. USE FOR: any TypeSpec/tsp change — api versions (add, bump, preview, stable, promote), resources, operations, models, properties, decorators, visibility, constraints, breaking changes, LRO, suppressions, operationId, spread model. Covers ARM resource-manager and data-plane services. DO NOT USE FOR: SDK generation, releasing SDK packages, or single MCP tool calls. INVOKES: azure-sdk-mcp:azsdk_typespec_generate_authoring_plan, azure-sdk-mcp:azsdk_run_typespec_validation." +compatibility: + requires: "azure-sdk-mcp server with azsdk_typespec_generate_authoring_plan and azsdk_run_typespec_validation tools" +--- + +# Azure TypeSpec Author + +## MCP Tools + +| Tool | Purpose | +| ------------------------------------------------------ | --------------------------------------------------------- | +| `azure-sdk-mcp:azsdk_typespec_generate_authoring_plan` | Generate grounded authoring plan (General Authoring only) | +| `azure-sdk-mcp:azsdk_run_typespec_validation` | Validate TypeSpec | + +**Prerequisite:** `azure-sdk-mcp` server must be running. + +## Constraints + +- **Always follow the full workflow** — even seemingly simple changes (e.g. adding a default value) can require complex versioning decorator changes. Never skip steps. +- **Mandatory for ALL `.tsp` edits** — even a single `?` change can be breaking. +- **Minimal, scoped edits** — only change what the request requires. +- **Always validate** — run every steps in [validation](references/validation.md) after every edit. +- **Always cite references** — provide links that justify the approach. +- **Follow the authoring plan exactly** — code changes in Step 4 MUST follow the authoring plan generated in Step 3. Do not deviate by referring to existing code patterns in the TypeSpec project; the authoring plan is the single source of truth for what to change. + +--- + +## Workflow + +> Classify → Intake → Plan → Apply → Validate + +### Progress Checklist + +Copy and update as you progress: + +- [ ] Step 1: Analyzed project & classified as: \_\_\_ +- [ ] Step 2: Collected intake inputs +- [ ] Step 3: Retrieved authoring plan +- [ ] Step 4: Applied changes +- [ ] Step 5: Validated with TypeSpec validation and `tsp compile .` + +### Step 1: Analyze & Classify + +Follow [analyze project & classify task](references/analyze-project-and-classify-task.md). + +Classify as exactly one: + +| Task Type | When | `azsdk_typespec_generate_authoring_plan` | +| ------------------------- | --------------------------------------------------------------------------------- | ---------------------------------------- | +| **API Version Evolution** | Adding a new preview or stable API version to an existing ARM service. (ARM only) | **MUST NOT** call | +| **General Authoring** | Any other `.tsp` change (resources, operations, models, properties, etc.) | **MUST** call | + +State your classification explicitly before proceeding. + +--- + +### Step 2: Intake + +Collect inputs needed for the change. Branch by task type: + +- **API Version Evolution** → Follow [API version evolution reference — Step 2](references/api-version-evolution.md#step-2-intake). +- **General Authoring** → Follow [intake guide](references/general-authoring-intake.md). + +--- + +### Step 3: Retrieve Authoring Plan + +Check your classification from Step 1, then branch: + +- **API Version Evolution** → Follow [API version evolution reference — Step 3](references/api-version-evolution.md#step-3-retrieve-authoring-plan). **MUST NOT** call `azsdk_typespec_generate_authoring_plan`. +- **General Authoring** → **MUST** invoke `azure-sdk-mcp:azsdk_typespec_generate_authoring_plan` with: + + | Parameter | Value | + | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | `request` | User request (verbatim) | + | `additionalInformation` | All content gathered from Steps 1–2 (intake analysis, user answers, relevant `.tsp` code read from the project), **including any case-specific Defaults noted in Step 2.2** | + | `typeSpecProjectRootPath` | TypeSpec project root path | + + Do not proceed without an authoring plan from this tool. + +--- + +### Step 4: Apply Changes + +Confirm uncertainties with the user, then make minimal `.tsp` edits. + +- **API Version Evolution** → Apply the plan from Step 3. +- **General Authoring** → Apply the authoring plan from Step 3. + +--- + +### Step 5: Validate + +See [validation guide](references/validation.md) for sub-steps. You must run TypeSpec validation (5.1), `tsp compile .` (5.2), and example verification (5.3, API Version Evolution only). + +--- + +## Reference Files + +| File | Purpose | +| --------------------------------------------------------------------------------------- | ----------------------------------------- | +| [analyze-project-and-classify-task.md](references/analyze-project-and-classify-task.md) | Step 1: project analysis + classification | +| [api-version-evolution.md](references/api-version-evolution.md) | Steps 2–4 for API Version Evolution tasks | +| [general-authoring-intake.md](references/general-authoring-intake.md) | Step 2 for General Authoring tasks | +| [agentic-search.md](references/agentic-search.md) | Procedure for fetching external docs | +| [validation.md](references/validation.md) | Step 5: validation sub-steps | + +## Examples + +- "Add a new preview API version 2026-01-01-preview for widget resource manager" +- "Bump to stable version 2026-01-01 for Microsoft.Widget" +- "Add an ARM resource named Asset with CRUD operations" +- "Add a new property to the Widget model" + +## Troubleshooting + +- **TypeSpec validation fails** — display all errors, provide fix suggestions, re-run validation. +- **API Version Evolution** — use the versioning guide URLs in the [version evolution reference](references/api-version-evolution.md); do not call the authoring plan tool. diff --git a/.github/azure-typespec-author/evaluate/.vally.yaml b/.github/azure-typespec-author/evaluate/.vally.yaml new file mode 100644 index 00000000000..c493f547a70 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/.vally.yaml @@ -0,0 +1,24 @@ +# Vally configuration for Azure SDK CLI MCP tool evaluations +# See: https://vally.dev/reference/vally-config + +paths: + evals: [evals/] + evalFilenames: ["*.eval.yaml"] + skills: [../] + results: results/ + +suites: + versioning: + evals: ["evals/001001.eval.yaml","evals/001002.eval.yaml","evals/001003.eval.yaml","evals/001004.eval.yaml","evals/001005.eval.yaml","evals/001006.eval.yaml","evals/001007.eval.yaml","evals/001008.eval.yaml","evals/001009.eval.yaml","evals/001010.eval.yaml","evals/001011.eval.yaml","evals/001012.eval.yaml","evals/001013.eval.yaml"] + version-evolution: + evals: ["evals/001005.eval.yaml","evals/001006.eval.yaml","evals/001007.eval.yaml","evals/001008.eval.yaml"] + armtemplate: + evals: ["evals/002001.eval.yaml","evals/002002.eval.yaml","evals/002003.eval.yaml","evals/002004.eval.yaml","evals/002005.eval.yaml","evals/002006.eval.yaml","evals/002007.eval.yaml","evals/002008.eval.yaml","evals/002009.eval.yaml","evals/002010.eval.yaml"] + longrunningoperation: + evals: ["evals/003001.eval.yaml","evals/003002.eval.yaml","evals/003003.eval.yaml"] + decorators: + evals: ["evals/004001.eval.yaml","evals/004002.eval.yaml","evals/004003.eval.yaml"] + warning: + evals: ["evals/005001.eval.yaml"] + all: + evals: ["evals/*.eval.yaml"] \ No newline at end of file diff --git a/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml new file mode 100644 index 00000000000..a1a909fae70 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml @@ -0,0 +1,75 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- name: 001001-version-spread-property + prompt: I added `...Azure.ResourceManager.ManagedServiceIdentityProperty;` which updates all my existing API versions and introduces a breaking change. I want to introduce the properties of the spread model '...ManagedServiceIdentityProperty' in a new API version 2025-05-04-preview only. + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + graders: + - type: file-matches + config: + path: main.tsp + pattern: 2025-05-04-preview + - type: file-matches + config: + path: employee.tsp + pattern: "\\.\\.\\.ManagedServiceIdentityProperty;" + - type: file-matches + config: + path: employee.tsp + pattern: "@@added\\(Employee\\.identity, Versions\\.(v2025_05_04_preview|`2025-05-04-preview`)\\);" + - type: prompt + config: + prompt: Verify changes are scoped to this task only, with no unrelated edits beyond introducing preview-only identity via versioning. + model: claude-opus-4.6-1m + scoring: scale_1_5 + threshold: 1.0 + constraints: + max_turns: 10 + max_tokens: 50000 + expect_tools: + - edit + - azsdk_run_typespec_validation +scoring: + weights: + file-matches: 3 + prompt: 1 + threshold: 1.0 + + + diff --git a/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml new file mode 100644 index 00000000000..fd6d83a4a7c --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml @@ -0,0 +1,79 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + add a default value `21` for property age in model EmployeeProperties from a new api version 2025-11-01 + name: 001002-version-default-value + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: file-matches + config: + path: employee.tsp + pattern: '@removed\(Versions\.v2025_11_01\)' + - type: file-matches + config: + path: employee.tsp + pattern: '@renamedFrom\(Versions\.v2025_11_01, "age"\)' + - type: file-matches + config: + path: employee.tsp + pattern: '@added\(Versions\.v2025_11_01\)' + - type: file-matches + config: + path: employee.tsp + pattern: 'age\?: int32 = 21;' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 4 + threshold: 1.0 + + diff --git a/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml new file mode 100644 index 00000000000..6c2dbae468c --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml @@ -0,0 +1,71 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + change the property age of EmployeeProperties from required to optional for new api version 2025-05-04-preview + name: 001003-version-required-to-optional + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/001003-version-required-to-optional/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: file-matches + config: + path: employee.tsp + pattern: '@madeOptional' + - type: file-matches + config: + path: employee.tsp + pattern: 2025-05-04-preview|v2025_05_04_preview + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 2 + threshold: 1.0 + + diff --git a/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml new file mode 100644 index 00000000000..4b9db162186 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml @@ -0,0 +1,71 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + change the visibility of property 'provisioningState' from Lifecycle.Read to Lifecycle.Read and Lifecycle.Create in version 2025-05-04-preview only + name: 001004-version-property-decorator + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: file-matches + config: + path: employee.tsp + pattern: Lifecycle\.Read, Lifecycle\.Create + - type: file-matches + config: + path: main.tsp + pattern: 2025-05-04-preview + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 2 + threshold: 1.0 + + diff --git a/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml new file mode 100644 index 00000000000..5d2cceee5a3 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml @@ -0,0 +1,108 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + Add a new preview version `2025-05-04-preview` to my service widget resource manager. Exclude Feature: `age` property with default value 21. Carry other features. + name: 001005-version-add-preview-after-preview + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/001005-version-add-preview-after-preview\employee.tsp + dest: employee.tsp + - src: ../fixtures/001005-version-add-preview-after-preview\main.tsp + dest: main.tsp + - src: ../fixtures/001005-version-add-preview-after-preview\shared.tsp + dest: shared.tsp + - src: ../fixtures/001005-version-add-preview-after-preview\tspconfig.yaml + dest: tspconfig.yaml + - src: ../fixtures/001005-version-add-preview-after-preview\package.json + dest: package.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_CreateOrUpdate_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Delete_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Get_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_ListByResourceGroup_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_ListBySubscription_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Update_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Operations_List_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Operations_List_MinimumSet_Gen.json + dest: examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json + dest: examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListBySubscription_MinimumSet_Gen.json + dest: examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Operations_List_MaximumSet_Gen.json + dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Operations_List_MinimumSet_Gen.json + dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json + graders: + - type: file-exists + config: + path: examples/2025-05-04-preview/Employees_Get_MaximumSet_Gen.json + - type: file-not-exists + config: + path: examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json + - type: file-matches + config: + path: main.tsp + pattern: 2025-05-04-preview + - type: file-not-matches + config: + path: main.tsp + pattern: 2024-10-01-preview + - type: file-not-matches + config: + path: employee.tsp + pattern: oldAge + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Evaluate only the semantic interpretation of the request: the excluded feature is the default value 21 on age, while age itself should remain as optional int32 (not removed). Also check the agent clearly explains this rationale. Do not re-evaluate version renaming, old version removal, oldAge removal, or example folder/file changes, since those are already covered by file-based graders.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 1 + file-not-matches: 2 + file-exists: 1 + file-not-exists: 1 + threshold: 1.0 + + + + diff --git a/.github/azure-typespec-author/evaluate/evals/001006.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001006.eval.yaml new file mode 100644 index 00000000000..5008bf4e4f1 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/001006.eval.yaml @@ -0,0 +1,114 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + Add a new preview version `2025-05-04-preview` to my service widget resource manager. Carry over all the features from the latest stable version + name: 001006-version-add-preview-after-stable + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/001006-version-add-preview-after-stable\employee.tsp + dest: employee.tsp + - src: ../fixtures/001006-version-add-preview-after-stable\main.tsp + dest: main.tsp + - src: ../fixtures/001006-version-add-preview-after-stable\shared.tsp + dest: shared.tsp + - src: ../fixtures/001006-version-add-preview-after-stable\tspconfig.yaml + dest: tspconfig.yaml + - src: ../fixtures/001006-version-add-preview-after-stable\package.json + dest: package.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Operations_List_MaximumSet_Gen.json + dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Operations_List_MinimumSet_Gen.json + dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_Delete_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_Get_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json + dest: examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_ListBySubscription_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_ListBySubscription_MinimumSet_Gen.json + dest: examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_Update_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Operations_List_MaximumSet_Gen.json + dest: examples/2024-10-01/Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Operations_List_MinimumSet_Gen.json + dest: examples/2024-10-01/Operations_List_MinimumSet_Gen.json + graders: + - type: file-exists + config: + path: examples/2025-05-04-preview/Employees_Get_MaximumSet_Gen.json + - type: file-exists + config: + path: examples/2024-10-01/Employees_Get_MaximumSet_Gen.json + - type: file-matches + config: + path: main.tsp + pattern: 2025-05-04-preview + - type: file-matches + config: + path: main.tsp + pattern: 2024-10-01 + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + file-exists: 2 + prompt: 1 + file-matches: 2 + threshold: 1.0 + + + + diff --git a/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml new file mode 100644 index 00000000000..aa379ef23fe --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml @@ -0,0 +1,136 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + I want to add a new stable version `2025-01-01`. Exclude `workLocation` property and `WorkLocation` model. Carry other features. + name: 001007-version-add-stable-after-preview + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/001007-version-add-stable-after-preview\employee.tsp + dest: employee.tsp + - src: ../fixtures/001007-version-add-stable-after-preview\main.tsp + dest: main.tsp + - src: ../fixtures/001007-version-add-stable-after-preview\shared.tsp + dest: shared.tsp + - src: ../fixtures/001007-version-add-stable-after-preview\tspconfig.yaml + dest: tspconfig.yaml + - src: ../fixtures/001007-version-add-stable-after-preview\package.json + dest: package.json + - src: ../fixtures/001007-version-add-stable-after-preview\readme.md + dest: readme.md + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json + dest: examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_ListBySubscription_MinimumSet_Gen.json + dest: examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Operations_List_MaximumSet_Gen.json + dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Operations_List_MinimumSet_Gen.json + dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_CreateOrUpdate_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_Delete_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_Get_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_ListByResourceGroup_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_ListByResourceGroup_MinimumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_ListBySubscription_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_ListBySubscription_MinimumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_Update_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Operations_List_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Operations_List_MinimumSet_Gen.json + dest: examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json + graders: + - type: file-exists + config: + path: examples/2025-01-01/Employees_Get_MaximumSet_Gen.json + - type: file-not-exists + config: + path: examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json + - type: file-matches + config: + path: main.tsp + pattern: 2025-01-01 + - type: file-not-matches + config: + path: main.tsp + pattern: 2024-10-01-preview + - type: file-not-matches + config: + path: employee.tsp + pattern: 'workLocation\?: WorkLocation;' + - type: file-matches + config: + path: employee.tsp + pattern: '@added\(Versions\.v2025_01_01\)' + - type: file-not-matches + config: + path: employee.tsp + pattern: v2024_10_01_preview + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Evaluate only the semantic interpretation of the request: the excluded features are workLocation property and WorkLocation model (both should not appear in the new version), while other features should be carried. Also check the agent clearly explains this semantic rationale. Do not re-evaluate version renaming (2024-10-01-preview → 2025-01-01), old version removal, new version example setup, or decorators, since those are already covered by file-based graders.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 2 + file-not-matches: 3 + file-exists: 1 + file-not-exists: 1 + threshold: 1.0 + executor: copilot-sdk + runs: 1 + model: claude-opus-4.6-1m + timeout: 1800 + + diff --git a/.github/azure-typespec-author/evaluate/evals/001008.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001008.eval.yaml new file mode 100644 index 00000000000..3ec4262915e --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/001008.eval.yaml @@ -0,0 +1,122 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + Add a new stable version `2025-01-01` to my service. Carry over changes. + name: 001008-version-add-stable-after-stable + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/001008-version-add-stable-after-stable\employee.tsp + dest: employee.tsp + - src: ../fixtures/001008-version-add-stable-after-stable\main.tsp + dest: main.tsp + - src: ../fixtures/001008-version-add-stable-after-stable\shared.tsp + dest: shared.tsp + - src: ../fixtures/001008-version-add-stable-after-stable\tspconfig.yaml + dest: tspconfig.yaml + - src: ../fixtures/001008-version-add-stable-after-stable\package.json + dest: package.json + - src: ../fixtures/001008-version-add-stable-after-stable\readme.md + dest: readme.md + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json + dest: examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_ListBySubscription_MinimumSet_Gen.json + dest: examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Operations_List_MaximumSet_Gen.json + dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Operations_List_MinimumSet_Gen.json + dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_Delete_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_Get_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json + dest: examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_ListBySubscription_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_ListBySubscription_MinimumSet_Gen.json + dest: examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_Update_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Operations_List_MaximumSet_Gen.json + dest: examples/2024-10-01/Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Operations_List_MinimumSet_Gen.json + dest: examples/2024-10-01/Operations_List_MinimumSet_Gen.json + graders: + - type: file-exists + config: + path: examples/2024-10-01/Employees_Get_MaximumSet_Gen.json + - type: file-exists + config: + path: examples/2025-01-01/Employees_Get_MaximumSet_Gen.json + - type: file-matches + config: + path: main.tsp + pattern: 2021-10-01 + - type: file-matches + config: + path: main.tsp + pattern: 2024-10-01 + - type: file-matches + config: + path: main.tsp + pattern: 2025-01-01 + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + file-exists: 2 + prompt: 1 + file-matches: 3 + threshold: 1.0 + + diff --git a/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml new file mode 100644 index 00000000000..7863daf9373 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml @@ -0,0 +1,77 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + In the Widget project, make the `email` property required in EmployeeProperties only for version `2025-05-04-preview`. + name: 001009-version-model-property-required + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: file-matches + config: + path: main.tsp + pattern: v2025_05_04_preview + - type: file-not-matches + config: + path: main.tsp + pattern: v2024_10_01_preview + - type: file-matches + config: + path: employee.tsp + pattern: '@madeRequired\(Versions\.v2025_05_04_preview\)' + - type: file-matches + config: + path: employee.tsp + pattern: 'email: string;' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify: (1) new version 2025-05-04-preview added, (2) old preview version 2024-10-01-preview removed from enum, (3) email property made required only in new version, (4) only scoped edits made.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 3 + threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml new file mode 100644 index 00000000000..845e23cde76 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml @@ -0,0 +1,73 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + In the Widget project, remove the `department` property from EmployeeProperties only for version `2025-05-04-preview`. + name: 001010-version-model-property-removed + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: file-matches + config: + path: main.tsp + pattern: v2025_05_04_preview + - type: file-matches + config: + path: employee.tsp + pattern: '@removed\(Versions\.v2025_05_04_preview\)' + - type: file-matches + config: + path: employee.tsp + pattern: 'department\?: string;' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 3 + threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml new file mode 100644 index 00000000000..6e529c835cb --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml @@ -0,0 +1,73 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + In the Widget project, rename the `age` property to `employeeAge` in EmployeeProperties only for version `2025-05-04-preview`. + name: 001011-version-model-property-renamed + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: file-matches + config: + path: main.tsp + pattern: v2025_05_04_preview + - type: file-matches + config: + path: employee.tsp + pattern: '@renamedFrom\(Versions\.v2025_05_04_preview, "age"\)' + - type: file-matches + config: + path: employee.tsp + pattern: 'employeeAge\?: int32;' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 3 + threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml new file mode 100644 index 00000000000..c6aece49545 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml @@ -0,0 +1,85 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + In the Widget project, change the return type of the `exportData` operation from `ExportResult` to `DetailedExportResult` with additional properties `format` (string) and `exportedAt` (utcDateTime) only for version `2025-05-04-preview`. + name: 001012-version-operation-return-type-changed + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: file-matches + config: + path: main.tsp + pattern: v2025_05_04_preview + - type: file-matches + config: + path: employee.tsp + pattern: 'model DetailedExportResult' + - type: file-matches + config: + path: employee.tsp + pattern: 'format\?: string;' + - type: file-matches + config: + path: employee.tsp + pattern: 'exportedAt\?: utcDateTime;' + - type: file-matches + config: + path: employee.tsp + pattern: '@returnTypeChangedFrom\(Versions\.v2025_05_04_preview, ExportResult\)' + - type: file-matches + config: + path: employee.tsp + pattern: 'exportData is ArmResourceActionSync;' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 6 + threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml new file mode 100644 index 00000000000..e54c839881d --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml @@ -0,0 +1,73 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + In the Widget project, change the type of the `statusCode` property from `string` to `int32` in EmployeeProperties only for version `2025-05-04-preview`. + name: 001013-version-model-property-type-changed + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: file-matches + config: + path: main.tsp + pattern: v2025_05_04_preview + - type: file-matches + config: + path: employee.tsp + pattern: '@typeChangedFrom\(Versions\.v2025_05_04_preview, string\)' + - type: file-matches + config: + path: employee.tsp + pattern: 'statusCode\?: int32;' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 3 + threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml new file mode 100644 index 00000000000..3b96ea8acb7 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml @@ -0,0 +1,78 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + skills: + - ../../SKILL.md + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + change resource Employee to be an extension resource + name: 002001-ARM-change-resource-type + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: file-matches + config: + path: '*.tsp' + pattern: ExtensionResource< + - type: file-not-matches + config: + path: '*.tsp' + pattern: TrackedResource< + - type: file-matches + config: + path: '*.tsp' + pattern: Extension\.Read<|Extension\.CreateOrUpdate<|Extension\.ListByScope< + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-not-matches: 1 + file-matches: 2 + threshold: 1.0 + + diff --git a/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml new file mode 100644 index 00000000000..e9bfddb343c --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml @@ -0,0 +1,77 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + skills: + - ../../SKILL.md + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + add an extension resource named asset + name: 002002-ARM-define-extension-resource + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: file-matches + config: + path: '*.tsp' + pattern: model Asset is ExtensionResource + - type: file-matches + config: + path: '*.tsp' + pattern: interface Assets|interface AssetOps + - type: file-matches + config: + path: '*.tsp' + pattern: provisioningState + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 3 + threshold: 1.0 + + diff --git a/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml new file mode 100644 index 00000000000..5011f6aef76 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml @@ -0,0 +1,74 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + skills: + - ../../SKILL.md + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + Define a PATCH operation for Employees. It is to update properties of an employee. Ensure the definition meets TypeSpec Azure guidelines. + name: 002003-ARM-define-full-update-operation + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/002003-ARM-define-full-update-operation/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: file-matches + config: + path: '*.tsp' + pattern: ArmCustomPatchAsync< + - type: file-not-matches + config: + path: '*.tsp' + pattern: ArmResourcePatchAsync< + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-not-matches: 1 + file-matches: 1 + threshold: 1.0 + + diff --git a/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml new file mode 100644 index 00000000000..74e856ab8bb --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml @@ -0,0 +1,79 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + skills: + - ../../SKILL.md + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + Define a "badge assignment" extension resource. It should be an extension resource that can be attached to an employee. Ensure the definition meets TypeSpec Azure guidelines. + name: 002004-ARM-define-extension-resource + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/002004-ARM-define-extension-resource/badgeAssignment.tsp + dest: badgeAssignment.tsp + - src: ../fixtures/002004-ARM-define-extension-resource/employee.tsp + dest: employee.tsp + - src: ../fixtures/002004-ARM-define-extension-resource/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: file-matches + config: + path: badgeAssignment.tsp + pattern: model BadgeAssignment is ExtensionResource + - type: file-matches + config: + path: badgeAssignment.tsp + pattern: '@visibility\(Lifecycle\.Read\)' + - type: file-matches + config: + path: badgeAssignment.tsp + pattern: Extension\.Read<|Extension\.CreateOrUpdate< + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 3 + threshold: 1.0 + + diff --git a/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml new file mode 100644 index 00000000000..0de9267d27a --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml @@ -0,0 +1,75 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + skills: + - ../../SKILL.md + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + Define a Azure resource "User" under the namespace "Microsoft.Contoso" using TypeSpec. Ensure the definition meets TypeSpec Azure design guidelines. + name: 002005-ARM-define-the-resource + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/002005-ARM-define-the-resource/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: file-matches + config: + path: main.tsp + pattern: model Employee is TrackedResource + - type: file-matches + config: + path: main.tsp + pattern: ArmResourceCreateOrReplaceAsync|ArmResourceCreateOrUpdateAsync + - type: file-matches + config: + path: main.tsp + pattern: ArmListBySubscription + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 3 + threshold: 1.0 + + diff --git a/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml new file mode 100644 index 00000000000..61e4ecce19c --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml @@ -0,0 +1,77 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + skills: + - ../../SKILL.md + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + Create a new "AddressResource" child resource under the parent resource "Employee". Ensure the definition meets TypeSpec Azure design guidelines. + name: 002006-ARM-define-child-resource + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: file-matches + config: + path: '*.tsp' + pattern: '@parentResource\(Employee\)' + - type: file-matches + config: + path: '*.tsp' + pattern: ProxyResource + - type: file-matches + config: + path: '*.tsp' + pattern: interface Addresses|interface AddressResource + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 3 + threshold: 1.0 + + diff --git a/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml new file mode 100644 index 00000000000..633bead5734 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml @@ -0,0 +1,77 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + skills: + - ../../SKILL.md + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + Add an additional POST action called "/notify" to the standard operations of Employee. Ensure the definition meets TypeSpec Azure design guidelines. + name: 002007-ARM-define-custom-action + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: file-matches + config: + path: '*.tsp' + pattern: notify is ArmResourceAction|move is ArmResourceAction|ArmResourceActionSync< + - type: file-matches + config: + path: '*.tsp' + pattern: model .*Request + - type: file-matches + config: + path: '*.tsp' + pattern: model .*Response + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 3 + threshold: 1.0 + + diff --git a/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml new file mode 100644 index 00000000000..bf77d5ed6a3 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml @@ -0,0 +1,77 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + skills: + - ../../SKILL.md + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + add top and skip query parameters to the ListBySubscription operation in interface Employees + name: 002008-ARM-add-parameters + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: file-matches + config: + path: '*.tsp' + pattern: TopQueryParameter + - type: file-matches + config: + path: '*.tsp' + pattern: SkipQueryParameter + - type: file-matches + config: + path: '*.tsp' + pattern: listBySubscription + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 3 + threshold: 1.0 + + diff --git a/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml new file mode 100644 index 00000000000..3220b32acb5 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml @@ -0,0 +1,67 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + skills: + - ../../SKILL.md + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + In the specification/widget/resource-manager/Microsoft.Widget/Widget project, add a patch operation to an existing ARM resource named 'Employee' + name: 002009-arm-add-patch-operation-to-resource + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/002009-arm-add-patch-operation-to-resource/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: file-matches + config: + path: employee.tsp + pattern: 'update is ArmCustomPatchSync>;' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 1 + threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml new file mode 100644 index 00000000000..7a253e3bdfa --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml @@ -0,0 +1,67 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + skills: + - ../../SKILL.md + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + In the specification/widget/resource-manager/Microsoft.Widget/Widget project, add a sync operation exportEmployeeData for employee resource. + name: 002010-arm-action-sync-operation + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: file-matches + config: + path: employee.tsp + pattern: 'exportEmployeeData is ArmResourceActionSync;' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 1 + threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml new file mode 100644 index 00000000000..a3c41334ee1 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml @@ -0,0 +1,65 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + skills: + - ../../SKILL.md + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + Add an async delete operation for StacItems + name: 003001-dataplane-async-delete-op + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/003001-dataplane-async-delete-op/inma.tsp + dest: inma.tsp + - src: ../fixtures/003001-dataplane-async-delete-op/package.json + dest: package.json + graders: + - type: file-matches + config: + path: inma.tsp + pattern: delete + - type: file-matches + config: + path: inma.tsp + pattern: '@pollingLocation|Lro|LongRunning' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 2 + threshold: 1.0 + + diff --git a/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml new file mode 100644 index 00000000000..ad1b139fe8d --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml @@ -0,0 +1,77 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + skills: + - ../../SKILL.md + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + Add a move async operation to move employee, operation's request is MoveRequest, response is MoveResponse + name: 003002-arm-action-lro + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: file-matches + config: + path: '*.tsp' + pattern: move is ArmResourceAction<|move is ArmResourceActionAsync< + - type: file-matches + config: + path: '*.tsp' + pattern: model MoveRequest + - type: file-matches + config: + path: '*.tsp' + pattern: model MoveResponse + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 3 + threshold: 1.0 + + diff --git a/.github/azure-typespec-author/evaluate/evals/003003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/003003.eval.yaml new file mode 100644 index 00000000000..fea0b03d669 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/003003.eval.yaml @@ -0,0 +1,73 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + skills: + - ../../SKILL.md + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + Modify the LRO createOrUpdate PUT operation in interface Employees so that it returns Azure-AsyncOperation header but NOT Retry-After header in the 201 response. The operation currently uses ArmResourceCreateOrReplaceAsync template. + name: 003003-arm-modify-response + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: file-matches + config: + path: '*.tsp' + pattern: ArmAsyncOperationHeader + - type: file-matches + config: + path: '*.tsp' + pattern: LroHeaders\s*= + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 2 + threshold: 1.0 + + diff --git a/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml new file mode 100644 index 00000000000..3b502523547 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml @@ -0,0 +1,73 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + skills: + - ../../SKILL.md + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + add minLength decorator to set the minLength 1 for resource name parameter of Employee resource + name: 004001-decorate-mgmt-resource-name-parameter + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: file-matches + config: + path: '*.tsp' + pattern: '@minLength\(1\)' + - type: file-matches + config: + path: '*.tsp' + pattern: ResourceNameParameter + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 2 + threshold: 1.0 + + diff --git a/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml new file mode 100644 index 00000000000..d49757465d4 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml @@ -0,0 +1,77 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + skills: + - ../../SKILL.md + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + I have a property `assets: string[]` in EmployeeProperties. Add @minLength(3) @maxLength(10) constraints for any item of the assets array. + name: 004002-decorate-length-constrains-on-array-item + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: file-matches + config: + path: '*.tsp' + pattern: '@minLength\(3\)' + - type: file-matches + config: + path: '*.tsp' + pattern: '@maxLength\(10\)' + - type: file-matches + config: + path: '*.tsp' + pattern: assets + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 3 + threshold: 1.0 + + diff --git a/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml new file mode 100644 index 00000000000..383ff17bac9 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml @@ -0,0 +1,84 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + skills: + - ../../SKILL.md + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + Remove @operationId and its associated #suppress for no-openapi from all operations. Then restore those operationIds that do not contain underscores or begin with a lowercase letter. + name: 004003-delete-and-restore-operationId-decorator + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/BastionHost.tsp + dest: BastionHost.tsp + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/BgpConnection.tsp + dest: BgpConnection.tsp + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteGateway.tsp + dest: ExpressRouteGateway.tsp + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/ExpressRoutePort.tsp + dest: ExpressRoutePort.tsp + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteProviderPort.tsp + dest: ExpressRouteProviderPort.tsp + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/NetworkInterface.tsp + dest: NetworkInterface.tsp + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/P2SVpnGateway.tsp + dest: P2SVpnGateway.tsp + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/package.json + dest: package.json + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/Route.tsp + dest: Route.tsp + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/VpnServerConfigurationPolicyGroup.tsp + dest: VpnServerConfigurationPolicyGroup.tsp + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/VpnSiteLinkConnection.tsp + dest: VpnSiteLinkConnection.tsp + graders: + - type: file-not-matches + config: + path: '*.tsp' + pattern: '#suppress.*operationId|#suppress.*operation-id' + - type: file-matches + config: + path: '*.tsp' + pattern: '@operationId\(' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-not-matches: 1 + file-matches: 1 + threshold: 1.0 + + diff --git a/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml new file mode 100644 index 00000000000..361d601827a --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml @@ -0,0 +1,65 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment (merged into all stimuli) +environment: + skills: + - ../../SKILL.md + mcpServers: + azure-sdk-mcp: + type: stdio + command: pwsh + args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] + env: { + AZURE_SDK_KB_ENDPOINT: http://localhost:8088 + } + timeout: 60000 + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + Add suppressions for the warnings produced by "tsp compile .", and set the justification to "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details". + name: 005001-warning-suppress-warning + constraints: + max_turns: 10 + expect_tools: + - edit + - azsdk_run_typespec_validation + max_tokens: 5000 + environment: + files: + - src: ../fixtures/005001-warning-suppress-warning/models.tsp + dest: models.tsp + - src: ../fixtures/005001-warning-suppress-warning/package.json + dest: package.json + graders: + - type: file-matches + config: + path: models.tsp + pattern: '#suppress' + - type: file-matches + config: + path: models.tsp + pattern: 'FIXME: Update justification, follow aka\.ms/tsp/conversion-fix for details' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m +scoring: + weights: + prompt: 1 + file-matches: 2 + threshold: 1.0 + + diff --git a/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/employee.tsp new file mode 100644 index 00000000000..0a532760f36 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/employee.tsp @@ -0,0 +1,100 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.Core; +using Azure.ResourceManager; + +namespace Microsoft.Widget; + +/** Employee resource */ +model Employee is TrackedResource { + ...ResourceNameParameter; + ...ManagedServiceIdentityProperty; +} + +/** Employee properties */ +model EmployeeProperties { + /** Age of employee */ + age: int32; + + /** City of employee */ + city?: string; + + /** Email of employee */ + email?: string; + + /** Department of employee */ + department?: string; + + /** Status code of employee */ + statusCode?: string; + + /** Profile of employee */ + @encode("base64url") + profile?: bytes; + + /** The assets belong to the employee. */ + assets: string[]; + + /** The status of the last operation. */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; +} + +/** Export result model */ +model ExportResult { + /** Exported data */ + data?: string; +} + +/** Employee move request */ +model MoveRequest { + /** The moving from location */ + from: string; + + /** The moving to location */ + to: string; +} + +/** Employee move response */ +model MoveResponse { + /** The status of the move */ + movingStatus: string; +} + +/** The resource provisioning state. */ +@lroStatus +union ProvisioningState { + ResourceProvisioningState, + + /** The resource is being provisioned */ + Provisioning: "Provisioning", + + /** The resource is updating */ + Updating: "Updating", + + /** The resource is being deleted */ + Deleting: "Deleting", + + /** The resource create request has been accepted */ + Accepted: "Accepted", + + string, +} + +@armResourceOperations +interface Employees { + get is ArmResourceRead; + createOrUpdate is ArmResourceCreateOrReplaceAsync; + update is ArmResourcePatchSync; + delete is ArmResourceDeleteWithoutOkAsync; + listByResourceGroup is ArmResourceListByParent; + listBySubscription is ArmListBySubscription; + + /** Export employee data */ + exportData is ArmResourceActionSync; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/main.tsp new file mode 100644 index 00000000000..2990eb2b363 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/main.tsp @@ -0,0 +1,32 @@ +import "@typespec/http"; +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "./employee.tsp"; + +using TypeSpec.Http; +using TypeSpec.Rest; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +/** Microsoft.Widget Resource Provider management API. */ +@armProviderNamespace +@service(#{ title: "Widget" }) +@versioned(Microsoft.Widget.Versions) +namespace Microsoft.Widget; + +/** The available API versions. */ +enum Versions { + /** 2021-11-01 version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + v2021_11_01: "2021-11-01", + + /** 2024-10-01-preview version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + @previewVersion + v2024_10_01_preview: "2024-10-01-preview", +} + +interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/package.json b/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/package.json new file mode 100644 index 00000000000..45377b8ad61 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/package.json @@ -0,0 +1,50 @@ +{ + "name": "azure-rest-api-specs", + "devDependencies": { + "@azure-tools/openai-typespec": "1.11.0", + "@azure-tools/spec-gen-sdk": "~0.9.1", + "@azure-tools/specs-shared": "file:.github/shared", + "@azure-tools/typespec-apiview": "0.7.2", + "@azure-tools/typespec-metadata": "0.1.1", + "@azure-tools/typespec-autorest": "0.66.0", + "@azure-tools/typespec-azure-core": "0.66.0", + "@azure-tools/typespec-azure-portal-core": "0.66.0", + "@azure-tools/typespec-azure-resource-manager": "0.66.0", + "@azure-tools/typespec-azure-rulesets": "0.66.0", + "@azure-tools/typespec-client-generator-cli": "0.31.0", + "@azure-tools/typespec-client-generator-core": "0.66.3", + "@azure-tools/typespec-liftr-base": "0.13.0", + "@autorest/openapi-to-typespec": "0.11.13", + "@azure/avocado": "0.10.5", + "@azure/oad": "0.12.4", + "@microsoft.azure/openapi-validator": "2.2.4", + "@microsoft.azure/openapi-validator-core": "1.0.7", + "@microsoft.azure/openapi-validator-rulesets": "2.2.5", + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/sse": "0.80.0", + "@typespec/events": "0.80.0", + "@typespec/openapi": "1.10.0", + "@typespec/openapi3": "1.10.0", + "@typespec/prettier-plugin-typespec": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/streams": "0.80.0", + "@typespec/versioning": "0.80.0", + "@typespec/xml": "0.80.0", + "azure-rest-api-specs-eng-tools": "file:eng/tools", + "oav": "4.0.3", + "prettier": "3.8.1", + "typescript": "~5.9.2" + }, + "overrides": { + "@typespec/asset-emitter": "0.79.1", + "get-uri": "^6.0.5", + "minimatch@^3.0.0": "^3.1.5", + "superagent": "^10.2.3" + }, + "engines": { + "node": ">=20.0.0", + "npm": ">=10.0.0" + }, + "private": true +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/preview/2024-10-01-preview/widget.json b/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/preview/2024-10-01-preview/widget.json new file mode 100644 index 00000000000..c2bb2e3f864 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/preview/2024-10-01-preview/widget.json @@ -0,0 +1,693 @@ +{ + "swagger": "2.0", + "info": { + "title": "Widget", + "version": "2024-10-01-preview", + "description": "Microsoft.Widget Resource Provider management API.", + "x-typespec-generated": [ + { + "emitter": "@azure-tools/typespec-autorest" + } + ] + }, + "schemes": [ + "https" + ], + "host": "management.azure.com", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "security": [ + { + "azure_auth": [ + "user_impersonation" + ] + } + ], + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "description": "Azure Active Directory OAuth2 Flow.", + "flow": "implicit", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "tags": [ + { + "name": "Operations" + }, + { + "name": "Employees" + } + ], + "paths": { + "/providers/Microsoft.Widget/operations": { + "get": { + "operationId": "Operations_List", + "tags": [ + "Operations" + ], + "description": "List the operations for the provider", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/OperationListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Widget/employees": { + "get": { + "operationId": "Employees_ListBySubscription", + "tags": [ + "Employees" + ], + "description": "List Employee resources by subscription ID", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/EmployeeListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees": { + "get": { + "operationId": "Employees_ListByResourceGroup", + "tags": [ + "Employees" + ], + "description": "List Employee resources by resource group", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/EmployeeListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}": { + "get": { + "operationId": "Employees_Get", + "tags": [ + "Employees" + ], + "description": "Get a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + }, + "put": { + "operationId": "Employees_CreateOrUpdate", + "tags": [ + "Employees" + ], + "description": "Create a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + }, + { + "name": "resource", + "in": "body", + "description": "Resource create parameters.", + "required": true, + "schema": { + "$ref": "#/definitions/Employee" + } + } + ], + "responses": { + "200": { + "description": "Resource 'Employee' update operation succeeded", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "201": { + "description": "Resource 'Employee' create operation succeeded", + "schema": { + "$ref": "#/definitions/Employee" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-long-running-operation": true + }, + "patch": { + "operationId": "Employees_Update", + "tags": [ + "Employees" + ], + "description": "Update a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + }, + { + "name": "properties", + "in": "body", + "description": "The resource properties to be updated.", + "required": true, + "schema": { + "$ref": "#/definitions/EmployeeUpdate" + } + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + }, + "delete": { + "operationId": "Employees_Delete", + "tags": [ + "Employees" + ], + "description": "Delete a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "202": { + "description": "Resource deletion accepted.", + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "204": { + "description": "Resource does not exist." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}/exportData": { + "post": { + "operationId": "Employees_ExportData", + "tags": [ + "Employees" + ], + "description": "Export employee data", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/ExportResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + } + } + }, + "definitions": { + "Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate": { + "type": "object", + "description": "Managed service identity (system assigned and/or user assigned identities)", + "properties": { + "type": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentityType", + "description": "The type of managed identity assigned to this resource." + }, + "userAssignedIdentities": { + "type": "object", + "description": "The identities assigned to this resource by the user.", + "additionalProperties": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/UserAssignedIdentity", + "x-nullable": true + } + } + } + }, + "Azure.ResourceManager.CommonTypes.TrackedResourceUpdate": { + "type": "object", + "title": "Tracked Resource", + "description": "The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'", + "properties": { + "tags": { + "type": "object", + "description": "Resource tags.", + "additionalProperties": { + "type": "string" + } + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/Resource" + } + ] + }, + "Employee": { + "type": "object", + "description": "Employee resource", + "properties": { + "properties": { + "$ref": "#/definitions/EmployeeProperties", + "description": "The resource-specific properties for this resource." + }, + "identity": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentity", + "description": "The managed service identities assigned to this resource." + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/TrackedResource" + } + ] + }, + "EmployeeListResult": { + "type": "object", + "description": "The response of a Employee list operation.", + "properties": { + "value": { + "type": "array", + "description": "The Employee items on this page", + "items": { + "$ref": "#/definitions/Employee" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "EmployeeProperties": { + "type": "object", + "description": "Employee properties", + "properties": { + "age": { + "type": "integer", + "format": "int32", + "description": "Age of employee" + }, + "city": { + "type": "string", + "description": "City of employee" + }, + "email": { + "type": "string", + "description": "Email of employee" + }, + "department": { + "type": "string", + "description": "Department of employee" + }, + "statusCode": { + "type": "string", + "description": "Status code of employee" + }, + "profile": { + "type": "string", + "format": "base64url", + "description": "Profile of employee" + }, + "assets": { + "type": "array", + "description": "The assets belong to the employee.", + "items": { + "type": "string" + } + }, + "provisioningState": { + "$ref": "#/definitions/ProvisioningState", + "description": "The status of the last operation.", + "readOnly": true + } + }, + "required": [ + "age", + "assets" + ] + }, + "EmployeePropertiesUpdate": { + "type": "object", + "description": "Employee properties", + "properties": { + "age": { + "type": "integer", + "format": "int32", + "description": "Age of employee" + }, + "city": { + "type": "string", + "description": "City of employee" + }, + "email": { + "type": "string", + "description": "Email of employee" + }, + "department": { + "type": "string", + "description": "Department of employee" + }, + "statusCode": { + "type": "string", + "description": "Status code of employee" + }, + "profile": { + "type": "string", + "format": "base64url", + "description": "Profile of employee" + }, + "assets": { + "type": "array", + "description": "The assets belong to the employee.", + "items": { + "type": "string" + } + } + } + }, + "EmployeeUpdate": { + "type": "object", + "description": "Employee resource", + "properties": { + "properties": { + "$ref": "#/definitions/EmployeePropertiesUpdate", + "description": "The resource-specific properties for this resource." + }, + "identity": { + "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate", + "description": "The managed service identities assigned to this resource." + } + }, + "allOf": [ + { + "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.TrackedResourceUpdate" + } + ] + }, + "ExportResult": { + "type": "object", + "description": "Export result model", + "properties": { + "data": { + "type": "string", + "description": "Exported data" + } + } + }, + "MoveRequest": { + "type": "object", + "description": "Employee move request", + "properties": { + "from": { + "type": "string", + "description": "The moving from location" + }, + "to": { + "type": "string", + "description": "The moving to location" + } + }, + "required": [ + "from", + "to" + ] + }, + "MoveResponse": { + "type": "object", + "description": "Employee move response", + "properties": { + "movingStatus": { + "type": "string", + "description": "The status of the move" + } + }, + "required": [ + "movingStatus" + ] + }, + "ProvisioningState": { + "type": "string", + "description": "The resource provisioning state.", + "enum": [ + "Succeeded", + "Failed", + "Canceled", + "Provisioning", + "Updating", + "Deleting", + "Accepted" + ], + "x-ms-enum": { + "name": "ProvisioningState", + "modelAsString": true, + "values": [ + { + "name": "Succeeded", + "value": "Succeeded", + "description": "Resource has been created." + }, + { + "name": "Failed", + "value": "Failed", + "description": "Resource creation failed." + }, + { + "name": "Canceled", + "value": "Canceled", + "description": "Resource creation was canceled." + }, + { + "name": "Provisioning", + "value": "Provisioning", + "description": "The resource is being provisioned" + }, + { + "name": "Updating", + "value": "Updating", + "description": "The resource is updating" + }, + { + "name": "Deleting", + "value": "Deleting", + "description": "The resource is being deleted" + }, + { + "name": "Accepted", + "value": "Accepted", + "description": "The resource create request has been accepted" + } + ] + }, + "readOnly": true + } + }, + "parameters": {} +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/readme.md b/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/readme.md new file mode 100644 index 00000000000..c4fe7c97e88 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/readme.md @@ -0,0 +1,57 @@ +# Widget + +> see https://aka.ms/autorest + +This is the AutoRest configuration file for Widget. + +## Configuration + +### Basic Information + +This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. +This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we +use the native TypeSpec code generation configured in the tspconfig.yaml file. + +```yaml +openapi-type: arm +openapi-subtype: rpaas +tag: package-2025-05-01 +``` + +### Tag: package-2025-05-01 + +These settings apply only when `--tag=package-2025-05-01` is specified on the command line. + +```yaml $(tag) == 'package-2025-05-01' +input-file: + - stable/2025-05-01/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +### Tag: package-2021-11-01 + +These settings apply only when `--tag=package-2021-11-01` is specified on the command line. + +```yaml $(tag) == 'package-2021-11-01' +input-file: + - stable/2021-11-01/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +### Tag: package-2021-10-01-preview + +These settings apply only when `--tag=package-2021-10-01-preview` is specified on the command line. + +```yaml $(tag) == 'package-2021-10-01-preview' +input-file: + - preview/2021-10-01-preview/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +--- diff --git a/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/shared.tsp new file mode 100644 index 00000000000..1b94bb70503 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/shared.tsp @@ -0,0 +1,8 @@ +@doc("Faked shared model") +model FakedSharedModel { + @doc("The tag.") + tag: string; + + @doc("The created date.") + createdAt: utcDateTime; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/stable/2021-11-01/widget.json b/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/stable/2021-11-01/widget.json new file mode 100644 index 00000000000..81ea602477e --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/stable/2021-11-01/widget.json @@ -0,0 +1,693 @@ +{ + "swagger": "2.0", + "info": { + "title": "Widget", + "version": "2021-11-01", + "description": "Microsoft.Widget Resource Provider management API.", + "x-typespec-generated": [ + { + "emitter": "@azure-tools/typespec-autorest" + } + ] + }, + "schemes": [ + "https" + ], + "host": "management.azure.com", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "security": [ + { + "azure_auth": [ + "user_impersonation" + ] + } + ], + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "description": "Azure Active Directory OAuth2 Flow.", + "flow": "implicit", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "tags": [ + { + "name": "Operations" + }, + { + "name": "Employees" + } + ], + "paths": { + "/providers/Microsoft.Widget/operations": { + "get": { + "operationId": "Operations_List", + "tags": [ + "Operations" + ], + "description": "List the operations for the provider", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/OperationListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Widget/employees": { + "get": { + "operationId": "Employees_ListBySubscription", + "tags": [ + "Employees" + ], + "description": "List Employee resources by subscription ID", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/EmployeeListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees": { + "get": { + "operationId": "Employees_ListByResourceGroup", + "tags": [ + "Employees" + ], + "description": "List Employee resources by resource group", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/EmployeeListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}": { + "get": { + "operationId": "Employees_Get", + "tags": [ + "Employees" + ], + "description": "Get a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + }, + "put": { + "operationId": "Employees_CreateOrUpdate", + "tags": [ + "Employees" + ], + "description": "Create a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + }, + { + "name": "resource", + "in": "body", + "description": "Resource create parameters.", + "required": true, + "schema": { + "$ref": "#/definitions/Employee" + } + } + ], + "responses": { + "200": { + "description": "Resource 'Employee' update operation succeeded", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "201": { + "description": "Resource 'Employee' create operation succeeded", + "schema": { + "$ref": "#/definitions/Employee" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-long-running-operation": true + }, + "patch": { + "operationId": "Employees_Update", + "tags": [ + "Employees" + ], + "description": "Update a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + }, + { + "name": "properties", + "in": "body", + "description": "The resource properties to be updated.", + "required": true, + "schema": { + "$ref": "#/definitions/EmployeeUpdate" + } + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + }, + "delete": { + "operationId": "Employees_Delete", + "tags": [ + "Employees" + ], + "description": "Delete a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "202": { + "description": "Resource deletion accepted.", + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "204": { + "description": "Resource does not exist." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}/exportData": { + "post": { + "operationId": "Employees_ExportData", + "tags": [ + "Employees" + ], + "description": "Export employee data", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/ExportResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + } + } + }, + "definitions": { + "Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate": { + "type": "object", + "description": "Managed service identity (system assigned and/or user assigned identities)", + "properties": { + "type": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentityType", + "description": "The type of managed identity assigned to this resource." + }, + "userAssignedIdentities": { + "type": "object", + "description": "The identities assigned to this resource by the user.", + "additionalProperties": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/UserAssignedIdentity", + "x-nullable": true + } + } + } + }, + "Azure.ResourceManager.CommonTypes.TrackedResourceUpdate": { + "type": "object", + "title": "Tracked Resource", + "description": "The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'", + "properties": { + "tags": { + "type": "object", + "description": "Resource tags.", + "additionalProperties": { + "type": "string" + } + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/Resource" + } + ] + }, + "Employee": { + "type": "object", + "description": "Employee resource", + "properties": { + "properties": { + "$ref": "#/definitions/EmployeeProperties", + "description": "The resource-specific properties for this resource." + }, + "identity": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentity", + "description": "The managed service identities assigned to this resource." + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/TrackedResource" + } + ] + }, + "EmployeeListResult": { + "type": "object", + "description": "The response of a Employee list operation.", + "properties": { + "value": { + "type": "array", + "description": "The Employee items on this page", + "items": { + "$ref": "#/definitions/Employee" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "EmployeeProperties": { + "type": "object", + "description": "Employee properties", + "properties": { + "age": { + "type": "integer", + "format": "int32", + "description": "Age of employee" + }, + "city": { + "type": "string", + "description": "City of employee" + }, + "email": { + "type": "string", + "description": "Email of employee" + }, + "department": { + "type": "string", + "description": "Department of employee" + }, + "statusCode": { + "type": "string", + "description": "Status code of employee" + }, + "profile": { + "type": "string", + "format": "base64url", + "description": "Profile of employee" + }, + "assets": { + "type": "array", + "description": "The assets belong to the employee.", + "items": { + "type": "string" + } + }, + "provisioningState": { + "$ref": "#/definitions/ProvisioningState", + "description": "The status of the last operation.", + "readOnly": true + } + }, + "required": [ + "age", + "assets" + ] + }, + "EmployeePropertiesUpdate": { + "type": "object", + "description": "Employee properties", + "properties": { + "age": { + "type": "integer", + "format": "int32", + "description": "Age of employee" + }, + "city": { + "type": "string", + "description": "City of employee" + }, + "email": { + "type": "string", + "description": "Email of employee" + }, + "department": { + "type": "string", + "description": "Department of employee" + }, + "statusCode": { + "type": "string", + "description": "Status code of employee" + }, + "profile": { + "type": "string", + "format": "base64url", + "description": "Profile of employee" + }, + "assets": { + "type": "array", + "description": "The assets belong to the employee.", + "items": { + "type": "string" + } + } + } + }, + "EmployeeUpdate": { + "type": "object", + "description": "Employee resource", + "properties": { + "properties": { + "$ref": "#/definitions/EmployeePropertiesUpdate", + "description": "The resource-specific properties for this resource." + }, + "identity": { + "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate", + "description": "The managed service identities assigned to this resource." + } + }, + "allOf": [ + { + "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.TrackedResourceUpdate" + } + ] + }, + "ExportResult": { + "type": "object", + "description": "Export result model", + "properties": { + "data": { + "type": "string", + "description": "Exported data" + } + } + }, + "MoveRequest": { + "type": "object", + "description": "Employee move request", + "properties": { + "from": { + "type": "string", + "description": "The moving from location" + }, + "to": { + "type": "string", + "description": "The moving to location" + } + }, + "required": [ + "from", + "to" + ] + }, + "MoveResponse": { + "type": "object", + "description": "Employee move response", + "properties": { + "movingStatus": { + "type": "string", + "description": "The status of the move" + } + }, + "required": [ + "movingStatus" + ] + }, + "ProvisioningState": { + "type": "string", + "description": "The resource provisioning state.", + "enum": [ + "Succeeded", + "Failed", + "Canceled", + "Provisioning", + "Updating", + "Deleting", + "Accepted" + ], + "x-ms-enum": { + "name": "ProvisioningState", + "modelAsString": true, + "values": [ + { + "name": "Succeeded", + "value": "Succeeded", + "description": "Resource has been created." + }, + { + "name": "Failed", + "value": "Failed", + "description": "Resource creation failed." + }, + { + "name": "Canceled", + "value": "Canceled", + "description": "Resource creation was canceled." + }, + { + "name": "Provisioning", + "value": "Provisioning", + "description": "The resource is being provisioned" + }, + { + "name": "Updating", + "value": "Updating", + "description": "The resource is updating" + }, + { + "name": "Deleting", + "value": "Deleting", + "description": "The resource is being deleted" + }, + { + "name": "Accepted", + "value": "Accepted", + "description": "The resource create request has been accepted" + } + ] + }, + "readOnly": true + } + }, + "parameters": {} +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/tspconfig.yaml new file mode 100644 index 00000000000..9c97da201c0 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/tspconfig.yaml @@ -0,0 +1,44 @@ +parameters: + "service-dir": + default: "sdk/widget" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + use-read-only-status-schema: true + emitter-output-dir: "{project-root}" + output-file: "{version-status}/{version}/widget.json" + arm-types-dir: "{project-root}/../../../../common-types/resource-management" + "@azure-typespec/http-client-csharp-mgmt": + namespace: "Azure.ResourceManager.Widget" + emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" + "@azure-tools/typespec-python": + emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" + namespace: "azure.mgmt.widget" + generate-test: true + generate-sample: true + flavor: "azure" + "@azure-tools/typespec-java": + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" + namespace: "com.azure.resourcemanager.widget" + service-name: "Widget" # human-readable service name, whitespace allowed + flavor: azure + "@azure-tools/typespec-ts": + emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" + flavor: azure + experimental-extensible-enums: true + package-details: + name: "@azure/arm-widget" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/widget" + emitter-output-dir: "{output-dir}/{service-dir}/armwidget" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/employee.tsp new file mode 100644 index 00000000000..254c9a00e29 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/employee.tsp @@ -0,0 +1,104 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +namespace Microsoft.Widget; + +/** A Widget Employee resource */ +model Employee is TrackedResource { + ...ResourceNameParameter; +} + +/** Employee properties */ +model EmployeeProperties { + /** Age of employee (before 2025-11-01) */ + @removed(Versions.v2024_10_01_preview) + @renamedFrom(Versions.v2024_10_01_preview, "age") + oldAge?: int32; + + /** Age of employee (from 2025-11-01 onward, default is 21) */ + @added(Versions.v2024_10_01_preview) + age?: int32 = 21; + + /** City of employee */ + city?: string; + + /** Work location of employee */ + @added(Versions.v2024_10_01_preview) + workLocation?: WorkLocation; + + /** Profile of employee */ + @encode("base64url") + profile?: bytes; + + /** The status of the last operation. */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; + + /** The assets belong to the employee. */ + @typeChangedFrom(Versions.v2024_10_01_preview, string[]) + assets: AssetItem[]; +} + +/** Constrained asset item. */ +@added(Versions.v2024_10_01_preview) +@minLength(3) +@maxLength(10) +scalar AssetItem extends string; + +/** Work location details */ +@added(Versions.v2024_10_01_preview) +model WorkLocation { + /** Country */ + country?: string; + + /** Company */ + company?: string; + + /** Seat number */ + seatNumber?: string; +} + +/** The resource provisioning state. */ +@lroStatus +union ProvisioningState { + ResourceProvisioningState, + + /** The resource is being provisioned */ + Provisioning: "Provisioning", + + /** The resource is updating */ + Updating: "Updating", + + /** The resource is being deleted */ + Deleting: "Deleting", + + /** The resource create request has been accepted */ + Accepted: "Accepted", + + string, +} + +@armResourceOperations +interface Employees { + get is ArmResourceRead; + createOrUpdate is ArmResourceCreateOrReplaceAsync; + update is ArmCustomPatchSync< + Employee, + Azure.ResourceManager.Foundations.ResourceUpdateModel< + Employee, + EmployeeProperties + > + >; + delete is ArmResourceDeleteWithoutOkAsync; + listByResourceGroup is ArmResourceListByParent; + listBySubscription is ArmListBySubscription; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json new file mode 100644 index 00000000000..26e0fb29b7d --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json @@ -0,0 +1,70 @@ +{ + "title": "Employees_CreateOrUpdate - generated by [MaximumSet] rule", + "operationId": "Employees_CreateOrUpdate", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo", + "resource": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms" + }, + "tags": {}, + "location": "itajgxyqozseoygnl" + } + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + }, + "201": { + "headers": { + "Azure-AsyncOperation": "https://contoso.com/operationstatus" + }, + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json new file mode 100644 index 00000000000..0fd8e915fa4 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json @@ -0,0 +1,18 @@ +{ + "title": "Employees_Delete - generated by [MaximumSet] rule", + "operationId": "Employees_Delete", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo" + }, + "responses": { + "202": { + "headers": { + "location": "https://contoso.com/operationstatus" + } + }, + "204": {} + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json new file mode 100644 index 00000000000..1ddc2fc19f8 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json @@ -0,0 +1,35 @@ +{ + "title": "Employees_Get - generated by [MaximumSet] rule", + "operationId": "Employees_Get", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo" + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json new file mode 100644 index 00000000000..48836349caf --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json @@ -0,0 +1,39 @@ +{ + "title": "Employees_ListByResourceGroup - generated by [MaximumSet] rule", + "operationId": "Employees_ListByResourceGroup", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + ], + "nextLink": "https://microsoft.com/a" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json new file mode 100644 index 00000000000..0cdf8ee402d --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json @@ -0,0 +1,21 @@ +{ + "title": "Employees_ListByResourceGroup - generated by [MinimumSet] rule", + "operationId": "Employees_ListByResourceGroup", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" + } + ] + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json new file mode 100644 index 00000000000..85d5915b7a4 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json @@ -0,0 +1,38 @@ +{ + "title": "Employees_ListBySubscription - generated by [MaximumSet] rule", + "operationId": "Employees_ListBySubscription", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + ], + "nextLink": "https://microsoft.com/a" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json new file mode 100644 index 00000000000..a2222331f4a --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json @@ -0,0 +1,20 @@ +{ + "title": "Employees_ListBySubscription - generated by [MinimumSet] rule", + "operationId": "Employees_ListBySubscription", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" + } + ] + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json new file mode 100644 index 00000000000..f9c86837139 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json @@ -0,0 +1,43 @@ +{ + "title": "Employees_Update - generated by [MaximumSet] rule", + "operationId": "Employees_Update", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo", + "properties": { + "tags": {}, + "properties": { + "age": 24, + "city": "uyfg", + "profile": "oapgijcswfkruiuuzbwco" + } + } + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json new file mode 100644 index 00000000000..56745464c52 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json @@ -0,0 +1,28 @@ +{ + "title": "Operations_List - generated by [MaximumSet] rule", + "operationId": "Operations_List", + "parameters": { + "api-version": "2021-10-01" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "ymeow", + "isDataAction": true, + "display": { + "provider": "qxyznq", + "resource": "bqfwkox", + "operation": "td", + "description": "eikaaucpxk" + }, + "origin": "user", + "actionType": "Internal" + } + ], + "nextLink": "https://sample.com/nextLink" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json new file mode 100644 index 00000000000..db39d591542 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json @@ -0,0 +1,12 @@ +{ + "title": "Operations_List - generated by [MinimumSet] rule", + "operationId": "Operations_List", + "parameters": { + "api-version": "2021-10-01" + }, + "responses": { + "200": { + "body": {} + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json new file mode 100644 index 00000000000..155490965ae --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json @@ -0,0 +1,85 @@ +{ + "title": "Employees_CreateOrUpdate - generated by [MaximumSet] rule", + "operationId": "Employees_CreateOrUpdate", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo", + "resource": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms" + }, + "tags": {}, + "location": "itajgxyqozseoygnl" + } + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + }, + "201": { + "headers": { + "Azure-AsyncOperation": "https://contoso.com/operationstatus" + }, + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json new file mode 100644 index 00000000000..75e4ee09f4f --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json @@ -0,0 +1,18 @@ +{ + "title": "Employees_Delete - generated by [MaximumSet] rule", + "operationId": "Employees_Delete", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo" + }, + "responses": { + "202": { + "headers": { + "location": "https://contoso.com/operationstatus" + } + }, + "204": {} + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json new file mode 100644 index 00000000000..99ce03c4aab --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json @@ -0,0 +1,40 @@ +{ + "title": "Employees_Get - generated by [MaximumSet] rule", + "operationId": "Employees_Get", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo" + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json new file mode 100644 index 00000000000..b8365a35231 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json @@ -0,0 +1,44 @@ +{ + "title": "Employees_ListByResourceGroup - generated by [MaximumSet] rule", + "operationId": "Employees_ListByResourceGroup", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + ], + "nextLink": "https://microsoft.com/a" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json new file mode 100644 index 00000000000..a32bb795d40 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json @@ -0,0 +1,21 @@ +{ + "title": "Employees_ListByResourceGroup - generated by [MinimumSet] rule", + "operationId": "Employees_ListByResourceGroup", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" + } + ] + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json new file mode 100644 index 00000000000..52ff5143133 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json @@ -0,0 +1,43 @@ +{ + "title": "Employees_ListBySubscription - generated by [MaximumSet] rule", + "operationId": "Employees_ListBySubscription", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + ], + "nextLink": "https://microsoft.com/a" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json new file mode 100644 index 00000000000..dbf38f2ac64 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json @@ -0,0 +1,20 @@ +{ + "title": "Employees_ListBySubscription - generated by [MinimumSet] rule", + "operationId": "Employees_ListBySubscription", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" + } + ] + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json new file mode 100644 index 00000000000..f376551af11 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json @@ -0,0 +1,53 @@ +{ + "title": "Employees_Update - generated by [MaximumSet] rule", + "operationId": "Employees_Update", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo", + "properties": { + "tags": {}, + "properties": { + "age": 24, + "city": "uyfg", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "B2-456" + }, + "profile": "oapgijcswfkruiuuzbwco" + } + } + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json new file mode 100644 index 00000000000..0f4075414b4 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json @@ -0,0 +1,28 @@ +{ + "title": "Operations_List - generated by [MaximumSet] rule", + "operationId": "Operations_List", + "parameters": { + "api-version": "2024-10-01-preview" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "ymeow", + "isDataAction": true, + "display": { + "provider": "qxyznq", + "resource": "bqfwkox", + "operation": "td", + "description": "kfcrqmzuwfreqvh" + }, + "origin": "user", + "actionType": "Internal" + } + ], + "nextLink": "https://sample.com/nextLink" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json new file mode 100644 index 00000000000..93e6f549129 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json @@ -0,0 +1,12 @@ +{ + "title": "Operations_List - generated by [MinimumSet] rule", + "operationId": "Operations_List", + "parameters": { + "api-version": "2024-10-01-preview" + }, + "responses": { + "200": { + "body": {} + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/main.tsp new file mode 100644 index 00000000000..9c334ab9c00 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/main.tsp @@ -0,0 +1,31 @@ +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "./employee.tsp"; + +using TypeSpec.Http; +using TypeSpec.Rest; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +/** Microsoft.Widget Resource Provider management API. */ +@armProviderNamespace +@service(#{ title: "Widget" }) +@versioned(Microsoft.Widget.Versions) +namespace Microsoft.Widget; + +/** The available API versions. */ +enum Versions { + /** 2021-10-01 version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + v2021_10_01: "2021-10-01", + + /** 2024-10-01-preview version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + @previewVersion + v2024_10_01_preview: "2024-10-01-preview", +} + +interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/package.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/package.json new file mode 100644 index 00000000000..45377b8ad61 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/package.json @@ -0,0 +1,50 @@ +{ + "name": "azure-rest-api-specs", + "devDependencies": { + "@azure-tools/openai-typespec": "1.11.0", + "@azure-tools/spec-gen-sdk": "~0.9.1", + "@azure-tools/specs-shared": "file:.github/shared", + "@azure-tools/typespec-apiview": "0.7.2", + "@azure-tools/typespec-metadata": "0.1.1", + "@azure-tools/typespec-autorest": "0.66.0", + "@azure-tools/typespec-azure-core": "0.66.0", + "@azure-tools/typespec-azure-portal-core": "0.66.0", + "@azure-tools/typespec-azure-resource-manager": "0.66.0", + "@azure-tools/typespec-azure-rulesets": "0.66.0", + "@azure-tools/typespec-client-generator-cli": "0.31.0", + "@azure-tools/typespec-client-generator-core": "0.66.3", + "@azure-tools/typespec-liftr-base": "0.13.0", + "@autorest/openapi-to-typespec": "0.11.13", + "@azure/avocado": "0.10.5", + "@azure/oad": "0.12.4", + "@microsoft.azure/openapi-validator": "2.2.4", + "@microsoft.azure/openapi-validator-core": "1.0.7", + "@microsoft.azure/openapi-validator-rulesets": "2.2.5", + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/sse": "0.80.0", + "@typespec/events": "0.80.0", + "@typespec/openapi": "1.10.0", + "@typespec/openapi3": "1.10.0", + "@typespec/prettier-plugin-typespec": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/streams": "0.80.0", + "@typespec/versioning": "0.80.0", + "@typespec/xml": "0.80.0", + "azure-rest-api-specs-eng-tools": "file:eng/tools", + "oav": "4.0.3", + "prettier": "3.8.1", + "typescript": "~5.9.2" + }, + "overrides": { + "@typespec/asset-emitter": "0.79.1", + "get-uri": "^6.0.5", + "minimatch@^3.0.0": "^3.1.5", + "superagent": "^10.2.3" + }, + "engines": { + "node": ">=20.0.0", + "npm": ">=10.0.0" + }, + "private": true +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/readme.md b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/readme.md new file mode 100644 index 00000000000..a0e0464736f --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/readme.md @@ -0,0 +1,45 @@ +# Widget + +> see https://aka.ms/autorest + +This is the AutoRest configuration file for Widget. + +## Configuration + +### Basic Information + +This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. +This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we +use the native TypeSpec code generation configured in the tspconfig.yaml file. + +```yaml +openapi-type: arm +openapi-subtype: rpaas +tag: package-2025-05-04-preview +``` + +### Tag: package-2025-05-04-preview + +These settings apply only when `--tag=package-2025-05-04-preview` is specified on the command line. + +```yaml $(tag) == 'package-2025-05-04-preview' +input-file: + - preview/2025-05-04-preview/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +### Tag: package-2021-10-01 + +These settings apply only when `--tag=package-2021-10-01` is specified on the command line. + +```yaml $(tag) == 'package-2021-10-01' +input-file: + - stable/2021-10-01/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +--- diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/shared.tsp new file mode 100644 index 00000000000..1b94bb70503 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/shared.tsp @@ -0,0 +1,8 @@ +@doc("Faked shared model") +model FakedSharedModel { + @doc("The tag.") + tag: string; + + @doc("The created date.") + createdAt: utcDateTime; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/tspconfig.yaml new file mode 100644 index 00000000000..9c97da201c0 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/tspconfig.yaml @@ -0,0 +1,44 @@ +parameters: + "service-dir": + default: "sdk/widget" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + use-read-only-status-schema: true + emitter-output-dir: "{project-root}" + output-file: "{version-status}/{version}/widget.json" + arm-types-dir: "{project-root}/../../../../common-types/resource-management" + "@azure-typespec/http-client-csharp-mgmt": + namespace: "Azure.ResourceManager.Widget" + emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" + "@azure-tools/typespec-python": + emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" + namespace: "azure.mgmt.widget" + generate-test: true + generate-sample: true + flavor: "azure" + "@azure-tools/typespec-java": + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" + namespace: "com.azure.resourcemanager.widget" + service-name: "Widget" # human-readable service name, whitespace allowed + flavor: azure + "@azure-tools/typespec-ts": + emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" + flavor: azure + experimental-extensible-enums: true + package-details: + name: "@azure/arm-widget" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/widget" + emitter-output-dir: "{output-dir}/{service-dir}/armwidget" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/employee.tsp new file mode 100644 index 00000000000..801d16775fe --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/employee.tsp @@ -0,0 +1,104 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +namespace Microsoft.Widget; + +/** A Widget Employee resource */ +model Employee is TrackedResource { + ...ResourceNameParameter; +} + +/** Employee properties */ +model EmployeeProperties { + /** Age of employee (before 2025-11-01) */ + @removed(Versions.v2024_10_01) + @renamedFrom(Versions.v2024_10_01, "age") + oldAge?: int32; + + /** Age of employee (from 2025-11-01 onward, default is 21) */ + @added(Versions.v2024_10_01) + age?: int32 = 21; + + /** City of employee */ + city?: string; + + /** Work location of employee */ + @added(Versions.v2024_10_01) + workLocation?: WorkLocation; + + /** Profile of employee */ + @encode("base64url") + profile?: bytes; + + /** The status of the last operation. */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; + + /** The assets belong to the employee. */ + @typeChangedFrom(Versions.v2024_10_01, string[]) + assets: AssetItem[]; +} + +/** Constrained asset item. */ +@added(Versions.v2024_10_01) +@minLength(3) +@maxLength(10) +scalar AssetItem extends string; + +/** Work location details */ +@added(Versions.v2024_10_01) +model WorkLocation { + /** Country */ + country?: string; + + /** Company */ + company?: string; + + /** Seat number */ + seatNumber?: string; +} + +/** The resource provisioning state. */ +@lroStatus +union ProvisioningState { + ResourceProvisioningState, + + /** The resource is being provisioned */ + Provisioning: "Provisioning", + + /** The resource is updating */ + Updating: "Updating", + + /** The resource is being deleted */ + Deleting: "Deleting", + + /** The resource create request has been accepted */ + Accepted: "Accepted", + + string, +} + +@armResourceOperations +interface Employees { + get is ArmResourceRead; + createOrUpdate is ArmResourceCreateOrReplaceAsync; + update is ArmCustomPatchSync< + Employee, + Azure.ResourceManager.Foundations.ResourceUpdateModel< + Employee, + EmployeeProperties + > + >; + delete is ArmResourceDeleteWithoutOkAsync; + listByResourceGroup is ArmResourceListByParent; + listBySubscription is ArmListBySubscription; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json new file mode 100644 index 00000000000..26e0fb29b7d --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json @@ -0,0 +1,70 @@ +{ + "title": "Employees_CreateOrUpdate - generated by [MaximumSet] rule", + "operationId": "Employees_CreateOrUpdate", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo", + "resource": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms" + }, + "tags": {}, + "location": "itajgxyqozseoygnl" + } + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + }, + "201": { + "headers": { + "Azure-AsyncOperation": "https://contoso.com/operationstatus" + }, + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json new file mode 100644 index 00000000000..0fd8e915fa4 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json @@ -0,0 +1,18 @@ +{ + "title": "Employees_Delete - generated by [MaximumSet] rule", + "operationId": "Employees_Delete", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo" + }, + "responses": { + "202": { + "headers": { + "location": "https://contoso.com/operationstatus" + } + }, + "204": {} + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json new file mode 100644 index 00000000000..1ddc2fc19f8 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json @@ -0,0 +1,35 @@ +{ + "title": "Employees_Get - generated by [MaximumSet] rule", + "operationId": "Employees_Get", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo" + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json new file mode 100644 index 00000000000..48836349caf --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json @@ -0,0 +1,39 @@ +{ + "title": "Employees_ListByResourceGroup - generated by [MaximumSet] rule", + "operationId": "Employees_ListByResourceGroup", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + ], + "nextLink": "https://microsoft.com/a" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json new file mode 100644 index 00000000000..0cdf8ee402d --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json @@ -0,0 +1,21 @@ +{ + "title": "Employees_ListByResourceGroup - generated by [MinimumSet] rule", + "operationId": "Employees_ListByResourceGroup", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" + } + ] + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json new file mode 100644 index 00000000000..85d5915b7a4 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json @@ -0,0 +1,38 @@ +{ + "title": "Employees_ListBySubscription - generated by [MaximumSet] rule", + "operationId": "Employees_ListBySubscription", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + ], + "nextLink": "https://microsoft.com/a" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json new file mode 100644 index 00000000000..a2222331f4a --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json @@ -0,0 +1,20 @@ +{ + "title": "Employees_ListBySubscription - generated by [MinimumSet] rule", + "operationId": "Employees_ListBySubscription", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" + } + ] + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json new file mode 100644 index 00000000000..f9c86837139 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json @@ -0,0 +1,43 @@ +{ + "title": "Employees_Update - generated by [MaximumSet] rule", + "operationId": "Employees_Update", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo", + "properties": { + "tags": {}, + "properties": { + "age": 24, + "city": "uyfg", + "profile": "oapgijcswfkruiuuzbwco" + } + } + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Operations_List_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Operations_List_MaximumSet_Gen.json new file mode 100644 index 00000000000..305336b0df8 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Operations_List_MaximumSet_Gen.json @@ -0,0 +1,28 @@ +{ + "title": "Operations_List - generated by [MaximumSet] rule", + "operationId": "Operations_List", + "parameters": { + "api-version": "2021-10-01" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "ymeow", + "isDataAction": true, + "display": { + "provider": "qxyznq", + "resource": "bqfwkox", + "operation": "td", + "description": "kfcrqmzuwfreqvh" + }, + "origin": "user", + "actionType": "Internal" + } + ], + "nextLink": "https://sample.com/nextLink" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Operations_List_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Operations_List_MinimumSet_Gen.json new file mode 100644 index 00000000000..db39d591542 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Operations_List_MinimumSet_Gen.json @@ -0,0 +1,12 @@ +{ + "title": "Operations_List - generated by [MinimumSet] rule", + "operationId": "Operations_List", + "parameters": { + "api-version": "2021-10-01" + }, + "responses": { + "200": { + "body": {} + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json new file mode 100644 index 00000000000..566c91ac8ed --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json @@ -0,0 +1,85 @@ +{ + "title": "Employees_CreateOrUpdate - generated by [MaximumSet] rule", + "operationId": "Employees_CreateOrUpdate", + "parameters": { + "api-version": "2024-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo", + "resource": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms" + }, + "tags": {}, + "location": "itajgxyqozseoygnl" + } + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + }, + "201": { + "headers": { + "Azure-AsyncOperation": "https://contoso.com/operationstatus" + }, + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json new file mode 100644 index 00000000000..f9383986629 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json @@ -0,0 +1,18 @@ +{ + "title": "Employees_Delete - generated by [MaximumSet] rule", + "operationId": "Employees_Delete", + "parameters": { + "api-version": "2024-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo" + }, + "responses": { + "202": { + "headers": { + "location": "https://contoso.com/operationstatus" + } + }, + "204": {} + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Get_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Get_MaximumSet_Gen.json new file mode 100644 index 00000000000..39c4503c393 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Get_MaximumSet_Gen.json @@ -0,0 +1,40 @@ +{ + "title": "Employees_Get - generated by [MaximumSet] rule", + "operationId": "Employees_Get", + "parameters": { + "api-version": "2024-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo" + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json new file mode 100644 index 00000000000..f21f164e415 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json @@ -0,0 +1,44 @@ +{ + "title": "Employees_ListByResourceGroup - generated by [MaximumSet] rule", + "operationId": "Employees_ListByResourceGroup", + "parameters": { + "api-version": "2024-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + ], + "nextLink": "https://microsoft.com/a" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json new file mode 100644 index 00000000000..11579b602c2 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json @@ -0,0 +1,21 @@ +{ + "title": "Employees_ListByResourceGroup - generated by [MinimumSet] rule", + "operationId": "Employees_ListByResourceGroup", + "parameters": { + "api-version": "2024-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" + } + ] + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json new file mode 100644 index 00000000000..049be5c5146 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json @@ -0,0 +1,43 @@ +{ + "title": "Employees_ListBySubscription - generated by [MaximumSet] rule", + "operationId": "Employees_ListBySubscription", + "parameters": { + "api-version": "2024-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + ], + "nextLink": "https://microsoft.com/a" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json new file mode 100644 index 00000000000..7874b5ed5d2 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json @@ -0,0 +1,20 @@ +{ + "title": "Employees_ListBySubscription - generated by [MinimumSet] rule", + "operationId": "Employees_ListBySubscription", + "parameters": { + "api-version": "2024-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" + } + ] + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Update_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Update_MaximumSet_Gen.json new file mode 100644 index 00000000000..001d46d682c --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Update_MaximumSet_Gen.json @@ -0,0 +1,53 @@ +{ + "title": "Employees_Update - generated by [MaximumSet] rule", + "operationId": "Employees_Update", + "parameters": { + "api-version": "2024-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo", + "properties": { + "tags": {}, + "properties": { + "age": 24, + "city": "uyfg", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "B2-456" + }, + "profile": "oapgijcswfkruiuuzbwco" + } + } + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Operations_List_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Operations_List_MaximumSet_Gen.json new file mode 100644 index 00000000000..e393cb2932c --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Operations_List_MaximumSet_Gen.json @@ -0,0 +1,28 @@ +{ + "title": "Operations_List - generated by [MaximumSet] rule", + "operationId": "Operations_List", + "parameters": { + "api-version": "2024-10-01" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "ymeow", + "isDataAction": true, + "display": { + "provider": "qxyznq", + "resource": "bqfwkox", + "operation": "td", + "description": "eikaaucpxk" + }, + "origin": "user", + "actionType": "Internal" + } + ], + "nextLink": "https://sample.com/nextLink" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Operations_List_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Operations_List_MinimumSet_Gen.json new file mode 100644 index 00000000000..3cc3f3a1cfa --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Operations_List_MinimumSet_Gen.json @@ -0,0 +1,12 @@ +{ + "title": "Operations_List - generated by [MinimumSet] rule", + "operationId": "Operations_List", + "parameters": { + "api-version": "2024-10-01" + }, + "responses": { + "200": { + "body": {} + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/main.tsp new file mode 100644 index 00000000000..cc51e1b1f76 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/main.tsp @@ -0,0 +1,30 @@ +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "./employee.tsp"; + +using TypeSpec.Http; +using TypeSpec.Rest; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +/** Microsoft.Widget Resource Provider management API. */ +@armProviderNamespace +@service(#{ title: "Widget" }) +@versioned(Microsoft.Widget.Versions) +namespace Microsoft.Widget; + +/** The available API versions. */ +enum Versions { + /** 2021-10-01 version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + v2021_10_01: "2021-10-01", + + /** 2024-10-01 version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + v2024_10_01: "2024-10-01", +} + +interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/package.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/package.json new file mode 100644 index 00000000000..45377b8ad61 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/package.json @@ -0,0 +1,50 @@ +{ + "name": "azure-rest-api-specs", + "devDependencies": { + "@azure-tools/openai-typespec": "1.11.0", + "@azure-tools/spec-gen-sdk": "~0.9.1", + "@azure-tools/specs-shared": "file:.github/shared", + "@azure-tools/typespec-apiview": "0.7.2", + "@azure-tools/typespec-metadata": "0.1.1", + "@azure-tools/typespec-autorest": "0.66.0", + "@azure-tools/typespec-azure-core": "0.66.0", + "@azure-tools/typespec-azure-portal-core": "0.66.0", + "@azure-tools/typespec-azure-resource-manager": "0.66.0", + "@azure-tools/typespec-azure-rulesets": "0.66.0", + "@azure-tools/typespec-client-generator-cli": "0.31.0", + "@azure-tools/typespec-client-generator-core": "0.66.3", + "@azure-tools/typespec-liftr-base": "0.13.0", + "@autorest/openapi-to-typespec": "0.11.13", + "@azure/avocado": "0.10.5", + "@azure/oad": "0.12.4", + "@microsoft.azure/openapi-validator": "2.2.4", + "@microsoft.azure/openapi-validator-core": "1.0.7", + "@microsoft.azure/openapi-validator-rulesets": "2.2.5", + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/sse": "0.80.0", + "@typespec/events": "0.80.0", + "@typespec/openapi": "1.10.0", + "@typespec/openapi3": "1.10.0", + "@typespec/prettier-plugin-typespec": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/streams": "0.80.0", + "@typespec/versioning": "0.80.0", + "@typespec/xml": "0.80.0", + "azure-rest-api-specs-eng-tools": "file:eng/tools", + "oav": "4.0.3", + "prettier": "3.8.1", + "typescript": "~5.9.2" + }, + "overrides": { + "@typespec/asset-emitter": "0.79.1", + "get-uri": "^6.0.5", + "minimatch@^3.0.0": "^3.1.5", + "superagent": "^10.2.3" + }, + "engines": { + "node": ">=20.0.0", + "npm": ">=10.0.0" + }, + "private": true +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/readme.md b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/readme.md new file mode 100644 index 00000000000..7b7a656467b --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/readme.md @@ -0,0 +1,57 @@ +# Widget + +> see https://aka.ms/autorest + +This is the AutoRest configuration file for Widget. + +## Configuration + +### Basic Information + +This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. +This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we +use the native TypeSpec code generation configured in the tspconfig.yaml file. + +```yaml +openapi-type: arm +openapi-subtype: rpaas +tag: package-2025-05-04-preview +``` + +### Tag: package-2025-05-04-preview + +These settings apply only when `--tag=package-2025-05-04-preview` is specified on the command line. + +```yaml $(tag) == 'package-2025-05-04-preview' +input-file: + - preview/2025-05-04-preview/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +### Tag: package-2024-10-01 + +These settings apply only when `--tag=package-2024-10-01` is specified on the command line. + +```yaml $(tag) == 'package-2024-10-01' +input-file: + - stable/2024-10-01/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +### Tag: package-2021-10-01 + +These settings apply only when `--tag=package-2021-10-01` is specified on the command line. + +```yaml $(tag) == 'package-2021-10-01' +input-file: + - stable/2021-10-01/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +--- diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/shared.tsp new file mode 100644 index 00000000000..1b94bb70503 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/shared.tsp @@ -0,0 +1,8 @@ +@doc("Faked shared model") +model FakedSharedModel { + @doc("The tag.") + tag: string; + + @doc("The created date.") + createdAt: utcDateTime; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/tspconfig.yaml new file mode 100644 index 00000000000..9c97da201c0 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/tspconfig.yaml @@ -0,0 +1,44 @@ +parameters: + "service-dir": + default: "sdk/widget" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + use-read-only-status-schema: true + emitter-output-dir: "{project-root}" + output-file: "{version-status}/{version}/widget.json" + arm-types-dir: "{project-root}/../../../../common-types/resource-management" + "@azure-typespec/http-client-csharp-mgmt": + namespace: "Azure.ResourceManager.Widget" + emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" + "@azure-tools/typespec-python": + emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" + namespace: "azure.mgmt.widget" + generate-test: true + generate-sample: true + flavor: "azure" + "@azure-tools/typespec-java": + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" + namespace: "com.azure.resourcemanager.widget" + service-name: "Widget" # human-readable service name, whitespace allowed + flavor: azure + "@azure-tools/typespec-ts": + emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" + flavor: azure + experimental-extensible-enums: true + package-details: + name: "@azure/arm-widget" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/widget" + emitter-output-dir: "{output-dir}/{service-dir}/armwidget" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/employee.tsp new file mode 100644 index 00000000000..254c9a00e29 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/employee.tsp @@ -0,0 +1,104 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +namespace Microsoft.Widget; + +/** A Widget Employee resource */ +model Employee is TrackedResource { + ...ResourceNameParameter; +} + +/** Employee properties */ +model EmployeeProperties { + /** Age of employee (before 2025-11-01) */ + @removed(Versions.v2024_10_01_preview) + @renamedFrom(Versions.v2024_10_01_preview, "age") + oldAge?: int32; + + /** Age of employee (from 2025-11-01 onward, default is 21) */ + @added(Versions.v2024_10_01_preview) + age?: int32 = 21; + + /** City of employee */ + city?: string; + + /** Work location of employee */ + @added(Versions.v2024_10_01_preview) + workLocation?: WorkLocation; + + /** Profile of employee */ + @encode("base64url") + profile?: bytes; + + /** The status of the last operation. */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; + + /** The assets belong to the employee. */ + @typeChangedFrom(Versions.v2024_10_01_preview, string[]) + assets: AssetItem[]; +} + +/** Constrained asset item. */ +@added(Versions.v2024_10_01_preview) +@minLength(3) +@maxLength(10) +scalar AssetItem extends string; + +/** Work location details */ +@added(Versions.v2024_10_01_preview) +model WorkLocation { + /** Country */ + country?: string; + + /** Company */ + company?: string; + + /** Seat number */ + seatNumber?: string; +} + +/** The resource provisioning state. */ +@lroStatus +union ProvisioningState { + ResourceProvisioningState, + + /** The resource is being provisioned */ + Provisioning: "Provisioning", + + /** The resource is updating */ + Updating: "Updating", + + /** The resource is being deleted */ + Deleting: "Deleting", + + /** The resource create request has been accepted */ + Accepted: "Accepted", + + string, +} + +@armResourceOperations +interface Employees { + get is ArmResourceRead; + createOrUpdate is ArmResourceCreateOrReplaceAsync; + update is ArmCustomPatchSync< + Employee, + Azure.ResourceManager.Foundations.ResourceUpdateModel< + Employee, + EmployeeProperties + > + >; + delete is ArmResourceDeleteWithoutOkAsync; + listByResourceGroup is ArmResourceListByParent; + listBySubscription is ArmListBySubscription; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json new file mode 100644 index 00000000000..26e0fb29b7d --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json @@ -0,0 +1,70 @@ +{ + "title": "Employees_CreateOrUpdate - generated by [MaximumSet] rule", + "operationId": "Employees_CreateOrUpdate", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo", + "resource": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms" + }, + "tags": {}, + "location": "itajgxyqozseoygnl" + } + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + }, + "201": { + "headers": { + "Azure-AsyncOperation": "https://contoso.com/operationstatus" + }, + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json new file mode 100644 index 00000000000..0fd8e915fa4 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json @@ -0,0 +1,18 @@ +{ + "title": "Employees_Delete - generated by [MaximumSet] rule", + "operationId": "Employees_Delete", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo" + }, + "responses": { + "202": { + "headers": { + "location": "https://contoso.com/operationstatus" + } + }, + "204": {} + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json new file mode 100644 index 00000000000..1ddc2fc19f8 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json @@ -0,0 +1,35 @@ +{ + "title": "Employees_Get - generated by [MaximumSet] rule", + "operationId": "Employees_Get", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo" + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json new file mode 100644 index 00000000000..48836349caf --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json @@ -0,0 +1,39 @@ +{ + "title": "Employees_ListByResourceGroup - generated by [MaximumSet] rule", + "operationId": "Employees_ListByResourceGroup", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + ], + "nextLink": "https://microsoft.com/a" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json new file mode 100644 index 00000000000..0cdf8ee402d --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json @@ -0,0 +1,21 @@ +{ + "title": "Employees_ListByResourceGroup - generated by [MinimumSet] rule", + "operationId": "Employees_ListByResourceGroup", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" + } + ] + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json new file mode 100644 index 00000000000..85d5915b7a4 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json @@ -0,0 +1,38 @@ +{ + "title": "Employees_ListBySubscription - generated by [MaximumSet] rule", + "operationId": "Employees_ListBySubscription", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + ], + "nextLink": "https://microsoft.com/a" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json new file mode 100644 index 00000000000..a2222331f4a --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json @@ -0,0 +1,20 @@ +{ + "title": "Employees_ListBySubscription - generated by [MinimumSet] rule", + "operationId": "Employees_ListBySubscription", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" + } + ] + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json new file mode 100644 index 00000000000..f9c86837139 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json @@ -0,0 +1,43 @@ +{ + "title": "Employees_Update - generated by [MaximumSet] rule", + "operationId": "Employees_Update", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo", + "properties": { + "tags": {}, + "properties": { + "age": 24, + "city": "uyfg", + "profile": "oapgijcswfkruiuuzbwco" + } + } + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json new file mode 100644 index 00000000000..305336b0df8 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json @@ -0,0 +1,28 @@ +{ + "title": "Operations_List - generated by [MaximumSet] rule", + "operationId": "Operations_List", + "parameters": { + "api-version": "2021-10-01" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "ymeow", + "isDataAction": true, + "display": { + "provider": "qxyznq", + "resource": "bqfwkox", + "operation": "td", + "description": "kfcrqmzuwfreqvh" + }, + "origin": "user", + "actionType": "Internal" + } + ], + "nextLink": "https://sample.com/nextLink" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json new file mode 100644 index 00000000000..db39d591542 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json @@ -0,0 +1,12 @@ +{ + "title": "Operations_List - generated by [MinimumSet] rule", + "operationId": "Operations_List", + "parameters": { + "api-version": "2021-10-01" + }, + "responses": { + "200": { + "body": {} + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json new file mode 100644 index 00000000000..155490965ae --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json @@ -0,0 +1,85 @@ +{ + "title": "Employees_CreateOrUpdate - generated by [MaximumSet] rule", + "operationId": "Employees_CreateOrUpdate", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo", + "resource": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms" + }, + "tags": {}, + "location": "itajgxyqozseoygnl" + } + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + }, + "201": { + "headers": { + "Azure-AsyncOperation": "https://contoso.com/operationstatus" + }, + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json new file mode 100644 index 00000000000..75e4ee09f4f --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json @@ -0,0 +1,18 @@ +{ + "title": "Employees_Delete - generated by [MaximumSet] rule", + "operationId": "Employees_Delete", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo" + }, + "responses": { + "202": { + "headers": { + "location": "https://contoso.com/operationstatus" + } + }, + "204": {} + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json new file mode 100644 index 00000000000..99ce03c4aab --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json @@ -0,0 +1,40 @@ +{ + "title": "Employees_Get - generated by [MaximumSet] rule", + "operationId": "Employees_Get", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo" + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json new file mode 100644 index 00000000000..b8365a35231 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json @@ -0,0 +1,44 @@ +{ + "title": "Employees_ListByResourceGroup - generated by [MaximumSet] rule", + "operationId": "Employees_ListByResourceGroup", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + ], + "nextLink": "https://microsoft.com/a" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json new file mode 100644 index 00000000000..a32bb795d40 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json @@ -0,0 +1,21 @@ +{ + "title": "Employees_ListByResourceGroup - generated by [MinimumSet] rule", + "operationId": "Employees_ListByResourceGroup", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" + } + ] + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json new file mode 100644 index 00000000000..52ff5143133 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json @@ -0,0 +1,43 @@ +{ + "title": "Employees_ListBySubscription - generated by [MaximumSet] rule", + "operationId": "Employees_ListBySubscription", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + ], + "nextLink": "https://microsoft.com/a" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json new file mode 100644 index 00000000000..dbf38f2ac64 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json @@ -0,0 +1,20 @@ +{ + "title": "Employees_ListBySubscription - generated by [MinimumSet] rule", + "operationId": "Employees_ListBySubscription", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" + } + ] + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json new file mode 100644 index 00000000000..f376551af11 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json @@ -0,0 +1,53 @@ +{ + "title": "Employees_Update - generated by [MaximumSet] rule", + "operationId": "Employees_Update", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo", + "properties": { + "tags": {}, + "properties": { + "age": 24, + "city": "uyfg", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "B2-456" + }, + "profile": "oapgijcswfkruiuuzbwco" + } + } + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json new file mode 100644 index 00000000000..0f4075414b4 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json @@ -0,0 +1,28 @@ +{ + "title": "Operations_List - generated by [MaximumSet] rule", + "operationId": "Operations_List", + "parameters": { + "api-version": "2024-10-01-preview" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "ymeow", + "isDataAction": true, + "display": { + "provider": "qxyznq", + "resource": "bqfwkox", + "operation": "td", + "description": "kfcrqmzuwfreqvh" + }, + "origin": "user", + "actionType": "Internal" + } + ], + "nextLink": "https://sample.com/nextLink" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json new file mode 100644 index 00000000000..93e6f549129 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json @@ -0,0 +1,12 @@ +{ + "title": "Operations_List - generated by [MinimumSet] rule", + "operationId": "Operations_List", + "parameters": { + "api-version": "2024-10-01-preview" + }, + "responses": { + "200": { + "body": {} + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/main.tsp new file mode 100644 index 00000000000..9c334ab9c00 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/main.tsp @@ -0,0 +1,31 @@ +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "./employee.tsp"; + +using TypeSpec.Http; +using TypeSpec.Rest; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +/** Microsoft.Widget Resource Provider management API. */ +@armProviderNamespace +@service(#{ title: "Widget" }) +@versioned(Microsoft.Widget.Versions) +namespace Microsoft.Widget; + +/** The available API versions. */ +enum Versions { + /** 2021-10-01 version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + v2021_10_01: "2021-10-01", + + /** 2024-10-01-preview version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + @previewVersion + v2024_10_01_preview: "2024-10-01-preview", +} + +interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/package.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/package.json new file mode 100644 index 00000000000..45377b8ad61 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/package.json @@ -0,0 +1,50 @@ +{ + "name": "azure-rest-api-specs", + "devDependencies": { + "@azure-tools/openai-typespec": "1.11.0", + "@azure-tools/spec-gen-sdk": "~0.9.1", + "@azure-tools/specs-shared": "file:.github/shared", + "@azure-tools/typespec-apiview": "0.7.2", + "@azure-tools/typespec-metadata": "0.1.1", + "@azure-tools/typespec-autorest": "0.66.0", + "@azure-tools/typespec-azure-core": "0.66.0", + "@azure-tools/typespec-azure-portal-core": "0.66.0", + "@azure-tools/typespec-azure-resource-manager": "0.66.0", + "@azure-tools/typespec-azure-rulesets": "0.66.0", + "@azure-tools/typespec-client-generator-cli": "0.31.0", + "@azure-tools/typespec-client-generator-core": "0.66.3", + "@azure-tools/typespec-liftr-base": "0.13.0", + "@autorest/openapi-to-typespec": "0.11.13", + "@azure/avocado": "0.10.5", + "@azure/oad": "0.12.4", + "@microsoft.azure/openapi-validator": "2.2.4", + "@microsoft.azure/openapi-validator-core": "1.0.7", + "@microsoft.azure/openapi-validator-rulesets": "2.2.5", + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/sse": "0.80.0", + "@typespec/events": "0.80.0", + "@typespec/openapi": "1.10.0", + "@typespec/openapi3": "1.10.0", + "@typespec/prettier-plugin-typespec": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/streams": "0.80.0", + "@typespec/versioning": "0.80.0", + "@typespec/xml": "0.80.0", + "azure-rest-api-specs-eng-tools": "file:eng/tools", + "oav": "4.0.3", + "prettier": "3.8.1", + "typescript": "~5.9.2" + }, + "overrides": { + "@typespec/asset-emitter": "0.79.1", + "get-uri": "^6.0.5", + "minimatch@^3.0.0": "^3.1.5", + "superagent": "^10.2.3" + }, + "engines": { + "node": ">=20.0.0", + "npm": ">=10.0.0" + }, + "private": true +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/readme.md b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/readme.md new file mode 100644 index 00000000000..a30f0d7a322 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/readme.md @@ -0,0 +1,45 @@ +# Widget + +> see https://aka.ms/autorest + +This is the AutoRest configuration file for Widget. + +## Configuration + +### Basic Information + +This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. +This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we +use the native TypeSpec code generation configured in the tspconfig.yaml file. + +```yaml +openapi-type: arm +openapi-subtype: rpaas +tag: package-2025-01-01 +``` + +### Tag: package-2025-01-01 + +These settings apply only when `--tag=package-2025-01-01` is specified on the command line. + +```yaml $(tag) == 'package-2025-01-01' +input-file: + - stable/2025-01-01/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +### Tag: package-2021-10-01 + +These settings apply only when `--tag=package-2021-10-01` is specified on the command line. + +```yaml $(tag) == 'package-2021-10-01' +input-file: + - stable/2021-10-01/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +--- diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/shared.tsp new file mode 100644 index 00000000000..1b94bb70503 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/shared.tsp @@ -0,0 +1,8 @@ +@doc("Faked shared model") +model FakedSharedModel { + @doc("The tag.") + tag: string; + + @doc("The created date.") + createdAt: utcDateTime; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/tspconfig.yaml new file mode 100644 index 00000000000..9c97da201c0 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/tspconfig.yaml @@ -0,0 +1,44 @@ +parameters: + "service-dir": + default: "sdk/widget" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + use-read-only-status-schema: true + emitter-output-dir: "{project-root}" + output-file: "{version-status}/{version}/widget.json" + arm-types-dir: "{project-root}/../../../../common-types/resource-management" + "@azure-typespec/http-client-csharp-mgmt": + namespace: "Azure.ResourceManager.Widget" + emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" + "@azure-tools/typespec-python": + emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" + namespace: "azure.mgmt.widget" + generate-test: true + generate-sample: true + flavor: "azure" + "@azure-tools/typespec-java": + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" + namespace: "com.azure.resourcemanager.widget" + service-name: "Widget" # human-readable service name, whitespace allowed + flavor: azure + "@azure-tools/typespec-ts": + emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" + flavor: azure + experimental-extensible-enums: true + package-details: + name: "@azure/arm-widget" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/widget" + emitter-output-dir: "{output-dir}/{service-dir}/armwidget" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/employee.tsp new file mode 100644 index 00000000000..801d16775fe --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/employee.tsp @@ -0,0 +1,104 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +namespace Microsoft.Widget; + +/** A Widget Employee resource */ +model Employee is TrackedResource { + ...ResourceNameParameter; +} + +/** Employee properties */ +model EmployeeProperties { + /** Age of employee (before 2025-11-01) */ + @removed(Versions.v2024_10_01) + @renamedFrom(Versions.v2024_10_01, "age") + oldAge?: int32; + + /** Age of employee (from 2025-11-01 onward, default is 21) */ + @added(Versions.v2024_10_01) + age?: int32 = 21; + + /** City of employee */ + city?: string; + + /** Work location of employee */ + @added(Versions.v2024_10_01) + workLocation?: WorkLocation; + + /** Profile of employee */ + @encode("base64url") + profile?: bytes; + + /** The status of the last operation. */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; + + /** The assets belong to the employee. */ + @typeChangedFrom(Versions.v2024_10_01, string[]) + assets: AssetItem[]; +} + +/** Constrained asset item. */ +@added(Versions.v2024_10_01) +@minLength(3) +@maxLength(10) +scalar AssetItem extends string; + +/** Work location details */ +@added(Versions.v2024_10_01) +model WorkLocation { + /** Country */ + country?: string; + + /** Company */ + company?: string; + + /** Seat number */ + seatNumber?: string; +} + +/** The resource provisioning state. */ +@lroStatus +union ProvisioningState { + ResourceProvisioningState, + + /** The resource is being provisioned */ + Provisioning: "Provisioning", + + /** The resource is updating */ + Updating: "Updating", + + /** The resource is being deleted */ + Deleting: "Deleting", + + /** The resource create request has been accepted */ + Accepted: "Accepted", + + string, +} + +@armResourceOperations +interface Employees { + get is ArmResourceRead; + createOrUpdate is ArmResourceCreateOrReplaceAsync; + update is ArmCustomPatchSync< + Employee, + Azure.ResourceManager.Foundations.ResourceUpdateModel< + Employee, + EmployeeProperties + > + >; + delete is ArmResourceDeleteWithoutOkAsync; + listByResourceGroup is ArmResourceListByParent; + listBySubscription is ArmListBySubscription; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json new file mode 100644 index 00000000000..26e0fb29b7d --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json @@ -0,0 +1,70 @@ +{ + "title": "Employees_CreateOrUpdate - generated by [MaximumSet] rule", + "operationId": "Employees_CreateOrUpdate", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo", + "resource": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms" + }, + "tags": {}, + "location": "itajgxyqozseoygnl" + } + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + }, + "201": { + "headers": { + "Azure-AsyncOperation": "https://contoso.com/operationstatus" + }, + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json new file mode 100644 index 00000000000..0fd8e915fa4 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json @@ -0,0 +1,18 @@ +{ + "title": "Employees_Delete - generated by [MaximumSet] rule", + "operationId": "Employees_Delete", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo" + }, + "responses": { + "202": { + "headers": { + "location": "https://contoso.com/operationstatus" + } + }, + "204": {} + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json new file mode 100644 index 00000000000..1ddc2fc19f8 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json @@ -0,0 +1,35 @@ +{ + "title": "Employees_Get - generated by [MaximumSet] rule", + "operationId": "Employees_Get", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo" + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json new file mode 100644 index 00000000000..48836349caf --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json @@ -0,0 +1,39 @@ +{ + "title": "Employees_ListByResourceGroup - generated by [MaximumSet] rule", + "operationId": "Employees_ListByResourceGroup", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + ], + "nextLink": "https://microsoft.com/a" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json new file mode 100644 index 00000000000..0cdf8ee402d --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json @@ -0,0 +1,21 @@ +{ + "title": "Employees_ListByResourceGroup - generated by [MinimumSet] rule", + "operationId": "Employees_ListByResourceGroup", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" + } + ] + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json new file mode 100644 index 00000000000..85d5915b7a4 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json @@ -0,0 +1,38 @@ +{ + "title": "Employees_ListBySubscription - generated by [MaximumSet] rule", + "operationId": "Employees_ListBySubscription", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + ], + "nextLink": "https://microsoft.com/a" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json new file mode 100644 index 00000000000..a2222331f4a --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json @@ -0,0 +1,20 @@ +{ + "title": "Employees_ListBySubscription - generated by [MinimumSet] rule", + "operationId": "Employees_ListBySubscription", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" + } + ] + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json new file mode 100644 index 00000000000..f9c86837139 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json @@ -0,0 +1,43 @@ +{ + "title": "Employees_Update - generated by [MaximumSet] rule", + "operationId": "Employees_Update", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo", + "properties": { + "tags": {}, + "properties": { + "age": 24, + "city": "uyfg", + "profile": "oapgijcswfkruiuuzbwco" + } + } + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Operations_List_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Operations_List_MaximumSet_Gen.json new file mode 100644 index 00000000000..305336b0df8 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Operations_List_MaximumSet_Gen.json @@ -0,0 +1,28 @@ +{ + "title": "Operations_List - generated by [MaximumSet] rule", + "operationId": "Operations_List", + "parameters": { + "api-version": "2021-10-01" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "ymeow", + "isDataAction": true, + "display": { + "provider": "qxyznq", + "resource": "bqfwkox", + "operation": "td", + "description": "kfcrqmzuwfreqvh" + }, + "origin": "user", + "actionType": "Internal" + } + ], + "nextLink": "https://sample.com/nextLink" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Operations_List_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Operations_List_MinimumSet_Gen.json new file mode 100644 index 00000000000..db39d591542 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Operations_List_MinimumSet_Gen.json @@ -0,0 +1,12 @@ +{ + "title": "Operations_List - generated by [MinimumSet] rule", + "operationId": "Operations_List", + "parameters": { + "api-version": "2021-10-01" + }, + "responses": { + "200": { + "body": {} + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json new file mode 100644 index 00000000000..566c91ac8ed --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json @@ -0,0 +1,85 @@ +{ + "title": "Employees_CreateOrUpdate - generated by [MaximumSet] rule", + "operationId": "Employees_CreateOrUpdate", + "parameters": { + "api-version": "2024-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo", + "resource": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms" + }, + "tags": {}, + "location": "itajgxyqozseoygnl" + } + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + }, + "201": { + "headers": { + "Azure-AsyncOperation": "https://contoso.com/operationstatus" + }, + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json new file mode 100644 index 00000000000..f9383986629 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json @@ -0,0 +1,18 @@ +{ + "title": "Employees_Delete - generated by [MaximumSet] rule", + "operationId": "Employees_Delete", + "parameters": { + "api-version": "2024-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo" + }, + "responses": { + "202": { + "headers": { + "location": "https://contoso.com/operationstatus" + } + }, + "204": {} + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Get_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Get_MaximumSet_Gen.json new file mode 100644 index 00000000000..39c4503c393 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Get_MaximumSet_Gen.json @@ -0,0 +1,40 @@ +{ + "title": "Employees_Get - generated by [MaximumSet] rule", + "operationId": "Employees_Get", + "parameters": { + "api-version": "2024-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo" + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json new file mode 100644 index 00000000000..f21f164e415 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json @@ -0,0 +1,44 @@ +{ + "title": "Employees_ListByResourceGroup - generated by [MaximumSet] rule", + "operationId": "Employees_ListByResourceGroup", + "parameters": { + "api-version": "2024-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + ], + "nextLink": "https://microsoft.com/a" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json new file mode 100644 index 00000000000..11579b602c2 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json @@ -0,0 +1,21 @@ +{ + "title": "Employees_ListByResourceGroup - generated by [MinimumSet] rule", + "operationId": "Employees_ListByResourceGroup", + "parameters": { + "api-version": "2024-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" + } + ] + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json new file mode 100644 index 00000000000..049be5c5146 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json @@ -0,0 +1,43 @@ +{ + "title": "Employees_ListBySubscription - generated by [MaximumSet] rule", + "operationId": "Employees_ListBySubscription", + "parameters": { + "api-version": "2024-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + ], + "nextLink": "https://microsoft.com/a" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json new file mode 100644 index 00000000000..7874b5ed5d2 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json @@ -0,0 +1,20 @@ +{ + "title": "Employees_ListBySubscription - generated by [MinimumSet] rule", + "operationId": "Employees_ListBySubscription", + "parameters": { + "api-version": "2024-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" + } + ] + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Update_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Update_MaximumSet_Gen.json new file mode 100644 index 00000000000..001d46d682c --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Update_MaximumSet_Gen.json @@ -0,0 +1,53 @@ +{ + "title": "Employees_Update - generated by [MaximumSet] rule", + "operationId": "Employees_Update", + "parameters": { + "api-version": "2024-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo", + "properties": { + "tags": {}, + "properties": { + "age": 24, + "city": "uyfg", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "B2-456" + }, + "profile": "oapgijcswfkruiuuzbwco" + } + } + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Operations_List_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Operations_List_MaximumSet_Gen.json new file mode 100644 index 00000000000..e393cb2932c --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Operations_List_MaximumSet_Gen.json @@ -0,0 +1,28 @@ +{ + "title": "Operations_List - generated by [MaximumSet] rule", + "operationId": "Operations_List", + "parameters": { + "api-version": "2024-10-01" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "ymeow", + "isDataAction": true, + "display": { + "provider": "qxyznq", + "resource": "bqfwkox", + "operation": "td", + "description": "eikaaucpxk" + }, + "origin": "user", + "actionType": "Internal" + } + ], + "nextLink": "https://sample.com/nextLink" + } + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Operations_List_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Operations_List_MinimumSet_Gen.json new file mode 100644 index 00000000000..3cc3f3a1cfa --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Operations_List_MinimumSet_Gen.json @@ -0,0 +1,12 @@ +{ + "title": "Operations_List - generated by [MinimumSet] rule", + "operationId": "Operations_List", + "parameters": { + "api-version": "2024-10-01" + }, + "responses": { + "200": { + "body": {} + } + } +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/main.tsp new file mode 100644 index 00000000000..cc51e1b1f76 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/main.tsp @@ -0,0 +1,30 @@ +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "./employee.tsp"; + +using TypeSpec.Http; +using TypeSpec.Rest; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +/** Microsoft.Widget Resource Provider management API. */ +@armProviderNamespace +@service(#{ title: "Widget" }) +@versioned(Microsoft.Widget.Versions) +namespace Microsoft.Widget; + +/** The available API versions. */ +enum Versions { + /** 2021-10-01 version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + v2021_10_01: "2021-10-01", + + /** 2024-10-01 version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + v2024_10_01: "2024-10-01", +} + +interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/package.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/package.json new file mode 100644 index 00000000000..45377b8ad61 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/package.json @@ -0,0 +1,50 @@ +{ + "name": "azure-rest-api-specs", + "devDependencies": { + "@azure-tools/openai-typespec": "1.11.0", + "@azure-tools/spec-gen-sdk": "~0.9.1", + "@azure-tools/specs-shared": "file:.github/shared", + "@azure-tools/typespec-apiview": "0.7.2", + "@azure-tools/typespec-metadata": "0.1.1", + "@azure-tools/typespec-autorest": "0.66.0", + "@azure-tools/typespec-azure-core": "0.66.0", + "@azure-tools/typespec-azure-portal-core": "0.66.0", + "@azure-tools/typespec-azure-resource-manager": "0.66.0", + "@azure-tools/typespec-azure-rulesets": "0.66.0", + "@azure-tools/typespec-client-generator-cli": "0.31.0", + "@azure-tools/typespec-client-generator-core": "0.66.3", + "@azure-tools/typespec-liftr-base": "0.13.0", + "@autorest/openapi-to-typespec": "0.11.13", + "@azure/avocado": "0.10.5", + "@azure/oad": "0.12.4", + "@microsoft.azure/openapi-validator": "2.2.4", + "@microsoft.azure/openapi-validator-core": "1.0.7", + "@microsoft.azure/openapi-validator-rulesets": "2.2.5", + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/sse": "0.80.0", + "@typespec/events": "0.80.0", + "@typespec/openapi": "1.10.0", + "@typespec/openapi3": "1.10.0", + "@typespec/prettier-plugin-typespec": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/streams": "0.80.0", + "@typespec/versioning": "0.80.0", + "@typespec/xml": "0.80.0", + "azure-rest-api-specs-eng-tools": "file:eng/tools", + "oav": "4.0.3", + "prettier": "3.8.1", + "typescript": "~5.9.2" + }, + "overrides": { + "@typespec/asset-emitter": "0.79.1", + "get-uri": "^6.0.5", + "minimatch@^3.0.0": "^3.1.5", + "superagent": "^10.2.3" + }, + "engines": { + "node": ">=20.0.0", + "npm": ">=10.0.0" + }, + "private": true +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/readme.md b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/readme.md new file mode 100644 index 00000000000..59d18fbc138 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/readme.md @@ -0,0 +1,45 @@ +# Widget + +> see https://aka.ms/autorest + +This is the AutoRest configuration file for Widget. + +## Configuration + +### Basic Information + +This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. +This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we +use the native TypeSpec code generation configured in the tspconfig.yaml file. + +```yaml +openapi-type: arm +openapi-subtype: rpaas +tag: package-2024-10-01 +``` + +### Tag: package-2024-10-01 + +These settings apply only when `--tag=package-2024-10-01` is specified on the command line. + +```yaml $(tag) == 'package-2024-10-01' +input-file: + - stable/2024-10-01/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +### Tag: package-2021-10-01 + +These settings apply only when `--tag=package-2021-10-01` is specified on the command line. + +```yaml $(tag) == 'package-2021-10-01' +input-file: + - stable/2021-10-01/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +--- diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/shared.tsp new file mode 100644 index 00000000000..1b94bb70503 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/shared.tsp @@ -0,0 +1,8 @@ +@doc("Faked shared model") +model FakedSharedModel { + @doc("The tag.") + tag: string; + + @doc("The created date.") + createdAt: utcDateTime; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/tspconfig.yaml new file mode 100644 index 00000000000..9c97da201c0 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/tspconfig.yaml @@ -0,0 +1,44 @@ +parameters: + "service-dir": + default: "sdk/widget" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + use-read-only-status-schema: true + emitter-output-dir: "{project-root}" + output-file: "{version-status}/{version}/widget.json" + arm-types-dir: "{project-root}/../../../../common-types/resource-management" + "@azure-typespec/http-client-csharp-mgmt": + namespace: "Azure.ResourceManager.Widget" + emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" + "@azure-tools/typespec-python": + emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" + namespace: "azure.mgmt.widget" + generate-test: true + generate-sample: true + flavor: "azure" + "@azure-tools/typespec-java": + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" + namespace: "com.azure.resourcemanager.widget" + service-name: "Widget" # human-readable service name, whitespace allowed + flavor: azure + "@azure-tools/typespec-ts": + emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" + flavor: azure + experimental-extensible-enums: true + package-details: + name: "@azure/arm-widget" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/widget" + emitter-output-dir: "{output-dir}/{service-dir}/armwidget" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/employee.tsp new file mode 100644 index 00000000000..8dd5a2464ae --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/employee.tsp @@ -0,0 +1,104 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.Core; +using Azure.ResourceManager; + +namespace Microsoft.Widget; + +/** Employee resource */ +model Employee is TrackedResource { + ...ResourceNameParameter; + ...ManagedServiceIdentityProperty; +} + +/** Employee properties */ +model EmployeeProperties { + /** Age of employee */ + age?: int32; + + /** City of employee */ + city?: string; + + /** Email of employee */ + email?: string; + + /** Department of employee */ + department?: string; + + /** Status code of employee */ + statusCode?: string; + + /** Profile of employee */ + @encode("base64url") + profile?: bytes; + + /** The assets belong to the employee. */ + assets: string[]; + + /** The status of the last operation. */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; +} + +/** Export result model */ +model ExportResult { + /** Exported data */ + data?: string; +} + +/** Employee move request */ +model MoveRequest { + /** The moving from location */ + from: string; + + /** The moving to location */ + to: string; +} + +/** Employee move response */ +model MoveResponse { + /** The status of the move */ + movingStatus: string; +} + +/** The resource provisioning state. */ +@lroStatus +union ProvisioningState { + ResourceProvisioningState, + + /** The resource is being provisioned */ + Provisioning: "Provisioning", + + /** The resource is updating */ + Updating: "Updating", + + /** The resource is being deleted */ + Deleting: "Deleting", + + /** The resource create request has been accepted */ + Accepted: "Accepted", + + string, +} + +@armResourceOperations +interface Employees { + get is ArmResourceRead; + createOrUpdate is ArmResourceCreateOrReplaceAsync; + /** It incorrectly uses ARMResourcePatch* as the operation template.* */ + update is ArmResourcePatchAsync< + Employee, + Azure.ResourceManager.Foundations.ResourceUpdateModel + >; + delete is ArmResourceDeleteWithoutOkAsync; + listByResourceGroup is ArmResourceListByParent; + listBySubscription is ArmListBySubscription; + + /** Export employee data */ + exportData is ArmResourceActionSync; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/main.tsp new file mode 100644 index 00000000000..2990eb2b363 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/main.tsp @@ -0,0 +1,32 @@ +import "@typespec/http"; +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "./employee.tsp"; + +using TypeSpec.Http; +using TypeSpec.Rest; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +/** Microsoft.Widget Resource Provider management API. */ +@armProviderNamespace +@service(#{ title: "Widget" }) +@versioned(Microsoft.Widget.Versions) +namespace Microsoft.Widget; + +/** The available API versions. */ +enum Versions { + /** 2021-11-01 version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + v2021_11_01: "2021-11-01", + + /** 2024-10-01-preview version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + @previewVersion + v2024_10_01_preview: "2024-10-01-preview", +} + +interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/package.json b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/package.json new file mode 100644 index 00000000000..45377b8ad61 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/package.json @@ -0,0 +1,50 @@ +{ + "name": "azure-rest-api-specs", + "devDependencies": { + "@azure-tools/openai-typespec": "1.11.0", + "@azure-tools/spec-gen-sdk": "~0.9.1", + "@azure-tools/specs-shared": "file:.github/shared", + "@azure-tools/typespec-apiview": "0.7.2", + "@azure-tools/typespec-metadata": "0.1.1", + "@azure-tools/typespec-autorest": "0.66.0", + "@azure-tools/typespec-azure-core": "0.66.0", + "@azure-tools/typespec-azure-portal-core": "0.66.0", + "@azure-tools/typespec-azure-resource-manager": "0.66.0", + "@azure-tools/typespec-azure-rulesets": "0.66.0", + "@azure-tools/typespec-client-generator-cli": "0.31.0", + "@azure-tools/typespec-client-generator-core": "0.66.3", + "@azure-tools/typespec-liftr-base": "0.13.0", + "@autorest/openapi-to-typespec": "0.11.13", + "@azure/avocado": "0.10.5", + "@azure/oad": "0.12.4", + "@microsoft.azure/openapi-validator": "2.2.4", + "@microsoft.azure/openapi-validator-core": "1.0.7", + "@microsoft.azure/openapi-validator-rulesets": "2.2.5", + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/sse": "0.80.0", + "@typespec/events": "0.80.0", + "@typespec/openapi": "1.10.0", + "@typespec/openapi3": "1.10.0", + "@typespec/prettier-plugin-typespec": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/streams": "0.80.0", + "@typespec/versioning": "0.80.0", + "@typespec/xml": "0.80.0", + "azure-rest-api-specs-eng-tools": "file:eng/tools", + "oav": "4.0.3", + "prettier": "3.8.1", + "typescript": "~5.9.2" + }, + "overrides": { + "@typespec/asset-emitter": "0.79.1", + "get-uri": "^6.0.5", + "minimatch@^3.0.0": "^3.1.5", + "superagent": "^10.2.3" + }, + "engines": { + "node": ">=20.0.0", + "npm": ">=10.0.0" + }, + "private": true +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/preview/2024-10-01-preview/widget.json b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/preview/2024-10-01-preview/widget.json new file mode 100644 index 00000000000..808a45ab360 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/preview/2024-10-01-preview/widget.json @@ -0,0 +1,710 @@ +{ + "swagger": "2.0", + "info": { + "title": "Widget", + "version": "2024-10-01-preview", + "description": "Microsoft.Widget Resource Provider management API.", + "x-typespec-generated": [ + { + "emitter": "@azure-tools/typespec-autorest" + } + ] + }, + "schemes": [ + "https" + ], + "host": "management.azure.com", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "security": [ + { + "azure_auth": [ + "user_impersonation" + ] + } + ], + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "description": "Azure Active Directory OAuth2 Flow.", + "flow": "implicit", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "tags": [ + { + "name": "Operations" + }, + { + "name": "Employees" + } + ], + "paths": { + "/providers/Microsoft.Widget/operations": { + "get": { + "operationId": "Operations_List", + "tags": [ + "Operations" + ], + "description": "List the operations for the provider", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/OperationListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Widget/employees": { + "get": { + "operationId": "Employees_ListBySubscription", + "tags": [ + "Employees" + ], + "description": "List Employee resources by subscription ID", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/EmployeeListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees": { + "get": { + "operationId": "Employees_ListByResourceGroup", + "tags": [ + "Employees" + ], + "description": "List Employee resources by resource group", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/EmployeeListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}": { + "get": { + "operationId": "Employees_Get", + "tags": [ + "Employees" + ], + "description": "Get a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + }, + "put": { + "operationId": "Employees_CreateOrUpdate", + "tags": [ + "Employees" + ], + "description": "Create a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + }, + { + "name": "resource", + "in": "body", + "description": "Resource create parameters.", + "required": true, + "schema": { + "$ref": "#/definitions/Employee" + } + } + ], + "responses": { + "200": { + "description": "Resource 'Employee' update operation succeeded", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "201": { + "description": "Resource 'Employee' create operation succeeded", + "schema": { + "$ref": "#/definitions/Employee" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-long-running-operation": true + }, + "patch": { + "operationId": "Employees_Update", + "tags": [ + "Employees" + ], + "description": "It incorrectly uses ARMResourcePatch* as the operation template.*", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + }, + { + "name": "properties", + "in": "body", + "description": "The resource properties to be updated.", + "required": true, + "schema": { + "$ref": "#/definitions/EmployeeUpdate" + } + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "202": { + "description": "Resource update request accepted.", + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + }, + "delete": { + "operationId": "Employees_Delete", + "tags": [ + "Employees" + ], + "description": "Delete a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "202": { + "description": "Resource deletion accepted.", + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "204": { + "description": "Resource does not exist." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}/exportData": { + "post": { + "operationId": "Employees_ExportData", + "tags": [ + "Employees" + ], + "description": "Export employee data", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/ExportResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + } + } + }, + "definitions": { + "Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate": { + "type": "object", + "description": "Managed service identity (system assigned and/or user assigned identities)", + "properties": { + "type": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentityType", + "description": "The type of managed identity assigned to this resource." + }, + "userAssignedIdentities": { + "type": "object", + "description": "The identities assigned to this resource by the user.", + "additionalProperties": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/UserAssignedIdentity", + "x-nullable": true + } + } + } + }, + "Azure.ResourceManager.CommonTypes.TrackedResourceUpdate": { + "type": "object", + "title": "Tracked Resource", + "description": "The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'", + "properties": { + "tags": { + "type": "object", + "description": "Resource tags.", + "additionalProperties": { + "type": "string" + } + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/Resource" + } + ] + }, + "Employee": { + "type": "object", + "description": "Employee resource", + "properties": { + "properties": { + "$ref": "#/definitions/EmployeeProperties", + "description": "The resource-specific properties for this resource." + }, + "identity": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentity", + "description": "The managed service identities assigned to this resource." + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/TrackedResource" + } + ] + }, + "EmployeeListResult": { + "type": "object", + "description": "The response of a Employee list operation.", + "properties": { + "value": { + "type": "array", + "description": "The Employee items on this page", + "items": { + "$ref": "#/definitions/Employee" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "EmployeeProperties": { + "type": "object", + "description": "Employee properties", + "properties": { + "age": { + "type": "integer", + "format": "int32", + "description": "Age of employee" + }, + "city": { + "type": "string", + "description": "City of employee" + }, + "email": { + "type": "string", + "description": "Email of employee" + }, + "department": { + "type": "string", + "description": "Department of employee" + }, + "statusCode": { + "type": "string", + "description": "Status code of employee" + }, + "profile": { + "type": "string", + "format": "base64url", + "description": "Profile of employee" + }, + "assets": { + "type": "array", + "description": "The assets belong to the employee.", + "items": { + "type": "string" + } + }, + "provisioningState": { + "$ref": "#/definitions/ProvisioningState", + "description": "The status of the last operation.", + "readOnly": true + } + }, + "required": [ + "assets" + ] + }, + "EmployeePropertiesUpdate": { + "type": "object", + "description": "Employee properties", + "properties": { + "age": { + "type": "integer", + "format": "int32", + "description": "Age of employee" + }, + "city": { + "type": "string", + "description": "City of employee" + }, + "email": { + "type": "string", + "description": "Email of employee" + }, + "department": { + "type": "string", + "description": "Department of employee" + }, + "statusCode": { + "type": "string", + "description": "Status code of employee" + }, + "profile": { + "type": "string", + "format": "base64url", + "description": "Profile of employee" + }, + "assets": { + "type": "array", + "description": "The assets belong to the employee.", + "items": { + "type": "string" + } + } + } + }, + "EmployeeUpdate": { + "type": "object", + "description": "Employee resource", + "properties": { + "properties": { + "$ref": "#/definitions/EmployeePropertiesUpdate", + "description": "The resource-specific properties for this resource." + }, + "identity": { + "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate", + "description": "The managed service identities assigned to this resource." + } + }, + "allOf": [ + { + "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.TrackedResourceUpdate" + } + ] + }, + "ExportResult": { + "type": "object", + "description": "Export result model", + "properties": { + "data": { + "type": "string", + "description": "Exported data" + } + } + }, + "MoveRequest": { + "type": "object", + "description": "Employee move request", + "properties": { + "from": { + "type": "string", + "description": "The moving from location" + }, + "to": { + "type": "string", + "description": "The moving to location" + } + }, + "required": [ + "from", + "to" + ] + }, + "MoveResponse": { + "type": "object", + "description": "Employee move response", + "properties": { + "movingStatus": { + "type": "string", + "description": "The status of the move" + } + }, + "required": [ + "movingStatus" + ] + }, + "ProvisioningState": { + "type": "string", + "description": "The resource provisioning state.", + "enum": [ + "Succeeded", + "Failed", + "Canceled", + "Provisioning", + "Updating", + "Deleting", + "Accepted" + ], + "x-ms-enum": { + "name": "ProvisioningState", + "modelAsString": true, + "values": [ + { + "name": "Succeeded", + "value": "Succeeded", + "description": "Resource has been created." + }, + { + "name": "Failed", + "value": "Failed", + "description": "Resource creation failed." + }, + { + "name": "Canceled", + "value": "Canceled", + "description": "Resource creation was canceled." + }, + { + "name": "Provisioning", + "value": "Provisioning", + "description": "The resource is being provisioned" + }, + { + "name": "Updating", + "value": "Updating", + "description": "The resource is updating" + }, + { + "name": "Deleting", + "value": "Deleting", + "description": "The resource is being deleted" + }, + { + "name": "Accepted", + "value": "Accepted", + "description": "The resource create request has been accepted" + } + ] + }, + "readOnly": true + } + }, + "parameters": {} +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/readme.md b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/readme.md new file mode 100644 index 00000000000..3c4a3d353b9 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/readme.md @@ -0,0 +1,45 @@ +# Widget + +> see https://aka.ms/autorest + +This is the AutoRest configuration file for Widget. + +## Configuration + +### Basic Information + +This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. +This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we +use the native TypeSpec code generation configured in the tspconfig.yaml file. + +```yaml +openapi-type: arm +openapi-subtype: rpaas +tag: package-2021-11-01 +``` + +### Tag: package-2021-11-01 + +These settings apply only when `--tag=package-2021-11-01` is specified on the command line. + +```yaml $(tag) == 'package-2021-11-01' +input-file: + - stable/2021-11-01/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +### Tag: package-2021-10-01-preview + +These settings apply only when `--tag=package-2021-10-01-preview` is specified on the command line. + +```yaml $(tag) == 'package-2021-10-01-preview' +input-file: + - preview/2021-10-01-preview/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +--- diff --git a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/shared.tsp new file mode 100644 index 00000000000..1b94bb70503 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/shared.tsp @@ -0,0 +1,8 @@ +@doc("Faked shared model") +model FakedSharedModel { + @doc("The tag.") + tag: string; + + @doc("The created date.") + createdAt: utcDateTime; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/stable/2021-11-01/widget.json b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/stable/2021-11-01/widget.json new file mode 100644 index 00000000000..09a334e46e5 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/stable/2021-11-01/widget.json @@ -0,0 +1,710 @@ +{ + "swagger": "2.0", + "info": { + "title": "Widget", + "version": "2021-11-01", + "description": "Microsoft.Widget Resource Provider management API.", + "x-typespec-generated": [ + { + "emitter": "@azure-tools/typespec-autorest" + } + ] + }, + "schemes": [ + "https" + ], + "host": "management.azure.com", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "security": [ + { + "azure_auth": [ + "user_impersonation" + ] + } + ], + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "description": "Azure Active Directory OAuth2 Flow.", + "flow": "implicit", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "tags": [ + { + "name": "Operations" + }, + { + "name": "Employees" + } + ], + "paths": { + "/providers/Microsoft.Widget/operations": { + "get": { + "operationId": "Operations_List", + "tags": [ + "Operations" + ], + "description": "List the operations for the provider", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/OperationListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Widget/employees": { + "get": { + "operationId": "Employees_ListBySubscription", + "tags": [ + "Employees" + ], + "description": "List Employee resources by subscription ID", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/EmployeeListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees": { + "get": { + "operationId": "Employees_ListByResourceGroup", + "tags": [ + "Employees" + ], + "description": "List Employee resources by resource group", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/EmployeeListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}": { + "get": { + "operationId": "Employees_Get", + "tags": [ + "Employees" + ], + "description": "Get a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + }, + "put": { + "operationId": "Employees_CreateOrUpdate", + "tags": [ + "Employees" + ], + "description": "Create a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + }, + { + "name": "resource", + "in": "body", + "description": "Resource create parameters.", + "required": true, + "schema": { + "$ref": "#/definitions/Employee" + } + } + ], + "responses": { + "200": { + "description": "Resource 'Employee' update operation succeeded", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "201": { + "description": "Resource 'Employee' create operation succeeded", + "schema": { + "$ref": "#/definitions/Employee" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-long-running-operation": true + }, + "patch": { + "operationId": "Employees_Update", + "tags": [ + "Employees" + ], + "description": "It incorrectly uses ARMResourcePatch* as the operation template.*", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + }, + { + "name": "properties", + "in": "body", + "description": "The resource properties to be updated.", + "required": true, + "schema": { + "$ref": "#/definitions/EmployeeUpdate" + } + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "202": { + "description": "Resource update request accepted.", + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + }, + "delete": { + "operationId": "Employees_Delete", + "tags": [ + "Employees" + ], + "description": "Delete a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "202": { + "description": "Resource deletion accepted.", + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "204": { + "description": "Resource does not exist." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}/exportData": { + "post": { + "operationId": "Employees_ExportData", + "tags": [ + "Employees" + ], + "description": "Export employee data", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/ExportResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + } + } + }, + "definitions": { + "Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate": { + "type": "object", + "description": "Managed service identity (system assigned and/or user assigned identities)", + "properties": { + "type": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentityType", + "description": "The type of managed identity assigned to this resource." + }, + "userAssignedIdentities": { + "type": "object", + "description": "The identities assigned to this resource by the user.", + "additionalProperties": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/UserAssignedIdentity", + "x-nullable": true + } + } + } + }, + "Azure.ResourceManager.CommonTypes.TrackedResourceUpdate": { + "type": "object", + "title": "Tracked Resource", + "description": "The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'", + "properties": { + "tags": { + "type": "object", + "description": "Resource tags.", + "additionalProperties": { + "type": "string" + } + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/Resource" + } + ] + }, + "Employee": { + "type": "object", + "description": "Employee resource", + "properties": { + "properties": { + "$ref": "#/definitions/EmployeeProperties", + "description": "The resource-specific properties for this resource." + }, + "identity": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentity", + "description": "The managed service identities assigned to this resource." + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/TrackedResource" + } + ] + }, + "EmployeeListResult": { + "type": "object", + "description": "The response of a Employee list operation.", + "properties": { + "value": { + "type": "array", + "description": "The Employee items on this page", + "items": { + "$ref": "#/definitions/Employee" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "EmployeeProperties": { + "type": "object", + "description": "Employee properties", + "properties": { + "age": { + "type": "integer", + "format": "int32", + "description": "Age of employee" + }, + "city": { + "type": "string", + "description": "City of employee" + }, + "email": { + "type": "string", + "description": "Email of employee" + }, + "department": { + "type": "string", + "description": "Department of employee" + }, + "statusCode": { + "type": "string", + "description": "Status code of employee" + }, + "profile": { + "type": "string", + "format": "base64url", + "description": "Profile of employee" + }, + "assets": { + "type": "array", + "description": "The assets belong to the employee.", + "items": { + "type": "string" + } + }, + "provisioningState": { + "$ref": "#/definitions/ProvisioningState", + "description": "The status of the last operation.", + "readOnly": true + } + }, + "required": [ + "assets" + ] + }, + "EmployeePropertiesUpdate": { + "type": "object", + "description": "Employee properties", + "properties": { + "age": { + "type": "integer", + "format": "int32", + "description": "Age of employee" + }, + "city": { + "type": "string", + "description": "City of employee" + }, + "email": { + "type": "string", + "description": "Email of employee" + }, + "department": { + "type": "string", + "description": "Department of employee" + }, + "statusCode": { + "type": "string", + "description": "Status code of employee" + }, + "profile": { + "type": "string", + "format": "base64url", + "description": "Profile of employee" + }, + "assets": { + "type": "array", + "description": "The assets belong to the employee.", + "items": { + "type": "string" + } + } + } + }, + "EmployeeUpdate": { + "type": "object", + "description": "Employee resource", + "properties": { + "properties": { + "$ref": "#/definitions/EmployeePropertiesUpdate", + "description": "The resource-specific properties for this resource." + }, + "identity": { + "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate", + "description": "The managed service identities assigned to this resource." + } + }, + "allOf": [ + { + "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.TrackedResourceUpdate" + } + ] + }, + "ExportResult": { + "type": "object", + "description": "Export result model", + "properties": { + "data": { + "type": "string", + "description": "Exported data" + } + } + }, + "MoveRequest": { + "type": "object", + "description": "Employee move request", + "properties": { + "from": { + "type": "string", + "description": "The moving from location" + }, + "to": { + "type": "string", + "description": "The moving to location" + } + }, + "required": [ + "from", + "to" + ] + }, + "MoveResponse": { + "type": "object", + "description": "Employee move response", + "properties": { + "movingStatus": { + "type": "string", + "description": "The status of the move" + } + }, + "required": [ + "movingStatus" + ] + }, + "ProvisioningState": { + "type": "string", + "description": "The resource provisioning state.", + "enum": [ + "Succeeded", + "Failed", + "Canceled", + "Provisioning", + "Updating", + "Deleting", + "Accepted" + ], + "x-ms-enum": { + "name": "ProvisioningState", + "modelAsString": true, + "values": [ + { + "name": "Succeeded", + "value": "Succeeded", + "description": "Resource has been created." + }, + { + "name": "Failed", + "value": "Failed", + "description": "Resource creation failed." + }, + { + "name": "Canceled", + "value": "Canceled", + "description": "Resource creation was canceled." + }, + { + "name": "Provisioning", + "value": "Provisioning", + "description": "The resource is being provisioned" + }, + { + "name": "Updating", + "value": "Updating", + "description": "The resource is updating" + }, + { + "name": "Deleting", + "value": "Deleting", + "description": "The resource is being deleted" + }, + { + "name": "Accepted", + "value": "Accepted", + "description": "The resource create request has been accepted" + } + ] + }, + "readOnly": true + } + }, + "parameters": {} +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/tspconfig.yaml new file mode 100644 index 00000000000..9c97da201c0 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/tspconfig.yaml @@ -0,0 +1,44 @@ +parameters: + "service-dir": + default: "sdk/widget" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + use-read-only-status-schema: true + emitter-output-dir: "{project-root}" + output-file: "{version-status}/{version}/widget.json" + arm-types-dir: "{project-root}/../../../../common-types/resource-management" + "@azure-typespec/http-client-csharp-mgmt": + namespace: "Azure.ResourceManager.Widget" + emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" + "@azure-tools/typespec-python": + emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" + namespace: "azure.mgmt.widget" + generate-test: true + generate-sample: true + flavor: "azure" + "@azure-tools/typespec-java": + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" + namespace: "com.azure.resourcemanager.widget" + service-name: "Widget" # human-readable service name, whitespace allowed + flavor: azure + "@azure-tools/typespec-ts": + emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" + flavor: azure + experimental-extensible-enums: true + package-details: + name: "@azure/arm-widget" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/widget" + emitter-output-dir: "{output-dir}/{service-dir}/armwidget" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/badgeAssignment.tsp b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/badgeAssignment.tsp new file mode 100644 index 00000000000..6f734df0af4 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/badgeAssignment.tsp @@ -0,0 +1,41 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.Core; +using Azure.ResourceManager; + +namespace Microsoft.Widget; + +/** Badge assignment extension resource */ +model BadgeAssignment is ProxyResource { + ...ResourceNameParameter; +} + +/** Badge assignment properties */ +model BadgeAssignmentProperties { + /** Identifier of the badge. */ + badgeId: string; + + /** The date when the badge was assigned. */ + assignedDate?: plainDate; + + /** Indicates whether the badge assignment is active. */ + isActive?: boolean; + + /** The status of the last operation. */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; +} + +@armResourceOperations +interface BadgeAssignments { + get is ArmResourceRead; + createOrUpdate is ArmResourceCreateOrReplaceAsync; + update is ArmResourcePatchSync; + delete is ArmResourceDeleteWithoutOkAsync; + listByParent is ArmResourceListByParent; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/employee.tsp new file mode 100644 index 00000000000..0436d134471 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/employee.tsp @@ -0,0 +1,100 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.Core; +using Azure.ResourceManager; + +namespace Microsoft.Widget; + +/** Employee resource */ +model Employee is TrackedResource { + ...ResourceNameParameter; + ...ManagedServiceIdentityProperty; +} + +/** Employee properties */ +model EmployeeProperties { + /** Age of employee */ + age?: int32; + + /** City of employee */ + city?: string; + + /** Email of employee */ + email?: string; + + /** Department of employee */ + department?: string; + + /** Status code of employee */ + statusCode?: string; + + /** Profile of employee */ + @encode("base64url") + profile?: bytes; + + /** The assets belong to the employee. */ + assets: string[]; + + /** The status of the last operation. */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; +} + +/** Export result model */ +model ExportResult { + /** Exported data */ + data?: string; +} + +/** Employee move request */ +model MoveRequest { + /** The moving from location */ + from: string; + + /** The moving to location */ + to: string; +} + +/** Employee move response */ +model MoveResponse { + /** The status of the move */ + movingStatus: string; +} + +/** The resource provisioning state. */ +@lroStatus +union ProvisioningState { + ResourceProvisioningState, + + /** The resource is being provisioned */ + Provisioning: "Provisioning", + + /** The resource is updating */ + Updating: "Updating", + + /** The resource is being deleted */ + Deleting: "Deleting", + + /** The resource create request has been accepted */ + Accepted: "Accepted", + + string, +} + +@armResourceOperations +interface Employees { + get is ArmResourceRead; + createOrUpdate is ArmResourceCreateOrReplaceAsync; + update is ArmResourcePatchSync; + delete is ArmResourceDeleteWithoutOkAsync; + listByResourceGroup is ArmResourceListByParent; + listBySubscription is ArmListBySubscription; + + /** Export employee data */ + exportData is ArmResourceActionSync; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/main.tsp new file mode 100644 index 00000000000..bb644b57201 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/main.tsp @@ -0,0 +1,33 @@ +import "@typespec/http"; +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "./employee.tsp"; +import "./badgeAssignment.tsp"; + +using TypeSpec.Http; +using TypeSpec.Rest; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +/** Microsoft.Widget Resource Provider management API. */ +@armProviderNamespace +@service(#{ title: "Widget" }) +@versioned(Microsoft.Widget.Versions) +namespace Microsoft.Widget; + +/** The available API versions. */ +enum Versions { + /** 2021-11-01 version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + v2021_11_01: "2021-11-01", + + /** 2024-10-01-preview version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + @previewVersion + v2024_10_01_preview: "2024-10-01-preview", +} + +interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/package.json b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/package.json new file mode 100644 index 00000000000..45377b8ad61 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/package.json @@ -0,0 +1,50 @@ +{ + "name": "azure-rest-api-specs", + "devDependencies": { + "@azure-tools/openai-typespec": "1.11.0", + "@azure-tools/spec-gen-sdk": "~0.9.1", + "@azure-tools/specs-shared": "file:.github/shared", + "@azure-tools/typespec-apiview": "0.7.2", + "@azure-tools/typespec-metadata": "0.1.1", + "@azure-tools/typespec-autorest": "0.66.0", + "@azure-tools/typespec-azure-core": "0.66.0", + "@azure-tools/typespec-azure-portal-core": "0.66.0", + "@azure-tools/typespec-azure-resource-manager": "0.66.0", + "@azure-tools/typespec-azure-rulesets": "0.66.0", + "@azure-tools/typespec-client-generator-cli": "0.31.0", + "@azure-tools/typespec-client-generator-core": "0.66.3", + "@azure-tools/typespec-liftr-base": "0.13.0", + "@autorest/openapi-to-typespec": "0.11.13", + "@azure/avocado": "0.10.5", + "@azure/oad": "0.12.4", + "@microsoft.azure/openapi-validator": "2.2.4", + "@microsoft.azure/openapi-validator-core": "1.0.7", + "@microsoft.azure/openapi-validator-rulesets": "2.2.5", + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/sse": "0.80.0", + "@typespec/events": "0.80.0", + "@typespec/openapi": "1.10.0", + "@typespec/openapi3": "1.10.0", + "@typespec/prettier-plugin-typespec": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/streams": "0.80.0", + "@typespec/versioning": "0.80.0", + "@typespec/xml": "0.80.0", + "azure-rest-api-specs-eng-tools": "file:eng/tools", + "oav": "4.0.3", + "prettier": "3.8.1", + "typescript": "~5.9.2" + }, + "overrides": { + "@typespec/asset-emitter": "0.79.1", + "get-uri": "^6.0.5", + "minimatch@^3.0.0": "^3.1.5", + "superagent": "^10.2.3" + }, + "engines": { + "node": ">=20.0.0", + "npm": ">=10.0.0" + }, + "private": true +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/preview/2024-10-01-preview/widget.json b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/preview/2024-10-01-preview/widget.json new file mode 100644 index 00000000000..ea0837c4662 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/preview/2024-10-01-preview/widget.json @@ -0,0 +1,1045 @@ +{ + "swagger": "2.0", + "info": { + "title": "Widget", + "version": "2024-10-01-preview", + "description": "Microsoft.Widget Resource Provider management API.", + "x-typespec-generated": [ + { + "emitter": "@azure-tools/typespec-autorest" + } + ] + }, + "schemes": [ + "https" + ], + "host": "management.azure.com", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "security": [ + { + "azure_auth": [ + "user_impersonation" + ] + } + ], + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "description": "Azure Active Directory OAuth2 Flow.", + "flow": "implicit", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "tags": [ + { + "name": "Operations" + }, + { + "name": "Employees" + }, + { + "name": "BadgeAssignments" + } + ], + "paths": { + "/providers/Microsoft.Widget/operations": { + "get": { + "operationId": "Operations_List", + "tags": [ + "Operations" + ], + "description": "List the operations for the provider", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/OperationListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Widget/employees": { + "get": { + "operationId": "Employees_ListBySubscription", + "tags": [ + "Employees" + ], + "description": "List Employee resources by subscription ID", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/EmployeeListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/badgeAssignments": { + "get": { + "operationId": "BadgeAssignments_ListByParent", + "tags": [ + "BadgeAssignments" + ], + "description": "List BadgeAssignment resources by resource group", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/BadgeAssignmentListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/badgeAssignments/{badgeAssignmentName}": { + "get": { + "operationId": "BadgeAssignments_Get", + "tags": [ + "BadgeAssignments" + ], + "description": "Get a BadgeAssignment", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "badgeAssignmentName", + "in": "path", + "description": "The name of the BadgeAssignment", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/BadgeAssignment" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + }, + "put": { + "operationId": "BadgeAssignments_CreateOrUpdate", + "tags": [ + "BadgeAssignments" + ], + "description": "Create a BadgeAssignment", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "badgeAssignmentName", + "in": "path", + "description": "The name of the BadgeAssignment", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + }, + { + "name": "resource", + "in": "body", + "description": "Resource create parameters.", + "required": true, + "schema": { + "$ref": "#/definitions/BadgeAssignment" + } + } + ], + "responses": { + "200": { + "description": "Resource 'BadgeAssignment' update operation succeeded", + "schema": { + "$ref": "#/definitions/BadgeAssignment" + } + }, + "201": { + "description": "Resource 'BadgeAssignment' create operation succeeded", + "schema": { + "$ref": "#/definitions/BadgeAssignment" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-long-running-operation": true + }, + "patch": { + "operationId": "BadgeAssignments_Update", + "tags": [ + "BadgeAssignments" + ], + "description": "Update a BadgeAssignment", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "badgeAssignmentName", + "in": "path", + "description": "The name of the BadgeAssignment", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + }, + { + "name": "properties", + "in": "body", + "description": "The resource properties to be updated.", + "required": true, + "schema": { + "$ref": "#/definitions/BadgeAssignmentUpdate" + } + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/BadgeAssignment" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + }, + "delete": { + "operationId": "BadgeAssignments_Delete", + "tags": [ + "BadgeAssignments" + ], + "description": "Delete a BadgeAssignment", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "badgeAssignmentName", + "in": "path", + "description": "The name of the BadgeAssignment", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "202": { + "description": "Resource deletion accepted.", + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "204": { + "description": "Resource does not exist." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees": { + "get": { + "operationId": "Employees_ListByResourceGroup", + "tags": [ + "Employees" + ], + "description": "List Employee resources by resource group", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/EmployeeListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}": { + "get": { + "operationId": "Employees_Get", + "tags": [ + "Employees" + ], + "description": "Get a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + }, + "put": { + "operationId": "Employees_CreateOrUpdate", + "tags": [ + "Employees" + ], + "description": "Create a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + }, + { + "name": "resource", + "in": "body", + "description": "Resource create parameters.", + "required": true, + "schema": { + "$ref": "#/definitions/Employee" + } + } + ], + "responses": { + "200": { + "description": "Resource 'Employee' update operation succeeded", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "201": { + "description": "Resource 'Employee' create operation succeeded", + "schema": { + "$ref": "#/definitions/Employee" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-long-running-operation": true + }, + "patch": { + "operationId": "Employees_Update", + "tags": [ + "Employees" + ], + "description": "Update a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + }, + { + "name": "properties", + "in": "body", + "description": "The resource properties to be updated.", + "required": true, + "schema": { + "$ref": "#/definitions/EmployeeUpdate" + } + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + }, + "delete": { + "operationId": "Employees_Delete", + "tags": [ + "Employees" + ], + "description": "Delete a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "202": { + "description": "Resource deletion accepted.", + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "204": { + "description": "Resource does not exist." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}/exportData": { + "post": { + "operationId": "Employees_ExportData", + "tags": [ + "Employees" + ], + "description": "Export employee data", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/ExportResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + } + } + }, + "definitions": { + "Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate": { + "type": "object", + "description": "Managed service identity (system assigned and/or user assigned identities)", + "properties": { + "type": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentityType", + "description": "The type of managed identity assigned to this resource." + }, + "userAssignedIdentities": { + "type": "object", + "description": "The identities assigned to this resource by the user.", + "additionalProperties": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/UserAssignedIdentity", + "x-nullable": true + } + } + } + }, + "Azure.ResourceManager.CommonTypes.TrackedResourceUpdate": { + "type": "object", + "title": "Tracked Resource", + "description": "The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'", + "properties": { + "tags": { + "type": "object", + "description": "Resource tags.", + "additionalProperties": { + "type": "string" + } + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/Resource" + } + ] + }, + "BadgeAssignment": { + "type": "object", + "description": "Badge assignment extension resource", + "properties": { + "properties": { + "$ref": "#/definitions/BadgeAssignmentProperties", + "description": "The resource-specific properties for this resource." + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ProxyResource" + } + ] + }, + "BadgeAssignmentListResult": { + "type": "object", + "description": "The response of a BadgeAssignment list operation.", + "properties": { + "value": { + "type": "array", + "description": "The BadgeAssignment items on this page", + "items": { + "$ref": "#/definitions/BadgeAssignment" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "BadgeAssignmentProperties": { + "type": "object", + "description": "Badge assignment properties", + "properties": { + "badgeId": { + "type": "string", + "description": "Identifier of the badge." + }, + "assignedDate": { + "type": "string", + "format": "date", + "description": "The date when the badge was assigned." + }, + "isActive": { + "type": "boolean", + "description": "Indicates whether the badge assignment is active." + }, + "provisioningState": { + "$ref": "#/definitions/ProvisioningState", + "description": "The status of the last operation.", + "readOnly": true + } + }, + "required": [ + "badgeId" + ] + }, + "BadgeAssignmentPropertiesUpdate": { + "type": "object", + "description": "Badge assignment properties", + "properties": { + "badgeId": { + "type": "string", + "description": "Identifier of the badge." + }, + "assignedDate": { + "type": "string", + "format": "date", + "description": "The date when the badge was assigned." + }, + "isActive": { + "type": "boolean", + "description": "Indicates whether the badge assignment is active." + } + } + }, + "BadgeAssignmentUpdate": { + "type": "object", + "description": "Badge assignment extension resource", + "properties": { + "properties": { + "$ref": "#/definitions/BadgeAssignmentPropertiesUpdate", + "description": "The resource-specific properties for this resource." + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ProxyResource" + } + ] + }, + "Employee": { + "type": "object", + "description": "Employee resource", + "properties": { + "properties": { + "$ref": "#/definitions/EmployeeProperties", + "description": "The resource-specific properties for this resource." + }, + "identity": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentity", + "description": "The managed service identities assigned to this resource." + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/TrackedResource" + } + ] + }, + "EmployeeListResult": { + "type": "object", + "description": "The response of a Employee list operation.", + "properties": { + "value": { + "type": "array", + "description": "The Employee items on this page", + "items": { + "$ref": "#/definitions/Employee" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "EmployeeProperties": { + "type": "object", + "description": "Employee properties", + "properties": { + "age": { + "type": "integer", + "format": "int32", + "description": "Age of employee" + }, + "city": { + "type": "string", + "description": "City of employee" + }, + "email": { + "type": "string", + "description": "Email of employee" + }, + "department": { + "type": "string", + "description": "Department of employee" + }, + "statusCode": { + "type": "string", + "description": "Status code of employee" + }, + "profile": { + "type": "string", + "format": "base64url", + "description": "Profile of employee" + }, + "assets": { + "type": "array", + "description": "The assets belong to the employee.", + "items": { + "type": "string" + } + }, + "provisioningState": { + "$ref": "#/definitions/ProvisioningState", + "description": "The status of the last operation.", + "readOnly": true + } + }, + "required": [ + "assets" + ] + }, + "EmployeePropertiesUpdate": { + "type": "object", + "description": "Employee properties", + "properties": { + "age": { + "type": "integer", + "format": "int32", + "description": "Age of employee" + }, + "city": { + "type": "string", + "description": "City of employee" + }, + "email": { + "type": "string", + "description": "Email of employee" + }, + "department": { + "type": "string", + "description": "Department of employee" + }, + "statusCode": { + "type": "string", + "description": "Status code of employee" + }, + "profile": { + "type": "string", + "format": "base64url", + "description": "Profile of employee" + }, + "assets": { + "type": "array", + "description": "The assets belong to the employee.", + "items": { + "type": "string" + } + } + } + }, + "EmployeeUpdate": { + "type": "object", + "description": "Employee resource", + "properties": { + "properties": { + "$ref": "#/definitions/EmployeePropertiesUpdate", + "description": "The resource-specific properties for this resource." + }, + "identity": { + "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate", + "description": "The managed service identities assigned to this resource." + } + }, + "allOf": [ + { + "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.TrackedResourceUpdate" + } + ] + }, + "ExportResult": { + "type": "object", + "description": "Export result model", + "properties": { + "data": { + "type": "string", + "description": "Exported data" + } + } + }, + "MoveRequest": { + "type": "object", + "description": "Employee move request", + "properties": { + "from": { + "type": "string", + "description": "The moving from location" + }, + "to": { + "type": "string", + "description": "The moving to location" + } + }, + "required": [ + "from", + "to" + ] + }, + "MoveResponse": { + "type": "object", + "description": "Employee move response", + "properties": { + "movingStatus": { + "type": "string", + "description": "The status of the move" + } + }, + "required": [ + "movingStatus" + ] + }, + "ProvisioningState": { + "type": "string", + "description": "The resource provisioning state.", + "enum": [ + "Succeeded", + "Failed", + "Canceled", + "Provisioning", + "Updating", + "Deleting", + "Accepted" + ], + "x-ms-enum": { + "name": "ProvisioningState", + "modelAsString": true, + "values": [ + { + "name": "Succeeded", + "value": "Succeeded", + "description": "Resource has been created." + }, + { + "name": "Failed", + "value": "Failed", + "description": "Resource creation failed." + }, + { + "name": "Canceled", + "value": "Canceled", + "description": "Resource creation was canceled." + }, + { + "name": "Provisioning", + "value": "Provisioning", + "description": "The resource is being provisioned" + }, + { + "name": "Updating", + "value": "Updating", + "description": "The resource is updating" + }, + { + "name": "Deleting", + "value": "Deleting", + "description": "The resource is being deleted" + }, + { + "name": "Accepted", + "value": "Accepted", + "description": "The resource create request has been accepted" + } + ] + }, + "readOnly": true + } + }, + "parameters": {} +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/readme.md b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/readme.md new file mode 100644 index 00000000000..3c4a3d353b9 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/readme.md @@ -0,0 +1,45 @@ +# Widget + +> see https://aka.ms/autorest + +This is the AutoRest configuration file for Widget. + +## Configuration + +### Basic Information + +This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. +This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we +use the native TypeSpec code generation configured in the tspconfig.yaml file. + +```yaml +openapi-type: arm +openapi-subtype: rpaas +tag: package-2021-11-01 +``` + +### Tag: package-2021-11-01 + +These settings apply only when `--tag=package-2021-11-01` is specified on the command line. + +```yaml $(tag) == 'package-2021-11-01' +input-file: + - stable/2021-11-01/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +### Tag: package-2021-10-01-preview + +These settings apply only when `--tag=package-2021-10-01-preview` is specified on the command line. + +```yaml $(tag) == 'package-2021-10-01-preview' +input-file: + - preview/2021-10-01-preview/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +--- diff --git a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/shared.tsp new file mode 100644 index 00000000000..1b94bb70503 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/shared.tsp @@ -0,0 +1,8 @@ +@doc("Faked shared model") +model FakedSharedModel { + @doc("The tag.") + tag: string; + + @doc("The created date.") + createdAt: utcDateTime; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/stable/2021-11-01/widget.json b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/stable/2021-11-01/widget.json new file mode 100644 index 00000000000..22560a933ca --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/stable/2021-11-01/widget.json @@ -0,0 +1,1045 @@ +{ + "swagger": "2.0", + "info": { + "title": "Widget", + "version": "2021-11-01", + "description": "Microsoft.Widget Resource Provider management API.", + "x-typespec-generated": [ + { + "emitter": "@azure-tools/typespec-autorest" + } + ] + }, + "schemes": [ + "https" + ], + "host": "management.azure.com", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "security": [ + { + "azure_auth": [ + "user_impersonation" + ] + } + ], + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "description": "Azure Active Directory OAuth2 Flow.", + "flow": "implicit", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "tags": [ + { + "name": "Operations" + }, + { + "name": "Employees" + }, + { + "name": "BadgeAssignments" + } + ], + "paths": { + "/providers/Microsoft.Widget/operations": { + "get": { + "operationId": "Operations_List", + "tags": [ + "Operations" + ], + "description": "List the operations for the provider", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/OperationListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Widget/employees": { + "get": { + "operationId": "Employees_ListBySubscription", + "tags": [ + "Employees" + ], + "description": "List Employee resources by subscription ID", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/EmployeeListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/badgeAssignments": { + "get": { + "operationId": "BadgeAssignments_ListByParent", + "tags": [ + "BadgeAssignments" + ], + "description": "List BadgeAssignment resources by resource group", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/BadgeAssignmentListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/badgeAssignments/{badgeAssignmentName}": { + "get": { + "operationId": "BadgeAssignments_Get", + "tags": [ + "BadgeAssignments" + ], + "description": "Get a BadgeAssignment", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "badgeAssignmentName", + "in": "path", + "description": "The name of the BadgeAssignment", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/BadgeAssignment" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + }, + "put": { + "operationId": "BadgeAssignments_CreateOrUpdate", + "tags": [ + "BadgeAssignments" + ], + "description": "Create a BadgeAssignment", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "badgeAssignmentName", + "in": "path", + "description": "The name of the BadgeAssignment", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + }, + { + "name": "resource", + "in": "body", + "description": "Resource create parameters.", + "required": true, + "schema": { + "$ref": "#/definitions/BadgeAssignment" + } + } + ], + "responses": { + "200": { + "description": "Resource 'BadgeAssignment' update operation succeeded", + "schema": { + "$ref": "#/definitions/BadgeAssignment" + } + }, + "201": { + "description": "Resource 'BadgeAssignment' create operation succeeded", + "schema": { + "$ref": "#/definitions/BadgeAssignment" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-long-running-operation": true + }, + "patch": { + "operationId": "BadgeAssignments_Update", + "tags": [ + "BadgeAssignments" + ], + "description": "Update a BadgeAssignment", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "badgeAssignmentName", + "in": "path", + "description": "The name of the BadgeAssignment", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + }, + { + "name": "properties", + "in": "body", + "description": "The resource properties to be updated.", + "required": true, + "schema": { + "$ref": "#/definitions/BadgeAssignmentUpdate" + } + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/BadgeAssignment" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + }, + "delete": { + "operationId": "BadgeAssignments_Delete", + "tags": [ + "BadgeAssignments" + ], + "description": "Delete a BadgeAssignment", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "badgeAssignmentName", + "in": "path", + "description": "The name of the BadgeAssignment", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "202": { + "description": "Resource deletion accepted.", + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "204": { + "description": "Resource does not exist." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees": { + "get": { + "operationId": "Employees_ListByResourceGroup", + "tags": [ + "Employees" + ], + "description": "List Employee resources by resource group", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/EmployeeListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}": { + "get": { + "operationId": "Employees_Get", + "tags": [ + "Employees" + ], + "description": "Get a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + }, + "put": { + "operationId": "Employees_CreateOrUpdate", + "tags": [ + "Employees" + ], + "description": "Create a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + }, + { + "name": "resource", + "in": "body", + "description": "Resource create parameters.", + "required": true, + "schema": { + "$ref": "#/definitions/Employee" + } + } + ], + "responses": { + "200": { + "description": "Resource 'Employee' update operation succeeded", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "201": { + "description": "Resource 'Employee' create operation succeeded", + "schema": { + "$ref": "#/definitions/Employee" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-long-running-operation": true + }, + "patch": { + "operationId": "Employees_Update", + "tags": [ + "Employees" + ], + "description": "Update a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + }, + { + "name": "properties", + "in": "body", + "description": "The resource properties to be updated.", + "required": true, + "schema": { + "$ref": "#/definitions/EmployeeUpdate" + } + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + }, + "delete": { + "operationId": "Employees_Delete", + "tags": [ + "Employees" + ], + "description": "Delete a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "202": { + "description": "Resource deletion accepted.", + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "204": { + "description": "Resource does not exist." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}/exportData": { + "post": { + "operationId": "Employees_ExportData", + "tags": [ + "Employees" + ], + "description": "Export employee data", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/ExportResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + } + } + }, + "definitions": { + "Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate": { + "type": "object", + "description": "Managed service identity (system assigned and/or user assigned identities)", + "properties": { + "type": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentityType", + "description": "The type of managed identity assigned to this resource." + }, + "userAssignedIdentities": { + "type": "object", + "description": "The identities assigned to this resource by the user.", + "additionalProperties": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/UserAssignedIdentity", + "x-nullable": true + } + } + } + }, + "Azure.ResourceManager.CommonTypes.TrackedResourceUpdate": { + "type": "object", + "title": "Tracked Resource", + "description": "The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'", + "properties": { + "tags": { + "type": "object", + "description": "Resource tags.", + "additionalProperties": { + "type": "string" + } + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/Resource" + } + ] + }, + "BadgeAssignment": { + "type": "object", + "description": "Badge assignment extension resource", + "properties": { + "properties": { + "$ref": "#/definitions/BadgeAssignmentProperties", + "description": "The resource-specific properties for this resource." + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ProxyResource" + } + ] + }, + "BadgeAssignmentListResult": { + "type": "object", + "description": "The response of a BadgeAssignment list operation.", + "properties": { + "value": { + "type": "array", + "description": "The BadgeAssignment items on this page", + "items": { + "$ref": "#/definitions/BadgeAssignment" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "BadgeAssignmentProperties": { + "type": "object", + "description": "Badge assignment properties", + "properties": { + "badgeId": { + "type": "string", + "description": "Identifier of the badge." + }, + "assignedDate": { + "type": "string", + "format": "date", + "description": "The date when the badge was assigned." + }, + "isActive": { + "type": "boolean", + "description": "Indicates whether the badge assignment is active." + }, + "provisioningState": { + "$ref": "#/definitions/ProvisioningState", + "description": "The status of the last operation.", + "readOnly": true + } + }, + "required": [ + "badgeId" + ] + }, + "BadgeAssignmentPropertiesUpdate": { + "type": "object", + "description": "Badge assignment properties", + "properties": { + "badgeId": { + "type": "string", + "description": "Identifier of the badge." + }, + "assignedDate": { + "type": "string", + "format": "date", + "description": "The date when the badge was assigned." + }, + "isActive": { + "type": "boolean", + "description": "Indicates whether the badge assignment is active." + } + } + }, + "BadgeAssignmentUpdate": { + "type": "object", + "description": "Badge assignment extension resource", + "properties": { + "properties": { + "$ref": "#/definitions/BadgeAssignmentPropertiesUpdate", + "description": "The resource-specific properties for this resource." + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ProxyResource" + } + ] + }, + "Employee": { + "type": "object", + "description": "Employee resource", + "properties": { + "properties": { + "$ref": "#/definitions/EmployeeProperties", + "description": "The resource-specific properties for this resource." + }, + "identity": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentity", + "description": "The managed service identities assigned to this resource." + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/TrackedResource" + } + ] + }, + "EmployeeListResult": { + "type": "object", + "description": "The response of a Employee list operation.", + "properties": { + "value": { + "type": "array", + "description": "The Employee items on this page", + "items": { + "$ref": "#/definitions/Employee" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "EmployeeProperties": { + "type": "object", + "description": "Employee properties", + "properties": { + "age": { + "type": "integer", + "format": "int32", + "description": "Age of employee" + }, + "city": { + "type": "string", + "description": "City of employee" + }, + "email": { + "type": "string", + "description": "Email of employee" + }, + "department": { + "type": "string", + "description": "Department of employee" + }, + "statusCode": { + "type": "string", + "description": "Status code of employee" + }, + "profile": { + "type": "string", + "format": "base64url", + "description": "Profile of employee" + }, + "assets": { + "type": "array", + "description": "The assets belong to the employee.", + "items": { + "type": "string" + } + }, + "provisioningState": { + "$ref": "#/definitions/ProvisioningState", + "description": "The status of the last operation.", + "readOnly": true + } + }, + "required": [ + "assets" + ] + }, + "EmployeePropertiesUpdate": { + "type": "object", + "description": "Employee properties", + "properties": { + "age": { + "type": "integer", + "format": "int32", + "description": "Age of employee" + }, + "city": { + "type": "string", + "description": "City of employee" + }, + "email": { + "type": "string", + "description": "Email of employee" + }, + "department": { + "type": "string", + "description": "Department of employee" + }, + "statusCode": { + "type": "string", + "description": "Status code of employee" + }, + "profile": { + "type": "string", + "format": "base64url", + "description": "Profile of employee" + }, + "assets": { + "type": "array", + "description": "The assets belong to the employee.", + "items": { + "type": "string" + } + } + } + }, + "EmployeeUpdate": { + "type": "object", + "description": "Employee resource", + "properties": { + "properties": { + "$ref": "#/definitions/EmployeePropertiesUpdate", + "description": "The resource-specific properties for this resource." + }, + "identity": { + "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate", + "description": "The managed service identities assigned to this resource." + } + }, + "allOf": [ + { + "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.TrackedResourceUpdate" + } + ] + }, + "ExportResult": { + "type": "object", + "description": "Export result model", + "properties": { + "data": { + "type": "string", + "description": "Exported data" + } + } + }, + "MoveRequest": { + "type": "object", + "description": "Employee move request", + "properties": { + "from": { + "type": "string", + "description": "The moving from location" + }, + "to": { + "type": "string", + "description": "The moving to location" + } + }, + "required": [ + "from", + "to" + ] + }, + "MoveResponse": { + "type": "object", + "description": "Employee move response", + "properties": { + "movingStatus": { + "type": "string", + "description": "The status of the move" + } + }, + "required": [ + "movingStatus" + ] + }, + "ProvisioningState": { + "type": "string", + "description": "The resource provisioning state.", + "enum": [ + "Succeeded", + "Failed", + "Canceled", + "Provisioning", + "Updating", + "Deleting", + "Accepted" + ], + "x-ms-enum": { + "name": "ProvisioningState", + "modelAsString": true, + "values": [ + { + "name": "Succeeded", + "value": "Succeeded", + "description": "Resource has been created." + }, + { + "name": "Failed", + "value": "Failed", + "description": "Resource creation failed." + }, + { + "name": "Canceled", + "value": "Canceled", + "description": "Resource creation was canceled." + }, + { + "name": "Provisioning", + "value": "Provisioning", + "description": "The resource is being provisioned" + }, + { + "name": "Updating", + "value": "Updating", + "description": "The resource is updating" + }, + { + "name": "Deleting", + "value": "Deleting", + "description": "The resource is being deleted" + }, + { + "name": "Accepted", + "value": "Accepted", + "description": "The resource create request has been accepted" + } + ] + }, + "readOnly": true + } + }, + "parameters": {} +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/tspconfig.yaml new file mode 100644 index 00000000000..9c97da201c0 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/tspconfig.yaml @@ -0,0 +1,44 @@ +parameters: + "service-dir": + default: "sdk/widget" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + use-read-only-status-schema: true + emitter-output-dir: "{project-root}" + output-file: "{version-status}/{version}/widget.json" + arm-types-dir: "{project-root}/../../../../common-types/resource-management" + "@azure-typespec/http-client-csharp-mgmt": + namespace: "Azure.ResourceManager.Widget" + emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" + "@azure-tools/typespec-python": + emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" + namespace: "azure.mgmt.widget" + generate-test: true + generate-sample: true + flavor: "azure" + "@azure-tools/typespec-java": + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" + namespace: "com.azure.resourcemanager.widget" + service-name: "Widget" # human-readable service name, whitespace allowed + flavor: azure + "@azure-tools/typespec-ts": + emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" + flavor: azure + experimental-extensible-enums: true + package-details: + name: "@azure/arm-widget" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/widget" + emitter-output-dir: "{output-dir}/{service-dir}/armwidget" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/main.tsp new file mode 100644 index 00000000000..aa109170c02 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/main.tsp @@ -0,0 +1,31 @@ +import "@typespec/http"; +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Http; +using TypeSpec.Rest; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +/** Microsoft.Widget Resource Provider management API. */ +@armProviderNamespace +@service(#{ title: "Widget" }) +@versioned(Microsoft.Widget.Versions) +namespace Microsoft.Widget; + +/** The available API versions. */ +enum Versions { + /** 2021-11-01 version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + v2021_11_01: "2021-11-01", + + /** 2024-10-01-preview version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + @previewVersion + v2024_10_01_preview: "2024-10-01-preview", +} + +interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/package.json b/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/package.json new file mode 100644 index 00000000000..45377b8ad61 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/package.json @@ -0,0 +1,50 @@ +{ + "name": "azure-rest-api-specs", + "devDependencies": { + "@azure-tools/openai-typespec": "1.11.0", + "@azure-tools/spec-gen-sdk": "~0.9.1", + "@azure-tools/specs-shared": "file:.github/shared", + "@azure-tools/typespec-apiview": "0.7.2", + "@azure-tools/typespec-metadata": "0.1.1", + "@azure-tools/typespec-autorest": "0.66.0", + "@azure-tools/typespec-azure-core": "0.66.0", + "@azure-tools/typespec-azure-portal-core": "0.66.0", + "@azure-tools/typespec-azure-resource-manager": "0.66.0", + "@azure-tools/typespec-azure-rulesets": "0.66.0", + "@azure-tools/typespec-client-generator-cli": "0.31.0", + "@azure-tools/typespec-client-generator-core": "0.66.3", + "@azure-tools/typespec-liftr-base": "0.13.0", + "@autorest/openapi-to-typespec": "0.11.13", + "@azure/avocado": "0.10.5", + "@azure/oad": "0.12.4", + "@microsoft.azure/openapi-validator": "2.2.4", + "@microsoft.azure/openapi-validator-core": "1.0.7", + "@microsoft.azure/openapi-validator-rulesets": "2.2.5", + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/sse": "0.80.0", + "@typespec/events": "0.80.0", + "@typespec/openapi": "1.10.0", + "@typespec/openapi3": "1.10.0", + "@typespec/prettier-plugin-typespec": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/streams": "0.80.0", + "@typespec/versioning": "0.80.0", + "@typespec/xml": "0.80.0", + "azure-rest-api-specs-eng-tools": "file:eng/tools", + "oav": "4.0.3", + "prettier": "3.8.1", + "typescript": "~5.9.2" + }, + "overrides": { + "@typespec/asset-emitter": "0.79.1", + "get-uri": "^6.0.5", + "minimatch@^3.0.0": "^3.1.5", + "superagent": "^10.2.3" + }, + "engines": { + "node": ">=20.0.0", + "npm": ">=10.0.0" + }, + "private": true +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/readme.md b/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/readme.md new file mode 100644 index 00000000000..3c4a3d353b9 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/readme.md @@ -0,0 +1,45 @@ +# Widget + +> see https://aka.ms/autorest + +This is the AutoRest configuration file for Widget. + +## Configuration + +### Basic Information + +This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. +This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we +use the native TypeSpec code generation configured in the tspconfig.yaml file. + +```yaml +openapi-type: arm +openapi-subtype: rpaas +tag: package-2021-11-01 +``` + +### Tag: package-2021-11-01 + +These settings apply only when `--tag=package-2021-11-01` is specified on the command line. + +```yaml $(tag) == 'package-2021-11-01' +input-file: + - stable/2021-11-01/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +### Tag: package-2021-10-01-preview + +These settings apply only when `--tag=package-2021-10-01-preview` is specified on the command line. + +```yaml $(tag) == 'package-2021-10-01-preview' +input-file: + - preview/2021-10-01-preview/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +--- diff --git a/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/shared.tsp new file mode 100644 index 00000000000..1b94bb70503 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/shared.tsp @@ -0,0 +1,8 @@ +@doc("Faked shared model") +model FakedSharedModel { + @doc("The tag.") + tag: string; + + @doc("The created date.") + createdAt: utcDateTime; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/tspconfig.yaml new file mode 100644 index 00000000000..9c97da201c0 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/tspconfig.yaml @@ -0,0 +1,44 @@ +parameters: + "service-dir": + default: "sdk/widget" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + use-read-only-status-schema: true + emitter-output-dir: "{project-root}" + output-file: "{version-status}/{version}/widget.json" + arm-types-dir: "{project-root}/../../../../common-types/resource-management" + "@azure-typespec/http-client-csharp-mgmt": + namespace: "Azure.ResourceManager.Widget" + emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" + "@azure-tools/typespec-python": + emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" + namespace: "azure.mgmt.widget" + generate-test: true + generate-sample: true + flavor: "azure" + "@azure-tools/typespec-java": + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" + namespace: "com.azure.resourcemanager.widget" + service-name: "Widget" # human-readable service name, whitespace allowed + flavor: azure + "@azure-tools/typespec-ts": + emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" + flavor: azure + experimental-extensible-enums: true + package-details: + name: "@azure/arm-widget" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/widget" + emitter-output-dir: "{output-dir}/{service-dir}/armwidget" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/employee.tsp new file mode 100644 index 00000000000..5d262735ece --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/employee.tsp @@ -0,0 +1,99 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.Core; +using Azure.ResourceManager; + +namespace Microsoft.Widget; + +/** Employee resource */ +model Employee is TrackedResource { + ...ResourceNameParameter; + ...ManagedServiceIdentityProperty; +} + +/** Employee properties */ +model EmployeeProperties { + /** Age of employee */ + age?: int32; + + /** City of employee */ + city?: string; + + /** Email of employee */ + email?: string; + + /** Department of employee */ + department?: string; + + /** Status code of employee */ + statusCode?: string; + + /** Profile of employee */ + @encode("base64url") + profile?: bytes; + + /** The assets belong to the employee. */ + assets: string[]; + + /** The status of the last operation. */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; +} + +/** Export result model */ +model ExportResult { + /** Exported data */ + data?: string; +} + +/** Employee move request */ +model MoveRequest { + /** The moving from location */ + from: string; + + /** The moving to location */ + to: string; +} + +/** Employee move response */ +model MoveResponse { + /** The status of the move */ + movingStatus: string; +} + +/** The resource provisioning state. */ +@lroStatus +union ProvisioningState { + ResourceProvisioningState, + + /** The resource is being provisioned */ + Provisioning: "Provisioning", + + /** The resource is updating */ + Updating: "Updating", + + /** The resource is being deleted */ + Deleting: "Deleting", + + /** The resource create request has been accepted */ + Accepted: "Accepted", + + string, +} + +@armResourceOperations +interface Employees { + get is ArmResourceRead; + createOrUpdate is ArmResourceCreateOrReplaceAsync; + delete is ArmResourceDeleteWithoutOkAsync; + listByResourceGroup is ArmResourceListByParent; + listBySubscription is ArmListBySubscription; + + /** Export employee data */ + exportData is ArmResourceActionSync; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/main.tsp new file mode 100644 index 00000000000..16a5a51b5ca --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/main.tsp @@ -0,0 +1,32 @@ +import "@typespec/http"; +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "./employee.tsp"; + +using TypeSpec.Http; +using TypeSpec.Rest; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +/** Microsoft.Widget Resource Provider management API. */ +@armProviderNamespace +@service(#{ title: "Widget" }) +@versioned(Microsoft.Widget.Versions) +namespace Microsoft.Widget; + +/** The available API versions. */ +enum Versions { + /** 2021-11-01 version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + v2021_11_01: "2021-11-01", + + /** 2024-10-01-preview version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + @previewVersion + v2024_10_01_preview: "2024-10-01-preview", +} + +interface Operations extends Azure.ResourceManager.Operations {} \ No newline at end of file diff --git a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/package.json b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/package.json new file mode 100644 index 00000000000..45377b8ad61 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/package.json @@ -0,0 +1,50 @@ +{ + "name": "azure-rest-api-specs", + "devDependencies": { + "@azure-tools/openai-typespec": "1.11.0", + "@azure-tools/spec-gen-sdk": "~0.9.1", + "@azure-tools/specs-shared": "file:.github/shared", + "@azure-tools/typespec-apiview": "0.7.2", + "@azure-tools/typespec-metadata": "0.1.1", + "@azure-tools/typespec-autorest": "0.66.0", + "@azure-tools/typespec-azure-core": "0.66.0", + "@azure-tools/typespec-azure-portal-core": "0.66.0", + "@azure-tools/typespec-azure-resource-manager": "0.66.0", + "@azure-tools/typespec-azure-rulesets": "0.66.0", + "@azure-tools/typespec-client-generator-cli": "0.31.0", + "@azure-tools/typespec-client-generator-core": "0.66.3", + "@azure-tools/typespec-liftr-base": "0.13.0", + "@autorest/openapi-to-typespec": "0.11.13", + "@azure/avocado": "0.10.5", + "@azure/oad": "0.12.4", + "@microsoft.azure/openapi-validator": "2.2.4", + "@microsoft.azure/openapi-validator-core": "1.0.7", + "@microsoft.azure/openapi-validator-rulesets": "2.2.5", + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/sse": "0.80.0", + "@typespec/events": "0.80.0", + "@typespec/openapi": "1.10.0", + "@typespec/openapi3": "1.10.0", + "@typespec/prettier-plugin-typespec": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/streams": "0.80.0", + "@typespec/versioning": "0.80.0", + "@typespec/xml": "0.80.0", + "azure-rest-api-specs-eng-tools": "file:eng/tools", + "oav": "4.0.3", + "prettier": "3.8.1", + "typescript": "~5.9.2" + }, + "overrides": { + "@typespec/asset-emitter": "0.79.1", + "get-uri": "^6.0.5", + "minimatch@^3.0.0": "^3.1.5", + "superagent": "^10.2.3" + }, + "engines": { + "node": ">=20.0.0", + "npm": ">=10.0.0" + }, + "private": true +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/preview/2024-10-01-preview/widget.json b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/preview/2024-10-01-preview/widget.json new file mode 100644 index 00000000000..f82701d4271 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/preview/2024-10-01-preview/widget.json @@ -0,0 +1,548 @@ +{ + "swagger": "2.0", + "info": { + "title": "Widget", + "version": "2024-10-01-preview", + "description": "Microsoft.Widget Resource Provider management API.", + "x-typespec-generated": [ + { + "emitter": "@azure-tools/typespec-autorest" + } + ] + }, + "schemes": [ + "https" + ], + "host": "management.azure.com", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "security": [ + { + "azure_auth": [ + "user_impersonation" + ] + } + ], + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "description": "Azure Active Directory OAuth2 Flow.", + "flow": "implicit", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "tags": [ + { + "name": "Operations" + }, + { + "name": "Employees" + } + ], + "paths": { + "/providers/Microsoft.Widget/operations": { + "get": { + "operationId": "Operations_List", + "tags": [ + "Operations" + ], + "description": "List the operations for the provider", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/OperationListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Widget/employees": { + "get": { + "operationId": "Employees_ListBySubscription", + "tags": [ + "Employees" + ], + "description": "List Employee resources by subscription ID", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/EmployeeListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees": { + "get": { + "operationId": "Employees_ListByResourceGroup", + "tags": [ + "Employees" + ], + "description": "List Employee resources by resource group", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/EmployeeListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}": { + "get": { + "operationId": "Employees_Get", + "tags": [ + "Employees" + ], + "description": "Get a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + }, + "put": { + "operationId": "Employees_CreateOrUpdate", + "tags": [ + "Employees" + ], + "description": "Create a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + }, + { + "name": "resource", + "in": "body", + "description": "Resource create parameters.", + "required": true, + "schema": { + "$ref": "#/definitions/Employee" + } + } + ], + "responses": { + "200": { + "description": "Resource 'Employee' update operation succeeded", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "201": { + "description": "Resource 'Employee' create operation succeeded", + "schema": { + "$ref": "#/definitions/Employee" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-long-running-operation": true + }, + "delete": { + "operationId": "Employees_Delete", + "tags": [ + "Employees" + ], + "description": "Delete a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "202": { + "description": "Resource deletion accepted.", + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "204": { + "description": "Resource does not exist." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}/exportData": { + "post": { + "operationId": "Employees_ExportData", + "tags": [ + "Employees" + ], + "description": "Export employee data", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/ExportResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + } + } + }, + "definitions": { + "Employee": { + "type": "object", + "description": "Employee resource", + "properties": { + "properties": { + "$ref": "#/definitions/EmployeeProperties", + "description": "The resource-specific properties for this resource." + }, + "identity": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentity", + "description": "The managed service identities assigned to this resource." + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/TrackedResource" + } + ] + }, + "EmployeeListResult": { + "type": "object", + "description": "The response of a Employee list operation.", + "properties": { + "value": { + "type": "array", + "description": "The Employee items on this page", + "items": { + "$ref": "#/definitions/Employee" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "EmployeeProperties": { + "type": "object", + "description": "Employee properties", + "properties": { + "age": { + "type": "integer", + "format": "int32", + "description": "Age of employee" + }, + "city": { + "type": "string", + "description": "City of employee" + }, + "email": { + "type": "string", + "description": "Email of employee" + }, + "department": { + "type": "string", + "description": "Department of employee" + }, + "statusCode": { + "type": "string", + "description": "Status code of employee" + }, + "profile": { + "type": "string", + "format": "base64url", + "description": "Profile of employee" + }, + "assets": { + "type": "array", + "description": "The assets belong to the employee.", + "items": { + "type": "string" + } + }, + "provisioningState": { + "$ref": "#/definitions/ProvisioningState", + "description": "The status of the last operation.", + "readOnly": true + } + }, + "required": [ + "assets" + ] + }, + "ExportResult": { + "type": "object", + "description": "Export result model", + "properties": { + "data": { + "type": "string", + "description": "Exported data" + } + } + }, + "MoveRequest": { + "type": "object", + "description": "Employee move request", + "properties": { + "from": { + "type": "string", + "description": "The moving from location" + }, + "to": { + "type": "string", + "description": "The moving to location" + } + }, + "required": [ + "from", + "to" + ] + }, + "MoveResponse": { + "type": "object", + "description": "Employee move response", + "properties": { + "movingStatus": { + "type": "string", + "description": "The status of the move" + } + }, + "required": [ + "movingStatus" + ] + }, + "ProvisioningState": { + "type": "string", + "description": "The resource provisioning state.", + "enum": [ + "Succeeded", + "Failed", + "Canceled", + "Provisioning", + "Updating", + "Deleting", + "Accepted" + ], + "x-ms-enum": { + "name": "ProvisioningState", + "modelAsString": true, + "values": [ + { + "name": "Succeeded", + "value": "Succeeded", + "description": "Resource has been created." + }, + { + "name": "Failed", + "value": "Failed", + "description": "Resource creation failed." + }, + { + "name": "Canceled", + "value": "Canceled", + "description": "Resource creation was canceled." + }, + { + "name": "Provisioning", + "value": "Provisioning", + "description": "The resource is being provisioned" + }, + { + "name": "Updating", + "value": "Updating", + "description": "The resource is updating" + }, + { + "name": "Deleting", + "value": "Deleting", + "description": "The resource is being deleted" + }, + { + "name": "Accepted", + "value": "Accepted", + "description": "The resource create request has been accepted" + } + ] + }, + "readOnly": true + } + }, + "parameters": {} +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/readme.md b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/readme.md new file mode 100644 index 00000000000..3c4a3d353b9 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/readme.md @@ -0,0 +1,45 @@ +# Widget + +> see https://aka.ms/autorest + +This is the AutoRest configuration file for Widget. + +## Configuration + +### Basic Information + +This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. +This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we +use the native TypeSpec code generation configured in the tspconfig.yaml file. + +```yaml +openapi-type: arm +openapi-subtype: rpaas +tag: package-2021-11-01 +``` + +### Tag: package-2021-11-01 + +These settings apply only when `--tag=package-2021-11-01` is specified on the command line. + +```yaml $(tag) == 'package-2021-11-01' +input-file: + - stable/2021-11-01/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +### Tag: package-2021-10-01-preview + +These settings apply only when `--tag=package-2021-10-01-preview` is specified on the command line. + +```yaml $(tag) == 'package-2021-10-01-preview' +input-file: + - preview/2021-10-01-preview/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +--- diff --git a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/shared.tsp new file mode 100644 index 00000000000..1b94bb70503 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/shared.tsp @@ -0,0 +1,8 @@ +@doc("Faked shared model") +model FakedSharedModel { + @doc("The tag.") + tag: string; + + @doc("The created date.") + createdAt: utcDateTime; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/stable/2021-11-01/widget.json b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/stable/2021-11-01/widget.json new file mode 100644 index 00000000000..f2c77c3a866 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/stable/2021-11-01/widget.json @@ -0,0 +1,548 @@ +{ + "swagger": "2.0", + "info": { + "title": "Widget", + "version": "2021-11-01", + "description": "Microsoft.Widget Resource Provider management API.", + "x-typespec-generated": [ + { + "emitter": "@azure-tools/typespec-autorest" + } + ] + }, + "schemes": [ + "https" + ], + "host": "management.azure.com", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "security": [ + { + "azure_auth": [ + "user_impersonation" + ] + } + ], + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "description": "Azure Active Directory OAuth2 Flow.", + "flow": "implicit", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "tags": [ + { + "name": "Operations" + }, + { + "name": "Employees" + } + ], + "paths": { + "/providers/Microsoft.Widget/operations": { + "get": { + "operationId": "Operations_List", + "tags": [ + "Operations" + ], + "description": "List the operations for the provider", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/OperationListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Widget/employees": { + "get": { + "operationId": "Employees_ListBySubscription", + "tags": [ + "Employees" + ], + "description": "List Employee resources by subscription ID", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/EmployeeListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees": { + "get": { + "operationId": "Employees_ListByResourceGroup", + "tags": [ + "Employees" + ], + "description": "List Employee resources by resource group", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/EmployeeListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}": { + "get": { + "operationId": "Employees_Get", + "tags": [ + "Employees" + ], + "description": "Get a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + }, + "put": { + "operationId": "Employees_CreateOrUpdate", + "tags": [ + "Employees" + ], + "description": "Create a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + }, + { + "name": "resource", + "in": "body", + "description": "Resource create parameters.", + "required": true, + "schema": { + "$ref": "#/definitions/Employee" + } + } + ], + "responses": { + "200": { + "description": "Resource 'Employee' update operation succeeded", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "201": { + "description": "Resource 'Employee' create operation succeeded", + "schema": { + "$ref": "#/definitions/Employee" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-long-running-operation": true + }, + "delete": { + "operationId": "Employees_Delete", + "tags": [ + "Employees" + ], + "description": "Delete a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "202": { + "description": "Resource deletion accepted.", + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "204": { + "description": "Resource does not exist." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}/exportData": { + "post": { + "operationId": "Employees_ExportData", + "tags": [ + "Employees" + ], + "description": "Export employee data", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/ExportResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + } + } + }, + "definitions": { + "Employee": { + "type": "object", + "description": "Employee resource", + "properties": { + "properties": { + "$ref": "#/definitions/EmployeeProperties", + "description": "The resource-specific properties for this resource." + }, + "identity": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentity", + "description": "The managed service identities assigned to this resource." + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/TrackedResource" + } + ] + }, + "EmployeeListResult": { + "type": "object", + "description": "The response of a Employee list operation.", + "properties": { + "value": { + "type": "array", + "description": "The Employee items on this page", + "items": { + "$ref": "#/definitions/Employee" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "EmployeeProperties": { + "type": "object", + "description": "Employee properties", + "properties": { + "age": { + "type": "integer", + "format": "int32", + "description": "Age of employee" + }, + "city": { + "type": "string", + "description": "City of employee" + }, + "email": { + "type": "string", + "description": "Email of employee" + }, + "department": { + "type": "string", + "description": "Department of employee" + }, + "statusCode": { + "type": "string", + "description": "Status code of employee" + }, + "profile": { + "type": "string", + "format": "base64url", + "description": "Profile of employee" + }, + "assets": { + "type": "array", + "description": "The assets belong to the employee.", + "items": { + "type": "string" + } + }, + "provisioningState": { + "$ref": "#/definitions/ProvisioningState", + "description": "The status of the last operation.", + "readOnly": true + } + }, + "required": [ + "assets" + ] + }, + "ExportResult": { + "type": "object", + "description": "Export result model", + "properties": { + "data": { + "type": "string", + "description": "Exported data" + } + } + }, + "MoveRequest": { + "type": "object", + "description": "Employee move request", + "properties": { + "from": { + "type": "string", + "description": "The moving from location" + }, + "to": { + "type": "string", + "description": "The moving to location" + } + }, + "required": [ + "from", + "to" + ] + }, + "MoveResponse": { + "type": "object", + "description": "Employee move response", + "properties": { + "movingStatus": { + "type": "string", + "description": "The status of the move" + } + }, + "required": [ + "movingStatus" + ] + }, + "ProvisioningState": { + "type": "string", + "description": "The resource provisioning state.", + "enum": [ + "Succeeded", + "Failed", + "Canceled", + "Provisioning", + "Updating", + "Deleting", + "Accepted" + ], + "x-ms-enum": { + "name": "ProvisioningState", + "modelAsString": true, + "values": [ + { + "name": "Succeeded", + "value": "Succeeded", + "description": "Resource has been created." + }, + { + "name": "Failed", + "value": "Failed", + "description": "Resource creation failed." + }, + { + "name": "Canceled", + "value": "Canceled", + "description": "Resource creation was canceled." + }, + { + "name": "Provisioning", + "value": "Provisioning", + "description": "The resource is being provisioned" + }, + { + "name": "Updating", + "value": "Updating", + "description": "The resource is updating" + }, + { + "name": "Deleting", + "value": "Deleting", + "description": "The resource is being deleted" + }, + { + "name": "Accepted", + "value": "Accepted", + "description": "The resource create request has been accepted" + } + ] + }, + "readOnly": true + } + }, + "parameters": {} +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/tspconfig.yaml new file mode 100644 index 00000000000..9c97da201c0 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/tspconfig.yaml @@ -0,0 +1,44 @@ +parameters: + "service-dir": + default: "sdk/widget" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + use-read-only-status-schema: true + emitter-output-dir: "{project-root}" + output-file: "{version-status}/{version}/widget.json" + arm-types-dir: "{project-root}/../../../../common-types/resource-management" + "@azure-typespec/http-client-csharp-mgmt": + namespace: "Azure.ResourceManager.Widget" + emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" + "@azure-tools/typespec-python": + emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" + namespace: "azure.mgmt.widget" + generate-test: true + generate-sample: true + flavor: "azure" + "@azure-tools/typespec-java": + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" + namespace: "com.azure.resourcemanager.widget" + service-name: "Widget" # human-readable service name, whitespace allowed + flavor: azure + "@azure-tools/typespec-ts": + emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" + flavor: azure + experimental-extensible-enums: true + package-details: + name: "@azure/arm-widget" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/widget" + emitter-output-dir: "{output-dir}/{service-dir}/armwidget" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/003001-dataplane-async-delete-op/inma.tsp b/.github/azure-typespec-author/evaluate/fixtures/003001-dataplane-async-delete-op/inma.tsp new file mode 100644 index 00000000000..2fe65dfdac7 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/003001-dataplane-async-delete-op/inma.tsp @@ -0,0 +1,943 @@ +import "@typespec/rest"; +import "@typespec/openapi"; + +using TypeSpec.Http; +using TypeSpec.Rest; +using Azure.Core; +using Azure.Core.Foundations; +@service(#{ title: "MPCPro Ingestion and Management API" }) +namespace Microsoft.PlanetaryComputer; + +@doc("Generic paged response model") +@friendlyName("{name}PagedResponse", T) +model Page { + @doc("The items on the page") + @pageItems + value: T[]; + + @doc("Link to the next page of results") + @nextLink + nextLink?: url; +} + +@tag("Ingestion Management") +interface Ingestions { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + #suppress "@azure-tools/typespec-azure-core/use-standard-names" "The operation is returning an array." + @doc("Get ingestions of a catalog") + @route("/inma/collections/{collectionId}/ingestions") + @get + @list + list( + ...CollectionParameters, + ...OdataQuery, + ): Page | ErrorResponse; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + @doc("Get the definition of an ingestion") + @route("/inma/collections/{collectionId}/ingestions/{ingestionId}") + @get + get(...IngestionParameters): IngestionDefinition | ErrorResponse; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + @doc("Create a new ingestion") + @route("/inma/collections/{collectionId}/ingestions") + @post + create( + ...CollectionParameters, + + @doc("Definition of the ingestion") + @body + body: IngestionDefinition, + ): { + @doc("Url of the created ingestion") + @header + location: url; + + @statusCode statusCode: 201; + + @doc("Ingestion definition") + @body + _: IngestionDefinition; + } | ErrorResponse; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + @doc("Update an existing ingestion") + @route("/inma/collections/{collectionId}/ingestions/{ingestionId}") + @patch(#{ implicitOptionality: true }) + update( + @doc("Content type for PATCH request") + @header + contentType: "application/merge-patch+json", + + ...IngestionParameters, + + @doc("Ingestion properties to update") + @body + body: IngestionDefinition, + ): { + @statusCode statusCode: 200; + + @body + _: IngestionDefinition; + } | ErrorResponse; +} + +@doc("Microsoft Planetary Computer Pro geo-catalog ingestion creation model") +@parentResource(StacCollection) +@resource("ingestions") +model IngestionDefinition { + @doc("Ingestion id") + @visibility(Lifecycle.Read) + @key("ingestionId") + id: uuid; + + @doc("Ingestion type") + @visibility(Lifecycle.Create, Lifecycle.Read, Lifecycle.Update) + importType: IngestionType; + + @doc("Ingestion name") + displayName?: string; + + @doc("Source catalog URL. Required for StaticCatalog ingestion type") + sourceCatalogUrl?: url; + + @doc("Skip processing existing items in the catalog") + skipExistingItems?: boolean; + + @doc("Keep original source assets") + keepOriginalAssets?: boolean; + + @doc("Ingestion creation time") + @visibility(Lifecycle.Read) + creationTime: utcDateTime; + + @doc("Ingestion status") + @visibility(Lifecycle.Read) + status: IngestionStatus; +} + +@doc("Ingestion type") +union IngestionType { + string, + + @doc("Static STAC Catalog") + StaticCatalog: "StaticCatalog", +} + +@doc("Ingestion status") +union IngestionStatus { + string, + + @doc("Ingestion accepted and ready to be run") + Ready: "Ready", + + @doc("Ingestion is being deleting in the background") + Deleting: "Deleting", +} + +@doc("Ingestion parameters") +model IngestionParameters is CollectionParameters { + @doc("Ingestion id") + @path + ingestionId: uuid; +} + +@tag("Ingestion Management") +interface IngestionRuns { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + #suppress "@azure-tools/typespec-azure-core/use-standard-names" "The operation is returning an array." + @doc("Get the runs of an ingestion") + @route("/inma/collections/{collectionId}/ingestions/{ingestionId}/runs") + @get + @list + list( + ...IngestionParameters, + ...OdataQuery, + ): Page | ErrorResponse; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + @doc("Get a run of an ingestion") + @route("/inma/collections/{collectionId}/ingestions/{ingestionId}/runs/{runId}") + @get + get(...IngestionRunParameters): IngestionRun | ErrorResponse; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + @doc("Create a new run of an ingestion") + @route("/inma/collections/{collectionId}/ingestions/{ingestionId}/runs") + @post + create(...IngestionParameters): { + @doc("Url of the created ingestion run") + @header + location: url; + + @statusCode statusCode: 201; + + @doc("Ingestion run") + @body + _: IngestionRun; + } | ErrorResponse; +} + +@doc("Microsoft Planetary Computer Pro geo-catalog ingestion run") +@resource("runs") +@parentResource(IngestionDefinition) +model IngestionRun { + @doc("Run id") + @key("runId") + @visibility(Lifecycle.Create, Lifecycle.Update, Lifecycle.Read) + id: uuid; + + @doc("Run id which this run is associated to because it has been retried or rerun") + parentRunId?: uuid; + + @doc("Operation") + operation: IngestionRunOperation; + + @doc("Creation time") + creationTime: utcDateTime; + + @doc("URL of the source catalog") + sourceCatalogUrl?: url; + + @doc("Skip any item that already exist in the GeoCatalog") + skipExistingItems?: boolean; + + @doc("Keep original source assets") + keepOriginalAssets?: boolean; +} + +@doc("Microsoft Planetary Computer Pro geo-catalog ingestion run operation") +model IngestionRunOperation { + @doc("Operation id") + id: uuid; + + @doc("Operation status") + status: OperationStatus; + + @doc("The UTC time at which the operation was created") + creationTime: utcDateTime; + + @doc("The history of the operation status in time") + statusHistory: OperationStatusHistoryItem[]; + + @doc("The UTC time at which the operation was started") + startTime?: utcDateTime; + + @doc("The UTC time at which the operation finished its execution") + finishTime?: utcDateTime; + + @doc("The number of total items to be processed") + totalItems: int32; + + @doc("The number of items pending to be processed") + totalPendingItems: int32; + + @doc("The number of items successfully processed") + totalSuccessfulItems: int32; + + @doc("The number of items that have failed to be processed") + totalFailedItems: int32; +} + +@doc("Ingestion run parameters") +model IngestionRunParameters is IngestionParameters { + @doc("Run id") + @path + runId: uuid; +} + +@tag("SpatioTemporal Asset Catalog (STAC) API") +interface StacItems { + /** + * Fetch features of the feature collection with id `collectionId`. + * + * Every feature in a dataset belongs to a collection. A dataset may + * consist of multiple feature collections. A feature collection is often a + * collection of features of a similar type, based on a common schema. + */ + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + @route("/stac/collections/{collectionId}/items") + @get + getFeatures( + ...CollectionParameters, + + /** + * The optional limit parameter recommends the number of items that should be present in the response document. + * + * If the limit parameter value is greater than advertised limit maximum, the server must return the + * maximum possible number of items, rather than responding with an error. + * + * Only items are counted that are on the first level of the collection in the response document. + * Nested objects contained within the explicitly requested items must not be counted. + * + * Minimum = 1. Maximum = 10000. Default = 10. + */ + @query + limit?: int32, + + /** + * Only features that have a geometry that intersects the bounding box are selected. + * The bounding box is provided as four or six numbers, depending on whether the + * coordinate reference system includes a vertical axis (height or depth): + * + * - Lower left corner, coordinate axis 1 + * - Lower left corner, coordinate axis 2 + * - Minimum value, coordinate axis 3 (optional) + * - Upper right corner, coordinate axis 1 + * - Upper right corner, coordinate axis 2 + * - Maximum value, coordinate axis 3 (optional) + * + * The coordinate reference system of the values is WGS 84 longitude/latitude + * (http://www.opengis.net/def/crs/OGC/1.3/CRS84). + * + * For WGS 84 longitude/latitude the values are in most cases the sequence of + * minimum longitude, minimum latitude, maximum longitude and maximum latitude. + * However, in cases where the box spans the antimeridian the first value + * (west-most box edge) is larger than the third value (east-most box edge). + * + * If the vertical axis is included, the third and the sixth number are + * the bottom and the top of the 3-dimensional bounding box. + * + * If a feature has multiple spatial geometry properties, it is the decision of the + * server whether only a single spatial geometry property is used to determine + * the extent or all relevant geometries. + */ + #suppress "@azure-tools/typespec-azure-core/no-query-explode" "This is an existing service operation." + @query("bbox") + @query(#{ explode: true }) + boundingBox?: string[], + + /** + * Either a date-time or an interval, open or closed. Date and time expressions + * adhere to RFC 3339. Open intervals are expressed using double-dots. + * + * Examples: + * + * - A date-time: "2018-02-12T23:20:50Z" + * - A closed interval: "2018-02-12T00:00:00Z/2018-03-18T12:31:12Z" + * - Open intervals: "2018-02-12T00:00:00Z/.." or "../2018-03-18T12:31:12Z" + * + * Only features that have a temporal property that intersects the value of + * `datetime` are selected. + * + * If a feature has multiple temporal properties, it is the decision of the + * server whether only a single temporal property is used to determine + * the extent or all relevant temporal properties. + */ + @query + datetime?: string, + ): StacItemCollection | ErrorResponse; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + @doc("Fetch a single STAC Item") + @route("/stac/collections/{collectionId}/items/{itemId}") + @get + get( + ...CollectionParameters, + + @doc("STAC Item id") + @path + @maxLength(500) + @pattern(".*") + itemId: string, + ): StacItem | ErrorResponse; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + @doc("Create a new STAC item or a set of items in a collection") + @route("/stac/collections/{collectionId}/items") + @post + @pollingOperation(IngestionOperations.get) + create( + ...CollectionParameters, + + /** + * STAC Item or StacItemCollection + * + * Represents a STAC Item or StacItemCollection as defined by the STAC 1.0.0 standard. + * + * **Item**: A GeoJSON Feature that represents a single spatiotemporal asset. + * It includes metadata such as geometry, datetime, and links to related assets. + * Example: A satellite image with its metadata. + * + * **StacItemCollection**: A GeoJSON FeatureCollection that contains multiple Items. + * It is used to group multiple related Items together, such as a collection of satellite images. + * + * This union allows the request body to accept either a single Item or a collection of Items. + */ + #suppress "@azure-tools/typespec-autorest/union-unsupported" "" + #suppress "@azure-tools/typespec-azure-core/no-unnamed-union" "Backcompatibility with existing clients" + @body + body: StacItemOrStacItemCollection, + ): { + @pollingLocation + @doc("Url used to monitor the background operation") + @header + location: url; + + @doc("Url used to monitor the background operation") + @header("operation-location") + operationLocation: url; + + @statusCode statusCode: 202; + + @doc("Operation") + @body + _: Operation; + } | ErrorResponse; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + @doc("Create or replace a STAC item in a collection") + @route("/stac/collections/{collectionId}/items/{itemId}") + @put + @pollingOperation(IngestionOperations.get) + createOrReplace( + ...CollectionParameters, + + @doc("STAC Item id") + @path + @maxLength(500) + @pattern(".*") + itemId: string, + + @doc("STAC Item") + @body + body: StacItem, + ): { + @pollingLocation + @doc("Url used to monitor the background operation") + @header + location: url; + + @doc("Url used to monitor the background operation") + @header("operation-location") + operationLocation: url; + + @statusCode statusCode: 202; + + @doc("Operation") + @body + _: Operation; + } | ErrorResponse; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + @doc("Update a STAC item in a collection") + @route("/stac/collections/{collectionId}/items/{itemId}") + @patch(#{ implicitOptionality: true }) + @pollingOperation(IngestionOperations.get) + update( + @header + @doc("Content type for PATCH request") + contentType: "application/merge-patch+json", + + ...CollectionParameters, + + @doc("STAC Item id") + @path + @maxLength(500) + @pattern(".*") + itemId: string, + + @doc("STAC Item") + @body + body: StacItem, + ): { + @pollingLocation + @doc("Url used to monitor the background operation") + @header + location: url; + + @doc("Url used to monitor the background operation") + @header("operation-location") + operationLocation: url; + + @statusCode statusCode: 202; + + @doc("Operation") + @body + _: Operation; + } | ErrorResponse; +} + +@tag("Ingestion Sources") +interface IngestionSources { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + #suppress "@azure-tools/typespec-azure-core/use-standard-names" "The operation is returning an array." + @doc("Get ingestion sources in a geo-catalog") + @route("/inma/ingestion-sources") + @get + @list + list( + ...ApiVersionParameter, + ...OdataQuery, + ): Page | ErrorResponse; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + @doc("Get an ingestion source in a geo-catalog") + @route("/inma/ingestion-sources/{id}") + @get + get( + ...IngestionSourceParameters, + ...ApiVersionParameter, + ): IngestionSource | ErrorResponse; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + @doc("Create a new ingestion source in a geo-catalog") + @route("/inma/ingestion-sources") + @post + create( + ...ApiVersionParameter, + + @doc("Definition of the ingestion source") + @body + body: IngestionSource, + ): { + @doc("Url of the created ingestion source") + @header + location: url; + + @statusCode statusCode: 201; + + @doc("Ingestion source summary") + @body + _: IngestionSource; + } | ErrorResponse; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + @doc("Update an existing ingestion source in a geo-catalog") + @route("/inma/ingestion-sources/{id}") + @put + replace( + ...ApiVersionParameter, + + @doc("Ingestion source id") + @path + id: uuid, + + @doc("Definition of the ingestion source") + @body + body: IngestionSource, + ): { + @doc("Url of the created ingestion source") + @header + location: url; + + @statusCode statusCode: 200; + + @doc("Ingestion source summary") + @body + _: IngestionSource; + } | ErrorResponse; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + @doc("Delete an ingestion source from a geo-catalog") + @route("/inma/ingestion-sources/{id}") + @delete + delete( + ...ApiVersionParameter, + + @doc("Ingestion source id") + @path + id: uuid, + ): { + @statusCode statusCode: 204; + } | ErrorResponse; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + #suppress "@azure-tools/typespec-azure-core/use-standard-names" "The operation is returning an array." + @doc("Get all managed identities with access to storage accounts configured for a geo-catalog") + @route("/inma/ingestion-sources/managed-identities") + @get + @list + listManagedIdentities( + ...ApiVersionParameter, + ): Page | ErrorResponse; +} + +@doc("Ingestion source summary") +model IngestionSourceSummary { + @doc("Ingestion source id") + id: uuid; + + @doc("Ingestion source type") + kind: IngestionSourceType; + + @doc("Created time in UTC format") + created?: utcDateTime; +} + +@doc("Ingestion Source") +@discriminator("kind") +model IngestionSource { + @doc("Ingestion source id") + @visibility(Lifecycle.Read, Lifecycle.Update) + id: uuid; + + @doc("Created time in UTC format") + @visibility(Lifecycle.Read) + created?: utcDateTime; + + @doc("Discriminator for the ingestion source") + kind: IngestionSourceType; +} + +@doc("Ingestion source type") +union IngestionSourceType { + string, + + @doc("Azure Blob Storage SAS token") + SharedAccessSignatureToken: "SasToken", + + @doc("Azure Blob Managed Identity") + BlobManagedIdentity: "BlobManagedIdentity", +} + +@doc("SAS Token ingestion source") +model SharedAccessSignatureTokenIngestionSource extends IngestionSource { + kind: IngestionSourceType.SharedAccessSignatureToken; + + @doc("SAS token connection information") + connectionInfo: SharedAccessSignatureTokenConnection; +} + +@doc("SAS Token connection information") +model SharedAccessSignatureTokenConnection { + @doc("Azure Blob Storage container URL") + @encodedName("application/json", "containerUrl") + containerUri: url; + + @doc("SAS token") + @visibility(Lifecycle.Create, Lifecycle.Update) + @encodedName("application/json", "sasToken") + sharedAccessSignatureToken?: string; + + @doc("Azure Blob Storage SAS token expiration in UTC format") + @visibility(Lifecycle.Read) + expiration?: utcDateTime; +} + +@doc("Managed Identity ingestion source") +model ManagedIdentityIngestionSource extends IngestionSource { + kind: IngestionSourceType.BlobManagedIdentity; + + @doc("Managed identity connection information") + connectionInfo: ManagedIdentityConnection; +} + +@doc("Managed Identity connection information") +model ManagedIdentityConnection { + @doc("Azure Blob Storage container URL") + @encodedName("application/json", "containerUrl") + containerUri: url; + + @doc("Azure Managed Identity configured in the Geo-Catalog with access to the container") + objectId: uuid; +} + +@doc("Managed Identity metadata") +model ManagedIdentityMetadata { + @doc("Object id of the managed identity") + objectId: uuid; + + @doc("ARM path or resource id of the managed identity") + resourceId: Azure.Core.armResourceIdentifier<[ + { + type: "Microsoft.ManagedIdentity/userAssignedIdentities"; + } + ]>; +} + +@doc("Ingestion source parameters") +model IngestionSourceParameters { + @doc("Ingestion source id") + @path + id: uuid; +} + +@tag("Ingestion Management") +interface IngestionOperations { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + #suppress "@azure-tools/typespec-azure-core/use-standard-names" "The operation is returning an array." + @doc("Get operations of a geo-catalog collection") + @route("/inma/operations") + @get + @list + list( + ...ApiVersionParameter, + ...OdataQuery, + + @doc("Operation id used to filter the results") + @query("collectionId") + collectionId?: string, + + @doc("Operation status used to filter the results") + @query("status") + status?: OperationStatus, + ): Page | ErrorResponse; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + @doc("Get an operation of a geo-catalog collection") + @route("/inma/operations/{operationId}") + @get + get( + ...ApiVersionParameter, + + @doc("Operation id") + @path + @maxLength(500) + operationId: uuid, + ): Operation | ErrorResponse; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + @doc("Cancel a running operation of a geo-catalog collection") + @route("/inma/operations/{operationId}") + @delete + delete( + ...ApiVersionParameter, + + @doc("Operation id") + @path + @maxLength(500) + operationId: uuid, + ): { + @statusCode statusCode: 204; + } | ErrorResponse; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + @doc("Cancel all running operations of a geo-catalog collection") + @route("/inma/operations") + @delete + deleteAll(...ApiVersionParameter): { + @statusCode statusCode: 204; + } | ErrorResponse; +} + +@doc("Error information wrapper") +model ErrorInfo { + @doc("Error details") + error: Error; +} + +@doc("Microsoft Planetary Computer Pro geo-catalog operation") +model Operation { + @doc("Operation id") + id: uuid; + + @doc("Operation status") + status: OperationStatus; + + @doc("Operation type") + type: string; + + @doc("The UTC time at which the operation was created") + creationTime: utcDateTime; + + @doc("Collection ID") + collectionId?: string; + + @doc("The history of the operation status in time") + statusHistory: OperationStatusHistoryItem[]; + + @doc("The UTC time at which the operation was started") + startTime?: utcDateTime; + + @doc("The UTC time at which the operation finished its execution") + finishTime?: utcDateTime; + + @doc("Additional information elements about the particular operation type") + additionalInformation?: Record; + + @doc("Error information") + error?: ErrorInfo; +} + +@doc("Operation status") +@lroStatus +union OperationStatus { + string, + + @doc("Operation accepted and ready to be run") + Pending: "Pending", + + @doc("Operation is running") + Running: "Running", + + @doc("Operation has already finished its execution") + Succeeded: "Succeeded", + + @doc("Operation canceled by the user") + Canceled: "Canceled", + + @doc("Operation is being canceling") + Canceling: "Canceling", + + @doc("Operation failed") + Failed: "Failed", +} + +@doc("Operation status history item") +model OperationStatusHistoryItem { + @doc("The UTC time at which the status was set") + timestamp: utcDateTime; + + @doc("The status of the operation") + status: OperationStatus; + + @doc("If the status is failed, the error code") + errorCode?: string; + + @doc("If the status is failed, the error message") + errorMessage?: string; +} + +@doc("Collection parameters") +model CollectionParameters is ApiVersionParameter { + /** + * Catalog collection id + */ + @doc("Catalog collection id") + @path + @maxLength(500) + @pattern(".*") + collectionId: string; +} + +@doc("Odata query parameters") +model OdataQuery { + @doc("The number of items to return") + @query("$top") + top?: int32; + + @doc("The number of items to skip") + @query("$skip") + skip?: int32; +} + +interface StacCollections { + /** + * List all collections in the GeoCatalog instance + */ + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + @summary("Get Collections") + @tag("SpatioTemporal Asset Catalog (STAC) API") + @route("/stac/collections") + @get + getAll is Azure.Core.Foundations.Operation< + { + /** + * Whether to sign asset URLs in the response. + */ + @query("sign") + sign?: StacAssetUrlSigningMode; + + /** + * URL signature duration in minutes. + */ + @query("duration") + durationInMinutes?: int32; + }, + StacCatalogCollections + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + #suppress "@azure-tools/typespec-azure-core/bad-record-type" "STAC specification" + @doc("Create a new collection in the GeoCatalog instance") + @summary("Create Collection") + @tag("SpatioTemporal Asset Catalog (STAC) API") + @route("/stac/collections") + @post + @pollingOperation(IngestionOperations.get) + create( + ...ApiVersionParameter, + + @doc("Request collection body") + @body + body: StacCollection, + ): { + @pollingLocation + @doc("Url used to monitor the background operation") + @header + location: url; + + @doc("Url used to monitor the background operation") + @header("operation-location") + operationLocation: url; + + @statusCode statusCode: 202; + + @doc("Operation") + @body + _: Operation; + } | ErrorResponse; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + @doc("Get a collection in the GeoCatalog instance") + @summary("Get Collection") + @tag("SpatioTemporal Asset Catalog (STAC) API") + @route("/stac/collections/{collectionId}") + @get + get is Azure.Core.Foundations.Operation< + { + /** + * Catalog collection id + */ + @doc("Catalog collection id") + @path + @maxLength(500) + @pattern(".*") + collectionId: string; + + /** + * Whether to sign asset URLs in the response. + */ + @query("sign") + sign?: StacAssetUrlSigningMode; + + /** + * URL signature duration in minutes. + */ + @query("duration") + durationInMinutes?: int32; + }, + StacCollection + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + #suppress "@azure-tools/typespec-azure-core/bad-record-type" "STAC specification" + @doc("Create or replace a collection in the GeoCatalog instance") + @summary("Create or update Collection") + @tag("SpatioTemporal Asset Catalog (STAC) API") + @route("/stac/collections") + @put + createOrReplace( + ...CollectionParameters, + + @doc("Request collection body") + @body + body: StacCollection, + ): StacCollection; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." + @doc("Delete a collection in the GeoCatalog instance") + @summary("Delete Collection") + @tag("SpatioTemporal Asset Catalog (STAC) API") + @route("/stac/collections") + @delete + @pollingOperation(IngestionOperations.get) + delete(...CollectionParameters): { + @pollingLocation + @doc("Url used to monitor the background operation") + @header + location: url; + + @doc("Url used to monitor the background operation") + @header("operation-location") + operationLocation: url; + + @statusCode statusCode: 202; + + @doc("Operation") + @body + _: Operation; + } | ErrorResponse; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/003001-dataplane-async-delete-op/package.json b/.github/azure-typespec-author/evaluate/fixtures/003001-dataplane-async-delete-op/package.json new file mode 100644 index 00000000000..45377b8ad61 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/003001-dataplane-async-delete-op/package.json @@ -0,0 +1,50 @@ +{ + "name": "azure-rest-api-specs", + "devDependencies": { + "@azure-tools/openai-typespec": "1.11.0", + "@azure-tools/spec-gen-sdk": "~0.9.1", + "@azure-tools/specs-shared": "file:.github/shared", + "@azure-tools/typespec-apiview": "0.7.2", + "@azure-tools/typespec-metadata": "0.1.1", + "@azure-tools/typespec-autorest": "0.66.0", + "@azure-tools/typespec-azure-core": "0.66.0", + "@azure-tools/typespec-azure-portal-core": "0.66.0", + "@azure-tools/typespec-azure-resource-manager": "0.66.0", + "@azure-tools/typespec-azure-rulesets": "0.66.0", + "@azure-tools/typespec-client-generator-cli": "0.31.0", + "@azure-tools/typespec-client-generator-core": "0.66.3", + "@azure-tools/typespec-liftr-base": "0.13.0", + "@autorest/openapi-to-typespec": "0.11.13", + "@azure/avocado": "0.10.5", + "@azure/oad": "0.12.4", + "@microsoft.azure/openapi-validator": "2.2.4", + "@microsoft.azure/openapi-validator-core": "1.0.7", + "@microsoft.azure/openapi-validator-rulesets": "2.2.5", + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/sse": "0.80.0", + "@typespec/events": "0.80.0", + "@typespec/openapi": "1.10.0", + "@typespec/openapi3": "1.10.0", + "@typespec/prettier-plugin-typespec": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/streams": "0.80.0", + "@typespec/versioning": "0.80.0", + "@typespec/xml": "0.80.0", + "azure-rest-api-specs-eng-tools": "file:eng/tools", + "oav": "4.0.3", + "prettier": "3.8.1", + "typescript": "~5.9.2" + }, + "overrides": { + "@typespec/asset-emitter": "0.79.1", + "get-uri": "^6.0.5", + "minimatch@^3.0.0": "^3.1.5", + "superagent": "^10.2.3" + }, + "engines": { + "node": ">=20.0.0", + "npm": ">=10.0.0" + }, + "private": true +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/BastionHost.tsp b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/BastionHost.tsp new file mode 100644 index 00000000000..db93ba8eaa0 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/BastionHost.tsp @@ -0,0 +1,214 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.Network; +/** + * Bastion Host resource. + */ +#suppress "@azure-tools/typespec-azure-core/no-private-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@Http.Private.includeInapplicableMetadataInPayload(false) +@Azure.ResourceManager.Legacy.feature(Features.virtualNetwork) +model BastionHost extends Resource { + properties?: BastionHostPropertiesFormat; + + @visibility(Lifecycle.Read) + @path + @key("bastionHostName") + @segment("bastionHosts") + name: string; + + /** A list of availability zones denoting where the resource needs to come from. */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + zones?: string[]; + + /** A unique read-only string that changes whenever the resource is updated. */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; + + /** + * The sku of this Bastion Host. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + sku?: Sku; +} + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@Azure.ResourceManager.Legacy.feature(Features.virtualNetwork) +@armResourceOperations +interface BastionHosts { + /** + * Gets the specified Bastion Host. + */ + get is ArmResourceRead; + + /** + * Creates or updates the specified Bastion Host. + */ + createOrUpdate is ArmResourceCreateOrReplaceAsync< + BastionHost, + Error = CloudError + >; + + /** + * Updates Tags for BastionHost resource + */ + #suppress "@azure-tools/typespec-azure-resource-manager/lro-location-header" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @patch(#{ implicitOptionality: false }) + updateTags is ArmCustomPatchAsync< + BastionHost, + PatchModel = TagsObject, + LroHeaders = ArmAsyncOperationHeader & + Azure.Core.Foundations.RetryAfterHeader, + Error = CloudError + >; + + /** + * Deletes the specified Bastion Host. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + delete is ArmResourceDeleteWithoutOkAsync< + BastionHost, + Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse, + Error = CloudError + >; + + /** + * Lists all Bastion Hosts in a resource group. + */ + listByResourceGroup is ArmResourceListByParent< + BastionHost, + Error = CloudError + >; + + /** + * Lists all Bastion Hosts in a subscription. + */ + list is ArmListBySubscription; + + /** + * Creates a Bastion Shareable Links for all the VMs specified in the request. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("BastionHosts") + @tag("BastionShareableLink") + @operationId("PutBastionShareableLink") + @list + @action("createShareableLinks") + putBastionShareableLink is ArmResourceActionAsync< + BastionHost, + BastionShareableLinkListRequest, + BastionShareableLinkListResult, + Error = CloudError + >; + + /** + * Deletes the Bastion Shareable Links for all the VMs specified in the request. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("BastionHosts") + @tag("BastionShareableLink") + @operationId("DeleteBastionShareableLink") + @action("deleteShareableLinks") + deleteBastionShareableLink is ArmResourceActionAsync< + BastionHost, + BastionShareableLinkListRequest, + Response = { + @body body: void; + }, + Error = CloudError + >; + + /** + * Deletes the Bastion Shareable Links for all the tokens specified in the request. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("BastionHosts") + @tag("BastionShareableLink") + @operationId("DeleteBastionShareableLinkByToken") + @action("deleteShareableLinksByToken") + deleteBastionShareableLinkByToken is ArmResourceActionAsyncBase< + BastionHost, + Request = BastionShareableLinkTokenListRequest, + Response = ArmAcceptedLroResponse, + BaseParameters = Azure.ResourceManager.Foundations.DefaultBaseParameters, + Error = CloudError + >; + + /** + * Return the Bastion Shareable Links for all the VMs specified in the request. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("BastionHosts") + @tag("BastionShareableLink") + @operationId("GetBastionShareableLink") + @list + @action("getShareableLinks") + getBastionShareableLink is ArmResourceActionSync< + BastionHost, + BastionShareableLinkListRequest, + BastionShareableLinkListResult, + Error = CloudError + >; + + /** + * Returns the list of currently active sessions on the Bastion. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @operationId("GetActiveSessions") + @list + getActiveSessions is ArmResourceActionAsync< + BastionHost, + void, + BastionActiveSessionListResult, + Error = CloudError + >; + + /** + * Returns the list of currently active sessions on the Bastion. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @operationId("DisconnectActiveSessions") + @list + disconnectActiveSessions is ArmResourceActionSync< + BastionHost, + SessionIds, + ArmResponse, + Error = CloudError + >; +} + +@@doc(BastionHost.name, "The name of the Bastion Host."); +@@doc(BastionHost.properties, "Represents the bastion host resource."); +@@doc(BastionHosts.createOrUpdate::parameters.resource, + "Parameters supplied to the create or update Bastion Host operation." +); +@@doc(BastionHosts.updateTags::parameters.properties, + "Parameters supplied to update BastionHost tags." +); +@@doc(BastionHosts.putBastionShareableLink::parameters.body, + "Post request for Create/Delete/Get Bastion Shareable Link endpoints." +); +@@doc(BastionHosts.deleteBastionShareableLink::parameters.body, + "Post request for Create/Delete/Get Bastion Shareable Link endpoints." +); +@@doc(BastionHosts.deleteBastionShareableLinkByToken::parameters.body, + "Post request for Delete Bastion Shareable Link By Token endpoint." +); +@@doc(BastionHosts.getBastionShareableLink::parameters.body, + "Post request for Create/Delete/Get Bastion Shareable Link endpoints." +); +@@doc(BastionHosts.disconnectActiveSessions::parameters.body, + "The list of sessionids to disconnect." +); diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/BgpConnection.tsp b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/BgpConnection.tsp new file mode 100644 index 00000000000..7b1263282af --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/BgpConnection.tsp @@ -0,0 +1,142 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; +import "./VirtualHub.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.Network; +/** + * Virtual Appliance Site resource. + */ +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/no-private-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@Azure.ResourceManager.Legacy.feature(Features.virtualWAN) +@parentResource(VirtualHub) +@Http.Private.includeInapplicableMetadataInPayload(false) +model BgpConnection extends SubResourceModel { + properties?: BgpConnectionProperties; + + @visibility(Lifecycle.Read) + @path + @key("connectionName") + @segment("bgpConnections") + name: string; + + /** + * A unique read-only string that changes whenever the resource is updated. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; +} + +alias VirtualHubBgpConnectionOps = Azure.ResourceManager.Legacy.LegacyOperations< + { + ...ApiVersionParameter; + ...SubscriptionIdParameter; + ...ResourceGroupParameter; + ...Azure.ResourceManager.Legacy.Provider; + + /** The name of the virtual hub. */ + @path + @segment("virtualHubs") + @key + hubName: string; + }, + { + /** The name of the bgp connection. */ + @path + @segment("bgpConnections") + @key + connectionName: string; + } +>; + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@Azure.ResourceManager.Legacy.feature(Features.virtualWAN) +@armResourceOperations(#{omitTags: true}) +interface BgpConnections { + /** + * Retrieves the details of a Virtual Hub Bgp Connection. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @operationId("VirtualHubBgpConnection_Get") + get is ArmResourceRead; + + /** + * Creates a VirtualHubBgpConnection resource if it doesn't exist else updates the existing VirtualHubBgpConnection. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @operationId("VirtualHubBgpConnection_CreateOrUpdate") + createOrUpdate is ArmResourceCreateOrReplaceAsync< + BgpConnection, + Error = CloudError + >; + + /** + * Deletes a VirtualHubBgpConnection. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @operationId("VirtualHubBgpConnection_Delete") + delete is ArmResourceDeleteWithoutOkAsync< + BgpConnection, + Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse, + Error = CloudError + >; + + /** + * Retrieves the details of all VirtualHubBgpConnections. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @operationId("VirtualHubBgpConnections_List") + list is ArmResourceListByParent< + BgpConnection, + Response = ArmResponse, + Error = CloudError + >; + + /** + * Retrieves a list of routes the virtual hub bgp connection has learned. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @operationId("VirtualHubBgpConnections_ListLearnedRoutes") + @action("learnedRoutes") + listLearnedRoutes is VirtualHubBgpConnectionOps.ActionAsync< + BgpConnection, + void, + void, + Response = Record | ArmAcceptedLroResponse & + Azure.Core.Foundations.RetryAfterHeader>, + OverrideErrorType = CloudError + >; + + /** + * Retrieves a list of routes the virtual hub bgp connection is advertising to the specified peer. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @operationId("VirtualHubBgpConnections_ListAdvertisedRoutes") + @action("advertisedRoutes") + listAdvertisedRoutes is VirtualHubBgpConnectionOps.ActionAsync< + BgpConnection, + void, + void, + Response = Record | ArmAcceptedLroResponse & + Azure.Core.Foundations.RetryAfterHeader>, + OverrideErrorType = CloudError + >; +} + +@@doc(BgpConnection.name, "The name of the connection."); +@@doc(BgpConnection.properties, "The properties of the Bgp connections."); +@@doc(BgpConnections.createOrUpdate::parameters.resource, + "Parameters of Bgp connection." +); diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteGateway.tsp b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteGateway.tsp new file mode 100644 index 00000000000..49a7b08fa8c --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteGateway.tsp @@ -0,0 +1,214 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.Network; +/** + * ExpressRoute gateway resource. + */ +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/no-private-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@Azure.ResourceManager.Legacy.feature(Features.virtualWAN) +@Http.Private.includeInapplicableMetadataInPayload(false) +model ExpressRouteGateway extends Resource { + properties?: ExpressRouteGatewayProperties; + + @visibility(Lifecycle.Read) + @path + @key("expressRouteGatewayName") + @segment("expressRouteGateways") + name: string; + + /** A unique read-only string that changes whenever the resource is updated. */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; +} + +alias ExpressRouteConnectionOps = Azure.ResourceManager.Legacy.RoutedOperations< + { + ...ApiVersionParameter; + ...SubscriptionIdParameter; + ...ResourceGroupParameter; + + /** The name of the express route gateway. */ + @path + @segment("expressRouteGateways") + @key + expressRouteGatewayName: string; + }, + { + /** The name of the express route connection. */ + @path + @segment("expressRouteConnections") + @key + connectionName: string; + }, + ResourceRoute = #{ + route: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}", + } +>; + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@Azure.ResourceManager.Legacy.feature(Features.virtualWAN) +@armResourceOperations(#{ allowStaticRoutes: true, omitTags: true }) +interface ExpressRouteGateways { + /** + * Fetches the details of a ExpressRoute gateway in a resource group. + */ + @tag("ExpressRouteGateways") + @autoRoute + get is ArmResourceRead; + + /** + * Creates or updates a ExpressRoute gateway in a specified resource group. + */ + @tag("ExpressRouteGateways") + createOrUpdate is ArmResourceCreateOrReplaceAsync< + ExpressRouteGateway, + Error = CloudError + >; + + /** + * Updates express route gateway tags. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/lro-location-header" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("ExpressRouteGateways") + @patch(#{ implicitOptionality: false }) + @autoRoute + updateTags is ArmCustomPatchAsync< + ExpressRouteGateway, + PatchModel = TagsObject, + LroHeaders = ArmAsyncOperationHeader & + Azure.Core.Foundations.RetryAfterHeader, + Error = CloudError + >; + + /** + * Deletes the specified ExpressRoute gateway in a resource group. An ExpressRoute gateway resource can only be deleted when there are no connection subresources. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("ExpressRouteGateways") + @autoRoute + delete is ArmResourceDeleteWithoutOkAsync< + ExpressRouteGateway, + Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse, + Error = CloudError + >; + + /** + * Lists ExpressRoute gateways in a given resource group. + */ + @tag("ExpressRouteGateways") + @autoRoute + listByResourceGroup is ArmResourceListByParent< + ExpressRouteGateway, + Response = ArmResponse, + Error = CloudError + >; + + /** + * Lists ExpressRoute gateways under a given subscription. + */ + @tag("ExpressRouteGateways") + @autoRoute + listBySubscription is ArmListBySubscription< + ExpressRouteGateway, + Response = ArmResponse, + Error = CloudError + >; + + /** + * Creates a connection between an ExpressRoute gateway and an ExpressRoute circuit. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/invalid-final-state" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("ExpressRouteConnections") + @operationId("ExpressRouteConnections_CreateOrUpdate") + @put + @Azure.Core.useFinalStateVia("azure-async-operation") + @route("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}") + expressRouteConnectionsCreateOrUpdate is ExpressRouteConnectionOps.ActionAsync< + ExpressRouteGateway, + ExpressRouteConnection, + void, + Response = ArmResponse | ArmResourceCreatedResponse< + ExpressRouteConnection, + LroHeaders = ArmAsyncOperationHeader & + Azure.Core.Foundations.RetryAfterHeader + >, + OverrideErrorType = CloudError + >; + + /** + * Gets the specified ExpressRouteConnection. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("ExpressRouteConnections") + @operationId("ExpressRouteConnections_Get") + @get + @route("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}") + expressRouteConnectionsGet is ExpressRouteConnectionOps.ActionSync< + ExpressRouteGateway, + void, + Response = ArmResponse, + OverrideErrorType = CloudError + >; + + /** + * Deletes a connection to a ExpressRoute circuit. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("ExpressRouteConnections") + @operationId("ExpressRouteConnections_Delete") + @delete + @route("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}") + expressRouteConnectionsDelete is ExpressRouteConnectionOps.ActionAsync< + ExpressRouteGateway, + void, + void, + Response = { + @body body: void; + } | ArmAcceptedLroResponse | NoContentResponse, + OverrideErrorType = CloudError + >; + + /** + * Lists ExpressRouteConnections. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("ExpressRouteConnections") + @operationId("ExpressRouteConnections_List") + @list + @get + @action("expressRouteConnections") + list is ArmResourceActionSync< + ExpressRouteGateway, + void, + ArmResponse, + Error = CloudError + >; +} + +@@doc(ExpressRouteGateway.name, "The name of the ExpressRoute gateway."); +@@doc(ExpressRouteGateway.properties, + "Properties of the express route gateway." +); +@@doc(ExpressRouteGateways.createOrUpdate::parameters.resource, + "Parameters required in an ExpressRoute gateway PUT operation." +); +@@doc(ExpressRouteGateways.updateTags::parameters.properties, + "Parameters supplied to update a virtual wan express route gateway tags." +); +@@doc(ExpressRouteGateways.expressRouteConnectionsCreateOrUpdate::parameters.body, + "Parameters required in an ExpressRouteConnection PUT operation." +); diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRoutePort.tsp b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRoutePort.tsp new file mode 100644 index 00000000000..67e0d7f12f3 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRoutePort.tsp @@ -0,0 +1,195 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.Network; +/** + * ExpressRoutePort resource definition. + */ +#suppress "@azure-tools/typespec-azure-core/no-private-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@summary("ExpressRoute Port") +@Azure.ResourceManager.Legacy.feature(Features.expressRoute) +@Http.Private.includeInapplicableMetadataInPayload(false) +model ExpressRoutePort extends Resource { + properties?: ExpressRoutePortPropertiesFormat; + + @visibility(Lifecycle.Read) + @path + @key("expressRoutePortName") + @segment("ExpressRoutePorts") + name: string; + + /** A unique read-only string that changes whenever the resource is updated. */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; + + /** + * The identity of ExpressRoutePort, if configured. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + identity?: ManagedServiceIdentity; +} + +alias ExpressRouteLinkOps = Azure.ResourceManager.Legacy.RoutedOperations< + { + ...ApiVersionParameter; + ...SubscriptionIdParameter; + ...ResourceGroupParameter; + + /** The name of the express route port. */ + @path + @segment("ExpressRoutePorts") + @key + expressRoutePortName: string; + }, + { + /** The name of the express route link. */ + @path + @segment("links") + @key + linkName: string; + }, + ResourceRoute = #{ + route: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRoutePorts/{expressRoutePortName}/links/{linkName}", + } +>; + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@Azure.ResourceManager.Legacy.feature(Features.expressRoute) +@armResourceOperations(#{ allowStaticRoutes: true, omitTags: true }) +interface ExpressRoutePorts { + /** + * Retrieves the requested ExpressRoutePort resource. + */ + @tag("ExpressRoutePorts") + @autoRoute + get is ArmResourceRead; + + /** + * Creates or updates the specified ExpressRoutePort resource. + */ + @tag("ExpressRoutePorts") + @autoRoute + createOrUpdate is ArmResourceCreateOrReplaceAsync< + ExpressRoutePort, + Error = CloudError + >; + + /** + * Update ExpressRoutePort tags. + */ + @tag("ExpressRoutePorts") + @autoRoute + @patch(#{ implicitOptionality: false }) + updateTags is ArmCustomPatchSync< + ExpressRoutePort, + PatchModel = TagsObject, + Error = CloudError + >; + + /** + * Deletes the specified ExpressRoutePort resource. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/lro-location-header" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("ExpressRoutePorts") + @Azure.Core.useFinalStateVia("azure-async-operation") + @autoRoute + delete is ArmResourceDeleteWithoutOkAsync< + ExpressRoutePort, + Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse, + Error = CloudError + >; + + /** + * List all the ExpressRoutePort resources in the specified resource group. + */ + @tag("ExpressRoutePorts") + @autoRoute + listByResourceGroup is ArmResourceListByParent< + ExpressRoutePort, + Response = ExpressRoutePortListResult, + Error = CloudError + >; + + /** + * List all the ExpressRoutePort resources in the specified subscription. + */ + @tag("ExpressRoutePorts") + @autoRoute + list is ArmListBySubscription< + ExpressRoutePort, + Response = ExpressRoutePortListResult, + Error = CloudError + >; + + /** + * Generate a letter of authorization for the requested ExpressRoutePort resource. + */ + #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("ExpressRoutePorts") + @action("generateLoa") + @autoRoute + generateLOA is ArmResourceActionSync< + ExpressRoutePort, + GenerateExpressRoutePortsLOARequest, + ArmResponse, + Error = CloudError + >; + + /** + * Retrieves the specified ExpressRouteLink resource. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("ExpressRouteLinks") + @operationId("ExpressRouteLinks_Get") + @get + @route("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}/links/{linkName}") + expressRouteLinksGet is ExpressRouteLinkOps.ActionSync< + ExpressRoutePort, + void, + Response = ArmResponse, + OverrideErrorType = CloudError + >; + + /** + * Retrieve the ExpressRouteLink sub-resources of the specified ExpressRoutePort resource. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("ExpressRouteLinks") + @operationId("ExpressRouteLinks_List") + @list + @get + @action("links") + @autoRoute + expressRouteLinksList is ArmResourceActionSync< + ExpressRoutePort, + void, + ArmResponse, + Error = CloudError + >; +} + +@@doc(ExpressRoutePort.name, "The name of ExpressRoutePort."); +@@doc(ExpressRoutePort.properties, "ExpressRoutePort properties."); +@@doc(ExpressRoutePorts.createOrUpdate::parameters.resource, + "Parameters supplied to the create ExpressRoutePort operation." +); +@@doc(ExpressRoutePorts.updateTags::parameters.properties, + "Parameters supplied to update ExpressRoutePort resource tags." +); +@@doc(ExpressRoutePorts.generateLOA::parameters.body, + "Request parameters supplied to generate a letter of authorization." +); diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteProviderPort.tsp b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteProviderPort.tsp new file mode 100644 index 00000000000..f18e9afd851 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteProviderPort.tsp @@ -0,0 +1,75 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.Network; +/** + * ExpressRouteProviderPort resource. + */ +#suppress "@azure-tools/typespec-azure-core/no-private-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@subscriptionResource +@Azure.ResourceManager.Legacy.feature(Features.expressRoute) +@Http.Private.includeInapplicableMetadataInPayload(false) +model ExpressRouteProviderPort extends ResourceWithReadOnlyNameAndID { + properties?: ExpressRouteProviderPortProperties; + + @visibility(Lifecycle.Read) + @path + @key("providerport") + @segment("expressRouteProviderPorts") + name: string; + + /** A unique read-only string that changes whenever the resource is updated. */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; +} + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@Azure.ResourceManager.Legacy.feature(Features.expressRoute) +@armResourceOperations +interface ExpressRouteProviderPorts { + /** + * Retrieves detail of a provider port. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @operationId("ExpressRouteProviderPort") + expressRouteProviderPort is ArmResourceRead< + ExpressRouteProviderPort, + BaseParameters = Azure.ResourceManager.Foundations.SubscriptionBaseParameters, + Error = CloudError + >; + + /** + * Retrieves all the ExpressRouteProviderPorts in a subscription. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @operationId("ExpressRouteProviderPortsLocation_List") + list is Legacy.ArmListSinglePageByParent< + ExpressRouteProviderPort, + BaseParameters = Azure.ResourceManager.Foundations.SubscriptionBaseParameters, + Parameters = { + /** + * The filter to apply on the operation. For example, you can use $filter=location eq '{state}'. + */ + @query("$filter") + $filter?: string; + }, + Error = CloudError + >; +} + +@@doc(ExpressRouteProviderPort.name, "The name of the provider port."); +@@doc(ExpressRouteProviderPort.properties, + "Properties of the express route Service Provider Port." +); diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/NetworkInterface.tsp b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/NetworkInterface.tsp new file mode 100644 index 00000000000..0e5673e1116 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/NetworkInterface.tsp @@ -0,0 +1,250 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.Network; +/** + * A network interface in a resource group. + */ +#suppress "@azure-tools/typespec-azure-core/no-private-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@Http.Private.includeInapplicableMetadataInPayload(false) +@Azure.ResourceManager.Legacy.feature(Features.virtualNetwork) +model NetworkInterface extends Resource { + properties?: NetworkInterfacePropertiesFormat; + + @visibility(Lifecycle.Read) + @path + @key("networkInterfaceName") + @segment("networkInterfaces") + name: string; + + /** + * The extended location of the network interface. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + extendedLocation?: ExtendedLocation; + + /** A unique read-only string that changes whenever the resource is updated. */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; +} + +alias NetworkInterfaceOps = Azure.ResourceManager.Legacy.LegacyOperations< + { + ...ApiVersionParameter; + ...SubscriptionIdParameter; + ...ResourceGroupParameter; + + #suppress "@azure-tools/typespec-azure-core/documentation-required" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @path + @segment("providers") + providerName: "microsoft.Compute"; + + /** The name of the cloud service. */ + @path + @segment("cloudServices") + @key + cloudServiceName: string; + + /** The name of role instance. */ + @path + @segment("roleInstances") + @key + roleInstanceName: string; + }, + { + /** The name of the network interface. */ + @path + @segment("networkInterfaces") + @key + networkInterfaceName: string; + } +>; + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@Azure.ResourceManager.Legacy.feature(Features.virtualNetwork) +@armResourceOperations +interface NetworkInterfaces { + /** + * Get the specified network interface in a cloud service. + */ + getCloudServiceNetworkInterface is NetworkInterfaceOps.Read< + NetworkInterface, + Parameters = { + /** + * Expands referenced resources. + */ + @query("$expand") + $expand?: string; + }, + OverrideErrorType = CloudError + >; + + /** + * Gets information about all network interfaces in a role instance in a cloud service. + */ + listCloudServiceRoleInstanceNetworkInterfaces is NetworkInterfaceOps.List< + NetworkInterface, + OverrideErrorType = CloudError + >; +} +alias NetworkInterfaceOperationGroupOps = Azure.ResourceManager.Legacy.LegacyOperations< + { + ...ApiVersionParameter; + ...SubscriptionIdParameter; + ...ResourceGroupParameter; + ...Azure.ResourceManager.Legacy.Provider; + }, + { + /** The name of the network interface. */ + @path + @segment("networkInterfaces") + @key + networkInterfaceName: string; + } +>; + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@Azure.ResourceManager.Legacy.feature(Features.virtualNetwork) +@armResourceOperations(#{omitTags: true}) +interface NetworkInterfaceOperationGroup { + /** + * Gets information about the specified network interface. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("NetworkInterfaces") + @operationId("NetworkInterfaces_Get") + get is NetworkInterfaceOperationGroupOps.Read< + NetworkInterface, + Parameters = { + /** + * Expands referenced resources. + */ + @query("$expand") + $expand?: string; + }, + OverrideErrorType = CloudError + >; + + /** + * Creates or updates a network interface. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("NetworkInterfaces") + @operationId("NetworkInterfaces_CreateOrUpdate") + createOrUpdate is NetworkInterfaceOperationGroupOps.CreateOrUpdateAsync< + NetworkInterface, + OverrideErrorType = CloudError + >; + + /** + * Updates a network interface tags. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("NetworkInterfaces") + @operationId("NetworkInterfaces_UpdateTags") + @patch(#{ implicitOptionality: false }) + updateTags is NetworkInterfaceOperationGroupOps.CustomPatchSync< + NetworkInterface, + PatchModel = TagsObject, + OverrideErrorType = CloudError + >; + + /** + * Deletes the specified network interface. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("NetworkInterfaces") + @operationId("NetworkInterfaces_Delete") + delete is NetworkInterfaceOperationGroupOps.DeleteWithoutOkAsync< + NetworkInterface, + Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse, + OverrideErrorType = CloudError + >; + + /** + * Gets all network interfaces in a resource group. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("NetworkInterfaces") + @operationId("NetworkInterfaces_List") + list is NetworkInterfaceOperationGroupOps.List< + NetworkInterface, + OverrideErrorType = CloudError + >; + + /** + * Gets all network interfaces in a subscription. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("NetworkInterfaces") + @operationId("NetworkInterfaces_ListAll") + listAll is ArmListBySubscription; + + /** + * Gets all route tables applied to a network interface. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("NetworkInterfaces") + @operationId("NetworkInterfaces_GetEffectiveRouteTable") + @post + @action("effectiveRouteTable") + getEffectiveRouteTable is NetworkInterfaceOperationGroupOps.ActionAsync< + NetworkInterface, + void, + EffectiveRouteListResult, + OverrideErrorType = CloudError + >; + + /** + * Gets all network security groups applied to a network interface. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("NetworkInterfaces") + @operationId("NetworkInterfaces_ListEffectiveNetworkSecurityGroups") + @post + @action("effectiveNetworkSecurityGroups") + listEffectiveNetworkSecurityGroups is NetworkInterfaceOperationGroupOps.ActionAsync< + NetworkInterface, + void, + EffectiveNetworkSecurityGroupListResult, + OverrideErrorType = CloudError + >; + + /** + * List all load balancers in a network interface. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("NetworkInterfaces") + @operationId("NetworkInterfaceLoadBalancers_List") + @list + @get + @action("loadBalancers") + networkInterfaceLoadBalancersList is NetworkInterfaceOperationGroupOps.ActionSync< + NetworkInterface, + void, + ArmResponse, + OverrideErrorType = CloudError + >; +} + +@@doc(NetworkInterface.name, "The name of the network interface."); +@@doc(NetworkInterface.properties, "Properties of the network interface."); +@@doc(NetworkInterfaceOperationGroup.createOrUpdate::parameters.resource, + "Parameters supplied to the create or update network interface operation." +); +@@doc(NetworkInterfaceOperationGroup.updateTags::parameters.properties, + "Parameters supplied to update network interface tags." +); diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/P2SVpnGateway.tsp b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/P2SVpnGateway.tsp new file mode 100644 index 00000000000..07f2c99f93f --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/P2SVpnGateway.tsp @@ -0,0 +1,213 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.Network; +/** + * P2SVpnGateway Resource. + */ +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/no-private-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@Azure.ResourceManager.Legacy.feature(Features.virtualWAN) +@Http.Private.includeInapplicableMetadataInPayload(false) +model P2SVpnGateway extends ResourceWithRequiredLocation { + properties?: P2SVpnGatewayProperties; + + @visibility(Lifecycle.Read) + @path + @key("gatewayName") + @segment("p2svpnGateways") + name: string; + + /** + * A unique read-only string that changes whenever the resource is updated. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; +} + +alias P2SVpnGatewayOps = Azure.ResourceManager.Legacy.LegacyOperations< + { + ...ApiVersionParameter; + ...SubscriptionIdParameter; + ...ResourceGroupParameter; + ...Azure.ResourceManager.Legacy.Provider; + }, + { + /** The name of the P2S Vpn Gateway. */ + @path + @segment("p2svpnGateways") + @key + p2sVpnGatewayName: string; + } +>; + +#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@Azure.ResourceManager.Legacy.feature(Features.virtualWAN) +@armResourceOperations(#{omitTags: true}) +interface P2SVpnGateways { + /** + * Retrieves the details of a virtual wan p2s vpn gateway. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @operationId("P2sVpnGateways_Get") + get is ArmResourceRead; + + /** + * Creates a virtual wan p2s vpn gateway if it doesn't exist else updates the existing gateway. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @operationId("P2sVpnGateways_CreateOrUpdate") + createOrUpdate is ArmResourceCreateOrReplaceAsync< + P2SVpnGateway, + Error = CloudError + >; + + /** + * Updates virtual wan p2s vpn gateway tags. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/lro-location-header" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("P2SVpnGateways") + @operationId("P2sVpnGateways_UpdateTags") + @patch(#{ implicitOptionality: false }) + updateTags is ArmCustomPatchAsync< + P2SVpnGateway, + PatchModel = TagsObject, + LroHeaders = ArmAsyncOperationHeader & + Azure.Core.Foundations.RetryAfterHeader, + Error = CloudError + >; + + /** + * Deletes a virtual wan p2s vpn gateway. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @operationId("P2sVpnGateways_Delete") + delete is ArmResourceDeleteWithoutOkAsync< + P2SVpnGateway, + Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse, + Error = CloudError + >; + + /** + * Lists all the P2SVpnGateways in a resource group. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @operationId("P2sVpnGateways_ListByResourceGroup") + listByResourceGroup is ArmResourceListByParent< + P2SVpnGateway, + Response = ArmResponse, + Error = CloudError + >; + + /** + * Lists all the P2SVpnGateways in a subscription. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @operationId("P2sVpnGateways_List") + list is ArmListBySubscription< + P2SVpnGateway, + Response = ArmResponse, + Error = CloudError + >; + + /** + * Resets the primary of the p2s vpn gateway in the specified resource group. + */ + @tag("P2SVpnGateways") + reset is ArmResourceActionAsync< + P2SVpnGateway, + void, + P2SVpnGateway, + Error = CloudError + >; + + /** + * Generates VPN profile for P2S client of the P2SVpnGateway in the specified resource group. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("P2SVpnGateways") + @operationId("P2sVpnGateways_GenerateVpnProfile") + @action("generatevpnprofile") + generateVpnProfile is ArmResourceActionAsync< + P2SVpnGateway, + P2SVpnProfileParameters, + VpnProfileResponse, + Error = CloudError + >; + + /** + * Gets the connection health of P2S clients of the virtual wan P2SVpnGateway in the specified resource group. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("P2SVpnGateways") + @operationId("P2sVpnGateways_GetP2sVpnConnectionHealth") + getP2sVpnConnectionHealth is ArmResourceActionAsync< + P2SVpnGateway, + void, + P2SVpnGateway, + Error = CloudError + >; + + /** + * Gets the sas url to get the connection health detail of P2S clients of the virtual wan P2SVpnGateway in the specified resource group. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("P2SVpnGateways") + @operationId("P2sVpnGateways_GetP2sVpnConnectionHealthDetailed") + getP2sVpnConnectionHealthDetailed is ArmResourceActionAsync< + P2SVpnGateway, + P2SVpnConnectionHealthRequest, + P2SVpnConnectionHealth, + Error = CloudError + >; + + /** + * Disconnect P2S vpn connections of the virtual wan P2SVpnGateway in the specified resource group. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("P2SVpnGateways") + @operationId("P2sVpnGateways_DisconnectP2sVpnConnections") + disconnectP2sVpnConnections is P2SVpnGatewayOps.ActionAsync< + P2SVpnGateway, + P2SVpnConnectionRequest, + Result = void, + Response = { + @body body: void; + } | ArmAcceptedLroResponse, + OverrideErrorType = CloudError + >; +} + +@@doc(P2SVpnGateway.name, "The name of the gateway."); +@@doc(P2SVpnGateway.properties, "Properties of the P2SVpnGateway."); +@@doc(P2SVpnGateways.createOrUpdate::parameters.resource, + "Parameters supplied to create or Update a virtual wan p2s vpn gateway." +); +@@doc(P2SVpnGateways.updateTags::parameters.properties, + "Parameters supplied to update a virtual wan p2s vpn gateway tags." +); +@@doc(P2SVpnGateways.generateVpnProfile::parameters.body, + "Parameters supplied to the generate P2SVpnGateway VPN client package operation." +); +@@doc(P2SVpnGateways.getP2sVpnConnectionHealthDetailed::parameters.body, + "Request parameters supplied to get p2s vpn connections detailed health." +); +@@doc(P2SVpnGateways.disconnectP2sVpnConnections::parameters.body, + "The parameters are supplied to disconnect p2s vpn connections." +); + diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/Route.tsp b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/Route.tsp new file mode 100644 index 00000000000..1ff841643bc --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/Route.tsp @@ -0,0 +1,80 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; +import "./RouteTable.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.Network; +/** + * Route resource. + */ +#suppress "@azure-tools/typespec-azure-core/no-private-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@Azure.ResourceManager.Legacy.feature(Features.virtualNetwork) +@parentResource(RouteTable) +@Http.Private.includeInapplicableMetadataInPayload(false) +model Route extends SubResourceModel { + properties?: RoutePropertiesFormat; + + @visibility(Lifecycle.Read) + @path + @key("routeName") + @segment("routes") + name: string; + + /** + * A unique read-only string that changes whenever the resource is updated. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; +} + +@@doc(Route.name, + "The name of the resource that is unique within a resource group. This name can be used to access the resource." +); +@@doc(Route.type, "Resource type."); + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@Azure.ResourceManager.Legacy.feature(Features.virtualNetwork) +@armResourceOperations +interface Routes { + /** + * Gets the specified route from a route table. + */ + get is ArmResourceRead; + + /** + * Creates or updates a route in the specified route table. + */ + createOrUpdate is ArmResourceCreateOrReplaceAsync; + + /** + * Deletes the specified route from a route table. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + delete is ArmResourceDeleteWithoutOkAsync< + Route, + Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse, + Error = CloudError + >; + + /** + * Gets all routes in a route table. + */ + list is ArmResourceListByParent; +} + +@@doc(Route.name, "The name of the route."); +@@doc(Route.properties, "Properties of the route."); +@@doc(Routes.createOrUpdate::parameters.resource, + "Parameters supplied to the create or update route operation." +); diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/VpnServerConfigurationPolicyGroup.tsp b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/VpnServerConfigurationPolicyGroup.tsp new file mode 100644 index 00000000000..52ab518bd13 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/VpnServerConfigurationPolicyGroup.tsp @@ -0,0 +1,98 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; +import "./VpnServerConfiguration.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.Network; +/** + * VpnServerConfigurationPolicyGroup Resource. + */ +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/no-private-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@Azure.ResourceManager.Legacy.feature(Features.virtualWAN) +@parentResource(VpnServerConfiguration) +@Http.Private.includeInapplicableMetadataInPayload(false) +model VpnServerConfigurationPolicyGroup extends SubResourceModel { + properties?: VpnServerConfigurationPolicyGroupProperties; + + /** + * The name of the resource that is unique within a resource group. This name can be used to access the resource. + */ + @visibility(Lifecycle.Read) + @path + @key("configurationPolicyGroupName") + @segment("configurationPolicyGroups") + name: string; + + /** + * A unique read-only string that changes whenever the resource is updated. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; +} + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@Azure.ResourceManager.Legacy.feature(Features.virtualWAN) +@armResourceOperations(#{omitTags: true}) +interface VpnServerConfigurationPolicyGroups { + /** + * Retrieves the details of a ConfigurationPolicyGroup. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @operationId("ConfigurationPolicyGroups_Get") + get is ArmResourceRead; + + /** + * Creates a ConfigurationPolicyGroup if it doesn't exist else updates the existing one. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @operationId("ConfigurationPolicyGroups_CreateOrUpdate") + createOrUpdate is ArmResourceCreateOrReplaceAsync< + VpnServerConfigurationPolicyGroup, + Error = CloudError + >; + + /** + * Deletes a ConfigurationPolicyGroup. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @operationId("ConfigurationPolicyGroups_Delete") + delete is ArmResourceDeleteWithoutOkAsync< + VpnServerConfigurationPolicyGroup, + Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse, + Error = CloudError + >; + + /** + * Lists all the configurationPolicyGroups in a resource group for a vpnServerConfiguration. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @operationId("configurationPolicyGroups_ListByVpnServerConfiguration") + listByVpnServerConfiguration is ArmResourceListByParent< + VpnServerConfigurationPolicyGroup, + Response = ArmResponse, + Error = CloudError + >; +} + +@@doc(VpnServerConfigurationPolicyGroup.name, + "The name of the resource that is unique within a resource group. This name can be used to access the resource." +); +@@doc(VpnServerConfigurationPolicyGroup.properties, + "Properties of the VpnServerConfigurationPolicyGroup." +); +@@doc(VpnServerConfigurationPolicyGroups.createOrUpdate::parameters.resource, + "Parameters supplied to create or update a VpnServerConfiguration PolicyGroup." +); + diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/VpnSiteLinkConnection.tsp b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/VpnSiteLinkConnection.tsp new file mode 100644 index 00000000000..ab1c7814a28 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/VpnSiteLinkConnection.tsp @@ -0,0 +1,138 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; +import "./VpnGateway.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.Network; +/** + * VpnSiteLinkConnection Resource. + */ +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/no-private-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@Azure.ResourceManager.Legacy.feature(Features.virtualWAN) +@parentResource(VpnGateway) +@Http.Private.includeInapplicableMetadataInPayload(false) +model VpnSiteLinkConnection extends SubResourceModel { + properties?: VpnSiteLinkConnectionProperties; + + /** + * The name of the resource that is unique within a resource group. This name can be used to access the resource. + */ + @visibility(Lifecycle.Read) + @path + @key("linkConnectionName") + @segment("vpnLinkConnections") + name: string; + + /** + * A unique read-only string that changes whenever the resource is updated. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; +} + +alias VpnSiteLinkConnectionsOps = Azure.ResourceManager.Legacy.LegacyOperations< + { + ...ApiVersionParameter; + ...SubscriptionIdParameter; + ...ResourceGroupParameter; + ...Azure.ResourceManager.Legacy.Provider; + + /** The name of the vpn gateway. */ + @path + @segment("vpnGateways") + @key + gatewayName: string; + + /** The name of the vpn connection. */ + @path + @segment("vpnConnections") + @key + connectionName: string; + }, + { + /** The name of the vpn link connection. */ + @path + @segment("vpnLinkConnections") + @key + linkConnectionName: string; + } +>; + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@Azure.ResourceManager.Legacy.feature(Features.virtualWAN) +@armResourceOperations(#{omitTags: true}) +interface VpnSiteLinkConnections { + /** + * Retrieves the details of a vpn site link connection. + */ + get is VpnSiteLinkConnectionsOps.Read< + VpnSiteLinkConnection, + OverrideErrorType = CloudError + >; + + /** + * Retrieves all vpn site link connections for a particular virtual wan vpn gateway vpn connection. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @operationId("VpnLinkConnections_ListByVpnConnection") + listByVpnConnection is ArmResourceListByParent< + VpnSiteLinkConnection, + Parameters = { + /** The name of the vpn connection. */ + @path + @segment("vpnConnections") + @key + connectionName: string; + }, + Response = ArmResponse, + Error = CloudError + >; + + /** + * Resets the VpnLink connection specified. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("vpnLinkConnections") + @operationId("VpnLinkConnections_ResetConnection") + @action("resetconnection") + resetConnection is VpnSiteLinkConnectionsOps.ActionAsync< + VpnSiteLinkConnection, + Request = void, + Result = void, + Response = ArmAcceptedLroResponse, + OverrideErrorType = ErrorResponse + >; + + /** + * Lists IKE Security Associations for Vpn Site Link Connection in the specified resource group. + */ + #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @operationId("VpnLinkConnections_GetIkeSas") + @action("getikesas") + getIkeSas is VpnSiteLinkConnectionsOps.ActionAsync< + VpnSiteLinkConnection, + void, + { + @body body: stringApplicationJson; + }, + OverrideErrorType = ErrorResponse + >; +} + +@@doc(VpnSiteLinkConnection.name, + "The name of the resource that is unique within a resource group. This name can be used to access the resource." +); +@@doc(VpnSiteLinkConnection.properties, + "Properties of the VPN site link connection." +); diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/package.json b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/package.json new file mode 100644 index 00000000000..45377b8ad61 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/package.json @@ -0,0 +1,50 @@ +{ + "name": "azure-rest-api-specs", + "devDependencies": { + "@azure-tools/openai-typespec": "1.11.0", + "@azure-tools/spec-gen-sdk": "~0.9.1", + "@azure-tools/specs-shared": "file:.github/shared", + "@azure-tools/typespec-apiview": "0.7.2", + "@azure-tools/typespec-metadata": "0.1.1", + "@azure-tools/typespec-autorest": "0.66.0", + "@azure-tools/typespec-azure-core": "0.66.0", + "@azure-tools/typespec-azure-portal-core": "0.66.0", + "@azure-tools/typespec-azure-resource-manager": "0.66.0", + "@azure-tools/typespec-azure-rulesets": "0.66.0", + "@azure-tools/typespec-client-generator-cli": "0.31.0", + "@azure-tools/typespec-client-generator-core": "0.66.3", + "@azure-tools/typespec-liftr-base": "0.13.0", + "@autorest/openapi-to-typespec": "0.11.13", + "@azure/avocado": "0.10.5", + "@azure/oad": "0.12.4", + "@microsoft.azure/openapi-validator": "2.2.4", + "@microsoft.azure/openapi-validator-core": "1.0.7", + "@microsoft.azure/openapi-validator-rulesets": "2.2.5", + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/sse": "0.80.0", + "@typespec/events": "0.80.0", + "@typespec/openapi": "1.10.0", + "@typespec/openapi3": "1.10.0", + "@typespec/prettier-plugin-typespec": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/streams": "0.80.0", + "@typespec/versioning": "0.80.0", + "@typespec/xml": "0.80.0", + "azure-rest-api-specs-eng-tools": "file:eng/tools", + "oav": "4.0.3", + "prettier": "3.8.1", + "typescript": "~5.9.2" + }, + "overrides": { + "@typespec/asset-emitter": "0.79.1", + "get-uri": "^6.0.5", + "minimatch@^3.0.0": "^3.1.5", + "superagent": "^10.2.3" + }, + "engines": { + "node": ">=20.0.0", + "npm": ">=10.0.0" + }, + "private": true +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/models.tsp b/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/models.tsp new file mode 100644 index 00000000000..acf39fd0027 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/models.tsp @@ -0,0 +1,4942 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.ResourceManager; +using Azure.ResourceManager.Foundations; + +namespace Microsoft.CognitiveServices; + +/** + * This field is required to be implemented by the Resource Provider if the service has more than one tier, but is not required on a PUT. + */ +union SkuTier { + string, + Free: "Free", + Basic: "Basic", + Standard: "Standard", + Premium: "Premium", + Enterprise: "Enterprise", +} + +/** + * Gets the status of the cognitive services account at the time the operation was called. + */ +union ProvisioningState { + string, + Accepted: "Accepted", + Creating: "Creating", + Deleting: "Deleting", + Moving: "Moving", + Failed: "Failed", + Succeeded: "Succeeded", + Canceled: "Canceled", + ResolvingDNS: "ResolvingDNS", +} + +/** + * The default action when no rule from ipRules and from virtualNetworkRules match. This is only used after the bypass property has been evaluated. + */ +union NetworkRuleAction { + string, + Allow: "Allow", + Deny: "Deny", +} + +/** + * Setting for trusted services. + */ +union ByPassSelection { + string, + None: "None", + AzureServices: "AzureServices", +} + +/** + * Enumerates the possible value of keySource for Encryption + */ +union KeySource { + string, + `Microsoft.CognitiveServices`: "Microsoft.CognitiveServices", + `Microsoft.KeyVault`: "Microsoft.KeyVault", +} + +/** + * The type of identity that created the resource. + */ +union CreatedByType { + string, + User: "User", + Application: "Application", + ManagedIdentity: "ManagedIdentity", + Key: "Key", +} + +/** + * Whether or not public endpoint access is allowed for this account. + */ +union PublicNetworkAccess { + string, + Enabled: "Enabled", + Disabled: "Disabled", +} + +/** + * Multiregion routing methods. + */ +union RoutingMethods { + string, + Priority: "Priority", + Weighted: "Weighted", + Performance: "Performance", +} + +/** + * The action of AbusePenalty. + */ +union AbusePenaltyAction { + string, + Throttle: "Throttle", + Block: "Block", +} + +/** + * Specifies what features in AI Foundry network injection applies to. Currently only supports 'agent' for agent scenarios. 'none' means no network injection. + */ +union ScenarioType { + string, + none: "none", + agent: "agent", +} + +/** + * The reason for restriction. + */ +union ResourceSkuRestrictionsReasonCode { + string, + QuotaId: "QuotaId", + NotAvailableForSubscription: "NotAvailableForSubscription", +} + +/** + * The unit of the metric. + */ +union UnitType { + string, + Count: "Count", + Bytes: "Bytes", + Seconds: "Seconds", + Percent: "Percent", + CountPerSecond: "CountPerSecond", + BytesPerSecond: "BytesPerSecond", + Milliseconds: "Milliseconds", +} + +/** + * Cognitive Services account quota usage status. + */ +union QuotaUsageStatus { + string, + Included: "Included", + Blocked: "Blocked", + InOverage: "InOverage", + Unknown: "Unknown", +} + +/** + * Indicates whether the deprecation date is a confirmed planned end-of-life date or an estimated deprecation date. When 'Planned', the deprecation date represents a confirmed and communicated model end-of-life date. When 'Tentative', the deprecation date is an estimated timeline that may be subject to change. + */ +union DeprecationStatus { + string, + Planned: "Planned", + Tentative: "Tentative", +} + +/** + * Model lifecycle status. + */ +union ModelLifecycleStatus { + string, + + /** + * Legacy state. Replaced with GenerallyAvailable going forward. + */ + Stable: "Stable", + + /** + * Model is in preview and may be subject to changes. + */ + Preview: "Preview", + + /** + * Model is generally available for production use. + */ + GenerallyAvailable: "GenerallyAvailable", + + /** + * Model is being deprecated and will be removed in the future. Only customers with existing deployments can create new deployments with this model. + */ + Deprecating: "Deprecating", + + /** + * Model has been deprecated, also known as retired, and is no longer supported. Inference calls to deployments of models in this lifecycle state will return 410 errors. + */ + Deprecated: "Deprecated", + + /** + * Model is a legacy version that is no longer recommended for use. Customers should migrate to newer models. Check replacementConfig for upgrade information. + */ + Legacy: "Legacy", +} + +/** + * The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit logs UX. Default value is "user,system" + */ +union Origin { + string, + user: "user", + system: "system", + `user,system`: "user,system", +} + +/** + * Enum. Indicates the action type. "Internal" refers to actions that are for internal only APIs. + */ +union ActionType { + string, + Internal: "Internal", +} + +/** + * Account hosting model. + */ +union HostingModel { + string, + Web: "Web", + ConnectedContainer: "ConnectedContainer", + DisconnectedContainer: "DisconnectedContainer", + ProvisionedWeb: "ProvisionedWeb", +} + +/** + * Gets the status of the resource at the time the operation was called. + */ +union DeploymentProvisioningState { + string, + Accepted: "Accepted", + Creating: "Creating", + Deleting: "Deleting", + Moving: "Moving", + Failed: "Failed", + Succeeded: "Succeeded", + Disabled: "Disabled", + Canceled: "Canceled", +} + +/** + * Deployment scale type. + */ +union DeploymentScaleType { + string, + Standard: "Standard", + Manual: "Manual", +} + +/** + * Deployment model version upgrade option. + */ +union DeploymentModelVersionUpgradeOption { + string, + OnceNewDefaultVersionAvailable: "OnceNewDefaultVersionAvailable", + OnceCurrentVersionExpired: "OnceCurrentVersionExpired", + NoAutoUpgrade: "NoAutoUpgrade", +} + +/** + * The service tier for the deployment. Determines the pricing and performance level for request processing. Use 'Default' for standard pricing or 'Priority' for higher-priority processing with premium pricing. Note: Pause operations are only supported on Standard, DataZoneStandard, and GlobalStandard SKUs. + */ +union ServiceTier { + string, + + /** + * Default service tier meaning the request will be processed with the standard pricing and performance for the selected model. + */ + Default: "Default", + + /** + * Priority service tier meaning the request will be processed with higher pricing and performance for the selected model. + */ + Priority: "Priority", +} + +/** + * The state of the deployment. Controls whether the deployment is accepting inference requests. Use 'Running' for active deployments that process requests, or 'Paused' to temporarily stop inference while preserving the deployment configuration. + */ +union DeploymentState { + string, + + /** + * The deployment is running and accepting inference requests. + */ + Running: "Running", + + /** + * The deployment is paused and not accepting inference requests. + */ + Paused: "Paused", +} + +/** + * Gets the status of the resource at the time the operation was called. + */ +union CommitmentPlanProvisioningState { + string, + Accepted: "Accepted", + Creating: "Creating", + Deleting: "Deleting", + Moving: "Moving", + Failed: "Failed", + Succeeded: "Succeeded", + Canceled: "Canceled", +} + +/** + * Gets the status of the resource at the time the operation was called. + */ +union EncryptionScopeProvisioningState { + string, + Accepted: "Accepted", + Creating: "Creating", + Deleting: "Deleting", + Moving: "Moving", + Failed: "Failed", + Succeeded: "Succeeded", + Canceled: "Canceled", +} + +/** + * The encryptionScope state. + */ +union EncryptionScopeState { + string, + Disabled: "Disabled", + Enabled: "Enabled", +} + +/** + * Content Filters policy type. + */ +union RaiPolicyType { + string, + UserManaged: "UserManaged", + SystemManaged: "SystemManaged", +} + +/** + * Rai policy mode. The enum value mapping is as below: Default = 0, Deferred=1, Blocking=2, Asynchronous_filter =3. Please use 'Asynchronous_filter' after 2025-06-01. It is the same as 'Deferred' in previous version. + */ +union RaiPolicyMode { + string, + Default: "Default", + Deferred: "Deferred", + Blocking: "Blocking", + Asynchronous_filter: "Asynchronous_filter", +} + +/** + * Level at which content is filtered. + */ +union ContentLevel { + string, + Low: "Low", + Medium: "Medium", + High: "High", +} + +/** + * Content source to apply the Content Filters. + */ +union RaiPolicyContentSource { + string, + Prompt: "Prompt", + Completion: "Completion", + PreToolCall: "PreToolCall", + PostToolCall: "PostToolCall", + PreRun: "PreRun", + PostRun: "PostRun", +} + +/** + * The action types to apply to the content filters + */ +union RaiActionType { + string, + None: "None", + BLOCKING: "BLOCKING", + ANNOTATING: "ANNOTATING", + HITL: "HITL", + RETRY: "RETRY", +} + +/** + * Direction of Access Rule + */ +union NspAccessRuleDirection { + string, + Inbound: "Inbound", + Outbound: "Outbound", +} + +/** + * Defender for AI state on the AI resource. + */ +union DefenderForAISettingState { + string, + Disabled: "Disabled", + Enabled: "Enabled", +} + +/** + * Authentication type of the connection target + */ +union ConnectionAuthType { + string, + PAT: "PAT", + ManagedIdentity: "ManagedIdentity", + UsernamePassword: "UsernamePassword", + None: "None", + SAS: "SAS", + AccountKey: "AccountKey", + ServicePrincipal: "ServicePrincipal", + AccessKey: "AccessKey", + ApiKey: "ApiKey", + CustomKeys: "CustomKeys", + OAuth2: "OAuth2", + AAD: "AAD", + DelegatedSAS: "DelegatedSAS", + ProjectManagedIdentity: "ProjectManagedIdentity", + AccountManagedIdentity: "AccountManagedIdentity", + UserEntraToken: "UserEntraToken", + AgentUserImpersonation: "AgentUserImpersonation", + AgenticIdentityToken: "AgenticIdentityToken", + AgenticUser: "AgenticUser", +} + +/** + * Category of the connection + */ +union ConnectionCategory { + string, + PythonFeed: "PythonFeed", + ContainerRegistry: "ContainerRegistry", + Git: "Git", + S3: "S3", + Snowflake: "Snowflake", + AzureKeyVault: "AzureKeyVault", + AzureSqlDb: "AzureSqlDb", + AzureSynapseAnalytics: "AzureSynapseAnalytics", + AzureMySqlDb: "AzureMySqlDb", + AzurePostgresDb: "AzurePostgresDb", + ADLSGen2: "ADLSGen2", + AzureContainerAppEnvironment: "AzureContainerAppEnvironment", + Redis: "Redis", + ApiKey: "ApiKey", + AzureOpenAI: "AzureOpenAI", + AIServices: "AIServices", + CognitiveSearch: "CognitiveSearch", + CognitiveService: "CognitiveService", + CustomKeys: "CustomKeys", + AzureBlob: "AzureBlob", + AzureStorageAccount: "AzureStorageAccount", + AzureOneLake: "AzureOneLake", + CosmosDb: "CosmosDb", + CosmosDbMongoDbApi: "CosmosDbMongoDbApi", + AzureDataExplorer: "AzureDataExplorer", + AzureMariaDb: "AzureMariaDb", + AzureDatabricksDeltaLake: "AzureDatabricksDeltaLake", + AzureSqlMi: "AzureSqlMi", + AzureTableStorage: "AzureTableStorage", + AmazonRdsForOracle: "AmazonRdsForOracle", + AmazonRdsForSqlServer: "AmazonRdsForSqlServer", + AmazonRedshift: "AmazonRedshift", + Db2: "Db2", + Drill: "Drill", + GoogleBigQuery: "GoogleBigQuery", + Greenplum: "Greenplum", + Hbase: "Hbase", + Hive: "Hive", + Impala: "Impala", + Informix: "Informix", + MariaDb: "MariaDb", + MicrosoftAccess: "MicrosoftAccess", + MySql: "MySql", + Netezza: "Netezza", + Oracle: "Oracle", + Phoenix: "Phoenix", + PostgreSql: "PostgreSql", + Presto: "Presto", + SapOpenHub: "SapOpenHub", + SapBw: "SapBw", + SapHana: "SapHana", + SapTable: "SapTable", + Spark: "Spark", + SqlServer: "SqlServer", + Sybase: "Sybase", + Teradata: "Teradata", + Vertica: "Vertica", + Pinecone: "Pinecone", + Databricks: "Databricks", + Cassandra: "Cassandra", + Couchbase: "Couchbase", + MongoDbV2: "MongoDbV2", + MongoDbAtlas: "MongoDbAtlas", + AmazonS3Compatible: "AmazonS3Compatible", + FileServer: "FileServer", + FtpServer: "FtpServer", + GoogleCloudStorage: "GoogleCloudStorage", + Hdfs: "Hdfs", + OracleCloudStorage: "OracleCloudStorage", + Sftp: "Sftp", + GenericHttp: "GenericHttp", + ODataRest: "ODataRest", + Odbc: "Odbc", + GenericRest: "GenericRest", + RemoteTool: "RemoteTool", + AmazonMws: "AmazonMws", + Concur: "Concur", + Dynamics: "Dynamics", + DynamicsAx: "DynamicsAx", + DynamicsCrm: "DynamicsCrm", + GoogleAdWords: "GoogleAdWords", + Hubspot: "Hubspot", + Jira: "Jira", + Magento: "Magento", + Marketo: "Marketo", + Office365: "Office365", + Eloqua: "Eloqua", + Responsys: "Responsys", + OracleServiceCloud: "OracleServiceCloud", + PayPal: "PayPal", + QuickBooks: "QuickBooks", + Salesforce: "Salesforce", + SalesforceServiceCloud: "SalesforceServiceCloud", + SalesforceMarketingCloud: "SalesforceMarketingCloud", + SapCloudForCustomer: "SapCloudForCustomer", + SapEcc: "SapEcc", + ServiceNow: "ServiceNow", + SharePointOnlineList: "SharePointOnlineList", + Shopify: "Shopify", + Square: "Square", + WebTable: "WebTable", + Xero: "Xero", + Zoho: "Zoho", + GenericContainerRegistry: "GenericContainerRegistry", + Elasticsearch: "Elasticsearch", + AppInsights: "AppInsights", + AppConfig: "AppConfig", + OpenAI: "OpenAI", + Serp: "Serp", + BingLLMSearch: "BingLLMSearch", + Serverless: "Serverless", + ManagedOnlineEndpoint: "ManagedOnlineEndpoint", + ApiManagement: "ApiManagement", + ModelGateway: "ModelGateway", + GroundingWithBingSearch: "GroundingWithBingSearch", + GroundingWithCustomSearch: "GroundingWithCustomSearch", + Sharepoint: "Sharepoint", + MicrosoftFabric: "MicrosoftFabric", + PowerPlatformEnvironment: "PowerPlatformEnvironment", + RemoteA2A: "RemoteA2A", +} + +/** + * Group based on connection category + */ +union ConnectionGroup { + string, + Azure: "Azure", + AzureAI: "AzureAI", + Database: "Database", + NoSQL: "NoSQL", + File: "File", + GenericProtocol: "GenericProtocol", + ServicesAndApps: "ServicesAndApps", +} + +union ManagedPERequirement { + string, + Required: "Required", + NotRequired: "NotRequired", + NotApplicable: "NotApplicable", +} + +union ManagedPEStatus { + string, + Inactive: "Inactive", + Active: "Active", + NotApplicable: "NotApplicable", +} + +union CapabilityHostKind { + string, + Agents: "Agents", +} + +/** + * Provisioning state of capability host. + */ +union CapabilityHostProvisioningState { + string, + Succeeded: "Succeeded", + Failed: "Failed", + Canceled: "Canceled", + Creating: "Creating", + Updating: "Updating", + Deleting: "Deleting", +} + +/** + * Gets the tier upgrade policy for the subscription. + */ +union TierUpgradePolicy { + string, + OnceUpgradeIsAvailable: "OnceUpgradeIsAvailable", + NoAutoUpgrade: "NoAutoUpgrade", +} + +/** + * Specifies whether an upgrade to the next quota tier is available. + */ +union UpgradeAvailabilityStatus { + string, + Available: "Available", + NotAvailable: "NotAvailable", +} + +/** + * Category of a managed network Outbound Rule of a cognitive services account. + */ +union RuleCategory { + string, + Required: "Required", + Recommended: "Recommended", + UserDefined: "UserDefined", + Dependency: "Dependency", +} + +/** + * Type of a managed network Outbound Rule of a cognitive services account. + */ +union RuleStatus { + string, + Inactive: "Inactive", + Active: "Active", + Provisioning: "Provisioning", + Deleting: "Deleting", + Failed: "Failed", +} + +/** + * Type of a managed network Outbound Rule of a cognitive services account. + */ +union RuleType { + string, + FQDN: "FQDN", + PrivateEndpoint: "PrivateEndpoint", + ServiceTag: "ServiceTag", +} + +/** + * Isolation mode for the managed network of a cognitive services account. + */ +union IsolationMode { + string, + Disabled: "Disabled", + AllowInternetOutbound: "AllowInternetOutbound", + AllowOnlyApprovedOutbound: "AllowOnlyApprovedOutbound", +} + +/** + * Status for the managed network of a cognitive services account. + */ +union ManagedNetworkStatus { + string, + Inactive: "Inactive", + Active: "Active", +} + +/** + * Firewall Sku used for FQDN Rules + */ +union FirewallSku { + string, + Standard: "Standard", + Basic: "Basic", +} + +/** + * The Kind of the managed network. Users can switch from V1 to V2 for granular access controls, but cannot switch back to V1 once V2 is enabled. + */ +union ManagedNetworkKind { + string, + V1: "V1", + V2: "V2", +} + +union ManagedNetworkProvisioningState { + string, + Deferred: "Deferred", + Updating: "Updating", + Succeeded: "Succeeded", + Failed: "Failed", + Deleting: "Deleting", + Deleted: "Deleted", +} + +/** + * Specifies the kind of Entra identity described by this object. + */ +union IdentityKind { + string, + + /** + * Represents a class identity, used for agentic applications. + */ + AgentBlueprint: "AgentBlueprint", + + /** + * Represents an instance identity. + */ + AgentInstance: "AgentInstance", + + /** + * Represents an agentic instance identity with user-like traits. + */ + AgenticUser: "AgenticUser", + + /** + * Represents a classic managed identity. + */ + Managed: "Managed", + + /** + * No identity. + */ + None: "None", +} + +/** + * Enumeration of identity types, from the perspective of management. + */ +union IdentityManagementType { + string, + + /** + * Platform-managed identity. + */ + System: "System", + + /** + * User-managed identity. + */ + User: "User", + + /** + * No identity. + */ + None: "None", +} + +/** + * Represents the provisioning state of an identity resource. + */ +union IdentityProvisioningState { + string, + + /** + * Identity is being created. + */ + Creating: "Creating", + + /** + * Identity is being updated. + */ + Updating: "Updating", + + /** + * Identity has been successfully provisioned. + */ + Succeeded: "Succeeded", + + /** + * Identity provisioning has failed. + */ + Failed: "Failed", + + /** + * Identity provisioning has been canceled. + */ + Canceled: "Canceled", + + /** + * Identity is being deleted. + */ + Deleting: "Deleting", +} + +/** + * Authorization scheme type. + */ +union BuiltInAuthorizationScheme { + string, + + /** + * Standard AzureML RBAC + */ + Default: "Default", + + /** + * Claim-based, requires membership in the tenant + */ + OrganizationScope: "OrganizationScope", + + /** + * Channels-specific (AzureBotService) authorization + */ + Channels: "Channels", + + /** + * Custom scheme defined by the application author + */ + Custom: "Custom", +} + +/** + * Traffic routing protocol, used to distribute an application's inbound traffic to its deployments. + */ +union TrafficRoutingProtocol { + string, + + /** + * Percentage based routing + */ + FixedRatio: "FixedRatio", +} + +/** + * Provisioning state of an agentic application. + */ +union AgenticApplicationProvisioningState { + string, + + /** + * The application was successfully provisioned. + */ + Succeeded: "Succeeded", + + /** + * The application provisioning failed. + */ + Failed: "Failed", + + /** + * The application provisioning was canceled. + */ + Canceled: "Canceled", + + /** + * The application is being created. + */ + Creating: "Creating", + + /** + * The application is being updated. + */ + Updating: "Updating", + + /** + * The application is being deleted. + */ + Deleting: "Deleting", +} + +/** + * Current operational state of the agentic functionality represented by this deployment. + */ +union AgentDeploymentState { + string, + + /** + * The deployment is starting. + */ + Starting: "Starting", + + /** + * The deployment started/is operational. + */ + Running: "Running", + + /** + * The deployment is being stopped. + */ + Stopping: "Stopping", + + /** + * The deployment was stopped. + */ + Stopped: "Stopped", + + /** + * The deployment failed. + */ + Failed: "Failed", + + /** + * The deployment is being deleted. + */ + Deleting: "Deleting", + + /** + * The deployment was deleted. + */ + Deleted: "Deleted", + + /** + * The deployment is being updated. + */ + Updating: "Updating", +} + +/** + * Protocol used by the agent/exposed by a deployment. + */ +union AgentProtocol { + string, + + /** + * Agent protocol (aka Active) + */ + Agent: "Agent", + + /** + * Agent2Agent standard + */ + A2A: "A2A", + + /** + * OpenAI-compatible + */ + Responses: "Responses", +} + +/** + * Specifies the type of deployment for an agent, indicating how the underlying compute and network infrastructure is managed. + */ +union AgentDeploymentType { + string, + + /** + * The underlying infra is managed by the platform in the deployer's subscription + */ + Managed: "Managed", + + /** + * The underlying infra is owned by the platform + */ + Hosted: "Hosted", + + /** + * The underlying infra is provisioned by the deployer (BYO) + */ + Custom: "Custom", +} + +/** + * Provisioning state of an agentic deployment, as an Azure resource. + */ +union AgentDeploymentProvisioningState { + string, + + /** + * The deployment was successfully completed. + */ + Succeeded: "Succeeded", + + /** + * The deployment failed. + */ + Failed: "Failed", + + /** + * The deployment was canceled. + */ + Canceled: "Canceled", + + /** + * The deployment is being created. + */ + Creating: "Creating", + + /** + * The deployment is being updated. + */ + Updating: "Updating", + + /** + * The deployment is being deleted. + */ + Deleting: "Deleting", +} + +/** + * The identity type. + */ +enum ResourceIdentityType { + None, + SystemAssigned, + UserAssigned, + `SystemAssigned, UserAssigned`, +} + +/** + * key name to generate (Key1|Key2) + */ +enum KeyName { + Key1, + Key2, +} + +/** + * The type of restrictions. + */ +enum ResourceSkuRestrictionsType { + Location, + Zone, +} + +/** + * The resource model definition representing SKU + */ +model Sku { + /** + * The name of the SKU. Ex - P3. It is typically a letter+number code + */ + name: string; + + /** + * This field is required to be implemented by the Resource Provider if the service has more than one tier, but is not required on a PUT. + */ + tier?: SkuTier; + + /** + * The SKU size. When the name field is the combination of tier and some other value, this would be the standalone code. + */ + size?: string; + + /** + * If the service has different generations of hardware, for the same SKU, then that can be captured here. + */ + family?: string; + + /** + * If the SKU supports scale out/in then the capacity integer should be included. If scale out/in is not possible for the resource this may be omitted. + */ + capacity?: int32; +} + +/** + * Identity for the resource. + */ +model Identity { + /** + * The identity type. + */ + type?: ResourceIdentityType; + + /** + * The tenant ID of resource. + */ + @visibility(Lifecycle.Read) + tenantId?: string; + + /** + * The principal ID of resource identity. + */ + @visibility(Lifecycle.Read) + principalId?: string; + + /** + * The list of user assigned identities associated with the resource. The user identity dictionary key references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName} + */ + userAssignedIdentities?: Record; +} + +/** + * User-assigned managed identity. + */ +model UserAssignedIdentity { + /** + * Azure Active Directory principal ID associated with this Identity. + */ + @visibility(Lifecycle.Read) + principalId?: string; + + /** + * Client App Id associated with this identity. + */ + @visibility(Lifecycle.Read) + clientId?: string; +} + +/** + * Properties of Cognitive Services account. + */ +model AccountProperties { + /** + * Gets the status of the cognitive services account at the time the operation was called. + */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; + + /** + * Endpoint of the created account. + */ + @visibility(Lifecycle.Read) + endpoint?: string; + + /** + * The internal identifier (deprecated, do not use this property). + */ + @visibility(Lifecycle.Read) + internalId?: string; + + /** + * Gets the capabilities of the cognitive services account. Each item indicates the capability of a specific feature. The values are read-only and for reference only. + */ + @visibility(Lifecycle.Read) + @identifiers(#["name"]) + capabilities?: SkuCapability[]; + + /** + * If the resource is migrated from an existing key. + */ + @visibility(Lifecycle.Read) + isMigrated?: boolean; + + /** + * Resource migration token. + */ + migrationToken?: string; + + /** + * Sku change info of account. + */ + @visibility(Lifecycle.Read) + skuChangeInfo?: SkuChangeInfo; + + /** + * Optional subdomain name used for token-based authentication. + */ + customSubDomainName?: string; + + /** + * A collection of rules governing the accessibility from specific network locations. + */ + networkAcls?: NetworkRuleSet; + + /** + * The encryption properties for this resource. + */ + encryption?: Encryption; + + /** + * The storage accounts for this resource. + */ + @identifiers(#["resourceId"]) + userOwnedStorage?: UserOwnedStorage[]; + + /** + * The user owned AML account properties. + */ + amlWorkspace?: UserOwnedAmlWorkspace; + + /** + * The private endpoint connection associated with the Cognitive Services account. + */ + @visibility(Lifecycle.Read) + privateEndpointConnections?: PrivateEndpointConnection[]; + + /** + * Whether or not public endpoint access is allowed for this account. + */ + publicNetworkAccess?: PublicNetworkAccess; + + /** + * The api properties for special APIs. + */ + apiProperties?: ApiProperties; + + /** + * Gets the date of cognitive services account creation. + */ + @visibility(Lifecycle.Read) + dateCreated?: string; + + /** + * The call rate limit Cognitive Services account. + */ + @visibility(Lifecycle.Read) + callRateLimit?: CallRateLimit; + + /** + * The flag to enable dynamic throttling. + */ + dynamicThrottlingEnabled?: boolean; + + /** + * The flag to disable stored completions. + */ + storedCompletionsDisabled?: boolean; + + @visibility(Lifecycle.Read) + quotaLimit?: QuotaLimit; + + restrictOutboundNetworkAccess?: boolean; + allowedFqdnList?: string[]; + disableLocalAuth?: boolean; + + /** + * Dictionary of + */ + @visibility(Lifecycle.Read) + endpoints?: Record; + + @visibility(Lifecycle.Create, Lifecycle.Update) + restore?: boolean; + + /** + * The deletion date, only available for deleted account. + */ + @visibility(Lifecycle.Read) + deletionDate?: string; + + /** + * The scheduled purge date, only available for deleted account. + */ + @visibility(Lifecycle.Read) + scheduledPurgeDate?: string; + + /** + * The multiregion settings of Cognitive Services account. + */ + locations?: MultiRegionSettings; + + /** + * The commitment plan associations of Cognitive Services account. + */ + @visibility(Lifecycle.Read) + @identifiers(#["commitmentPlanId"]) + commitmentPlanAssociations?: CommitmentPlanAssociation[]; + + /** + * The abuse penalty. + */ + @visibility(Lifecycle.Read) + abusePenalty?: AbusePenalty; + + /** + * Cognitive Services Rai Monitor Config. + */ + raiMonitorConfig?: RaiMonitorConfig; + + networkInjections?: NetworkInjection[]; + + /** + * Specifies whether this resource support project management as child resources, used as containers for access management, data isolation and cost in AI Foundry. + */ + allowProjectManagement?: boolean; + + /** + * Specifies the project, by project name, that is targeted when data plane endpoints are called without a project parameter. + */ + defaultProject?: string; + + /** + * Specifies the projects, by project name, that are associated with this resource. + */ + associatedProjects?: string[]; +} + +/** + * SkuCapability indicates the capability of a certain feature. + */ +model SkuCapability { + /** + * The name of the SkuCapability. + */ + name?: string; + + /** + * The value of the SkuCapability. + */ + value?: string; +} + +/** + * Sku change info of account. + */ +model SkuChangeInfo { + /** + * Gets the count of downgrades. + */ + countOfDowngrades?: float32; + + /** + * Gets the count of upgrades after downgrades. + */ + countOfUpgradesAfterDowngrades?: float32; + + /** + * Gets the last change date. + */ + lastChangeDate?: string; +} + +/** + * A set of rules governing the network accessibility. + */ +model NetworkRuleSet { + /** + * The default action when no rule from ipRules and from virtualNetworkRules match. This is only used after the bypass property has been evaluated. + */ + defaultAction?: NetworkRuleAction; + + /** + * Setting for trusted services. + */ + bypass?: ByPassSelection; + + /** + * The list of IP address rules. + */ + @identifiers(#[]) + ipRules?: IpRule[]; + + /** + * The list of virtual network rules. + */ + virtualNetworkRules?: VirtualNetworkRule[]; +} + +/** + * A rule governing the accessibility from a specific ip address or ip range. + */ +model IpRule { + /** + * An IPv4 address range in CIDR notation, such as '124.56.78.91' (simple IP address) or '124.56.78.0/24' (all addresses that start with 124.56.78). + */ + value: string; +} + +/** + * A rule governing the accessibility from a specific virtual network. + */ +model VirtualNetworkRule { + /** + * Full resource id of a vnet subnet, such as '/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/subnet1'. + */ + id: string; + + /** + * Gets the state of virtual network rule. + */ + state?: string; + + /** + * Ignore missing vnet service endpoint or not. + */ + ignoreMissingVnetServiceEndpoint?: boolean; +} + +/** + * Properties to configure Encryption + */ +model Encryption { + /** + * Properties of KeyVault + */ + keyVaultProperties?: KeyVaultProperties; + + /** + * Enumerates the possible value of keySource for Encryption + */ + keySource?: KeySource = KeySource.`Microsoft.KeyVault`; +} + +/** + * Properties to configure keyVault Properties + */ +model KeyVaultProperties { + /** + * Name of the Key from KeyVault + */ + keyName?: string; + + /** + * Version of the Key from KeyVault + */ + keyVersion?: string; + + /** + * Uri of KeyVault + */ + keyVaultUri?: string; + + identityClientId?: string; +} + +/** + * The user owned storage for Cognitive Services account. + */ +model UserOwnedStorage { + /** + * Full resource id of a Microsoft.Storage resource. + */ + resourceId?: string; + + identityClientId?: string; +} + +/** + * The user owned AML account for Cognitive Services account. + */ +model UserOwnedAmlWorkspace { + /** + * Full resource id of a AML account resource. + */ + resourceId?: string; + + /** + * Identity Client id of a AML account resource. + */ + identityClientId?: string; +} + +/** + * Properties of the PrivateEndpointConnectProperties. + */ +model PrivateEndpointConnectionProperties { + /** + * The resource of private end point. + */ + privateEndpoint?: Azure.ResourceManager.CommonTypes.PrivateEndpoint; + + /** + * A collection of information about the state of the connection between service consumer and provider. + */ + privateLinkServiceConnectionState: Azure.ResourceManager.CommonTypes.PrivateLinkServiceConnectionState; + + /** + * The provisioning state of the private endpoint connection resource. + */ + @visibility(Lifecycle.Read) + provisioningState?: Azure.ResourceManager.CommonTypes.PrivateEndpointConnectionProvisioningState; + + /** + * The private link resource group ids. + */ + groupIds?: string[]; +} + +/** + * The api properties for special APIs. + */ +model ApiProperties { + ...Record; + + /** + * (QnAMaker Only) The runtime endpoint of QnAMaker. + */ + qnaRuntimeEndpoint?: string; + + /** + * (QnAMaker Only) The Azure Search endpoint key of QnAMaker. + */ + qnaAzureSearchEndpointKey?: string; + + /** + * (QnAMaker Only) The Azure Search endpoint id of QnAMaker. + */ + qnaAzureSearchEndpointId?: string; + + /** + * (Bing Search Only) The flag to enable statistics of Bing Search. + */ + statisticsEnabled?: boolean; + + /** + * (Personalization Only) The flag to enable statistics of Bing Search. + */ + @maxLength(1000) + @pattern("^( *)Endpoint=sb://(.*);( *)SharedAccessKeyName=(.*);( *)SharedAccessKey=(.*)$") + eventHubConnectionString?: string; + + /** + * (Personalization Only) The storage account connection string. + */ + @maxLength(1000) + @pattern("^(( *)DefaultEndpointsProtocol=(http|https)( *);( *))?AccountName=(.*)AccountKey=(.*)EndpointSuffix=(.*)$") + storageAccountConnectionString?: string; + + /** + * (Metrics Advisor Only) The Azure AD Client Id (Application Id). + */ + @maxLength(500) + aadClientId?: string; + + /** + * (Metrics Advisor Only) The Azure AD Tenant Id. + */ + @maxLength(500) + aadTenantId?: string; + + /** + * (Metrics Advisor Only) The super user of Metrics Advisor. + */ + @maxLength(500) + superUser?: string; + + /** + * (Metrics Advisor Only) The website name of Metrics Advisor. + */ + @maxLength(500) + websiteName?: string; +} + +/** + * The call rate limit Cognitive Services account. + */ +model CallRateLimit { + /** + * The count value of Call Rate Limit. + */ + count?: float32; + + /** + * The renewal period in seconds of Call Rate Limit. + */ + renewalPeriod?: float32; + + @identifiers(#["key"]) + rules?: ThrottlingRule[]; +} + +model ThrottlingRule { + key?: string; + renewalPeriod?: float32; + count?: float32; + minCount?: float32; + dynamicThrottlingEnabled?: boolean; + + @identifiers(#["path", "method"]) + matchPatterns?: RequestMatchPattern[]; +} + +model RequestMatchPattern { + path?: string; + method?: string; +} + +model QuotaLimit { + count?: float32; + renewalPeriod?: float32; + + @identifiers(#["key"]) + rules?: ThrottlingRule[]; +} + +/** + * The multiregion settings Cognitive Services account. + */ +model MultiRegionSettings { + /** + * Multiregion routing methods. + */ + routingMethod?: RoutingMethods; + + @identifiers(#["name"]) + regions?: RegionSetting[]; +} + +/** + * The call rate limit Cognitive Services account. + */ +model RegionSetting { + /** + * Name of the region. + */ + name?: string; + + /** + * A value for priority or weighted routing methods. + */ + value?: float32; + + /** + * Maps the region to the regional custom subdomain. + */ + customsubdomain?: string; +} + +/** + * The commitment plan association. + */ +model CommitmentPlanAssociation { + /** + * The Azure resource id of the commitment plan. + */ + commitmentPlanId?: string; + + /** + * The location of of the commitment plan. + */ + commitmentPlanLocation?: string; +} + +/** + * The abuse penalty. + */ +model AbusePenalty { + /** + * The action of AbusePenalty. + */ + action?: AbusePenaltyAction; + + /** + * The percentage of rate limit. + */ + rateLimitPercentage?: float32; + + /** + * The datetime of expiration of the AbusePenalty. + */ + // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. + expiration?: utcDateTime; +} + +/** + * Cognitive Services Rai Monitor Config. + */ +model RaiMonitorConfig { + /** + * The storage resource Id. + */ + adxStorageResourceId?: string; + + /** + * The identity client Id to access the storage. + */ + identityClientId?: string; +} + +/** + * Specifies in AI Foundry where virtual network injection occurs to secure scenarios like Agents entirely within the user's private network, eliminating public internet exposure while maintaining control over network configurations and resources. + */ +model NetworkInjection { + /** + * Specifies what features in AI Foundry network injection applies to. Currently only supports 'agent' for agent scenarios. 'none' means no network injection. + */ + scenario?: ScenarioType; + + /** + * Specify the subnet for which your Agent Client is injected into. + */ + subnetArmId?: Azure.Core.armResourceIdentifier<[ + { + type: "Microsoft.Network/virtualNetworks/subnets"; + } + ]>; + + /** + * Boolean to enable Microsoft Managed Network for subnet delegation + */ + useMicrosoftManagedNetwork?: boolean; +} + +/** + * The access keys for the cognitive services account. + */ +model ApiKeys { + /** + * Gets the value of key 1. + */ + key1?: string; + + /** + * Gets the value of key 2. + */ + key2?: string; +} + +/** + * Regenerate key parameters. + */ +model RegenerateKeyParameters { + /** + * key name to generate (Key1|Key2) + */ + keyName: KeyName; +} + +/** + * The Get Skus operation response. + */ +model ResourceSkuListResult is Azure.Core.Page; + +/** + * Describes an available Cognitive Services SKU. + */ +model ResourceSku { + /** + * The type of resource the SKU applies to. + */ + resourceType?: string; + + /** + * The name of SKU. + */ + name?: string; + + /** + * Specifies the tier of Cognitive Services account. + */ + tier?: string; + + /** + * The Kind of resources that are supported in this SKU. + */ + kind?: string; + + /** + * The set of locations that the SKU is available. + */ + locations?: string[]; + + /** + * The restrictions because of which SKU cannot be used. This is empty if there are no restrictions. + */ + @identifiers(#[]) + restrictions?: ResourceSkuRestrictions[]; +} + +/** + * Describes restrictions of a SKU. + */ +model ResourceSkuRestrictions { + /** + * The type of restrictions. + */ + type?: ResourceSkuRestrictionsType; + + /** + * The value of restrictions. If the restriction type is set to location. This would be different locations where the SKU is restricted. + */ + values?: string[]; + + /** + * The information about the restriction where the SKU cannot be used. + */ + restrictionInfo?: ResourceSkuRestrictionInfo; + + /** + * The reason for restriction. + */ + reasonCode?: ResourceSkuRestrictionsReasonCode; +} + +model ResourceSkuRestrictionInfo { + /** + * Locations where the SKU is restricted + */ + locations?: string[]; + + /** + * List of availability zones where the SKU is restricted. + */ + zones?: string[]; +} + +/** + * The list of cognitive services accounts operation response. + */ +model AccountSkuListResult { + /** + * Gets the list of Cognitive Services accounts and their properties. + */ + @identifiers(#["sku/name", "resourceType"]) + value?: AccountSku[]; +} + +/** + * Cognitive Services resource type and SKU. + */ +model AccountSku { + /** + * Resource Namespace and Type + */ + resourceType?: string; + + /** + * The SKU of Cognitive Services account. + */ + sku?: Sku; +} + +/** + * The response to a list usage request. + */ +model UsageListResult { + /** + * The link used to get the next page of Usages. + */ + @nextLink + nextLink?: string; + + /** + * The list of usages for Cognitive Service account. + */ + @pageItems + @identifiers(#["name"]) + value?: Usage[]; +} + +/** + * The usage data for a usage request. + */ +model Usage { + /** + * The unit of the metric. + */ + unit?: UnitType; + + /** + * The name information for the metric. + */ + name?: MetricName; + + /** + * The quota period used to summarize the usage values. + */ + quotaPeriod?: string; + + /** + * Maximum value for this metric. + */ + limit?: float64; + + /** + * Current value for this metric. + */ + currentValue?: float64; + + /** + * Next reset time for current quota. + */ + nextResetTime?: string; + + /** + * Cognitive Services account quota usage status. + */ + status?: QuotaUsageStatus; +} + +/** + * A metric name. + */ +model MetricName { + /** + * The name of the metric. + */ + value?: string; + + /** + * The friendly name of the metric. + */ + localizedValue?: string; +} + +/** + * The list of cognitive services accounts operation response. + */ +model AccountModelListResult { + /** + * The link used to get the next page of Model. + */ + @nextLink + nextLink?: string; + + /** + * Gets the list of Cognitive Services accounts Model and their properties. + */ + @pageItems + @identifiers(#["name", "format", "version"]) + value?: AccountModel[]; +} + +/** + * Cognitive Services account Model. + */ +model AccountModel extends DeploymentModel { + /** + * Properties of Cognitive Services account deployment model. + */ + baseModel?: DeploymentModel; + + /** + * If the model is default version. + */ + isDefaultVersion?: boolean; + + /** + * The list of Model Sku. + */ + @identifiers(#["name"]) + skus?: ModelSku[]; + + /** + * The max capacity. + */ + maxCapacity?: int32; + + /** + * The capabilities. + */ + capabilities?: Record; + + /** + * The capabilities for finetune models. + */ + finetuneCapabilities?: Record; + + /** + * Cognitive Services account ModelDeprecationInfo. + */ + deprecation?: ModelDeprecationInfo; + + /** + * Configuration for model replacement. + */ + replacementConfig?: ReplacementConfig; + + /** + * Asset identifier for the model in the model catalog. + */ + modelCatalogAssetId?: string; + + /** + * Model lifecycle status. + */ + lifecycleStatus?: ModelLifecycleStatus; + + /** + * Metadata pertaining to creation and last modification of the resource. + */ + @visibility(Lifecycle.Read) + systemData?: SystemData; +} + +/** + * Properties of Cognitive Services account deployment model. + */ +model DeploymentModel { + /** + * Deployment model publisher. + */ + publisher?: string; + + /** + * Deployment model format. + */ + format?: string; + + /** + * Deployment model name. + */ + name?: string; + + /** + * Optional. Deployment model version. If version is not specified, a default version will be assigned. The default version is different for different models and might change when there is new version available for a model. Default version for a model could be found from list models API. + */ + version?: string; + + /** + * Optional. Deployment model source ARM resource ID. + */ + source?: string; + + /** + * Optional. Source of the model, another Microsoft.CognitiveServices accounts ARM resource ID. + */ + sourceAccount?: Azure.Core.armResourceIdentifier<[ + { + type: "Microsoft.CognitiveServices/accounts"; + } + ]>; + + /** + * The call rate limit Cognitive Services account. + */ + @visibility(Lifecycle.Read) + callRateLimit?: CallRateLimit; +} + +/** + * Describes an available Cognitive Services Model SKU. + */ +model ModelSku { + /** + * The name of the model SKU. + */ + name?: string; + + /** + * The usage name of the model SKU. + */ + usageName?: string; + + /** + * The datetime of deprecation of the model SKU. + */ + // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. + deprecationDate?: utcDateTime; + + /** + * The capacity configuration. + */ + capacity?: CapacityConfig; + + /** + * The list of rateLimit. + */ + @identifiers(#[]) + rateLimits?: CallRateLimit[]; + + /** + * The list of billing meter info. + */ + @identifiers(#[]) + cost?: BillingMeterInfo[]; +} + +/** + * The capacity configuration. + */ +model CapacityConfig { + /** + * The minimum capacity. + */ + minimum?: int32; + + /** + * The maximum capacity. + */ + maximum?: int32; + + /** + * The minimal incremental between allowed values for capacity. + */ + step?: int32; + + /** + * The default capacity. + */ + default?: int32; + + /** + * The array of allowed values for capacity. + */ + allowedValues?: int32[]; +} + +model BillingMeterInfo { + name?: string; + meterId?: string; + unit?: string; +} + +/** + * Cognitive Services account ModelDeprecationInfo. + */ +model ModelDeprecationInfo { + /** + * The datetime of deprecation of the fineTune Model. + */ + fineTune?: string; + + /** + * The datetime of deprecation of the inference Model. + */ + inference?: string; + + /** + * Indicates whether the deprecation date is a confirmed planned end-of-life date or an estimated deprecation date. When 'Planned', the deprecation date represents a confirmed and communicated model end-of-life date. When 'Tentative', the deprecation date is an estimated timeline that may be subject to change. + */ + deprecationStatus?: DeprecationStatus; +} + +/** + * Configuration for model replacement. + */ +model ReplacementConfig { + /** + * The name of the replacement model. + */ + targetModelName?: string; + + /** + * The version of the replacement model. + */ + targetModelVersion?: string; + + /** + * The date when automatic upgrade should start. This applies to deployments with the OnceNewDefaultVersionAvailable upgrade option. + */ + // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. + autoUpgradeStartDate?: utcDateTime; + + /** + * The number of days before deprecation date to trigger upgrade. This applies to deployments with the OnceCurrentVersionExpired upgrade option. + */ + upgradeOnExpiryLeadTimeDays?: int32; +} + +/** + * Check SKU availability parameter. + */ +model CheckSkuAvailabilityParameter { + /** + * The SKU of the resource. + */ + skus: string[]; + + /** + * The kind (type) of cognitive service account. + */ + kind: string; + + /** + * The Type of the resource. + */ + type: string; +} + +/** + * Check SKU availability result list. + */ +model SkuAvailabilityListResult { + /** + * Check SKU availability result list. + */ + @identifiers(#["skuName", "type", "kind"]) + value?: SkuAvailability[]; +} + +/** + * SKU availability. + */ +model SkuAvailability { + /** + * The kind (type) of cognitive service account. + */ + kind?: string; + + /** + * The Type of the resource. + */ + type?: string; + + /** + *The name of SKU. + */ + skuName?: string; + + /** + * Indicates the given SKU is available or not. + */ + skuAvailable?: boolean; + + /** + * Reason why the SKU is not available. + */ + reason?: string; + + /** + * Additional error message. + */ + message?: string; +} + +/** + * The list of cognitive services accounts operation response. + */ +model CommitmentTierListResult { + /** + * The link used to get the next page of CommitmentTier. + */ + @nextLink + nextLink?: string; + + /** + * Gets the list of Cognitive Services accounts CommitmentTier and their properties. + */ + @pageItems + @visibility(Lifecycle.Read) + @identifiers(#["kind", "tier", "skuName", "hostingModel", "planType"]) + value?: CommitmentTier[]; +} + +/** + * Cognitive Services account commitment tier. + */ +model CommitmentTier { + /** + * The kind (type) of cognitive service account. + */ + kind?: string; + + /** + * The name of the SKU. Ex - P3. It is typically a letter+number code + */ + skuName?: string; + + /** + * Account hosting model. + */ + hostingModel?: HostingModel; + + /** + * Commitment plan type. + */ + planType?: string; + + /** + * Commitment period commitment tier. + */ + tier?: string; + + /** + * Commitment period commitment max count. + */ + maxCount?: int32; + + /** + * Cognitive Services account commitment quota. + */ + quota?: CommitmentQuota; + + /** + * Cognitive Services account commitment cost. + */ + cost?: CommitmentCost; +} + +/** + * Cognitive Services account commitment quota. + */ +model CommitmentQuota { + /** + * Commitment quota quantity. + */ + quantity?: int64; + + /** + * Commitment quota unit. + */ + unit?: string; +} + +/** + * Cognitive Services account commitment cost. + */ +model CommitmentCost { + /** + * Commitment meter Id. + */ + commitmentMeterId?: string; + + /** + * Overage meter Id. + */ + overageMeterId?: string; +} + +/** + * The list of cognitive services models. + */ +model ModelListResult { + /** + * The link used to get the next page of Model. + */ + @nextLink + nextLink?: string; + + /** + * Gets the list of Cognitive Services accounts Model and their properties. + */ + @pageItems + @identifiers(#[ + "kind", + "skuName", + "/model/name", + "/model/format", + "/model/version" + ]) + value?: Model[]; +} + +/** + * Cognitive Services Model. + */ +model Model { + /** + * Cognitive Services account Model. + */ + `model`?: AccountModel; + + /** + * The kind (type) of cognitive service account. + */ + kind?: string; + + /** + * The name of SKU. + */ + skuName?: string; + + /** + * The description of the model. + */ + description?: string; +} + +model ModelCapacityListResultValueItem + extends Azure.ResourceManager.CommonTypes.ProxyResource { + /** + * The location of the Model Sku Capacity. + */ + location?: string; + + /** + * Cognitive Services account ModelSkuCapacity. + */ + properties?: ModelSkuCapacityProperties; +} + +/** + * Cognitive Services account ModelSkuCapacity. + */ +model ModelSkuCapacityProperties { + /** + * Properties of Cognitive Services account deployment model. + */ + `model`?: DeploymentModel; + + skuName?: string; + + /** + * The available capacity for deployment with this model and sku. + */ + availableCapacity?: float32; + + /** + * The available capacity for deployment with a fine-tune version of this model and sku. + */ + availableFinetuneCapacity?: float32; +} + +/** + * Check Domain availability parameter. + */ +model CheckDomainAvailabilityParameter { + /** + * The subdomain name to use. + */ + subdomainName: string; + + /** + * The Type of the resource. + */ + type: string; + + /** + * The kind (type) of cognitive service account. + */ + kind?: string; +} + +/** + * Domain availability. + */ +model DomainAvailability { + /** + * Indicates the given SKU is available or not. + */ + isSubdomainAvailable?: boolean; + + /** + * Reason why the SKU is not available. + */ + reason?: string; + + /** + * The subdomain name to use. + */ + subdomainName?: string; + + /** + * The Type of the resource. + */ + type?: string; + + /** + * The kind (type) of cognitive service account. + */ + kind?: string; +} + +/** + * Calculate Model Capacity parameter. + */ +model CalculateModelCapacityParameter { + /** + * Properties of Cognitive Services account deployment model. + */ + `model`?: DeploymentModel; + + /** + * The name of SKU. + */ + skuName?: string; + + /** + * List of Model Capacity Calculator Workload. + */ + @identifiers(#[]) + workloads?: ModelCapacityCalculatorWorkload[]; +} + +/** + * Model Capacity Calculator Workload. + */ +model ModelCapacityCalculatorWorkload { + /** + * Request per minute. + */ + requestPerMinute?: int64; + + /** + * Dictionary, Model Capacity Calculator Workload Parameters. + */ + requestParameters?: ModelCapacityCalculatorWorkloadRequestParam; +} + +/** + * Dictionary, Model Capacity Calculator Workload Parameters. + */ +model ModelCapacityCalculatorWorkloadRequestParam { + /** + * Average prompt tokens. + */ + avgPromptTokens?: int64; + + /** + * Average generated tokens. + */ + avgGeneratedTokens?: int64; +} + +/** + * Calculate Model Capacity result. + */ +model CalculateModelCapacityResult { + /** + * Properties of Cognitive Services account deployment model. + */ + `model`?: DeploymentModel; + + skuName?: string; + + /** + * Model Estimated Capacity. + */ + estimatedCapacity?: CalculateModelCapacityResultEstimatedCapacity; +} + +/** + * Model Estimated Capacity. + */ +model CalculateModelCapacityResultEstimatedCapacity { + value?: int32; + deployableValue?: int32; +} + +/** + * A list of private endpoint connections + */ +model PrivateEndpointConnectionListResult { + /** + * Array of private endpoint connections + */ + @pageItems + value?: PrivateEndpointConnection[]; +} + +/** + * A list of private link resources + */ +model PrivateLinkResourceListResult { + /** + * Array of private link resources + */ + value?: PrivateLinkResource[]; +} + +/** + * A private link resource + */ +model PrivateLinkResource extends Azure.ResourceManager.CommonTypes.Resource { + /** + * Resource properties. + */ + properties?: PrivateLinkResourceProperties; +} + +/** + * Properties of a private link resource. + */ +model PrivateLinkResourceProperties { + /** + * The private link resource group id. + */ + @visibility(Lifecycle.Read) + groupId?: string; + + /** + * The private link resource required member names. + */ + @visibility(Lifecycle.Read) + requiredMembers?: string[]; + + /** + * The private link resource Private link DNS zone name. + */ + requiredZoneNames?: string[]; + + /** + * The private link resource display name. + */ + @visibility(Lifecycle.Read) + displayName?: string; +} + +/** + * Properties of Cognitive Services account deployment. + */ +model DeploymentProperties { + /** + * Gets the status of the resource at the time the operation was called. + */ + @visibility(Lifecycle.Read) + provisioningState?: DeploymentProvisioningState; + + /** + * Properties of Cognitive Services account deployment model. + */ + `model`?: DeploymentModel; + + /** + * Properties of Cognitive Services account deployment model. (Deprecated, please use Deployment.sku instead.) + */ + scaleSettings?: DeploymentScaleSettings; + + /** + * The capabilities. + */ + @visibility(Lifecycle.Read) + capabilities?: Record; + + /** + * The name of RAI policy. + */ + raiPolicyName?: string; + + /** + * The call rate limit Cognitive Services account. + */ + @visibility(Lifecycle.Read) + callRateLimit?: CallRateLimit; + + @visibility(Lifecycle.Read) + @identifiers(#["key"]) + rateLimits?: ThrottlingRule[]; + + /** + * Deployment model version upgrade option. + */ + versionUpgradeOption?: DeploymentModelVersionUpgradeOption; + + /** + * If the dynamic throttling is enabled. + */ + @visibility(Lifecycle.Read) + dynamicThrottlingEnabled?: boolean; + + /** + * The current capacity. + */ + currentCapacity?: int32; + + /** + * Internal use only. + */ + capacitySettings?: DeploymentCapacitySettings; + + /** + * The name of parent deployment. + */ + parentDeploymentName?: string; + + /** + * Specifies the deployment name that should serve requests when the request would have otherwise been throttled due to reaching current deployment throughput limit. + */ + spilloverDeploymentName?: string; + + /** + * The service tier for the deployment. Determines the pricing and performance level for request processing. Use 'Default' for standard pricing or 'Priority' for higher-priority processing with premium pricing. Note: Pause operations are only supported on Standard, DataZoneStandard, and GlobalStandard SKUs. + */ + serviceTier?: ServiceTier | null; + + /** + * The state of the deployment. Controls whether the deployment is accepting inference requests. Use 'Running' for active deployments that process requests, or 'Paused' to temporarily stop inference while preserving the deployment configuration. + */ + deploymentState?: DeploymentState | null; +} + +/** + * Properties of Cognitive Services account deployment model. (Deprecated, please use Deployment.sku instead.) + */ +model DeploymentScaleSettings { + /** + * Deployment scale type. + */ + scaleType?: DeploymentScaleType; + + /** + * Deployment capacity. + */ + capacity?: int32; + + /** + * Deployment active capacity. This value might be different from `capacity` if customer recently updated `capacity`. + */ + @visibility(Lifecycle.Read) + activeCapacity?: int32; +} + +/** + * Internal use only. + */ +model DeploymentCapacitySettings { + /** + * The designated capacity. + */ + @minValue(0) + designatedCapacity?: int32; + + /** + * The priority of this capacity setting. + */ + @minValue(0) + priority?: int32; +} + +/** + * The object being used to update tags and sku of a resource, in general used for PATCH operations. + */ +model PatchResourceTagsAndSku extends PatchResourceTags { + /** + * The resource model definition representing SKU + */ + sku?: Sku; +} + +/** + * The object being used to update tags of a resource, in general used for PATCH operations. + */ +model PatchResourceTags { + /** + * Resource tags. + */ + @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) + tags?: Record; +} + +/** + * The list of cognitive services accounts operation response. + */ +model DeploymentSkuListResult { + /** + * The link used to get the next page of deployment skus. + */ + @nextLink + nextLink?: string; + + /** + * Gets the list of Cognitive Services accounts deployment skus. + */ + @pageItems + @identifiers(#["resourceType"]) + @visibility(Lifecycle.Read) + value?: SkuResource[]; +} + +/** + * Properties of Cognitive Services account resource sku resource properties. + */ +model SkuResource { + /** + * The resource type name. + */ + resourceType?: string; + + /** + * The resource model definition representing SKU + */ + sku?: Sku; + + /** + * The capacity configuration. + */ + capacity?: CapacityConfig; +} + +/** + * Properties of Cognitive Services account commitment plan. + */ +model CommitmentPlanProperties { + /** + * Gets the status of the resource at the time the operation was called. + */ + @visibility(Lifecycle.Read) + provisioningState?: CommitmentPlanProvisioningState; + + /** + * Commitment plan guid. + */ + commitmentPlanGuid?: string; + + /** + * Account hosting model. + */ + hostingModel?: HostingModel; + + /** + * Commitment plan type. + */ + planType?: string; + + /** + * Cognitive Services account commitment period. + */ + current?: CommitmentPeriod; + + /** + * AutoRenew commitment plan. + */ + autoRenew?: boolean; + + /** + * Cognitive Services account commitment period. + */ + next?: CommitmentPeriod; + + /** + * Cognitive Services account commitment period. + */ + @visibility(Lifecycle.Read) + last?: CommitmentPeriod; + + /** + * The list of ProvisioningIssue. + */ + @visibility(Lifecycle.Read) + provisioningIssues?: string[]; +} + +/** + * Cognitive Services account commitment period. + */ +model CommitmentPeriod { + /** + * Commitment period commitment tier. + */ + tier?: string; + + /** + * Commitment period commitment count. + */ + count?: int32; + + /** + * Cognitive Services account commitment quota. + */ + @visibility(Lifecycle.Read) + quota?: CommitmentQuota; + + /** + * Commitment period start date. + */ + @visibility(Lifecycle.Read) + startDate?: string; + + /** + * Commitment period end date. + */ + @visibility(Lifecycle.Read) + endDate?: string; +} + +/** + * Properties to EncryptionScope + */ +model EncryptionScopeProperties extends Encryption { + /** + * Gets the status of the resource at the time the operation was called. + */ + @visibility(Lifecycle.Read) + provisioningState?: EncryptionScopeProvisioningState; + + /** + * The encryptionScope state. + */ + state?: EncryptionScopeState; +} + +/** + * Azure OpenAI Content Filters properties. + */ +model RaiPolicyProperties { + /** + * Content Filters policy type. + */ + @visibility(Lifecycle.Read) + type?: RaiPolicyType; + + /** + * Rai policy mode. The enum value mapping is as below: Default = 0, Deferred=1, Blocking=2, Asynchronous_filter =3. Please use 'Asynchronous_filter' after 2025-06-01. It is the same as 'Deferred' in previous version. + */ + mode?: RaiPolicyMode; + + /** + * Name of Rai policy. + */ + basePolicyName?: string; + + /** + * The list of Content Filters. + */ + @identifiers(#["name"]) + contentFilters?: RaiPolicyContentFilter[]; + + /** + * The list of custom Blocklist. + */ + @identifiers(#[]) + customBlocklists?: CustomBlocklistConfig[]; + + /** + * The list of custom rai topics. + */ + @identifiers(#[]) + customTopics?: CustomTopicConfig[]; + + /** + * The list of Safety Providers. + */ + @identifiers(#[]) + safetyProviders?: SafetyProviderConfig[]; +} + +/** + * Azure OpenAI Content Filter. + */ +model RaiPolicyContentFilter { + /** + * Name of ContentFilter. + */ + name?: string; + + /** + * If the ContentFilter is enabled. + */ + enabled?: boolean; + + /** + * Level at which content is filtered. + */ + severityThreshold?: ContentLevel; + + /** + * If blocking would occur. + */ + blocking?: boolean; + + /** + * Content source to apply the Content Filters. + */ + source?: RaiPolicyContentSource; + + /** + * The action types to apply to the content filters + */ + action?: RaiActionType; +} + +/** + * Gets or sets the source to which filter applies. + */ +model CustomBlocklistConfig extends RaiBlocklistConfig { + /** + * Content source to apply the Content Filters. + */ + source?: RaiPolicyContentSource; +} + +/** + * Azure OpenAI blocklist config. + */ +model RaiBlocklistConfig { + /** + * Name of ContentFilter. + */ + blocklistName?: string; + + /** + * If blocking would occur. + */ + blocking?: boolean; +} + +/** + * Gets or sets the source to which filter applies. + */ +model CustomTopicConfig extends RaiTopicConfig { + /** + * Content source to apply the Content Filters. + */ + source?: RaiPolicyContentSource; +} + +/** + * Azure OpenAI RAI topic config. + */ +model RaiTopicConfig { + /** + * Name of RAI topic. + */ + topicName?: string; + + /** + * If blocking would occur. + */ + blocking?: boolean; +} + +/** + * Gets or sets the source to which safety providers applies. + */ +model SafetyProviderConfig extends RaiSafetyProviderConfig { + /** + * Content source to apply the Content Filters. + */ + source?: RaiPolicyContentSource; +} + +/** + * Azure OpenAI RAI safety provider config. + */ +model RaiSafetyProviderConfig { + /** + * Name of RAI Safety Provider. + */ + safetyProviderName?: string; + + /** + * If blocking would occur. + */ + blocking?: boolean; +} + +/** + * RAI Custom Blocklist properties. + */ +model RaiBlocklistProperties { + /** + * Description of the block list. + */ + description?: string; +} + +/** + * The list of cognitive services RAI Blocklist Items. + */ +model RaiBlockListItemsResult { + /** + * The link used to get the next page of RaiBlocklistItems. + */ + @nextLink + nextLink?: string; + + /** + * The list of RaiBlocklistItems. + */ + @pageItems + @identifiers(#["name"]) + value?: RaiBlocklistItem[]; +} + +/** + * RAI Custom Blocklist Item properties. + */ +model RaiBlocklistItemProperties { + /** + * Pattern to match against. + */ + pattern?: string; + + /** + * If the pattern is a regex pattern. + */ + isRegex?: boolean; +} + +/** + * The Cognitive Services RaiBlocklist Item request body. + */ +model RaiBlocklistItemBulkRequest { + name?: string; + + /** + * Properties of Cognitive Services RaiBlocklist Item. + */ + properties?: RaiBlocklistItemProperties; +} + +/** + * RAI Custom Topic properties. + */ +model RaiTopicProperties { + /** + * The unique identifier of the custom topic. + */ + topicId?: string; + + /** + * The name of the custom topic. + */ + topicName?: string; + + /** + * Description of the custom topic. + */ + description?: string; + + /** + * Sample blob url for the custom topic. + */ + sampleBlobUrl?: string; + + /** + * Status of the custom topic. + */ + status?: string; + + /** + * Failed reason if the status is Failed. + */ + failedReason?: string; + + /** + * Creation time of the custom topic. + */ + // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. + createdAt?: utcDateTime; + + /** + * Last modified time of the custom topic. + */ + // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. + lastModifiedAt?: utcDateTime; +} + +/** + * The list of cognitive services RAI External Safety Providers. + */ +model RaiExternalSafetyProviderResult { + /** + * The link used to get the next page of Rai External Safety Provider. + */ + @nextLink + nextLink?: string; + + /** + * The list of RaiExternalSafetyProvider. + */ + @pageItems + @identifiers(#["name"]) + value?: RaiExternalSafetyProviderSchema[]; +} + +/** + * RAI External SafetyProvider schema properties. + */ +model RaiExternalSafetyProviderSchemaProperties { + /** + * The unique identifier of the safety provider. + */ + providerId?: string; + + /** + * Name of the safety provider. + */ + providerName?: string; + + /** + * Safety provider mode sync/async. + */ + mode?: string; + + /** + * Webhook URL for the safety provider. + */ + url?: url; + + /** + * The name of the secret in Key Vault that contains the api key to access the webhook. + */ + secretName?: string; + + /** + * The managed identity to access the Key Vault. + */ + managedIdentity?: string; + + /** + * The Key Vault URI that contains the api key for safety provider urls. + */ + keyVaultUri?: url; + + /** + * Creation time of the safety provider. + */ + @visibility(Lifecycle.Read) + // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. + createdAt?: utcDateTime; + + /** + * Last modified time of the safety provider. + */ + @visibility(Lifecycle.Read) + // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. + lastModifiedAt?: utcDateTime; +} + +/** + * Cognitive Services Rai External Safety provider. + */ +model RaiExternalSafetyProvider + extends Azure.ResourceManager.CommonTypes.ProxyResource { + /** + * Resource Etag. + */ + @visibility(Lifecycle.Read) + etag?: string; + + /** + * Resource tags. + */ + @visibility(Lifecycle.Read) + tags?: Record; + + /** + * Properties of Cognitive Services Rai External Safety provider. + */ + properties?: RaiExternalSafetyProviderProperties; +} + +/** + * RAI External SafetyProvider properties. + */ +model RaiExternalSafetyProviderProperties { + /** + * The unique identifier of the safety provider. + */ + providerId?: string; + + /** + * Name of the safety provider. + */ + providerName?: string; + + /** + * Safety provider mode sync/async. + */ + mode?: string; + + /** + * Webhook URL for the safety provider. + */ + url?: url; + + /** + * Creation time of the safety provider. + */ + // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. + createdAt?: utcDateTime; + + /** + * Last modified time of the safety provider. + */ + // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. + lastModifiedAt?: utcDateTime; +} + +/** + * The list of cognitive services RAI Topics. + */ +model RaiTopicResult { + /** + * The link used to get the next page of RaiTopics. + */ + @nextLink + nextLink?: string; + + /** + * The list of RaiTopic. + */ + @pageItems + @identifiers(#["name"]) + value?: RaiTopic[]; +} + +/** + * RAI Tool Label properties. + */ +model RaiToolLabelProperties { + /** + * The unique tool connection name, e.g., 'Web_Search'. + */ + toolConnectionName: string; + + /** + * Account-level tool label definition. + */ + accountScope?: RaiToolLabelPropertiesAccountScope; + + /** + * List of project-level tool label definitions. + */ + projectScopes?: RaiToolLabelPropertiesProjectScopesItem[]; +} + +/** + * Account-level tool label definition. + */ +model RaiToolLabelPropertiesAccountScope { + /** + * Dictionary of label key-value pairs for the account scope. + */ + labelValues?: Record; +} + +model RaiToolLabelPropertiesProjectScopesItem { + /** + * Project name to which this scope applies. + */ + project: string; + + /** + * Dictionary of label key-value pairs for the project scope. + */ + labelValues: Record; +} + +/** + * The list of Cognitive Services RAI Tool Labels. + */ +model RaiToolLabelResult { + /** + * The link used to get the next page of RaiToolLabels. + */ + @nextLink + nextLink?: string; + + /** + * The list of RAI Tool Labels. + */ + @pageItems + @identifiers(#["name"]) + value?: RaiToolLabel[]; +} + +/** + * Azure OpenAI Content Filter Properties. + */ +model RaiContentFilterProperties { + /** + * Name of Content Filter. + */ + name?: string; + + /** + * If the Content Filter has multi severity levels(Low, Medium, or High). + */ + isMultiLevelFilter?: boolean; + + /** + * Content source to apply the Content Filters. + */ + source?: RaiPolicyContentSource; +} + +/** + * The commitment plan account association properties. + */ +model CommitmentPlanAccountAssociationProperties { + /** + * The Azure resource id of the account. + */ + accountId?: string; +} + +/** + * A list of NSP configurations for an Cognitive Services account. + */ +model NetworkSecurityPerimeterConfigurationList { + /** + * Array of NSP configurations List Result for an Cognitive Services account. + */ + @pageItems + @identifiers(#["id"]) + value?: NetworkSecurityPerimeterConfiguration[]; + + /** + * Link to retrieve next page of results. + */ + @nextLink + nextLink?: string; +} + +/** + * The properties of an NSP Configuration. + */ +model NetworkSecurityPerimeterConfigurationProperties { + /** + * Provisioning state of NetworkSecurityPerimeter configuration + */ + @visibility(Lifecycle.Read) + provisioningState?: string; + + /** + * List of Provisioning Issues + */ + @identifiers(#["name"]) + provisioningIssues?: ProvisioningIssue[]; + + /** + * Information about a linked Network Security Perimeter + */ + networkSecurityPerimeter?: NetworkSecurityPerimeter; + + /** + * Network Security Perimeter Configuration Association Information + */ + resourceAssociation?: NetworkSecurityPerimeterConfigurationAssociationInfo; + + /** + * Network Security Perimeter Profile Information + */ + profile?: NetworkSecurityPerimeterProfileInfo; +} + +model ProvisioningIssue { + /** + * Name of the NSP provisioning issue + */ + name?: string; + + /** + * Properties of Provisioning Issue + */ + properties?: ProvisioningIssueProperties; +} + +/** + * Properties of Provisioning Issue + */ +model ProvisioningIssueProperties { + /** + * Type of Issue + */ + issueType?: string; + + /** + * Severity of the issue + */ + severity?: string; + + /** + * Description of the issue + */ + description?: string; + + /** + * IDs of resources that can be associated to the same perimeter to remediate the issue. + */ + suggestedResourceIds?: Azure.Core.armResourceIdentifier[]; + + /** + * Optional array, suggested access rules + */ + suggestedAccessRules?: NetworkSecurityPerimeterAccessRule[]; +} + +/** + * Network Security Perimeter Access Rule + */ +model NetworkSecurityPerimeterAccessRule { + /** + * Network Security Perimeter Access Rule Name + */ + name?: string; + + /** + * Properties of Network Security Perimeter Access Rule + */ + properties?: NetworkSecurityPerimeterAccessRuleProperties; +} + +/** + * The Properties of Network Security Perimeter Rule + */ +model NetworkSecurityPerimeterAccessRuleProperties { + /** + * Direction of Access Rule + */ + direction?: NspAccessRuleDirection; + + /** + * Address prefixes for inbound rules + */ + addressPrefixes?: string[]; + + /** + * Subscriptions for inbound rules + */ + subscriptions?: NetworkSecurityPerimeterAccessRulePropertiesSubscriptionsItem[]; + + /** + * NetworkSecurityPerimeters for inbound rules + */ + networkSecurityPerimeters?: NetworkSecurityPerimeter[]; + + /** + * Fully qualified domain name for outbound rules + */ + fullyQualifiedDomainNames?: string[]; +} + +/** + * Subscription for inbound rule + */ +model NetworkSecurityPerimeterAccessRulePropertiesSubscriptionsItem { + /** + * Fully qualified identifier of subscription + */ + id?: string; +} + +/** + * Information about a linked Network Security Perimeter + */ +model NetworkSecurityPerimeter { + /** + * Fully qualified identifier of the resource + */ + id?: Azure.Core.armResourceIdentifier; + + /** + * Guid of the resource + */ + perimeterGuid?: string; + + /** + * Location of the resource + */ + location?: string; +} + +/** + * Network Security Perimeter Configuration Association Information + */ +model NetworkSecurityPerimeterConfigurationAssociationInfo { + /** + * Name of the resource association + */ + name?: string; + + /** + * Access Mode of the resource association + */ + accessMode?: string; +} + +/** + * Network Security Perimeter Profile Information + */ +model NetworkSecurityPerimeterProfileInfo { + /** + * Name of the resource profile + */ + name?: string; + + /** + * Access rules version of the resource profile + */ + accessRulesVersion?: int64; + + @identifiers(#[]) + accessRules?: NetworkSecurityPerimeterAccessRule[]; + + /** + * Current diagnostic settings version + */ + diagnosticSettingsVersion?: int64; + + /** + * List of enabled log categories + */ + enabledLogCategories?: string[]; +} + +/** + * The list of cognitive services Defender for AI Settings. + */ +model DefenderForAISettingResult { + /** + * The link used to get the next page of Defender for AI Settings. + */ + @nextLink + nextLink?: string; + + /** + * The list of Defender for AI Settings. + */ + @pageItems + @identifiers(#["name"]) + value?: DefenderForAISetting[]; +} + +/** + * The Defender for AI resource properties. + */ +model DefenderForAISettingProperties { + /** + * Defender for AI state on the AI resource. + */ + state?: DefenderForAISettingState; +} + +/** + * Properties of Cognitive Services Project'. + */ +model ProjectProperties { + /** + * Gets the status of the cognitive services project at the time the operation was called. + */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; + + /** + * The display name of the Cognitive Services Project. + */ + displayName?: string; + + /** + * The description of the Cognitive Services Project. + */ + description?: string; + + /** + * The list of endpoint for this Cognitive Services Project. + */ + @visibility(Lifecycle.Read) + endpoints?: Record; + + /** + * Indicates whether the project is the default project for the account. + */ + @visibility(Lifecycle.Read) + isDefault?: boolean; +} + +/** + * Connection property base schema. + */ +@discriminator("authType") +model ConnectionPropertiesV2 { + /** + * Authentication type of the connection target + */ + authType: ConnectionAuthType; + + /** + * Category of the connection + */ + category?: ConnectionCategory; + + @visibility(Lifecycle.Read) + createdByWorkspaceArmId?: Azure.Core.armResourceIdentifier; + + /** + * Provides the error message if the connection fails + */ + error?: string; + + // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. + + expiryTime?: utcDateTime; + + /** + * Group based on connection category + */ + @visibility(Lifecycle.Read) + group?: ConnectionGroup; + + isSharedToAll?: boolean; + + /** + * Store user metadata for this connection + */ + metadata?: Record; + + /** + * Specifies how private endpoints are used with this connection: 'Required', 'NotRequired', or 'NotApplicable'. + */ + peRequirement?: ManagedPERequirement; + + /** + * Specifies the status of private endpoints for this connection: 'Inactive', 'Active', or 'NotApplicable'. + */ + peStatus?: ManagedPEStatus; + + sharedUserList?: string[]; + + /** + * The connection URL to be used. + */ + target?: string; + + useWorkspaceManagedIdentity?: boolean; +} + +/** + * The properties that the Cognitive services connection will be updated with. + */ +model ConnectionUpdateContent { + /** + * The properties that the Cognitive services connection will be updated with. + */ + properties?: ConnectionPropertiesV2; +} + +model ConnectionPropertiesV2BasicResourceArmPaginatedResult { + @nextLink + nextLink?: string; + + @pageItems + value?: ConnectionPropertiesV2BasicResource[]; +} +/** + * A paginated list of Capability Host entities. + */ +model CapabilityHostResourceArmPaginatedResult { + /** + * The link to the next page of Capability Host objects. If null, there are no additional pages. + */ + @nextLink + nextLink?: string | null; + + /** + * An array of objects of type Capability Host. + */ + @pageItems + value?: CapabilityHost[]; +} + +model CapabilityHostProperties extends ResourceBase { + /** + * List of AI services connections. + */ + aiServicesConnections?: string[] | null; + + /** + * Kind of this capability host. + */ + capabilityHostKind?: CapabilityHostKind; + + /** + * Customer subnet info to help set up this capability host. + */ + customerSubnet?: string | null; + + /** + * Provisioning state for the CapabilityHost. + */ + @visibility(Lifecycle.Read) + provisioningState?: CapabilityHostProvisioningState; + + /** + * List of connection names from those available in the account or project to be used as a storage resource. + */ + storageConnections?: string[] | null; + + /** + * List of connection names from those available in the account or project to be used for Thread storage. + */ + threadStorageConnections?: string[] | null; + + /** + * List of connection names from those available in the account or project to be used for vector database (e.g. CosmosDB). + */ + vectorStoreConnections?: string[] | null; + + /** + * Whether public hosting environment is enabled for the capability host + */ + enablePublicHostingEnvironment?: boolean; +} + +model ResourceBase { + /** + * The asset description text. + */ + description?: string | null; + + /** + * Tag dictionary. Tags can be added, removed, and updated. + */ + tags?: Record | null; +} + +/** + * A paginated list of Project Capability Host entities. + */ +model ProjectCapabilityHostResourceArmPaginatedResult { + /** + * The link to the next page of Project Capability Host objects. If null, there are no additional pages. + */ + @nextLink + nextLink?: string | null; + + /** + * An array of objects of type Project Capability Host. + */ + @pageItems + value?: ProjectCapabilityHost[]; +} + +model ProjectCapabilityHostProperties { + /** + * List of AI services connections. + */ + aiServicesConnections?: string[] | null; + + /** + * List of connection names from those available in the account or project to be used for vector database (e.g. CosmosDB). + */ + vectorStoreConnections?: string[] | null; + + /** + * List of connection names from those available in the account or project to be used as a storage resource. + */ + storageConnections?: string[] | null; + + /** + * List of connection names from those available in the account or project to be used for Thread storage. + */ + threadStorageConnections?: string[] | null; + + /** + * Provisioning state for the CapabilityHost. + */ + @visibility(Lifecycle.Read) + provisioningState?: CapabilityHostProvisioningState; +} + +/** + * Properties of Quota Tier resource'. + */ +model QuotaTierProperties { + /** + * Name of the current quota tier for the subscription. + */ + @visibility(Lifecycle.Read) + currentTierName?: string; + + /** + * Gets the tier upgrade policy for the subscription. + */ + tierUpgradePolicy?: TierUpgradePolicy; + + /** + * The date on which the current tier was assigned to the subscription (UTC). + */ + @visibility(Lifecycle.Read) + // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. + assignmentDate?: utcDateTime; + + /** + * Information about the quota tier upgrade eligibility for the subscription. + */ + @visibility(Lifecycle.Read) + tierUpgradeEligibilityInfo?: QuotaTierUpgradeEligibilityInfo | null; +} + +/** + * Information about the quota tier upgrade eligibility for the subscription. + */ +model QuotaTierUpgradeEligibilityInfo { + /** + * Name of the next quota tier for the subscription. + */ + nextTierName?: string | null; + + /** + * Specifies whether an upgrade to the next quota tier is available. + */ + upgradeAvailabilityStatus?: UpgradeAvailabilityStatus; + + /** + * The date after which the current tier will be upgraded to the next tier if the TierUpgradePolicy is "OnceUpgradeIsAvailable" (UTC). + */ + + // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. + upgradeApplicableDate?: utcDateTime | null; + + /** + * Reason in case the subscription is not eligible for upgrade to the next tier. + */ + upgradeUnavailabilityReason?: string | null; +} + +/** + * Outbound Rule for the managed network of a cognitive services account. + */ +@discriminator("type") +model OutboundRule { + /** + * Category of a managed network Outbound Rule of a cognitive services account. + */ + category?: RuleCategory; + + /** + * Type of a managed network Outbound Rule of a cognitive services account. + */ + status?: RuleStatus; + + /** + * Type of a managed network Outbound Rule of a cognitive services account. + */ + type: RuleType; + + /** + * Error information about an outbound rule of a cognitive services account if RuleStatus is failed. + */ + @visibility(Lifecycle.Read) + errorInformation?: string; + + @visibility(Lifecycle.Read) + parentRuleNames?: string[]; +} + +model ManagedNetworkSettingsBasicResource + extends Azure.ResourceManager.CommonTypes.Resource { + /** + * Managed Network settings for a cognitive services account. + */ + properties?: ManagedNetworkSettings; +} + +/** + * Managed Network settings for a cognitive services account. + */ +model ManagedNetworkSettings { + /** + * Isolation mode for the managed network of a cognitive services account. + */ + isolationMode?: IsolationMode; + + @visibility(Lifecycle.Read) + networkId?: string; + + /** + * Dictionary of + */ + outboundRules?: Record | null; + + /** + * Status of the Provisioning for the managed network of a cognitive services account. + */ + status?: ManagedNetworkProvisionStatus; + + /** + * Firewall Sku used for FQDN Rules + */ + firewallSku?: FirewallSku; + + /** + * The Kind of the managed network. Users can switch from V1 to V2 for granular access controls, but cannot switch back to V1 once V2 is enabled. + */ + managedNetworkKind?: ManagedNetworkKind; + + /** + * Public IP address assigned to the Azure Firewall. + */ + @visibility(Lifecycle.Read) + egressIpAddress?: string | null; +} + +/** + * Status of the Provisioning for the managed network of a cognitive services account. + */ +model ManagedNetworkProvisionStatus { + /** + * Status for the managed network of a cognitive services account. + */ + status?: ManagedNetworkStatus; +} + +/** + * The properties of the managed network settings of a cognitive services account. + */ +model ManagedNetworkSettingsProperties { + /** + * Managed Network settings for a cognitive services account. + */ + managedNetwork?: ManagedNetworkSettingsEx; + + /** + * The current deployment state of the managed network resource. The provisioningState is to indicate states for resource provisioning. + */ + @visibility(Lifecycle.Read) + provisioningState?: ManagedNetworkProvisioningState; +} + +model ManagedNetworkSettingsEx extends ManagedNetworkSettings { + @visibility(Lifecycle.Read) + changeableIsolationModes?: IsolationMode[]; +} + +/** + * A paginated list of Agent Application entities. + */ +model AgentApplicationResourceArmPaginatedResult { + /** + * The link to the next page of Agent Application objects. If null, there are no additional pages. + */ + @nextLink + nextLink?: string | null; + + /** + * An array of objects of type Agent Application. + */ + @pageItems + value?: AgentApplication[]; +} + +/** + * Resource type representing an agentic application as a management construct. + */ +model AgenticApplicationProperties extends ResourceBase { + /** + * The display name of the application. + */ + displayName?: string | null; + + /** + * The application's dedicated invocation endpoint. + */ + baseUrl?: string | null; + + /** + * The list of agent definitions comprising this application, returned as references to the objects under the parent project; use this to obtain a flat list of all agent-version pairs represented by this application. + */ + agents?: AgentReferenceProperties[] | null; + + /** + * The EntraId Agentic Blueprint of the application. + */ + agentIdentityBlueprint?: AssignedIdentity | null; + + /** + * The (default) agent instance identity of the application. + */ + defaultInstanceIdentity?: AssignedIdentity | null; + + /** + * Gets or sets the authorization policy associated with this agentic application instance. + */ + authorizationPolicy?: ApplicationAuthorizationPolicy | null; + + /** + * Gets or sets the traffic routing policy for the application's deployments. + */ + trafficRoutingPolicy?: ApplicationTrafficRoutingPolicy | null; + + /** + * Provisioning state of the application. + */ + @visibility(Lifecycle.Read) + provisioningState?: AgenticApplicationProvisioningState; + + /** + * Enabledstate of the application. + */ + @visibility(Lifecycle.Read) + isEnabled?: boolean; +} + +/** + * Type modeling a reference to a version of an agent definition. + */ +model AgentReferenceProperties { + /** + * Gets the agent's unique identifier within the organization (subscription). + */ + agentId?: string | null; + + /** + * Gets the agent's name (unique within the project/app). + */ + agentName?: string | null; +} + +/** + * Type representing an identity assignment + */ +model AssignedIdentity { + /** + * Specifies the kind of Entra identity described by this object. + */ + kind: IdentityKind; + + /** + * Enumeration of identity types, from the perspective of management. + */ + type: IdentityManagementType; + + /** + * The client ID of the identity. + */ + clientId: string; + + /** + * The principal ID of the identity. + */ + principalId: string; + + /** + * The tenant ID of the identity. + */ + tenantId: string; + + /** + * The subject of this identity assignment. + */ + subject?: string | null; + + /** + * Represents the provisioning state of an identity resource. + */ + @visibility(Lifecycle.Read) + provisioningState?: IdentityProvisioningState; +} + +/** + * Represents a policy for authorizing applications based on specified authentication and authorization schemes. + */ +@discriminator("type") +model ApplicationAuthorizationPolicy { + /** + * Authorization scheme type. + */ + type: BuiltInAuthorizationScheme; +} + +/** + * Type representing an application traffic policy as a property of an agentic application. + */ +model ApplicationTrafficRoutingPolicy { + /** + * Methodology used to route traffic to the application's deployments. + */ + protocol?: TrafficRoutingProtocol; + + /** + * Gets or sets the collection of traffic routing rules. + */ + rules?: TrafficRoutingRule[] | null; +} + +/** + * Represents a rule for routing traffic to a specific deployment. + */ +model TrafficRoutingRule { + /** + * The identifier of this traffic routing rule. + */ + ruleId?: string | null; + + /** + * A user-provided description for this traffic routing rule. + */ + description?: string | null; + + /** + * The unique identifier of the deployment to which traffic is routed by this rule. + */ + deploymentId?: string | null; + + /** + * Gets or sets the percentage of traffic allocated to this instance. + */ + trafficPercentage?: int32; +} + +/** + * A paginated list of Agent Reference entities. + */ +model AgentReferenceResourceArmPaginatedResult { + /** + * The link to the next page of Agent Reference objects. If null, there are no additional pages. + */ + nextLink?: string | null; + + /** + * An array of objects of type Agent Reference. + */ + value?: AgentReference[] | null; +} + +/** + * Agent Reference resource + */ +model AgentReference extends Azure.ResourceManager.CommonTypes.ProxyResource { + /** + * [Required] Additional attributes of the entity. + */ + properties: AgentReferenceProperties; +} + +/** + * A paginated list of Agent Deployment entities. + */ +model AgentDeploymentResourceArmPaginatedResult { + /** + * The link to the next page of Agent Deployment objects. If null, there are no additional pages. + */ + @nextLink + nextLink?: string | null; + + /** + * An array of objects of type Agent Deployment. + */ + @pageItems + value?: AgentDeployment[]; +} + +/** + * Type representing an agent deployment as a management construct. + */ +@discriminator("deploymentType") +model AgentDeploymentProperties extends ResourceBase { + /** + * Gets or sets the display name of the deployment. + */ + displayName?: string | null; + + /** + * Gets or sets the unique identifier of the deployment. + */ + deploymentId?: string | null; + + /** + * Gets or sets the current operational state of the deployment (and, intrinsically, of the comprising agents). + */ + state?: AgentDeploymentState | null; + + /** + * Gets or sets the supported protocol types and versions exposed by this deployment. + */ + protocols?: AgentProtocolVersion[] | null; + + /** + * Returns a flat list of agent:version deployed in this deployment. + */ + agents?: VersionedAgentReference[] | null; + + /** + * Gets or sets the type of deployment for the agent. + */ + deploymentType: AgentDeploymentType; + + /** + * Gets or sets the provisioning state of the agent deployment. + */ + @visibility(Lifecycle.Read) + provisioningState?: AgentDeploymentProvisioningState; +} + +/** + * Type modeling the protocol and version used by an agent/exposed by a deployment. + */ +model AgentProtocolVersion { + /** + * The protocol used by the agent/exposed by a deployment. + */ + protocol?: AgentProtocol; + + /** + * The version of the protocol. + */ + version?: string | null; +} + +/** + * Type modeling a reference to a version of an agent definition. + */ +model VersionedAgentReference extends AgentReferenceProperties { + /** + * Gets the agent's version (unique for each agent lineage). + */ + agentVersion?: string | null; +} + +model PATAuthTypeConnectionProperties extends ConnectionPropertiesV2 { + credentials?: ConnectionPersonalAccessToken; + + /** + * Authentication type of the connection target + */ + authType: "PAT"; +} + +model ConnectionPersonalAccessToken { + @secret + pat?: string; +} + +model ManagedIdentityAuthTypeConnectionProperties + extends ConnectionPropertiesV2 { + credentials?: ConnectionManagedIdentity; + + /** + * Authentication type of the connection target + */ + authType: "ManagedIdentity"; +} + +model ConnectionManagedIdentity { + clientId?: string; + resourceId?: string; +} + +model UsernamePasswordAuthTypeConnectionProperties + extends ConnectionPropertiesV2 { + credentials?: ConnectionUsernamePassword; + + /** + * Authentication type of the connection target + */ + authType: "UsernamePassword"; +} + +model ConnectionUsernamePassword { + @secret + password?: string; + + /** + * Optional, required by connections like SalesForce for extra security in addition to UsernamePassword + */ + @secret + securityToken?: string; + + username?: string; +} + +model NoneAuthTypeConnectionProperties extends ConnectionPropertiesV2 { + /** + * Authentication type of the connection target + */ + authType: "None"; +} + +model SASAuthTypeConnectionProperties extends ConnectionPropertiesV2 { + credentials?: ConnectionSharedAccessSignature; + + /** + * Authentication type of the connection target + */ + authType: "SAS"; +} + +model ConnectionSharedAccessSignature { + @secret + sas?: string; +} + +/** + * This connection type covers the account key connection for Azure storage + */ +model AccountKeyAuthTypeConnectionProperties extends ConnectionPropertiesV2 { + /** + * Account key object for connection credential. + */ + credentials?: ConnectionAccountKey; + + /** + * Authentication type of the connection target + */ + authType: "AccountKey"; +} + +/** + * Account key object for connection credential. + */ +model ConnectionAccountKey { + @secret + key?: string; +} + +model ServicePrincipalAuthTypeConnectionProperties + extends ConnectionPropertiesV2 { + credentials?: ConnectionServicePrincipal; + + /** + * Authentication type of the connection target + */ + authType: "ServicePrincipal"; +} + +model ConnectionServicePrincipal { + clientId?: string; + + @secret + clientSecret?: string; + + tenantId?: string; +} + +model AccessKeyAuthTypeConnectionProperties extends ConnectionPropertiesV2 { + credentials?: ConnectionAccessKey; + + /** + * Authentication type of the connection target + */ + authType: "AccessKey"; +} + +model ConnectionAccessKey { + accessKeyId?: string; + + @secret + secretAccessKey?: string; +} + +/** + * This connection type covers the generic ApiKey auth connection categories, for examples: + * AzureOpenAI: + * Category:= AzureOpenAI + * AuthType:= ApiKey (as type discriminator) + * Credentials:= {ApiKey} as .ApiKey + * Target:= {ApiBase} + * + * CognitiveService: + * Category:= CognitiveService + * AuthType:= ApiKey (as type discriminator) + * Credentials:= {SubscriptionKey} as ApiKey + * Target:= ServiceRegion={serviceRegion} + * + * CognitiveSearch: + * Category:= CognitiveSearch + * AuthType:= ApiKey (as type discriminator) + * Credentials:= {Key} as ApiKey + * Target:= {Endpoint} + * + * Use Metadata property bag for ApiType, ApiVersion, Kind and other metadata fields + */ +model ApiKeyAuthConnectionProperties extends ConnectionPropertiesV2 { + /** + * Api key object for connection credential. + */ + credentials?: ConnectionApiKey; + + /** + * Authentication type of the connection target + */ + authType: "ApiKey"; +} + +/** + * Api key object for connection credential. + */ +model ConnectionApiKey { + @secret + key?: string; +} + +/** + * Category:= CustomKeys + * AuthType:= CustomKeys (as type discriminator) + * Credentials:= {CustomKeys} as CustomKeys + * Target:= {any value} + * Use Metadata property bag for ApiVersion and other metadata fields + */ +model CustomKeysConnectionProperties extends ConnectionPropertiesV2 { + /** + * Custom Keys credential object + */ + credentials?: CustomKeys; + + /** + * Authentication type of the connection target + */ + authType: "CustomKeys"; +} + +/** + * Custom Keys credential object + */ +model CustomKeys { + /** + * Dictionary of + */ + keys?: Record; +} + +model OAuth2AuthTypeConnectionProperties extends ConnectionPropertiesV2 { + /** + * ClientId and ClientSecret are required. Other properties are optional + * depending on each OAuth2 provider's implementation. + */ + credentials?: ConnectionOAuth2; + + /** + * Authentication type of the connection target + */ + authType: "OAuth2"; +} + +/** + * ClientId and ClientSecret are required. Other properties are optional + * depending on each OAuth2 provider's implementation. + */ +model ConnectionOAuth2 { + /** + * Required by Concur connection category + */ + authUrl?: url; + + /** + * Client id in the format of UUID + */ + clientId?: Azure.Core.uuid; + + @secret + clientSecret?: string; + + /** + * Required by GoogleAdWords connection category + */ + @secret + developerToken?: string; + + @secret + password?: string; + + /** + * Required by GoogleBigQuery, GoogleAdWords, Hubspot, QuickBooks, Square, Xero, Zoho + * where user needs to get RefreshToken offline + */ + @secret + refreshToken?: string; + + /** + * Required by QuickBooks and Xero connection categories + */ + tenantId?: string; + + /** + * Concur, ServiceNow auth server AccessToken grant type is 'Password' + * which requires UsernamePassword + */ + username?: string; +} + +/** + * This connection type covers the AAD auth for any applicable Azure service + */ +model AADAuthTypeConnectionProperties extends ConnectionPropertiesV2 { + /** + * Authentication type of the connection target + */ + authType: "AAD"; +} + +/** + * FQDN Outbound Rule for the managed network of a cognitive services account. + */ +model FqdnOutboundRule extends OutboundRule { + destination?: string; + + /** + * Type of a managed network Outbound Rule of a cognitive services account. + */ + type: "FQDN"; +} + +/** + * Represents a managed agent deployment where the underlying infrastructure is managed by the platform in the deployer's subscription. + */ +model ManagedAgentDeployment extends AgentDeploymentProperties { + /** + * Gets or sets the type of deployment for the agent. + */ + deploymentType: "Managed"; +} + +/** + * Represents a hosted agent deployment where the underlying infrastructure is owned by the platform. + */ +model HostedAgentDeployment extends AgentDeploymentProperties { + /** + * Gets or sets the minimum number of replicas for this hosted deployment. + */ + @minValue(0) + minReplicas?: int32; + + /** + * Gets or sets the maximum number of replicas for this hosted deployment. + */ + @minValue(0) + maxReplicas?: int32; + + /** + * Gets or sets the type of deployment for the agent. + */ + deploymentType: "Hosted"; +} + +/** + * Built-in role-based authorization policy. + */ +model RoleBasedBuiltInAuthorizationPolicy + extends ApplicationAuthorizationPolicy { + /** + * Authorization scheme type. + */ + type: "Default"; +} + +/** + * Built-in authorization policy scoped to organization/tenant. + */ +model OrganizationSharedBuiltInAuthorizationPolicy + extends ApplicationAuthorizationPolicy { + /** + * Authorization scheme type. + */ + type: "OrganizationScope"; +} + +/** + * Represents a built-in authorization policy specific to Azure Bot Service/Channels authentication. + */ +model ChannelsBuiltInAuthorizationPolicy + extends ApplicationAuthorizationPolicy { + /** + * Authorization scheme type. + */ + type: "Channels"; +} + +/** + * Represents a detailed description of an agent, including its name, functionality, hosting information, supported interaction modes, and available skills. + */ +model AgentCard { + /** + * Human-readable name for the Agent (e.g., 'Recipe Agent'). + */ + name?: string | null; + + /** + * Human-readable description of the Agent's function. + */ + description?: string | null; + + /** + * URL address where the Agent is hosted. + */ + url?: string | null; + + /** + * Service provider information for the Agent. + */ + provider?: ProviderInfo | null; + + /** + * Version of the Agent (format defined by provider, e.g., '1.0.0'). + */ + version?: string | null; + + /** + * URL for the Agent's documentation. + */ + documentationUrl?: string | null; + + /** + * Default interaction modes supported by the Agent across all skills. + */ + defaultInputModes?: string[] | null; + + /** + * Default output modes supported by the Agent across all skills. + */ + defaultOutputModes?: string[] | null; + + /** + * Collection of capability units the Agent can perform. + */ + skills?: Skill[] | null; +} + +/** + * Service provider information for the Agent + */ +model ProviderInfo { + /** + * Organization name of the provider. + */ + organization?: string | null; + + /** + * URL of the provider. + */ + url?: string | null; +} + +/** + * Collection of capability units the Agent can perform + */ +model Skill { + /** + * Unique identifier for the skill. + */ + id?: string | null; + + /** + * Human-readable name for the skill. + */ + name?: string | null; + + /** + * Skill description. + */ + description?: string | null; + + /** + * Tags describing the skill's capability category (e.g., 'cooking', 'customer support'). + */ + tags?: string[] | null; + + /** + * Example scenarios or prompts the skill can execute (e.g., 'I need a recipe for bread'). + */ + examples?: string[] | null; + + /** + * Input MIME types supported by the skill (if different from default). + */ + inputModes?: string[] | null; + + /** + * Output MIME types supported by the skill (if different from default). + */ + outputModes?: string[] | null; +} + +/** + * The list of cognitive services accounts operation response. + */ +model ModelCapacityListResult { + /** + * The link used to get the next page of ModelSkuCapacity. + */ + @nextLink + nextLink?: string; + + /** + * Gets the list of Cognitive Services accounts ModelSkuCapacity. + */ + @visibility(Lifecycle.Read) + @pageItems + @identifiers(#["model"]) + value?: ModelCapacityListResultValueItem[]; +} + +/** + * List of managed networks of a cognitive services account. + */ +model ManagedNetworkListResult { + /** + * The link to the next page constructed using the continuationToken. If null, there are no additional pages. + */ + @nextLink + nextLink?: string; + + /** + * The list of managed network settings of an account. Since this list may be incomplete, the nextLink field should be used to request the next list of cognitive services accounts. + */ + @pageItems + value?: ManagedNetworkSettingsPropertiesBasicResource[]; +} + +/** + * List of outbound rules for the managed network of a cognitive services account. + */ +model OutboundRuleListResult { + /** + * The link to the next page constructed using the continuationToken. If null, there are no additional pages. + */ + @nextLink + nextLink?: string; + + /** + * The list of cognitive services accounts. Since this list may be incomplete, the nextLink field should be used to request the next list of cognitive services accounts. + */ + @pageItems + value?: OutboundRuleBasicResource[]; +} + +/** + * Managed Network Provisioning options for managed network of a cognitive services account. + */ +model ManagedNetworkProvisionOptions {} + +/** + * The list of cognitive services RAI Blocklists. + */ +model RaiBlockListResult { + /** + * The link used to get the next page of RaiBlocklists. + */ + @nextLink + nextLink?: string; + + /** + * The list of RaiBlocklist. + */ + @pageItems + @identifiers(#["name"]) + value?: RaiBlocklist[]; +} + +/** + * The list of Cognitive Services RaiBlocklist Items for batch add. + */ +@identifiers(#["name"]) +model RaiBlocklistItemsBulkAddRequest is Array; + +/** + * The list of cognitive services accounts operation response. + */ +model AccountListResult { + /** + * The link used to get the next page of accounts. + */ + @nextLink + nextLink?: string; + + /** + * Gets the list of Cognitive Services accounts and their properties. + */ + @pageItems + @visibility(Lifecycle.Read) + value?: Account[]; +} + +/** + * The list of cognitive services Commitment Plan Account Association operation response. + */ +model CommitmentPlanAccountAssociationListResult { + /** + * The link used to get the next page of Commitment Plan Account Association. + */ + @nextLink + nextLink?: string; + + /** + * Gets the list of Cognitive Services Commitment Plan Account Association and their properties. + */ + @pageItems + @visibility(Lifecycle.Read) + @identifiers(#["id"]) + value?: CommitmentPlanAccountAssociation[]; +} + +/** + * The list of cognitive services accounts operation response. + */ +model CommitmentPlanListResult { + /** + * The link used to get the next page of CommitmentPlan. + */ + @nextLink + nextLink?: string; + + /** + * Gets the list of Cognitive Services accounts CommitmentPlan and their properties. + */ + @pageItems + @visibility(Lifecycle.Read) + value?: CommitmentPlan[]; +} + +/** + * The list of cognitive services accounts operation response. + */ +model DeploymentListResult { + /** + * The link used to get the next page of Deployment. + */ + @nextLink + nextLink?: string; + + /** + * Gets the list of Cognitive Services accounts Deployment and their properties. + */ + @pageItems + @visibility(Lifecycle.Read) + value?: Deployment[]; +} + +/** + * The list of cognitive services EncryptionScopes. + */ +model EncryptionScopeListResult { + /** + * The link used to get the next page of EncryptionScope. + */ + @nextLink + nextLink?: string; + + /** + * The list of EncryptionScope. + */ + @pageItems + @identifiers(#["name"]) + value?: EncryptionScope[]; +} + +/** + * The list of cognitive services projects operation response. + */ +model ProjectListResult { + /** + * The link used to get the next page of projects. + */ + @nextLink + nextLink?: string; + + /** + * Gets the list of Cognitive Services projects and their properties. + */ + @pageItems + @visibility(Lifecycle.Read) + value?: Project[]; +} + +/** + * The list of Quota Tiers response. + */ +model QuotaTierListResult { + /** + * The link used to get the next page of quota tiers. + */ + @nextLink + nextLink?: string; + + /** + * Gets the list of Quota Tiers and their properties. + */ + @pageItems + @visibility(Lifecycle.Read) + @identifiers(#["id"]) + value?: QuotaTier[]; +} + +/** + * The list of Content Filters. + */ +model RaiContentFilterListResult { + /** + * The link used to get the next page of Content Filters. + */ + @nextLink + nextLink?: string; + + /** + * The list of RaiContentFilter. + */ + @pageItems + @identifiers(#["name"]) + value?: RaiContentFilter[]; +} + +/** + * The list of cognitive services RaiPolicies. + */ +model RaiPolicyListResult { + /** + * The link used to get the next page of RaiPolicy. + */ + @nextLink + nextLink?: string; + + /** + * The list of RaiPolicy. + */ + @pageItems + @identifiers(#["name"]) + value?: RaiPolicy[]; +} +@@identifiers(ResourceSkuListResult.value, #["resourceType", "name", "kind"]); + +/** + * The list of Cognitive Services RaiBlocklist Items Names. + */ +model RaiBlocklistItemsBulkDeleteRequest is Array; diff --git a/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/package.json b/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/package.json new file mode 100644 index 00000000000..45377b8ad61 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/package.json @@ -0,0 +1,50 @@ +{ + "name": "azure-rest-api-specs", + "devDependencies": { + "@azure-tools/openai-typespec": "1.11.0", + "@azure-tools/spec-gen-sdk": "~0.9.1", + "@azure-tools/specs-shared": "file:.github/shared", + "@azure-tools/typespec-apiview": "0.7.2", + "@azure-tools/typespec-metadata": "0.1.1", + "@azure-tools/typespec-autorest": "0.66.0", + "@azure-tools/typespec-azure-core": "0.66.0", + "@azure-tools/typespec-azure-portal-core": "0.66.0", + "@azure-tools/typespec-azure-resource-manager": "0.66.0", + "@azure-tools/typespec-azure-rulesets": "0.66.0", + "@azure-tools/typespec-client-generator-cli": "0.31.0", + "@azure-tools/typespec-client-generator-core": "0.66.3", + "@azure-tools/typespec-liftr-base": "0.13.0", + "@autorest/openapi-to-typespec": "0.11.13", + "@azure/avocado": "0.10.5", + "@azure/oad": "0.12.4", + "@microsoft.azure/openapi-validator": "2.2.4", + "@microsoft.azure/openapi-validator-core": "1.0.7", + "@microsoft.azure/openapi-validator-rulesets": "2.2.5", + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/sse": "0.80.0", + "@typespec/events": "0.80.0", + "@typespec/openapi": "1.10.0", + "@typespec/openapi3": "1.10.0", + "@typespec/prettier-plugin-typespec": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/streams": "0.80.0", + "@typespec/versioning": "0.80.0", + "@typespec/xml": "0.80.0", + "azure-rest-api-specs-eng-tools": "file:eng/tools", + "oav": "4.0.3", + "prettier": "3.8.1", + "typescript": "~5.9.2" + }, + "overrides": { + "@typespec/asset-emitter": "0.79.1", + "get-uri": "^6.0.5", + "minimatch@^3.0.0": "^3.1.5", + "superagent": "^10.2.3" + }, + "engines": { + "node": ">=20.0.0", + "npm": ">=10.0.0" + }, + "private": true +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/employee.tsp new file mode 100644 index 00000000000..0436d134471 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/employee.tsp @@ -0,0 +1,100 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.Core; +using Azure.ResourceManager; + +namespace Microsoft.Widget; + +/** Employee resource */ +model Employee is TrackedResource { + ...ResourceNameParameter; + ...ManagedServiceIdentityProperty; +} + +/** Employee properties */ +model EmployeeProperties { + /** Age of employee */ + age?: int32; + + /** City of employee */ + city?: string; + + /** Email of employee */ + email?: string; + + /** Department of employee */ + department?: string; + + /** Status code of employee */ + statusCode?: string; + + /** Profile of employee */ + @encode("base64url") + profile?: bytes; + + /** The assets belong to the employee. */ + assets: string[]; + + /** The status of the last operation. */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; +} + +/** Export result model */ +model ExportResult { + /** Exported data */ + data?: string; +} + +/** Employee move request */ +model MoveRequest { + /** The moving from location */ + from: string; + + /** The moving to location */ + to: string; +} + +/** Employee move response */ +model MoveResponse { + /** The status of the move */ + movingStatus: string; +} + +/** The resource provisioning state. */ +@lroStatus +union ProvisioningState { + ResourceProvisioningState, + + /** The resource is being provisioned */ + Provisioning: "Provisioning", + + /** The resource is updating */ + Updating: "Updating", + + /** The resource is being deleted */ + Deleting: "Deleting", + + /** The resource create request has been accepted */ + Accepted: "Accepted", + + string, +} + +@armResourceOperations +interface Employees { + get is ArmResourceRead; + createOrUpdate is ArmResourceCreateOrReplaceAsync; + update is ArmResourcePatchSync; + delete is ArmResourceDeleteWithoutOkAsync; + listByResourceGroup is ArmResourceListByParent; + listBySubscription is ArmListBySubscription; + + /** Export employee data */ + exportData is ArmResourceActionSync; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/main.tsp new file mode 100644 index 00000000000..2990eb2b363 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/main.tsp @@ -0,0 +1,32 @@ +import "@typespec/http"; +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "./employee.tsp"; + +using TypeSpec.Http; +using TypeSpec.Rest; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +/** Microsoft.Widget Resource Provider management API. */ +@armProviderNamespace +@service(#{ title: "Widget" }) +@versioned(Microsoft.Widget.Versions) +namespace Microsoft.Widget; + +/** The available API versions. */ +enum Versions { + /** 2021-11-01 version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + v2021_11_01: "2021-11-01", + + /** 2024-10-01-preview version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + @previewVersion + v2024_10_01_preview: "2024-10-01-preview", +} + +interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/package.json b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/package.json new file mode 100644 index 00000000000..45377b8ad61 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/package.json @@ -0,0 +1,50 @@ +{ + "name": "azure-rest-api-specs", + "devDependencies": { + "@azure-tools/openai-typespec": "1.11.0", + "@azure-tools/spec-gen-sdk": "~0.9.1", + "@azure-tools/specs-shared": "file:.github/shared", + "@azure-tools/typespec-apiview": "0.7.2", + "@azure-tools/typespec-metadata": "0.1.1", + "@azure-tools/typespec-autorest": "0.66.0", + "@azure-tools/typespec-azure-core": "0.66.0", + "@azure-tools/typespec-azure-portal-core": "0.66.0", + "@azure-tools/typespec-azure-resource-manager": "0.66.0", + "@azure-tools/typespec-azure-rulesets": "0.66.0", + "@azure-tools/typespec-client-generator-cli": "0.31.0", + "@azure-tools/typespec-client-generator-core": "0.66.3", + "@azure-tools/typespec-liftr-base": "0.13.0", + "@autorest/openapi-to-typespec": "0.11.13", + "@azure/avocado": "0.10.5", + "@azure/oad": "0.12.4", + "@microsoft.azure/openapi-validator": "2.2.4", + "@microsoft.azure/openapi-validator-core": "1.0.7", + "@microsoft.azure/openapi-validator-rulesets": "2.2.5", + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/sse": "0.80.0", + "@typespec/events": "0.80.0", + "@typespec/openapi": "1.10.0", + "@typespec/openapi3": "1.10.0", + "@typespec/prettier-plugin-typespec": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/streams": "0.80.0", + "@typespec/versioning": "0.80.0", + "@typespec/xml": "0.80.0", + "azure-rest-api-specs-eng-tools": "file:eng/tools", + "oav": "4.0.3", + "prettier": "3.8.1", + "typescript": "~5.9.2" + }, + "overrides": { + "@typespec/asset-emitter": "0.79.1", + "get-uri": "^6.0.5", + "minimatch@^3.0.0": "^3.1.5", + "superagent": "^10.2.3" + }, + "engines": { + "node": ">=20.0.0", + "npm": ">=10.0.0" + }, + "private": true +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json new file mode 100644 index 00000000000..c01461386bc --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json @@ -0,0 +1,692 @@ +{ + "swagger": "2.0", + "info": { + "title": "Widget", + "version": "2024-10-01-preview", + "description": "Microsoft.Widget Resource Provider management API.", + "x-typespec-generated": [ + { + "emitter": "@azure-tools/typespec-autorest" + } + ] + }, + "schemes": [ + "https" + ], + "host": "management.azure.com", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "security": [ + { + "azure_auth": [ + "user_impersonation" + ] + } + ], + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "description": "Azure Active Directory OAuth2 Flow.", + "flow": "implicit", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "tags": [ + { + "name": "Operations" + }, + { + "name": "Employees" + } + ], + "paths": { + "/providers/Microsoft.Widget/operations": { + "get": { + "operationId": "Operations_List", + "tags": [ + "Operations" + ], + "description": "List the operations for the provider", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/OperationListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Widget/employees": { + "get": { + "operationId": "Employees_ListBySubscription", + "tags": [ + "Employees" + ], + "description": "List Employee resources by subscription ID", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/EmployeeListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees": { + "get": { + "operationId": "Employees_ListByResourceGroup", + "tags": [ + "Employees" + ], + "description": "List Employee resources by resource group", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/EmployeeListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}": { + "get": { + "operationId": "Employees_Get", + "tags": [ + "Employees" + ], + "description": "Get a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + }, + "put": { + "operationId": "Employees_CreateOrUpdate", + "tags": [ + "Employees" + ], + "description": "Create a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + }, + { + "name": "resource", + "in": "body", + "description": "Resource create parameters.", + "required": true, + "schema": { + "$ref": "#/definitions/Employee" + } + } + ], + "responses": { + "200": { + "description": "Resource 'Employee' update operation succeeded", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "201": { + "description": "Resource 'Employee' create operation succeeded", + "schema": { + "$ref": "#/definitions/Employee" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-long-running-operation": true + }, + "patch": { + "operationId": "Employees_Update", + "tags": [ + "Employees" + ], + "description": "Update a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + }, + { + "name": "properties", + "in": "body", + "description": "The resource properties to be updated.", + "required": true, + "schema": { + "$ref": "#/definitions/EmployeeUpdate" + } + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + }, + "delete": { + "operationId": "Employees_Delete", + "tags": [ + "Employees" + ], + "description": "Delete a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "202": { + "description": "Resource deletion accepted.", + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "204": { + "description": "Resource does not exist." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}/exportData": { + "post": { + "operationId": "Employees_ExportData", + "tags": [ + "Employees" + ], + "description": "Export employee data", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/ExportResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + } + } + }, + "definitions": { + "Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate": { + "type": "object", + "description": "Managed service identity (system assigned and/or user assigned identities)", + "properties": { + "type": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentityType", + "description": "The type of managed identity assigned to this resource." + }, + "userAssignedIdentities": { + "type": "object", + "description": "The identities assigned to this resource by the user.", + "additionalProperties": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/UserAssignedIdentity", + "x-nullable": true + } + } + } + }, + "Azure.ResourceManager.CommonTypes.TrackedResourceUpdate": { + "type": "object", + "title": "Tracked Resource", + "description": "The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'", + "properties": { + "tags": { + "type": "object", + "description": "Resource tags.", + "additionalProperties": { + "type": "string" + } + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/Resource" + } + ] + }, + "Employee": { + "type": "object", + "description": "Employee resource", + "properties": { + "properties": { + "$ref": "#/definitions/EmployeeProperties", + "description": "The resource-specific properties for this resource." + }, + "identity": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentity", + "description": "The managed service identities assigned to this resource." + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/TrackedResource" + } + ] + }, + "EmployeeListResult": { + "type": "object", + "description": "The response of a Employee list operation.", + "properties": { + "value": { + "type": "array", + "description": "The Employee items on this page", + "items": { + "$ref": "#/definitions/Employee" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "EmployeeProperties": { + "type": "object", + "description": "Employee properties", + "properties": { + "age": { + "type": "integer", + "format": "int32", + "description": "Age of employee" + }, + "city": { + "type": "string", + "description": "City of employee" + }, + "email": { + "type": "string", + "description": "Email of employee" + }, + "department": { + "type": "string", + "description": "Department of employee" + }, + "statusCode": { + "type": "string", + "description": "Status code of employee" + }, + "profile": { + "type": "string", + "format": "base64url", + "description": "Profile of employee" + }, + "assets": { + "type": "array", + "description": "The assets belong to the employee.", + "items": { + "type": "string" + } + }, + "provisioningState": { + "$ref": "#/definitions/ProvisioningState", + "description": "The status of the last operation.", + "readOnly": true + } + }, + "required": [ + "assets" + ] + }, + "EmployeePropertiesUpdate": { + "type": "object", + "description": "Employee properties", + "properties": { + "age": { + "type": "integer", + "format": "int32", + "description": "Age of employee" + }, + "city": { + "type": "string", + "description": "City of employee" + }, + "email": { + "type": "string", + "description": "Email of employee" + }, + "department": { + "type": "string", + "description": "Department of employee" + }, + "statusCode": { + "type": "string", + "description": "Status code of employee" + }, + "profile": { + "type": "string", + "format": "base64url", + "description": "Profile of employee" + }, + "assets": { + "type": "array", + "description": "The assets belong to the employee.", + "items": { + "type": "string" + } + } + } + }, + "EmployeeUpdate": { + "type": "object", + "description": "Employee resource", + "properties": { + "properties": { + "$ref": "#/definitions/EmployeePropertiesUpdate", + "description": "The resource-specific properties for this resource." + }, + "identity": { + "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate", + "description": "The managed service identities assigned to this resource." + } + }, + "allOf": [ + { + "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.TrackedResourceUpdate" + } + ] + }, + "ExportResult": { + "type": "object", + "description": "Export result model", + "properties": { + "data": { + "type": "string", + "description": "Exported data" + } + } + }, + "MoveRequest": { + "type": "object", + "description": "Employee move request", + "properties": { + "from": { + "type": "string", + "description": "The moving from location" + }, + "to": { + "type": "string", + "description": "The moving to location" + } + }, + "required": [ + "from", + "to" + ] + }, + "MoveResponse": { + "type": "object", + "description": "Employee move response", + "properties": { + "movingStatus": { + "type": "string", + "description": "The status of the move" + } + }, + "required": [ + "movingStatus" + ] + }, + "ProvisioningState": { + "type": "string", + "description": "The resource provisioning state.", + "enum": [ + "Succeeded", + "Failed", + "Canceled", + "Provisioning", + "Updating", + "Deleting", + "Accepted" + ], + "x-ms-enum": { + "name": "ProvisioningState", + "modelAsString": true, + "values": [ + { + "name": "Succeeded", + "value": "Succeeded", + "description": "Resource has been created." + }, + { + "name": "Failed", + "value": "Failed", + "description": "Resource creation failed." + }, + { + "name": "Canceled", + "value": "Canceled", + "description": "Resource creation was canceled." + }, + { + "name": "Provisioning", + "value": "Provisioning", + "description": "The resource is being provisioned" + }, + { + "name": "Updating", + "value": "Updating", + "description": "The resource is updating" + }, + { + "name": "Deleting", + "value": "Deleting", + "description": "The resource is being deleted" + }, + { + "name": "Accepted", + "value": "Accepted", + "description": "The resource create request has been accepted" + } + ] + }, + "readOnly": true + } + }, + "parameters": {} +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/readme.md b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/readme.md new file mode 100644 index 00000000000..4cc6209ca17 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/readme.md @@ -0,0 +1,45 @@ +# Widget + +> see https://aka.ms/autorest + +This is the AutoRest configuration file for Widget. + +## Configuration + +### Basic Information + +This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. +This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we +use the native TypeSpec code generation configured in the tspconfig.yaml file. + +```yaml +openapi-type: arm +openapi-subtype: rpaas +tag: package-2021-11-01 +``` + +### Tag: package-2021-11-01 + +These settings apply only when `--tag=package-2021-11-01` is specified on the command line. + +```yaml $(tag) == 'package-2021-11-01' +input-file: + - stable/2021-11-01/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +### Tag: package-2021-10-01-preview + +These settings apply only when `--tag=package-2021-10-01-preview` is specified on the command line. + +```yaml $(tag) == 'package-2021-10-01-preview' +input-file: + - preview/2021-10-01-preview/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +--- \ No newline at end of file diff --git a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/shared.tsp new file mode 100644 index 00000000000..1b94bb70503 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/shared.tsp @@ -0,0 +1,8 @@ +@doc("Faked shared model") +model FakedSharedModel { + @doc("The tag.") + tag: string; + + @doc("The created date.") + createdAt: utcDateTime; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json new file mode 100644 index 00000000000..512734611ba --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json @@ -0,0 +1,692 @@ +{ + "swagger": "2.0", + "info": { + "title": "Widget", + "version": "2021-11-01", + "description": "Microsoft.Widget Resource Provider management API.", + "x-typespec-generated": [ + { + "emitter": "@azure-tools/typespec-autorest" + } + ] + }, + "schemes": [ + "https" + ], + "host": "management.azure.com", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "security": [ + { + "azure_auth": [ + "user_impersonation" + ] + } + ], + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "description": "Azure Active Directory OAuth2 Flow.", + "flow": "implicit", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "tags": [ + { + "name": "Operations" + }, + { + "name": "Employees" + } + ], + "paths": { + "/providers/Microsoft.Widget/operations": { + "get": { + "operationId": "Operations_List", + "tags": [ + "Operations" + ], + "description": "List the operations for the provider", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/OperationListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Widget/employees": { + "get": { + "operationId": "Employees_ListBySubscription", + "tags": [ + "Employees" + ], + "description": "List Employee resources by subscription ID", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/EmployeeListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees": { + "get": { + "operationId": "Employees_ListByResourceGroup", + "tags": [ + "Employees" + ], + "description": "List Employee resources by resource group", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/EmployeeListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}": { + "get": { + "operationId": "Employees_Get", + "tags": [ + "Employees" + ], + "description": "Get a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + }, + "put": { + "operationId": "Employees_CreateOrUpdate", + "tags": [ + "Employees" + ], + "description": "Create a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + }, + { + "name": "resource", + "in": "body", + "description": "Resource create parameters.", + "required": true, + "schema": { + "$ref": "#/definitions/Employee" + } + } + ], + "responses": { + "200": { + "description": "Resource 'Employee' update operation succeeded", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "201": { + "description": "Resource 'Employee' create operation succeeded", + "schema": { + "$ref": "#/definitions/Employee" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-long-running-operation": true + }, + "patch": { + "operationId": "Employees_Update", + "tags": [ + "Employees" + ], + "description": "Update a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + }, + { + "name": "properties", + "in": "body", + "description": "The resource properties to be updated.", + "required": true, + "schema": { + "$ref": "#/definitions/EmployeeUpdate" + } + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/Employee" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + }, + "delete": { + "operationId": "Employees_Delete", + "tags": [ + "Employees" + ], + "description": "Delete a Employee", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "202": { + "description": "Resource deletion accepted.", + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "204": { + "description": "Resource does not exist." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}/exportData": { + "post": { + "operationId": "Employees_ExportData", + "tags": [ + "Employees" + ], + "description": "Export employee data", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "employeeName", + "in": "path", + "description": "The name of the Employee", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9-]{3,24}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/ExportResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" + } + } + } + } + } + }, + "definitions": { + "Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate": { + "type": "object", + "description": "Managed service identity (system assigned and/or user assigned identities)", + "properties": { + "type": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentityType", + "description": "The type of managed identity assigned to this resource." + }, + "userAssignedIdentities": { + "type": "object", + "description": "The identities assigned to this resource by the user.", + "additionalProperties": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/UserAssignedIdentity", + "x-nullable": true + } + } + } + }, + "Azure.ResourceManager.CommonTypes.TrackedResourceUpdate": { + "type": "object", + "title": "Tracked Resource", + "description": "The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'", + "properties": { + "tags": { + "type": "object", + "description": "Resource tags.", + "additionalProperties": { + "type": "string" + } + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/Resource" + } + ] + }, + "Employee": { + "type": "object", + "description": "Employee resource", + "properties": { + "properties": { + "$ref": "#/definitions/EmployeeProperties", + "description": "The resource-specific properties for this resource." + }, + "identity": { + "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentity", + "description": "The managed service identities assigned to this resource." + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/TrackedResource" + } + ] + }, + "EmployeeListResult": { + "type": "object", + "description": "The response of a Employee list operation.", + "properties": { + "value": { + "type": "array", + "description": "The Employee items on this page", + "items": { + "$ref": "#/definitions/Employee" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "EmployeeProperties": { + "type": "object", + "description": "Employee properties", + "properties": { + "age": { + "type": "integer", + "format": "int32", + "description": "Age of employee" + }, + "city": { + "type": "string", + "description": "City of employee" + }, + "email": { + "type": "string", + "description": "Email of employee" + }, + "department": { + "type": "string", + "description": "Department of employee" + }, + "statusCode": { + "type": "string", + "description": "Status code of employee" + }, + "profile": { + "type": "string", + "format": "base64url", + "description": "Profile of employee" + }, + "assets": { + "type": "array", + "description": "The assets belong to the employee.", + "items": { + "type": "string" + } + }, + "provisioningState": { + "$ref": "#/definitions/ProvisioningState", + "description": "The status of the last operation.", + "readOnly": true + } + }, + "required": [ + "assets" + ] + }, + "EmployeePropertiesUpdate": { + "type": "object", + "description": "Employee properties", + "properties": { + "age": { + "type": "integer", + "format": "int32", + "description": "Age of employee" + }, + "city": { + "type": "string", + "description": "City of employee" + }, + "email": { + "type": "string", + "description": "Email of employee" + }, + "department": { + "type": "string", + "description": "Department of employee" + }, + "statusCode": { + "type": "string", + "description": "Status code of employee" + }, + "profile": { + "type": "string", + "format": "base64url", + "description": "Profile of employee" + }, + "assets": { + "type": "array", + "description": "The assets belong to the employee.", + "items": { + "type": "string" + } + } + } + }, + "EmployeeUpdate": { + "type": "object", + "description": "Employee resource", + "properties": { + "properties": { + "$ref": "#/definitions/EmployeePropertiesUpdate", + "description": "The resource-specific properties for this resource." + }, + "identity": { + "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate", + "description": "The managed service identities assigned to this resource." + } + }, + "allOf": [ + { + "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.TrackedResourceUpdate" + } + ] + }, + "ExportResult": { + "type": "object", + "description": "Export result model", + "properties": { + "data": { + "type": "string", + "description": "Exported data" + } + } + }, + "MoveRequest": { + "type": "object", + "description": "Employee move request", + "properties": { + "from": { + "type": "string", + "description": "The moving from location" + }, + "to": { + "type": "string", + "description": "The moving to location" + } + }, + "required": [ + "from", + "to" + ] + }, + "MoveResponse": { + "type": "object", + "description": "Employee move response", + "properties": { + "movingStatus": { + "type": "string", + "description": "The status of the move" + } + }, + "required": [ + "movingStatus" + ] + }, + "ProvisioningState": { + "type": "string", + "description": "The resource provisioning state.", + "enum": [ + "Succeeded", + "Failed", + "Canceled", + "Provisioning", + "Updating", + "Deleting", + "Accepted" + ], + "x-ms-enum": { + "name": "ProvisioningState", + "modelAsString": true, + "values": [ + { + "name": "Succeeded", + "value": "Succeeded", + "description": "Resource has been created." + }, + { + "name": "Failed", + "value": "Failed", + "description": "Resource creation failed." + }, + { + "name": "Canceled", + "value": "Canceled", + "description": "Resource creation was canceled." + }, + { + "name": "Provisioning", + "value": "Provisioning", + "description": "The resource is being provisioned" + }, + { + "name": "Updating", + "value": "Updating", + "description": "The resource is updating" + }, + { + "name": "Deleting", + "value": "Deleting", + "description": "The resource is being deleted" + }, + { + "name": "Accepted", + "value": "Accepted", + "description": "The resource create request has been accepted" + } + ] + }, + "readOnly": true + } + }, + "parameters": {} +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/tspconfig.yaml new file mode 100644 index 00000000000..9c97da201c0 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/tspconfig.yaml @@ -0,0 +1,44 @@ +parameters: + "service-dir": + default: "sdk/widget" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + use-read-only-status-schema: true + emitter-output-dir: "{project-root}" + output-file: "{version-status}/{version}/widget.json" + arm-types-dir: "{project-root}/../../../../common-types/resource-management" + "@azure-typespec/http-client-csharp-mgmt": + namespace: "Azure.ResourceManager.Widget" + emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" + "@azure-tools/typespec-python": + emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" + namespace: "azure.mgmt.widget" + generate-test: true + generate-sample: true + flavor: "azure" + "@azure-tools/typespec-java": + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" + namespace: "com.azure.resourcemanager.widget" + service-name: "Widget" # human-readable service name, whitespace allowed + flavor: azure + "@azure-tools/typespec-ts": + emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" + flavor: azure + experimental-extensible-enums: true + package-details: + name: "@azure/arm-widget" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/widget" + emitter-output-dir: "{output-dir}/{service-dir}/armwidget" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/references/agentic-search.md b/.github/azure-typespec-author/references/agentic-search.md new file mode 100644 index 00000000000..e9bcf0f37b6 --- /dev/null +++ b/.github/azure-typespec-author/references/agentic-search.md @@ -0,0 +1,15 @@ +# Agentic Search + +Procedure for fetching external documentation and extracting actionable guidance. + +## Input + +A set of document URLs to fetch (provided by the caller). + +## Procedure + +1. **Fetch documents** — use `web_fetch` to download each URL. Extract the page content as markdown. +2. **Search content** — read the downloaded content and identify instructions, code examples, and patterns relevant to the current task. +3. **Build authoring plan** — synthesize the extracted content into a concrete authoring plan grounded in the fetched material. + +> Do not proceed without an authoring plan grounded in the fetched reference material. diff --git a/.github/azure-typespec-author/references/analyze-project-and-classify-task.md b/.github/azure-typespec-author/references/analyze-project-and-classify-task.md new file mode 100644 index 00000000000..bf09a8eebae --- /dev/null +++ b/.github/azure-typespec-author/references/analyze-project-and-classify-task.md @@ -0,0 +1,62 @@ +# Analyze Project & Classify Task + +## Part 1 — Analyze Project + +Collect the inputs below from the TypeSpec project. Ask **up to 6 concise questions** for any that are missing. + +| # | Input | Example | +| --- | --------------------------- | ---------------------------------------------------------------- | +| 1 | TypeSpec project root | `/specification/widget/resource-manager/Microsoft.Widget/Widget` | +| 2 | Path to `tspconfig.yaml` | `/tspconfig.yaml` | +| 3 | Service type | ARM / data-plane | +| 4 | Existing API versions | `2024-01-01 (stable)`, `2024-06-01-preview` | +| 5 | Latest API version | Most recent entry in the `Versions` enum | +| 6 | Current working API version | The version being added or modified this session | +| 7 | Intent | add / modify / fix | +| 8 | Target resource/interface | Resource or operation name (if known) | +| 9 | Constraints | Breaking-change limits, naming rules, emitter targets, etc. | + +## Part 2 — Classify Task + +> **CRITICAL:** Classify into exactly one task type below and state your classification **before** proceeding to Step 2. + +### Definitions + +| Type | What it means | Tool Restriction | +| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| **API Version Evolution** | Adding a new preview or stable API version to an existing ARM service. Data-plane API version evolution is not fully supported yet. | **MUST NOT** call `azsdk_typespec_generate_authoring_plan`. Uses web-fetched docs only. | +| **General Authoring** | Any other TypeSpec authoring task that modifies `.tsp` files (resources, operations, models, properties, etc.) | **MUST** call `azsdk_typespec_generate_authoring_plan` in Step 3. | + +### How to Classify + +**API Version Evolution** — any request whose **primary intent** is to introduce a new API version string. +Keyword patterns: + +- _"add a new … API version"_, _"new preview version"_, _"new stable version"_ +- _"bump API version"_, _"introduce version"_, _"add … preview"_, _"add … stable"_ + +**General Authoring** — everything else that modifies `.tsp` files **without** introducing a new API version. + +### Example Prompts + +| Type | Examples | +| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **API Version Evolution** | "Add a new preview API version 2026-01-01-preview for widget resource manager", "Add preview version 2025-06-01-preview", "Bump to stable version 2026-01-01 for Microsoft.Widget", "Introduce a new preview API version for Foo" | +| **General Authoring** | "Add an ARM resource named Asset with CRUD operations", "Add a new property to the Widget model" | + +## Output + +Display the results before proceeding: + +``` +TypeSpec project root: /path/to/project +tspconfig.yaml: /path/to/project/tspconfig.yaml +Service Type: ARM +API Versions: 2024-01-01 (stable), 2024-06-01-preview (preview) +Latest Version: 2024-06-01-preview +Working Version: [TBD] +Intent: [add/modify/fix] +Target: [resource/operation if known] +Constraints: [if any] +Task Type: [API Version Evolution | General Authoring] +``` diff --git a/.github/azure-typespec-author/references/api-version-evolution.md b/.github/azure-typespec-author/references/api-version-evolution.md new file mode 100644 index 00000000000..f6c345f0d3b --- /dev/null +++ b/.github/azure-typespec-author/references/api-version-evolution.md @@ -0,0 +1,31 @@ +# API Version Evolution — Reference + +**MUST NOT** call `azsdk_typespec_generate_authoring_plan` for API Version Evolution tasks. + +--- + +## Step 2: Intake + +Search using [agentic search](agentic-search.md) in below documents to determine information needed from user. + +- MUST collect information from user rather than making assumptions. +- MUST use a user friendly way to collect information. + e.g. you MUST List features from latest version and let user select which to carry over vs exclude, rather than assume user wants to carry over all features. + + | Doc | Guide URL | + | ------------------------ | --------------------------------------------------------------------------------------------- | + | Preview version overview | `https://azure.github.io/typespec-azure/docs/howtos/versioning/01-preview-version` | + | preview > preview | `https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/02-preview-after-preview/` | + | preview > stable | `https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/03-stable-after-preview/` | + | stable > preview | `https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/04-preview-after-stable/` | + | stable > stable | `https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/05-stable-after-stable/` | + +--- + +## Step 3: Retrieve Authoring Plan + +1. Build an authoring plan from the fetched guide. Follow its rules for carried-over features and excluded features. Note there should be only one preview version and the preview version should be decorated with `@previewVersion`. + +2. Set up example folder: Copy all `.json` files from the latest version's `examples/` folder into new version's `examples/` folder. Create folder if necessary and update example content if necessary, e.g. api-version should be updated. + +3. update readme.md. diff --git a/.github/azure-typespec-author/references/general-authoring-intake.md b/.github/azure-typespec-author/references/general-authoring-intake.md new file mode 100644 index 00000000000..390d29449f4 --- /dev/null +++ b/.github/azure-typespec-author/references/general-authoring-intake.md @@ -0,0 +1,42 @@ +# Intake — General Authoring + +> Step 1 (Analyze Project) must be complete. Do not re-collect those inputs. + +### Step 2.1: Identify the Case + +| Case | Name | Description | Service Type | +| ---- | ----------------------- | ----------------------------------------- | ------------ | +| 1 | Add Resource Type | Define a new ARM resource with operations | ARM | +| 2 | Add Resource Operations | Add CRUD or custom actions on a resource | ARM | + +- **Match found** → collect case-specific inputs (Step 2.2). +- **No match** → skip to Step 3 using Step 1 analysis and the user's request. + +### Step 2.2: Collect Inputs + +**Case 1 — Add Resource Type (For ARM service only)** +Collect: target API version, resource name (PascalCase), hierarchy (top-level or nested + parent), properties (name, type, required/optional). + +Defaults: top-level → `TrackedResource`, child → `ProxyResource`. Operations: `createOrReplace` (PUT/async), `get`, `update/patch`, `delete` (async), list by parent. Top-level adds list by subscription. Use `createOrReplace` (not `createOrUpdate`), + +> MUST use `ArmCustomPatch` for PATCH `update/patch`. +> Top-level tracked resources MUST have `listByResourceGroup` and `listBySubscription`. + +**Case 2 — Add Resource Operations (For ARM service only)** +Collect: target resource, operation type (CRUD or custom), operation name (custom actions), request/response models (custom actions). + +Defaults: never async → GET, LIST, HEAD. Default async → PUT, DELETE. Default sync → PATCH. Always ask user → POST/action. + +> Use `createOrReplace` templates (not `createOrUpdate`). Use `ArmCustomPatch` for PATCH. +> For POST async operation, make sure use ARM combined headers. ` LroHeaders = ArmCombinedLroHeaders`. + +### Step 2.3: Confirm + +Display collected information and wait for user confirmation: + +``` +Case: [Name] +Target Version: [version] +Requested Changes: [summary] +Defaults: [defaults guidelines] +``` diff --git a/.github/azure-typespec-author/references/validation.md b/.github/azure-typespec-author/references/validation.md new file mode 100644 index 00000000000..f1e665f8418 --- /dev/null +++ b/.github/azure-typespec-author/references/validation.md @@ -0,0 +1,36 @@ +# Validation + +After applying changes (Step 4), run through all sub-steps below in order. + +| Sub-step | Action | When | +| -------- | ---------------------------------- | -------------------------- | +| 5.1 | TypeSpec Validation (error checks) | Always | +| 5.2 | `tsp compile .` (generate swagger) | Always | +| 5.3 | Example Verification | API Version Evolution only | + +> Steps 5.1 and 5.2 serve different purposes. Step 5.1 validates for errors/warnings. Step 5.2 compiles and generates the OpenAPI `.json` output files. Both must be executed. + +### Step 5.1: TypeSpec Validation + +Invoke `azure-sdk-mcp:azsdk_run_typespec_validation` with the TypeSpec project root path. + +- **Pass** → proceed to Step 5.2. +- **Fail** → fix with minimal, scoped changes, then re-run. Repeat until resolved. + +> Never skip this step, even for trivial changes. + +### Step 5.2: Compile successfully + +> This step is separate from Step 5.1. Validation alone does not produce output files — you must also run `tsp compile .` to generate the OpenAPI swagger. + +Run `tsp compile .` from the TypeSpec project root path. After compilation succeeds, verify that the swagger `.json` file has been generated under `{TypeSpec project root}/{version-status}/{target-version}/` (e.g. `preview/2025-01-01-preview/widget.json`). Fix any compile errors if they occur. + +### Step 5.3: Example Verification + +> Applies only for API Version Evolution tasks + +Verify that the example folder set up in Step 3 (copied from the latest version's `examples/` into `{TypeSpec project root}/{version-status}/{target-version}/examples/`) exists and contains example files. + +1. **Folder exists** — confirm `{TypeSpec project root}/{version-status}/{target-version}/examples/` was created. If missing, copy all `.json` files from the latest version's `examples/` folder. +2. **Files exist** — confirm the folder contains at least one `.json` example file. If empty, copy examples from the latest version's `examples/` folder. +3. **api-version updated** — each example file must use the correct `api-version` value matching the target version (e.g. `2024-02-01-preview`, not the source version). diff --git a/tools/azsdk-cli/Azure.Sdk.Tools.Cli.Benchmarks/TestData/TypeSpec/TestCases.json b/tools/azsdk-cli/Azure.Sdk.Tools.Cli.Benchmarks/TestData/TypeSpec/TestCases.json index befc0b43fca..ab8e38677b9 100644 --- a/tools/azsdk-cli/Azure.Sdk.Tools.Cli.Benchmarks/TestData/TypeSpec/TestCases.json +++ b/tools/azsdk-cli/Azure.Sdk.Tools.Cli.Benchmarks/TestData/TypeSpec/TestCases.json @@ -135,7 +135,8 @@ "version-model-property-required/main.tsp" ], "verifyPlan": [ - "1. The `email` property in EmployeeProperties should have `@madeRequired(Versions.v2025_05_04_preview)` decorator added." + "1. The `email` property in EmployeeProperties should have `@madeRequired(Versions.v2025_05_04_preview)` decorator added.", + "2. The employee.tsp should have code 'email: string' ." ] }, { From 40e0b086c0684857cb554d271bceb51218c833f9 Mon Sep 17 00:00:00 2001 From: JoyerJin <116236375+JoyerJin@users.noreply.github.com> Date: Mon, 20 Apr 2026 18:03:47 +0800 Subject: [PATCH 02/98] update verify plan and use sdk mcp config --- .../evaluate/evals/001001.eval.yaml | 33 +++---- .../evaluate/evals/001002.eval.yaml | 24 ++--- .../evaluate/evals/001003.eval.yaml | 26 ++---- .../evaluate/evals/001004.eval.yaml | 26 ++---- .../evaluate/evals/001005.eval.yaml | 16 ++-- .../evaluate/evals/001006.eval.yaml | 28 ++---- .../evaluate/evals/001007.eval.yaml | 30 ++---- .../evaluate/evals/001008.eval.yaml | 26 ++---- .../evaluate/evals/001009.eval.yaml | 24 ++--- .../evaluate/evals/001010.eval.yaml | 24 ++--- .../evaluate/evals/001011.eval.yaml | 24 ++--- .../evaluate/evals/001012.eval.yaml | 24 ++--- .../evaluate/evals/001013.eval.yaml | 24 ++--- .../evaluate/evals/002001.eval.yaml | 32 +++---- .../evaluate/evals/002002.eval.yaml | 28 ++---- .../evaluate/evals/002003.eval.yaml | 28 ++---- .../evaluate/evals/002004.eval.yaml | 36 +++----- .../evaluate/evals/002005.eval.yaml | 59 +++++++----- .../evaluate/evals/002006.eval.yaml | 89 +++++++++++++----- .../evaluate/evals/002007.eval.yaml | 80 ++++++++++------ .../evaluate/evals/002008.eval.yaml | 28 ++---- .../evaluate/evals/002009.eval.yaml | 28 ++---- .../evaluate/evals/002010.eval.yaml | 42 ++++----- .../evaluate/evals/003001.eval.yaml | 45 ++++----- .../evaluate/evals/003002.eval.yaml | 53 +++++------ .../evaluate/evals/003003.eval.yaml | 51 ++++++----- .../evaluate/evals/004001.eval.yaml | 32 +++---- .../evaluate/evals/004002.eval.yaml | 48 +++++----- .../evaluate/evals/004003.eval.yaml | 64 ++++++++----- .../evaluate/evals/005001.eval.yaml | 17 +--- .../employee.tsp | 91 +++++++++++++++++++ .../002010-arm-action-sync-operation/main.tsp | 32 +++++++ .../package.json | 50 ++++++++++ .../readme.md | 19 ++++ .../shared.tsp | 8 ++ .../tspconfig.yaml | 44 +++++++++ 36 files changed, 752 insertions(+), 581 deletions(-) create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/employee.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/main.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/package.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/readme.md create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/shared.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/tspconfig.yaml diff --git a/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml index a1a909fae70..348ab4096d1 100644 --- a/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml @@ -3,17 +3,8 @@ description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -41,18 +32,23 @@ stimuli: - src: ../fixtures/Microsoft.Widget/Widget/readme.md dest: readme.md graders: + - type: tool-calls + config: + required: + - edit + - azsdk_typespec_generate_authoring_plan - type: file-matches config: - path: main.tsp + path: Widget/main.tsp pattern: 2025-05-04-preview - type: file-matches config: - path: employee.tsp + path: Widget/employee.tsp pattern: "\\.\\.\\.ManagedServiceIdentityProperty;" - type: file-matches config: - path: employee.tsp - pattern: "@@added\\(Employee\\.identity, Versions\\.(v2025_05_04_preview|`2025-05-04-preview`)\\);" + path: Widget/employee.tsp + pattern: "@@added\\(Employee\\.identity, (Microsoft\\.Widget\\.)?Versions\\.(v2025_05_04_preview|`2025-05-04-preview`)\\);" - type: prompt config: prompt: Verify changes are scoped to this task only, with no unrelated edits beyond introducing preview-only identity via versioning. @@ -62,14 +58,9 @@ stimuli: constraints: max_turns: 10 max_tokens: 50000 - expect_tools: - - edit - - azsdk_run_typespec_validation scoring: weights: file-matches: 3 + tool-calls: 1 prompt: 1 threshold: 1.0 - - - diff --git a/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml index fd6d83a4a7c..6dde5b9c777 100644 --- a/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml @@ -3,17 +3,8 @@ description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -29,9 +20,6 @@ stimuli: name: 001002-version-default-value constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -48,6 +36,11 @@ stimuli: - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml graders: + - type: tool-calls + config: + required: + - edit + - azsdk_typespec_generate_authoring_plan - type: file-matches config: path: employee.tsp @@ -72,8 +65,7 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: + tool-calls: 1 prompt: 1 file-matches: 4 threshold: 1.0 - - diff --git a/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml index 6c2dbae468c..38af988e201 100644 --- a/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml @@ -1,19 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -29,9 +20,6 @@ stimuli: name: 001003-version-required-to-optional constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -48,6 +36,11 @@ stimuli: - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml graders: + - type: tool-calls + config: + required: + - edit + - azsdk_typespec_generate_authoring_plan - type: file-matches config: path: employee.tsp @@ -66,6 +59,5 @@ scoring: weights: prompt: 1 file-matches: 2 + tool-calls: 1 threshold: 1.0 - - diff --git a/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml index 4b9db162186..6da410ee644 100644 --- a/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml @@ -1,19 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -29,9 +20,6 @@ stimuli: name: 001004-version-property-decorator constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -48,6 +36,11 @@ stimuli: - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml graders: + - type: tool-calls + config: + required: + - edit + - azsdk_typespec_generate_authoring_plan - type: file-matches config: path: employee.tsp @@ -66,6 +59,5 @@ scoring: weights: prompt: 1 file-matches: 2 + tool-calls: 1 threshold: 1.0 - - diff --git a/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml index 5d2cceee5a3..1deb581bc21 100644 --- a/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml @@ -3,6 +3,9 @@ description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression +# Root-level environment +environment: azsdk-mcp + # Execution configuration config: runs: 1 # Trials per stimulus @@ -17,9 +20,6 @@ stimuli: name: 001005-version-add-preview-after-preview constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -70,6 +70,11 @@ stimuli: - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Operations_List_MinimumSet_Gen.json dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation - type: file-exists config: path: examples/2025-05-04-preview/Employees_Get_MaximumSet_Gen.json @@ -101,8 +106,5 @@ scoring: file-not-matches: 2 file-exists: 1 file-not-exists: 1 + tool-calls: 1 threshold: 1.0 - - - - diff --git a/.github/azure-typespec-author/evaluate/evals/001006.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001006.eval.yaml index 5008bf4e4f1..6e130dea0a7 100644 --- a/.github/azure-typespec-author/evaluate/evals/001006.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001006.eval.yaml @@ -1,19 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -29,9 +20,6 @@ stimuli: name: 001006-version-add-preview-after-stable constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -82,6 +70,11 @@ stimuli: - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Operations_List_MinimumSet_Gen.json dest: examples/2024-10-01/Operations_List_MinimumSet_Gen.json graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation - type: file-exists config: path: examples/2025-05-04-preview/Employees_Get_MaximumSet_Gen.json @@ -107,8 +100,5 @@ scoring: file-exists: 2 prompt: 1 file-matches: 2 + tool-calls: 1 threshold: 1.0 - - - - diff --git a/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml index aa379ef23fe..919886c499f 100644 --- a/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml @@ -1,19 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -29,9 +20,6 @@ stimuli: name: 001007-version-add-stable-after-preview constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -88,6 +76,11 @@ stimuli: - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Operations_List_MinimumSet_Gen.json dest: examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation - type: file-exists config: path: examples/2025-01-01/Employees_Get_MaximumSet_Gen.json @@ -127,10 +120,5 @@ scoring: file-not-matches: 3 file-exists: 1 file-not-exists: 1 + tool-calls: 1 threshold: 1.0 - executor: copilot-sdk - runs: 1 - model: claude-opus-4.6-1m - timeout: 1800 - - diff --git a/.github/azure-typespec-author/evaluate/evals/001008.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001008.eval.yaml index 3ec4262915e..1d53cf35c92 100644 --- a/.github/azure-typespec-author/evaluate/evals/001008.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001008.eval.yaml @@ -1,19 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -29,9 +20,6 @@ stimuli: name: 001008-version-add-stable-after-stable constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -88,6 +76,11 @@ stimuli: - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Operations_List_MinimumSet_Gen.json dest: examples/2024-10-01/Operations_List_MinimumSet_Gen.json graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation - type: file-exists config: path: examples/2024-10-01/Employees_Get_MaximumSet_Gen.json @@ -117,6 +110,5 @@ scoring: file-exists: 2 prompt: 1 file-matches: 3 + tool-calls: 1 threshold: 1.0 - - diff --git a/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml index 7863daf9373..f92fb4bb3d1 100644 --- a/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml @@ -1,19 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -29,9 +20,6 @@ stimuli: name: 001009-version-model-property-required constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -48,6 +36,11 @@ stimuli: - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation - type: file-matches config: path: main.tsp @@ -74,4 +67,5 @@ scoring: weights: prompt: 1 file-matches: 3 + tool-calls: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml index 845e23cde76..3aa66166d71 100644 --- a/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml @@ -1,19 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -29,9 +20,6 @@ stimuli: name: 001010-version-model-property-removed constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -48,6 +36,11 @@ stimuli: - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation - type: file-matches config: path: main.tsp @@ -69,5 +62,6 @@ stimuli: scoring: weights: prompt: 1 + tool-calls: 1 file-matches: 3 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml index 6e529c835cb..77e0ec83a77 100644 --- a/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml @@ -1,19 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -29,9 +20,6 @@ stimuli: name: 001011-version-model-property-renamed constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -48,6 +36,11 @@ stimuli: - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation - type: file-matches config: path: main.tsp @@ -70,4 +63,5 @@ scoring: weights: prompt: 1 file-matches: 3 + tool-calls: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml index c6aece49545..34851165181 100644 --- a/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml @@ -1,19 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -29,9 +20,6 @@ stimuli: name: 001012-version-operation-return-type-changed constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -48,6 +36,11 @@ stimuli: - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation - type: file-matches config: path: main.tsp @@ -82,4 +75,5 @@ scoring: weights: prompt: 1 file-matches: 6 + tool-calls: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml index e54c839881d..4a2c9bb2bae 100644 --- a/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml @@ -1,19 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -29,9 +20,6 @@ stimuli: name: 001013-version-model-property-type-changed constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -48,6 +36,11 @@ stimuli: - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation - type: file-matches config: path: main.tsp @@ -70,4 +63,5 @@ scoring: weights: prompt: 1 file-matches: 3 + tool-calls: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml index 3b96ea8acb7..56cb0aca576 100644 --- a/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml @@ -1,21 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - skills: - - ../../SKILL.md - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -31,9 +20,6 @@ stimuli: name: 002001-ARM-change-resource-type constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -50,6 +36,11 @@ stimuli: - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation - type: file-matches config: path: '*.tsp' @@ -61,18 +52,17 @@ stimuli: - type: file-matches config: path: '*.tsp' - pattern: Extension\.Read<|Extension\.CreateOrUpdate<|Extension\.ListByScope< + pattern: Extension\.Read<|Extension\.CreateOrReplaceAsync<|Extension\.CustomPatch(Sync|Async)<|Extension\.DeleteWithoutOkAsync<|Extension\.ListByTarget< - type: prompt config: scoring: scale_1_5 threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + prompt: 'The original separate list-by-resource-group and list-by-subscription operations should be consolidated into a single list operation using the extension list template. A scope-parameterized interface should be defined to allow the extension resource to be scoped to any parent resource.' model: claude-opus-4.6-1m scoring: weights: + tool-calls: 1 prompt: 1 file-not-matches: 1 file-matches: 2 threshold: 1.0 - - diff --git a/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml index e9bfddb343c..c113d418ab9 100644 --- a/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml @@ -1,21 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - skills: - - ../../SKILL.md - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -31,9 +20,6 @@ stimuli: name: 002002-ARM-define-extension-resource constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -50,6 +36,11 @@ stimuli: - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation - type: file-matches config: path: '*.tsp' @@ -70,8 +61,7 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: + tool-calls: 1 prompt: 1 file-matches: 3 threshold: 1.0 - - diff --git a/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml index 5011f6aef76..4bf84e58398 100644 --- a/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml @@ -1,21 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - skills: - - ../../SKILL.md - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -31,9 +20,6 @@ stimuli: name: 002003-ARM-define-full-update-operation constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -50,6 +36,11 @@ stimuli: - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation - type: file-matches config: path: '*.tsp' @@ -66,9 +57,8 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: + tool-calls: 1 prompt: 1 file-not-matches: 1 file-matches: 1 threshold: 1.0 - - diff --git a/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml index 74e856ab8bb..b800a73c6df 100644 --- a/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml @@ -1,21 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - skills: - - ../../SKILL.md - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -31,9 +20,6 @@ stimuli: name: 002004-ARM-define-extension-resource constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -52,6 +38,11 @@ stimuli: - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation - type: file-matches config: path: badgeAssignment.tsp @@ -63,7 +54,11 @@ stimuli: - type: file-matches config: path: badgeAssignment.tsp - pattern: Extension\.Read<|Extension\.CreateOrUpdate< + pattern: Extension\.Read<|Extension\.CreateOrReplaceAsync<|Extension\.CustomPatch(Sync|Async)<|Extension\.DeleteWithoutOkAsync< + - type: file-matches + config: + path: badgeAssignment.tsp + pattern: Extension\.ListByTarget< - type: prompt config: scoring: scale_1_5 @@ -72,8 +67,7 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: + tool-calls: 1 prompt: 1 - file-matches: 3 + file-matches: 4 threshold: 1.0 - - diff --git a/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml index 0de9267d27a..91f9d05bd72 100644 --- a/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml @@ -1,21 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - skills: - - ../../SKILL.md - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -27,13 +16,10 @@ config: # Test cases stimuli: - prompt: | - Define a Azure resource "User" under the namespace "Microsoft.Contoso" using TypeSpec. Ensure the definition meets TypeSpec Azure design guidelines. + Define a Azure resource "Employee" under the namespace "Microsoft.Widget" using TypeSpec. Properties: age (int32, optional), city (string, optional), profile (bytes, optional), provisioningState (enum, optional, read-only). Ensure the definition meets TypeSpec Azure design guidelines. name: 002005-ARM-define-the-resource constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -48,28 +34,51 @@ stimuli: - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation - type: file-matches config: - path: main.tsp + path: employee.tsp pattern: model Employee is TrackedResource + # Point 3: EmployeeProperties has age, city, profile, and read-only provisioningState + - type: file-matches + config: + path: 'employee.tsp' + pattern: 'age\?: int32' - type: file-matches config: - path: main.tsp + path: 'employee.tsp' + pattern: '@visibility\(Lifecycle\.Read\)' + # Point 4: ProvisioningState union includes standard ARM states + - type: file-matches + config: + path: 'employee.tsp' + pattern: ResourceProvisioningState + # Point 5: CRUD + listByResourceGroup + listBySubscription + - type: file-matches + config: + path: employee.tsp pattern: ArmResourceCreateOrReplaceAsync|ArmResourceCreateOrUpdateAsync - type: file-matches config: - path: main.tsp + path: employee.tsp + pattern: ArmResourceListByParent + - type: file-matches + config: + path: employee.tsp pattern: ArmListBySubscription - type: prompt config: scoring: scale_1_5 threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + prompt: 'Verify all five aspects: (1) Employee resource definition is written into a TSP file; (2) Employee model uses TrackedResource under Microsoft.Widget namespace; (3) EmployeeProperties includes age, city, profile, and a read-only provisioningState; (4) ProvisioningState is a union type incorporating standard ARM ResourceProvisioningState; (5) Employees interface includes full CRUD operations (get, create, update, delete) plus listByResourceGroup and listBySubscription.' model: claude-opus-4.6-1m scoring: weights: + tool-calls: 1 prompt: 1 - file-matches: 3 + file-matches: 7 threshold: 1.0 - - diff --git a/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml index 61e4ecce19c..67cbb023f15 100644 --- a/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml @@ -1,21 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - skills: - - ../../SKILL.md - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -27,13 +16,10 @@ config: # Test cases stimuli: - prompt: | - Create a new "AddressResource" child resource under the parent resource "Employee". Ensure the definition meets TypeSpec Azure design guidelines. + Create a new "AddressResource" child resource under the parent resource "Employee". AddressResource properties:street address fields, city, state, postal code, country, and a read-only provisioningState. Ensure the definition meets TypeSpec Azure design guidelines. name: 002006-ARM-define-child-resource constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -50,6 +36,11 @@ stimuli: - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation - type: file-matches config: path: '*.tsp' @@ -57,21 +48,73 @@ stimuli: - type: file-matches config: path: '*.tsp' - pattern: ProxyResource + pattern: 'model AddressResource is ProxyResource' - type: file-matches config: path: '*.tsp' pattern: interface Addresses|interface AddressResource + - type: file-matches + config: + path: '*.tsp' + pattern: 'model AddressProperties' + - type: file-matches + config: + path: '*.tsp' + pattern: 'street1\?: string;' + - type: file-matches + config: + path: '*.tsp' + pattern: 'street2\?: string;' + - type: file-matches + config: + path: '*.tsp' + pattern: 'city\?: string;' + - type: file-matches + config: + path: '*.tsp' + pattern: 'state\?: string;' + - type: file-matches + config: + path: '*.tsp' + pattern: 'postalCode\?: string;' + - type: file-matches + config: + path: '*.tsp' + pattern: 'country\?: string;' + - type: file-matches + config: + path: '*.tsp' + pattern: '@visibility\(Lifecycle\.Read\)' + - type: file-matches + config: + path: '*.tsp' + pattern: 'provisioningState\?: ProvisioningState;' + # Addresses interface CRUD + list-by-parent + - type: file-matches + config: + path: '*.tsp' + pattern: ArmResourceRead + - type: file-matches + config: + path: '*.tsp' + pattern: ArmResourceCreateOrReplaceAsync|ArmResourceCreateOrReplaceSync + - type: file-matches + config: + path: '*.tsp' + pattern: ArmResourceDeleteWithoutOkAsync|ArmResourceDeleteSync + - type: file-matches + config: + path: '*.tsp' + pattern: ArmResourceListByParent - type: prompt config: scoring: scale_1_5 threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + prompt: 'The Addresses interface should include standard CRUD operations (get, create, update, delete) and a list-by-parent operation.' model: claude-opus-4.6-1m scoring: weights: + tool-calls: 1 prompt: 1 - file-matches: 3 + file-matches: 16 threshold: 1.0 - - diff --git a/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml index 633bead5734..6ec08e5067f 100644 --- a/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml @@ -1,21 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - skills: - - ../../SKILL.md - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -27,13 +16,10 @@ config: # Test cases stimuli: - prompt: | - Add an additional POST action called "/notify" to the standard operations of Employee. Ensure the definition meets TypeSpec Azure design guidelines. + Add an additional POST action called "/notify" to the standard operations of Employee. Request body: message content (string) and priority (enum with values Low, Medium, High). Response body: notification identifier (string) and status (string). Ensure the definition meets TypeSpec Azure design guidelines. name: 002007-ARM-define-custom-action constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -50,18 +36,59 @@ stimuli: - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation + # VP1: Extensible enum for notification priority levels (Low, Medium, High) + - type: file-matches + config: + path: 'employee.tsp' + pattern: union.*Priority|enum.*Priority + - type: file-matches + config: + path: 'employee.tsp' + pattern: 'Low|"Low"' - type: file-matches config: - path: '*.tsp' - pattern: notify is ArmResourceAction|move is ArmResourceAction|ArmResourceActionSync< + path: 'employee.tsp' + pattern: 'Medium|"Medium"' - type: file-matches config: - path: '*.tsp' - pattern: model .*Request + path: 'employee.tsp' + pattern: 'High|"High"' + # VP2: Request model with message content (string) and priority fields - type: file-matches config: - path: '*.tsp' - pattern: model .*Response + path: 'employee.tsp' + pattern: model.*Notify.*Request|model.*Notification.*Request + - type: file-matches + config: + path: 'employee.tsp' + pattern: 'message.*:\s*string|content.*:\s*string' + - type: file-matches + config: + path: 'employee.tsp' + pattern: 'priority.*:\s*.*Priority' + # VP3: Response model with notification identifier (string) and status (string) + - type: file-matches + config: + path: 'employee.tsp' + pattern: model.*Notify.*Response|model.*Notification.*Response + - type: file-matches + config: + path: 'employee.tsp' + pattern: 'notificationId.*:\s*string|identifier.*:\s*string' + - type: file-matches + config: + path: 'employee.tsp' + pattern: 'status.*:\s*string' + # VP4: Synchronous notify action on Employees interface + - type: file-matches + config: + path: 'employee.tsp' + pattern: 'notify is ArmResourceActionSync<|notify is ArmResourceActionAsync<|notify is ArmResourceAction<' - type: prompt config: scoring: scale_1_5 @@ -70,8 +97,7 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: + tool-calls: 1 prompt: 1 - file-matches: 3 + file-matches: 11 threshold: 1.0 - - diff --git a/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml index bf77d5ed6a3..8de3c4bf8ea 100644 --- a/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml @@ -1,21 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - skills: - - ../../SKILL.md - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -31,9 +20,6 @@ stimuli: name: 002008-ARM-add-parameters constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -50,6 +36,11 @@ stimuli: - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation - type: file-matches config: path: '*.tsp' @@ -70,8 +61,7 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: + tool-calls: 1 prompt: 1 file-matches: 3 threshold: 1.0 - - diff --git a/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml index 3220b32acb5..1885634db53 100644 --- a/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml @@ -1,21 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - skills: - - ../../SKILL.md - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -27,13 +16,10 @@ config: # Test cases stimuli: - prompt: | - In the specification/widget/resource-manager/Microsoft.Widget/Widget project, add a patch operation to an existing ARM resource named 'Employee' + In the Widget project, add a patch operation to an existing ARM resource named 'Employee' name: 002009-arm-add-patch-operation-to-resource constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -50,6 +36,11 @@ stimuli: - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation - type: file-matches config: path: employee.tsp @@ -62,6 +53,7 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: + tool-calls: 1 prompt: 1 file-matches: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml index 7a253e3bdfa..ddbce0e9eb0 100644 --- a/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml @@ -1,21 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - skills: - - ../../SKILL.md - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -27,33 +16,35 @@ config: # Test cases stimuli: - prompt: | - In the specification/widget/resource-manager/Microsoft.Widget/Widget project, add a sync operation exportEmployeeData for employee resource. + In the Widget project, add a sync operation exportEmployeeData for employee resource. name: 002010-arm-action-sync-operation constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + - src: ../fixtures/002010-arm-action-sync-operation/employee.tsp dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + - src: ../fixtures/002010-arm-action-sync-operation/main.tsp dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json + - src: ../fixtures/002010-arm-action-sync-operation/package.json dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md + - src: ../fixtures/002010-arm-action-sync-operation/readme.md dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + - src: ../fixtures/002010-arm-action-sync-operation/shared.tsp dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + - src: ../fixtures/002010-arm-action-sync-operation/tspconfig.yaml dest: tspconfig.yaml graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation - type: file-matches config: path: employee.tsp - pattern: 'exportEmployeeData is ArmResourceActionSync;' + pattern: 'exportData is ArmResourceActionSync;' - type: prompt config: scoring: scale_1_5 @@ -62,6 +53,7 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: + tool-calls: 1 prompt: 1 file-matches: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml index a3c41334ee1..6799a5d0a39 100644 --- a/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml @@ -1,21 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - skills: - - ../../SKILL.md - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -31,9 +20,6 @@ stimuli: name: 003001-dataplane-async-delete-op constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -42,14 +28,30 @@ stimuli: - src: ../fixtures/003001-dataplane-async-delete-op/package.json dest: package.json graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation + # VP1: Async delete added to StacItems namespace - type: file-matches config: path: inma.tsp - pattern: delete + pattern: 'interface StacItems' - type: file-matches config: path: inma.tsp - pattern: '@pollingLocation|Lro|LongRunning' + pattern: 'LongRunningResourceDelete' + # VP2: Uses StandardResourceOperations alias + - type: file-matches + config: + path: inma.tsp + pattern: 'alias StandardResourceOperations|StandardResourceOperations\.LongRunningResourceDelete' + # VP3: Linked to existing polling operation + - type: file-matches + config: + path: inma.tsp + pattern: '@pollingOperation\(IngestionOperations\.get\)' - type: prompt config: scoring: scale_1_5 @@ -58,8 +60,7 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: + tool-calls: 1 prompt: 1 - file-matches: 2 + file-matches: 4 threshold: 1.0 - - diff --git a/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml index ad1b139fe8d..4600c652a39 100644 --- a/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml @@ -1,21 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - skills: - - ../../SKILL.md - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -31,9 +20,6 @@ stimuli: name: 003002-arm-action-lro constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -50,18 +36,34 @@ stimuli: - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation + # VP1: Async move action using ArmResourceActionAsync + - type: file-matches + config: + path: employee.tsp + pattern: 'move is ArmResourceActionAsync' + # VP2: createOrUpdate uses ArmResourceCreateOrReplaceAsync with custom LroHeaders + - type: file-matches + config: + path: employee.tsp + pattern: 'createOrUpdate is ArmResourceCreateOrReplaceAsync<' + - type: file-matches + config: + path: employee.tsp + pattern: 'LroHeaders\s*=' + # VP3: Other operations unchanged - type: file-matches config: - path: '*.tsp' - pattern: ArmAsyncOperationHeader + path: employee.tsp + pattern: 'update is ArmResourcePatchSync' - type: prompt config: scoring: scale_1_5 @@ -66,8 +72,9 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: + tool-calls: 1 prompt: 1 - file-matches: 2 + file-matches: 5 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml index 3b502523547..caf591f1468 100644 --- a/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml @@ -1,21 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - skills: - - ../../SKILL.md - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -31,9 +20,6 @@ stimuli: name: 004001-decorate-mgmt-resource-name-parameter constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -50,14 +36,19 @@ stimuli: - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation - type: file-matches config: path: '*.tsp' - pattern: '@minLength\(1\)' + pattern: '@minLength\(1\)|@@minLength\(Employee\.name,\s*1\)' - type: file-matches config: path: '*.tsp' - pattern: ResourceNameParameter + pattern: 'ResourceNameParameter|@key\("employeeName"\)' - type: prompt config: scoring: scale_1_5 @@ -66,8 +57,7 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: + tool-calls: 1 prompt: 1 file-matches: 2 threshold: 1.0 - - diff --git a/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml index d49757465d4..5d84bc9e34d 100644 --- a/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml @@ -1,21 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - skills: - - ../../SKILL.md - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -31,9 +20,6 @@ stimuli: name: 004002-decorate-length-constrains-on-array-item constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -50,18 +36,33 @@ stimuli: - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation + # VP1: Custom scalar type with minLength/maxLength constraints + - type: file-matches + config: + path: employee.tsp + pattern: 'scalar.*extends string' - type: file-matches config: - path: '*.tsp' + path: employee.tsp pattern: '@minLength\(3\)' - type: file-matches config: - path: '*.tsp' + path: employee.tsp pattern: '@maxLength\(10\)' + # VP2: Assets array uses custom scalar type instead of plain string + - type: file-not-matches + config: + path: employee.tsp + pattern: 'assets:\s*string\[\]' - type: file-matches config: - path: '*.tsp' - pattern: assets + path: employee.tsp + pattern: 'assets:.*\[\]' - type: prompt config: scoring: scale_1_5 @@ -70,8 +71,7 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: + tool-calls: 1 prompt: 1 - file-matches: 3 + file-matches: 5 threshold: 1.0 - - diff --git a/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml index 383ff17bac9..7f93a1979bf 100644 --- a/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml @@ -1,21 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - skills: - - ../../SKILL.md - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: @@ -31,9 +20,6 @@ stimuli: name: 004003-delete-and-restore-operationId-decorator constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -60,14 +46,43 @@ stimuli: - src: ../fixtures/004003-delete-and-restore-operationId-decorator/VpnSiteLinkConnection.tsp dest: VpnSiteLinkConnection.tsp graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation + # VP1: Underscore operationIds should be removed (e.g. BgpConnection has only underscore ones) - type: file-not-matches config: - path: '*.tsp' - pattern: '#suppress.*operationId|#suppress.*operation-id' - - type: file-matches + path: BgpConnection.tsp + pattern: '@operationId\(' + - type: file-not-matches config: - path: '*.tsp' + path: NetworkInterface.tsp pattern: '@operationId\(' + # VP2: Non-standard PascalCase operationIds restored with @operationId + - type: file-matches + config: + path: BastionHost.tsp + pattern: '@operationId\("PutBastionShareableLink"\)' + - type: file-matches + config: + path: BastionHost.tsp + pattern: '@operationId\("GetActiveSessions"\)' + - type: file-matches + config: + path: ExpressRouteProviderPort.tsp + pattern: '@operationId\("ExpressRouteProviderPort"\)' + # VP3: Restored operationIds keep their #suppress comment + - type: file-matches + config: + path: BastionHost.tsp + pattern: '#suppress.*no-openapi|#suppress.*operationId' + # Underscore one in ExpressRouteProviderPort should be removed + - type: file-not-matches + config: + path: ExpressRouteProviderPort.tsp + pattern: '@operationId\("ExpressRouteProviderPortsLocation_List"\)' - type: prompt config: scoring: scale_1_5 @@ -76,9 +91,8 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: + tool-calls: 1 prompt: 1 - file-not-matches: 1 - file-matches: 1 + file-not-matches: 3 + file-matches: 4 threshold: 1.0 - - diff --git a/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml index 361d601827a..c73718a5dcb 100644 --- a/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml @@ -1,21 +1,10 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression -# Root-level environment (merged into all stimuli) -environment: - skills: - - ../../SKILL.md - mcpServers: - azure-sdk-mcp: - type: stdio - command: pwsh - args: ["../../../../../eng/common/mcp/azure-sdk-mcp.ps1", "-Run"] - env: { - AZURE_SDK_KB_ENDPOINT: http://localhost:8088 - } - timeout: 60000 +# Root-level environment +environment: azsdk-mcp # Execution configuration config: diff --git a/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/employee.tsp new file mode 100644 index 00000000000..770ead12eed --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/employee.tsp @@ -0,0 +1,91 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.Core; +using Azure.ResourceManager; + +namespace Microsoft.Widget; + +/** Employee resource */ +model Employee is TrackedResource { + ...ResourceNameParameter; + ...ManagedServiceIdentityProperty; +} + +/** Employee properties */ +model EmployeeProperties { + /** Age of employee */ + age?: int32; + + /** City of employee */ + city?: string; + + /** Email of employee */ + email?: string; + + /** Department of employee */ + department?: string; + + /** Status code of employee */ + statusCode?: string; + + /** Profile of employee */ + @encode("base64url") + profile?: bytes; + + /** The assets belong to the employee. */ + assets: string[]; + + /** The status of the last operation. */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; +} + +/** Employee move request */ +model MoveRequest { + /** The moving from location */ + from: string; + + /** The moving to location */ + to: string; +} + +/** Employee move response */ +model MoveResponse { + /** The status of the move */ + movingStatus: string; +} + +/** The resource provisioning state. */ +@lroStatus +union ProvisioningState { + ResourceProvisioningState, + + /** The resource is being provisioned */ + Provisioning: "Provisioning", + + /** The resource is updating */ + Updating: "Updating", + + /** The resource is being deleted */ + Deleting: "Deleting", + + /** The resource create request has been accepted */ + Accepted: "Accepted", + + string, +} + +@armResourceOperations +interface Employees { + get is ArmResourceRead; + createOrUpdate is ArmResourceCreateOrReplaceAsync; + update is ArmResourcePatchSync; + delete is ArmResourceDeleteWithoutOkAsync; + listByResourceGroup is ArmResourceListByParent; + listBySubscription is ArmListBySubscription; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/main.tsp new file mode 100644 index 00000000000..2990eb2b363 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/main.tsp @@ -0,0 +1,32 @@ +import "@typespec/http"; +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "./employee.tsp"; + +using TypeSpec.Http; +using TypeSpec.Rest; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +/** Microsoft.Widget Resource Provider management API. */ +@armProviderNamespace +@service(#{ title: "Widget" }) +@versioned(Microsoft.Widget.Versions) +namespace Microsoft.Widget; + +/** The available API versions. */ +enum Versions { + /** 2021-11-01 version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + v2021_11_01: "2021-11-01", + + /** 2024-10-01-preview version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + @previewVersion + v2024_10_01_preview: "2024-10-01-preview", +} + +interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/package.json b/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/package.json new file mode 100644 index 00000000000..45377b8ad61 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/package.json @@ -0,0 +1,50 @@ +{ + "name": "azure-rest-api-specs", + "devDependencies": { + "@azure-tools/openai-typespec": "1.11.0", + "@azure-tools/spec-gen-sdk": "~0.9.1", + "@azure-tools/specs-shared": "file:.github/shared", + "@azure-tools/typespec-apiview": "0.7.2", + "@azure-tools/typespec-metadata": "0.1.1", + "@azure-tools/typespec-autorest": "0.66.0", + "@azure-tools/typespec-azure-core": "0.66.0", + "@azure-tools/typespec-azure-portal-core": "0.66.0", + "@azure-tools/typespec-azure-resource-manager": "0.66.0", + "@azure-tools/typespec-azure-rulesets": "0.66.0", + "@azure-tools/typespec-client-generator-cli": "0.31.0", + "@azure-tools/typespec-client-generator-core": "0.66.3", + "@azure-tools/typespec-liftr-base": "0.13.0", + "@autorest/openapi-to-typespec": "0.11.13", + "@azure/avocado": "0.10.5", + "@azure/oad": "0.12.4", + "@microsoft.azure/openapi-validator": "2.2.4", + "@microsoft.azure/openapi-validator-core": "1.0.7", + "@microsoft.azure/openapi-validator-rulesets": "2.2.5", + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/sse": "0.80.0", + "@typespec/events": "0.80.0", + "@typespec/openapi": "1.10.0", + "@typespec/openapi3": "1.10.0", + "@typespec/prettier-plugin-typespec": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/streams": "0.80.0", + "@typespec/versioning": "0.80.0", + "@typespec/xml": "0.80.0", + "azure-rest-api-specs-eng-tools": "file:eng/tools", + "oav": "4.0.3", + "prettier": "3.8.1", + "typescript": "~5.9.2" + }, + "overrides": { + "@typespec/asset-emitter": "0.79.1", + "get-uri": "^6.0.5", + "minimatch@^3.0.0": "^3.1.5", + "superagent": "^10.2.3" + }, + "engines": { + "node": ">=20.0.0", + "npm": ">=10.0.0" + }, + "private": true +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/readme.md b/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/readme.md new file mode 100644 index 00000000000..448096610f8 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/readme.md @@ -0,0 +1,19 @@ +# Widget + +> see https://aka.ms/autorest + +This is the AutoRest configuration file for Widget. + +## Configuration + +### Basic Information + +This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. +This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we +use the native TypeSpec code generation configured in the tspconfig.yaml file. + +```yaml +openapi-type: arm +openapi-subtype: rpaas +tag: package-2021-11-01 +``` diff --git a/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/shared.tsp new file mode 100644 index 00000000000..1b94bb70503 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/shared.tsp @@ -0,0 +1,8 @@ +@doc("Faked shared model") +model FakedSharedModel { + @doc("The tag.") + tag: string; + + @doc("The created date.") + createdAt: utcDateTime; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/tspconfig.yaml new file mode 100644 index 00000000000..9c97da201c0 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/tspconfig.yaml @@ -0,0 +1,44 @@ +parameters: + "service-dir": + default: "sdk/widget" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + use-read-only-status-schema: true + emitter-output-dir: "{project-root}" + output-file: "{version-status}/{version}/widget.json" + arm-types-dir: "{project-root}/../../../../common-types/resource-management" + "@azure-typespec/http-client-csharp-mgmt": + namespace: "Azure.ResourceManager.Widget" + emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" + "@azure-tools/typespec-python": + emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" + namespace: "azure.mgmt.widget" + generate-test: true + generate-sample: true + flavor: "azure" + "@azure-tools/typespec-java": + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" + namespace: "com.azure.resourcemanager.widget" + service-name: "Widget" # human-readable service name, whitespace allowed + flavor: azure + "@azure-tools/typespec-ts": + emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" + flavor: azure + experimental-extensible-enums: true + package-details: + name: "@azure/arm-widget" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/widget" + emitter-output-dir: "{output-dir}/{service-dir}/armwidget" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" From a47d155a71c2b54354beb9b6c2af4a5b84df62ce Mon Sep 17 00:00:00 2001 From: JoyerJin <116236375+JoyerJin@users.noreply.github.com> Date: Mon, 20 Apr 2026 18:05:42 +0800 Subject: [PATCH 03/98] Update .vally.yaml --- .github/azure-typespec-author/evaluate/.vally.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/azure-typespec-author/evaluate/.vally.yaml b/.github/azure-typespec-author/evaluate/.vally.yaml index c493f547a70..061399bc5b9 100644 --- a/.github/azure-typespec-author/evaluate/.vally.yaml +++ b/.github/azure-typespec-author/evaluate/.vally.yaml @@ -7,6 +7,19 @@ paths: skills: [../] results: results/ +environments: + azsdk-mcp: + mcpServers: + azure-sdk-mcp: + type: stdio + command: dotnet + args: ["run", "--project", "../../../tools/azsdk-cli/Azure.Sdk.Tools.Cli", "--", "start"] + timeout: 30000 + env: + AZSDKTOOLS_AGENT_TESTING: "false" + AZSDKTOOLS_COLLECT_TELEMETRY: "false" + AZURE_SDK_KB_ENDPOINT: "http://localhost:8088" + suites: versioning: evals: ["evals/001001.eval.yaml","evals/001002.eval.yaml","evals/001003.eval.yaml","evals/001004.eval.yaml","evals/001005.eval.yaml","evals/001006.eval.yaml","evals/001007.eval.yaml","evals/001008.eval.yaml","evals/001009.eval.yaml","evals/001010.eval.yaml","evals/001011.eval.yaml","evals/001012.eval.yaml","evals/001013.eval.yaml"] From 9ba5efc8c526c338e5971a178ed9a868eab4a35f Mon Sep 17 00:00:00 2001 From: JoyerJin <116236375+JoyerJin@users.noreply.github.com> Date: Mon, 20 Apr 2026 18:07:42 +0800 Subject: [PATCH 04/98] Update 005001.eval.yaml --- .../evaluate/evals/005001.eval.yaml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml index c73718a5dcb..90dd5f277eb 100644 --- a/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml @@ -20,9 +20,6 @@ stimuli: name: 005001-warning-suppress-warning constraints: max_turns: 10 - expect_tools: - - edit - - azsdk_run_typespec_validation max_tokens: 5000 environment: files: @@ -31,6 +28,11 @@ stimuli: - src: ../fixtures/005001-warning-suppress-warning/package.json dest: package.json graders: + - type: tool-calls + config: + required: + - edit + - azsdk_run_typespec_validation - type: file-matches config: path: models.tsp @@ -47,8 +49,7 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: + tool-calls: 1 prompt: 1 file-matches: 2 threshold: 1.0 - - From daca67e78ea71f2bd9871a4d92e154de500ea0d4 Mon Sep 17 00:00:00 2001 From: JoyerJin <116236375+JoyerJin@users.noreply.github.com> Date: Tue, 21 Apr 2026 14:41:17 +0800 Subject: [PATCH 05/98] add tspconfig.yaml for 003001 and 004003, edit tools name, add all.eval.yaml --- .../evaluate/evals/001001.eval.yaml | 8 +- .../evaluate/evals/001002.eval.yaml | 2 +- .../evaluate/evals/001003.eval.yaml | 4 +- .../evaluate/evals/001004.eval.yaml | 4 +- .../evaluate/evals/001005.eval.yaml | 2 +- .../evaluate/evals/001006.eval.yaml | 4 +- .../evaluate/evals/001007.eval.yaml | 4 +- .../evaluate/evals/001008.eval.yaml | 4 +- .../evaluate/evals/001009.eval.yaml | 4 +- .../evaluate/evals/001010.eval.yaml | 4 +- .../evaluate/evals/001011.eval.yaml | 4 +- .../evaluate/evals/001012.eval.yaml | 4 +- .../evaluate/evals/001013.eval.yaml | 4 +- .../evaluate/evals/002001.eval.yaml | 4 +- .../evaluate/evals/002002.eval.yaml | 4 +- .../evaluate/evals/002003.eval.yaml | 4 +- .../evaluate/evals/002004.eval.yaml | 4 +- .../evaluate/evals/002005.eval.yaml | 4 +- .../evaluate/evals/002006.eval.yaml | 4 +- .../evaluate/evals/002007.eval.yaml | 4 +- .../evaluate/evals/002008.eval.yaml | 4 +- .../evaluate/evals/002009.eval.yaml | 4 +- .../evaluate/evals/002010.eval.yaml | 4 +- .../evaluate/evals/003001.eval.yaml | 6 +- .../evaluate/evals/003002.eval.yaml | 26 +- .../evaluate/evals/003003.eval.yaml | 6 +- .../evaluate/evals/004001.eval.yaml | 4 +- .../evaluate/evals/004002.eval.yaml | 4 +- .../evaluate/evals/004003.eval.yaml | 6 +- .../evaluate/evals/005001.eval.yaml | 4 +- .../evaluate/evals/all.eval.yaml | 1890 +++++++++++++++++ .../tspconfig.yaml | 14 + .../tspconfig.yaml | 15 + 33 files changed, 1985 insertions(+), 82 deletions(-) create mode 100644 .github/azure-typespec-author/evaluate/evals/all.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/fixtures/003001-dataplane-async-delete-op/tspconfig.yaml create mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/tspconfig.yaml diff --git a/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml index 348ab4096d1..31448383fcf 100644 --- a/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml @@ -36,18 +36,18 @@ stimuli: config: required: - edit - - azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - type: file-matches config: - path: Widget/main.tsp + path: main.tsp pattern: 2025-05-04-preview - type: file-matches config: - path: Widget/employee.tsp + path: employee.tsp pattern: "\\.\\.\\.ManagedServiceIdentityProperty;" - type: file-matches config: - path: Widget/employee.tsp + path: employee.tsp pattern: "@@added\\(Employee\\.identity, (Microsoft\\.Widget\\.)?Versions\\.(v2025_05_04_preview|`2025-05-04-preview`)\\);" - type: prompt config: diff --git a/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml index 6dde5b9c777..9bd32536b54 100644 --- a/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml @@ -40,7 +40,7 @@ stimuli: config: required: - edit - - azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - type: file-matches config: path: employee.tsp diff --git a/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml index 38af988e201..90cd77e603f 100644 --- a/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -40,7 +40,7 @@ stimuli: config: required: - edit - - azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - type: file-matches config: path: employee.tsp diff --git a/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml index 6da410ee644..ca1d1cffd96 100644 --- a/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -40,7 +40,7 @@ stimuli: config: required: - edit - - azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - type: file-matches config: path: employee.tsp diff --git a/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml index 1deb581bc21..9c6ae7fe2c7 100644 --- a/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml @@ -74,7 +74,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-exists config: path: examples/2025-05-04-preview/Employees_Get_MaximumSet_Gen.json diff --git a/.github/azure-typespec-author/evaluate/evals/001006.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001006.eval.yaml index 6e130dea0a7..6ea47137793 100644 --- a/.github/azure-typespec-author/evaluate/evals/001006.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001006.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -74,7 +74,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-exists config: path: examples/2025-05-04-preview/Employees_Get_MaximumSet_Gen.json diff --git a/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml index 919886c499f..2c3fac6c4c3 100644 --- a/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -80,7 +80,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-exists config: path: examples/2025-01-01/Employees_Get_MaximumSet_Gen.json diff --git a/.github/azure-typespec-author/evaluate/evals/001008.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001008.eval.yaml index 1d53cf35c92..2c8f9889501 100644 --- a/.github/azure-typespec-author/evaluate/evals/001008.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001008.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -80,7 +80,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-exists config: path: examples/2024-10-01/Employees_Get_MaximumSet_Gen.json diff --git a/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml index f92fb4bb3d1..8c34b2f37cd 100644 --- a/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -40,7 +40,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: main.tsp diff --git a/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml index 3aa66166d71..618d53af7ff 100644 --- a/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -40,7 +40,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: main.tsp diff --git a/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml index 77e0ec83a77..f7904c88369 100644 --- a/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -40,7 +40,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: main.tsp diff --git a/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml index 34851165181..1261cf45e84 100644 --- a/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -40,7 +40,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: main.tsp diff --git a/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml index 4a2c9bb2bae..3d3fad63abe 100644 --- a/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -40,7 +40,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: main.tsp diff --git a/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml index 56cb0aca576..c03d4c24c61 100644 --- a/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -40,7 +40,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: '*.tsp' diff --git a/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml index c113d418ab9..9216ac03ca2 100644 --- a/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -40,7 +40,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: '*.tsp' diff --git a/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml index 4bf84e58398..8dac921e912 100644 --- a/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -40,7 +40,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: '*.tsp' diff --git a/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml index b800a73c6df..aeb289ee6c6 100644 --- a/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -42,7 +42,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: badgeAssignment.tsp diff --git a/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml index 91f9d05bd72..c933a7d3702 100644 --- a/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -38,7 +38,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: employee.tsp diff --git a/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml index 67cbb023f15..a4102eef844 100644 --- a/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -40,7 +40,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: '*.tsp' diff --git a/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml index 6ec08e5067f..6544347d0a8 100644 --- a/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -40,7 +40,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation # VP1: Extensible enum for notification priority levels (Low, Medium, High) - type: file-matches config: diff --git a/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml index 8de3c4bf8ea..1b26792442d 100644 --- a/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -40,7 +40,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: '*.tsp' diff --git a/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml index 1885634db53..ff6e7c7c09d 100644 --- a/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -40,7 +40,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: employee.tsp diff --git a/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml index ddbce0e9eb0..d89f4c62e24 100644 --- a/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -40,7 +40,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: employee.tsp diff --git a/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml index 6799a5d0a39..07c613717af 100644 --- a/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -27,12 +27,14 @@ stimuli: dest: inma.tsp - src: ../fixtures/003001-dataplane-async-delete-op/package.json dest: package.json + - src: ../fixtures/003001-dataplane-async-delete-op/tspconfig.yaml + dest: tspconfig.yaml graders: - type: tool-calls config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation # VP1: Async delete added to StacItems namespace - type: file-matches config: diff --git a/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml index 4600c652a39..2ea6f5b4ac9 100644 --- a/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -40,30 +40,12 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation - # VP1: Async move action using ArmResourceActionAsync + - azure-sdk-mcp-azsdk_run_typespec_validation + # VP1: Async move action with MoveRequest/MoveResponse and LRO headers (handles both single-line and multi-line formats) - type: file-matches config: path: employee.tsp - pattern: 'move is ArmResourceActionAsync\s*>' - type: prompt config: scoring: scale_1_5 diff --git a/.github/azure-typespec-author/evaluate/evals/003003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/003003.eval.yaml index 2aa58bd17ef..c2f8b3fc765 100644 --- a/.github/azure-typespec-author/evaluate/evals/003003.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/003003.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -40,7 +40,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation # VP1: ArmAsyncOperationHeader with FinalResult = Employee (alias or inline) - type: file-matches config: @@ -76,5 +76,3 @@ scoring: prompt: 1 file-matches: 5 threshold: 1.0 - - diff --git a/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml index caf591f1468..8533c5b5bf8 100644 --- a/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -40,7 +40,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: '*.tsp' diff --git a/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml index 5d84bc9e34d..6306acb993f 100644 --- a/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -40,7 +40,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation # VP1: Custom scalar type with minLength/maxLength constraints - type: file-matches config: diff --git a/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml index 7f93a1979bf..19085296d71 100644 --- a/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -45,12 +45,14 @@ stimuli: dest: VpnServerConfigurationPolicyGroup.tsp - src: ../fixtures/004003-delete-and-restore-operationId-decorator/VpnSiteLinkConnection.tsp dest: VpnSiteLinkConnection.tsp + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/tspconfig.yaml + dest: tspconfig.yaml graders: - type: tool-calls config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation # VP1: Underscore operationIds should be removed (e.g. BgpConnection has only underscore ones) - type: file-not-matches config: diff --git a/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml index 90dd5f277eb..6e4acc21c42 100644 --- a/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml @@ -1,4 +1,4 @@ -name: azure-typespec-author-eval +name: azure-typespec-author-eval description: Evaluation suite for azure-typespec-author. version: "1.0" type: capability # capability | regression @@ -32,7 +32,7 @@ stimuli: config: required: - edit - - azsdk_run_typespec_validation + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: models.tsp diff --git a/.github/azure-typespec-author/evaluate/evals/all.eval.yaml b/.github/azure-typespec-author/evaluate/evals/all.eval.yaml new file mode 100644 index 00000000000..9032c3fda74 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/evals/all.eval.yaml @@ -0,0 +1,1890 @@ +name: azure-typespec-author-eval +description: Combined evaluation suite for azure-typespec-author (all 30 cases). +version: "1.0" +type: capability + +# Root-level environment +environment: azsdk-mcp + +# Execution configuration +config: + runs: 1 + timeout: 1800 + model: claude-opus-4.6-1m + executor: copilot-sdk + +# Test cases +stimuli: +- name: 001001-version-spread-property + prompt: I added `...Azure.ResourceManager.ManagedServiceIdentityProperty;` which updates all my existing API versions and introduces a breaking change. I want to introduce the properties of the spread model '...ManagedServiceIdentityProperty' in a new API version 2025-05-04-preview only. + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-matches + config: + path: main.tsp + pattern: 2025-05-04-preview + - type: file-matches + config: + path: employee.tsp + pattern: "\\.\\.\\.ManagedServiceIdentityProperty;" + - type: file-matches + config: + path: employee.tsp + pattern: "@@added\\(Employee\\.identity, Versions\\.(v2025_05_04_preview|`2025-05-04-preview`)\\);" + - type: prompt + config: + prompt: Verify changes are scoped to this task only, with no unrelated edits beyond introducing preview-only identity via versioning. + model: claude-opus-4.6-1m + scoring: scale_1_5 + threshold: 1.0 + constraints: + max_turns: 10 + max_tokens: 50000 + scoring: + weights: + tool-calls: 1 + file-matches: 3 + prompt: 1 + threshold: 1.0 + +- prompt: | + add a default value `21` for property age in model EmployeeProperties from a new api version 2025-11-01 + name: 001002-version-default-value + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-matches + config: + path: employee.tsp + pattern: '@removed\(Versions\.v2025_11_01\)' + - type: file-matches + config: + path: employee.tsp + pattern: '@renamedFrom\(Versions\.v2025_11_01, "age"\)' + - type: file-matches + config: + path: employee.tsp + pattern: '@added\(Versions\.v2025_11_01\)' + - type: file-matches + config: + path: employee.tsp + pattern: 'age\?: int32 = 21;' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 4 + threshold: 1.0 + +- prompt: | + change the property age of EmployeeProperties from required to optional for new api version 2025-05-04-preview + name: 001003-version-required-to-optional + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/001003-version-required-to-optional/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-matches + config: + path: employee.tsp + pattern: '@madeOptional' + - type: file-matches + config: + path: employee.tsp + pattern: 2025-05-04-preview|v2025_05_04_preview + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 2 + threshold: 1.0 + +- prompt: | + change the visibility of property 'provisioningState' from Lifecycle.Read to Lifecycle.Read and Lifecycle.Create in version 2025-05-04-preview only + name: 001004-version-property-decorator + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-matches + config: + path: employee.tsp + pattern: Lifecycle\.Read, Lifecycle\.Create + - type: file-matches + config: + path: main.tsp + pattern: 2025-05-04-preview + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 2 + threshold: 1.0 + +- prompt: | + Add a new preview version `2025-05-04-preview` to my service widget resource manager. Exclude Feature: `age` property with default value 21. Carry other features. + name: 001005-version-add-preview-after-preview + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/001005-version-add-preview-after-preview\employee.tsp + dest: employee.tsp + - src: ../fixtures/001005-version-add-preview-after-preview\main.tsp + dest: main.tsp + - src: ../fixtures/001005-version-add-preview-after-preview\shared.tsp + dest: shared.tsp + - src: ../fixtures/001005-version-add-preview-after-preview\tspconfig.yaml + dest: tspconfig.yaml + - src: ../fixtures/001005-version-add-preview-after-preview\package.json + dest: package.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_CreateOrUpdate_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Delete_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Get_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_ListByResourceGroup_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_ListBySubscription_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Update_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Operations_List_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Operations_List_MinimumSet_Gen.json + dest: examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json + dest: examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListBySubscription_MinimumSet_Gen.json + dest: examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Operations_List_MaximumSet_Gen.json + dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Operations_List_MinimumSet_Gen.json + dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-exists + config: + path: examples/2025-05-04-preview/Employees_Get_MaximumSet_Gen.json + - type: file-not-exists + config: + path: examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json + - type: file-matches + config: + path: main.tsp + pattern: 2025-05-04-preview + - type: file-not-matches + config: + path: main.tsp + pattern: 2024-10-01-preview + - type: file-not-matches + config: + path: employee.tsp + pattern: oldAge + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Evaluate only the semantic interpretation of the request: the excluded feature is the default value 21 on age, while age itself should remain as optional int32 (not removed). Also check the agent clearly explains this rationale. Do not re-evaluate version renaming, old version removal, oldAge removal, or example folder/file changes, since those are already covered by file-based graders.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 1 + file-not-matches: 2 + file-exists: 1 + file-not-exists: 1 + threshold: 1.0 + +- prompt: | + Add a new preview version `2025-05-04-preview` to my service widget resource manager. Carry over all the features from the latest stable version + name: 001006-version-add-preview-after-stable + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/001006-version-add-preview-after-stable\employee.tsp + dest: employee.tsp + - src: ../fixtures/001006-version-add-preview-after-stable\main.tsp + dest: main.tsp + - src: ../fixtures/001006-version-add-preview-after-stable\shared.tsp + dest: shared.tsp + - src: ../fixtures/001006-version-add-preview-after-stable\tspconfig.yaml + dest: tspconfig.yaml + - src: ../fixtures/001006-version-add-preview-after-stable\package.json + dest: package.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Operations_List_MaximumSet_Gen.json + dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Operations_List_MinimumSet_Gen.json + dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_Delete_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_Get_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json + dest: examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_ListBySubscription_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_ListBySubscription_MinimumSet_Gen.json + dest: examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_Update_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Operations_List_MaximumSet_Gen.json + dest: examples/2024-10-01/Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Operations_List_MinimumSet_Gen.json + dest: examples/2024-10-01/Operations_List_MinimumSet_Gen.json + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-exists + config: + path: examples/2025-05-04-preview/Employees_Get_MaximumSet_Gen.json + - type: file-exists + config: + path: examples/2024-10-01/Employees_Get_MaximumSet_Gen.json + - type: file-matches + config: + path: main.tsp + pattern: 2025-05-04-preview + - type: file-matches + config: + path: main.tsp + pattern: 2024-10-01 + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + file-exists: 2 + prompt: 1 + file-matches: 2 + threshold: 1.0 + +- prompt: | + I want to add a new stable version `2025-01-01`. Exclude `workLocation` property and `WorkLocation` model. Carry other features. + name: 001007-version-add-stable-after-preview + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/001007-version-add-stable-after-preview\employee.tsp + dest: employee.tsp + - src: ../fixtures/001007-version-add-stable-after-preview\main.tsp + dest: main.tsp + - src: ../fixtures/001007-version-add-stable-after-preview\shared.tsp + dest: shared.tsp + - src: ../fixtures/001007-version-add-stable-after-preview\tspconfig.yaml + dest: tspconfig.yaml + - src: ../fixtures/001007-version-add-stable-after-preview\package.json + dest: package.json + - src: ../fixtures/001007-version-add-stable-after-preview\readme.md + dest: readme.md + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json + dest: examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_ListBySubscription_MinimumSet_Gen.json + dest: examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Operations_List_MaximumSet_Gen.json + dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Operations_List_MinimumSet_Gen.json + dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_CreateOrUpdate_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_Delete_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_Get_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_ListByResourceGroup_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_ListByResourceGroup_MinimumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_ListBySubscription_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_ListBySubscription_MinimumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_Update_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Operations_List_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Operations_List_MinimumSet_Gen.json + dest: examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-exists + config: + path: examples/2025-01-01/Employees_Get_MaximumSet_Gen.json + - type: file-not-exists + config: + path: examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json + - type: file-matches + config: + path: main.tsp + pattern: 2025-01-01 + - type: file-not-matches + config: + path: main.tsp + pattern: 2024-10-01-preview + - type: file-not-matches + config: + path: employee.tsp + pattern: 'workLocation\?: WorkLocation;' + - type: file-matches + config: + path: employee.tsp + pattern: '@added\(Versions\.v2025_01_01\)' + - type: file-not-matches + config: + path: employee.tsp + pattern: v2024_10_01_preview + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Evaluate only the semantic interpretation of the request: the excluded features are workLocation property and WorkLocation model (both should not appear in the new version), while other features should be carried. Also check the agent clearly explains this semantic rationale. Do not re-evaluate version renaming (2024-10-01-preview → 2025-01-01), old version removal, new version example setup, or decorators, since those are already covered by file-based graders.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 2 + file-not-matches: 3 + file-exists: 1 + file-not-exists: 1 + threshold: 1.0 + executor: copilot-sdk + runs: 1 + model: claude-opus-4.6-1m + timeout: 1800 + +- prompt: | + Add a new stable version `2025-01-01` to my service. Carry over changes. + name: 001008-version-add-stable-after-stable + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/001008-version-add-stable-after-stable\employee.tsp + dest: employee.tsp + - src: ../fixtures/001008-version-add-stable-after-stable\main.tsp + dest: main.tsp + - src: ../fixtures/001008-version-add-stable-after-stable\shared.tsp + dest: shared.tsp + - src: ../fixtures/001008-version-add-stable-after-stable\tspconfig.yaml + dest: tspconfig.yaml + - src: ../fixtures/001008-version-add-stable-after-stable\package.json + dest: package.json + - src: ../fixtures/001008-version-add-stable-after-stable\readme.md + dest: readme.md + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json + dest: examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_ListBySubscription_MinimumSet_Gen.json + dest: examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Operations_List_MaximumSet_Gen.json + dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Operations_List_MinimumSet_Gen.json + dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_Delete_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_Get_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json + dest: examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_ListBySubscription_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_ListBySubscription_MinimumSet_Gen.json + dest: examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_Update_MaximumSet_Gen.json + dest: examples/2024-10-01/Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Operations_List_MaximumSet_Gen.json + dest: examples/2024-10-01/Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Operations_List_MinimumSet_Gen.json + dest: examples/2024-10-01/Operations_List_MinimumSet_Gen.json + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-exists + config: + path: examples/2024-10-01/Employees_Get_MaximumSet_Gen.json + - type: file-exists + config: + path: examples/2025-01-01/Employees_Get_MaximumSet_Gen.json + - type: file-matches + config: + path: main.tsp + pattern: 2021-10-01 + - type: file-matches + config: + path: main.tsp + pattern: 2024-10-01 + - type: file-matches + config: + path: main.tsp + pattern: 2025-01-01 + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + file-exists: 2 + prompt: 1 + file-matches: 3 + threshold: 1.0 + +- prompt: | + In the Widget project, make the `email` property required in EmployeeProperties only for version `2025-05-04-preview`. + name: 001009-version-model-property-required + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-matches + config: + path: main.tsp + pattern: v2025_05_04_preview + - type: file-not-matches + config: + path: main.tsp + pattern: v2024_10_01_preview + - type: file-matches + config: + path: employee.tsp + pattern: '@madeRequired\(Versions\.v2025_05_04_preview\)' + - type: file-matches + config: + path: employee.tsp + pattern: 'email: string;' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify: (1) new version 2025-05-04-preview added, (2) old preview version 2024-10-01-preview removed from enum, (3) email property made required only in new version, (4) only scoped edits made.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 3 + threshold: 1.0 + +- prompt: | + In the Widget project, remove the `department` property from EmployeeProperties only for version `2025-05-04-preview`. + name: 001010-version-model-property-removed + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-matches + config: + path: main.tsp + pattern: v2025_05_04_preview + - type: file-matches + config: + path: employee.tsp + pattern: '@removed\(Versions\.v2025_05_04_preview\)' + - type: file-matches + config: + path: employee.tsp + pattern: 'department\?: string;' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 3 + threshold: 1.0 + +- prompt: | + In the Widget project, rename the `age` property to `employeeAge` in EmployeeProperties only for version `2025-05-04-preview`. + name: 001011-version-model-property-renamed + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-matches + config: + path: main.tsp + pattern: v2025_05_04_preview + - type: file-matches + config: + path: employee.tsp + pattern: '@renamedFrom\(Versions\.v2025_05_04_preview, "age"\)' + - type: file-matches + config: + path: employee.tsp + pattern: 'employeeAge\?: int32;' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 3 + threshold: 1.0 + +- prompt: | + In the Widget project, change the return type of the `exportData` operation from `ExportResult` to `DetailedExportResult` with additional properties `format` (string) and `exportedAt` (utcDateTime) only for version `2025-05-04-preview`. + name: 001012-version-operation-return-type-changed + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-matches + config: + path: main.tsp + pattern: v2025_05_04_preview + - type: file-matches + config: + path: employee.tsp + pattern: 'model DetailedExportResult' + - type: file-matches + config: + path: employee.tsp + pattern: 'format\?: string;' + - type: file-matches + config: + path: employee.tsp + pattern: 'exportedAt\?: utcDateTime;' + - type: file-matches + config: + path: employee.tsp + pattern: '@returnTypeChangedFrom\(Versions\.v2025_05_04_preview, ExportResult\)' + - type: file-matches + config: + path: employee.tsp + pattern: 'exportData is ArmResourceActionSync;' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 6 + threshold: 1.0 + +- prompt: | + In the Widget project, change the type of the `statusCode` property from `string` to `int32` in EmployeeProperties only for version `2025-05-04-preview`. + name: 001013-version-model-property-type-changed + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-matches + config: + path: main.tsp + pattern: v2025_05_04_preview + - type: file-matches + config: + path: employee.tsp + pattern: '@typeChangedFrom\(Versions\.v2025_05_04_preview, string\)' + - type: file-matches + config: + path: employee.tsp + pattern: 'statusCode\?: int32;' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 3 + threshold: 1.0 + +- prompt: | + change resource Employee to be an extension resource + name: 002001-ARM-change-resource-type + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-matches + config: + path: '*.tsp' + pattern: ExtensionResource< + - type: file-not-matches + config: + path: '*.tsp' + pattern: TrackedResource< + - type: file-matches + config: + path: '*.tsp' + pattern: Extension\.Read<|Extension\.CreateOrReplaceAsync<|Extension\.CustomPatch(Sync|Async)<|Extension\.DeleteWithoutOkAsync<|Extension\.ListByTarget< + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'The original separate list-by-resource-group and list-by-subscription operations should be consolidated into a single list operation using the extension list template. A scope-parameterized interface should be defined to allow the extension resource to be scoped to any parent resource.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-not-matches: 1 + file-matches: 2 + threshold: 1.0 + +- prompt: | + add an extension resource named asset + name: 002002-ARM-define-extension-resource + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-matches + config: + path: '*.tsp' + pattern: model Asset is ExtensionResource + - type: file-matches + config: + path: '*.tsp' + pattern: interface Assets|interface AssetOps + - type: file-matches + config: + path: '*.tsp' + pattern: provisioningState + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 3 + threshold: 1.0 + +- prompt: | + Define a PATCH operation for Employees. It is to update properties of an employee. Ensure the definition meets TypeSpec Azure guidelines. + name: 002003-ARM-define-full-update-operation + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/002003-ARM-define-full-update-operation/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-matches + config: + path: '*.tsp' + pattern: ArmCustomPatchAsync< + - type: file-not-matches + config: + path: '*.tsp' + pattern: ArmResourcePatchAsync< + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-not-matches: 1 + file-matches: 1 + threshold: 1.0 + +- prompt: | + Define a "badge assignment" extension resource. It should be an extension resource that can be attached to an employee. Ensure the definition meets TypeSpec Azure guidelines. + name: 002004-ARM-define-extension-resource + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/002004-ARM-define-extension-resource/badgeAssignment.tsp + dest: badgeAssignment.tsp + - src: ../fixtures/002004-ARM-define-extension-resource/employee.tsp + dest: employee.tsp + - src: ../fixtures/002004-ARM-define-extension-resource/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-matches + config: + path: badgeAssignment.tsp + pattern: model BadgeAssignment is ExtensionResource + - type: file-matches + config: + path: badgeAssignment.tsp + pattern: '@visibility\(Lifecycle\.Read\)' + - type: file-matches + config: + path: badgeAssignment.tsp + pattern: Extension\.Read<|Extension\.CreateOrReplaceAsync<|Extension\.CustomPatch(Sync|Async)<|Extension\.DeleteWithoutOkAsync< + - type: file-matches + config: + path: badgeAssignment.tsp + pattern: Extension\.ListByTarget< + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 4 + threshold: 1.0 + +- prompt: | + Define a Azure resource "Employee" under the namespace "Microsoft.Widget" using TypeSpec. Properties: age (int32, optional), city (string, optional), profile (bytes, optional), provisioningState (enum, optional, read-only). Ensure the definition meets TypeSpec Azure design guidelines. + name: 002005-ARM-define-the-resource + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/002005-ARM-define-the-resource/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-matches + config: + path: employee.tsp + pattern: model Employee is TrackedResource + # Point 3: EmployeeProperties has age, city, profile, and read-only provisioningState + - type: file-matches + config: + path: 'employee.tsp' + pattern: 'age\?: int32' + - type: file-matches + config: + path: 'employee.tsp' + pattern: '@visibility\(Lifecycle\.Read\)' + # Point 4: ProvisioningState union includes standard ARM states + - type: file-matches + config: + path: 'employee.tsp' + pattern: ResourceProvisioningState + # Point 5: CRUD + listByResourceGroup + listBySubscription + - type: file-matches + config: + path: employee.tsp + pattern: ArmResourceCreateOrReplaceAsync|ArmResourceCreateOrUpdateAsync + - type: file-matches + config: + path: employee.tsp + pattern: ArmResourceListByParent + - type: file-matches + config: + path: employee.tsp + pattern: ArmListBySubscription + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify all five aspects: (1) Employee resource definition is written into a TSP file; (2) Employee model uses TrackedResource under Microsoft.Widget namespace; (3) EmployeeProperties includes age, city, profile, and a read-only provisioningState; (4) ProvisioningState is a union type incorporating standard ARM ResourceProvisioningState; (5) Employees interface includes full CRUD operations (get, create, update, delete) plus listByResourceGroup and listBySubscription.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 7 + threshold: 1.0 + +- prompt: | + Create a new "AddressResource" child resource under the parent resource "Employee". Properties: street address, city, state, postal code, country, and a read-only provisioning state. Ensure the definition meets TypeSpec Azure design guidelines. + name: 002006-ARM-define-child-resource + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-matches + config: + path: '*.tsp' + pattern: '@parentResource\(Employee\)' + - type: file-matches + config: + path: '*.tsp' + pattern: 'model AddressResource is ProxyResource' + - type: file-matches + config: + path: '*.tsp' + pattern: interface Addresses|interface AddressResource + - type: file-matches + config: + path: '*.tsp' + pattern: 'model AddressProperties' + - type: file-matches + config: + path: '*.tsp' + pattern: 'street1\?: string;' + - type: file-matches + config: + path: '*.tsp' + pattern: 'street2\?: string;' + - type: file-matches + config: + path: '*.tsp' + pattern: 'city\?: string;' + - type: file-matches + config: + path: '*.tsp' + pattern: 'state\?: string;' + - type: file-matches + config: + path: '*.tsp' + pattern: 'postalCode\?: string;' + - type: file-matches + config: + path: '*.tsp' + pattern: 'country\?: string;' + - type: file-matches + config: + path: '*.tsp' + pattern: '@visibility\(Lifecycle\.Read\)' + - type: file-matches + config: + path: '*.tsp' + pattern: 'provisioningState\?: ProvisioningState;' + # Addresses interface CRUD + list-by-parent + - type: file-matches + config: + path: '*.tsp' + pattern: ArmResourceRead + - type: file-matches + config: + path: '*.tsp' + pattern: ArmResourceCreateOrReplaceAsync|ArmResourceCreateOrReplaceSync + - type: file-matches + config: + path: '*.tsp' + pattern: ArmResourceDeleteWithoutOkAsync|ArmResourceDeleteSync + - type: file-matches + config: + path: '*.tsp' + pattern: ArmResourceListByParent + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'The Addresses interface should include standard CRUD operations (get, create, update, delete) and a list-by-parent operation.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 16 + threshold: 1.0 + +- prompt: | + Add an additional POST action called "/notify" to the standard operations of Employee. Request body: message content (string) and priority (enum with values Low, Medium, High). Response body: notification identifier (string) and status (string). Ensure the definition meets TypeSpec Azure design guidelines. + name: 002007-ARM-define-custom-action + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + # VP1: Extensible enum for notification priority levels (Low, Medium, High) + - type: file-matches + config: + path: 'employee.tsp' + pattern: union.*Priority|enum.*Priority + - type: file-matches + config: + path: 'employee.tsp' + pattern: 'Low|"Low"' + - type: file-matches + config: + path: 'employee.tsp' + pattern: 'Medium|"Medium"' + - type: file-matches + config: + path: 'employee.tsp' + pattern: 'High|"High"' + # VP2: Request model with message content (string) and priority fields + - type: file-matches + config: + path: 'employee.tsp' + pattern: model.*Notify.*Request|model.*Notification.*Request + - type: file-matches + config: + path: 'employee.tsp' + pattern: 'message.*:\s*string|content.*:\s*string' + - type: file-matches + config: + path: 'employee.tsp' + pattern: 'priority.*:\s*.*Priority' + # VP3: Response model with notification identifier (string) and status (string) + - type: file-matches + config: + path: 'employee.tsp' + pattern: model.*Notify.*Response|model.*Notification.*Response + - type: file-matches + config: + path: 'employee.tsp' + pattern: 'notificationId.*:\s*string|identifier.*:\s*string' + - type: file-matches + config: + path: 'employee.tsp' + pattern: 'status.*:\s*string' + # VP4: Synchronous notify action on Employees interface + - type: file-matches + config: + path: 'employee.tsp' + pattern: 'notify is ArmResourceActionSync<|notify is ArmResourceActionAsync<|notify is ArmResourceAction<' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 11 + threshold: 1.0 + +- prompt: | + add top and skip query parameters to the ListBySubscription operation in interface Employees + name: 002008-ARM-add-parameters + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-matches + config: + path: '*.tsp' + pattern: TopQueryParameter + - type: file-matches + config: + path: '*.tsp' + pattern: SkipQueryParameter + - type: file-matches + config: + path: '*.tsp' + pattern: listBySubscription + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 3 + threshold: 1.0 + +- prompt: | + In the Widget project, add a patch operation to an existing ARM resource named 'Employee' + name: 002009-arm-add-patch-operation-to-resource + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/002009-arm-add-patch-operation-to-resource/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-matches + config: + path: employee.tsp + pattern: 'update is ArmCustomPatchSync>;' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 1 + threshold: 1.0 + +- prompt: | + In the Widget project, add a sync operation exportEmployeeData for employee resource. + name: 002010-arm-action-sync-operation + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/002010-arm-action-sync-operation/employee.tsp + dest: employee.tsp + - src: ../fixtures/002010-arm-action-sync-operation/main.tsp + dest: main.tsp + - src: ../fixtures/002010-arm-action-sync-operation/package.json + dest: package.json + - src: ../fixtures/002010-arm-action-sync-operation/readme.md + dest: readme.md + - src: ../fixtures/002010-arm-action-sync-operation/shared.tsp + dest: shared.tsp + - src: ../fixtures/002010-arm-action-sync-operation/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-matches + config: + path: employee.tsp + pattern: 'exportData is ArmResourceActionSync;' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 1 + threshold: 1.0 + +- prompt: | + Add an async delete operation for StacItems + name: 003001-dataplane-async-delete-op + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/003001-dataplane-async-delete-op/inma.tsp + dest: inma.tsp + - src: ../fixtures/003001-dataplane-async-delete-op/package.json + dest: package.json + - src: ../fixtures/003001-dataplane-async-delete-op/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + # VP1: Async delete added to StacItems namespace + - type: file-matches + config: + path: inma.tsp + pattern: 'interface StacItems' + - type: file-matches + config: + path: inma.tsp + pattern: 'LongRunningResourceDelete' + # VP2: Uses StandardResourceOperations alias + - type: file-matches + config: + path: inma.tsp + pattern: 'alias StandardResourceOperations|StandardResourceOperations\.LongRunningResourceDelete' + # VP3: Linked to existing polling operation + - type: file-matches + config: + path: inma.tsp + pattern: '@pollingOperation\(IngestionOperations\.get\)' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 4 + threshold: 1.0 + +- prompt: | + Add a move async operation to move employee, operation's request is MoveRequest, response is MoveResponse + name: 003002-arm-action-lro + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + # VP1: Async move action using ArmResourceActionAsync + - type: file-matches + config: + path: employee.tsp + pattern: 'move is ArmResourceActionAsync template. + name: 003003-arm-modify-response + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + # VP1: ArmAsyncOperationHeader with FinalResult = Employee (alias or inline) + - type: file-matches + config: + path: employee.tsp + pattern: 'ArmAsyncOperationHeader' + # VP2: createOrUpdate uses ArmResourceCreateOrReplaceAsync with custom LroHeaders + - type: file-matches + config: + path: employee.tsp + pattern: 'createOrUpdate is ArmResourceCreateOrReplaceAsync<' + - type: file-matches + config: + path: employee.tsp + pattern: 'LroHeaders\s*=' + # VP3: Other operations unchanged + - type: file-matches + config: + path: employee.tsp + pattern: 'update is ArmResourcePatchSync' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 5 + threshold: 1.0 + +- prompt: | + add minLength decorator to set the minLength 1 for resource name parameter of Employee resource + name: 004001-decorate-mgmt-resource-name-parameter + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-matches + config: + path: '*.tsp' + pattern: '@minLength\(1\)|@@minLength\(Employee\.name,\s*1\)' + - type: file-matches + config: + path: '*.tsp' + pattern: 'ResourceNameParameter|@key\("employeeName"\)' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 2 + threshold: 1.0 + +- prompt: | + I have a property `assets: string[]` in EmployeeProperties. Add @minLength(3) @maxLength(10) constraints for any item of the assets array. + name: 004002-decorate-length-constrains-on-array-item + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + # VP1: Custom scalar type with minLength/maxLength constraints + - type: file-matches + config: + path: employee.tsp + pattern: 'scalar.*extends string' + - type: file-matches + config: + path: employee.tsp + pattern: '@minLength\(3\)' + - type: file-matches + config: + path: employee.tsp + pattern: '@maxLength\(10\)' + # VP2: Assets array uses custom scalar type instead of plain string + - type: file-not-matches + config: + path: employee.tsp + pattern: 'assets:\s*string\[\]' + - type: file-matches + config: + path: employee.tsp + pattern: 'assets:.*\[\]' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 5 + threshold: 1.0 + +- prompt: | + Remove @operationId and its associated #suppress for no-openapi from all operations. Then restore those operationIds that do not contain underscores or begin with a lowercase letter. + name: 004003-delete-and-restore-operationId-decorator + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/BastionHost.tsp + dest: BastionHost.tsp + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/BgpConnection.tsp + dest: BgpConnection.tsp + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteGateway.tsp + dest: ExpressRouteGateway.tsp + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/ExpressRoutePort.tsp + dest: ExpressRoutePort.tsp + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteProviderPort.tsp + dest: ExpressRouteProviderPort.tsp + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/NetworkInterface.tsp + dest: NetworkInterface.tsp + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/P2SVpnGateway.tsp + dest: P2SVpnGateway.tsp + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/package.json + dest: package.json + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/Route.tsp + dest: Route.tsp + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/VpnServerConfigurationPolicyGroup.tsp + dest: VpnServerConfigurationPolicyGroup.tsp + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/VpnSiteLinkConnection.tsp + dest: VpnSiteLinkConnection.tsp + - src: ../fixtures/004003-delete-and-restore-operationId-decorator/tspconfig.yaml + dest: tspconfig.yaml + + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + # VP1: Underscore operationIds should be removed (e.g. BgpConnection has only underscore ones) + - type: file-not-matches + config: + path: BgpConnection.tsp + pattern: '@operationId\(' + - type: file-not-matches + config: + path: NetworkInterface.tsp + pattern: '@operationId\(' + # VP2: Non-standard PascalCase operationIds restored with @operationId + - type: file-matches + config: + path: BastionHost.tsp + pattern: '@operationId\("PutBastionShareableLink"\)' + - type: file-matches + config: + path: BastionHost.tsp + pattern: '@operationId\("GetActiveSessions"\)' + - type: file-matches + config: + path: ExpressRouteProviderPort.tsp + pattern: '@operationId\("ExpressRouteProviderPort"\)' + # VP3: Restored operationIds keep their #suppress comment + - type: file-matches + config: + path: BastionHost.tsp + pattern: '#suppress.*no-openapi|#suppress.*operationId' + # Underscore one in ExpressRouteProviderPort should be removed + - type: file-not-matches + config: + path: ExpressRouteProviderPort.tsp + pattern: '@operationId\("ExpressRouteProviderPortsLocation_List"\)' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-not-matches: 3 + file-matches: 4 + threshold: 1.0 + +- prompt: | + Add suppressions for the warnings produced by "tsp compile .", and set the justification to "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details". + name: 005001-warning-suppress-warning + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/005001-warning-suppress-warning/models.tsp + dest: models.tsp + - src: ../fixtures/005001-warning-suppress-warning/package.json + dest: package.json + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-matches + config: + path: models.tsp + pattern: '#suppress' + - type: file-matches + config: + path: models.tsp + pattern: 'FIXME: Update justification, follow aka\.ms/tsp/conversion-fix for details' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6-1m + scoring: + weights: + tool-calls: 1 + prompt: 1 + file-matches: 2 + threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/fixtures/003001-dataplane-async-delete-op/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/003001-dataplane-async-delete-op/tspconfig.yaml new file mode 100644 index 00000000000..8fe282e6868 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/003001-dataplane-async-delete-op/tspconfig.yaml @@ -0,0 +1,14 @@ +parameters: + "service-dir": + default: "sdk/planetarycomputer" +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/data-plane" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + azure-resource-provider-folder: "data-plane" + emitter-output-dir: "{project-root}/.." + output-file: "{azure-resource-provider-folder}/{service-name}/{version-status}/{version}/openapi.json" + xml-strategy: none diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/tspconfig.yaml new file mode 100644 index 00000000000..8725cee2c96 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/tspconfig.yaml @@ -0,0 +1,15 @@ +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + omit-unreachable-types: true + emitter-output-dir: "{project-root}" + azure-resource-provider-folder: "resource-manager" + emit-lro-options: "all" + examples-dir: "{project-root}/examples" + output-file: "../{version-status}/{version}/{feature}.json" + arm-types-dir: "{project-root}/../../../../../common-types/resource-management" + output-splitting: "legacy-feature-files" +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" From d3ea768de1ce4912119fcadd3c26bd3ed6292194 Mon Sep 17 00:00:00 2001 From: JoyerJin <116236375+JoyerJin@users.noreply.github.com> Date: Wed, 22 Apr 2026 11:07:27 +0800 Subject: [PATCH 06/98] update cases --- .../evaluate/evals/001001.eval.yaml | 15 +- .../evaluate/evals/001002.eval.yaml | 17 +- .../evaluate/evals/001003.eval.yaml | 19 +- .../evaluate/evals/001004.eval.yaml | 13 +- .../evaluate/evals/001005.eval.yaml | 2 +- .../evaluate/evals/001007.eval.yaml | 2 +- .../evaluate/evals/001009.eval.yaml | 35 +- .../evaluate/evals/001010.eval.yaml | 31 +- .../evaluate/evals/001011.eval.yaml | 19 +- .../evaluate/evals/001012.eval.yaml | 25 +- .../evaluate/evals/001013.eval.yaml | 19 +- .../evaluate/evals/002001.eval.yaml | 1 + .../evaluate/evals/002002.eval.yaml | 1 + .../evaluate/evals/002003.eval.yaml | 1 + .../evaluate/evals/002004.eval.yaml | 1 + .../evaluate/evals/002005.eval.yaml | 1 + .../evaluate/evals/002006.eval.yaml | 1 + .../evaluate/evals/002007.eval.yaml | 1 + .../evaluate/evals/002008.eval.yaml | 1 + .../evaluate/evals/002009.eval.yaml | 1 + .../evaluate/evals/002010.eval.yaml | 3 +- .../evaluate/evals/003001.eval.yaml | 1 + .../evaluate/evals/003002.eval.yaml | 1 + .../evaluate/evals/003003.eval.yaml | 1 + .../evaluate/evals/004001.eval.yaml | 1 + .../evaluate/evals/004002.eval.yaml | 1 + .../evaluate/evals/005001.eval.yaml | 6 + .../evaluate/evals/all.eval.yaml | 276 +++---- .../employee.tsp | 66 +- .../main.tsp | 7 +- .../package.json | 0 .../001-share-version-new-feature/readme.md | 45 ++ .../shared.tsp | 0 .../tspconfig.yaml | 0 .../001002-version-default-value/employee.tsp | 63 ++ .../001002-version-default-value/main.tsp | 36 + .../001002-version-default-value/package.json | 50 ++ .../readme.md | 10 +- .../001002-version-default-value/shared.tsp | 8 + .../tspconfig.yaml | 44 ++ .../preview/2024-10-01-preview/widget.json | 693 ------------------ .../stable/2021-11-01/widget.json | 693 ------------------ .../005001-warning-suppress-warning/main.tsp | 41 ++ .../005001-warning-suppress-warning/stubs.tsp | 405 ++++++++++ .../tspconfig.yaml | 14 + 45 files changed, 1019 insertions(+), 1652 deletions(-) rename .github/azure-typespec-author/evaluate/fixtures/{001003-version-required-to-optional => 001-share-version-new-feature}/employee.tsp (79%) rename .github/azure-typespec-author/evaluate/fixtures/{001003-version-required-to-optional => 001-share-version-new-feature}/main.tsp (88%) rename .github/azure-typespec-author/evaluate/fixtures/{001003-version-required-to-optional => 001-share-version-new-feature}/package.json (100%) create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/readme.md rename .github/azure-typespec-author/evaluate/fixtures/{001003-version-required-to-optional => 001-share-version-new-feature}/shared.tsp (100%) rename .github/azure-typespec-author/evaluate/fixtures/{001003-version-required-to-optional => 001-share-version-new-feature}/tspconfig.yaml (100%) create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/employee.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/main.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/package.json rename .github/azure-typespec-author/evaluate/fixtures/{001003-version-required-to-optional => 001002-version-default-value}/readme.md (87%) create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/shared.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/tspconfig.yaml delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/preview/2024-10-01-preview/widget.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/stable/2021-11-01/widget.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/main.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/stubs.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/tspconfig.yaml diff --git a/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml index 31448383fcf..b14d2cf535a 100644 --- a/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml @@ -16,20 +16,20 @@ config: # Test cases stimuli: - name: 001001-version-spread-property - prompt: I added `...Azure.ResourceManager.ManagedServiceIdentityProperty;` which updates all my existing API versions and introduces a breaking change. I want to introduce the properties of the spread model '...ManagedServiceIdentityProperty' in a new API version 2025-05-04-preview only. + prompt: I added `...Azure.ResourceManager.ManagedServiceIdentityProperty;` which updates all my existing API versions and introduces a breaking change. I want to introduce the properties of the spread model '...ManagedServiceIdentityProperty' in API version 2025-05-04-preview only. environment: files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + - src: ../fixtures/001-share-version-new-feature/employee.tsp dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + - src: ../fixtures/001-share-version-new-feature/main.tsp dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + - src: ../fixtures/001-share-version-new-feature/shared.tsp dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml dest: tspconfig.yaml - - src: ../fixtures/Microsoft.Widget/Widget/package.json + - src: ../fixtures/001-share-version-new-feature/package.json dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md + - src: ../fixtures/001-share-version-new-feature/readme.md dest: readme.md graders: - type: tool-calls @@ -37,6 +37,7 @@ stimuli: required: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: main.tsp diff --git a/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml index 9bd32536b54..789964dcc96 100644 --- a/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml @@ -15,25 +15,25 @@ config: # Test cases stimuli: -- prompt: | +- name: 001002-version-default-value + prompt: | add a default value `21` for property age in model EmployeeProperties from a new api version 2025-11-01 - name: 001002-version-default-value constraints: max_turns: 10 max_tokens: 5000 environment: files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + - src: ../fixtures/001002-version-default-value/employee.tsp dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + - src: ../fixtures/001002-version-default-value/main.tsp dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json + - src: ../fixtures/001002-version-default-value/package.json dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md + - src: ../fixtures/001002-version-default-value/readme.md dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + - src: ../fixtures/001002-version-default-value/shared.tsp dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + - src: ../fixtures/001002-version-default-value/tspconfig.yaml dest: tspconfig.yaml graders: - type: tool-calls @@ -41,6 +41,7 @@ stimuli: required: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: employee.tsp diff --git a/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml index 90cd77e603f..5668ab9f371 100644 --- a/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml @@ -16,24 +16,24 @@ config: # Test cases stimuli: - prompt: | - change the property age of EmployeeProperties from required to optional for new api version 2025-05-04-preview + change the property age of EmployeeProperties from required to optional for api version 2025-05-04-preview name: 001003-version-required-to-optional constraints: max_turns: 10 max_tokens: 5000 environment: files: - - src: ../fixtures/001003-version-required-to-optional/employee.tsp + - src: ../fixtures/001-share-version-new-feature/employee.tsp dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + - src: ../fixtures/001-share-version-new-feature/Widget/main.tsp dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json + - src: ../fixtures/001-share-version-new-feature/Widget/package.json dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md + - src: ../fixtures/001-share-version-new-feature/Widget/readme.md dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + - src: ../fixtures/001-share-version-new-feature/Widget/shared.tsp dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + - src: ../fixtures/001-share-version-new-feature/Widget/tspconfig.yaml dest: tspconfig.yaml graders: - type: tool-calls @@ -41,6 +41,11 @@ stimuli: required: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-matches + config: + path: main.tsp + pattern: 2025-05-04-preview - type: file-matches config: path: employee.tsp diff --git a/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml index ca1d1cffd96..2fa2f1cd4af 100644 --- a/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml @@ -23,17 +23,17 @@ stimuli: max_tokens: 5000 environment: files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + - src: ../fixtures/001-share-version-new-feature/employee.tsp dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + - src: ../fixtures/001-share-version-new-feature/main.tsp dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json + - src: ../fixtures/001-share-version-new-feature/package.json dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md + - src: ../fixtures/001-share-version-new-feature/readme.md dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + - src: ../fixtures/001-share-version-new-feature/shared.tsp dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml dest: tspconfig.yaml graders: - type: tool-calls @@ -41,6 +41,7 @@ stimuli: required: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: employee.tsp diff --git a/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml index 9c6ae7fe2c7..9bd9cc075d0 100644 --- a/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml @@ -97,7 +97,7 @@ stimuli: config: scoring: scale_1_5 threshold: 1.0 - prompt: 'Evaluate only the semantic interpretation of the request: the excluded feature is the default value 21 on age, while age itself should remain as optional int32 (not removed). Also check the agent clearly explains this rationale. Do not re-evaluate version renaming, old version removal, oldAge removal, or example folder/file changes, since those are already covered by file-based graders.' + prompt: 'Evaluate the following change: the excluded feature is the default value 21 on age, The oldAge property should be deleted entirely along with its @removed decorator". The @renamedFrom decorator should be removed along with the oldAge property itself. The workLocation property should have its versioning decorator updated to reference `2025-05-04-preview`.' model: claude-opus-4.6-1m scoring: weights: diff --git a/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml index 2c3fac6c4c3..b4858d10ffe 100644 --- a/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml @@ -111,7 +111,7 @@ stimuli: config: scoring: scale_1_5 threshold: 1.0 - prompt: 'Evaluate only the semantic interpretation of the request: the excluded features are workLocation property and WorkLocation model (both should not appear in the new version), while other features should be carried. Also check the agent clearly explains this semantic rationale. Do not re-evaluate version renaming (2024-10-01-preview → 2025-01-01), old version removal, new version example setup, or decorators, since those are already covered by file-based graders.' + prompt: 'Evaluate only the semantic interpretation of the request: the excluded features are workLocation property and WorkLocation model, while other features should be carried. Double check the plan has correctly implemented version renaming (2024-10-01-preview → 2025-01-01), old version removal, new version example setup and old version example removal.' model: claude-opus-4.6-1m scoring: weights: diff --git a/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml index 8c34b2f37cd..144dbbbf298 100644 --- a/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml @@ -23,39 +23,36 @@ stimuli: max_tokens: 5000 environment: files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml + - src: ../fixtures/001-share-version-new-feature/employee.tsp + dest: Microsoft.Widget/Widget/employee.tsp + - src: ../fixtures/001-share-version-new-feature/main.tsp + dest: Microsoft.Widget/Widget/main.tsp + - src: ../fixtures/001-share-version-new-feature/package.json + dest: Microsoft.Widget/Widget/package.json + - src: ../fixtures/001-share-version-new-feature/readme.md + dest: Microsoft.Widget/Widget/readme.md + - src: ../fixtures/001-share-version-new-feature/shared.tsp + dest: Microsoft.Widget/Widget/shared.tsp + - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml + dest: Microsoft.Widget/Widget/tspconfig.yaml graders: - type: tool-calls config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: - path: main.tsp + path: Microsoft.Widget/Widget/main.tsp pattern: v2025_05_04_preview - - type: file-not-matches - config: - path: main.tsp - pattern: v2024_10_01_preview - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: '@madeRequired\(Versions\.v2025_05_04_preview\)' - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: 'email: string;' - type: prompt config: diff --git a/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml index 618d53af7ff..5892a9d25c6 100644 --- a/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml @@ -23,35 +23,36 @@ stimuli: max_tokens: 5000 environment: files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml + - src: ../fixtures/001-share-version-new-feature/employee.tsp + dest: Microsoft.Widget/Widget/employee.tsp + - src: ../fixtures/001-share-version-new-feature/main.tsp + dest: Microsoft.Widget/Widget/main.tsp + - src: ../fixtures/001-share-version-new-feature/package.json + dest: Microsoft.Widget/Widget/package.json + - src: ../fixtures/001-share-version-new-feature/readme.md + dest: Microsoft.Widget/Widget/readme.md + - src: ../fixtures/001-share-version-new-feature/shared.tsp + dest: Microsoft.Widget/Widget/shared.tsp + - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml + dest: Microsoft.Widget/Widget/tspconfig.yaml graders: - type: tool-calls config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: - path: main.tsp + path: Microsoft.Widget/Widget/main.tsp pattern: v2025_05_04_preview - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: '@removed\(Versions\.v2025_05_04_preview\)' - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: 'department\?: string;' - type: prompt config: diff --git a/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml index f7904c88369..3d709b348f3 100644 --- a/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml @@ -24,34 +24,35 @@ stimuli: environment: files: - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp + dest: Microsoft.Widget/Widget/employee.tsp - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp + dest: Microsoft.Widget/Widget/main.tsp - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json + dest: Microsoft.Widget/Widget/package.json - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md + dest: Microsoft.Widget/Widget/readme.md - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp + dest: Microsoft.Widget/Widget/shared.tsp - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml + dest: Microsoft.Widget/Widget/tspconfig.yaml graders: - type: tool-calls config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: - path: main.tsp + path: Microsoft.Widget/Widget/main.tsp pattern: v2025_05_04_preview - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: '@renamedFrom\(Versions\.v2025_05_04_preview, "age"\)' - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: 'employeeAge\?: int32;' - type: prompt config: diff --git a/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml index 1261cf45e84..643167da0fc 100644 --- a/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml @@ -24,46 +24,47 @@ stimuli: environment: files: - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp + dest: Microsoft.Widget/Widget/employee.tsp - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp + dest: Microsoft.Widget/Widget/main.tsp - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json + dest: Microsoft.Widget/Widget/package.json - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md + dest: Microsoft.Widget/Widget/readme.md - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp + dest: Microsoft.Widget/Widget/shared.tsp - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml + dest: Microsoft.Widget/Widget/tspconfig.yaml graders: - type: tool-calls config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: - path: main.tsp + path: Microsoft.Widget/Widget/main.tsp pattern: v2025_05_04_preview - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: 'model DetailedExportResult' - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: 'format\?: string;' - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: 'exportedAt\?: utcDateTime;' - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: '@returnTypeChangedFrom\(Versions\.v2025_05_04_preview, ExportResult\)' - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: 'exportData is ArmResourceActionSync;' - type: prompt config: diff --git a/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml index 3d3fad63abe..8db7b5bac5d 100644 --- a/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml @@ -24,34 +24,35 @@ stimuli: environment: files: - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp + dest: Microsoft.Widget/Widget/employee.tsp - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp + dest: Microsoft.Widget/Widget/main.tsp - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json + dest: Microsoft.Widget/Widget/package.json - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md + dest: Microsoft.Widget/Widget/readme.md - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp + dest: Microsoft.Widget/Widget/shared.tsp - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml + dest: Microsoft.Widget/Widget/tspconfig.yaml graders: - type: tool-calls config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: - path: main.tsp + path: Microsoft.Widget/Widget/main.tsp pattern: v2025_05_04_preview - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: '@typeChangedFrom\(Versions\.v2025_05_04_preview, string\)' - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: 'statusCode\?: int32;' - type: prompt config: diff --git a/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml index c03d4c24c61..6a329d3978b 100644 --- a/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml @@ -40,6 +40,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: diff --git a/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml index 9216ac03ca2..a54d6f33fed 100644 --- a/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml @@ -40,6 +40,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: diff --git a/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml index 8dac921e912..339e3a56448 100644 --- a/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml @@ -40,6 +40,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: diff --git a/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml index aeb289ee6c6..5c9d12c27a0 100644 --- a/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml @@ -42,6 +42,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: diff --git a/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml index c933a7d3702..b8ca75fc1b3 100644 --- a/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml @@ -38,6 +38,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: diff --git a/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml index a4102eef844..1b8c5247a92 100644 --- a/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml @@ -40,6 +40,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: diff --git a/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml index 6544347d0a8..43403e5c986 100644 --- a/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml @@ -40,6 +40,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation # VP1: Extensible enum for notification priority levels (Low, Medium, High) - type: file-matches diff --git a/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml index 1b26792442d..676510fcd1c 100644 --- a/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml @@ -40,6 +40,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: diff --git a/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml index ff6e7c7c09d..32bfd276c21 100644 --- a/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml @@ -40,6 +40,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: diff --git a/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml index d89f4c62e24..03e5b2531c6 100644 --- a/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml @@ -16,7 +16,7 @@ config: # Test cases stimuli: - prompt: | - In the Widget project, add a sync operation exportEmployeeData for employee resource. + In the Widget project, add a sync operation exportData for employee resource. name: 002010-arm-action-sync-operation constraints: max_turns: 10 @@ -40,6 +40,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: diff --git a/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml index 07c613717af..b517e8b048a 100644 --- a/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml @@ -34,6 +34,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation # VP1: Async delete added to StacItems namespace - type: file-matches diff --git a/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml index 2ea6f5b4ac9..a781d3caf03 100644 --- a/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml @@ -40,6 +40,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation # VP1: Async move action with MoveRequest/MoveResponse and LRO headers (handles both single-line and multi-line formats) - type: file-matches diff --git a/.github/azure-typespec-author/evaluate/evals/003003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/003003.eval.yaml index c2f8b3fc765..e8e4b7b96e7 100644 --- a/.github/azure-typespec-author/evaluate/evals/003003.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/003003.eval.yaml @@ -40,6 +40,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation # VP1: ArmAsyncOperationHeader with FinalResult = Employee (alias or inline) - type: file-matches diff --git a/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml index 8533c5b5bf8..9db48937fb3 100644 --- a/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml @@ -40,6 +40,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: diff --git a/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml index 6306acb993f..23032711333 100644 --- a/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml @@ -40,6 +40,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation # VP1: Custom scalar type with minLength/maxLength constraints - type: file-matches diff --git a/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml index 6e4acc21c42..c2df058f78c 100644 --- a/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml @@ -27,6 +27,12 @@ stimuli: dest: models.tsp - src: ../fixtures/005001-warning-suppress-warning/package.json dest: package.json + - src: ../fixtures/005001-warning-suppress-warning/tspconfig.yaml + dest: tspconfig.yaml + - src: ../fixtures/005001-warning-suppress-warning/main.tsp + dest: main.tsp + - src: ../fixtures/005001-warning-suppress-warning/stubs.tsp + dest: stubs.tsp graders: - type: tool-calls config: diff --git a/.github/azure-typespec-author/evaluate/evals/all.eval.yaml b/.github/azure-typespec-author/evaluate/evals/all.eval.yaml index 9032c3fda74..fdc39b4c30f 100644 --- a/.github/azure-typespec-author/evaluate/evals/all.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/all.eval.yaml @@ -16,26 +16,27 @@ config: # Test cases stimuli: - name: 001001-version-spread-property - prompt: I added `...Azure.ResourceManager.ManagedServiceIdentityProperty;` which updates all my existing API versions and introduces a breaking change. I want to introduce the properties of the spread model '...ManagedServiceIdentityProperty' in a new API version 2025-05-04-preview only. + prompt: I added `...Azure.ResourceManager.ManagedServiceIdentityProperty;` which updates all my existing API versions and introduces a breaking change. I want to introduce the properties of the spread model '...ManagedServiceIdentityProperty' in API version 2025-05-04-preview only. environment: files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + - src: ../fixtures/001-share-version-new-feature/employee.tsp dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + - src: ../fixtures/001-share-version-new-feature/main.tsp dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + - src: ../fixtures/001-share-version-new-feature/shared.tsp dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml dest: tspconfig.yaml - - src: ../fixtures/Microsoft.Widget/Widget/package.json + - src: ../fixtures/001-share-version-new-feature/package.json dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md + - src: ../fixtures/001-share-version-new-feature/readme.md dest: readme.md graders: - type: tool-calls config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: @@ -48,7 +49,7 @@ stimuli: - type: file-matches config: path: employee.tsp - pattern: "@@added\\(Employee\\.identity, Versions\\.(v2025_05_04_preview|`2025-05-04-preview`)\\);" + pattern: "@@added\\(Employee\\.identity, (Microsoft\\.Widget\\.)?Versions\\.(v2025_05_04_preview|`2025-05-04-preview`)\\);" - type: prompt config: prompt: Verify changes are scoped to this task only, with no unrelated edits beyond introducing preview-only identity via versioning. @@ -60,36 +61,37 @@ stimuli: max_tokens: 50000 scoring: weights: - tool-calls: 1 file-matches: 3 + tool-calls: 1 prompt: 1 threshold: 1.0 -- prompt: | +- name: 001002-version-default-value + prompt: | add a default value `21` for property age in model EmployeeProperties from a new api version 2025-11-01 - name: 001002-version-default-value constraints: max_turns: 10 max_tokens: 5000 environment: files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + - src: ../fixtures/001002-version-default-value/employee.tsp dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + - src: ../fixtures/001002-version-default-value/main.tsp dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json + - src: ../fixtures/001002-version-default-value/package.json dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md + - src: ../fixtures/001002-version-default-value/readme.md dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + - src: ../fixtures/001002-version-default-value/shared.tsp dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + - src: ../fixtures/001002-version-default-value/tspconfig.yaml dest: tspconfig.yaml graders: - type: tool-calls config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: @@ -121,31 +123,36 @@ stimuli: threshold: 1.0 - prompt: | - change the property age of EmployeeProperties from required to optional for new api version 2025-05-04-preview + change the property age of EmployeeProperties from required to optional for api version 2025-05-04-preview name: 001003-version-required-to-optional constraints: max_turns: 10 max_tokens: 5000 environment: files: - - src: ../fixtures/001003-version-required-to-optional/employee.tsp + - src: ../fixtures/001-share-version-new-feature/employee.tsp dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + - src: ../fixtures/001-share-version-new-feature/Widget/main.tsp dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json + - src: ../fixtures/001-share-version-new-feature/Widget/package.json dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md + - src: ../fixtures/001-share-version-new-feature/Widget/readme.md dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + - src: ../fixtures/001-share-version-new-feature/Widget/shared.tsp dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + - src: ../fixtures/001-share-version-new-feature/Widget/tspconfig.yaml dest: tspconfig.yaml graders: - type: tool-calls config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation + - type: file-matches + config: + path: main.tsp + pattern: 2025-05-04-preview - type: file-matches config: path: employee.tsp @@ -162,9 +169,9 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: - tool-calls: 1 prompt: 1 file-matches: 2 + tool-calls: 1 threshold: 1.0 - prompt: | @@ -175,23 +182,24 @@ stimuli: max_tokens: 5000 environment: files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + - src: ../fixtures/001-share-version-new-feature/employee.tsp dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + - src: ../fixtures/001-share-version-new-feature/main.tsp dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json + - src: ../fixtures/001-share-version-new-feature/package.json dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md + - src: ../fixtures/001-share-version-new-feature/readme.md dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + - src: ../fixtures/001-share-version-new-feature/shared.tsp dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml dest: tspconfig.yaml graders: - type: tool-calls config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: @@ -209,9 +217,9 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: - tool-calls: 1 prompt: 1 file-matches: 2 + tool-calls: 1 threshold: 1.0 - prompt: | @@ -296,16 +304,16 @@ stimuli: config: scoring: scale_1_5 threshold: 1.0 - prompt: 'Evaluate only the semantic interpretation of the request: the excluded feature is the default value 21 on age, while age itself should remain as optional int32 (not removed). Also check the agent clearly explains this rationale. Do not re-evaluate version renaming, old version removal, oldAge removal, or example folder/file changes, since those are already covered by file-based graders.' + prompt: 'Evaluate the following change: the excluded feature is the default value 21 on age, The oldAge property should be deleted entirely along with its @removed decorator". The @renamedFrom decorator should be removed along with the oldAge property itself. The workLocation property should have its versioning decorator updated to reference `2025-05-04-preview`.' model: claude-opus-4.6-1m scoring: weights: - tool-calls: 1 prompt: 1 file-matches: 1 file-not-matches: 2 file-exists: 1 file-not-exists: 1 + tool-calls: 1 threshold: 1.0 - prompt: | @@ -390,10 +398,10 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: - tool-calls: 1 file-exists: 2 prompt: 1 file-matches: 2 + tool-calls: 1 threshold: 1.0 - prompt: | @@ -492,21 +500,17 @@ stimuli: config: scoring: scale_1_5 threshold: 1.0 - prompt: 'Evaluate only the semantic interpretation of the request: the excluded features are workLocation property and WorkLocation model (both should not appear in the new version), while other features should be carried. Also check the agent clearly explains this semantic rationale. Do not re-evaluate version renaming (2024-10-01-preview → 2025-01-01), old version removal, new version example setup, or decorators, since those are already covered by file-based graders.' + prompt: 'Evaluate only the semantic interpretation of the request: the excluded features are workLocation property and WorkLocation model, while other features should be carried. Double check the plan has correctly implemented version renaming (2024-10-01-preview → 2025-01-01), old version removal, new version example setup and old version example removal.' model: claude-opus-4.6-1m scoring: weights: - tool-calls: 1 prompt: 1 file-matches: 2 file-not-matches: 3 file-exists: 1 file-not-exists: 1 + tool-calls: 1 threshold: 1.0 - executor: copilot-sdk - runs: 1 - model: claude-opus-4.6-1m - timeout: 1800 - prompt: | Add a new stable version `2025-01-01` to my service. Carry over changes. @@ -600,10 +604,10 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: - tool-calls: 1 file-exists: 2 prompt: 1 file-matches: 3 + tool-calls: 1 threshold: 1.0 - prompt: | @@ -614,39 +618,36 @@ stimuli: max_tokens: 5000 environment: files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml + - src: ../fixtures/001-share-version-new-feature/employee.tsp + dest: Microsoft.Widget/Widget/employee.tsp + - src: ../fixtures/001-share-version-new-feature/main.tsp + dest: Microsoft.Widget/Widget/main.tsp + - src: ../fixtures/001-share-version-new-feature/package.json + dest: Microsoft.Widget/Widget/package.json + - src: ../fixtures/001-share-version-new-feature/readme.md + dest: Microsoft.Widget/Widget/readme.md + - src: ../fixtures/001-share-version-new-feature/shared.tsp + dest: Microsoft.Widget/Widget/shared.tsp + - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml + dest: Microsoft.Widget/Widget/tspconfig.yaml graders: - type: tool-calls config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: - path: main.tsp + path: Microsoft.Widget/Widget/main.tsp pattern: v2025_05_04_preview - - type: file-not-matches - config: - path: main.tsp - pattern: v2024_10_01_preview - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: '@madeRequired\(Versions\.v2025_05_04_preview\)' - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: 'email: string;' - type: prompt config: @@ -656,9 +657,9 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: - tool-calls: 1 prompt: 1 file-matches: 3 + tool-calls: 1 threshold: 1.0 - prompt: | @@ -669,35 +670,36 @@ stimuli: max_tokens: 5000 environment: files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml + - src: ../fixtures/001-share-version-new-feature/employee.tsp + dest: Microsoft.Widget/Widget/employee.tsp + - src: ../fixtures/001-share-version-new-feature/main.tsp + dest: Microsoft.Widget/Widget/main.tsp + - src: ../fixtures/001-share-version-new-feature/package.json + dest: Microsoft.Widget/Widget/package.json + - src: ../fixtures/001-share-version-new-feature/readme.md + dest: Microsoft.Widget/Widget/readme.md + - src: ../fixtures/001-share-version-new-feature/shared.tsp + dest: Microsoft.Widget/Widget/shared.tsp + - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml + dest: Microsoft.Widget/Widget/tspconfig.yaml graders: - type: tool-calls config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: - path: main.tsp + path: Microsoft.Widget/Widget/main.tsp pattern: v2025_05_04_preview - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: '@removed\(Versions\.v2025_05_04_preview\)' - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: 'department\?: string;' - type: prompt config: @@ -707,8 +709,8 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: - tool-calls: 1 prompt: 1 + tool-calls: 1 file-matches: 3 threshold: 1.0 @@ -721,34 +723,35 @@ stimuli: environment: files: - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp + dest: Microsoft.Widget/Widget/employee.tsp - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp + dest: Microsoft.Widget/Widget/main.tsp - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json + dest: Microsoft.Widget/Widget/package.json - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md + dest: Microsoft.Widget/Widget/readme.md - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp + dest: Microsoft.Widget/Widget/shared.tsp - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml + dest: Microsoft.Widget/Widget/tspconfig.yaml graders: - type: tool-calls config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: - path: main.tsp + path: Microsoft.Widget/Widget/main.tsp pattern: v2025_05_04_preview - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: '@renamedFrom\(Versions\.v2025_05_04_preview, "age"\)' - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: 'employeeAge\?: int32;' - type: prompt config: @@ -758,9 +761,9 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: - tool-calls: 1 prompt: 1 file-matches: 3 + tool-calls: 1 threshold: 1.0 - prompt: | @@ -772,46 +775,47 @@ stimuli: environment: files: - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp + dest: Microsoft.Widget/Widget/employee.tsp - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp + dest: Microsoft.Widget/Widget/main.tsp - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json + dest: Microsoft.Widget/Widget/package.json - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md + dest: Microsoft.Widget/Widget/readme.md - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp + dest: Microsoft.Widget/Widget/shared.tsp - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml + dest: Microsoft.Widget/Widget/tspconfig.yaml graders: - type: tool-calls config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: - path: main.tsp + path: Microsoft.Widget/Widget/main.tsp pattern: v2025_05_04_preview - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: 'model DetailedExportResult' - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: 'format\?: string;' - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: 'exportedAt\?: utcDateTime;' - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: '@returnTypeChangedFrom\(Versions\.v2025_05_04_preview, ExportResult\)' - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: 'exportData is ArmResourceActionSync;' - type: prompt config: @@ -821,9 +825,9 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: - tool-calls: 1 prompt: 1 file-matches: 6 + tool-calls: 1 threshold: 1.0 - prompt: | @@ -835,34 +839,35 @@ stimuli: environment: files: - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp + dest: Microsoft.Widget/Widget/employee.tsp - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp + dest: Microsoft.Widget/Widget/main.tsp - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json + dest: Microsoft.Widget/Widget/package.json - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md + dest: Microsoft.Widget/Widget/readme.md - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp + dest: Microsoft.Widget/Widget/shared.tsp - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml + dest: Microsoft.Widget/Widget/tspconfig.yaml graders: - type: tool-calls config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: - path: main.tsp + path: Microsoft.Widget/Widget/main.tsp pattern: v2025_05_04_preview - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: '@typeChangedFrom\(Versions\.v2025_05_04_preview, string\)' - type: file-matches config: - path: employee.tsp + path: Microsoft.Widget/Widget/employee.tsp pattern: 'statusCode\?: int32;' - type: prompt config: @@ -872,9 +877,9 @@ stimuli: model: claude-opus-4.6-1m scoring: weights: - tool-calls: 1 prompt: 1 file-matches: 3 + tool-calls: 1 threshold: 1.0 - prompt: | @@ -902,6 +907,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: @@ -954,6 +960,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: @@ -1005,6 +1012,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: @@ -1055,6 +1063,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: @@ -1108,6 +1117,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: @@ -1154,7 +1164,7 @@ stimuli: threshold: 1.0 - prompt: | - Create a new "AddressResource" child resource under the parent resource "Employee". Properties: street address, city, state, postal code, country, and a read-only provisioning state. Ensure the definition meets TypeSpec Azure design guidelines. + Create a new "AddressResource" child resource under the parent resource "Employee". AddressResource properties:street address fields, city, state, postal code, country, and a read-only provisioningState. Ensure the definition meets TypeSpec Azure design guidelines. name: 002006-ARM-define-child-resource constraints: max_turns: 10 @@ -1178,6 +1188,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: @@ -1282,6 +1293,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation # VP1: Extensible enum for notification priority levels (Low, Medium, High) - type: file-matches @@ -1369,6 +1381,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: @@ -1420,6 +1433,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: @@ -1439,7 +1453,7 @@ stimuli: threshold: 1.0 - prompt: | - In the Widget project, add a sync operation exportEmployeeData for employee resource. + In the Widget project, add a sync operation exportData for employee resource. name: 002010-arm-action-sync-operation constraints: max_turns: 10 @@ -1463,6 +1477,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: @@ -1500,6 +1515,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation # VP1: Async delete added to StacItems namespace - type: file-matches @@ -1558,30 +1574,13 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - # VP1: Async move action using ArmResourceActionAsync + # VP1: Async move action with MoveRequest/MoveResponse and LRO headers (handles both single-line and multi-line formats) - type: file-matches config: path: employee.tsp - pattern: 'move is ArmResourceActionAsync\s*>' - type: prompt config: scoring: scale_1_5 @@ -1620,6 +1619,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation # VP1: ArmAsyncOperationHeader with FinalResult = Employee (alias or inline) - type: file-matches @@ -1682,6 +1682,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: @@ -1729,6 +1730,7 @@ stimuli: config: required: - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation # VP1: Custom scalar type with minLength/maxLength constraints - type: file-matches @@ -1797,7 +1799,6 @@ stimuli: dest: VpnSiteLinkConnection.tsp - src: ../fixtures/004003-delete-and-restore-operationId-decorator/tspconfig.yaml dest: tspconfig.yaml - graders: - type: tool-calls config: @@ -1862,6 +1863,12 @@ stimuli: dest: models.tsp - src: ../fixtures/005001-warning-suppress-warning/package.json dest: package.json + - src: ../fixtures/005001-warning-suppress-warning/tspconfig.yaml + dest: tspconfig.yaml + - src: ../fixtures/005001-warning-suppress-warning/main.tsp + dest: main.tsp + - src: ../fixtures/005001-warning-suppress-warning/stubs.tsp + dest: stubs.tsp graders: - type: tool-calls config: @@ -1888,3 +1895,4 @@ stimuli: prompt: 1 file-matches: 2 threshold: 1.0 + diff --git a/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/employee.tsp similarity index 79% rename from .github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/employee.tsp rename to .github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/employee.tsp index 0a532760f36..67516a5d7b9 100644 --- a/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/employee.tsp +++ b/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/employee.tsp @@ -5,6 +5,7 @@ import "@azure-tools/typespec-azure-resource-manager"; using TypeSpec.Rest; using TypeSpec.Http; +using TypeSpec.Versioning; using Azure.Core; using Azure.ResourceManager; @@ -19,14 +20,14 @@ model Employee is TrackedResource { /** Employee properties */ model EmployeeProperties { /** Age of employee */ - age: int32; + age?: int32; /** City of employee */ city?: string; /** Email of employee */ email?: string; - + /** Department of employee */ department?: string; @@ -37,36 +38,12 @@ model EmployeeProperties { @encode("base64url") profile?: bytes; - /** The assets belong to the employee. */ - assets: string[]; - /** The status of the last operation. */ @visibility(Lifecycle.Read) provisioningState?: ProvisioningState; } -/** Export result model */ -model ExportResult { - /** Exported data */ - data?: string; -} - -/** Employee move request */ -model MoveRequest { - /** The moving from location */ - from: string; - - /** The moving to location */ - to: string; -} - -/** Employee move response */ -model MoveResponse { - /** The status of the move */ - movingStatus: string; -} - -/** The resource provisioning state. */ +/** The provisioning state of a resource. */ @lroStatus union ProvisioningState { ResourceProvisioningState, @@ -86,15 +63,48 @@ union ProvisioningState { string, } +/** Employee move request */ +model MoveRequest { + /** The moving from location */ + from: string; + + /** The moving to location */ + to: string; +} + +/** Employee move response */ +model MoveResponse { + /** The status of the move */ + movingStatus: string; +} + +/** Export result model */ +model ExportResult { + /** Exported data */ + data?: string; +} + @armResourceOperations interface Employees { get is ArmResourceRead; createOrUpdate is ArmResourceCreateOrReplaceAsync; - update is ArmResourcePatchSync; + update is ArmCustomPatchSync< + Employee, + Azure.ResourceManager.Foundations.ResourceUpdateModel< + Employee, + EmployeeProperties + > + >; delete is ArmResourceDeleteWithoutOkAsync; listByResourceGroup is ArmResourceListByParent; listBySubscription is ArmListBySubscription; /** Export employee data */ exportData is ArmResourceActionSync; + + /** A sample resource action that move employee to different location */ + move is ArmResourceActionSync; + + /** A sample HEAD operation to check resource existence */ + checkExistence is ArmResourceCheckExistence; } diff --git a/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/main.tsp similarity index 88% rename from .github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/main.tsp rename to .github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/main.tsp index 2990eb2b363..fce33e41760 100644 --- a/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/main.tsp +++ b/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/main.tsp @@ -3,7 +3,6 @@ import "@typespec/rest"; import "@typespec/versioning"; import "@azure-tools/typespec-azure-core"; import "@azure-tools/typespec-azure-resource-manager"; -import "./employee.tsp"; using TypeSpec.Http; using TypeSpec.Rest; @@ -22,11 +21,11 @@ enum Versions { /** 2021-11-01 version */ @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) v2021_11_01: "2021-11-01", - - /** 2024-10-01-preview version */ + + /** 2025-05-04-preview version */ @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) @previewVersion - v2024_10_01_preview: "2024-10-01-preview", + v2025_05_04_preview: "2025-05-04-preview", } interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/package.json b/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/package.json similarity index 100% rename from .github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/package.json rename to .github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/package.json diff --git a/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/readme.md b/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/readme.md new file mode 100644 index 00000000000..0769a118a0a --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/readme.md @@ -0,0 +1,45 @@ +# Widget + +> see https://aka.ms/autorest + +This is the AutoRest configuration file for Widget. + +## Configuration + +### Basic Information + +This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. +This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we +use the native TypeSpec code generation configured in the tspconfig.yaml file. + +```yaml +openapi-type: arm +openapi-subtype: rpaas +tag: package-2021-11-01 +``` + +### Tag: package-2021-11-01 + +These settings apply only when `--tag=package-2021-11-01` is specified on the command line. + +```yaml $(tag) == 'package-2021-11-01' +input-file: + - stable/2021-11-01/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +### Tag: package-2025-05-04-preview + +These settings apply only when `--tag=package-2025-05-04-preview` is specified on the command line. + +```yaml $(tag) == 'package-2025-05-04-preview' +input-file: + - preview/2025-05-04-preview/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +--- diff --git a/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/shared.tsp similarity index 100% rename from .github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/shared.tsp rename to .github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/shared.tsp diff --git a/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/tspconfig.yaml similarity index 100% rename from .github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/tspconfig.yaml rename to .github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/tspconfig.yaml diff --git a/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/employee.tsp new file mode 100644 index 00000000000..3c5e47132d0 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/employee.tsp @@ -0,0 +1,63 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.Core; +using Azure.ResourceManager; + +namespace Microsoft.Widget; + +/** Employee resource */ +model Employee is TrackedResource { + ...ResourceNameParameter; +} + +/** Employee properties */ +model EmployeeProperties { + /** Age of employee */ + age?: int32; + + /** City of employee */ + city?: string; + + /** Profile of employee */ + @encode("base64url") + profile?: bytes; + + /** The status of the last operation. */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; +} + +/** The resource provisioning state. */ +@lroStatus +union ProvisioningState { + ResourceProvisioningState, + + /** The resource is being provisioned */ + Provisioning: "Provisioning", + + /** The resource is updating */ + Updating: "Updating", + + /** The resource is being deleted */ + Deleting: "Deleting", + + /** The resource create request has been accepted */ + Accepted: "Accepted", + + string, +} + +@armResourceOperations +interface Employees { + get is ArmResourceRead; + createOrUpdate is ArmResourceCreateOrReplaceAsync; + update is ArmResourcePatchSync; + delete is ArmResourceDeleteWithoutOkAsync; + listByResourceGroup is ArmResourceListByParent; + listBySubscription is ArmListBySubscription; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/main.tsp new file mode 100644 index 00000000000..5c2b4ea187c --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/main.tsp @@ -0,0 +1,36 @@ +import "@typespec/http"; +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "./employee.tsp"; + +using TypeSpec.Http; +using TypeSpec.Rest; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +/** Microsoft.Widget Resource Provider management API. */ +@armProviderNamespace +@service(#{ title: "Widget" }) +@versioned(Microsoft.Widget.Versions) +namespace Microsoft.Widget; + +/** The available API versions. */ +enum Versions { + /** 2021-10-01-preview version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + @previewVersion + v2021_10_01_preview: "2021-10-01-preview", + + /** 2021-11-01 version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + v2021_11_01: "2021-11-01", + + /** 2025-11-01 version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + v2025_11_01: "2025-11-01", +} + +interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/package.json b/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/package.json new file mode 100644 index 00000000000..45377b8ad61 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/package.json @@ -0,0 +1,50 @@ +{ + "name": "azure-rest-api-specs", + "devDependencies": { + "@azure-tools/openai-typespec": "1.11.0", + "@azure-tools/spec-gen-sdk": "~0.9.1", + "@azure-tools/specs-shared": "file:.github/shared", + "@azure-tools/typespec-apiview": "0.7.2", + "@azure-tools/typespec-metadata": "0.1.1", + "@azure-tools/typespec-autorest": "0.66.0", + "@azure-tools/typespec-azure-core": "0.66.0", + "@azure-tools/typespec-azure-portal-core": "0.66.0", + "@azure-tools/typespec-azure-resource-manager": "0.66.0", + "@azure-tools/typespec-azure-rulesets": "0.66.0", + "@azure-tools/typespec-client-generator-cli": "0.31.0", + "@azure-tools/typespec-client-generator-core": "0.66.3", + "@azure-tools/typespec-liftr-base": "0.13.0", + "@autorest/openapi-to-typespec": "0.11.13", + "@azure/avocado": "0.10.5", + "@azure/oad": "0.12.4", + "@microsoft.azure/openapi-validator": "2.2.4", + "@microsoft.azure/openapi-validator-core": "1.0.7", + "@microsoft.azure/openapi-validator-rulesets": "2.2.5", + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/sse": "0.80.0", + "@typespec/events": "0.80.0", + "@typespec/openapi": "1.10.0", + "@typespec/openapi3": "1.10.0", + "@typespec/prettier-plugin-typespec": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/streams": "0.80.0", + "@typespec/versioning": "0.80.0", + "@typespec/xml": "0.80.0", + "azure-rest-api-specs-eng-tools": "file:eng/tools", + "oav": "4.0.3", + "prettier": "3.8.1", + "typescript": "~5.9.2" + }, + "overrides": { + "@typespec/asset-emitter": "0.79.1", + "get-uri": "^6.0.5", + "minimatch@^3.0.0": "^3.1.5", + "superagent": "^10.2.3" + }, + "engines": { + "node": ">=20.0.0", + "npm": ">=10.0.0" + }, + "private": true +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/readme.md b/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/readme.md similarity index 87% rename from .github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/readme.md rename to .github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/readme.md index c4fe7c97e88..e34e8a22ea5 100644 --- a/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/readme.md +++ b/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/readme.md @@ -15,16 +15,16 @@ use the native TypeSpec code generation configured in the tspconfig.yaml file. ```yaml openapi-type: arm openapi-subtype: rpaas -tag: package-2025-05-01 +tag: package-2025-11-01 ``` -### Tag: package-2025-05-01 +### Tag: package-2025-11-01 -These settings apply only when `--tag=package-2025-05-01` is specified on the command line. +These settings apply only when `--tag=package-2025-11-01` is specified on the command line. -```yaml $(tag) == 'package-2025-05-01' +```yaml $(tag) == 'package-2025-11-01' input-file: - - stable/2025-05-01/widget.json + - stable/2025-11-01/widget.json suppressions: - code: PathContainsResourceType - code: PathResourceProviderMatchNamespace diff --git a/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/shared.tsp new file mode 100644 index 00000000000..1b94bb70503 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/shared.tsp @@ -0,0 +1,8 @@ +@doc("Faked shared model") +model FakedSharedModel { + @doc("The tag.") + tag: string; + + @doc("The created date.") + createdAt: utcDateTime; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/tspconfig.yaml new file mode 100644 index 00000000000..9c97da201c0 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/tspconfig.yaml @@ -0,0 +1,44 @@ +parameters: + "service-dir": + default: "sdk/widget" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + use-read-only-status-schema: true + emitter-output-dir: "{project-root}" + output-file: "{version-status}/{version}/widget.json" + arm-types-dir: "{project-root}/../../../../common-types/resource-management" + "@azure-typespec/http-client-csharp-mgmt": + namespace: "Azure.ResourceManager.Widget" + emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" + "@azure-tools/typespec-python": + emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" + namespace: "azure.mgmt.widget" + generate-test: true + generate-sample: true + flavor: "azure" + "@azure-tools/typespec-java": + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" + namespace: "com.azure.resourcemanager.widget" + service-name: "Widget" # human-readable service name, whitespace allowed + flavor: azure + "@azure-tools/typespec-ts": + emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" + flavor: azure + experimental-extensible-enums: true + package-details: + name: "@azure/arm-widget" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/widget" + emitter-output-dir: "{output-dir}/{service-dir}/armwidget" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/preview/2024-10-01-preview/widget.json b/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/preview/2024-10-01-preview/widget.json deleted file mode 100644 index c2bb2e3f864..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/preview/2024-10-01-preview/widget.json +++ /dev/null @@ -1,693 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "Widget", - "version": "2024-10-01-preview", - "description": "Microsoft.Widget Resource Provider management API.", - "x-typespec-generated": [ - { - "emitter": "@azure-tools/typespec-autorest" - } - ] - }, - "schemes": [ - "https" - ], - "host": "management.azure.com", - "produces": [ - "application/json" - ], - "consumes": [ - "application/json" - ], - "security": [ - { - "azure_auth": [ - "user_impersonation" - ] - } - ], - "securityDefinitions": { - "azure_auth": { - "type": "oauth2", - "description": "Azure Active Directory OAuth2 Flow.", - "flow": "implicit", - "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", - "scopes": { - "user_impersonation": "impersonate your user account" - } - } - }, - "tags": [ - { - "name": "Operations" - }, - { - "name": "Employees" - } - ], - "paths": { - "/providers/Microsoft.Widget/operations": { - "get": { - "operationId": "Operations_List", - "tags": [ - "Operations" - ], - "description": "List the operations for the provider", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/OperationListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/providers/Microsoft.Widget/employees": { - "get": { - "operationId": "Employees_ListBySubscription", - "tags": [ - "Employees" - ], - "description": "List Employee resources by subscription ID", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/EmployeeListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees": { - "get": { - "operationId": "Employees_ListByResourceGroup", - "tags": [ - "Employees" - ], - "description": "List Employee resources by resource group", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/EmployeeListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}": { - "get": { - "operationId": "Employees_Get", - "tags": [ - "Employees" - ], - "description": "Get a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - }, - "put": { - "operationId": "Employees_CreateOrUpdate", - "tags": [ - "Employees" - ], - "description": "Create a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - }, - { - "name": "resource", - "in": "body", - "description": "Resource create parameters.", - "required": true, - "schema": { - "$ref": "#/definitions/Employee" - } - } - ], - "responses": { - "200": { - "description": "Resource 'Employee' update operation succeeded", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "201": { - "description": "Resource 'Employee' create operation succeeded", - "schema": { - "$ref": "#/definitions/Employee" - }, - "headers": { - "Azure-AsyncOperation": { - "type": "string", - "description": "A link to the status monitor" - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "azure-async-operation" - }, - "x-ms-long-running-operation": true - }, - "patch": { - "operationId": "Employees_Update", - "tags": [ - "Employees" - ], - "description": "Update a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - }, - { - "name": "properties", - "in": "body", - "description": "The resource properties to be updated.", - "required": true, - "schema": { - "$ref": "#/definitions/EmployeeUpdate" - } - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - }, - "delete": { - "operationId": "Employees_Delete", - "tags": [ - "Employees" - ], - "description": "Delete a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "202": { - "description": "Resource deletion accepted.", - "headers": { - "Location": { - "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "204": { - "description": "Resource does not exist." - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "location" - }, - "x-ms-long-running-operation": true - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}/exportData": { - "post": { - "operationId": "Employees_ExportData", - "tags": [ - "Employees" - ], - "description": "Export employee data", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/ExportResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - } - } - }, - "definitions": { - "Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate": { - "type": "object", - "description": "Managed service identity (system assigned and/or user assigned identities)", - "properties": { - "type": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentityType", - "description": "The type of managed identity assigned to this resource." - }, - "userAssignedIdentities": { - "type": "object", - "description": "The identities assigned to this resource by the user.", - "additionalProperties": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/UserAssignedIdentity", - "x-nullable": true - } - } - } - }, - "Azure.ResourceManager.CommonTypes.TrackedResourceUpdate": { - "type": "object", - "title": "Tracked Resource", - "description": "The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'", - "properties": { - "tags": { - "type": "object", - "description": "Resource tags.", - "additionalProperties": { - "type": "string" - } - } - }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/Resource" - } - ] - }, - "Employee": { - "type": "object", - "description": "Employee resource", - "properties": { - "properties": { - "$ref": "#/definitions/EmployeeProperties", - "description": "The resource-specific properties for this resource." - }, - "identity": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentity", - "description": "The managed service identities assigned to this resource." - } - }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/TrackedResource" - } - ] - }, - "EmployeeListResult": { - "type": "object", - "description": "The response of a Employee list operation.", - "properties": { - "value": { - "type": "array", - "description": "The Employee items on this page", - "items": { - "$ref": "#/definitions/Employee" - } - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "required": [ - "value" - ] - }, - "EmployeeProperties": { - "type": "object", - "description": "Employee properties", - "properties": { - "age": { - "type": "integer", - "format": "int32", - "description": "Age of employee" - }, - "city": { - "type": "string", - "description": "City of employee" - }, - "email": { - "type": "string", - "description": "Email of employee" - }, - "department": { - "type": "string", - "description": "Department of employee" - }, - "statusCode": { - "type": "string", - "description": "Status code of employee" - }, - "profile": { - "type": "string", - "format": "base64url", - "description": "Profile of employee" - }, - "assets": { - "type": "array", - "description": "The assets belong to the employee.", - "items": { - "type": "string" - } - }, - "provisioningState": { - "$ref": "#/definitions/ProvisioningState", - "description": "The status of the last operation.", - "readOnly": true - } - }, - "required": [ - "age", - "assets" - ] - }, - "EmployeePropertiesUpdate": { - "type": "object", - "description": "Employee properties", - "properties": { - "age": { - "type": "integer", - "format": "int32", - "description": "Age of employee" - }, - "city": { - "type": "string", - "description": "City of employee" - }, - "email": { - "type": "string", - "description": "Email of employee" - }, - "department": { - "type": "string", - "description": "Department of employee" - }, - "statusCode": { - "type": "string", - "description": "Status code of employee" - }, - "profile": { - "type": "string", - "format": "base64url", - "description": "Profile of employee" - }, - "assets": { - "type": "array", - "description": "The assets belong to the employee.", - "items": { - "type": "string" - } - } - } - }, - "EmployeeUpdate": { - "type": "object", - "description": "Employee resource", - "properties": { - "properties": { - "$ref": "#/definitions/EmployeePropertiesUpdate", - "description": "The resource-specific properties for this resource." - }, - "identity": { - "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate", - "description": "The managed service identities assigned to this resource." - } - }, - "allOf": [ - { - "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.TrackedResourceUpdate" - } - ] - }, - "ExportResult": { - "type": "object", - "description": "Export result model", - "properties": { - "data": { - "type": "string", - "description": "Exported data" - } - } - }, - "MoveRequest": { - "type": "object", - "description": "Employee move request", - "properties": { - "from": { - "type": "string", - "description": "The moving from location" - }, - "to": { - "type": "string", - "description": "The moving to location" - } - }, - "required": [ - "from", - "to" - ] - }, - "MoveResponse": { - "type": "object", - "description": "Employee move response", - "properties": { - "movingStatus": { - "type": "string", - "description": "The status of the move" - } - }, - "required": [ - "movingStatus" - ] - }, - "ProvisioningState": { - "type": "string", - "description": "The resource provisioning state.", - "enum": [ - "Succeeded", - "Failed", - "Canceled", - "Provisioning", - "Updating", - "Deleting", - "Accepted" - ], - "x-ms-enum": { - "name": "ProvisioningState", - "modelAsString": true, - "values": [ - { - "name": "Succeeded", - "value": "Succeeded", - "description": "Resource has been created." - }, - { - "name": "Failed", - "value": "Failed", - "description": "Resource creation failed." - }, - { - "name": "Canceled", - "value": "Canceled", - "description": "Resource creation was canceled." - }, - { - "name": "Provisioning", - "value": "Provisioning", - "description": "The resource is being provisioned" - }, - { - "name": "Updating", - "value": "Updating", - "description": "The resource is updating" - }, - { - "name": "Deleting", - "value": "Deleting", - "description": "The resource is being deleted" - }, - { - "name": "Accepted", - "value": "Accepted", - "description": "The resource create request has been accepted" - } - ] - }, - "readOnly": true - } - }, - "parameters": {} -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/stable/2021-11-01/widget.json b/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/stable/2021-11-01/widget.json deleted file mode 100644 index 81ea602477e..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001003-version-required-to-optional/stable/2021-11-01/widget.json +++ /dev/null @@ -1,693 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "Widget", - "version": "2021-11-01", - "description": "Microsoft.Widget Resource Provider management API.", - "x-typespec-generated": [ - { - "emitter": "@azure-tools/typespec-autorest" - } - ] - }, - "schemes": [ - "https" - ], - "host": "management.azure.com", - "produces": [ - "application/json" - ], - "consumes": [ - "application/json" - ], - "security": [ - { - "azure_auth": [ - "user_impersonation" - ] - } - ], - "securityDefinitions": { - "azure_auth": { - "type": "oauth2", - "description": "Azure Active Directory OAuth2 Flow.", - "flow": "implicit", - "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", - "scopes": { - "user_impersonation": "impersonate your user account" - } - } - }, - "tags": [ - { - "name": "Operations" - }, - { - "name": "Employees" - } - ], - "paths": { - "/providers/Microsoft.Widget/operations": { - "get": { - "operationId": "Operations_List", - "tags": [ - "Operations" - ], - "description": "List the operations for the provider", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/OperationListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/providers/Microsoft.Widget/employees": { - "get": { - "operationId": "Employees_ListBySubscription", - "tags": [ - "Employees" - ], - "description": "List Employee resources by subscription ID", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/EmployeeListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees": { - "get": { - "operationId": "Employees_ListByResourceGroup", - "tags": [ - "Employees" - ], - "description": "List Employee resources by resource group", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/EmployeeListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}": { - "get": { - "operationId": "Employees_Get", - "tags": [ - "Employees" - ], - "description": "Get a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - }, - "put": { - "operationId": "Employees_CreateOrUpdate", - "tags": [ - "Employees" - ], - "description": "Create a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - }, - { - "name": "resource", - "in": "body", - "description": "Resource create parameters.", - "required": true, - "schema": { - "$ref": "#/definitions/Employee" - } - } - ], - "responses": { - "200": { - "description": "Resource 'Employee' update operation succeeded", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "201": { - "description": "Resource 'Employee' create operation succeeded", - "schema": { - "$ref": "#/definitions/Employee" - }, - "headers": { - "Azure-AsyncOperation": { - "type": "string", - "description": "A link to the status monitor" - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "azure-async-operation" - }, - "x-ms-long-running-operation": true - }, - "patch": { - "operationId": "Employees_Update", - "tags": [ - "Employees" - ], - "description": "Update a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - }, - { - "name": "properties", - "in": "body", - "description": "The resource properties to be updated.", - "required": true, - "schema": { - "$ref": "#/definitions/EmployeeUpdate" - } - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - }, - "delete": { - "operationId": "Employees_Delete", - "tags": [ - "Employees" - ], - "description": "Delete a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "202": { - "description": "Resource deletion accepted.", - "headers": { - "Location": { - "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "204": { - "description": "Resource does not exist." - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "location" - }, - "x-ms-long-running-operation": true - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}/exportData": { - "post": { - "operationId": "Employees_ExportData", - "tags": [ - "Employees" - ], - "description": "Export employee data", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/ExportResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - } - } - }, - "definitions": { - "Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate": { - "type": "object", - "description": "Managed service identity (system assigned and/or user assigned identities)", - "properties": { - "type": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentityType", - "description": "The type of managed identity assigned to this resource." - }, - "userAssignedIdentities": { - "type": "object", - "description": "The identities assigned to this resource by the user.", - "additionalProperties": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/UserAssignedIdentity", - "x-nullable": true - } - } - } - }, - "Azure.ResourceManager.CommonTypes.TrackedResourceUpdate": { - "type": "object", - "title": "Tracked Resource", - "description": "The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'", - "properties": { - "tags": { - "type": "object", - "description": "Resource tags.", - "additionalProperties": { - "type": "string" - } - } - }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/Resource" - } - ] - }, - "Employee": { - "type": "object", - "description": "Employee resource", - "properties": { - "properties": { - "$ref": "#/definitions/EmployeeProperties", - "description": "The resource-specific properties for this resource." - }, - "identity": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentity", - "description": "The managed service identities assigned to this resource." - } - }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/TrackedResource" - } - ] - }, - "EmployeeListResult": { - "type": "object", - "description": "The response of a Employee list operation.", - "properties": { - "value": { - "type": "array", - "description": "The Employee items on this page", - "items": { - "$ref": "#/definitions/Employee" - } - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "required": [ - "value" - ] - }, - "EmployeeProperties": { - "type": "object", - "description": "Employee properties", - "properties": { - "age": { - "type": "integer", - "format": "int32", - "description": "Age of employee" - }, - "city": { - "type": "string", - "description": "City of employee" - }, - "email": { - "type": "string", - "description": "Email of employee" - }, - "department": { - "type": "string", - "description": "Department of employee" - }, - "statusCode": { - "type": "string", - "description": "Status code of employee" - }, - "profile": { - "type": "string", - "format": "base64url", - "description": "Profile of employee" - }, - "assets": { - "type": "array", - "description": "The assets belong to the employee.", - "items": { - "type": "string" - } - }, - "provisioningState": { - "$ref": "#/definitions/ProvisioningState", - "description": "The status of the last operation.", - "readOnly": true - } - }, - "required": [ - "age", - "assets" - ] - }, - "EmployeePropertiesUpdate": { - "type": "object", - "description": "Employee properties", - "properties": { - "age": { - "type": "integer", - "format": "int32", - "description": "Age of employee" - }, - "city": { - "type": "string", - "description": "City of employee" - }, - "email": { - "type": "string", - "description": "Email of employee" - }, - "department": { - "type": "string", - "description": "Department of employee" - }, - "statusCode": { - "type": "string", - "description": "Status code of employee" - }, - "profile": { - "type": "string", - "format": "base64url", - "description": "Profile of employee" - }, - "assets": { - "type": "array", - "description": "The assets belong to the employee.", - "items": { - "type": "string" - } - } - } - }, - "EmployeeUpdate": { - "type": "object", - "description": "Employee resource", - "properties": { - "properties": { - "$ref": "#/definitions/EmployeePropertiesUpdate", - "description": "The resource-specific properties for this resource." - }, - "identity": { - "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate", - "description": "The managed service identities assigned to this resource." - } - }, - "allOf": [ - { - "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.TrackedResourceUpdate" - } - ] - }, - "ExportResult": { - "type": "object", - "description": "Export result model", - "properties": { - "data": { - "type": "string", - "description": "Exported data" - } - } - }, - "MoveRequest": { - "type": "object", - "description": "Employee move request", - "properties": { - "from": { - "type": "string", - "description": "The moving from location" - }, - "to": { - "type": "string", - "description": "The moving to location" - } - }, - "required": [ - "from", - "to" - ] - }, - "MoveResponse": { - "type": "object", - "description": "Employee move response", - "properties": { - "movingStatus": { - "type": "string", - "description": "The status of the move" - } - }, - "required": [ - "movingStatus" - ] - }, - "ProvisioningState": { - "type": "string", - "description": "The resource provisioning state.", - "enum": [ - "Succeeded", - "Failed", - "Canceled", - "Provisioning", - "Updating", - "Deleting", - "Accepted" - ], - "x-ms-enum": { - "name": "ProvisioningState", - "modelAsString": true, - "values": [ - { - "name": "Succeeded", - "value": "Succeeded", - "description": "Resource has been created." - }, - { - "name": "Failed", - "value": "Failed", - "description": "Resource creation failed." - }, - { - "name": "Canceled", - "value": "Canceled", - "description": "Resource creation was canceled." - }, - { - "name": "Provisioning", - "value": "Provisioning", - "description": "The resource is being provisioned" - }, - { - "name": "Updating", - "value": "Updating", - "description": "The resource is updating" - }, - { - "name": "Deleting", - "value": "Deleting", - "description": "The resource is being deleted" - }, - { - "name": "Accepted", - "value": "Accepted", - "description": "The resource create request has been accepted" - } - ] - }, - "readOnly": true - } - }, - "parameters": {} -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/main.tsp new file mode 100644 index 00000000000..c9aac058349 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/main.tsp @@ -0,0 +1,41 @@ +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "./models.tsp"; +import "./stubs.tsp"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.ResourceManager.Foundations; +using Azure.Core; +using Azure.ResourceManager; +using TypeSpec.Versioning; + +@armProviderNamespace +@service(#{ title: "CognitiveServicesManagementClient" }) +@versioned(Versions) +@armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v3) +namespace Microsoft.CognitiveServices; + +/** + * The available API versions. + */ +enum Versions { + /** + * The 2025-10-01-preview API version. + */ + v2025_10_01_preview: "2025-10-01-preview", + + /** + * The 2025-12-01 API version. + */ + v2025_12_01: "2025-12-01", + + /** + * The 2026-01-15-preview API version. + */ + v2026_01_15_preview: "2026-01-15-preview", +} + +interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/stubs.tsp b/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/stubs.tsp new file mode 100644 index 00000000000..0723aefb85e --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/stubs.tsp @@ -0,0 +1,405 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "@typespec/versioning"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; +using TypeSpec.Versioning; + +namespace Microsoft.CognitiveServices; + +// Resource definitions for types referenced in models.tsp. +// Based on specification/cognitiveservices/CognitiveServices.Management. + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +model Account + is Azure.ResourceManager.Legacy.TrackedResourceWithOptionalLocation { + ...ResourceNameParameter< + Resource = Account, + KeyName = "accountName", + SegmentName = "accounts", + NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" + >; + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + etag?: string; + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + kind?: string; + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + sku?: Sku; + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + identity?: Identity; +} + +@parentResource(Account) +model Deployment is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = Deployment, + KeyName = "deploymentName", + SegmentName = "deployments", + NamePattern = "" + >; + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + sku?: Sku; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) + tags?: Record; +} + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@parentResource(Account) +model CommitmentPlan + is Azure.ResourceManager.Legacy.TrackedResourceWithOptionalLocation { + ...ResourceNameParameter< + Resource = CommitmentPlan, + KeyName = "commitmentPlanName", + SegmentName = "commitmentPlans", + NamePattern = "" + >; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + kind?: string; + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + sku?: Sku; +} + +@parentResource(CommitmentPlan) +model CommitmentPlanAccountAssociation + is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = CommitmentPlanAccountAssociation, + KeyName = "commitmentPlanAssociationName", + SegmentName = "accountAssociations", + NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" + >; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) + tags?: Record; +} + +@parentResource(Account) +model EncryptionScope + is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = EncryptionScope, + KeyName = "encryptionScopeName", + SegmentName = "encryptionScopes", + NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" + >; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) + tags?: Record; +} + +@parentResource(Account) +model RaiPolicy is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = RaiPolicy, + KeyName = "raiPolicyName", + SegmentName = "raiPolicies", + NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" + >; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) + tags?: Record; +} + +@parentResource(Account) +model RaiBlocklist + is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = RaiBlocklist, + KeyName = "raiBlocklistName", + SegmentName = "raiBlocklists", + NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" + >; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) + tags?: Record; +} + +@parentResource(RaiBlocklist) +model RaiBlocklistItem + is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = RaiBlocklistItem, + KeyName = "raiBlocklistItemName", + SegmentName = "raiBlocklistItems", + NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" + >; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) + tags?: Record; +} + +@parentResource(Account) +model RaiTopic is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = RaiTopic, + KeyName = "raiTopicName", + SegmentName = "raitopics", + NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" + >; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) + tags?: Record; +} + +@parentResource(Account) +model RaiToolLabel + is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = RaiToolLabel, + KeyName = "raiToolConnectionName", + SegmentName = "raiToolLabels", + NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" + >; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read, Lifecycle.Create) + tags?: Record; +} + +@subscriptionResource +@parentResource(SubscriptionLocationResource) +model RaiContentFilter + is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = RaiContentFilter, + KeyName = "filterName", + SegmentName = "raiContentFilters", + NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" + >; +} + +@subscriptionResource +model RaiExternalSafetyProviderSchema + is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = RaiExternalSafetyProviderSchema, + KeyName = "safetyProviderName", + SegmentName = "raiExternalSafetyProviders", + NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" + >; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + tags?: Record; +} + +@parentResource(Account) +model NetworkSecurityPerimeterConfiguration + is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = NetworkSecurityPerimeterConfiguration, + KeyName = "nspConfigurationName", + SegmentName = "networkSecurityPerimeterConfigurations", + NamePattern = "^.*$" + >; +} + +@parentResource(Account) +model DefenderForAISetting + is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = DefenderForAISetting, + KeyName = "defenderForAISettingName", + SegmentName = "defenderForAISettings", + NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" + >; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) + tags?: Record; +} + +@parentResource(Account) +model ConnectionPropertiesV2BasicResource + is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = ConnectionPropertiesV2BasicResource, + KeyName = "connectionName", + SegmentName = "connections", + NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_-]{2,32}$" + >; +} + +@parentResource(Account) +model CapabilityHost + is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = CapabilityHost, + KeyName = "capabilityHostName", + SegmentName = "capabilityHosts", + NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9\\-_]{0,254}$" + >; +} + +@parentResource(Project) +model ProjectCapabilityHost + is Azure.ResourceManager.ProxyResource< + ProjectCapabilityHostProperties, + false + > { + ...ResourceNameParameter< + Resource = ProjectCapabilityHost, + KeyName = "capabilityHostName", + SegmentName = "capabilityHosts", + NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9\\-_]{0,254}$" + >; +} + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@parentResource(Account) +model Project + is Azure.ResourceManager.Legacy.TrackedResourceWithOptionalLocation { + ...ResourceNameParameter< + Resource = Project, + KeyName = "projectName", + SegmentName = "projects", + NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" + >; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + identity?: Identity; +} + +@subscriptionResource +model QuotaTier is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = QuotaTier, + KeyName = "default", + SegmentName = "quotaTiers", + NamePattern = "" + >; +} + +@parentResource(Project) +model AgentApplication + is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = AgentApplication, + KeyName = "name", + SegmentName = "applications", + NamePattern = "" + >; +} + +@parentResource(Project) +model AgentDeployment + is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = AgentDeployment, + KeyName = "deploymentName", + SegmentName = "deployments", + NamePattern = "" + >; +} + +@parentResource(ManagedNetworkSettingsPropertiesBasicResource) +model OutboundRuleBasicResource + is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = OutboundRuleBasicResource, + KeyName = "ruleName", + SegmentName = "outboundRules", + NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_-]{2,32}$" + >; +} + +@parentResource(Account) +model ManagedNetworkSettingsPropertiesBasicResource + is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = ManagedNetworkSettingsPropertiesBasicResource, + KeyName = "managedNetworkName", + SegmentName = "managedNetworks", + NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_-]{2,32}$" + >; +} + +@parentResource(Account) +model PrivateEndpointConnection + is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = PrivateEndpointConnection, + KeyName = "privateEndpointConnectionName", + SegmentName = "privateEndpointConnections", + NamePattern = "" + >; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + etag?: string; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + location?: string; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/tspconfig.yaml new file mode 100644 index 00000000000..fee9363ae42 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/tspconfig.yaml @@ -0,0 +1,14 @@ +parameters: + "service-dir": + default: "sdk/cognitiveservices" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + use-read-only-status-schema: true + emitter-output-dir: "{project-root}" + output-file: "{version-status}/{version}/cognitiveservices.json" + arm-types-dir: "{project-root}/../../../../common-types/resource-management" +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" From 1aad6365fdfb3b929d33e4241cde80901a2f4229 Mon Sep 17 00:00:00 2001 From: JoyerJin <116236375+JoyerJin@users.noreply.github.com> Date: Thu, 23 Apr 2026 19:11:56 +0800 Subject: [PATCH 07/98] remove 003001 and reorder 003-LRO, edit eval files to improve quality Co-authored-by: Copilot --- .../evaluate/.vally.yaml | 14 +- .../evaluate/evals/001001.eval.yaml | 6 +- .../evaluate/evals/001002.eval.yaml | 6 +- .../evaluate/evals/001003.eval.yaml | 14 +- .../evaluate/evals/001004.eval.yaml | 4 +- .../evaluate/evals/001005.eval.yaml | 6 +- .../evaluate/evals/001006.eval.yaml | 4 +- .../evaluate/evals/001007.eval.yaml | 4 +- .../evaluate/evals/001008.eval.yaml | 4 +- .../evaluate/evals/001009.eval.yaml | 7 +- .../evaluate/evals/001010.eval.yaml | 10 +- .../evaluate/evals/001011.eval.yaml | 9 +- .../evaluate/evals/001012.eval.yaml | 11 +- .../evaluate/evals/001013.eval.yaml | 4 +- .../evaluate/evals/002001.eval.yaml | 4 +- .../evaluate/evals/002002.eval.yaml | 9 +- .../evaluate/evals/002003.eval.yaml | 16 +- .../evaluate/evals/002004.eval.yaml | 4 +- .../evaluate/evals/002005.eval.yaml | 20 +- .../evaluate/evals/002006.eval.yaml | 10 +- .../evaluate/evals/002007.eval.yaml | 4 +- .../evaluate/evals/002008.eval.yaml | 22 +- .../evaluate/evals/002009.eval.yaml | 6 +- .../evaluate/evals/002010.eval.yaml | 4 +- .../evaluate/evals/003001.eval.yaml | 44 +- .../evaluate/evals/003002.eval.yaml | 30 +- .../evaluate/evals/003003.eval.yaml | 79 -- .../evaluate/evals/004001.eval.yaml | 6 +- .../evaluate/evals/004002.eval.yaml | 12 +- .../evaluate/evals/004003.eval.yaml | 10 +- .../evaluate/evals/005001.eval.yaml | 9 +- .../evaluate/evals/all.eval.yaml | 946 ++++++------------ .../001-share-version-new-feature/main.tsp | 1 + .../employee.tsp | 78 ++ .../003-long-running-operation-share/main.tsp | 31 + .../package.json | 0 .../readme.md | 45 + .../shared.tsp | 8 + .../tspconfig.yaml | 44 + .../003001-dataplane-async-delete-op/inma.tsp | 943 ----------------- .../tspconfig.yaml | 14 - 41 files changed, 633 insertions(+), 1869 deletions(-) delete mode 100644 .github/azure-typespec-author/evaluate/evals/003003.eval.yaml create mode 100644 .github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/employee.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/main.tsp rename .github/azure-typespec-author/evaluate/fixtures/{003001-dataplane-async-delete-op => 003-long-running-operation-share}/package.json (100%) create mode 100644 .github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/readme.md create mode 100644 .github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/shared.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/tspconfig.yaml delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/003001-dataplane-async-delete-op/inma.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/003001-dataplane-async-delete-op/tspconfig.yaml diff --git a/.github/azure-typespec-author/evaluate/.vally.yaml b/.github/azure-typespec-author/evaluate/.vally.yaml index 061399bc5b9..1e2109aa12b 100644 --- a/.github/azure-typespec-author/evaluate/.vally.yaml +++ b/.github/azure-typespec-author/evaluate/.vally.yaml @@ -1,4 +1,4 @@ -# Vally configuration for Azure SDK CLI MCP tool evaluations +# Vally configuration for Azure SDK Typespec Author MCP tool evaluations # See: https://vally.dev/reference/vally-config paths: @@ -19,6 +19,16 @@ environments: AZSDKTOOLS_AGENT_TESTING: "false" AZSDKTOOLS_COLLECT_TELEMETRY: "false" AZURE_SDK_KB_ENDPOINT: "http://localhost:8088" + azsdk-mcp-remote: + mcpServers: + azure-sdk-mcp: + type: stdio + command: dotnet + args: ["run", "--project", "../../../tools/azsdk-cli/Azure.Sdk.Tools.Cli", "--", "start"] + timeout: 30000 + env: + AZSDKTOOLS_AGENT_TESTING: "false" + AZSDKTOOLS_COLLECT_TELEMETRY: "false" suites: versioning: @@ -28,7 +38,7 @@ suites: armtemplate: evals: ["evals/002001.eval.yaml","evals/002002.eval.yaml","evals/002003.eval.yaml","evals/002004.eval.yaml","evals/002005.eval.yaml","evals/002006.eval.yaml","evals/002007.eval.yaml","evals/002008.eval.yaml","evals/002009.eval.yaml","evals/002010.eval.yaml"] longrunningoperation: - evals: ["evals/003001.eval.yaml","evals/003002.eval.yaml","evals/003003.eval.yaml"] + evals: ["evals/003001.eval.yaml","evals/003002.eval.yaml"] decorators: evals: ["evals/004001.eval.yaml","evals/004002.eval.yaml","evals/004003.eval.yaml"] warning: diff --git a/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml index b14d2cf535a..9b51c7216c5 100644 --- a/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml @@ -10,13 +10,13 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases stimuli: - name: 001001-version-spread-property - prompt: I added `...Azure.ResourceManager.ManagedServiceIdentityProperty;` which updates all my existing API versions and introduces a breaking change. I want to introduce the properties of the spread model '...ManagedServiceIdentityProperty' in API version 2025-05-04-preview only. + prompt: I added `...Azure.ResourceManager.ManagedServiceIdentityProperty;` which updates all my existing API versions and introduces a breaking change. I want to introduce the properties of the spread model '...ManagedServiceIdentityProperty' in API version 2025-05-04-preview only. environment: files: - src: ../fixtures/001-share-version-new-feature/employee.tsp @@ -53,7 +53,7 @@ stimuli: - type: prompt config: prompt: Verify changes are scoped to this task only, with no unrelated edits beyond introducing preview-only identity via versioning. - model: claude-opus-4.6-1m + model: claude-opus-4.6 scoring: scale_1_5 threshold: 1.0 constraints: diff --git a/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml index 789964dcc96..c73536ed985 100644 --- a/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml @@ -10,14 +10,14 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases stimuli: - name: 001002-version-default-value prompt: | - add a default value `21` for property age in model EmployeeProperties from a new api version 2025-11-01 + add a default value `21` for property age in model EmployeeProperties only for a new api version 2025-11-01 constraints: max_turns: 10 max_tokens: 5000 @@ -63,7 +63,7 @@ stimuli: scoring: scale_1_5 threshold: 1.0 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m + model: claude-opus-4.6 scoring: weights: tool-calls: 1 diff --git a/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml index 5668ab9f371..688656e6c7e 100644 --- a/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml @@ -10,7 +10,7 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases @@ -25,15 +25,15 @@ stimuli: files: - src: ../fixtures/001-share-version-new-feature/employee.tsp dest: employee.tsp - - src: ../fixtures/001-share-version-new-feature/Widget/main.tsp + - src: ../fixtures/001-share-version-new-feature/main.tsp dest: main.tsp - - src: ../fixtures/001-share-version-new-feature/Widget/package.json + - src: ../fixtures/001-share-version-new-feature/package.json dest: package.json - - src: ../fixtures/001-share-version-new-feature/Widget/readme.md + - src: ../fixtures/001-share-version-new-feature/readme.md dest: readme.md - - src: ../fixtures/001-share-version-new-feature/Widget/shared.tsp + - src: ../fixtures/001-share-version-new-feature/shared.tsp dest: shared.tsp - - src: ../fixtures/001-share-version-new-feature/Widget/tspconfig.yaml + - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml dest: tspconfig.yaml graders: - type: tool-calls @@ -59,7 +59,7 @@ stimuli: scoring: scale_1_5 threshold: 1.0 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m + model: claude-opus-4.6 scoring: weights: prompt: 1 diff --git a/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml index 2fa2f1cd4af..485f51b2235 100644 --- a/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml @@ -10,7 +10,7 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases @@ -55,7 +55,7 @@ stimuli: scoring: scale_1_5 threshold: 1.0 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m + model: claude-opus-4.6 scoring: weights: prompt: 1 diff --git a/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml index 9bd9cc075d0..e5c8494ea4e 100644 --- a/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml @@ -10,7 +10,7 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases @@ -97,8 +97,8 @@ stimuli: config: scoring: scale_1_5 threshold: 1.0 - prompt: 'Evaluate the following change: the excluded feature is the default value 21 on age, The oldAge property should be deleted entirely along with its @removed decorator". The @renamedFrom decorator should be removed along with the oldAge property itself. The workLocation property should have its versioning decorator updated to reference `2025-05-04-preview`.' - model: claude-opus-4.6-1m + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6 scoring: weights: prompt: 1 diff --git a/.github/azure-typespec-author/evaluate/evals/001006.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001006.eval.yaml index 6ea47137793..5ae9af105e6 100644 --- a/.github/azure-typespec-author/evaluate/evals/001006.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001006.eval.yaml @@ -10,7 +10,7 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases @@ -94,7 +94,7 @@ stimuli: scoring: scale_1_5 threshold: 1.0 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m + model: claude-opus-4.6 scoring: weights: file-exists: 2 diff --git a/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml index b4858d10ffe..78d35fcc97f 100644 --- a/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml @@ -10,7 +10,7 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases @@ -112,7 +112,7 @@ stimuli: scoring: scale_1_5 threshold: 1.0 prompt: 'Evaluate only the semantic interpretation of the request: the excluded features are workLocation property and WorkLocation model, while other features should be carried. Double check the plan has correctly implemented version renaming (2024-10-01-preview → 2025-01-01), old version removal, new version example setup and old version example removal.' - model: claude-opus-4.6-1m + model: claude-opus-4.6 scoring: weights: prompt: 1 diff --git a/.github/azure-typespec-author/evaluate/evals/001008.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001008.eval.yaml index 2c8f9889501..3fb2b781e1e 100644 --- a/.github/azure-typespec-author/evaluate/evals/001008.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001008.eval.yaml @@ -10,7 +10,7 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases @@ -104,7 +104,7 @@ stimuli: scoring: scale_1_5 threshold: 1.0 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m + model: claude-opus-4.6 scoring: weights: file-exists: 2 diff --git a/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml index 144dbbbf298..c742b20e9ce 100644 --- a/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml @@ -10,7 +10,7 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases @@ -40,7 +40,6 @@ stimuli: config: required: - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: @@ -58,8 +57,8 @@ stimuli: config: scoring: scale_1_5 threshold: 1.0 - prompt: 'Verify: (1) new version 2025-05-04-preview added, (2) old preview version 2024-10-01-preview removed from enum, (3) email property made required only in new version, (4) only scoped edits made.' - model: claude-opus-4.6-1m + prompt: 'Verify email property made required only in new version, only scoped edits made. Verify compile the project and fix any compilation errors if present.' + model: claude-opus-4.6 scoring: weights: prompt: 1 diff --git a/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml index 5892a9d25c6..fbe3054c3f9 100644 --- a/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml @@ -10,7 +10,7 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases @@ -40,7 +40,6 @@ stimuli: config: required: - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: @@ -54,15 +53,8 @@ stimuli: config: path: Microsoft.Widget/Widget/employee.tsp pattern: 'department\?: string;' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m scoring: weights: - prompt: 1 tool-calls: 1 file-matches: 3 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml index 3d709b348f3..5ac970146c3 100644 --- a/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml @@ -10,7 +10,7 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases @@ -54,15 +54,8 @@ stimuli: config: path: Microsoft.Widget/Widget/employee.tsp pattern: 'employeeAge\?: int32;' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m scoring: weights: - prompt: 1 file-matches: 3 tool-calls: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml index 643167da0fc..fb27bde81da 100644 --- a/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml @@ -10,13 +10,13 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases stimuli: - prompt: | - In the Widget project, change the return type of the `exportData` operation from `ExportResult` to `DetailedExportResult` with additional properties `format` (string) and `exportedAt` (utcDateTime) only for version `2025-05-04-preview`. + In the Widget project, change the return type of the `exportData` operation from `ExportResult` to `DetailedExportResult` with additional optional properties `format` (string) and `exportedAt` (utcDateTime) only for version `2025-05-04-preview`. name: 001012-version-operation-return-type-changed constraints: max_turns: 10 @@ -66,15 +66,8 @@ stimuli: config: path: Microsoft.Widget/Widget/employee.tsp pattern: 'exportData is ArmResourceActionSync;' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m scoring: weights: - prompt: 1 file-matches: 6 tool-calls: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml index 8db7b5bac5d..574742c2bcb 100644 --- a/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml @@ -10,7 +10,7 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases @@ -59,7 +59,7 @@ stimuli: scoring: scale_1_5 threshold: 1.0 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m + model: claude-opus-4.6 scoring: weights: prompt: 1 diff --git a/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml index 6a329d3978b..81643f41195 100644 --- a/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml @@ -10,7 +10,7 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases @@ -59,7 +59,7 @@ stimuli: scoring: scale_1_5 threshold: 1.0 prompt: 'The original separate list-by-resource-group and list-by-subscription operations should be consolidated into a single list operation using the extension list template. A scope-parameterized interface should be defined to allow the extension resource to be scoped to any parent resource.' - model: claude-opus-4.6-1m + model: claude-opus-4.6 scoring: weights: tool-calls: 1 diff --git a/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml index a54d6f33fed..abc8ea580bd 100644 --- a/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml @@ -10,7 +10,7 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases @@ -54,15 +54,8 @@ stimuli: config: path: '*.tsp' pattern: provisioningState - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m scoring: weights: tool-calls: 1 - prompt: 1 file-matches: 3 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml index 339e3a56448..58097ddbe00 100644 --- a/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml @@ -10,7 +10,7 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases @@ -45,21 +45,9 @@ stimuli: - type: file-matches config: path: '*.tsp' - pattern: ArmCustomPatchAsync< - - type: file-not-matches - config: - path: '*.tsp' - pattern: ArmResourcePatchAsync< - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m + pattern: 'update\s+is\s+ArmCustomPatchSync\s*<\s*Employee\s*,\s*Azure\.ResourceManager\.Foundations\.ResourceUpdateModel\s*<\s*Employee\s*,\s*EmployeeProperties\s*>\s*>\s*;' scoring: weights: tool-calls: 1 - prompt: 1 - file-not-matches: 1 file-matches: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml index 5c9d12c27a0..e9f6b891ce5 100644 --- a/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml @@ -10,7 +10,7 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases @@ -65,7 +65,7 @@ stimuli: scoring: scale_1_5 threshold: 1.0 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m + model: claude-opus-4.6 scoring: weights: tool-calls: 1 diff --git a/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml index b8ca75fc1b3..a656c041a96 100644 --- a/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml @@ -10,13 +10,13 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases stimuli: - prompt: | - Define a Azure resource "Employee" under the namespace "Microsoft.Widget" using TypeSpec. Properties: age (int32, optional), city (string, optional), profile (bytes, optional), provisioningState (enum, optional, read-only). Ensure the definition meets TypeSpec Azure design guidelines. + Define a Azure resource "Employee" under the namespace "Microsoft.Widget" using TypeSpec. Properties: age (int32, optional), city (string, optional), profile (bytes, optional), provisioningState (enum incorporating ResourceProvisioningState, optional, read-only). Ensure the definition meets TypeSpec Azure design guidelines. name: 002005-ARM-define-the-resource constraints: max_turns: 10 @@ -42,41 +42,41 @@ stimuli: - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: - path: employee.tsp + path: '*.tsp' pattern: model Employee is TrackedResource # Point 3: EmployeeProperties has age, city, profile, and read-only provisioningState - type: file-matches config: - path: 'employee.tsp' + path: '*.tsp' pattern: 'age\?: int32' - type: file-matches config: - path: 'employee.tsp' + path: '*.tsp' pattern: '@visibility\(Lifecycle\.Read\)' # Point 4: ProvisioningState union includes standard ARM states - type: file-matches config: - path: 'employee.tsp' + path: '*.tsp' pattern: ResourceProvisioningState # Point 5: CRUD + listByResourceGroup + listBySubscription - type: file-matches config: - path: employee.tsp + path: '*.tsp' pattern: ArmResourceCreateOrReplaceAsync|ArmResourceCreateOrUpdateAsync - type: file-matches config: - path: employee.tsp + path: '*.tsp' pattern: ArmResourceListByParent - type: file-matches config: - path: employee.tsp + path: '*.tsp' pattern: ArmListBySubscription - type: prompt config: scoring: scale_1_5 threshold: 1.0 prompt: 'Verify all five aspects: (1) Employee resource definition is written into a TSP file; (2) Employee model uses TrackedResource under Microsoft.Widget namespace; (3) EmployeeProperties includes age, city, profile, and a read-only provisioningState; (4) ProvisioningState is a union type incorporating standard ARM ResourceProvisioningState; (5) Employees interface includes full CRUD operations (get, create, update, delete) plus listByResourceGroup and listBySubscription.' - model: claude-opus-4.6-1m + model: claude-opus-4.6 scoring: weights: tool-calls: 1 diff --git a/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml index 1b8c5247a92..e834451b803 100644 --- a/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml @@ -10,13 +10,13 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases stimuli: - prompt: | - Create a new "AddressResource" child resource under the parent resource "Employee". AddressResource properties:street address fields, city, state, postal code, country, and a read-only provisioningState. Ensure the definition meets TypeSpec Azure design guidelines. + Create a new "AddressResource" child resource under the parent resource "Employee". Address properties: street 1(optional), street 2(optional), city(optional), state(optional), postal code(optional), country(optional), and a read-only provisioningState(optional). Ensure the definition meets TypeSpec Azure design guidelines. name: 002006-ARM-define-child-resource constraints: max_turns: 10 @@ -49,7 +49,7 @@ stimuli: - type: file-matches config: path: '*.tsp' - pattern: 'model AddressResource is ProxyResource' + pattern: 'model AddressResource is ProxyResource|model AddressResource is ProxyResource' - type: file-matches config: path: '*.tsp' @@ -57,7 +57,7 @@ stimuli: - type: file-matches config: path: '*.tsp' - pattern: 'model AddressProperties' + pattern: 'model AddressProperties|model AddressResourceProperties' - type: file-matches config: path: '*.tsp' @@ -112,7 +112,7 @@ stimuli: scoring: scale_1_5 threshold: 1.0 prompt: 'The Addresses interface should include standard CRUD operations (get, create, update, delete) and a list-by-parent operation.' - model: claude-opus-4.6-1m + model: claude-opus-4.6 scoring: weights: tool-calls: 1 diff --git a/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml index 43403e5c986..c13b69bfabf 100644 --- a/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml @@ -10,7 +10,7 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases @@ -95,7 +95,7 @@ stimuli: scoring: scale_1_5 threshold: 1.0 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m + model: claude-opus-4.6 scoring: weights: tool-calls: 1 diff --git a/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml index 676510fcd1c..0488a8784af 100644 --- a/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml @@ -10,7 +10,7 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases @@ -40,29 +40,13 @@ stimuli: config: required: - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: '*.tsp' - pattern: TopQueryParameter - - type: file-matches - config: - path: '*.tsp' - pattern: SkipQueryParameter - - type: file-matches - config: - path: '*.tsp' - pattern: listBySubscription - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m + pattern: 'listBySubscription\s+is\s+ArmListBySubscription\s*<\s*Employee\s*,\s*\{\s*\.\.\.TopQueryParameter;\s*\.\.\.SkipQueryParameter;\s*\}\s*>|listBySubscription\s+is\s+ArmListBySubscription\s*<\s*Employee\s*,\s*Parameters\s*=\s*ArmTopParameter\s*&\s*ArmSkipParameter\s*>|model\s+EmployeeListBySubscriptionParameters\s+is\s+Azure\.Core\.StandardListQueryParameters\s*;[\s\S]*?listBySubscription\s+is\s+ArmListBySubscription\s*<\s*Employee\s*,\s*EmployeeListBySubscriptionParameters\s*>' scoring: weights: tool-calls: 1 - prompt: 1 - file-matches: 3 + file-matches: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml index 32bfd276c21..df72ad19dc3 100644 --- a/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml @@ -10,7 +10,7 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases @@ -45,13 +45,13 @@ stimuli: - type: file-matches config: path: employee.tsp - pattern: 'update is ArmCustomPatchSync>;' + pattern: 'update\s+is\s+ArmCustomPatchSync\s*<\s*Employee\s*,\s*Azure\.ResourceManager\.Foundations\.ResourceUpdateModel\s*<\s*Employee\s*,\s*EmployeeProperties\s*>\s*>\s*;' - type: prompt config: scoring: scale_1_5 threshold: 1.0 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m + model: claude-opus-4.6 scoring: weights: tool-calls: 1 diff --git a/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml index 03e5b2531c6..b731c350fe8 100644 --- a/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml @@ -10,7 +10,7 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases @@ -51,7 +51,7 @@ stimuli: scoring: scale_1_5 threshold: 1.0 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m + model: claude-opus-4.6 scoring: weights: tool-calls: 1 diff --git a/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml index b517e8b048a..571bc42f421 100644 --- a/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml @@ -10,24 +10,30 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases stimuli: - prompt: | - Add an async delete operation for StacItems - name: 003001-dataplane-async-delete-op + Add a move async operation to move employee, operation's request is MoveRequest, response is MoveResponse + name: 003001-arm-action-lro constraints: max_turns: 10 max_tokens: 5000 environment: files: - - src: ../fixtures/003001-dataplane-async-delete-op/inma.tsp - dest: inma.tsp - - src: ../fixtures/003001-dataplane-async-delete-op/package.json + - src: ../fixtures/003-long-running-operation-share/employee.tsp + dest: employee.tsp + - src: ../fixtures/003-long-running-operation-share/main.tsp + dest: main.tsp + - src: ../fixtures/003-long-running-operation-share/package.json dest: package.json - - src: ../fixtures/003001-dataplane-async-delete-op/tspconfig.yaml + - src: ../fixtures/003-long-running-operation-share/readme.md + dest: readme.md + - src: ../fixtures/003-long-running-operation-share/shared.tsp + dest: shared.tsp + - src: ../fixtures/003-long-running-operation-share/tspconfig.yaml dest: tspconfig.yaml graders: - type: tool-calls @@ -36,34 +42,20 @@ stimuli: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - # VP1: Async delete added to StacItems namespace + # VP1: Accept either inline ArmCombinedLroHeaders or alias-based EmployeeMoveLroHeaders usage. - type: file-matches config: - path: inma.tsp - pattern: 'interface StacItems' - - type: file-matches - config: - path: inma.tsp - pattern: 'LongRunningResourceDelete' - # VP2: Uses StandardResourceOperations alias - - type: file-matches - config: - path: inma.tsp - pattern: 'alias StandardResourceOperations|StandardResourceOperations\.LongRunningResourceDelete' - # VP3: Linked to existing polling operation - - type: file-matches - config: - path: inma.tsp - pattern: '@pollingOperation\(IngestionOperations\.get\)' + path: employee.tsp + pattern: 'move\s+is\s+ArmResourceActionAsync\s*<\s*Employee\s*,\s*MoveRequest\s*,\s*MoveResponse\s*,\s*LroHeaders\s*=\s*(ArmCombinedLroHeaders\s*<\s*FinalResult\s*=\s*MoveResponse\s*>|EmployeeMoveLroHeaders)\s*>' - type: prompt config: scoring: scale_1_5 threshold: 1.0 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m + model: claude-opus-4.6 scoring: weights: tool-calls: 1 prompt: 1 - file-matches: 4 + file-matches: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml index a781d3caf03..bae83471b1c 100644 --- a/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml @@ -10,14 +10,14 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases stimuli: - prompt: | - Add a move async operation to move employee, operation's request is MoveRequest, response is MoveResponse - name: 003002-arm-action-lro + Modify the LRO createOrUpdate PUT operation in interface Employees so that it returns Azure-AsyncOperation header but NOT Retry-After header in the 201 response. The operation currently uses ArmResourceCreateOrReplaceAsync template. + name: 003002-arm-modify-response constraints: max_turns: 10 max_tokens: 5000 @@ -42,17 +42,35 @@ stimuli: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - # VP1: Async move action with MoveRequest/MoveResponse and LRO headers (handles both single-line and multi-line formats) + # VP1: ArmAsyncOperationHeader with FinalResult = Employee (alias or inline) - type: file-matches config: path: employee.tsp - pattern: 'move\s+is\s+ArmResourceActionAsync\s*<\s*Employee\s*,\s*MoveRequest\s*,\s*MoveResponse\s*,\s*LroHeaders\s*=\s*ArmCombinedLroHeaders\s*<\s*FinalResult\s*=\s*MoveResponse\s*>\s*>' + pattern: 'ArmAsyncOperationHeader' + # VP2: createOrUpdate uses ArmResourceCreateOrReplaceAsync with custom LroHeaders + - type: file-matches + config: + path: employee.tsp + pattern: 'createOrUpdate is ArmResourceCreateOrReplaceAsync<' + - type: file-matches + config: + path: employee.tsp + pattern: 'LroHeaders\s*=' + # VP3: Other operations unchanged + - type: file-matches + config: + path: employee.tsp + pattern: 'update is ArmResourcePatchSync' - type: prompt config: scoring: scale_1_5 threshold: 1.0 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m + model: claude-opus-4.6 scoring: weights: tool-calls: 1 diff --git a/.github/azure-typespec-author/evaluate/evals/003003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/003003.eval.yaml deleted file mode 100644 index e8e4b7b96e7..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/003003.eval.yaml +++ /dev/null @@ -1,79 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - Modify the LRO createOrUpdate PUT operation in interface Employees so that it returns Azure-AsyncOperation header but NOT Retry-After header in the 201 response. The operation currently uses ArmResourceCreateOrReplaceAsync template. - name: 003003-arm-modify-response - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - # VP1: ArmAsyncOperationHeader with FinalResult = Employee (alias or inline) - - type: file-matches - config: - path: employee.tsp - pattern: 'ArmAsyncOperationHeader' - # VP2: createOrUpdate uses ArmResourceCreateOrReplaceAsync with custom LroHeaders - - type: file-matches - config: - path: employee.tsp - pattern: 'createOrUpdate is ArmResourceCreateOrReplaceAsync<' - - type: file-matches - config: - path: employee.tsp - pattern: 'LroHeaders\s*=' - # VP3: Other operations unchanged - - type: file-matches - config: - path: employee.tsp - pattern: 'update is ArmResourcePatchSync' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m -scoring: - weights: - tool-calls: 1 - prompt: 1 - file-matches: 5 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml index 9db48937fb3..5638355c628 100644 --- a/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml @@ -10,13 +10,13 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases stimuli: - prompt: | - add minLength decorator to set the minLength 1 for resource name parameter of Employee resource + use authoring plan to add minLength decorator to set the minLength 1 for resource name parameter of Employee resource name: 004001-decorate-mgmt-resource-name-parameter constraints: max_turns: 10 @@ -55,7 +55,7 @@ stimuli: scoring: scale_1_5 threshold: 1.0 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m + model: claude-opus-4.6 scoring: weights: tool-calls: 1 diff --git a/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml index 23032711333..e57e0834546 100644 --- a/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml @@ -10,7 +10,7 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases @@ -60,19 +60,15 @@ stimuli: config: path: employee.tsp pattern: 'assets:\s*string\[\]' - - type: file-matches - config: - path: employee.tsp - pattern: 'assets:.*\[\]' - type: prompt config: scoring: scale_1_5 threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m + prompt: 'Verify asset use the custom scalar type with minLength and maxLength constraints instead of plain string.' + model: claude-opus-4.6 scoring: weights: tool-calls: 1 prompt: 1 - file-matches: 5 + file-matches: 4 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml index 19085296d71..ac6920a373d 100644 --- a/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml @@ -10,7 +10,7 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases @@ -52,7 +52,6 @@ stimuli: config: required: - edit - - azure-sdk-mcp-azsdk_run_typespec_validation # VP1: Underscore operationIds should be removed (e.g. BgpConnection has only underscore ones) - type: file-not-matches config: @@ -85,16 +84,9 @@ stimuli: config: path: ExpressRouteProviderPort.tsp pattern: '@operationId\("ExpressRouteProviderPortsLocation_List"\)' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m scoring: weights: tool-calls: 1 - prompt: 1 file-not-matches: 3 file-matches: 4 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml index c2df058f78c..7018d3ac511 100644 --- a/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml @@ -10,7 +10,7 @@ environment: azsdk-mcp config: runs: 1 # Trials per stimulus timeout: 1800 # Seconds per trial - model: claude-opus-4.6-1m #gpt-4o #claude-sonnet-4.6 # Model for agent execution + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use # Test cases @@ -47,15 +47,8 @@ stimuli: config: path: models.tsp pattern: 'FIXME: Update justification, follow aka\.ms/tsp/conversion-fix for details' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m scoring: weights: tool-calls: 1 - prompt: 1 file-matches: 2 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/all.eval.yaml b/.github/azure-typespec-author/evaluate/evals/all.eval.yaml index fdc39b4c30f..a5e45ab450a 100644 --- a/.github/azure-typespec-author/evaluate/evals/all.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/all.eval.yaml @@ -1,5 +1,9 @@ +# Evaluate configuration for Azure SDK Typespec Author MCP tool evaluations +# See: https://literate-engine-r3wnl4v.pages.github.io/reference/eval-spec/ +# Keep this combined file synchronized with evals/*.eval.yaml single-case specs. +# Preserve ordering for readability: stimulus uses name first; grader uses type before config. name: azure-typespec-author-eval -description: Combined evaluation suite for azure-typespec-author (all 30 cases). +description: Combined evaluation suite for azure-typespec-author (all 29 cases). version: "1.0" type: capability @@ -10,13 +14,15 @@ environment: azsdk-mcp config: runs: 1 timeout: 1800 - model: claude-opus-4.6-1m + model: claude-opus-4.6 executor: copilot-sdk - -# Test cases +# Cases are intentionally sorted by case id. stimuli: - name: 001001-version-spread-property - prompt: I added `...Azure.ResourceManager.ManagedServiceIdentityProperty;` which updates all my existing API versions and introduces a breaking change. I want to introduce the properties of the spread model '...ManagedServiceIdentityProperty' in API version 2025-05-04-preview only. + prompt: I added `...Azure.ResourceManager.ManagedServiceIdentityProperty;` which updates all my existing API versions and introduces a breaking change. I want to introduce the properties of the spread model '...ManagedServiceIdentityProperty' in API version 2025-05-04-preview only. + constraints: + max_turns: 10 + max_tokens: 50000 environment: files: - src: ../fixtures/001-share-version-new-feature/employee.tsp @@ -35,9 +41,9 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: main.tsp @@ -45,30 +51,20 @@ stimuli: - type: file-matches config: path: employee.tsp - pattern: "\\.\\.\\.ManagedServiceIdentityProperty;" + pattern: '\.\.\.ManagedServiceIdentityProperty;' - type: file-matches config: path: employee.tsp - pattern: "@@added\\(Employee\\.identity, (Microsoft\\.Widget\\.)?Versions\\.(v2025_05_04_preview|`2025-05-04-preview`)\\);" + pattern: '@@added\(Employee\.identity, (Microsoft\.Widget\.)?Versions\.(v2025_05_04_preview|`2025-05-04-preview`)\);' - type: prompt config: prompt: Verify changes are scoped to this task only, with no unrelated edits beyond introducing preview-only identity via versioning. - model: claude-opus-4.6-1m + model: claude-opus-4.6 scoring: scale_1_5 - threshold: 1.0 - constraints: - max_turns: 10 - max_tokens: 50000 - scoring: - weights: - file-matches: 3 - tool-calls: 1 - prompt: 1 - threshold: 1.0 - + threshold: 1 - name: 001002-version-default-value prompt: | - add a default value `21` for property age in model EmployeeProperties from a new api version 2025-11-01 + add a default value `21` for property age in model EmployeeProperties only for a new api version 2025-11-01 constraints: max_turns: 10 max_tokens: 5000 @@ -90,9 +86,9 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: employee.tsp @@ -112,19 +108,12 @@ stimuli: - type: prompt config: scoring: scale_1_5 - threshold: 1.0 + threshold: 1 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - tool-calls: 1 - prompt: 1 - file-matches: 4 - threshold: 1.0 - -- prompt: | + model: claude-opus-4.6 +- name: 001003-version-required-to-optional + prompt: | change the property age of EmployeeProperties from required to optional for api version 2025-05-04-preview - name: 001003-version-required-to-optional constraints: max_turns: 10 max_tokens: 5000 @@ -132,23 +121,23 @@ stimuli: files: - src: ../fixtures/001-share-version-new-feature/employee.tsp dest: employee.tsp - - src: ../fixtures/001-share-version-new-feature/Widget/main.tsp + - src: ../fixtures/001-share-version-new-feature/main.tsp dest: main.tsp - - src: ../fixtures/001-share-version-new-feature/Widget/package.json + - src: ../fixtures/001-share-version-new-feature/package.json dest: package.json - - src: ../fixtures/001-share-version-new-feature/Widget/readme.md + - src: ../fixtures/001-share-version-new-feature/readme.md dest: readme.md - - src: ../fixtures/001-share-version-new-feature/Widget/shared.tsp + - src: ../fixtures/001-share-version-new-feature/shared.tsp dest: shared.tsp - - src: ../fixtures/001-share-version-new-feature/Widget/tspconfig.yaml + - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml dest: tspconfig.yaml graders: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: main.tsp @@ -164,19 +153,12 @@ stimuli: - type: prompt config: scoring: scale_1_5 - threshold: 1.0 + threshold: 1 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - prompt: 1 - file-matches: 2 - tool-calls: 1 - threshold: 1.0 - -- prompt: | + model: claude-opus-4.6 +- name: 001004-version-property-decorator + prompt: | change the visibility of property 'provisioningState' from Lifecycle.Read to Lifecycle.Read and Lifecycle.Create in version 2025-05-04-preview only - name: 001004-version-property-decorator constraints: max_turns: 10 max_tokens: 5000 @@ -198,9 +180,9 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: employee.tsp @@ -212,19 +194,12 @@ stimuli: - type: prompt config: scoring: scale_1_5 - threshold: 1.0 + threshold: 1 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - prompt: 1 - file-matches: 2 - tool-calls: 1 - threshold: 1.0 - -- prompt: | + model: claude-opus-4.6 +- name: 001005-version-add-preview-after-preview + prompt: | Add a new preview version `2025-05-04-preview` to my service widget resource manager. Exclude Feature: `age` property with default value 21. Carry other features. - name: 001005-version-add-preview-after-preview constraints: max_turns: 10 max_tokens: 5000 @@ -280,8 +255,8 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-exists config: path: examples/2025-05-04-preview/Employees_Get_MaximumSet_Gen.json @@ -303,22 +278,12 @@ stimuli: - type: prompt config: scoring: scale_1_5 - threshold: 1.0 - prompt: 'Evaluate the following change: the excluded feature is the default value 21 on age, The oldAge property should be deleted entirely along with its @removed decorator". The @renamedFrom decorator should be removed along with the oldAge property itself. The workLocation property should have its versioning decorator updated to reference `2025-05-04-preview`.' - model: claude-opus-4.6-1m - scoring: - weights: - prompt: 1 - file-matches: 1 - file-not-matches: 2 - file-exists: 1 - file-not-exists: 1 - tool-calls: 1 - threshold: 1.0 - -- prompt: | + threshold: 1 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6 +- name: 001006-version-add-preview-after-stable + prompt: | Add a new preview version `2025-05-04-preview` to my service widget resource manager. Carry over all the features from the latest stable version - name: 001006-version-add-preview-after-stable constraints: max_turns: 10 max_tokens: 5000 @@ -374,8 +339,8 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-exists config: path: examples/2025-05-04-preview/Employees_Get_MaximumSet_Gen.json @@ -393,20 +358,12 @@ stimuli: - type: prompt config: scoring: scale_1_5 - threshold: 1.0 + threshold: 1 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - file-exists: 2 - prompt: 1 - file-matches: 2 - tool-calls: 1 - threshold: 1.0 - -- prompt: | + model: claude-opus-4.6 +- name: 001007-version-add-stable-after-preview + prompt: | I want to add a new stable version `2025-01-01`. Exclude `workLocation` property and `WorkLocation` model. Carry other features. - name: 001007-version-add-stable-after-preview constraints: max_turns: 10 max_tokens: 5000 @@ -468,8 +425,8 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-exists config: path: examples/2025-01-01/Employees_Get_MaximumSet_Gen.json @@ -499,22 +456,12 @@ stimuli: - type: prompt config: scoring: scale_1_5 - threshold: 1.0 + threshold: 1 prompt: 'Evaluate only the semantic interpretation of the request: the excluded features are workLocation property and WorkLocation model, while other features should be carried. Double check the plan has correctly implemented version renaming (2024-10-01-preview → 2025-01-01), old version removal, new version example setup and old version example removal.' - model: claude-opus-4.6-1m - scoring: - weights: - prompt: 1 - file-matches: 2 - file-not-matches: 3 - file-exists: 1 - file-not-exists: 1 - tool-calls: 1 - threshold: 1.0 - -- prompt: | + model: claude-opus-4.6 +- name: 001008-version-add-stable-after-stable + prompt: | Add a new stable version `2025-01-01` to my service. Carry over changes. - name: 001008-version-add-stable-after-stable constraints: max_turns: 10 max_tokens: 5000 @@ -576,8 +523,8 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-exists config: path: examples/2024-10-01/Employees_Get_MaximumSet_Gen.json @@ -599,20 +546,12 @@ stimuli: - type: prompt config: scoring: scale_1_5 - threshold: 1.0 + threshold: 1 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - file-exists: 2 - prompt: 1 - file-matches: 3 - tool-calls: 1 - threshold: 1.0 - -- prompt: | + model: claude-opus-4.6 +- name: 001009-version-model-property-required + prompt: | In the Widget project, make the `email` property required in EmployeeProperties only for version `2025-05-04-preview`. - name: 001009-version-model-property-required constraints: max_turns: 10 max_tokens: 5000 @@ -634,9 +573,8 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: Microsoft.Widget/Widget/main.tsp @@ -652,19 +590,12 @@ stimuli: - type: prompt config: scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify: (1) new version 2025-05-04-preview added, (2) old preview version 2024-10-01-preview removed from enum, (3) email property made required only in new version, (4) only scoped edits made.' - model: claude-opus-4.6-1m - scoring: - weights: - prompt: 1 - file-matches: 3 - tool-calls: 1 - threshold: 1.0 - -- prompt: | + threshold: 1 + prompt: Verify email property made required only in new version, only scoped edits made. Verify compile the project and fix any compilation errors if present. + model: claude-opus-4.6 +- name: 001010-version-model-property-removed + prompt: | In the Widget project, remove the `department` property from EmployeeProperties only for version `2025-05-04-preview`. - name: 001010-version-model-property-removed constraints: max_turns: 10 max_tokens: 5000 @@ -686,9 +617,8 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: Microsoft.Widget/Widget/main.tsp @@ -701,22 +631,9 @@ stimuli: config: path: Microsoft.Widget/Widget/employee.tsp pattern: 'department\?: string;' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - prompt: 1 - tool-calls: 1 - file-matches: 3 - threshold: 1.0 - -- prompt: | +- name: 001011-version-model-property-renamed + prompt: | In the Widget project, rename the `age` property to `employeeAge` in EmployeeProperties only for version `2025-05-04-preview`. - name: 001011-version-model-property-renamed constraints: max_turns: 10 max_tokens: 5000 @@ -738,9 +655,9 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: Microsoft.Widget/Widget/main.tsp @@ -753,22 +670,9 @@ stimuli: config: path: Microsoft.Widget/Widget/employee.tsp pattern: 'employeeAge\?: int32;' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - prompt: 1 - file-matches: 3 - tool-calls: 1 - threshold: 1.0 - -- prompt: | - In the Widget project, change the return type of the `exportData` operation from `ExportResult` to `DetailedExportResult` with additional properties `format` (string) and `exportedAt` (utcDateTime) only for version `2025-05-04-preview`. - name: 001012-version-operation-return-type-changed +- name: 001012-version-operation-return-type-changed + prompt: | + In the Widget project, change the return type of the `exportData` operation from `ExportResult` to `DetailedExportResult` with additional optional properties `format` (string) and `exportedAt` (utcDateTime) only for version `2025-05-04-preview`. constraints: max_turns: 10 max_tokens: 5000 @@ -790,9 +694,9 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: Microsoft.Widget/Widget/main.tsp @@ -800,7 +704,7 @@ stimuli: - type: file-matches config: path: Microsoft.Widget/Widget/employee.tsp - pattern: 'model DetailedExportResult' + pattern: model DetailedExportResult - type: file-matches config: path: Microsoft.Widget/Widget/employee.tsp @@ -816,23 +720,10 @@ stimuli: - type: file-matches config: path: Microsoft.Widget/Widget/employee.tsp - pattern: 'exportData is ArmResourceActionSync;' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - prompt: 1 - file-matches: 6 - tool-calls: 1 - threshold: 1.0 - -- prompt: | + pattern: exportData is ArmResourceActionSync; +- name: 001013-version-model-property-type-changed + prompt: | In the Widget project, change the type of the `statusCode` property from `string` to `int32` in EmployeeProperties only for version `2025-05-04-preview`. - name: 001013-version-model-property-type-changed constraints: max_turns: 10 max_tokens: 5000 @@ -854,9 +745,9 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: Microsoft.Widget/Widget/main.tsp @@ -872,19 +763,12 @@ stimuli: - type: prompt config: scoring: scale_1_5 - threshold: 1.0 + threshold: 1 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - prompt: 1 - file-matches: 3 - tool-calls: 1 - threshold: 1.0 - -- prompt: | + model: claude-opus-4.6 +- name: 002001-ARM-change-resource-type + prompt: | change resource Employee to be an extension resource - name: 002001-ARM-change-resource-type constraints: max_turns: 10 max_tokens: 5000 @@ -906,9 +790,9 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: '*.tsp' @@ -924,44 +808,36 @@ stimuli: - type: prompt config: scoring: scale_1_5 - threshold: 1.0 - prompt: 'The original separate list-by-resource-group and list-by-subscription operations should be consolidated into a single list operation using the extension list template. A scope-parameterized interface should be defined to allow the extension resource to be scoped to any parent resource.' - model: claude-opus-4.6-1m - scoring: - weights: - tool-calls: 1 - prompt: 1 - file-not-matches: 1 - file-matches: 2 - threshold: 1.0 - -- prompt: | + threshold: 1 + prompt: The original separate list-by-resource-group and list-by-subscription operations should be consolidated into a single list operation using the extension list template. A scope-parameterized interface should be defined to allow the extension resource to be scoped to any parent resource. + model: claude-opus-4.6 +- name: 002002-ARM-define-extension-resource + prompt: | add an extension resource named asset - name: 002002-ARM-define-extension-resource constraints: max_turns: 10 max_tokens: 5000 environment: files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml graders: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: '*.tsp' @@ -974,22 +850,9 @@ stimuli: config: path: '*.tsp' pattern: provisioningState - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - tool-calls: 1 - prompt: 1 - file-matches: 3 - threshold: 1.0 - -- prompt: | +- name: 002003-ARM-define-full-update-operation + prompt: | Define a PATCH operation for Employees. It is to update properties of an employee. Ensure the definition meets TypeSpec Azure guidelines. - name: 002003-ARM-define-full-update-operation constraints: max_turns: 10 max_tokens: 5000 @@ -1011,34 +874,16 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: '*.tsp' - pattern: ArmCustomPatchAsync< - - type: file-not-matches - config: - path: '*.tsp' - pattern: ArmResourcePatchAsync< - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - tool-calls: 1 - prompt: 1 - file-not-matches: 1 - file-matches: 1 - threshold: 1.0 - -- prompt: | + pattern: update\s+is\s+ArmCustomPatchSync\s*<\s*Employee\s*,\s*Azure\.ResourceManager\.Foundations\.ResourceUpdateModel\s*<\s*Employee\s*,\s*EmployeeProperties\s*>\s*>\s*; +- name: 002004-ARM-define-extension-resource + prompt: | Define a "badge assignment" extension resource. It should be an extension resource that can be attached to an employee. Ensure the definition meets TypeSpec Azure guidelines. - name: 002004-ARM-define-extension-resource constraints: max_turns: 10 max_tokens: 5000 @@ -1062,9 +907,9 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: badgeAssignment.tsp @@ -1084,19 +929,12 @@ stimuli: - type: prompt config: scoring: scale_1_5 - threshold: 1.0 + threshold: 1 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - tool-calls: 1 - prompt: 1 - file-matches: 4 - threshold: 1.0 - -- prompt: | - Define a Azure resource "Employee" under the namespace "Microsoft.Widget" using TypeSpec. Properties: age (int32, optional), city (string, optional), profile (bytes, optional), provisioningState (enum, optional, read-only). Ensure the definition meets TypeSpec Azure design guidelines. - name: 002005-ARM-define-the-resource + model: claude-opus-4.6 +- name: 002005-ARM-define-the-resource + prompt: | + Define a Azure resource "Employee" under the namespace "Microsoft.Widget" using TypeSpec. Properties: age (int32, optional), city (string, optional), profile (bytes, optional), provisioningState (enum incorporating ResourceProvisioningState, optional, read-only). Ensure the definition meets TypeSpec Azure design guidelines. constraints: max_turns: 10 max_tokens: 5000 @@ -1116,80 +954,70 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: - path: employee.tsp + path: '*.tsp' pattern: model Employee is TrackedResource - # Point 3: EmployeeProperties has age, city, profile, and read-only provisioningState - type: file-matches config: - path: 'employee.tsp' + path: '*.tsp' pattern: 'age\?: int32' - type: file-matches config: - path: 'employee.tsp' + path: '*.tsp' pattern: '@visibility\(Lifecycle\.Read\)' - # Point 4: ProvisioningState union includes standard ARM states - type: file-matches config: - path: 'employee.tsp' + path: '*.tsp' pattern: ResourceProvisioningState - # Point 5: CRUD + listByResourceGroup + listBySubscription - type: file-matches config: - path: employee.tsp + path: '*.tsp' pattern: ArmResourceCreateOrReplaceAsync|ArmResourceCreateOrUpdateAsync - type: file-matches config: - path: employee.tsp + path: '*.tsp' pattern: ArmResourceListByParent - type: file-matches config: - path: employee.tsp + path: '*.tsp' pattern: ArmListBySubscription - type: prompt config: scoring: scale_1_5 - threshold: 1.0 + threshold: 1 prompt: 'Verify all five aspects: (1) Employee resource definition is written into a TSP file; (2) Employee model uses TrackedResource under Microsoft.Widget namespace; (3) EmployeeProperties includes age, city, profile, and a read-only provisioningState; (4) ProvisioningState is a union type incorporating standard ARM ResourceProvisioningState; (5) Employees interface includes full CRUD operations (get, create, update, delete) plus listByResourceGroup and listBySubscription.' - model: claude-opus-4.6-1m - scoring: - weights: - tool-calls: 1 - prompt: 1 - file-matches: 7 - threshold: 1.0 - -- prompt: | - Create a new "AddressResource" child resource under the parent resource "Employee". AddressResource properties:street address fields, city, state, postal code, country, and a read-only provisioningState. Ensure the definition meets TypeSpec Azure design guidelines. - name: 002006-ARM-define-child-resource + model: claude-opus-4.6 +- name: 002006-ARM-define-child-resource + prompt: | + Create a new "AddressResource" child resource under the parent resource "Employee". Address properties: street 1(optional), street 2(optional), city(optional), state(optional), postal code(optional), country(optional), and a read-only provisioningState(optional). Ensure the definition meets TypeSpec Azure design guidelines. constraints: max_turns: 10 max_tokens: 5000 environment: files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml graders: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: '*.tsp' @@ -1197,7 +1025,7 @@ stimuli: - type: file-matches config: path: '*.tsp' - pattern: 'model AddressResource is ProxyResource' + pattern: model AddressResource is ProxyResource|model AddressResource is ProxyResource - type: file-matches config: path: '*.tsp' @@ -1205,7 +1033,7 @@ stimuli: - type: file-matches config: path: '*.tsp' - pattern: 'model AddressProperties' + pattern: model AddressProperties|model AddressResourceProperties - type: file-matches config: path: '*.tsp' @@ -1238,7 +1066,6 @@ stimuli: config: path: '*.tsp' pattern: 'provisioningState\?: ProvisioningState;' - # Addresses interface CRUD + list-by-parent - type: file-matches config: path: '*.tsp' @@ -1258,159 +1085,119 @@ stimuli: - type: prompt config: scoring: scale_1_5 - threshold: 1.0 - prompt: 'The Addresses interface should include standard CRUD operations (get, create, update, delete) and a list-by-parent operation.' - model: claude-opus-4.6-1m - scoring: - weights: - tool-calls: 1 - prompt: 1 - file-matches: 16 - threshold: 1.0 - -- prompt: | + threshold: 1 + prompt: The Addresses interface should include standard CRUD operations (get, create, update, delete) and a list-by-parent operation. + model: claude-opus-4.6 +- name: 002007-ARM-define-custom-action + prompt: | Add an additional POST action called "/notify" to the standard operations of Employee. Request body: message content (string) and priority (enum with values Low, Medium, High). Response body: notification identifier (string) and status (string). Ensure the definition meets TypeSpec Azure design guidelines. - name: 002007-ARM-define-custom-action constraints: max_turns: 10 max_tokens: 5000 environment: files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml graders: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - # VP1: Extensible enum for notification priority levels (Low, Medium, High) + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: - path: 'employee.tsp' + path: employee.tsp pattern: union.*Priority|enum.*Priority - type: file-matches config: - path: 'employee.tsp' - pattern: 'Low|"Low"' + path: employee.tsp + pattern: Low|"Low" - type: file-matches config: - path: 'employee.tsp' - pattern: 'Medium|"Medium"' + path: employee.tsp + pattern: Medium|"Medium" - type: file-matches config: - path: 'employee.tsp' - pattern: 'High|"High"' - # VP2: Request model with message content (string) and priority fields + path: employee.tsp + pattern: High|"High" - type: file-matches config: - path: 'employee.tsp' + path: employee.tsp pattern: model.*Notify.*Request|model.*Notification.*Request - type: file-matches config: - path: 'employee.tsp' - pattern: 'message.*:\s*string|content.*:\s*string' + path: employee.tsp + pattern: message.*:\s*string|content.*:\s*string - type: file-matches config: - path: 'employee.tsp' - pattern: 'priority.*:\s*.*Priority' - # VP3: Response model with notification identifier (string) and status (string) + path: employee.tsp + pattern: priority.*:\s*.*Priority - type: file-matches config: - path: 'employee.tsp' + path: employee.tsp pattern: model.*Notify.*Response|model.*Notification.*Response - type: file-matches config: - path: 'employee.tsp' - pattern: 'notificationId.*:\s*string|identifier.*:\s*string' + path: employee.tsp + pattern: notificationId.*:\s*string|identifier.*:\s*string - type: file-matches config: - path: 'employee.tsp' - pattern: 'status.*:\s*string' - # VP4: Synchronous notify action on Employees interface + path: employee.tsp + pattern: status.*:\s*string - type: file-matches config: - path: 'employee.tsp' - pattern: 'notify is ArmResourceActionSync<|notify is ArmResourceActionAsync<|notify is ArmResourceAction<' + path: employee.tsp + pattern: notify is ArmResourceActionSync<|notify is ArmResourceActionAsync<|notify is ArmResourceAction< - type: prompt config: scoring: scale_1_5 - threshold: 1.0 + threshold: 1 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - tool-calls: 1 - prompt: 1 - file-matches: 11 - threshold: 1.0 - -- prompt: | + model: claude-opus-4.6 +- name: 002008-ARM-add-parameters + prompt: | add top and skip query parameters to the ListBySubscription operation in interface Employees - name: 002008-ARM-add-parameters constraints: max_turns: 10 max_tokens: 5000 environment: files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml + - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + dest: employee.tsp + - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + dest: main.tsp + - src: ../fixtures/Microsoft.Widget/Widget/package.json + dest: package.json + - src: ../fixtures/Microsoft.Widget/Widget/readme.md + dest: readme.md + - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + dest: shared.tsp + - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + dest: tspconfig.yaml graders: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: '*.tsp' - pattern: TopQueryParameter + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: '*.tsp' - pattern: SkipQueryParameter - - type: file-matches - config: - path: '*.tsp' - pattern: listBySubscription - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - tool-calls: 1 - prompt: 1 - file-matches: 3 - threshold: 1.0 - -- prompt: | + pattern: listBySubscription\s+is\s+ArmListBySubscription\s*<\s*Employee\s*,\s*\{\s*\.\.\.TopQueryParameter;\s*\.\.\.SkipQueryParameter;\s*\}\s*>|listBySubscription\s+is\s+ArmListBySubscription\s*<\s*Employee\s*,\s*Parameters\s*=\s*ArmTopParameter\s*&\s*ArmSkipParameter\s*>|model\s+EmployeeListBySubscriptionParameters\s+is\s+Azure\.Core\.StandardListQueryParameters\s*;[\s\S]*?listBySubscription\s+is\s+ArmListBySubscription\s*<\s*Employee\s*,\s*EmployeeListBySubscriptionParameters\s*> +- name: 002009-arm-add-patch-operation-to-resource + prompt: | In the Widget project, add a patch operation to an existing ARM resource named 'Employee' - name: 002009-arm-add-patch-operation-to-resource constraints: max_turns: 10 max_tokens: 5000 @@ -1432,29 +1219,22 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: employee.tsp - pattern: 'update is ArmCustomPatchSync>;' + pattern: update\s+is\s+ArmCustomPatchSync\s*<\s*Employee\s*,\s*Azure\.ResourceManager\.Foundations\.ResourceUpdateModel\s*<\s*Employee\s*,\s*EmployeeProperties\s*>\s*>\s*; - type: prompt config: scoring: scale_1_5 - threshold: 1.0 + threshold: 1 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - tool-calls: 1 - prompt: 1 - file-matches: 1 - threshold: 1.0 - -- prompt: | + model: claude-opus-4.6 +- name: 002010-arm-action-sync-operation + prompt: | In the Widget project, add a sync operation exportData for employee resource. - name: 002010-arm-action-sync-operation constraints: max_turns: 10 max_tokens: 5000 @@ -1476,127 +1256,59 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: employee.tsp - pattern: 'exportData is ArmResourceActionSync;' + pattern: exportData is ArmResourceActionSync; - type: prompt config: scoring: scale_1_5 - threshold: 1.0 + threshold: 1 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - tool-calls: 1 - prompt: 1 - file-matches: 1 - threshold: 1.0 - -- prompt: | - Add an async delete operation for StacItems - name: 003001-dataplane-async-delete-op - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/003001-dataplane-async-delete-op/inma.tsp - dest: inma.tsp - - src: ../fixtures/003001-dataplane-async-delete-op/package.json - dest: package.json - - src: ../fixtures/003001-dataplane-async-delete-op/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - # VP1: Async delete added to StacItems namespace - - type: file-matches - config: - path: inma.tsp - pattern: 'interface StacItems' - - type: file-matches - config: - path: inma.tsp - pattern: 'LongRunningResourceDelete' - # VP2: Uses StandardResourceOperations alias - - type: file-matches - config: - path: inma.tsp - pattern: 'alias StandardResourceOperations|StandardResourceOperations\.LongRunningResourceDelete' - # VP3: Linked to existing polling operation - - type: file-matches - config: - path: inma.tsp - pattern: '@pollingOperation\(IngestionOperations\.get\)' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - tool-calls: 1 - prompt: 1 - file-matches: 4 - threshold: 1.0 - -- prompt: | + model: claude-opus-4.6 +- name: 003001-arm-action-lro + prompt: | Add a move async operation to move employee, operation's request is MoveRequest, response is MoveResponse - name: 003002-arm-action-lro constraints: max_turns: 10 max_tokens: 5000 environment: files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + - src: ../fixtures/003-long-running-operation-share/employee.tsp dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + - src: ../fixtures/003-long-running-operation-share/main.tsp dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json + - src: ../fixtures/003-long-running-operation-share/package.json dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md + - src: ../fixtures/003-long-running-operation-share/readme.md dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + - src: ../fixtures/003-long-running-operation-share/shared.tsp dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + - src: ../fixtures/003-long-running-operation-share/tspconfig.yaml dest: tspconfig.yaml graders: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - # VP1: Async move action with MoveRequest/MoveResponse and LRO headers (handles both single-line and multi-line formats) + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: employee.tsp - pattern: 'move\s+is\s+ArmResourceActionAsync\s*<\s*Employee\s*,\s*MoveRequest\s*,\s*MoveResponse\s*,\s*LroHeaders\s*=\s*ArmCombinedLroHeaders\s*<\s*FinalResult\s*=\s*MoveResponse\s*>\s*>' + pattern: move\s+is\s+ArmResourceActionAsync\s*<\s*Employee\s*,\s*MoveRequest\s*,\s*MoveResponse\s*,\s*LroHeaders\s*=\s*(ArmCombinedLroHeaders\s*<\s*FinalResult\s*=\s*MoveResponse\s*>|EmployeeMoveLroHeaders)\s*> - type: prompt config: scoring: scale_1_5 - threshold: 1.0 + threshold: 1 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - tool-calls: 1 - prompt: 1 - file-matches: 5 - threshold: 1.0 - -- prompt: | + model: claude-opus-4.6 +- name: 003002-arm-modify-response + prompt: | Modify the LRO createOrUpdate PUT operation in interface Employees so that it returns Azure-AsyncOperation header but NOT Retry-After header in the 201 response. The operation currently uses ArmResourceCreateOrReplaceAsync template. - name: 003003-arm-modify-response constraints: max_turns: 10 max_tokens: 5000 @@ -1618,48 +1330,38 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - # VP1: ArmAsyncOperationHeader with FinalResult = Employee (alias or inline) + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: employee.tsp - pattern: 'ArmAsyncOperationHeader' - # VP2: createOrUpdate uses ArmResourceCreateOrReplaceAsync with custom LroHeaders + pattern: ArmAsyncOperationHeader - type: file-matches config: path: employee.tsp - pattern: 'createOrUpdate is ArmResourceCreateOrReplaceAsync<' + pattern: createOrUpdate is ArmResourceCreateOrReplaceAsync< - type: file-matches config: path: employee.tsp - pattern: 'LroHeaders\s*=' - # VP3: Other operations unchanged + pattern: LroHeaders\s*= - type: file-matches config: path: employee.tsp - pattern: 'update is ArmResourcePatchSync' + pattern: delete is ArmResourceDeleteWithoutOkAsync - type: prompt config: scoring: scale_1_5 - threshold: 1.0 + threshold: 1 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - tool-calls: 1 - prompt: 1 - file-matches: 5 - threshold: 1.0 - -- prompt: | - add minLength decorator to set the minLength 1 for resource name parameter of Employee resource - name: 004001-decorate-mgmt-resource-name-parameter + model: claude-opus-4.6 +- name: 004001-decorate-mgmt-resource-name-parameter + prompt: | + use authoring plan to add minLength decorator to set the minLength 1 for resource name parameter of Employee resource constraints: max_turns: 10 max_tokens: 5000 @@ -1681,9 +1383,9 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: '*.tsp' @@ -1691,23 +1393,16 @@ stimuli: - type: file-matches config: path: '*.tsp' - pattern: 'ResourceNameParameter|@key\("employeeName"\)' + pattern: ResourceNameParameter|@key\("employeeName"\) - type: prompt config: scoring: scale_1_5 - threshold: 1.0 + threshold: 1 prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - tool-calls: 1 - prompt: 1 - file-matches: 2 - threshold: 1.0 - -- prompt: | + model: claude-opus-4.6 +- name: 004002-decorate-length-constrains-on-array-item + prompt: | I have a property `assets: string[]` in EmployeeProperties. Add @minLength(3) @maxLength(10) constraints for any item of the assets array. - name: 004002-decorate-length-constrains-on-array-item constraints: max_turns: 10 max_tokens: 5000 @@ -1729,14 +1424,13 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - # VP1: Custom scalar type with minLength/maxLength constraints + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: employee.tsp - pattern: 'scalar.*extends string' + pattern: scalar.*extends string - type: file-matches config: path: employee.tsp @@ -1745,31 +1439,19 @@ stimuli: config: path: employee.tsp pattern: '@maxLength\(10\)' - # VP2: Assets array uses custom scalar type instead of plain string - type: file-not-matches config: path: employee.tsp - pattern: 'assets:\s*string\[\]' - - type: file-matches - config: - path: employee.tsp - pattern: 'assets:.*\[\]' + pattern: assets:\s*string\[\] - type: prompt config: scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - tool-calls: 1 - prompt: 1 - file-matches: 5 - threshold: 1.0 - -- prompt: | + threshold: 1 + prompt: Verify asset use the custom scalar type with minLength and maxLength constraints instead of plain string. + model: claude-opus-4.6 +- name: 004003-delete-and-restore-operationId-decorator + prompt: | Remove @operationId and its associated #suppress for no-openapi from all operations. Then restore those operationIds that do not contain underscores or begin with a lowercase letter. - name: 004003-delete-and-restore-operationId-decorator constraints: max_turns: 10 max_tokens: 5000 @@ -1802,10 +1484,7 @@ stimuli: graders: - type: tool-calls config: - required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation - # VP1: Underscore operationIds should be removed (e.g. BgpConnection has only underscore ones) + required: edit - type: file-not-matches config: path: BgpConnection.tsp @@ -1814,7 +1493,6 @@ stimuli: config: path: NetworkInterface.tsp pattern: '@operationId\(' - # VP2: Non-standard PascalCase operationIds restored with @operationId - type: file-matches config: path: BastionHost.tsp @@ -1827,33 +1505,17 @@ stimuli: config: path: ExpressRouteProviderPort.tsp pattern: '@operationId\("ExpressRouteProviderPort"\)' - # VP3: Restored operationIds keep their #suppress comment - type: file-matches config: path: BastionHost.tsp pattern: '#suppress.*no-openapi|#suppress.*operationId' - # Underscore one in ExpressRouteProviderPort should be removed - type: file-not-matches config: path: ExpressRouteProviderPort.tsp pattern: '@operationId\("ExpressRouteProviderPortsLocation_List"\)' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - tool-calls: 1 - prompt: 1 - file-not-matches: 3 - file-matches: 4 - threshold: 1.0 - -- prompt: | +- name: 005001-warning-suppress-warning + prompt: | Add suppressions for the warnings produced by "tsp compile .", and set the justification to "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details". - name: 005001-warning-suppress-warning constraints: max_turns: 10 max_tokens: 5000 @@ -1873,8 +1535,8 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: models.tsp @@ -1883,16 +1545,4 @@ stimuli: config: path: models.tsp pattern: 'FIXME: Update justification, follow aka\.ms/tsp/conversion-fix for details' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6-1m - scoring: - weights: - tool-calls: 1 - prompt: 1 - file-matches: 2 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/main.tsp index fce33e41760..4478b277d67 100644 --- a/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/main.tsp +++ b/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/main.tsp @@ -3,6 +3,7 @@ import "@typespec/rest"; import "@typespec/versioning"; import "@azure-tools/typespec-azure-core"; import "@azure-tools/typespec-azure-resource-manager"; +import "./employee.tsp"; using TypeSpec.Http; using TypeSpec.Rest; diff --git a/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/employee.tsp new file mode 100644 index 00000000000..012be609ccc --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/employee.tsp @@ -0,0 +1,78 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.Core; +using Azure.ResourceManager; + +namespace Microsoft.Widget; + +/** Employee resource */ +model Employee is TrackedResource { + ...ResourceNameParameter; +} + +/** Employee properties */ +model EmployeeProperties { + /** Age of employee */ + age?: int32; + + /** City of employee */ + city?: string; + + /** Profile of employee */ + @encode("base64url") + profile?: bytes; + + /** The status of the last operation. */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; +} + +/** The resource provisioning state. */ +@lroStatus +union ProvisioningState { + ResourceProvisioningState, + + /** The resource is being provisioned */ + Provisioning: "Provisioning", + + /** The resource is updating */ + Updating: "Updating", + + /** The resource is being deleted */ + Deleting: "Deleting", + + /** The resource create request has been accepted */ + Accepted: "Accepted", + + string, +} + +/** Employee move request */ +model MoveRequest { + /** The moving from location */ + from: string; + + /** The moving to location */ + to: string; +} + +/** Employee move response */ +model MoveResponse { + /** The status of the move */ + movingStatus: string; +} + +@armResourceOperations +interface Employees { + get is ArmResourceRead; + createOrUpdate is ArmResourceCreateOrReplaceAsync; + update is ArmResourcePatchSync; + delete is ArmResourceDeleteWithoutOkAsync; + listByResourceGroup is ArmResourceListByParent; + listBySubscription is ArmListBySubscription; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/main.tsp new file mode 100644 index 00000000000..6a7baecaf3e --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/main.tsp @@ -0,0 +1,31 @@ +import "@typespec/http"; +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Http; +using TypeSpec.Rest; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +/** Microsoft.Widget Resource Provider management API. */ +@armProviderNamespace +@service(#{ title: "Widget" }) +@versioned(Microsoft.Widget.Versions) +namespace Microsoft.Widget; + +/** The available API versions. */ +enum Versions { + /** 2021-10-01-preview version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + @previewVersion + v2021_10_01_preview: "2021-10-01-preview", + + /** 2021-11-01 version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + v2021_11_01: "2021-11-01", +} + +interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/003001-dataplane-async-delete-op/package.json b/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/package.json similarity index 100% rename from .github/azure-typespec-author/evaluate/fixtures/003001-dataplane-async-delete-op/package.json rename to .github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/package.json diff --git a/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/readme.md b/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/readme.md new file mode 100644 index 00000000000..3c4a3d353b9 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/readme.md @@ -0,0 +1,45 @@ +# Widget + +> see https://aka.ms/autorest + +This is the AutoRest configuration file for Widget. + +## Configuration + +### Basic Information + +This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. +This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we +use the native TypeSpec code generation configured in the tspconfig.yaml file. + +```yaml +openapi-type: arm +openapi-subtype: rpaas +tag: package-2021-11-01 +``` + +### Tag: package-2021-11-01 + +These settings apply only when `--tag=package-2021-11-01` is specified on the command line. + +```yaml $(tag) == 'package-2021-11-01' +input-file: + - stable/2021-11-01/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +### Tag: package-2021-10-01-preview + +These settings apply only when `--tag=package-2021-10-01-preview` is specified on the command line. + +```yaml $(tag) == 'package-2021-10-01-preview' +input-file: + - preview/2021-10-01-preview/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +--- diff --git a/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/shared.tsp new file mode 100644 index 00000000000..1b94bb70503 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/shared.tsp @@ -0,0 +1,8 @@ +@doc("Faked shared model") +model FakedSharedModel { + @doc("The tag.") + tag: string; + + @doc("The created date.") + createdAt: utcDateTime; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/tspconfig.yaml new file mode 100644 index 00000000000..9c97da201c0 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/tspconfig.yaml @@ -0,0 +1,44 @@ +parameters: + "service-dir": + default: "sdk/widget" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + use-read-only-status-schema: true + emitter-output-dir: "{project-root}" + output-file: "{version-status}/{version}/widget.json" + arm-types-dir: "{project-root}/../../../../common-types/resource-management" + "@azure-typespec/http-client-csharp-mgmt": + namespace: "Azure.ResourceManager.Widget" + emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" + "@azure-tools/typespec-python": + emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" + namespace: "azure.mgmt.widget" + generate-test: true + generate-sample: true + flavor: "azure" + "@azure-tools/typespec-java": + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" + namespace: "com.azure.resourcemanager.widget" + service-name: "Widget" # human-readable service name, whitespace allowed + flavor: azure + "@azure-tools/typespec-ts": + emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" + flavor: azure + experimental-extensible-enums: true + package-details: + name: "@azure/arm-widget" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/widget" + emitter-output-dir: "{output-dir}/{service-dir}/armwidget" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/003001-dataplane-async-delete-op/inma.tsp b/.github/azure-typespec-author/evaluate/fixtures/003001-dataplane-async-delete-op/inma.tsp deleted file mode 100644 index 2fe65dfdac7..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/003001-dataplane-async-delete-op/inma.tsp +++ /dev/null @@ -1,943 +0,0 @@ -import "@typespec/rest"; -import "@typespec/openapi"; - -using TypeSpec.Http; -using TypeSpec.Rest; -using Azure.Core; -using Azure.Core.Foundations; -@service(#{ title: "MPCPro Ingestion and Management API" }) -namespace Microsoft.PlanetaryComputer; - -@doc("Generic paged response model") -@friendlyName("{name}PagedResponse", T) -model Page { - @doc("The items on the page") - @pageItems - value: T[]; - - @doc("Link to the next page of results") - @nextLink - nextLink?: url; -} - -@tag("Ingestion Management") -interface Ingestions { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - #suppress "@azure-tools/typespec-azure-core/use-standard-names" "The operation is returning an array." - @doc("Get ingestions of a catalog") - @route("/inma/collections/{collectionId}/ingestions") - @get - @list - list( - ...CollectionParameters, - ...OdataQuery, - ): Page | ErrorResponse; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - @doc("Get the definition of an ingestion") - @route("/inma/collections/{collectionId}/ingestions/{ingestionId}") - @get - get(...IngestionParameters): IngestionDefinition | ErrorResponse; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - @doc("Create a new ingestion") - @route("/inma/collections/{collectionId}/ingestions") - @post - create( - ...CollectionParameters, - - @doc("Definition of the ingestion") - @body - body: IngestionDefinition, - ): { - @doc("Url of the created ingestion") - @header - location: url; - - @statusCode statusCode: 201; - - @doc("Ingestion definition") - @body - _: IngestionDefinition; - } | ErrorResponse; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - @doc("Update an existing ingestion") - @route("/inma/collections/{collectionId}/ingestions/{ingestionId}") - @patch(#{ implicitOptionality: true }) - update( - @doc("Content type for PATCH request") - @header - contentType: "application/merge-patch+json", - - ...IngestionParameters, - - @doc("Ingestion properties to update") - @body - body: IngestionDefinition, - ): { - @statusCode statusCode: 200; - - @body - _: IngestionDefinition; - } | ErrorResponse; -} - -@doc("Microsoft Planetary Computer Pro geo-catalog ingestion creation model") -@parentResource(StacCollection) -@resource("ingestions") -model IngestionDefinition { - @doc("Ingestion id") - @visibility(Lifecycle.Read) - @key("ingestionId") - id: uuid; - - @doc("Ingestion type") - @visibility(Lifecycle.Create, Lifecycle.Read, Lifecycle.Update) - importType: IngestionType; - - @doc("Ingestion name") - displayName?: string; - - @doc("Source catalog URL. Required for StaticCatalog ingestion type") - sourceCatalogUrl?: url; - - @doc("Skip processing existing items in the catalog") - skipExistingItems?: boolean; - - @doc("Keep original source assets") - keepOriginalAssets?: boolean; - - @doc("Ingestion creation time") - @visibility(Lifecycle.Read) - creationTime: utcDateTime; - - @doc("Ingestion status") - @visibility(Lifecycle.Read) - status: IngestionStatus; -} - -@doc("Ingestion type") -union IngestionType { - string, - - @doc("Static STAC Catalog") - StaticCatalog: "StaticCatalog", -} - -@doc("Ingestion status") -union IngestionStatus { - string, - - @doc("Ingestion accepted and ready to be run") - Ready: "Ready", - - @doc("Ingestion is being deleting in the background") - Deleting: "Deleting", -} - -@doc("Ingestion parameters") -model IngestionParameters is CollectionParameters { - @doc("Ingestion id") - @path - ingestionId: uuid; -} - -@tag("Ingestion Management") -interface IngestionRuns { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - #suppress "@azure-tools/typespec-azure-core/use-standard-names" "The operation is returning an array." - @doc("Get the runs of an ingestion") - @route("/inma/collections/{collectionId}/ingestions/{ingestionId}/runs") - @get - @list - list( - ...IngestionParameters, - ...OdataQuery, - ): Page | ErrorResponse; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - @doc("Get a run of an ingestion") - @route("/inma/collections/{collectionId}/ingestions/{ingestionId}/runs/{runId}") - @get - get(...IngestionRunParameters): IngestionRun | ErrorResponse; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - @doc("Create a new run of an ingestion") - @route("/inma/collections/{collectionId}/ingestions/{ingestionId}/runs") - @post - create(...IngestionParameters): { - @doc("Url of the created ingestion run") - @header - location: url; - - @statusCode statusCode: 201; - - @doc("Ingestion run") - @body - _: IngestionRun; - } | ErrorResponse; -} - -@doc("Microsoft Planetary Computer Pro geo-catalog ingestion run") -@resource("runs") -@parentResource(IngestionDefinition) -model IngestionRun { - @doc("Run id") - @key("runId") - @visibility(Lifecycle.Create, Lifecycle.Update, Lifecycle.Read) - id: uuid; - - @doc("Run id which this run is associated to because it has been retried or rerun") - parentRunId?: uuid; - - @doc("Operation") - operation: IngestionRunOperation; - - @doc("Creation time") - creationTime: utcDateTime; - - @doc("URL of the source catalog") - sourceCatalogUrl?: url; - - @doc("Skip any item that already exist in the GeoCatalog") - skipExistingItems?: boolean; - - @doc("Keep original source assets") - keepOriginalAssets?: boolean; -} - -@doc("Microsoft Planetary Computer Pro geo-catalog ingestion run operation") -model IngestionRunOperation { - @doc("Operation id") - id: uuid; - - @doc("Operation status") - status: OperationStatus; - - @doc("The UTC time at which the operation was created") - creationTime: utcDateTime; - - @doc("The history of the operation status in time") - statusHistory: OperationStatusHistoryItem[]; - - @doc("The UTC time at which the operation was started") - startTime?: utcDateTime; - - @doc("The UTC time at which the operation finished its execution") - finishTime?: utcDateTime; - - @doc("The number of total items to be processed") - totalItems: int32; - - @doc("The number of items pending to be processed") - totalPendingItems: int32; - - @doc("The number of items successfully processed") - totalSuccessfulItems: int32; - - @doc("The number of items that have failed to be processed") - totalFailedItems: int32; -} - -@doc("Ingestion run parameters") -model IngestionRunParameters is IngestionParameters { - @doc("Run id") - @path - runId: uuid; -} - -@tag("SpatioTemporal Asset Catalog (STAC) API") -interface StacItems { - /** - * Fetch features of the feature collection with id `collectionId`. - * - * Every feature in a dataset belongs to a collection. A dataset may - * consist of multiple feature collections. A feature collection is often a - * collection of features of a similar type, based on a common schema. - */ - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - @route("/stac/collections/{collectionId}/items") - @get - getFeatures( - ...CollectionParameters, - - /** - * The optional limit parameter recommends the number of items that should be present in the response document. - * - * If the limit parameter value is greater than advertised limit maximum, the server must return the - * maximum possible number of items, rather than responding with an error. - * - * Only items are counted that are on the first level of the collection in the response document. - * Nested objects contained within the explicitly requested items must not be counted. - * - * Minimum = 1. Maximum = 10000. Default = 10. - */ - @query - limit?: int32, - - /** - * Only features that have a geometry that intersects the bounding box are selected. - * The bounding box is provided as four or six numbers, depending on whether the - * coordinate reference system includes a vertical axis (height or depth): - * - * - Lower left corner, coordinate axis 1 - * - Lower left corner, coordinate axis 2 - * - Minimum value, coordinate axis 3 (optional) - * - Upper right corner, coordinate axis 1 - * - Upper right corner, coordinate axis 2 - * - Maximum value, coordinate axis 3 (optional) - * - * The coordinate reference system of the values is WGS 84 longitude/latitude - * (http://www.opengis.net/def/crs/OGC/1.3/CRS84). - * - * For WGS 84 longitude/latitude the values are in most cases the sequence of - * minimum longitude, minimum latitude, maximum longitude and maximum latitude. - * However, in cases where the box spans the antimeridian the first value - * (west-most box edge) is larger than the third value (east-most box edge). - * - * If the vertical axis is included, the third and the sixth number are - * the bottom and the top of the 3-dimensional bounding box. - * - * If a feature has multiple spatial geometry properties, it is the decision of the - * server whether only a single spatial geometry property is used to determine - * the extent or all relevant geometries. - */ - #suppress "@azure-tools/typespec-azure-core/no-query-explode" "This is an existing service operation." - @query("bbox") - @query(#{ explode: true }) - boundingBox?: string[], - - /** - * Either a date-time or an interval, open or closed. Date and time expressions - * adhere to RFC 3339. Open intervals are expressed using double-dots. - * - * Examples: - * - * - A date-time: "2018-02-12T23:20:50Z" - * - A closed interval: "2018-02-12T00:00:00Z/2018-03-18T12:31:12Z" - * - Open intervals: "2018-02-12T00:00:00Z/.." or "../2018-03-18T12:31:12Z" - * - * Only features that have a temporal property that intersects the value of - * `datetime` are selected. - * - * If a feature has multiple temporal properties, it is the decision of the - * server whether only a single temporal property is used to determine - * the extent or all relevant temporal properties. - */ - @query - datetime?: string, - ): StacItemCollection | ErrorResponse; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - @doc("Fetch a single STAC Item") - @route("/stac/collections/{collectionId}/items/{itemId}") - @get - get( - ...CollectionParameters, - - @doc("STAC Item id") - @path - @maxLength(500) - @pattern(".*") - itemId: string, - ): StacItem | ErrorResponse; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - @doc("Create a new STAC item or a set of items in a collection") - @route("/stac/collections/{collectionId}/items") - @post - @pollingOperation(IngestionOperations.get) - create( - ...CollectionParameters, - - /** - * STAC Item or StacItemCollection - * - * Represents a STAC Item or StacItemCollection as defined by the STAC 1.0.0 standard. - * - * **Item**: A GeoJSON Feature that represents a single spatiotemporal asset. - * It includes metadata such as geometry, datetime, and links to related assets. - * Example: A satellite image with its metadata. - * - * **StacItemCollection**: A GeoJSON FeatureCollection that contains multiple Items. - * It is used to group multiple related Items together, such as a collection of satellite images. - * - * This union allows the request body to accept either a single Item or a collection of Items. - */ - #suppress "@azure-tools/typespec-autorest/union-unsupported" "" - #suppress "@azure-tools/typespec-azure-core/no-unnamed-union" "Backcompatibility with existing clients" - @body - body: StacItemOrStacItemCollection, - ): { - @pollingLocation - @doc("Url used to monitor the background operation") - @header - location: url; - - @doc("Url used to monitor the background operation") - @header("operation-location") - operationLocation: url; - - @statusCode statusCode: 202; - - @doc("Operation") - @body - _: Operation; - } | ErrorResponse; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - @doc("Create or replace a STAC item in a collection") - @route("/stac/collections/{collectionId}/items/{itemId}") - @put - @pollingOperation(IngestionOperations.get) - createOrReplace( - ...CollectionParameters, - - @doc("STAC Item id") - @path - @maxLength(500) - @pattern(".*") - itemId: string, - - @doc("STAC Item") - @body - body: StacItem, - ): { - @pollingLocation - @doc("Url used to monitor the background operation") - @header - location: url; - - @doc("Url used to monitor the background operation") - @header("operation-location") - operationLocation: url; - - @statusCode statusCode: 202; - - @doc("Operation") - @body - _: Operation; - } | ErrorResponse; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - @doc("Update a STAC item in a collection") - @route("/stac/collections/{collectionId}/items/{itemId}") - @patch(#{ implicitOptionality: true }) - @pollingOperation(IngestionOperations.get) - update( - @header - @doc("Content type for PATCH request") - contentType: "application/merge-patch+json", - - ...CollectionParameters, - - @doc("STAC Item id") - @path - @maxLength(500) - @pattern(".*") - itemId: string, - - @doc("STAC Item") - @body - body: StacItem, - ): { - @pollingLocation - @doc("Url used to monitor the background operation") - @header - location: url; - - @doc("Url used to monitor the background operation") - @header("operation-location") - operationLocation: url; - - @statusCode statusCode: 202; - - @doc("Operation") - @body - _: Operation; - } | ErrorResponse; -} - -@tag("Ingestion Sources") -interface IngestionSources { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - #suppress "@azure-tools/typespec-azure-core/use-standard-names" "The operation is returning an array." - @doc("Get ingestion sources in a geo-catalog") - @route("/inma/ingestion-sources") - @get - @list - list( - ...ApiVersionParameter, - ...OdataQuery, - ): Page | ErrorResponse; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - @doc("Get an ingestion source in a geo-catalog") - @route("/inma/ingestion-sources/{id}") - @get - get( - ...IngestionSourceParameters, - ...ApiVersionParameter, - ): IngestionSource | ErrorResponse; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - @doc("Create a new ingestion source in a geo-catalog") - @route("/inma/ingestion-sources") - @post - create( - ...ApiVersionParameter, - - @doc("Definition of the ingestion source") - @body - body: IngestionSource, - ): { - @doc("Url of the created ingestion source") - @header - location: url; - - @statusCode statusCode: 201; - - @doc("Ingestion source summary") - @body - _: IngestionSource; - } | ErrorResponse; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - @doc("Update an existing ingestion source in a geo-catalog") - @route("/inma/ingestion-sources/{id}") - @put - replace( - ...ApiVersionParameter, - - @doc("Ingestion source id") - @path - id: uuid, - - @doc("Definition of the ingestion source") - @body - body: IngestionSource, - ): { - @doc("Url of the created ingestion source") - @header - location: url; - - @statusCode statusCode: 200; - - @doc("Ingestion source summary") - @body - _: IngestionSource; - } | ErrorResponse; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - @doc("Delete an ingestion source from a geo-catalog") - @route("/inma/ingestion-sources/{id}") - @delete - delete( - ...ApiVersionParameter, - - @doc("Ingestion source id") - @path - id: uuid, - ): { - @statusCode statusCode: 204; - } | ErrorResponse; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - #suppress "@azure-tools/typespec-azure-core/use-standard-names" "The operation is returning an array." - @doc("Get all managed identities with access to storage accounts configured for a geo-catalog") - @route("/inma/ingestion-sources/managed-identities") - @get - @list - listManagedIdentities( - ...ApiVersionParameter, - ): Page | ErrorResponse; -} - -@doc("Ingestion source summary") -model IngestionSourceSummary { - @doc("Ingestion source id") - id: uuid; - - @doc("Ingestion source type") - kind: IngestionSourceType; - - @doc("Created time in UTC format") - created?: utcDateTime; -} - -@doc("Ingestion Source") -@discriminator("kind") -model IngestionSource { - @doc("Ingestion source id") - @visibility(Lifecycle.Read, Lifecycle.Update) - id: uuid; - - @doc("Created time in UTC format") - @visibility(Lifecycle.Read) - created?: utcDateTime; - - @doc("Discriminator for the ingestion source") - kind: IngestionSourceType; -} - -@doc("Ingestion source type") -union IngestionSourceType { - string, - - @doc("Azure Blob Storage SAS token") - SharedAccessSignatureToken: "SasToken", - - @doc("Azure Blob Managed Identity") - BlobManagedIdentity: "BlobManagedIdentity", -} - -@doc("SAS Token ingestion source") -model SharedAccessSignatureTokenIngestionSource extends IngestionSource { - kind: IngestionSourceType.SharedAccessSignatureToken; - - @doc("SAS token connection information") - connectionInfo: SharedAccessSignatureTokenConnection; -} - -@doc("SAS Token connection information") -model SharedAccessSignatureTokenConnection { - @doc("Azure Blob Storage container URL") - @encodedName("application/json", "containerUrl") - containerUri: url; - - @doc("SAS token") - @visibility(Lifecycle.Create, Lifecycle.Update) - @encodedName("application/json", "sasToken") - sharedAccessSignatureToken?: string; - - @doc("Azure Blob Storage SAS token expiration in UTC format") - @visibility(Lifecycle.Read) - expiration?: utcDateTime; -} - -@doc("Managed Identity ingestion source") -model ManagedIdentityIngestionSource extends IngestionSource { - kind: IngestionSourceType.BlobManagedIdentity; - - @doc("Managed identity connection information") - connectionInfo: ManagedIdentityConnection; -} - -@doc("Managed Identity connection information") -model ManagedIdentityConnection { - @doc("Azure Blob Storage container URL") - @encodedName("application/json", "containerUrl") - containerUri: url; - - @doc("Azure Managed Identity configured in the Geo-Catalog with access to the container") - objectId: uuid; -} - -@doc("Managed Identity metadata") -model ManagedIdentityMetadata { - @doc("Object id of the managed identity") - objectId: uuid; - - @doc("ARM path or resource id of the managed identity") - resourceId: Azure.Core.armResourceIdentifier<[ - { - type: "Microsoft.ManagedIdentity/userAssignedIdentities"; - } - ]>; -} - -@doc("Ingestion source parameters") -model IngestionSourceParameters { - @doc("Ingestion source id") - @path - id: uuid; -} - -@tag("Ingestion Management") -interface IngestionOperations { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - #suppress "@azure-tools/typespec-azure-core/use-standard-names" "The operation is returning an array." - @doc("Get operations of a geo-catalog collection") - @route("/inma/operations") - @get - @list - list( - ...ApiVersionParameter, - ...OdataQuery, - - @doc("Operation id used to filter the results") - @query("collectionId") - collectionId?: string, - - @doc("Operation status used to filter the results") - @query("status") - status?: OperationStatus, - ): Page | ErrorResponse; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - @doc("Get an operation of a geo-catalog collection") - @route("/inma/operations/{operationId}") - @get - get( - ...ApiVersionParameter, - - @doc("Operation id") - @path - @maxLength(500) - operationId: uuid, - ): Operation | ErrorResponse; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - @doc("Cancel a running operation of a geo-catalog collection") - @route("/inma/operations/{operationId}") - @delete - delete( - ...ApiVersionParameter, - - @doc("Operation id") - @path - @maxLength(500) - operationId: uuid, - ): { - @statusCode statusCode: 204; - } | ErrorResponse; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - @doc("Cancel all running operations of a geo-catalog collection") - @route("/inma/operations") - @delete - deleteAll(...ApiVersionParameter): { - @statusCode statusCode: 204; - } | ErrorResponse; -} - -@doc("Error information wrapper") -model ErrorInfo { - @doc("Error details") - error: Error; -} - -@doc("Microsoft Planetary Computer Pro geo-catalog operation") -model Operation { - @doc("Operation id") - id: uuid; - - @doc("Operation status") - status: OperationStatus; - - @doc("Operation type") - type: string; - - @doc("The UTC time at which the operation was created") - creationTime: utcDateTime; - - @doc("Collection ID") - collectionId?: string; - - @doc("The history of the operation status in time") - statusHistory: OperationStatusHistoryItem[]; - - @doc("The UTC time at which the operation was started") - startTime?: utcDateTime; - - @doc("The UTC time at which the operation finished its execution") - finishTime?: utcDateTime; - - @doc("Additional information elements about the particular operation type") - additionalInformation?: Record; - - @doc("Error information") - error?: ErrorInfo; -} - -@doc("Operation status") -@lroStatus -union OperationStatus { - string, - - @doc("Operation accepted and ready to be run") - Pending: "Pending", - - @doc("Operation is running") - Running: "Running", - - @doc("Operation has already finished its execution") - Succeeded: "Succeeded", - - @doc("Operation canceled by the user") - Canceled: "Canceled", - - @doc("Operation is being canceling") - Canceling: "Canceling", - - @doc("Operation failed") - Failed: "Failed", -} - -@doc("Operation status history item") -model OperationStatusHistoryItem { - @doc("The UTC time at which the status was set") - timestamp: utcDateTime; - - @doc("The status of the operation") - status: OperationStatus; - - @doc("If the status is failed, the error code") - errorCode?: string; - - @doc("If the status is failed, the error message") - errorMessage?: string; -} - -@doc("Collection parameters") -model CollectionParameters is ApiVersionParameter { - /** - * Catalog collection id - */ - @doc("Catalog collection id") - @path - @maxLength(500) - @pattern(".*") - collectionId: string; -} - -@doc("Odata query parameters") -model OdataQuery { - @doc("The number of items to return") - @query("$top") - top?: int32; - - @doc("The number of items to skip") - @query("$skip") - skip?: int32; -} - -interface StacCollections { - /** - * List all collections in the GeoCatalog instance - */ - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - @summary("Get Collections") - @tag("SpatioTemporal Asset Catalog (STAC) API") - @route("/stac/collections") - @get - getAll is Azure.Core.Foundations.Operation< - { - /** - * Whether to sign asset URLs in the response. - */ - @query("sign") - sign?: StacAssetUrlSigningMode; - - /** - * URL signature duration in minutes. - */ - @query("duration") - durationInMinutes?: int32; - }, - StacCatalogCollections - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - #suppress "@azure-tools/typespec-azure-core/bad-record-type" "STAC specification" - @doc("Create a new collection in the GeoCatalog instance") - @summary("Create Collection") - @tag("SpatioTemporal Asset Catalog (STAC) API") - @route("/stac/collections") - @post - @pollingOperation(IngestionOperations.get) - create( - ...ApiVersionParameter, - - @doc("Request collection body") - @body - body: StacCollection, - ): { - @pollingLocation - @doc("Url used to monitor the background operation") - @header - location: url; - - @doc("Url used to monitor the background operation") - @header("operation-location") - operationLocation: url; - - @statusCode statusCode: 202; - - @doc("Operation") - @body - _: Operation; - } | ErrorResponse; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - @doc("Get a collection in the GeoCatalog instance") - @summary("Get Collection") - @tag("SpatioTemporal Asset Catalog (STAC) API") - @route("/stac/collections/{collectionId}") - @get - get is Azure.Core.Foundations.Operation< - { - /** - * Catalog collection id - */ - @doc("Catalog collection id") - @path - @maxLength(500) - @pattern(".*") - collectionId: string; - - /** - * Whether to sign asset URLs in the response. - */ - @query("sign") - sign?: StacAssetUrlSigningMode; - - /** - * URL signature duration in minutes. - */ - @query("duration") - durationInMinutes?: int32; - }, - StacCollection - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - #suppress "@azure-tools/typespec-azure-core/bad-record-type" "STAC specification" - @doc("Create or replace a collection in the GeoCatalog instance") - @summary("Create or update Collection") - @tag("SpatioTemporal Asset Catalog (STAC) API") - @route("/stac/collections") - @put - createOrReplace( - ...CollectionParameters, - - @doc("Request collection body") - @body - body: StacCollection, - ): StacCollection; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "This is an existing service operation." - @doc("Delete a collection in the GeoCatalog instance") - @summary("Delete Collection") - @tag("SpatioTemporal Asset Catalog (STAC) API") - @route("/stac/collections") - @delete - @pollingOperation(IngestionOperations.get) - delete(...CollectionParameters): { - @pollingLocation - @doc("Url used to monitor the background operation") - @header - location: url; - - @doc("Url used to monitor the background operation") - @header("operation-location") - operationLocation: url; - - @statusCode statusCode: 202; - - @doc("Operation") - @body - _: Operation; - } | ErrorResponse; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/003001-dataplane-async-delete-op/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/003001-dataplane-async-delete-op/tspconfig.yaml deleted file mode 100644 index 8fe282e6868..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/003001-dataplane-async-delete-op/tspconfig.yaml +++ /dev/null @@ -1,14 +0,0 @@ -parameters: - "service-dir": - default: "sdk/planetarycomputer" -linter: - extends: - - "@azure-tools/typespec-azure-rulesets/data-plane" -emit: - - "@azure-tools/typespec-autorest" -options: - "@azure-tools/typespec-autorest": - azure-resource-provider-folder: "data-plane" - emitter-output-dir: "{project-root}/.." - output-file: "{azure-resource-provider-folder}/{service-name}/{version-status}/{version}/openapi.json" - xml-strategy: none From 3fe9bf7349eef1bafe786b6bc9edf4831cb83411 Mon Sep 17 00:00:00 2001 From: Haoling Dong Date: Fri, 24 Apr 2026 10:22:50 +0800 Subject: [PATCH 08/98] [azure-typespec-author skill] Consolidate reference documents into one file and remove hard coded task type classification Consolidate reference documents and remove hard-coded task type classification step. Workflow renamed from Classify->Intake->Plan->Apply->Validate to Analyze->Intake->Plan->Apply->Validate. Added reference-document-links.md, analyze-project.md, intake.md, authoring-plan.md. Removed analyze-project-and-classify-task.md, api-version-evolution.md, general-authoring-intake.md. Added Step 6 to output reference document URLs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/skills/azure-typespec-author/SKILL.md | 110 +++++------------- .../references/agentic-search.md | 15 ++- .../analyze-project-and-classify-task.md | 62 ---------- .../references/analyze-project.md | 31 +++++ .../references/api-version-evolution.md | 31 ----- .../references/authoring-plan.md | 26 +++++ .../references/general-authoring-intake.md | 42 ------- .../references/intake.md | 60 ++++++++++ .../references/reference-document-links.md | 9 ++ .../references/validation.md | 39 +++---- 10 files changed, 175 insertions(+), 250 deletions(-) delete mode 100644 .github/skills/azure-typespec-author/references/analyze-project-and-classify-task.md create mode 100644 .github/skills/azure-typespec-author/references/analyze-project.md delete mode 100644 .github/skills/azure-typespec-author/references/api-version-evolution.md create mode 100644 .github/skills/azure-typespec-author/references/authoring-plan.md delete mode 100644 .github/skills/azure-typespec-author/references/general-authoring-intake.md create mode 100644 .github/skills/azure-typespec-author/references/intake.md create mode 100644 .github/skills/azure-typespec-author/references/reference-document-links.md diff --git a/.github/skills/azure-typespec-author/SKILL.md b/.github/skills/azure-typespec-author/SKILL.md index 4d758549117..bd94ae4a0bd 100644 --- a/.github/skills/azure-typespec-author/SKILL.md +++ b/.github/skills/azure-typespec-author/SKILL.md @@ -10,114 +10,60 @@ compatibility: # Azure TypeSpec Author -## MCP Tools - -| Tool | Purpose | -| ------------------------------------------------------ | --------------------------------------------------------- | -| `azure-sdk-mcp:azsdk_typespec_generate_authoring_plan` | Generate grounded authoring plan (General Authoring only) | -| `azure-sdk-mcp:azsdk_run_typespec_validation` | Validate TypeSpec | - -**Prerequisite:** `azure-sdk-mcp` server must be running. - ## Constraints -- **Always follow the full workflow** — even seemingly simple changes (e.g. adding a default value) can require complex versioning decorator changes. Never skip steps. -- **Mandatory for ALL `.tsp` edits** — even a single `?` change can be breaking. -- **Minimal, scoped edits** — only change what the request requires. -- **Always validate** — run every steps in [validation](references/validation.md) after every edit. -- **Always cite references** — provide links that justify the approach. -- **Follow the authoring plan exactly** — code changes in Step 4 MUST follow the authoring plan generated in Step 3. Do not deviate by referring to existing code patterns in the TypeSpec project; the authoring plan is the single source of truth for what to change. - ---- +- **Never skip steps** — even trivial `.tsp` changes can require complex versioning decorators. +- **Minimal edits** — only change what the request requires. +- **Authoring plan is source of truth** — do not deviate by copying existing code patterns. ## Workflow -> Classify → Intake → Plan → Apply → Validate - -### Progress Checklist - -Copy and update as you progress: +> Analyze → Intake → Plan → Apply → Validate -- [ ] Step 1: Analyzed project & classified as: \_\_\_ -- [ ] Step 2: Collected intake inputs -- [ ] Step 3: Retrieved authoring plan -- [ ] Step 4: Applied changes -- [ ] Step 5: Validated with TypeSpec validation and `tsp compile .` +- [ ] Step 1 — Analyze project +- [ ] Step 2 — Intake +- [ ] Step 3 — Build authoring plan +- [ ] Step 4 — Apply changes +- [ ] Step 5 — Validate +- [ ] Step 6 — Output reference links -### Step 1: Analyze & Classify +### Step 1: Analyze Project -Follow [analyze project & classify task](references/analyze-project-and-classify-task.md). - -Classify as exactly one: - -| Task Type | When | `azsdk_typespec_generate_authoring_plan` | -| ------------------------- | --------------------------------------------------------------------------------- | ---------------------------------------- | -| **API Version Evolution** | Adding a new preview or stable API version to an existing ARM service. (ARM only) | **MUST NOT** call | -| **General Authoring** | Any other `.tsp` change (resources, operations, models, properties, etc.) | **MUST** call | - -State your classification explicitly before proceeding. - ---- +See [analyze-project.md](references/analyze-project.md). ### Step 2: Intake -Collect inputs needed for the change. Branch by task type: - -- **API Version Evolution** → Follow [API version evolution reference — Step 2](references/api-version-evolution.md#step-2-intake). -- **General Authoring** → Follow [intake guide](references/general-authoring-intake.md). +See [intake.md](references/intake.md). ---- +### Step 3: Build Authoring Plan -### Step 3: Retrieve Authoring Plan - -Check your classification from Step 1, then branch: - -- **API Version Evolution** → Follow [API version evolution reference — Step 3](references/api-version-evolution.md#step-3-retrieve-authoring-plan). **MUST NOT** call `azsdk_typespec_generate_authoring_plan`. -- **General Authoring** → **MUST** invoke `azure-sdk-mcp:azsdk_typespec_generate_authoring_plan` with: - - | Parameter | Value | - | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | `request` | User request (verbatim) | - | `additionalInformation` | All content gathered from Steps 1–2 (intake analysis, user answers, relevant `.tsp` code read from the project), **including any case-specific Defaults noted in Step 2.2** | - | `typeSpecProjectRootPath` | TypeSpec project root path | - - Do not proceed without an authoring plan from this tool. - ---- +See [authoring-plan.md](references/authoring-plan.md). ### Step 4: Apply Changes -Confirm uncertainties with the user, then make minimal `.tsp` edits. - -- **API Version Evolution** → Apply the plan from Step 3. -- **General Authoring** → Apply the authoring plan from Step 3. - ---- +Make minimal `.tsp` edits following the plan from Step 3. Confirm uncertainties with the user first. ### Step 5: Validate -See [validation guide](references/validation.md) for sub-steps. You must run TypeSpec validation (5.1), `tsp compile .` (5.2), and example verification (5.3, API Version Evolution only). +See [validation.md](references/validation.md). Run 5.1 (TypeSpec validation) and 5.2 (`tsp compile .`) always; 5.3 (example verification) for API version evolution only. ---- +### Step 6: Output Reference Links + +Output all referenced document URLs from Step 3. This gives the user direct links to the documentation that informed the changes. ## Reference Files -| File | Purpose | -| --------------------------------------------------------------------------------------- | ----------------------------------------- | -| [analyze-project-and-classify-task.md](references/analyze-project-and-classify-task.md) | Step 1: project analysis + classification | -| [api-version-evolution.md](references/api-version-evolution.md) | Steps 2–4 for API Version Evolution tasks | -| [general-authoring-intake.md](references/general-authoring-intake.md) | Step 2 for General Authoring tasks | -| [agentic-search.md](references/agentic-search.md) | Procedure for fetching external docs | -| [validation.md](references/validation.md) | Step 5: validation sub-steps | +| File | Purpose | +| --------------------------------------------------------------------- | ------------------------------------------- | +| [analyze-project.md](references/analyze-project.md) | Step 1: project analysis | +| [intake.md](references/intake.md) | Step 2: general + case-specific intake | +| [authoring-plan.md](references/authoring-plan.md) | Step 3: build authoring plan (Option A + B) | +| [agentic-search.md](references/agentic-search.md) | Procedure: fetch URLs → extract guidance | +| [reference-document-links.md](references/reference-document-links.md) | Catalog of external guide URLs | +| [validation.md](references/validation.md) | Step 5: validate → compile → verify | ## Examples - "Add a new preview API version 2026-01-01-preview for widget resource manager" -- "Bump to stable version 2026-01-01 for Microsoft.Widget" - "Add an ARM resource named Asset with CRUD operations" - "Add a new property to the Widget model" - -## Troubleshooting - -- **TypeSpec validation fails** — display all errors, provide fix suggestions, re-run validation. -- **API Version Evolution** — use the versioning guide URLs in the [version evolution reference](references/api-version-evolution.md); do not call the authoring plan tool. diff --git a/.github/skills/azure-typespec-author/references/agentic-search.md b/.github/skills/azure-typespec-author/references/agentic-search.md index e9bcf0f37b6..06321e3e97c 100644 --- a/.github/skills/azure-typespec-author/references/agentic-search.md +++ b/.github/skills/azure-typespec-author/references/agentic-search.md @@ -1,15 +1,14 @@ # Agentic Search -Procedure for fetching external documentation and extracting actionable guidance. - ## Input -A set of document URLs to fetch (provided by the caller). +- **Step 1 result** — project analysis output from [analyze-project.md](analyze-project.md): service type, existing API versions, latest version, intent, target resource/interface, and constraints. +- **User request** — the user's stated goal for this session. ## Procedure -1. **Fetch documents** — use `web_fetch` to download each URL. Extract the page content as markdown. -2. **Search content** — read the downloaded content and identify instructions, code examples, and patterns relevant to the current task. -3. **Build authoring plan** — synthesize the extracted content into a concrete authoring plan grounded in the fetched material. - -> Do not proceed without an authoring plan grounded in the fetched reference material. +1. **Select URLs** — read [reference-document-links.md](reference-document-links.md). Select only the URLs relevant to the user's request and Step 1 result. If unsure, select all. +2. **Fetch** — `web_fetch` each selected URL. Extract content as markdown. +3. **Search** — find content matching a query derived from the user's request and Step 1 result. Choose the most effective local search tool available. +4. **Iterate** — if initial results are insufficient, refine the query or fetch additional pages/URLs until the information satisfies the query. +5. **Return** — provide the extracted guidance to the caller. diff --git a/.github/skills/azure-typespec-author/references/analyze-project-and-classify-task.md b/.github/skills/azure-typespec-author/references/analyze-project-and-classify-task.md deleted file mode 100644 index bf09a8eebae..00000000000 --- a/.github/skills/azure-typespec-author/references/analyze-project-and-classify-task.md +++ /dev/null @@ -1,62 +0,0 @@ -# Analyze Project & Classify Task - -## Part 1 — Analyze Project - -Collect the inputs below from the TypeSpec project. Ask **up to 6 concise questions** for any that are missing. - -| # | Input | Example | -| --- | --------------------------- | ---------------------------------------------------------------- | -| 1 | TypeSpec project root | `/specification/widget/resource-manager/Microsoft.Widget/Widget` | -| 2 | Path to `tspconfig.yaml` | `/tspconfig.yaml` | -| 3 | Service type | ARM / data-plane | -| 4 | Existing API versions | `2024-01-01 (stable)`, `2024-06-01-preview` | -| 5 | Latest API version | Most recent entry in the `Versions` enum | -| 6 | Current working API version | The version being added or modified this session | -| 7 | Intent | add / modify / fix | -| 8 | Target resource/interface | Resource or operation name (if known) | -| 9 | Constraints | Breaking-change limits, naming rules, emitter targets, etc. | - -## Part 2 — Classify Task - -> **CRITICAL:** Classify into exactly one task type below and state your classification **before** proceeding to Step 2. - -### Definitions - -| Type | What it means | Tool Restriction | -| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | -| **API Version Evolution** | Adding a new preview or stable API version to an existing ARM service. Data-plane API version evolution is not fully supported yet. | **MUST NOT** call `azsdk_typespec_generate_authoring_plan`. Uses web-fetched docs only. | -| **General Authoring** | Any other TypeSpec authoring task that modifies `.tsp` files (resources, operations, models, properties, etc.) | **MUST** call `azsdk_typespec_generate_authoring_plan` in Step 3. | - -### How to Classify - -**API Version Evolution** — any request whose **primary intent** is to introduce a new API version string. -Keyword patterns: - -- _"add a new … API version"_, _"new preview version"_, _"new stable version"_ -- _"bump API version"_, _"introduce version"_, _"add … preview"_, _"add … stable"_ - -**General Authoring** — everything else that modifies `.tsp` files **without** introducing a new API version. - -### Example Prompts - -| Type | Examples | -| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **API Version Evolution** | "Add a new preview API version 2026-01-01-preview for widget resource manager", "Add preview version 2025-06-01-preview", "Bump to stable version 2026-01-01 for Microsoft.Widget", "Introduce a new preview API version for Foo" | -| **General Authoring** | "Add an ARM resource named Asset with CRUD operations", "Add a new property to the Widget model" | - -## Output - -Display the results before proceeding: - -``` -TypeSpec project root: /path/to/project -tspconfig.yaml: /path/to/project/tspconfig.yaml -Service Type: ARM -API Versions: 2024-01-01 (stable), 2024-06-01-preview (preview) -Latest Version: 2024-06-01-preview -Working Version: [TBD] -Intent: [add/modify/fix] -Target: [resource/operation if known] -Constraints: [if any] -Task Type: [API Version Evolution | General Authoring] -``` diff --git a/.github/skills/azure-typespec-author/references/analyze-project.md b/.github/skills/azure-typespec-author/references/analyze-project.md new file mode 100644 index 00000000000..10b5a9ecde4 --- /dev/null +++ b/.github/skills/azure-typespec-author/references/analyze-project.md @@ -0,0 +1,31 @@ +# Analyze Project + +Collect the inputs below from the TypeSpec project. Ask **up to 6 concise questions** for any that are missing. + +| # | Input | Example | +| --- | --------------------------- | ---------------------------------------------------------------- | +| 1 | TypeSpec project root | `/specification/widget/resource-manager/Microsoft.Widget/Widget` | +| 2 | Path to `tspconfig.yaml` | `/tspconfig.yaml` | +| 3 | Service type | ARM / data-plane | +| 4 | Existing API versions | `2024-01-01 (stable)`, `2024-06-01-preview` | +| 5 | Latest API version | Most recent entry in the `Versions` enum | +| 6 | Current working API version | The version being added or modified this session | +| 7 | Intent | add / modify / fix | +| 8 | Target resource/interface | Resource or operation name (if known) | +| 9 | Constraints | Breaking-change limits, naming rules, emitter targets, etc. | + +## Output + +Display the results before proceeding to Step 2: + +``` +TypeSpec project root: /path/to/project +tspconfig.yaml: /path/to/project/tspconfig.yaml +Service Type: ARM/Dataplane +API Versions: 2024-01-01 (stable), 2024-06-01-preview (preview) +Latest Version: 2024-06-01-preview +Working Version: [TBD] +Intent: [add/modify/fix] +Target: [resource/operation if known] +Constraints: [if any] +``` diff --git a/.github/skills/azure-typespec-author/references/api-version-evolution.md b/.github/skills/azure-typespec-author/references/api-version-evolution.md deleted file mode 100644 index f6c345f0d3b..00000000000 --- a/.github/skills/azure-typespec-author/references/api-version-evolution.md +++ /dev/null @@ -1,31 +0,0 @@ -# API Version Evolution — Reference - -**MUST NOT** call `azsdk_typespec_generate_authoring_plan` for API Version Evolution tasks. - ---- - -## Step 2: Intake - -Search using [agentic search](agentic-search.md) in below documents to determine information needed from user. - -- MUST collect information from user rather than making assumptions. -- MUST use a user friendly way to collect information. - e.g. you MUST List features from latest version and let user select which to carry over vs exclude, rather than assume user wants to carry over all features. - - | Doc | Guide URL | - | ------------------------ | --------------------------------------------------------------------------------------------- | - | Preview version overview | `https://azure.github.io/typespec-azure/docs/howtos/versioning/01-preview-version` | - | preview > preview | `https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/02-preview-after-preview/` | - | preview > stable | `https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/03-stable-after-preview/` | - | stable > preview | `https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/04-preview-after-stable/` | - | stable > stable | `https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/05-stable-after-stable/` | - ---- - -## Step 3: Retrieve Authoring Plan - -1. Build an authoring plan from the fetched guide. Follow its rules for carried-over features and excluded features. Note there should be only one preview version and the preview version should be decorated with `@previewVersion`. - -2. Set up example folder: Copy all `.json` files from the latest version's `examples/` folder into new version's `examples/` folder. Create folder if necessary and update example content if necessary, e.g. api-version should be updated. - -3. update readme.md. diff --git a/.github/skills/azure-typespec-author/references/authoring-plan.md b/.github/skills/azure-typespec-author/references/authoring-plan.md new file mode 100644 index 00000000000..de3e74424ad --- /dev/null +++ b/.github/skills/azure-typespec-author/references/authoring-plan.md @@ -0,0 +1,26 @@ +# Build Authoring Plan + +> Prerequisite: Steps 1 (Analyze Project) and 2 (Intake) must be complete. + +## 3.1 General (All Cases) + +Use **one or both** tools to build an authoring plan: + +1. **MCP Tool** — call `azsdk_typespec_generate_authoring_plan` with: + - `request`: user request (verbatim) + - `additionalInformation`: all context from Steps 1–2 + - `typeSpecProjectRootPath`: project root path + +2. **Agentic Search** — run [agentic search](agentic-search.md) with URLs from [reference-document-links.md](reference-document-links.md) and a query from the user's request. Synthesize extracted content into a concrete plan. + +--- + +## 3.2 Case-Specific Authoring Plan + +### Case 3 — API Version Evolution + +> **Must** use Agentic Search (option 2 above) to build the plan — do not call the MCP tool. + +1. Only one preview version allowed; decorate with `@previewVersion`. +2. Copy `.json` files from latest version's `examples/` into new version's `examples/`. Update `api-version` in each file. Delete old version's example folder if old version is no longer existed. +3. Update `readme.md`. diff --git a/.github/skills/azure-typespec-author/references/general-authoring-intake.md b/.github/skills/azure-typespec-author/references/general-authoring-intake.md deleted file mode 100644 index 390d29449f4..00000000000 --- a/.github/skills/azure-typespec-author/references/general-authoring-intake.md +++ /dev/null @@ -1,42 +0,0 @@ -# Intake — General Authoring - -> Step 1 (Analyze Project) must be complete. Do not re-collect those inputs. - -### Step 2.1: Identify the Case - -| Case | Name | Description | Service Type | -| ---- | ----------------------- | ----------------------------------------- | ------------ | -| 1 | Add Resource Type | Define a new ARM resource with operations | ARM | -| 2 | Add Resource Operations | Add CRUD or custom actions on a resource | ARM | - -- **Match found** → collect case-specific inputs (Step 2.2). -- **No match** → skip to Step 3 using Step 1 analysis and the user's request. - -### Step 2.2: Collect Inputs - -**Case 1 — Add Resource Type (For ARM service only)** -Collect: target API version, resource name (PascalCase), hierarchy (top-level or nested + parent), properties (name, type, required/optional). - -Defaults: top-level → `TrackedResource`, child → `ProxyResource`. Operations: `createOrReplace` (PUT/async), `get`, `update/patch`, `delete` (async), list by parent. Top-level adds list by subscription. Use `createOrReplace` (not `createOrUpdate`), - -> MUST use `ArmCustomPatch` for PATCH `update/patch`. -> Top-level tracked resources MUST have `listByResourceGroup` and `listBySubscription`. - -**Case 2 — Add Resource Operations (For ARM service only)** -Collect: target resource, operation type (CRUD or custom), operation name (custom actions), request/response models (custom actions). - -Defaults: never async → GET, LIST, HEAD. Default async → PUT, DELETE. Default sync → PATCH. Always ask user → POST/action. - -> Use `createOrReplace` templates (not `createOrUpdate`). Use `ArmCustomPatch` for PATCH. -> For POST async operation, make sure use ARM combined headers. ` LroHeaders = ArmCombinedLroHeaders`. - -### Step 2.3: Confirm - -Display collected information and wait for user confirmation: - -``` -Case: [Name] -Target Version: [version] -Requested Changes: [summary] -Defaults: [defaults guidelines] -``` diff --git a/.github/skills/azure-typespec-author/references/intake.md b/.github/skills/azure-typespec-author/references/intake.md new file mode 100644 index 00000000000..49afba988ba --- /dev/null +++ b/.github/skills/azure-typespec-author/references/intake.md @@ -0,0 +1,60 @@ +# Intake + +> Prerequisite: Step 1 (Analyze Project) must be complete. + +## 2.1 General Intake (All Cases) + +1. Run [agentic search](agentic-search.md) using the Step 1 result and the user's request. +2. Identify the case from the table below and gather more information if case matches. If no case matches, skip Step 2.2. + +| Case | Name | Description | Service Type | +| ---- | ----------------------- | ----------------------------------------------------- | ------------ | +| 1 | Add Resource Type | Define a new ARM resource with operations | ARM | +| 2 | Add Resource Operations | Add CRUD or custom actions on an existing resource | ARM | +| 3 | API Version Evolution | Add, bump, or promote an API version (preview/stable) | ARM | + +--- + +## 2.2 Case-Specific Intake + +### Case 1 — Add Resource Type (ARM) + +Collect: target API version, resource name (PascalCase), hierarchy (top-level or nested + parent), properties (name, type, required/optional). + +Defaults: top-level → `TrackedResource`, child → `ProxyResource`. Operations: `createOrReplace` (PUT/async), `get`, `update/patch`, `delete` (async), list by parent. Top-level adds list by subscription. + +> Use `createOrReplace` (not `createOrUpdate`). Use `ArmCustomPatch` for PATCH. +> Top-level tracked resources MUST have `listByResourceGroup` and `listBySubscription`. + +### Case 2 — Add Resource Operations (ARM) + +Collect: target resource, operation type (CRUD or custom), operation name (custom actions), request/response models (custom actions). + +Defaults: never async → GET, LIST, HEAD. Default async → PUT, DELETE. Default sync → PATCH. Always ask user → POST/action. + +> Use `createOrReplace` (not `createOrUpdate`). Use `ArmCustomPatch` for PATCH. +> For async POST, use ARM combined headers: `LroHeaders = ArmCombinedLroHeaders`. + +### Case 3 — API Version Evolution (ARM) + +Collect from user: + +1. **Target version** (e.g. `2026-01-01-preview` or `2026-01-01`) +2. **Features to exclude, Do not assume the user wants to carry over all features** — follow this procedure exactly: + 1. Read the latest version's `.tsp` files and enumerate all resources, operations, models, and properties. + 2. Present the list to the user as a numbered checklist. + 3. Ask: _"All features will be carried over to the new version. Are there any you want to exclude? List by number, or say 'none'."_ + 4. Wait for the user's response before proceeding. + +--- + +## 2.3 Confirm + +Display and wait for user confirmation: + +``` +Case: [Name] +Target Version: [version] +Changes: [summary] +Defaults: [applied defaults] +``` diff --git a/.github/skills/azure-typespec-author/references/reference-document-links.md b/.github/skills/azure-typespec-author/references/reference-document-links.md new file mode 100644 index 00000000000..3f64043c54f --- /dev/null +++ b/.github/skills/azure-typespec-author/references/reference-document-links.md @@ -0,0 +1,9 @@ +# Reference Document Links + +## API Version Evolution (ARM) + +- [Preview version overview](https://azure.github.io/typespec-azure/docs/howtos/versioning/01-preview-version): Overview of how preview API versions work in TypeSpec Azure. +- [preview → preview](https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/02-preview-after-preview/): How to add a new preview version after an existing preview version. +- [preview → stable](https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/03-stable-after-preview/): How to promote a preview version to stable. +- [stable → preview](https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/04-preview-after-stable/): How to add a new preview version after a stable version. +- [stable → stable](https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/05-stable-after-stable/): How to add a new stable version after an existing stable version. diff --git a/.github/skills/azure-typespec-author/references/validation.md b/.github/skills/azure-typespec-author/references/validation.md index f1e665f8418..0ff30b508fb 100644 --- a/.github/skills/azure-typespec-author/references/validation.md +++ b/.github/skills/azure-typespec-author/references/validation.md @@ -1,36 +1,25 @@ # Validation -After applying changes (Step 4), run through all sub-steps below in order. +Run all sub-steps in order after applying changes. -| Sub-step | Action | When | -| -------- | ---------------------------------- | -------------------------- | -| 5.1 | TypeSpec Validation (error checks) | Always | -| 5.2 | `tsp compile .` (generate swagger) | Always | -| 5.3 | Example Verification | API Version Evolution only | +| Sub-step | Action | When | +| -------- | ------------------------------- | -------------------------- | +| 5.1 | `azsdk_run_typespec_validation` | Always | +| 5.2 | `tsp compile .` | Always | +| 5.3 | Example verification | API version evolution only | -> Steps 5.1 and 5.2 serve different purposes. Step 5.1 validates for errors/warnings. Step 5.2 compiles and generates the OpenAPI `.json` output files. Both must be executed. +### 5.1: TypeSpec Validation -### Step 5.1: TypeSpec Validation +Invoke `azsdk_run_typespec_validation` with the project root. On failure → fix → re-run until resolved. -Invoke `azure-sdk-mcp:azsdk_run_typespec_validation` with the TypeSpec project root path. +### 5.2: Compile -- **Pass** → proceed to Step 5.2. -- **Fail** → fix with minimal, scoped changes, then re-run. Repeat until resolved. +Run `tsp compile .` from the project root. Verify `.json` output under `{project-root}/{version-status}/{target-version}/`. Fix compile errors if any. -> Never skip this step, even for trivial changes. +> 5.1 checks for errors/warnings; 5.2 generates the OpenAPI output. Both are required. -### Step 5.2: Compile successfully +### 5.3: Example Verification -> This step is separate from Step 5.1. Validation alone does not produce output files — you must also run `tsp compile .` to generate the OpenAPI swagger. +Verify `{project-root}/{version-status}/{target-version}/examples/` exists with `.json` files using the correct `api-version`. If missing, copy from the previous version's examples and update `api-version`. -Run `tsp compile .` from the TypeSpec project root path. After compilation succeeds, verify that the swagger `.json` file has been generated under `{TypeSpec project root}/{version-status}/{target-version}/` (e.g. `preview/2025-01-01-preview/widget.json`). Fix any compile errors if they occur. - -### Step 5.3: Example Verification - -> Applies only for API Version Evolution tasks - -Verify that the example folder set up in Step 3 (copied from the latest version's `examples/` into `{TypeSpec project root}/{version-status}/{target-version}/examples/`) exists and contains example files. - -1. **Folder exists** — confirm `{TypeSpec project root}/{version-status}/{target-version}/examples/` was created. If missing, copy all `.json` files from the latest version's `examples/` folder. -2. **Files exist** — confirm the folder contains at least one `.json` example file. If empty, copy examples from the latest version's `examples/` folder. -3. **api-version updated** — each example file must use the correct `api-version` value matching the target version (e.g. `2024-02-01-preview`, not the source version). +Verify that any example folder for an API version that no longer exists in the `Versions` enum has been deleted. For each folder under `{project-root}/{version-status}/`, check that the folder name matches an entry in the `Versions` enum. If a folder exists for a removed version, delete it. From 4b293e317b87a369d5f905f862c3776518e58318 Mon Sep 17 00:00:00 2001 From: Haoling Dong Date: Fri, 24 Apr 2026 10:38:48 +0800 Subject: [PATCH 09/98] update workflow highlights --- .github/skills/azure-typespec-author/SKILL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/SKILL.md b/.github/skills/azure-typespec-author/SKILL.md index bd94ae4a0bd..09f5b81d71a 100644 --- a/.github/skills/azure-typespec-author/SKILL.md +++ b/.github/skills/azure-typespec-author/SKILL.md @@ -18,7 +18,7 @@ compatibility: ## Workflow -> Analyze → Intake → Plan → Apply → Validate +> Analyze → Intake → Plan → Apply → Validate → Output reference links - [ ] Step 1 — Analyze project - [ ] Step 2 — Intake From 79bca6bb176b0952e413b9e3a860b37b64387167 Mon Sep 17 00:00:00 2001 From: JoyerJin <116236375+JoyerJin@users.noreply.github.com> Date: Fri, 24 Apr 2026 17:45:14 +0800 Subject: [PATCH 10/98] update more case graders Co-authored-by: Copilot --- .../evaluate/evals/001002.eval.yaml | 4 +- .../evaluate/evals/001005.eval.yaml | 25 +- .../evaluate/evals/001007.eval.yaml | 13 +- .../evaluate/evals/001011.eval.yaml | 4 + .../evaluate/evals/001012.eval.yaml | 4 + .../evaluate/evals/001013.eval.yaml | 4 + .../evaluate/evals/002001.eval.yaml | 4 + .../evaluate/evals/002006.eval.yaml | 4 + .../evaluate/evals/002007.eval.yaml | 4 + .../evaluate/evals/002008.eval.yaml | 4 + .../evaluate/evals/002010.eval.yaml | 8 +- .../evaluate/evals/003001.eval.yaml | 8 +- .../evaluate/evals/003002.eval.yaml | 4 + .../evaluate/evals/004001.eval.yaml | 10 +- .../evaluate/evals/004002.eval.yaml | 4 + .../evaluate/evals/004003.eval.yaml | 24 + .../evaluate/evals/all.eval.yaml | 83 +- .../Microsoft.Widget/Widget/package-lock.json | 7870 +++++++++++++++++ 18 files changed, 8029 insertions(+), 52 deletions(-) create mode 100644 .github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/package-lock.json diff --git a/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml index c73536ed985..f5b6be917b3 100644 --- a/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml @@ -17,7 +17,7 @@ config: stimuli: - name: 001002-version-default-value prompt: | - add a default value `21` for property age in model EmployeeProperties only for a new api version 2025-11-01 + add a default value `21` for property age in model EmployeeProperties only for the new api version 2025-11-01 constraints: max_turns: 10 max_tokens: 5000 @@ -62,7 +62,7 @@ stimuli: config: scoring: scale_1_5 threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + prompt: 'Verify change scope and quality only: add a default value of 21 for the `age` property in `EmployeeProperties` that only applies to the 2025-11-01 API version. The old age renamed and removed for the new version.' model: claude-opus-4.6 scoring: weights: diff --git a/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml index e5c8494ea4e..0372eb49151 100644 --- a/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml @@ -93,17 +93,26 @@ stimuli: config: path: employee.tsp pattern: oldAge - - type: prompt + - type: file-matches + config: + path: employee.tsp + pattern: '@added\(Versions\.v2025_05_04_preview\)\s+workLocation\?: WorkLocation;' + - type: file-not-matches config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 + path: employee.tsp + pattern: v2024_10_01_preview + - type: file-matches + config: + path: employee.tsp + pattern: 'age\?: int32;' + - type: file-matches + config: + path: employee.tsp + pattern: '@typeChangedFrom\(Versions\.v2025_05_04_preview, string\[\]\)' scoring: weights: - prompt: 1 - file-matches: 1 - file-not-matches: 2 + file-matches: 4 + file-not-matches: 3 file-exists: 1 file-not-exists: 1 tool-calls: 1 diff --git a/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml index 78d35fcc97f..4bf4023cad1 100644 --- a/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml @@ -102,20 +102,17 @@ stimuli: - type: file-matches config: path: employee.tsp - pattern: '@added\(Versions\.v2025_01_01\)' + pattern: '@removed\(Versions\.v2025_01_01\)\s*@renamedFrom\(Versions\.v2025_01_01, "age"\)\s*oldAge\?: int32;' + - type: file-matches + config: + path: employee.tsp + pattern: '@added\(Versions\.v2025_01_01\)\s*age\?: int32 = 21;' - type: file-not-matches config: path: employee.tsp pattern: v2024_10_01_preview - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Evaluate only the semantic interpretation of the request: the excluded features are workLocation property and WorkLocation model, while other features should be carried. Double check the plan has correctly implemented version renaming (2024-10-01-preview → 2025-01-01), old version removal, new version example setup and old version example removal.' - model: claude-opus-4.6 scoring: weights: - prompt: 1 file-matches: 2 file-not-matches: 3 file-exists: 1 diff --git a/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml index 5ac970146c3..e1b41b6b161 100644 --- a/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml @@ -35,6 +35,10 @@ stimuli: dest: Microsoft.Widget/Widget/shared.tsp - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: Microsoft.Widget/Widget/tspconfig.yaml + - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json + dest: Microsoft.Widget/Widget/stable/2021-11-01/widget.json + - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json + dest: Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json graders: - type: tool-calls config: diff --git a/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml index fb27bde81da..4d28860c18a 100644 --- a/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml @@ -35,6 +35,10 @@ stimuli: dest: Microsoft.Widget/Widget/shared.tsp - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: Microsoft.Widget/Widget/tspconfig.yaml + - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json + dest: Microsoft.Widget/Widget/stable/2021-11-01/widget.json + - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json + dest: Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json graders: - type: tool-calls config: diff --git a/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml index 574742c2bcb..aaab88da005 100644 --- a/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml @@ -35,6 +35,10 @@ stimuli: dest: Microsoft.Widget/Widget/shared.tsp - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: Microsoft.Widget/Widget/tspconfig.yaml + - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json + dest: Microsoft.Widget/Widget/stable/2021-11-01/widget.json + - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json + dest: Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json graders: - type: tool-calls config: diff --git a/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml index 81643f41195..9b0d7593333 100644 --- a/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml @@ -35,6 +35,10 @@ stimuli: dest: shared.tsp - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml + - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json + dest: stable/2021-11-01/widget.json + - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json + dest: preview/2024-10-01-preview/widget.json graders: - type: tool-calls config: diff --git a/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml index e834451b803..94d7c5fff80 100644 --- a/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml @@ -35,6 +35,10 @@ stimuli: dest: shared.tsp - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml + - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json + dest: stable/2021-11-01/widget.json + - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json + dest: preview/2024-10-01-preview/widget.json graders: - type: tool-calls config: diff --git a/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml index c13b69bfabf..e90228a58db 100644 --- a/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml @@ -35,6 +35,10 @@ stimuli: dest: shared.tsp - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml + - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json + dest: stable/2021-11-01/widget.json + - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json + dest: preview/2024-10-01-preview/widget.json graders: - type: tool-calls config: diff --git a/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml index 0488a8784af..46c96e39c80 100644 --- a/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml @@ -35,6 +35,10 @@ stimuli: dest: shared.tsp - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml + - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json + dest: stable/2021-11-01/widget.json + - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json + dest: preview/2024-10-01-preview/widget.json graders: - type: tool-calls config: diff --git a/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml index b731c350fe8..a77a3640556 100644 --- a/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml @@ -45,7 +45,11 @@ stimuli: - type: file-matches config: path: employee.tsp - pattern: 'exportData is ArmResourceActionSync;' + pattern: 'exportData\s+is\s+ArmResourceActionSync' + - type: file-matches + config: + path: employee.tsp + pattern: 'ExportResponse' - type: prompt config: scoring: scale_1_5 @@ -56,5 +60,5 @@ scoring: weights: tool-calls: 1 prompt: 1 - file-matches: 1 + file-matches: 2 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml index 571bc42f421..8dd9b7d728f 100644 --- a/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml @@ -46,7 +46,11 @@ stimuli: - type: file-matches config: path: employee.tsp - pattern: 'move\s+is\s+ArmResourceActionAsync\s*<\s*Employee\s*,\s*MoveRequest\s*,\s*MoveResponse\s*,\s*LroHeaders\s*=\s*(ArmCombinedLroHeaders\s*<\s*FinalResult\s*=\s*MoveResponse\s*>|EmployeeMoveLroHeaders)\s*>' + pattern: 'move\s+is\s+ArmResourceActionAsync\s*<\s*Employee\s*,\s*MoveRequest\s*,\s*MoveResponse\s*,\s*LroHeaders\s*=' + - type: file-matches + config: + path: employee.tsp + pattern: 'ArmCombinedLroHeaders\s*<\s*FinalResult\s*=\s*MoveResponse\s*>' - type: prompt config: scoring: scale_1_5 @@ -57,5 +61,5 @@ scoring: weights: tool-calls: 1 prompt: 1 - file-matches: 1 + file-matches: 2 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml index bae83471b1c..f1c44939c32 100644 --- a/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml @@ -35,6 +35,10 @@ stimuli: dest: shared.tsp - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml + - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json + dest: stable/2021-11-01/widget.json + - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json + dest: preview/2024-10-01-preview/widget.json graders: - type: tool-calls config: diff --git a/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml index 5638355c628..074e66955f1 100644 --- a/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml @@ -35,6 +35,10 @@ stimuli: dest: shared.tsp - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml + - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json + dest: stable/2021-11-01/widget.json + - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json + dest: preview/2024-10-01-preview/widget.json graders: - type: tool-calls config: @@ -45,11 +49,7 @@ stimuli: - type: file-matches config: path: '*.tsp' - pattern: '@minLength\(1\)|@@minLength\(Employee\.name,\s*1\)' - - type: file-matches - config: - path: '*.tsp' - pattern: 'ResourceNameParameter|@key\("employeeName"\)' + pattern: '@@minLength\(Employee\.name,\s*1\)' - type: prompt config: scoring: scale_1_5 diff --git a/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml index e57e0834546..cf02806dbd4 100644 --- a/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml @@ -35,6 +35,10 @@ stimuli: dest: shared.tsp - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml + - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json + dest: stable/2021-11-01/widget.json + - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json + dest: preview/2024-10-01-preview/widget.json graders: - type: tool-calls config: diff --git a/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml index ac6920a373d..fee37196f97 100644 --- a/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml @@ -61,6 +61,30 @@ stimuli: config: path: NetworkInterface.tsp pattern: '@operationId\(' + - type: file-not-matches + config: + path: ExpressRouteGateway.tsp + pattern: '@operationId\(' + - type: file-not-matches + config: + path: ExpressRoutePort.tsp + pattern: '@operationId\(' + - type: file-not-matches + config: + path: NetworkInterface.tsp + pattern: '@operationId\(' + - type: file-not-matches + config: + path: P2SVpnGateway.tsp + pattern: '@operationId\(' + - type: file-not-matches + config: + path: VpnServerConfigurationPolicyGroup.tsp + pattern: '@operationId\(' + - type: file-not-matches + config: + path: VpnSiteLinkConnection.tsp + pattern: '@operationId\(' # VP2: Non-standard PascalCase operationIds restored with @operationId - type: file-matches config: diff --git a/.github/azure-typespec-author/evaluate/evals/all.eval.yaml b/.github/azure-typespec-author/evaluate/evals/all.eval.yaml index a5e45ab450a..b02a0868e0a 100644 --- a/.github/azure-typespec-author/evaluate/evals/all.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/all.eval.yaml @@ -275,12 +275,22 @@ stimuli: config: path: employee.tsp pattern: oldAge - - type: prompt + - type: file-matches config: - scoring: scale_1_5 - threshold: 1 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 + path: employee.tsp + pattern: '@added\(Versions\.v2025_05_04_preview\)\s+workLocation\?: WorkLocation;' + - type: file-not-matches + config: + path: employee.tsp + pattern: v2024_10_01_preview + - type: file-matches + config: + path: employee.tsp + pattern: 'age\?: int32;' + - type: file-matches + config: + path: employee.tsp + pattern: '@typeChangedFrom\(Versions\.v2025_05_04_preview, string\[\]\)' - name: 001006-version-add-preview-after-stable prompt: | Add a new preview version `2025-05-04-preview` to my service widget resource manager. Carry over all the features from the latest stable version @@ -425,8 +435,8 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-exists config: path: examples/2025-01-01/Employees_Get_MaximumSet_Gen.json @@ -448,17 +458,15 @@ stimuli: - type: file-matches config: path: employee.tsp - pattern: '@added\(Versions\.v2025_01_01\)' + pattern: '@removed\(Versions\.v2025_01_01\)\s*@renamedFrom\(Versions\.v2025_01_01, "age"\)\s*oldAge\?: int32;' + - type: file-matches + config: + path: employee.tsp + pattern: '@added\(Versions\.v2025_01_01\)\s*age\?: int32 = 21;' - type: file-not-matches config: path: employee.tsp pattern: v2024_10_01_preview - - type: prompt - config: - scoring: scale_1_5 - threshold: 1 - prompt: 'Evaluate only the semantic interpretation of the request: the excluded features are workLocation property and WorkLocation model, while other features should be carried. Double check the plan has correctly implemented version renaming (2024-10-01-preview → 2025-01-01), old version removal, new version example setup and old version example removal.' - model: claude-opus-4.6 - name: 001008-version-add-stable-after-stable prompt: | Add a new stable version `2025-01-01` to my service. Carry over changes. @@ -573,8 +581,8 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: Microsoft.Widget/Widget/main.tsp @@ -590,8 +598,8 @@ stimuli: - type: prompt config: scoring: scale_1_5 - threshold: 1 - prompt: Verify email property made required only in new version, only scoped edits made. Verify compile the project and fix any compilation errors if present. + threshold: 1.0 + prompt: 'Verify email property made required only in new version, only scoped edits made. Verify compile the project and fix any compilation errors if present.' model: claude-opus-4.6 - name: 001010-version-model-property-removed prompt: | @@ -617,8 +625,8 @@ stimuli: - type: tool-calls config: required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation - type: file-matches config: path: Microsoft.Widget/Widget/main.tsp @@ -651,6 +659,10 @@ stimuli: dest: Microsoft.Widget/Widget/shared.tsp - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: Microsoft.Widget/Widget/tspconfig.yaml + - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json + dest: Microsoft.Widget/Widget/stable/2021-11-01/widget.json + - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json + dest: Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json graders: - type: tool-calls config: @@ -1185,6 +1197,10 @@ stimuli: dest: shared.tsp - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml + - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json + dest: stable/2021-11-01/widget.json + - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json + dest: preview/2024-10-01-preview/widget.json graders: - type: tool-calls config: @@ -1262,7 +1278,11 @@ stimuli: - type: file-matches config: path: employee.tsp - pattern: exportData is ArmResourceActionSync; + pattern: 'exportData\s+is\s+ArmResourceActionSync' + - type: file-matches + config: + path: employee.tsp + pattern: 'ExportResponse' - type: prompt config: scoring: scale_1_5 @@ -1299,7 +1319,11 @@ stimuli: - type: file-matches config: path: employee.tsp - pattern: move\s+is\s+ArmResourceActionAsync\s*<\s*Employee\s*,\s*MoveRequest\s*,\s*MoveResponse\s*,\s*LroHeaders\s*=\s*(ArmCombinedLroHeaders\s*<\s*FinalResult\s*=\s*MoveResponse\s*>|EmployeeMoveLroHeaders)\s*> + pattern: 'move\s+is\s+ArmResourceActionAsync\s*<\s*Employee\s*,\s*MoveRequest\s*,\s*MoveResponse\s*,\s*LroHeaders\s*=' + - type: file-matches + config: + path: employee.tsp + pattern: 'ArmCombinedLroHeaders\s*<\s*FinalResult\s*=\s*MoveResponse\s*>' - type: prompt config: scoring: scale_1_5 @@ -1416,10 +1440,12 @@ stimuli: dest: package.json - src: ../fixtures/Microsoft.Widget/Widget/readme.md dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml dest: tspconfig.yaml + - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json + dest: stable/2021-11-01/widget.json + - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json + dest: preview/2024-10-01-preview/widget.json graders: - type: tool-calls config: @@ -1545,4 +1571,11 @@ stimuli: config: path: models.tsp pattern: 'FIXME: Update justification, follow aka\.ms/tsp/conversion-fix for details' - +scoring: + weights: + file-matches: 1 + file-not-matches: 1 + file-exists: 1 + file-not-exists: 1 + tool-calls: 1 + threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/package-lock.json b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/package-lock.json new file mode 100644 index 00000000000..372c0155191 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/package-lock.json @@ -0,0 +1,7870 @@ +{ + "name": "azure-rest-api-specs", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "azure-rest-api-specs", + "devDependencies": { + "@autorest/openapi-to-typespec": "0.11.13", + "@azure-tools/openai-typespec": "1.11.0", + "@azure-tools/spec-gen-sdk": "~0.9.1", + "@azure-tools/specs-shared": "file:.github/shared", + "@azure-tools/typespec-apiview": "0.7.2", + "@azure-tools/typespec-autorest": "0.66.0", + "@azure-tools/typespec-azure-core": "0.66.0", + "@azure-tools/typespec-azure-portal-core": "0.66.0", + "@azure-tools/typespec-azure-resource-manager": "0.66.0", + "@azure-tools/typespec-azure-rulesets": "0.66.0", + "@azure-tools/typespec-client-generator-cli": "0.31.0", + "@azure-tools/typespec-client-generator-core": "0.66.3", + "@azure-tools/typespec-liftr-base": "0.13.0", + "@azure-tools/typespec-metadata": "0.1.1", + "@azure/avocado": "0.10.5", + "@azure/oad": "0.12.4", + "@microsoft.azure/openapi-validator": "2.2.4", + "@microsoft.azure/openapi-validator-core": "1.0.7", + "@microsoft.azure/openapi-validator-rulesets": "2.2.5", + "@typespec/compiler": "1.10.0", + "@typespec/events": "0.80.0", + "@typespec/http": "1.10.0", + "@typespec/openapi": "1.10.0", + "@typespec/openapi3": "1.10.0", + "@typespec/prettier-plugin-typespec": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/sse": "0.80.0", + "@typespec/streams": "0.80.0", + "@typespec/versioning": "0.80.0", + "@typespec/xml": "0.80.0", + "azure-rest-api-specs-eng-tools": "file:eng/tools", + "oav": "4.0.3", + "prettier": "3.8.1", + "typescript": "~5.9.2" + }, + "engines": { + "node": ">=20.0.0", + "npm": ">=10.0.0" + } + }, + ".github/shared": { + "dev": true + }, + "eng/tools": { + "dev": true + }, + "node_modules/@apidevtools/json-schema-ref-parser": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.1.2.tgz", + "integrity": "sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.6", + "call-me-maybe": "^1.0.1", + "js-yaml": "^4.1.0" + } + }, + "node_modules/@apidevtools/openapi-schemas": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz", + "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@apidevtools/swagger-methods": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", + "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@apidevtools/swagger-parser": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-12.1.0.tgz", + "integrity": "sha512-e5mJoswsnAX0jG+J09xHFYQXb/bUc5S3pLpMxUuRUA2H8T2kni3yEoyz2R3Dltw5f4A6j6rPNMpWTK+iVDFlng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@apidevtools/json-schema-ref-parser": "14.0.1", + "@apidevtools/openapi-schemas": "^2.1.0", + "@apidevtools/swagger-methods": "^3.0.2", + "ajv": "^8.17.1", + "ajv-draft-04": "^1.0.0", + "call-me-maybe": "^1.0.2" + }, + "peerDependencies": { + "openapi-types": ">=7" + } + }, + "node_modules/@apidevtools/swagger-parser/node_modules/@apidevtools/json-schema-ref-parser": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-14.0.1.tgz", + "integrity": "sha512-Oc96zvmxx1fqoSEdUmfmvvb59/KDOnUoJ7s2t7bISyAn0XEz57LCCw8k2Y4Pf3mwKaZLMciESALORLgfe2frCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.15", + "js-yaml": "^4.1.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/philsturgeon" + } + }, + "node_modules/@apidevtools/swagger-parser/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@apidevtools/swagger-parser/node_modules/ajv-draft-04": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^8.5.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/@apidevtools/swagger-parser/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/@autorest/codemodel": { + "version": "4.20.1", + "resolved": "https://registry.npmjs.org/@autorest/codemodel/-/codemodel-4.20.1.tgz", + "integrity": "sha512-MdI4G0EdQ8yOxGzgT1rCOXxXkCrUQLjVykOvdAyByIgHbnpRop1UzUQuuKmXO8gQPSy7xwYhnfVSgETbHIJZgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure-tools/codegen": "~2.10.1", + "js-yaml": "~4.1.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@autorest/core": { + "version": "3.10.9", + "resolved": "https://registry.npmjs.org/@autorest/core/-/core-3.10.9.tgz", + "integrity": "sha512-k7vYHZMgzdu0FBC2j+ezj7mjptm+UOzQvtj/e3l78qAKi8L/SMLUQXTsw8Z2OL8vNG8MK4A/qlqVRwfM9k91vA==", + "dev": true, + "license": "MIT", + "bin": { + "autorest-core": "entrypoints/app.js", + "autorest-language-service": "entrypoints/language-service.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@autorest/extension-base": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@autorest/extension-base/-/extension-base-3.6.1.tgz", + "integrity": "sha512-FWfO6LM3p+R1dW87wnGdJsCpZw67/h1hj09LsQuY0ywKBKv9lrLAW6AlVPrFyvUUIaCMMgd01U6TifCz/FRG9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure-tools/codegen": "~2.10.1", + "js-yaml": "~4.1.0", + "vscode-jsonrpc": "^3.5.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@autorest/openapi-to-typespec": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@autorest/openapi-to-typespec/-/openapi-to-typespec-0.11.13.tgz", + "integrity": "sha512-4ub+WpzV0Nt1x+ZiIaumysrl5ftrBjfd/I9R3Vj624dUzP9QAmP5xGaRMiayIMeSYVITurRsroJ8wb4PHoJmpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@autorest/codemodel": "~4.20.1", + "@autorest/extension-base": "~3.6.1", + "@azure-tools/codegen": "~2.10.1", + "@azure-tools/openapi": "~3.6.1", + "@typespec/prettier-plugin-typespec": "^1.5.0", + "change-case-all": "~2.1.0", + "lodash": "~4.17.20", + "pluralize": "^8.0.0", + "prettier": "~3.5.3" + } + }, + "node_modules/@autorest/openapi-to-typespec/node_modules/prettier": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/@autorest/schemas": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@autorest/schemas/-/schemas-1.3.6.tgz", + "integrity": "sha512-kuditGLKhfEjHQxb1aCfs/j2hJL2y8eYEB94smxDd7Qp9beR+oYWwAM/y6PzgkAfk6OrRb3hZ+/NaZTXdoKU5A==", + "dev": true, + "license": "ISC" + }, + "node_modules/@azure-tools/async-io": { + "version": "3.0.254", + "resolved": "https://registry.npmjs.org/@azure-tools/async-io/-/async-io-3.0.254.tgz", + "integrity": "sha512-X1C7XdyCuo50ch9FzKtTvmK18FgDxxf1Bbt3cSoknQqeDaRegHSSCO+zByq2YA4NvUzKXeZ1engh29IDxZXgpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure-tools/tasks": "~3.0.255", + "proper-lockfile": "~2.0.1" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/@azure-tools/codegen": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@azure-tools/codegen/-/codegen-2.10.1.tgz", + "integrity": "sha512-fZfREKjQnBTscjObgK4LuyZNFaofoCNQDNz0jl1i8fYNwCM5EOF9BXwtEtobuEyCpPUNDxQ/KKO65eWzirqk4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure-tools/async-io": "~3.0.0", + "js-yaml": "~4.1.0", + "semver": "^7.7.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@azure-tools/json": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@azure-tools/json/-/json-1.3.1.tgz", + "integrity": "sha512-0f4kQ6c513ycuk0Z29Nm09D/3dQHrHkduUW8wsFR1QTQ5uqgdYaDWg5I4cZbA8OkOIrJG73TzB/3G0liVCQ+Fw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@azure-tools/jsonschema": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@azure-tools/jsonschema/-/jsonschema-1.3.1.tgz", + "integrity": "sha512-P4KnJzZJjCATcn3nRcF5MPja2wrPdP48Us643+0eqGtNBL4O20CFVEm6WFeFeR8JhvNCsZfeayHiE6VOspe1rg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@azure-tools/openai-typespec": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@azure-tools/openai-typespec/-/openai-typespec-1.11.0.tgz", + "integrity": "sha512-xxHeThd4CJZeOZ7JPV6lPj+8vSkO7V1qZ+zodQdZdlx0jDX7tTJ9VJ5ZakZ/R7g+3sfoECIuhE0TCz+Wq6nXWA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@typespec/http": "*", + "@typespec/openapi": "*" + } + }, + "node_modules/@azure-tools/openapi": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@azure-tools/openapi/-/openapi-3.6.1.tgz", + "integrity": "sha512-vkIu0CUg09bzxqrlrNHdoOPu9AFhObp0FqG40M2WaF2dcVgLalsUc+wK5s4LpftlZAxcBmzVHna22JhI5/0X9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure-tools/json": "~1.3.1", + "@azure-tools/jsonschema": "~1.3.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@azure-tools/openapi-tools-common": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@azure-tools/openapi-tools-common/-/openapi-tools-common-1.2.2.tgz", + "integrity": "sha512-r6oBkNsND1sA+ZjHlE1vTf2hUj4RUnbD9KG9uksEKnLVC6oOD5WuJYCO5y4xDzWWuR0x+9gImovQqXAE7ZXYfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/async-retry": "^1.4.1", + "@types/commonmark": "^0.27.3", + "@types/node-fetch": "^2.5.7", + "async-retry": "^1.2.3", + "commonmark": "^0.28.1", + "front-matter": "^4.0.2", + "node-fetch": "^2.6.0", + "tslib": "^2.0.0" + } + }, + "node_modules/@azure-tools/openapi-tools-common/node_modules/commonmark": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/commonmark/-/commonmark-0.28.1.tgz", + "integrity": "sha512-PklsZ9pgrfFQ5hQH9BRzoWnqI9db2LeR9MhvkNk8iz97kfaTNmhTU+IE8jKDHTEfivZZXoFqzGqzddXdk14EJw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "entities": "~ 1.1.1", + "mdurl": "~ 1.0.1", + "minimist": "~ 1.2.0", + "string.prototype.repeat": "^0.2.0" + }, + "bin": { + "commonmark": "bin/commonmark" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@azure-tools/openapi-tools-common/node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/@azure-tools/spec-gen-sdk": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/@azure-tools/spec-gen-sdk/-/spec-gen-sdk-0.9.7.tgz", + "integrity": "sha512-itvieLe36WCP6yVQUclAdnCUAxCUfVCbYAKHWZA+avKwl1taAMilkG5s9UyYiT/Bkprw3HNzlUFTB83kCk45Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.6", + "filehound": "^1.17.5", + "handlebars": "~4.7.7", + "jsonc-parser": "^2.3.1", + "lodash": "^4.17.20", + "marked": "^15.0.6", + "prettier": "2.1.2", + "winston": "^3.3.3", + "winston-transport": "^4.4.0", + "yaml": "^2.7.0", + "yargs": "^17.7.2" + }, + "bin": { + "spec-gen-sdk": "cmd/spec-gen-sdk.js" + }, + "engines": { + "node": ">=20.10.0" + } + }, + "node_modules/@azure-tools/spec-gen-sdk/node_modules/prettier": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.2.tgz", + "integrity": "sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@azure-tools/specs-shared": { + "resolved": ".github/shared", + "link": true + }, + "node_modules/@azure-tools/tasks": { + "version": "3.0.255", + "resolved": "https://registry.npmjs.org/@azure-tools/tasks/-/tasks-3.0.255.tgz", + "integrity": "sha512-GjALNLz7kWMEdRVbaN5g0cJHNAr3XVTbP0611Mv2UzMgGL6FOhNZJK+oPHJKLDR8EEDZNnkwPlyi7B+INXUSQA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/@azure-tools/typespec-apiview": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-apiview/-/typespec-apiview-0.7.2.tgz", + "integrity": "sha512-4nF24c4agRkLdb9ldMU+zfY37MEvBNB2wm42j6AJAagk89/SLqU0YCNrDBH9IBPLb6UnXCEodIou3TBl6Fu7VA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@typespec/compiler": "^1.0.0", + "@typespec/versioning": ">=0.67 <1.0" + } + }, + "node_modules/@azure-tools/typespec-autorest": { + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-autorest/-/typespec-autorest-0.66.0.tgz", + "integrity": "sha512-sznnlQ2Cyxny7bXSl+PzGu+qQf/rrSIvf2qR7G/bqWbK6MNykXwiDk9uR5q93Y8spA9vv4jk38Il4rSXqmAzLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@azure-tools/typespec-azure-core": "^0.66.0", + "@azure-tools/typespec-azure-resource-manager": "^0.66.0", + "@azure-tools/typespec-client-generator-core": "^0.66.0", + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0", + "@typespec/openapi": "^1.10.0", + "@typespec/rest": "^0.80.0", + "@typespec/versioning": "^0.80.0", + "@typespec/xml": "^0.80.0" + }, + "peerDependenciesMeta": { + "@typespec/xml": { + "optional": true + } + } + }, + "node_modules/@azure-tools/typespec-azure-core": { + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.66.0.tgz", + "integrity": "sha512-OBKxRN7AucK3snh+GtLKSDdcZTz08IgcSZlIO3c4KSlmcR5twT1NMyqf1+V8SAhyOdZimndb+ikzrkkgab+GpA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0", + "@typespec/rest": "^0.80.0" + } + }, + "node_modules/@azure-tools/typespec-azure-portal-core": { + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-portal-core/-/typespec-azure-portal-core-0.66.0.tgz", + "integrity": "sha512-aYFNKi227V/okLORJEYRWg5luPD+9y/aGbPfdRYlng842ubbb+LE2X9GbiJbwzHIyJT3/o0l5O6W5h7gf9PDVQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@azure-tools/typespec-azure-resource-manager": "^0.66.0", + "@typespec/compiler": "^1.10.0" + } + }, + "node_modules/@azure-tools/typespec-azure-resource-manager": { + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.66.0.tgz", + "integrity": "sha512-UbgYUaYTt7prsv+RYxd2kiOWjeEeoH56QOqgXnSOFhYzq/h9fyDaQAm6+CY7cklziED+MYy3uMQd1BG9mNwlfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "change-case": "~5.4.4", + "pluralize": "^8.0.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@azure-tools/typespec-azure-core": "^0.66.0", + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0", + "@typespec/openapi": "^1.10.0", + "@typespec/rest": "^0.80.0", + "@typespec/versioning": "^0.80.0" + } + }, + "node_modules/@azure-tools/typespec-azure-rulesets": { + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-rulesets/-/typespec-azure-rulesets-0.66.0.tgz", + "integrity": "sha512-Wf0SpphmKDDzHgaqpxl68DpP65VUWjpD3mrnZ3Lw4Pdtt8BcZf7+LKgFF06gPRnh15hR0VbjAERCzxI/qGY4ag==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@azure-tools/typespec-azure-core": "^0.66.0", + "@azure-tools/typespec-azure-resource-manager": "^0.66.0", + "@azure-tools/typespec-client-generator-core": "^0.66.1", + "@typespec/compiler": "^1.10.0" + } + }, + "node_modules/@azure-tools/typespec-client-generator-cli": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-cli/-/typespec-client-generator-cli-0.31.0.tgz", + "integrity": "sha512-ukz9IROlYhr0TAXeVLT6oHb/SbZyDFp+rTKYw5XblNBJChLiq+PDalrjyWXsSF8J15TfKS4vixEOc+LZUQQb0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@autorest/core": "^3.10.2", + "@autorest/openapi-to-typespec": ">=0.10.6 <1.0.0", + "@azure-tools/typespec-autorest": ">=0.53.0 <1.0.0", + "@azure/core-rest-pipeline": "^1.12.0", + "@types/yargs": "^17.0.32", + "autorest": "^3.7.1", + "chalk": "^5.3.0", + "dotenv": "^16.4.5", + "prompt-sync": "^4.2.0", + "simple-git": "^3.20.0", + "yaml": "^2.3.1", + "yargs": "^17.2.1" + }, + "bin": { + "tsp-client": "cmd/tsp-client.js" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@typespec/compiler": "1.0.0-rc.1 || >=1.0.0 <2.0.0" + } + }, + "node_modules/@azure-tools/typespec-client-generator-core": { + "version": "0.66.3", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.66.3.tgz", + "integrity": "sha512-sNetQ6igxAp/vL6X2kEIy715ToDTqoJeb+OL59GEUtOW/3KBSi5tsxvDdCwSfEoaNEmv/FYjh/gJDwAWCJdFJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "change-case": "~5.4.4", + "pluralize": "^8.0.0", + "yaml": "~2.8.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@azure-tools/typespec-azure-core": "^0.66.0", + "@typespec/compiler": "^1.10.0", + "@typespec/events": "^0.80.0", + "@typespec/http": "^1.10.0", + "@typespec/openapi": "^1.10.0", + "@typespec/rest": "^0.80.0", + "@typespec/sse": "^0.80.0", + "@typespec/streams": "^0.80.0", + "@typespec/versioning": "^0.80.0", + "@typespec/xml": "^0.80.0" + } + }, + "node_modules/@azure-tools/typespec-liftr-base": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-liftr-base/-/typespec-liftr-base-0.13.0.tgz", + "integrity": "sha512-MF40K/IHwyy3N606DTZSPhFSwA/84ekR9RqvmtJXsXD0SdYcQSoAHOJp4o5qw8OAPSC+aKZ5A+TXRx333V/3PQ==", + "dev": true + }, + "node_modules/@azure-tools/typespec-metadata": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-metadata/-/typespec-metadata-0.1.1.tgz", + "integrity": "sha512-i28N2ridCH0JoWJ/R3KYZaQF5hYXugPWtef80JXcPtdOmoWIizJ8q/3eSNhuPMOJPXVk8tOWGALlduyrtYI+pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yaml": "~2.8.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@typespec/compiler": "^1.10.0" + } + }, + "node_modules/@azure-tools/uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@azure-tools/uri/-/uri-3.1.1.tgz", + "integrity": "sha512-UgPgD+qVtm4ASYqoTDazjowimrmMGGEQqPnNk9K/8CZdi2oSLtGqX9S1++2+NDaHlq74VyxbcNMKoxgO+2CCUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure-tools/async-io": "~3.0.0", + "file-url": "3.0.0", + "get-uri": "~3.0.2", + "urijs": "~1.19.1" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/avocado": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@azure/avocado/-/avocado-0.10.5.tgz", + "integrity": "sha512-0zTQ2ha0deH8cJiJLYIg3jgR9tqNVvALyNjRpEtKbgBolK5iAKXDmkWj96y1mixG2d/r8s3vSZcrQ22gi4f7wg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/openapi-markdown": "0.9.4", + "@azure/swagger-validation-common": "0.1.2", + "@ts-common/async-iterator": "^1.1.0", + "@ts-common/commonmark-to-markdown": "^2.0.2", + "@ts-common/fs": "^1.1.0", + "@ts-common/iterator": "^1.1.2", + "@ts-common/json": "^1.1.0", + "@ts-common/json-parser": "^1.1.0", + "@ts-common/string-map": "^1.1.1", + "commonmark": "0.31.2", + "glob": "^13.0.0", + "js-yaml": "^4.1.0", + "jsonpath-plus": "^10.0.0", + "node-object-hash": "^3.1.1", + "yargs": "^15.4.1" + }, + "bin": { + "avocado": "bin/cli.js" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/avocado/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@azure/avocado/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/@azure/avocado/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@azure/avocado/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@azure/avocado/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@azure/avocado/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@azure/avocado/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@azure/core-auth": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz", + "integrity": "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-util": "^1.13.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.23.0.tgz", + "integrity": "sha512-Evs1INHo+jUjwHi1T6SG6Ua/LHOQBCLuKEEE6efIpt4ZOoNonaT1kP32GoOcdNDbfqsD2445CPri3MubBy5DEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.10.0", + "@azure/core-tracing": "^1.3.0", + "@azure/core-util": "^1.13.0", + "@azure/logger": "^1.3.0", + "@typespec/ts-http-runtime": "^0.3.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/core-tracing": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz", + "integrity": "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/core-util": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz", + "integrity": "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@typespec/ts-http-runtime": "^0.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/logger": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz", + "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typespec/ts-http-runtime": "^0.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/ms-rest-js": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@azure/ms-rest-js/-/ms-rest-js-2.7.0.tgz", + "integrity": "sha512-ngbzWbqF+NmztDOpLBVDxYM+XLcUj7nKhxGbSU9WtIsXfRB//cf2ZbAG5HkOrhU9/wd/ORRB6lM/d69RKVjiyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/core-auth": "^1.1.4", + "abort-controller": "^3.0.0", + "form-data": "^2.5.0", + "node-fetch": "^2.6.7", + "tslib": "^1.10.0", + "tunnel": "0.0.6", + "uuid": "^8.3.2", + "xml2js": "^0.5.0" + } + }, + "node_modules/@azure/ms-rest-js/node_modules/form-data": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.5.tgz", + "integrity": "sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.35", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/@azure/ms-rest-js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/oad": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/@azure/oad/-/oad-0.12.4.tgz", + "integrity": "sha512-HQYwZpv5psul/EKCjDFIEapYP54W6/Q9dAZ9iLez/d5e3w1xGbZl5BQHiCeq+VCOBVoj8FrkWMa1mHYBQziZog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ts-common/fs": "0.2.0", + "@ts-common/iterator": "0.3.6", + "@ts-common/json": "0.3.1", + "@ts-common/json-parser": "0.9.0", + "@ts-common/source-map": "0.5.0", + "@ts-common/string-map": "0.3.0", + "autorest": "^3.8.0", + "js-yaml": "^4.1.0", + "json-pointer": "0.6.2", + "json-refs": "^3.0.15", + "lodash": "^4.17.21", + "source-map": "0.7.6", + "tslib": "^2.6.3", + "winston": "^3.13.0", + "yargs": "^15.4.1" + }, + "bin": { + "oad": "dist/cli.js" + }, + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/@azure/oad/node_modules/@ts-common/async-iterator": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@ts-common/async-iterator/-/async-iterator-0.2.3.tgz", + "integrity": "sha512-szLdrutwQxBCIECaO2RTFcUPFj+9QVk4xKAj+APgeeLoEs67tNjXFgvfU0kOfF04qTHlPNPqcutSqxMHqzG3qA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ts-common/iterator": "^0.3.6", + "tslib": "^1.10.0" + } + }, + "node_modules/@azure/oad/node_modules/@ts-common/async-iterator/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/oad/node_modules/@ts-common/fs": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@ts-common/fs/-/fs-0.2.0.tgz", + "integrity": "sha512-ul1v4ZatcHuAzrwr/hGjSbk37pnfnLYDWC1yMEynQlnV8ndAcIVNYwQPPOYtLADPKTi3y74g5Q4BF3xPurDHLA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ts-common/async-iterator": "^0.2.0", + "@types/node": "^10.12.18", + "tslib": "^1.9.3" + } + }, + "node_modules/@azure/oad/node_modules/@ts-common/fs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/oad/node_modules/@ts-common/iterator": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@ts-common/iterator/-/iterator-0.3.6.tgz", + "integrity": "sha512-nNdcleTj3qLlchH17HI/xqOc6sNgOqJ5DdRR0nOEVdJVZCo5bfqoQTu6+Q9ZwMhuETuR2d86MSlmaL2FVHnPjQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@azure/oad/node_modules/@ts-common/json": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@ts-common/json/-/json-0.3.1.tgz", + "integrity": "sha512-vaplNdZPdeWr4p+hLJGdn08UMTSgYQrlRtxrAS0fAWyMlmFalBm/XRhHnohgiflRaj2jxl7ZxihjNlC/LZ/1YQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ts-common/iterator": "^0.3.1", + "@ts-common/string-map": "^0.3.0" + } + }, + "node_modules/@azure/oad/node_modules/@ts-common/json-parser": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@ts-common/json-parser/-/json-parser-0.9.0.tgz", + "integrity": "sha512-how0z/Ak7Bay+feIYfJFVV8UMw8Ky2Czoo5XwN7QigCOlN4HyW6wSNup4zrZ7t6NUB0002tW/+IOKCH2lAVJOg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ts-common/add-position": "0.0.2", + "@ts-common/iterator": "^0.3.5", + "@ts-common/json": "^0.3.1", + "@ts-common/source-map": "^0.5.0", + "@ts-common/string-map": "^0.3.0", + "tslib": "^1.9.3" + } + }, + "node_modules/@azure/oad/node_modules/@ts-common/json-parser/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/oad/node_modules/@ts-common/string-map": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@ts-common/string-map/-/string-map-0.3.0.tgz", + "integrity": "sha512-tikHtQPV/R48VAnlolyl1FIHciror68LXyruelvYf+lRE6ysjIGB2iNyw7wN6aDcUs2wN/CD6fF8Ye7lVIWNTQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ts-common/iterator": "^0.3.0" + } + }, + "node_modules/@azure/oad/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@azure/oad/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/@azure/oad/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@azure/oad/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@azure/oad/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@azure/oad/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@azure/oad/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@azure/openapi-markdown": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@azure/openapi-markdown/-/openapi-markdown-0.9.4.tgz", + "integrity": "sha512-QBxabmf+64mQuyWRLsBoLKdvB7PH2U9RsyQMekorl17DOVEkgQxMsQdL/WMlz/V2wMyiI433FlrbdUiiFapfKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ts-common/commonmark-to-markdown": "^2.0.2", + "@ts-common/iterator": "^0.3.1", + "@ts-common/string-map": "^0.3.0", + "@ts-common/virtual-fs": "^0.3.0", + "commonmark": "^0.28.1", + "js-yaml": "^3.13.1", + "tslib": "^1.9.3" + } + }, + "node_modules/@azure/openapi-markdown/node_modules/@ts-common/iterator": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@ts-common/iterator/-/iterator-0.3.6.tgz", + "integrity": "sha512-nNdcleTj3qLlchH17HI/xqOc6sNgOqJ5DdRR0nOEVdJVZCo5bfqoQTu6+Q9ZwMhuETuR2d86MSlmaL2FVHnPjQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@azure/openapi-markdown/node_modules/@ts-common/string-map": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@ts-common/string-map/-/string-map-0.3.0.tgz", + "integrity": "sha512-tikHtQPV/R48VAnlolyl1FIHciror68LXyruelvYf+lRE6ysjIGB2iNyw7wN6aDcUs2wN/CD6fF8Ye7lVIWNTQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ts-common/iterator": "^0.3.0" + } + }, + "node_modules/@azure/openapi-markdown/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@azure/openapi-markdown/node_modules/commonmark": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/commonmark/-/commonmark-0.28.1.tgz", + "integrity": "sha512-PklsZ9pgrfFQ5hQH9BRzoWnqI9db2LeR9MhvkNk8iz97kfaTNmhTU+IE8jKDHTEfivZZXoFqzGqzddXdk14EJw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "entities": "~ 1.1.1", + "mdurl": "~ 1.0.1", + "minimist": "~ 1.2.0", + "string.prototype.repeat": "^0.2.0" + }, + "bin": { + "commonmark": "bin/commonmark" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@azure/openapi-markdown/node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/@azure/openapi-markdown/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@azure/openapi-markdown/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/swagger-validation-common": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@azure/swagger-validation-common/-/swagger-validation-common-0.1.2.tgz", + "integrity": "sha512-QjmSpAliTzc77WTCnm3+zS2qVGv5U9/2h2y1ICZKQp5+0JSMcy3dPbS9WiKKkpsGQ2b1BJbDugJqKVg6a+8AeA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.8.tgz", + "integrity": "sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@so-ric/colorspace": "^1.1.6", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "node_modules/@inquirer/ansi": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.5.tgz", + "integrity": "sha512-doc2sWgJpbFQ64UflSVd17ibMGDuxO1yKgOgLMwavzESnXjFWJqUeG8saYosqKpHp4kWiM5x1nXvEjbpx90gzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + } + }, + "node_modules/@inquirer/figures": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.5.tgz", + "integrity": "sha512-NsSs4kzfm12lNetHwAn3GEuH317IzpwrMCbOuMIVytpjnJ90YYHNwdRgYGuKmVxwuIqSgqk3M5qqQt1cDk0tGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + } + }, + "node_modules/@inversifyjs/common": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@inversifyjs/common/-/common-1.5.2.tgz", + "integrity": "sha512-WlzR9xGadABS9gtgZQ+luoZ8V6qm4Ii6RQfcfC9Ho2SOlE6ZuemFo7PKJvKI0ikm8cmKbU8hw5UK6E4qovH21w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@inversifyjs/container": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@inversifyjs/container/-/container-1.15.0.tgz", + "integrity": "sha512-U2xYsPrJTz5za2TExi5lg8qOWf8TEVBpN+pQM7B8BVA2rajtbRE9A66SLRHk8c1eGXmg+0K4Hdki6tWAsSQBUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inversifyjs/common": "1.5.2", + "@inversifyjs/core": "9.2.0", + "@inversifyjs/plugin": "0.2.0", + "@inversifyjs/reflect-metadata-utils": "1.4.1" + }, + "peerDependencies": { + "reflect-metadata": "~0.2.2" + } + }, + "node_modules/@inversifyjs/core": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@inversifyjs/core/-/core-9.2.0.tgz", + "integrity": "sha512-Nm7BR6KmpgshIHpVQWuEDehqRVb6GBm8LFEuhc2s4kSZWrArZ15RmXQzROLk4m+hkj4kMXgvMm5Qbopot/D6Sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inversifyjs/common": "1.5.2", + "@inversifyjs/prototype-utils": "0.1.3", + "@inversifyjs/reflect-metadata-utils": "1.4.1" + } + }, + "node_modules/@inversifyjs/plugin": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@inversifyjs/plugin/-/plugin-0.2.0.tgz", + "integrity": "sha512-R/JAdkTSD819pV1zi0HP54mWHyX+H2m8SxldXRgPQarS3ySV4KPyRdosWcfB8Se0JJZWZLHYiUNiS6JvMWSPjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@inversifyjs/prototype-utils": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@inversifyjs/prototype-utils/-/prototype-utils-0.1.3.tgz", + "integrity": "sha512-EzRamZzNgE9Sn3QtZ8NncNa2lpPMZfspqbK6BWFguWnOpK8ymp2TUuH46ruFHZhrHKnknPd7fG22ZV7iF517TQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inversifyjs/common": "1.5.2" + } + }, + "node_modules/@inversifyjs/reflect-metadata-utils": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@inversifyjs/reflect-metadata-utils/-/reflect-metadata-utils-1.4.1.tgz", + "integrity": "sha512-Cp77C4d2wLaHXiUB7iH6Cxb7i1lD/YDuTIHLTDzKINqGSz0DCSoL/Dg2wVkW/6Qx03r/yQMLJ+32Agl32N2X8g==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "reflect-metadata": "~0.2.2" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jsep-plugin/assignment": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jsep-plugin/assignment/-/assignment-1.3.0.tgz", + "integrity": "sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.16.0" + }, + "peerDependencies": { + "jsep": "^0.4.0||^1.0.0" + } + }, + "node_modules/@jsep-plugin/regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jsep-plugin/regex/-/regex-1.0.4.tgz", + "integrity": "sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.16.0" + }, + "peerDependencies": { + "jsep": "^0.4.0||^1.0.0" + } + }, + "node_modules/@jsep-plugin/ternary": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@jsep-plugin/ternary/-/ternary-1.1.4.tgz", + "integrity": "sha512-ck5wiqIbqdMX6WRQztBL7ASDty9YLgJ3sSAK5ZpBzXeySvFGCzIvM6UiAI4hTZ22fEcYQVV/zhUbNscggW+Ukg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.16.0" + }, + "peerDependencies": { + "jsep": "^0.4.0||^1.0.0" + } + }, + "node_modules/@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1" + } + }, + "node_modules/@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@microsoft.azure/openapi-validator": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@microsoft.azure/openapi-validator/-/openapi-validator-2.2.4.tgz", + "integrity": "sha512-dI21t3eEfoFQB8g1rhctbjEeA8cbL+F4VL+C7I7GyKPRTnRf2JrLac7+OXMJTuw74JYKuRtiCzqjUjS5JQCLYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure-tools/uri": "^3.1.1", + "@microsoft.azure/openapi-validator-core": "^1.0.0", + "@microsoft.azure/openapi-validator-rulesets": "^2.0.0", + "@stoplight/json-ref-resolver": "^3.1.6", + "@stoplight/spectral-core": "^1.18.3", + "@stoplight/types": "^14.1.1", + "js-yaml": "^4.1.0", + "tslib": "^2.3.1", + "vscode-jsonrpc": "^3.2.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@microsoft.azure/openapi-validator-core": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@microsoft.azure/openapi-validator-core/-/openapi-validator-core-1.0.7.tgz", + "integrity": "sha512-7hSz1571z2Efx86AnXCuV7jEKw88lKhBWHBdThPBvdGsEEkNTNvXnGMdae/eNRO9a//gqowQPuD0A5oQWimFwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure-tools/uri": "^3.1.1", + "dependency-graph": "^1.0.0", + "jsonc-parser": "^3.2.1", + "jsonpath-plus": "^10.3.0", + "lodash": "^4.17.21", + "tslib": "^2.3.1" + } + }, + "node_modules/@microsoft.azure/openapi-validator-core/node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@microsoft.azure/openapi-validator-rulesets": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@microsoft.azure/openapi-validator-rulesets/-/openapi-validator-rulesets-2.2.5.tgz", + "integrity": "sha512-Zqnz+gly2cE1bXWbpAHf8NNH5tbhxOjn4dvAQsfLRhjCNgz5UTL5hVlAWMXV3cfEDMqsC489ZcZ2o5zzQcuiOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@apidevtools/json-schema-ref-parser": "^9.0.9", + "@microsoft.azure/openapi-validator-core": "^1.0.0", + "@stoplight/json-ref-resolver": "^3.1.6", + "@stoplight/spectral-core": "^1.18.3", + "@stoplight/spectral-formats": "^1.6.0", + "@stoplight/spectral-functions": "^1.7.2", + "@stoplight/types": "^14.1.1", + "jsonpath-plus": "^10.3.0", + "lodash": "^4.17.21", + "string.prototype.matchall": "^4.0.11", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@paralleldrive/cuid2": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.3.1.tgz", + "integrity": "sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.1.5" + } + }, + "node_modules/@scalar/helpers": { + "version": "0.2.18", + "resolved": "https://registry.npmjs.org/@scalar/helpers/-/helpers-0.2.18.tgz", + "integrity": "sha512-w1d4tpNEVZ293oB2BAgLrS0kVPUtG3eByNmOCJA5eK9vcT4D3cmsGtWjUaaqit0BQCsBFHK51rasGvSWnApYTw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "node_modules/@scalar/json-magic": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@scalar/json-magic/-/json-magic-0.11.7.tgz", + "integrity": "sha512-GVz9E0vXu+ecypkdn0biK1gbQVkK4QTTX1Hq3eMgxlLQC91wwiqWfCqwfhuX0LRu+Z5OmYhLhufDJEEh56rVgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@scalar/helpers": "0.2.18", + "pathe": "^2.0.3", + "yaml": "^2.8.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@scalar/openapi-parser": { + "version": "0.24.17", + "resolved": "https://registry.npmjs.org/@scalar/openapi-parser/-/openapi-parser-0.24.17.tgz", + "integrity": "sha512-aM9UVrzlMreC3X/sZbyj+7XDZmat3ecGC3RpU8dqEO/HIH+CEX0xMLuP+41DhePCYg5+9TtDomSfWuMq4x1Z1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@scalar/helpers": "0.2.18", + "@scalar/json-magic": "0.11.7", + "@scalar/openapi-types": "0.5.4", + "@scalar/openapi-upgrader": "0.1.11", + "ajv": "^8.17.1", + "ajv-draft-04": "^1.0.0", + "ajv-formats": "^3.0.1", + "jsonpointer": "^5.0.1", + "leven": "^4.0.0", + "yaml": "^2.8.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@scalar/openapi-parser/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@scalar/openapi-parser/node_modules/ajv-draft-04": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^8.5.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/@scalar/openapi-parser/node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/@scalar/openapi-parser/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/@scalar/openapi-types": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@scalar/openapi-types/-/openapi-types-0.5.4.tgz", + "integrity": "sha512-2pEbhprh8lLGDfUI6mNm9EV104pjb3+aJsXrFaqfgOSre7r6NlgM5HcSbsLjzDAnTikjJhJ3IMal1Rz8WVwiOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "zod": "^4.3.5" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@scalar/openapi-upgrader": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@scalar/openapi-upgrader/-/openapi-upgrader-0.1.11.tgz", + "integrity": "sha512-ngJcHGoCHmpWgYtNy08vmzFfLdQEkMpvaCQqNPPMNKq0QEXOv89e/rn+TZJZgPnRlY7fDIoIhn9lNgr+azBW+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@scalar/openapi-types": "0.5.4" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@simple-git/args-pathspec": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@simple-git/args-pathspec/-/args-pathspec-1.0.3.tgz", + "integrity": "sha512-ngJMaHlsWDTfjyq9F3VIQ8b7NXbBLq5j9i5bJ6XLYtD6qlDXT7fdKY2KscWWUF8t18xx052Y/PUO1K1TRc9yKA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@simple-git/argv-parser": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@simple-git/argv-parser/-/argv-parser-1.1.1.tgz", + "integrity": "sha512-Q9lBcfQ+VQCpQqGJFHe5yooOS5hGdLFFbJ5R+R5aDsnkPCahtn1hSkMcORX65J2Z5lxSkD0lQorMsncuBQxYUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@simple-git/args-pathspec": "^1.0.3" + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@so-ric/colorspace": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@so-ric/colorspace/-/colorspace-1.1.6.tgz", + "integrity": "sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "color": "^5.0.2", + "text-hex": "1.0.x" + } + }, + "node_modules/@stoplight/json": { + "version": "3.21.7", + "resolved": "https://registry.npmjs.org/@stoplight/json/-/json-3.21.7.tgz", + "integrity": "sha512-xcJXgKFqv/uCEgtGlPxy3tPA+4I+ZI4vAuMJ885+ThkTHFVkC+0Fm58lA9NlsyjnkpxFh4YiQWpH+KefHdbA0A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@stoplight/ordered-object-literal": "^1.0.3", + "@stoplight/path": "^1.3.2", + "@stoplight/types": "^13.6.0", + "jsonc-parser": "~2.2.1", + "lodash": "^4.17.21", + "safe-stable-stringify": "^1.1" + }, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/@stoplight/json-ref-readers": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@stoplight/json-ref-readers/-/json-ref-readers-1.2.2.tgz", + "integrity": "sha512-nty0tHUq2f1IKuFYsLM4CXLZGHdMn+X/IwEUIpeSOXt0QjMUbL0Em57iJUDzz+2MkWG83smIigNZ3fauGjqgdQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "node-fetch": "^2.6.0", + "tslib": "^1.14.1" + }, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/@stoplight/json-ref-readers/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@stoplight/json-ref-resolver": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@stoplight/json-ref-resolver/-/json-ref-resolver-3.1.6.tgz", + "integrity": "sha512-YNcWv3R3n3U6iQYBsFOiWSuRGE5su1tJSiX6pAPRVk7dP0L7lqCteXGzuVRQ0gMZqUl8v1P0+fAKxF6PLo9B5A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@stoplight/json": "^3.21.0", + "@stoplight/path": "^1.3.2", + "@stoplight/types": "^12.3.0 || ^13.0.0", + "@types/urijs": "^1.19.19", + "dependency-graph": "~0.11.0", + "fast-memoize": "^2.5.2", + "immer": "^9.0.6", + "lodash": "^4.17.21", + "tslib": "^2.6.0", + "urijs": "^1.19.11" + }, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/@stoplight/json-ref-resolver/node_modules/@stoplight/types": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.20.0.tgz", + "integrity": "sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.4", + "utility-types": "^3.10.0" + }, + "engines": { + "node": "^12.20 || >=14.13" + } + }, + "node_modules/@stoplight/json-ref-resolver/node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/@stoplight/json/node_modules/@stoplight/types": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.20.0.tgz", + "integrity": "sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.4", + "utility-types": "^3.10.0" + }, + "engines": { + "node": "^12.20 || >=14.13" + } + }, + "node_modules/@stoplight/json/node_modules/jsonc-parser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.1.tgz", + "integrity": "sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@stoplight/ordered-object-literal": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@stoplight/ordered-object-literal/-/ordered-object-literal-1.0.5.tgz", + "integrity": "sha512-COTiuCU5bgMUtbIFBuyyh2/yVVzlr5Om0v5utQDgBCuQUOPgU1DwoffkTfg4UBQOvByi5foF4w4T+H9CoRe5wg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/@stoplight/path": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@stoplight/path/-/path-1.3.2.tgz", + "integrity": "sha512-lyIc6JUlUA8Ve5ELywPC8I2Sdnh1zc1zmbYgVarhXIp9YeAB0ReeqmGEOWNtlHkbP2DAA1AL65Wfn2ncjK/jtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/@stoplight/spectral-core": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/@stoplight/spectral-core/-/spectral-core-1.22.0.tgz", + "integrity": "sha512-4hTxMDs4TFUG4/jKjaZttA65gNuV2PCKI9+51I+J4nL6ylo17DlbW+sl6byKnBuV/85HxaV33ri5fEGlp8lTSA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@stoplight/better-ajv-errors": "1.0.3", + "@stoplight/json": "~3.21.0", + "@stoplight/path": "1.3.2", + "@stoplight/spectral-parsers": "^1.0.0", + "@stoplight/spectral-ref-resolver": "^1.0.4", + "@stoplight/spectral-runtime": "^1.1.2", + "@stoplight/types": "~13.6.0", + "@types/es-aggregate-error": "^1.0.2", + "@types/json-schema": "^7.0.11", + "ajv": "^8.18.0", + "ajv-errors": "~3.0.0", + "ajv-formats": "~2.1.1", + "es-aggregate-error": "^1.0.7", + "expr-eval-fork": "^3.0.1", + "jsonpath-plus": "^10.3.0", + "lodash": "^4.18.1", + "lodash.topath": "^4.5.2", + "minimatch": "^3.1.4", + "nimma": "0.2.3", + "pony-cause": "^1.1.1", + "tslib": "^2.8.1" + }, + "engines": { + "node": "^16.20 || ^18.18 || >= 20.17" + } + }, + "node_modules/@stoplight/spectral-core/node_modules/@stoplight/better-ajv-errors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@stoplight/better-ajv-errors/-/better-ajv-errors-1.0.3.tgz", + "integrity": "sha512-0p9uXkuB22qGdNfy3VeEhxkU5uwvp/KrBTAbrLBURv6ilxIVwanKwjMc41lQfIVgPGcOkmLbTolfFrSsueu7zA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": "^12.20 || >= 14.13" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/@stoplight/spectral-core/node_modules/@stoplight/types": { + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.6.0.tgz", + "integrity": "sha512-dzyuzvUjv3m1wmhPfq82lCVYGcXG0xUYgqnWfCq3PCVR4BKFhjdkHrnJ+jIDoMKvXb05AZP/ObQF6+NpDo29IQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.4", + "utility-types": "^3.10.0" + }, + "engines": { + "node": "^12.20 || >=14.13" + } + }, + "node_modules/@stoplight/spectral-core/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@stoplight/spectral-core/node_modules/ajv-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz", + "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^8.0.1" + } + }, + "node_modules/@stoplight/spectral-core/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/@stoplight/spectral-core/node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@stoplight/spectral-core/node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@stoplight/spectral-formats": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@stoplight/spectral-formats/-/spectral-formats-1.8.2.tgz", + "integrity": "sha512-c06HB+rOKfe7tuxg0IdKDEA5XnjL2vrn/m/OVIIxtINtBzphZrOgtRn7epQ5bQF5SWp84Ue7UJWaGgDwVngMFw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@stoplight/json": "^3.17.0", + "@stoplight/spectral-core": "^1.19.2", + "@types/json-schema": "^7.0.7", + "tslib": "^2.8.1" + }, + "engines": { + "node": "^16.20 || ^18.18 || >= 20.17" + } + }, + "node_modules/@stoplight/spectral-functions": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@stoplight/spectral-functions/-/spectral-functions-1.10.2.tgz", + "integrity": "sha512-PIfPUgTRo8EtAnL1MIrzhHoUuojSaE8shGSMaHS3BxGyc8d079BE5+TqJa1/WLUb9YT9JQnZ0Aj4xfi8NcJOIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@stoplight/better-ajv-errors": "1.0.3", + "@stoplight/json": "^3.17.1", + "@stoplight/spectral-core": "^1.19.4", + "@stoplight/spectral-formats": "^1.8.1", + "@stoplight/spectral-runtime": "^1.1.2", + "ajv": "^8.18.0", + "ajv-draft-04": "~1.0.0", + "ajv-errors": "~3.0.0", + "ajv-formats": "~2.1.1", + "lodash": "^4.18.1", + "tslib": "^2.8.1" + }, + "engines": { + "node": "^16.20 || ^18.18 || >= 20.17" + } + }, + "node_modules/@stoplight/spectral-functions/node_modules/@stoplight/better-ajv-errors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@stoplight/better-ajv-errors/-/better-ajv-errors-1.0.3.tgz", + "integrity": "sha512-0p9uXkuB22qGdNfy3VeEhxkU5uwvp/KrBTAbrLBURv6ilxIVwanKwjMc41lQfIVgPGcOkmLbTolfFrSsueu7zA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": "^12.20 || >= 14.13" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/@stoplight/spectral-functions/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@stoplight/spectral-functions/node_modules/ajv-draft-04": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^8.5.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/@stoplight/spectral-functions/node_modules/ajv-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz", + "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^8.0.1" + } + }, + "node_modules/@stoplight/spectral-functions/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/@stoplight/spectral-functions/node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@stoplight/spectral-functions/node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@stoplight/spectral-parsers": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@stoplight/spectral-parsers/-/spectral-parsers-1.0.5.tgz", + "integrity": "sha512-ANDTp2IHWGvsQDAY85/jQi9ZrF4mRrA5bciNHX+PUxPr4DwS6iv4h+FVWJMVwcEYdpyoIdyL+SRmHdJfQEPmwQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@stoplight/json": "~3.21.0", + "@stoplight/types": "^14.1.1", + "@stoplight/yaml": "~4.3.0", + "tslib": "^2.8.1" + }, + "engines": { + "node": "^16.20 || ^18.18 || >= 20.17" + } + }, + "node_modules/@stoplight/spectral-ref-resolver": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@stoplight/spectral-ref-resolver/-/spectral-ref-resolver-1.0.5.tgz", + "integrity": "sha512-gj3TieX5a9zMW29z3mBlAtDOCgN3GEc1VgZnCVlr5irmR4Qi5LuECuFItAq4pTn5Zu+sW5bqutsCH7D4PkpyAA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@stoplight/json-ref-readers": "1.2.2", + "@stoplight/json-ref-resolver": "~3.1.6", + "@stoplight/spectral-runtime": "^1.1.2", + "dependency-graph": "0.11.0", + "tslib": "^2.8.1" + }, + "engines": { + "node": "^16.20 || ^18.18 || >= 20.17" + } + }, + "node_modules/@stoplight/spectral-ref-resolver/node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/@stoplight/spectral-runtime": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@stoplight/spectral-runtime/-/spectral-runtime-1.1.5.tgz", + "integrity": "sha512-6/HSCQBKnI4M5qonCKos2W7oggXv+U/ml+m/cAd4eJAYfIVEmaLUo03qSWIIl4cBc5ujJPmn2WnCiRrz1++P7Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@stoplight/json": "^3.20.1", + "@stoplight/path": "^1.3.2", + "@stoplight/types": "^13.6.0", + "abort-controller": "^3.0.0", + "lodash": "^4.18.1", + "node-fetch": "^2.7.0", + "tslib": "^2.8.1" + }, + "engines": { + "node": "^16.20 || ^18.18 || >= 20.17" + } + }, + "node_modules/@stoplight/spectral-runtime/node_modules/@stoplight/types": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.20.0.tgz", + "integrity": "sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.4", + "utility-types": "^3.10.0" + }, + "engines": { + "node": "^12.20 || >=14.13" + } + }, + "node_modules/@stoplight/spectral-runtime/node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@stoplight/types": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-14.1.1.tgz", + "integrity": "sha512-/kjtr+0t0tjKr+heVfviO9FrU/uGLc+QNX3fHJc19xsCNYqU7lVhaXxDmEID9BZTjG+/r9pK9xP/xU02XGg65g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.4", + "utility-types": "^3.10.0" + }, + "engines": { + "node": "^12.20 || >=14.13" + } + }, + "node_modules/@stoplight/yaml": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@stoplight/yaml/-/yaml-4.3.0.tgz", + "integrity": "sha512-JZlVFE6/dYpP9tQmV0/ADfn32L9uFarHWxfcRhReKUnljz1ZiUM5zpX+PH8h5CJs6lao3TuFqnPm9IJJCEkE2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@stoplight/ordered-object-literal": "^1.0.5", + "@stoplight/types": "^14.1.1", + "@stoplight/yaml-ast-parser": "0.0.50", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=10.8" + } + }, + "node_modules/@stoplight/yaml-ast-parser": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@stoplight/yaml-ast-parser/-/yaml-ast-parser-0.0.50.tgz", + "integrity": "sha512-Pb6M8TDO9DtSVla9yXSTAxmo9GVEouq5P40DWXdOie69bXogZTkgvopCq+yEvTMA0F6PEvdJmbtTV3ccIp11VQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@ts-common/add-position": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@ts-common/add-position/-/add-position-0.0.2.tgz", + "integrity": "sha512-ENfIN5410jyxqXbQZXmj1ifFPjnhXOuJdQjglDXhLR8vyD74PTUz277BN9Voua2DKeOjlAnyBK7ml1ciMsBqhw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ts-common/iterator": "^0.3.5" + } + }, + "node_modules/@ts-common/add-position/node_modules/@ts-common/iterator": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@ts-common/iterator/-/iterator-0.3.6.tgz", + "integrity": "sha512-nNdcleTj3qLlchH17HI/xqOc6sNgOqJ5DdRR0nOEVdJVZCo5bfqoQTu6+Q9ZwMhuETuR2d86MSlmaL2FVHnPjQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@ts-common/async-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ts-common/async-iterator/-/async-iterator-1.1.0.tgz", + "integrity": "sha512-Uifzj7otY+3VGef6ohW85MHAsEvYhGtn+WedQ9hFYCsnBnDA8GI8QwB9U9Nd995NQohuNVL3zoqiBD/yUaJILg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ts-common/iterator": "^1.1.0", + "tslib": "^1.10.0" + } + }, + "node_modules/@ts-common/async-iterator/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@ts-common/commonmark-to-markdown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@ts-common/commonmark-to-markdown/-/commonmark-to-markdown-2.0.2.tgz", + "integrity": "sha512-gLUxc7phOvWiDavHDshU3JGxKsepSCYAuXpMVxU0j6MDah2EbV3y0UA4x1wHkWmlf7bVuDLcnsiYQttqEX1zQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ts-common/iterator": "^1.1.1", + "@types/commonmark": "^0.27.3", + "commonmark": "^0.28.1", + "front-matter": "^4.0.2" + } + }, + "node_modules/@ts-common/commonmark-to-markdown/node_modules/commonmark": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/commonmark/-/commonmark-0.28.1.tgz", + "integrity": "sha512-PklsZ9pgrfFQ5hQH9BRzoWnqI9db2LeR9MhvkNk8iz97kfaTNmhTU+IE8jKDHTEfivZZXoFqzGqzddXdk14EJw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "entities": "~ 1.1.1", + "mdurl": "~ 1.0.1", + "minimist": "~ 1.2.0", + "string.prototype.repeat": "^0.2.0" + }, + "bin": { + "commonmark": "bin/commonmark" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@ts-common/commonmark-to-markdown/node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/@ts-common/fs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ts-common/fs/-/fs-1.1.0.tgz", + "integrity": "sha512-VRz8Hgs8hnEsRv2eXli77RQZznWwwkplySR6WwGmVkKyGb98Th8g7CWnRMmjLSBYhSnnRrSLRc+kXzFf1v0Ozg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ts-common/async-iterator": "^1.1.0", + "@types/node": "^10.12.18", + "tslib": "^1.9.3" + } + }, + "node_modules/@ts-common/fs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@ts-common/iterator": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ts-common/iterator/-/iterator-1.1.2.tgz", + "integrity": "sha512-edwrL2/efx3uphxuSEI7fCHJENFmTg+gR7TY8ruTRxNWIWc240YSg+v4T3qVAtgG8npwRC4QtQDu72hi8mrR5A==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@ts-common/json": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ts-common/json/-/json-1.1.0.tgz", + "integrity": "sha512-ylWLEIxGLbvx6l4V1rfVneH5uosOggSXSB4/RQ94i63iRHH+Z70qc7Ll+kRCt50T+3MLn/lzgV2k7TIKLUQIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ts-common/iterator": "^1.1.0", + "@ts-common/string-map": "^1.1.0" + } + }, + "node_modules/@ts-common/json-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ts-common/json-parser/-/json-parser-1.1.0.tgz", + "integrity": "sha512-UWk3/Al4KhEeu4StiNTJkCdDcgWeQKTNyiU1/KTMkRcFqCuTtYbRumqS53SBMOgHVXMNRXl2gwg/BKNwLNdsAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ts-common/add-position": "^1.1.0", + "@ts-common/iterator": "^1.1.0", + "@ts-common/json": "^1.1.0", + "@ts-common/source-map": "^1.1.0", + "@ts-common/string-map": "^1.1.0", + "tslib": "^1.9.3" + } + }, + "node_modules/@ts-common/json-parser/node_modules/@ts-common/add-position": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ts-common/add-position/-/add-position-1.1.0.tgz", + "integrity": "sha512-2ikPepUtJ+BlidwQD6+2Y8aAU14v8LUBATvf51haCwor2lbvSHdcfBgqlMQVl4pmge5NkA0FtNjXS7w/ewkkzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ts-common/iterator": "^1.1.0" + }, + "peerDependencies": { + "tslib": "^1.0.0" + } + }, + "node_modules/@ts-common/json-parser/node_modules/@ts-common/property-set": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@ts-common/property-set/-/property-set-1.1.4.tgz", + "integrity": "sha512-TYpBgozpJAN310dFRtvNmVw/o5rctF94O2mOyFB5AOjAfsZ24gl7PL8c8CgrMA3cvOxiWpKm3gPoqWSGz/3oCA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@ts-common/json-parser/node_modules/@ts-common/source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ts-common/source-map/-/source-map-1.1.0.tgz", + "integrity": "sha512-QORaf3+t5h9pKLnvdByXwcNfXeysQ3OrKXZvg3o5+joMc0OUN2bwnAPYtOxyarN9Bsw6dnwL0OUYJ6Yc7fwugg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ts-common/iterator": "^1.1.0", + "@ts-common/json": "^1.1.0", + "@ts-common/property-set": "^1.1.0", + "@ts-common/string-map": "^1.1.0" + } + }, + "node_modules/@ts-common/json-parser/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@ts-common/property-set": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@ts-common/property-set/-/property-set-0.1.0.tgz", + "integrity": "sha512-Mw/CPiksQI/Tvp8/bmne6ZYmOcgHuMOrflairbzdpfgMz7lrINFu8PyDQw6yTnIASeZR4yW0xljb66gCE4Jj0w==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@ts-common/source-map": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@ts-common/source-map/-/source-map-0.5.0.tgz", + "integrity": "sha512-aKFWvuN5uALt+hUtkPA4gHjtloDy2qHW1FB1r758KCTI0h0lP3dNJGcfwg7NnmD0qKQiZAY/J73/NYrbuTfT3A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ts-common/iterator": "^0.3.0", + "@ts-common/json": "^0.3.0", + "@ts-common/property-set": "^0.1.0", + "@ts-common/string-map": "^0.3.0" + } + }, + "node_modules/@ts-common/source-map/node_modules/@ts-common/iterator": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@ts-common/iterator/-/iterator-0.3.6.tgz", + "integrity": "sha512-nNdcleTj3qLlchH17HI/xqOc6sNgOqJ5DdRR0nOEVdJVZCo5bfqoQTu6+Q9ZwMhuETuR2d86MSlmaL2FVHnPjQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@ts-common/source-map/node_modules/@ts-common/json": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@ts-common/json/-/json-0.3.1.tgz", + "integrity": "sha512-vaplNdZPdeWr4p+hLJGdn08UMTSgYQrlRtxrAS0fAWyMlmFalBm/XRhHnohgiflRaj2jxl7ZxihjNlC/LZ/1YQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ts-common/iterator": "^0.3.1", + "@ts-common/string-map": "^0.3.0" + } + }, + "node_modules/@ts-common/source-map/node_modules/@ts-common/string-map": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@ts-common/string-map/-/string-map-0.3.0.tgz", + "integrity": "sha512-tikHtQPV/R48VAnlolyl1FIHciror68LXyruelvYf+lRE6ysjIGB2iNyw7wN6aDcUs2wN/CD6fF8Ye7lVIWNTQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ts-common/iterator": "^0.3.0" + } + }, + "node_modules/@ts-common/string-map": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@ts-common/string-map/-/string-map-1.1.1.tgz", + "integrity": "sha512-dmh+Kdf3S6wbuW0CGULVYYukOHKyvGVKFF86cFe1W+MkYqjhsclJQ0AvJJTxncqohFKjsbJvMCd/5ee7u5dU1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ts-common/iterator": "^1.1.2" + }, + "peerDependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@ts-common/virtual-fs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@ts-common/virtual-fs/-/virtual-fs-0.3.0.tgz", + "integrity": "sha512-ryoXw52FTLhiexoNBA/hcAlW8gxPhrKEuZODgpCiF0wswNJdg/j+rCb9k1VppJdeIJ30b0Wg+2vPsrOrdnYTIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ts-common/fs": "^0.2.0", + "@ts-common/iterator": "^0.3.0", + "@types/async-retry": "^1.4.1", + "@types/node-fetch": "^2.5.5", + "async-retry": "^1.3.1", + "node-fetch": "^2.6.0" + } + }, + "node_modules/@ts-common/virtual-fs/node_modules/@ts-common/async-iterator": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@ts-common/async-iterator/-/async-iterator-0.2.3.tgz", + "integrity": "sha512-szLdrutwQxBCIECaO2RTFcUPFj+9QVk4xKAj+APgeeLoEs67tNjXFgvfU0kOfF04qTHlPNPqcutSqxMHqzG3qA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ts-common/iterator": "^0.3.6", + "tslib": "^1.10.0" + } + }, + "node_modules/@ts-common/virtual-fs/node_modules/@ts-common/fs": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@ts-common/fs/-/fs-0.2.0.tgz", + "integrity": "sha512-ul1v4ZatcHuAzrwr/hGjSbk37pnfnLYDWC1yMEynQlnV8ndAcIVNYwQPPOYtLADPKTi3y74g5Q4BF3xPurDHLA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ts-common/async-iterator": "^0.2.0", + "@types/node": "^10.12.18", + "tslib": "^1.9.3" + } + }, + "node_modules/@ts-common/virtual-fs/node_modules/@ts-common/iterator": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@ts-common/iterator/-/iterator-0.3.6.tgz", + "integrity": "sha512-nNdcleTj3qLlchH17HI/xqOc6sNgOqJ5DdRR0nOEVdJVZCo5bfqoQTu6+Q9ZwMhuETuR2d86MSlmaL2FVHnPjQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@ts-common/virtual-fs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@types/async-retry": { + "version": "1.4.9", + "resolved": "https://registry.npmjs.org/@types/async-retry/-/async-retry-1.4.9.tgz", + "integrity": "sha512-s1ciZQJzRh3708X/m3vPExr5KJlzlZJvXsKpbtE2luqNcbROr64qU+3KpJsYHqWMeaxI839OvXf9PrUSw1Xtyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/retry": "*" + } + }, + "node_modules/@types/commonmark": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@types/commonmark/-/commonmark-0.27.10.tgz", + "integrity": "sha512-iEZobUnvlM+UX5fXWCmC4eQXwCs01Z8Xa1W0VjiWUF/XsNy4BHtskqJ9MyLZVMHbA0ezhyonCDqz3hMvsCm6Hg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/es-aggregate-error": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/es-aggregate-error/-/es-aggregate-error-1.0.6.tgz", + "integrity": "sha512-qJ7LIFp06h1QE1aVxbVd+zJP2wdaugYXYfd6JxsyRMrYHaxb6itXPogW2tz+ylUJ1n1b+JF1PHyYCfYHm0dvUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node-fetch": { + "version": "2.6.13", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.13.tgz", + "integrity": "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.4" + } + }, + "node_modules/@types/retry": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.5.tgz", + "integrity": "sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/triple-beam": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/urijs": { + "version": "1.19.26", + "resolved": "https://registry.npmjs.org/@types/urijs/-/urijs-1.19.26.tgz", + "integrity": "sha512-wkXrVzX5yoqLnndOwFsieJA7oKM8cNkOKJtf/3vVGSUFkWDKZvFHpIl9Pvqb/T9UsawBBFMTTD8xu7sK5MWuvg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typespec/asset-emitter": { + "version": "0.79.1", + "resolved": "https://registry.npmjs.org/@typespec/asset-emitter/-/asset-emitter-0.79.1.tgz", + "integrity": "sha512-53s3GLu5BwNkl7Itr/OizfhymTV2u7k5/cwjUOAt03AUDfiKlwbsp+iCIsq1vccJuoDOiXOceJOfL8rAf4/9LQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@typespec/compiler": "^1.10.0" + } + }, + "node_modules/@typespec/compiler": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.10.0.tgz", + "integrity": "sha512-R6BATDkughntPpaxeESJF+wxma5PEjgmnnKvH0/ByqUH8VyhIckQWE9kkP0Uc/EJ0o0VYhe8qCwWQvV70k5lTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "~7.29.0", + "@inquirer/prompts": "^8.0.1", + "ajv": "~8.18.0", + "change-case": "~5.4.4", + "env-paths": "^4.0.0", + "globby": "~16.1.0", + "is-unicode-supported": "^2.1.0", + "mustache": "~4.2.0", + "picocolors": "~1.1.1", + "prettier": "~3.8.0", + "semver": "^7.7.1", + "tar": "^7.5.2", + "temporal-polyfill": "^0.3.0", + "vscode-languageserver": "~9.0.1", + "vscode-languageserver-textdocument": "~1.0.12", + "yaml": "~2.8.2", + "yargs": "~18.0.0" + }, + "bin": { + "tsp": "cmd/tsp.js", + "tsp-server": "cmd/tsp-server.js" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@typespec/compiler/node_modules/@inquirer/checkbox": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.1.4.tgz", + "integrity": "sha512-w6KF8ZYRvqHhROkOTHXYC3qIV/KYEu5o12oLqQySvch61vrYtRxNSHTONSdJqWiFJPlCUQAHT5OgOIyuTr+MHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^2.0.5", + "@inquirer/core": "^11.1.9", + "@inquirer/figures": "^2.0.5", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@typespec/compiler/node_modules/@inquirer/confirm": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.0.12.tgz", + "integrity": "sha512-h9FgGun3QwVYNj5TWIZZ+slii73bMoBFjPfVIGtnFuL4t8gBiNDV9PcSfIzkuxvgquJKt9nr1QzszpBzTbH8Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.9", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@typespec/compiler/node_modules/@inquirer/core": { + "version": "11.1.9", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.1.9.tgz", + "integrity": "sha512-BDE4fG22uYh1bGSifcj7JSx119TVYNViMhMu85usp4Fswrzh6M0DV3yld64jA98uOAa2GSQ4Bg4bZRm2d2cwSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^2.0.5", + "@inquirer/figures": "^2.0.5", + "@inquirer/type": "^4.0.5", + "cli-width": "^4.1.0", + "fast-wrap-ansi": "^0.2.0", + "mute-stream": "^3.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@typespec/compiler/node_modules/@inquirer/editor": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.1.1.tgz", + "integrity": "sha512-6y11LgmNpmn5D2aB5FgnCfBUBK8ZstwLCalyJmORcJZ/WrhOjm16mu6eSqIx8DnErxDqSLr+Jkp+GP8/Nwd5tA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.9", + "@inquirer/external-editor": "^3.0.0", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@typespec/compiler/node_modules/@inquirer/expand": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.0.13.tgz", + "integrity": "sha512-dF2zvrFo9LshkcB23/O1il13kBkBltWIXzut1evfbuBLXMiGIuC45c+ZQ0uukjCDsvI8OWqun4FRYMnzFCQa3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.9", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@typespec/compiler/node_modules/@inquirer/external-editor": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-3.0.0.tgz", + "integrity": "sha512-lDSwMgg+M5rq6JKBYaJwSX6T9e/HK2qqZ1oxmOwn4AQoJE5D+7TumsxLGC02PWS//rkIVqbZv3XA3ejsc9FYvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^2.1.1", + "iconv-lite": "^0.7.2" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@typespec/compiler/node_modules/@inquirer/input": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.0.12.tgz", + "integrity": "sha512-uiMFBl4LqFzJClh80Q3f9hbOFJ6kgkDWI4LjAeBuyO6EanVVMF69AgOvpi1qdqjDSjDN6578B6nky9ceEpI+1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.9", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@typespec/compiler/node_modules/@inquirer/number": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.0.12.tgz", + "integrity": "sha512-/vrwhEf7Xsuh+YlHF4IjSy3g1cyrQuPaSiHIxCEbLu8qnfvrcvJyCkoktOOF+xV9gSb77/G0n3h04RbMDW2sIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.9", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@typespec/compiler/node_modules/@inquirer/password": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.0.12.tgz", + "integrity": "sha512-CBh7YHju623lxJRcAOo498ZUwIuMy63bqW/vVq0tQAZVv+lkWlHkP9ealYE1utWSisEShY5VMdzIXRmyEODzcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^2.0.5", + "@inquirer/core": "^11.1.9", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@typespec/compiler/node_modules/@inquirer/prompts": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.4.2.tgz", + "integrity": "sha512-XJmn/wY4AX56l1BRU+ZjDrFtg9+2uBEi4JvJQj82kwJDQKiPgSn4CEsbfGGygS4Gw6rkL4W18oATjfVfaqub2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^5.1.4", + "@inquirer/confirm": "^6.0.12", + "@inquirer/editor": "^5.1.1", + "@inquirer/expand": "^5.0.13", + "@inquirer/input": "^5.0.12", + "@inquirer/number": "^4.0.12", + "@inquirer/password": "^5.0.12", + "@inquirer/rawlist": "^5.2.8", + "@inquirer/search": "^4.1.8", + "@inquirer/select": "^5.1.4" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@typespec/compiler/node_modules/@inquirer/rawlist": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.2.8.tgz", + "integrity": "sha512-Su7FQvp5buZmCymN3PPoYv31ZQQX4ve2j02k7piGgKAWgE+AQRB5YoYVveGXcl3TZ9ldgRMSxj56YfDFmmaqLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.9", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@typespec/compiler/node_modules/@inquirer/search": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.1.8.tgz", + "integrity": "sha512-fGiHKGD6DyPIYUWxoXnQTeXeyYqSOUrasDMABBmMHUalH/LxkuzY0xVRtimXAt1sUeeyYkVuKQx1bebMuN11Kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.9", + "@inquirer/figures": "^2.0.5", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@typespec/compiler/node_modules/@inquirer/select": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.1.4.tgz", + "integrity": "sha512-2kWcGKPMLAXAWRp1AH1SLsQmX+j0QjeljyXMUji9WMZC8nRDO0b7qquIGr6143E7KMLt3VAIGNXzwa/6PXQs4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^2.0.5", + "@inquirer/core": "^11.1.9", + "@inquirer/figures": "^2.0.5", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@typespec/compiler/node_modules/@inquirer/type": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.0.5.tgz", + "integrity": "sha512-aetVUNeKNc/VriqXlw1NRSW0zhMBB0W4bNbWRJgzRl/3d0QNDQFfk0GO5SDdtjMZVg6o8ZKEiadd7SCCzoOn5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@typespec/compiler/node_modules/@types/node": { + "version": "25.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz", + "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==", + "extraneous": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.19.0" + } + }, + "node_modules/@typespec/compiler/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@typespec/compiler/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@typespec/compiler/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@typespec/compiler/node_modules/cliui": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@typespec/compiler/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typespec/compiler/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typespec/compiler/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@typespec/compiler/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@typespec/compiler/node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@typespec/compiler/node_modules/yargs": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", + "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^9.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "string-width": "^7.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^22.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/@typespec/compiler/node_modules/yargs-parser": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/@typespec/events": { + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.80.0.tgz", + "integrity": "sha512-FrWEUwxhDNbE2YN4fyqV5Qrz9qFJbvPoiKrJM7dexkb7eyhepq3dbc5zZgAm/qFBQ+XxGQQVJ4swXxKT+338fw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@typespec/compiler": "^1.10.0" + } + }, + "node_modules/@typespec/http": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.10.0.tgz", + "integrity": "sha512-/fj55fmUj4m/FmNdfH0V52menVrmS2r5Xj9d1H+pnjQbxvvaxS906RSRcoF8kbg3PvlibP/Py5u82TAk53AyqA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@typespec/compiler": "^1.10.0", + "@typespec/streams": "^0.80.0" + }, + "peerDependenciesMeta": { + "@typespec/streams": { + "optional": true + } + } + }, + "node_modules/@typespec/openapi": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.10.0.tgz", + "integrity": "sha512-tukmyp+c9CFlA2FdF61XfT9eTe5WXWz6J8pOrJ9+IYg0BcBwhJkvDj6BYpDD6SjxbRr1wO5ZL2Whe6MequsyVw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0" + } + }, + "node_modules/@typespec/openapi3": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@typespec/openapi3/-/openapi3-1.10.0.tgz", + "integrity": "sha512-G2UTfsDuUprvhFIymHiLKly6FoA9UkRmTImqgmROP4JkKCdY/Mo6Xo03sufY8urywVjIWE3dryXpy5DjpOt9Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@scalar/json-magic": "^0.11.5", + "@scalar/openapi-parser": "^0.24.1", + "@scalar/openapi-types": "^0.5.0", + "@typespec/asset-emitter": "^0.79.1", + "yaml": "~2.8.2" + }, + "bin": { + "tsp-openapi3": "cmd/tsp-openapi3.js" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@typespec/compiler": "^1.10.0", + "@typespec/events": "^0.80.0", + "@typespec/http": "^1.10.0", + "@typespec/json-schema": "^1.10.0", + "@typespec/openapi": "^1.10.0", + "@typespec/sse": "^0.80.0", + "@typespec/streams": "^0.80.0", + "@typespec/versioning": "^0.80.0" + }, + "peerDependenciesMeta": { + "@typespec/events": { + "optional": true + }, + "@typespec/json-schema": { + "optional": true + }, + "@typespec/sse": { + "optional": true + }, + "@typespec/streams": { + "optional": true + }, + "@typespec/versioning": { + "optional": true + }, + "@typespec/xml": { + "optional": true + } + } + }, + "node_modules/@typespec/prettier-plugin-typespec": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@typespec/prettier-plugin-typespec/-/prettier-plugin-typespec-1.10.0.tgz", + "integrity": "sha512-X4/YjQIxa+uQ4bPrOIcjn6ucIX09SlBWOb8GEwbwqkfZqDvbJEevA2A3OmgI0cyhIndo4PdrkBydWtoK0J0Z+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier": "~3.8.0" + } + }, + "node_modules/@typespec/rest": { + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.80.0.tgz", + "integrity": "sha512-xczXLoB2akSIDner41gQYTS9CG6TdCN0QHYvXBT6ZrYEnBh+pMvdymW//5CSOTamZLOGo9AOJVJaFfwbFA4vQQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0" + } + }, + "node_modules/@typespec/sse": { + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.80.0.tgz", + "integrity": "sha512-/lxYgMaxgEcjBVhep9tf/VnFD2wnkZlkmjUHLeZL8Cuf+qip61Ren6Ml91YtNnnIFYsuuymDzRclrA073ZBR6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@typespec/compiler": "^1.10.0", + "@typespec/events": "^0.80.0", + "@typespec/http": "^1.10.0", + "@typespec/streams": "^0.80.0" + } + }, + "node_modules/@typespec/streams": { + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.80.0.tgz", + "integrity": "sha512-lNvzrvX/ZRIxRpxIBZu90XNsT+uWsMbLtxHd9edspHAiID3c9WKZbl2fnLcPqdR/60odqKve4yGzB9gF58GUDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@typespec/compiler": "^1.10.0" + } + }, + "node_modules/@typespec/ts-http-runtime": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.5.tgz", + "integrity": "sha512-yURCknZhvywvQItHMMmFSo+fq5arCUIyz/CVk7jD89MSai7dkaX8ufjCWp3NttLojoTVbcE72ri+be/TnEbMHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@typespec/versioning": { + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.80.0.tgz", + "integrity": "sha512-WQCT0jN2lSRfwOy+Cd1KUYzenpKR5TdoX0uW6zQdvxQ9nQZIXoaSaReh9/ldhmSV4xv3p2dqF9oq1cdbVGfJTg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@typespec/compiler": "^1.10.0" + } + }, + "node_modules/@typespec/xml": { + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.80.0.tgz", + "integrity": "sha512-Qfy5eyCcOF3xYOU/dejhpmmeY75U1Q9C8XBE+GvSZ3lakRfKBIpT+X6Q07qmKSAbGYJZKYLWCIAy/dgCuu/OAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@typespec/compiler": "^1.10.0" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansi-styles/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ansi-styles/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "dev": true, + "license": "MIT", + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "retry": "0.13.1" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/autorest": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/autorest/-/autorest-3.8.0.tgz", + "integrity": "sha512-FwpPuDGXuLLnBAR3SCGQcQHPCRoyYXPTMnJ80kN6HRsK+b1/pJ1DtOOzqL4XTCdtq37gth1AoFCerSOwSc3iGQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "autorest": "entrypoints/app.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/azure-rest-api-specs-eng-tools": { + "resolved": "eng/tools", + "link": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/basic-ftp": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.3.0.tgz", + "integrity": "sha512-5K9eNNn7ywHPsYnFwjKgYH8Hf8B5emh7JKcPaVjjrMJFQQwGpwowEnZNEtHs7DfR7hCZsmaK3VA4HUK0YarT+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-me-maybe": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/change-case": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", + "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/change-case-all": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-2.1.0.tgz", + "integrity": "sha512-v6b0WWWkZUMHVuYk82l+WROgkUm4qEN2w5hKRNWtEOYwWqUGoi8C6xH0l1RLF1EoWqDFK6MFclmN3od6ws3/uw==", + "dev": true, + "license": "MIT", + "dependencies": { + "change-case": "^5.2.0", + "sponge-case": "^2.0.2", + "swap-case": "^3.0.2", + "title-case": "^3.0.3" + } + }, + "node_modules/chardet": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/color": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/color/-/color-5.0.3.tgz", + "integrity": "sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^3.1.3", + "color-string": "^2.1.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/color-convert": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.1.3.tgz", + "integrity": "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=14.6" + } + }, + "node_modules/color-name": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.0.tgz", + "integrity": "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/color-string": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.1.4.tgz", + "integrity": "sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/commonmark": { + "version": "0.31.2", + "resolved": "https://registry.npmjs.org/commonmark/-/commonmark-0.31.2.tgz", + "integrity": "sha512-2fRLTyb9r/2835k5cwcAwOj0DEc44FARnMp5veGsJ+mEAZdi52sNopLu07ZyElQUz058H43whzlERDIaaSw4rg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "entities": "~3.0.1", + "mdurl": "~1.0.1", + "minimist": "~1.2.8" + }, + "bin": { + "commonmark": "bin/commonmark" + }, + "engines": { + "node": "*" + } + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deepdash": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/deepdash/-/deepdash-5.3.9.tgz", + "integrity": "sha512-GRzJ0q9PDj2T+J2fX+b+TlUa2NlZ11l6vJ8LHNKVGeZ8CfxCuJaCychTq07iDRTvlfO8435jlvVS1QXBrW9kMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21", + "lodash-es": "^4.17.21" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dependency-graph": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-1.0.0.tgz", + "integrity": "sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/difflib": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", + "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", + "dev": true, + "dependencies": { + "heap": ">= 0.2.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-4.0.0.tgz", + "integrity": "sha512-pxP8eL2SwwaTRi/KHYwLYXinDs7gL3jxFcBYmEdYfZmZXbaVDvdppd0XBU8qVz03rDfKZMXg1omHCbsJjZrMsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-safe-filename": "^0.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-abstract": { + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.2.tgz", + "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-aggregate-error": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/es-aggregate-error/-/es-aggregate-error-1.0.14.tgz", + "integrity": "sha512-3YxX6rVb07B5TV11AV5wsL7nQCHXNwoHPsQC8S4AmBiqYhyNCJ5BRKXkXyDJvs8QzXN20NgRtxe3dEEQD9NLHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "globalthis": "^1.0.4", + "has-property-descriptors": "^1.0.2", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/expr-eval-fork": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/expr-eval-fork/-/expr-eval-fork-3.0.3.tgz", + "integrity": "sha512-BhC+hbc5lIVjygr840n5DEkW3MQq7H9o+mc1/N7Z5uIiCFVyESLL5DIE7LNq4CYUNxy+XjA+3jRrL/h0Kt2xcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-memoize": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", + "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-string-truncated-width": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", + "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-string-width": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", + "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-string-truncated-width": "^3.0.2" + } + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fast-wrap-ansi": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.0.tgz", + "integrity": "sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-string-width": "^3.0.2" + } + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "dev": true, + "license": "MIT" + }, + "node_modules/file-js": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/file-js/-/file-js-0.3.0.tgz", + "integrity": "sha512-nZlX1pxpV6Mt8BghM3Z150bpsCT1zqil97UryusstZLSs9caYAe0Wph2UKPC3awfM2Dq4ri1Sv99KuK4EIImlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bluebird": "^3.4.7", + "minimatch": "^3.0.3", + "proper-lockfile": "^1.2.0" + } + }, + "node_modules/file-js/node_modules/proper-lockfile": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-1.2.0.tgz", + "integrity": "sha512-YNjxtCoY3A+lohlLXWCYrHDhUdfU3MMnuC+ADhloDvJo586LKW23dPrjxGvRGuus05Amcf0cQy6vrjjtbJhWpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "err-code": "^1.0.0", + "extend": "^3.0.0", + "graceful-fs": "^4.1.2", + "retry": "^0.10.0" + } + }, + "node_modules/file-js/node_modules/retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/file-url": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz", + "integrity": "sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/filehound": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/filehound/-/filehound-1.17.6.tgz", + "integrity": "sha512-5q4zjFkI8W2zLmvbvyvI//K882IpEj6sMNXPUQlk5H6W4Wh3OSSylEAIEmMLELP9G7ileYjTKPXOn0YzzS55Lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "bluebird": "^3.7.2", + "file-js": "0.3.0", + "lodash": "^4.17.21", + "minimatch": "^5.0.0", + "moment": "^2.29.1", + "unit-compare": "^1.0.1" + } + }, + "node_modules/filehound/node_modules/brace-expansion": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filehound/node_modules/minimatch": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreach": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz", + "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==", + "dev": true, + "license": "MIT" + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formidable": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", + "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@paralleldrive/cuid2": "^2.2.2", + "dezalgo": "^1.0.4", + "once": "^1.4.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/front-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", + "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1" + } + }, + "node_modules/front-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/front-matter/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", + "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-uri": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", + "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-16.1.1.tgz", + "integrity": "sha512-dW7vl+yiAJSp6aCekaVnVJxurRv7DCOLyXqEG3RYMYUg7AuJ2jCqPkZTA8ooqC2vtnkaMcV5WfFBMuEnTu1OQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.5", + "is-path-inside": "^4.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.4.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/handlebars": { + "version": "4.7.9", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", + "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/inversify": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/inversify/-/inversify-7.11.0.tgz", + "integrity": "sha512-yZDprSSr8TyVeMGI/AOV4ws6gwjX22hj9Z8/oHAVpJORY6WRFTcUzhnZtibBUHEw2U8ArvHcR+i863DplQ3Cwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inversifyjs/common": "1.5.2", + "@inversifyjs/container": "1.15.0", + "@inversifyjs/core": "9.2.0" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-safe-filename": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-safe-filename/-/is-safe-filename-0.1.1.tgz", + "integrity": "sha512-4SrR7AdnY11LHfDKTZY1u6Ga3RuxZdl3YKWWShO5iyuG5h8QS4GD2tOb04peBJ5I7pXbR+CGBNEhTcwK+FzN3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsep": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsep/-/jsep-1.4.0.tgz", + "integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.16.0" + } + }, + "node_modules/json-pointer": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.2.tgz", + "integrity": "sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "foreach": "^2.0.4" + } + }, + "node_modules/json-refs": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/json-refs/-/json-refs-3.0.15.tgz", + "integrity": "sha512-0vOQd9eLNBL18EGl5yYaO44GhixmImes2wiYn9Z3sag3QnehWrYWlB9AFtMxCL2Bj3fyxgDYkxGFEU/chlYssw==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "~4.1.1", + "graphlib": "^2.1.8", + "js-yaml": "^3.13.1", + "lodash": "^4.17.15", + "native-promise-only": "^0.8.1", + "path-loader": "^1.0.10", + "slash": "^3.0.0", + "uri-js": "^4.2.2" + }, + "bin": { + "json-refs": "bin/json-refs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/json-refs/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/json-refs/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-refs/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonc-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz", + "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonpath-plus": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-10.4.0.tgz", + "integrity": "sha512-T92WWatJXmhBbKsgH/0hl+jxjdXrifi5IKeMY02DWggRxX0UElcbVzPlmgLTbvsPeW1PasQ6xE2Q75stkhGbsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jsep-plugin/assignment": "^1.3.0", + "@jsep-plugin/regex": "^1.0.4", + "jsep": "^1.4.0" + }, + "bin": { + "jsonpath": "bin/jsonpath-cli.js", + "jsonpath-plus": "bin/jsonpath-cli.js" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", + "dev": true, + "license": "MIT" + }, + "node_modules/leven": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-4.1.0.tgz", + "integrity": "sha512-KZ9W9nWDT7rF7Dazg8xyLHGLrmpgq2nVNFUckhqdW3szVP6YhCpp/RAnpmVExA9JvrMynjwSLVrEj3AepHR6ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.18.1.tgz", + "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.topath": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz", + "integrity": "sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==", + "dev": true, + "license": "MIT" + }, + "node_modules/logform": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz", + "integrity": "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@colors/colors": "1.6.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/logform/node_modules/safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/lru-cache": { + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.5.tgz", + "integrity": "sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/marked": { + "version": "15.0.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", + "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==", + "dev": true, + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/md5-file": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-5.0.0.tgz", + "integrity": "sha512-xbEFXCYVWrSx/gEKS1VPlg84h/4L20znVIulKw6kMfmBUAZNAnF00eczz9ICMl+/hjQGo5KSXRxbL/47X3rmMw==", + "dev": true, + "license": "MIT", + "bin": { + "md5-file": "cli.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/mustache": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "dev": true, + "license": "MIT", + "bin": { + "mustache": "bin/mustache" + } + }, + "node_modules/mute-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz", + "integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/native-promise-only": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", + "integrity": "sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/nimma": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/nimma/-/nimma-0.2.3.tgz", + "integrity": "sha512-1ZOI8J+1PKKGceo/5CT5GfQOG6H8I2BencSK06YarZ2wXwH37BSSUWldqJmMJYA5JfqDqffxDXynt6f11AyKcA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsep-plugin/regex": "^1.0.1", + "@jsep-plugin/ternary": "^1.0.2", + "astring": "^1.8.1", + "jsep": "^1.2.0" + }, + "engines": { + "node": "^12.20 || >=14.13" + }, + "optionalDependencies": { + "jsonpath-plus": "^6.0.1 || ^10.1.0", + "lodash.topath": "^4.5.2" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-object-hash": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-object-hash/-/node-object-hash-3.1.1.tgz", + "integrity": "sha512-A32kRGjXtwQ+uSa3GrXiCl8HVFY0Jy6IiKFO7UjagAKSaOOrruxB2Qf/w7TP5QtNfB3uOiHTu3cjhp8k/C0PCg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16", + "pnpm": ">=8" + } + }, + "node_modules/oav": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/oav/-/oav-4.0.3.tgz", + "integrity": "sha512-6Vouy5qHNc0v3oDojsmknGDcHmV9atZwH6PkRJp49qmkFpx9Oo/pM16+HIvmYVK0XLsoAUtgohFFxvTFv/dC1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@apidevtools/swagger-parser": "^12.0.0", + "@autorest/schemas": "^1.3.4", + "@azure-tools/openapi-tools-common": "^1.2.2", + "@azure/ms-rest-js": "^2.7.0", + "@azure/openapi-markdown": "0.9.4", + "ajv": "^6.12.6", + "commonmark": "0.31.2", + "deepdash": "^5.3.2", + "difflib": "0.2.4", + "fast-json-stable-stringify": "^2.1.0", + "glob": "^13.0.0", + "inversify": "^7.10.1", + "js-yaml": "^4.1.0", + "json-pointer": "0.6.2", + "json-schema-traverse": "0.4.1", + "jsonpath-plus": "^10.3.0", + "lodash": "^4.17.21", + "md5-file": "^5.0.0", + "mustache": "^4.2.0", + "path-to-regexp": "^6.2.1", + "reflect-metadata": "0.2.2", + "toposort": "^2.0.2", + "winston": "^3.17.0", + "yargs": "^15.4.1" + }, + "bin": { + "oav": "dist/cli.js" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/oav/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/oav/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/oav/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/oav/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/oav/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/oav/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/oav/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fn.name": "1.x.x" + } + }, + "node_modules/openapi-types": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", + "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-loader": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/path-loader/-/path-loader-1.0.12.tgz", + "integrity": "sha512-n7oDG8B+k/p818uweWrOixY9/Dsr89o2TkCm6tOTex3fpdo2+BFDgR+KpB37mGKBRsBAlR8CIJMFN0OEy/7hIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "native-promise-only": "^0.8.1", + "superagent": "^7.1.6" + } + }, + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/pony-cause": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-1.1.1.tgz", + "integrity": "sha512-PxkIc/2ZpLiEzQXu5YRDOUgBlfGYBY8156HY5ZcRAwwonMk5W/MrJP2LLkG/hF7GEQzaHo2aS7ho6ZLCOvf+6g==", + "dev": true, + "license": "0BSD", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/prettier": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prompt-sync": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/prompt-sync/-/prompt-sync-4.2.0.tgz", + "integrity": "sha512-BuEzzc5zptP5LsgV5MZETjDaKSWfchl5U9Luiu8SKp7iZWD5tZalOxvNcZRwv+d2phNFr8xlbxmFNcRKfJOzJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "strip-ansi": "^5.0.0" + } + }, + "node_modules/proper-lockfile": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-2.0.1.tgz", + "integrity": "sha512-rjaeGbsmhNDcDInmwi4MuI6mRwJu6zq8GjYCLuSuE7GF+4UjgzkL69sVKKJ2T2xH61kK7rXvGYpvaTu909oXaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "retry": "^0.10.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/proper-lockfile/node_modules/retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true, + "license": "ISC" + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.4.tgz", + "integrity": "sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "get-intrinsic": "^1.3.0", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-stable-stringify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz", + "integrity": "sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw==", + "dev": true, + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", + "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true, + "license": "ISC" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-git": { + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.36.0.tgz", + "integrity": "sha512-cGQjLjK8bxJw4QuYT7gxHw3/IouVESbhahSsHrX97MzCL1gu2u7oy38W6L2ZIGECEfIBG4BabsWDPjBxJENv9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@kwsites/file-exists": "^1.1.1", + "@kwsites/promise-deferred": "^1.1.1", + "@simple-git/args-pathspec": "^1.0.3", + "@simple-git/argv-parser": "^1.1.0", + "debug": "^4.4.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/steveukx/git-js?sponsor=1" + } + }, + "node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, + "node_modules/sponge-case": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/sponge-case/-/sponge-case-2.0.3.tgz", + "integrity": "sha512-i4h9ZGRfxV6Xw3mpZSFOfbXjf0cQcYmssGWutgNIfFZ2VM+YIWfD71N/kjjwK6X/AAHzBr+rciEcn/L34S8TGw==", + "dev": true, + "license": "MIT" + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz", + "integrity": "sha512-1BH+X+1hSthZFW+X+JaUkjkkUPwIlLEMJBLANN3hOob3RhEk5snLWNECDnYbgn/m5c5JV7Ersu1Yubaf+05cIA==", + "dev": true + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/superagent": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-10.3.0.tgz", + "integrity": "sha512-B+4Ik7ROgVKrQsXTV0Jwp2u+PXYLSlqtDAhYnkkD+zn3yg8s/zjA2MeGayPoY/KICrbitwneDHrjSotxKL+0XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "component-emitter": "^1.3.1", + "cookiejar": "^2.1.4", + "debug": "^4.3.7", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.5", + "formidable": "^3.5.4", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.14.1" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/swap-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-3.0.3.tgz", + "integrity": "sha512-6p4op8wE9CQv7uDFzulI6YXUw4lD9n4oQierdbFThEKVWVQcbQcUjdP27W8XE7V4QnWmnq9jueSHceyyQnqQVA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tar": { + "version": "7.5.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.13.tgz", + "integrity": "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/temporal-polyfill": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/temporal-polyfill/-/temporal-polyfill-0.3.2.tgz", + "integrity": "sha512-TzHthD/heRK947GNiSu3Y5gSPpeUDH34+LESnfsq8bqpFhsB79HFBX8+Z834IVX68P3EUyRPZK5bL/1fh437Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "temporal-spec": "0.3.1" + } + }, + "node_modules/temporal-spec": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/temporal-spec/-/temporal-spec-0.3.1.tgz", + "integrity": "sha512-B4TUhezh9knfSIMwt7RVggApDRJZo73uZdj8AacL2mZ8RP5KtLianh2MXxL06GN9ESYiIsiuoLQhgVfwe55Yhw==", + "dev": true, + "license": "ISC" + }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "dev": true, + "license": "MIT" + }, + "node_modules/title-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz", + "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/triple-beam": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "7.19.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz", + "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==", + "extraneous": true, + "license": "MIT" + }, + "node_modules/unicorn-magic": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.0.tgz", + "integrity": "sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unit-compare": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unit-compare/-/unit-compare-1.0.1.tgz", + "integrity": "sha512-AeLMQr8gcen2WOTwV0Gvi1nKKbY4Mms79MoltZ6hrZV/VANgE/YQly3jtWZJA/fa9m4ajhynq3XMqh5rOyZclA==", + "dev": true, + "license": "ISC", + "dependencies": { + "moment": "^2.14.1" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urijs": { + "version": "1.19.11", + "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", + "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/utility-types": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", + "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vscode-jsonrpc": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-3.6.2.tgz", + "integrity": "sha512-T24Jb5V48e4VgYliUXMnZ379ItbrXgOimweKaJshD84z+8q7ZOZjJan0MeDe+Ugb+uqERDVV8SBmemaGMSMugA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0 || >=6.0.0" + } + }, + "node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", + "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/winston": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.19.0.tgz", + "integrity": "sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@colors/colors": "^1.6.0", + "@dabh/diagnostics": "^2.0.8", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.7.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.9.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-transport": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.9.0.tgz", + "integrity": "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "logform": "^2.7.0", + "readable-stream": "^3.6.2", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston/node_modules/safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/yaml": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} From 1f8cb5928d5ed0d166329f7bffe904b7c31b5b29 Mon Sep 17 00:00:00 2001 From: JoyerJin <116236375+JoyerJin@users.noreply.github.com> Date: Mon, 27 Apr 2026 14:08:33 +0800 Subject: [PATCH 11/98] add skill invocation Co-authored-by: Copilot --- .../evaluate/evals/001001.eval.yaml | 5 + .../evaluate/evals/001002.eval.yaml | 5 + .../evaluate/evals/001003.eval.yaml | 5 + .../evaluate/evals/001004.eval.yaml | 5 + .../evaluate/evals/001005.eval.yaml | 5 + .../evaluate/evals/001006.eval.yaml | 7 +- .../evaluate/evals/001007.eval.yaml | 7 +- .../evaluate/evals/001008.eval.yaml | 5 + .../evaluate/evals/001009.eval.yaml | 5 + .../evaluate/evals/001010.eval.yaml | 5 + .../evaluate/evals/001011.eval.yaml | 5 + .../evaluate/evals/001012.eval.yaml | 5 + .../evaluate/evals/001013.eval.yaml | 5 + .../evaluate/evals/002001.eval.yaml | 5 + .../evaluate/evals/002002.eval.yaml | 5 + .../evaluate/evals/002003.eval.yaml | 5 + .../evaluate/evals/002004.eval.yaml | 5 + .../evaluate/evals/002005.eval.yaml | 5 + .../evaluate/evals/002006.eval.yaml | 5 + .../evaluate/evals/002007.eval.yaml | 5 + .../evaluate/evals/002008.eval.yaml | 5 + .../evaluate/evals/002009.eval.yaml | 5 + .../evaluate/evals/002010.eval.yaml | 5 + .../evaluate/evals/003001.eval.yaml | 5 + .../evaluate/evals/003002.eval.yaml | 5 + .../evaluate/evals/004001.eval.yaml | 5 + .../evaluate/evals/004002.eval.yaml | 22 ++-- .../evaluate/evals/004003.eval.yaml | 5 + .../evaluate/evals/005001.eval.yaml | 5 + .../employee.tsp | 100 ++++++++++++++++++ .../main.tsp | 31 ++++++ .../package.json | 50 +++++++++ .../readme.md | 45 ++++++++ .../shared.tsp | 8 ++ .../tspconfig.yaml | 44 ++++++++ 35 files changed, 431 insertions(+), 13 deletions(-) create mode 100644 .github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/employee.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/main.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/package.json create mode 100644 .github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/readme.md create mode 100644 .github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/shared.tsp create mode 100644 .github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/tspconfig.yaml diff --git a/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml index 9b51c7216c5..b81d05f1586 100644 --- a/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml @@ -38,6 +38,10 @@ stimuli: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: main.tsp @@ -63,5 +67,6 @@ scoring: weights: file-matches: 3 tool-calls: 1 + skill-invocation: 1 prompt: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml index f5b6be917b3..a7ab314a0b3 100644 --- a/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml @@ -42,6 +42,10 @@ stimuli: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: employee.tsp @@ -67,6 +71,7 @@ stimuli: scoring: weights: tool-calls: 1 + skill-invocation: 1 prompt: 1 file-matches: 4 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml index 688656e6c7e..5a170070fc0 100644 --- a/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml @@ -42,6 +42,10 @@ stimuli: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: main.tsp @@ -65,4 +69,5 @@ scoring: prompt: 1 file-matches: 2 tool-calls: 1 + skill-invocation: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml index 485f51b2235..0940cca560d 100644 --- a/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml @@ -42,6 +42,10 @@ stimuli: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: employee.tsp @@ -61,4 +65,5 @@ scoring: prompt: 1 file-matches: 2 tool-calls: 1 + skill-invocation: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml index 0372eb49151..a07a68a97f4 100644 --- a/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml @@ -75,6 +75,10 @@ stimuli: required: - edit - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-exists config: path: examples/2025-05-04-preview/Employees_Get_MaximumSet_Gen.json @@ -116,4 +120,5 @@ scoring: file-exists: 1 file-not-exists: 1 tool-calls: 1 + skill-invocation: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001006.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001006.eval.yaml index 5ae9af105e6..13e796fc3ea 100644 --- a/.github/azure-typespec-author/evaluate/evals/001006.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001006.eval.yaml @@ -75,6 +75,10 @@ stimuli: required: - edit - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-exists config: path: examples/2025-05-04-preview/Employees_Get_MaximumSet_Gen.json @@ -101,4 +105,5 @@ scoring: prompt: 1 file-matches: 2 tool-calls: 1 - threshold: 1.0 + skill-invocation: 1 + threshold: 1.0 \ No newline at end of file diff --git a/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml index 4bf4023cad1..87c42bc2b1e 100644 --- a/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml @@ -81,6 +81,10 @@ stimuli: required: - edit - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-exists config: path: examples/2025-01-01/Employees_Get_MaximumSet_Gen.json @@ -118,4 +122,5 @@ scoring: file-exists: 1 file-not-exists: 1 tool-calls: 1 - threshold: 1.0 + skill-invocation: 1 + threshold: 1.0 \ No newline at end of file diff --git a/.github/azure-typespec-author/evaluate/evals/001008.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001008.eval.yaml index 3fb2b781e1e..a7900d3f387 100644 --- a/.github/azure-typespec-author/evaluate/evals/001008.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001008.eval.yaml @@ -81,6 +81,10 @@ stimuli: required: - edit - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-exists config: path: examples/2024-10-01/Employees_Get_MaximumSet_Gen.json @@ -111,4 +115,5 @@ scoring: prompt: 1 file-matches: 3 tool-calls: 1 + skill-invocation: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml index c742b20e9ce..a8d6b64e0ac 100644 --- a/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml @@ -41,6 +41,10 @@ stimuli: required: - edit - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: Microsoft.Widget/Widget/main.tsp @@ -64,4 +68,5 @@ scoring: prompt: 1 file-matches: 3 tool-calls: 1 + skill-invocation: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml index fbe3054c3f9..078f85448d4 100644 --- a/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml @@ -41,6 +41,10 @@ stimuli: required: - edit - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: Microsoft.Widget/Widget/main.tsp @@ -56,5 +60,6 @@ stimuli: scoring: weights: tool-calls: 1 + skill-invocation: 1 file-matches: 3 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml index e1b41b6b161..05512728bd2 100644 --- a/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml @@ -46,6 +46,10 @@ stimuli: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: Microsoft.Widget/Widget/main.tsp @@ -62,4 +66,5 @@ scoring: weights: file-matches: 3 tool-calls: 1 + skill-invocation: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml index 4d28860c18a..223f339b0c1 100644 --- a/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml @@ -46,6 +46,10 @@ stimuli: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: Microsoft.Widget/Widget/main.tsp @@ -74,4 +78,5 @@ scoring: weights: file-matches: 6 tool-calls: 1 + skill-invocation: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml index aaab88da005..ccefd24795b 100644 --- a/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml @@ -46,6 +46,10 @@ stimuli: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: Microsoft.Widget/Widget/main.tsp @@ -69,4 +73,5 @@ scoring: prompt: 1 file-matches: 3 tool-calls: 1 + skill-invocation: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml index 9b0d7593333..3104bd51d32 100644 --- a/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml @@ -46,6 +46,10 @@ stimuli: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: '*.tsp' @@ -67,6 +71,7 @@ stimuli: scoring: weights: tool-calls: 1 + skill-invocation: 1 prompt: 1 file-not-matches: 1 file-matches: 2 diff --git a/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml index abc8ea580bd..bc2347f6392 100644 --- a/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml @@ -42,6 +42,10 @@ stimuli: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: '*.tsp' @@ -57,5 +61,6 @@ stimuli: scoring: weights: tool-calls: 1 + skill-invocation: 1 file-matches: 3 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml index 58097ddbe00..ea1eda462d1 100644 --- a/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml @@ -42,6 +42,10 @@ stimuli: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: '*.tsp' @@ -49,5 +53,6 @@ stimuli: scoring: weights: tool-calls: 1 + skill-invocation: 1 file-matches: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml index e9f6b891ce5..34d569946f8 100644 --- a/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml @@ -44,6 +44,10 @@ stimuli: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: badgeAssignment.tsp @@ -69,6 +73,7 @@ stimuli: scoring: weights: tool-calls: 1 + skill-invocation: 1 prompt: 1 file-matches: 4 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml index a656c041a96..0d62311c28b 100644 --- a/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml @@ -40,6 +40,10 @@ stimuli: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: '*.tsp' @@ -80,6 +84,7 @@ stimuli: scoring: weights: tool-calls: 1 + skill-invocation: 1 prompt: 1 file-matches: 7 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml index 94d7c5fff80..d5014ddbe0f 100644 --- a/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml @@ -46,6 +46,10 @@ stimuli: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: '*.tsp' @@ -120,6 +124,7 @@ stimuli: scoring: weights: tool-calls: 1 + skill-invocation: 1 prompt: 1 file-matches: 16 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml index e90228a58db..bb239bb5e4b 100644 --- a/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml @@ -47,6 +47,10 @@ stimuli: - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation # VP1: Extensible enum for notification priority levels (Low, Medium, High) + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: 'employee.tsp' @@ -103,6 +107,7 @@ stimuli: scoring: weights: tool-calls: 1 + skill-invocation: 1 prompt: 1 file-matches: 11 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml index 46c96e39c80..9f17bc7a107 100644 --- a/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml @@ -45,6 +45,10 @@ stimuli: required: - edit - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: '*.tsp' @@ -52,5 +56,6 @@ stimuli: scoring: weights: tool-calls: 1 + skill-invocation: 1 file-matches: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml index df72ad19dc3..e14ba5a81d1 100644 --- a/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml @@ -42,6 +42,10 @@ stimuli: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: employee.tsp @@ -55,6 +59,7 @@ stimuli: scoring: weights: tool-calls: 1 + skill-invocation: 1 prompt: 1 file-matches: 1 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml index a77a3640556..ebed4a60f67 100644 --- a/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml @@ -42,6 +42,10 @@ stimuli: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: employee.tsp @@ -59,6 +63,7 @@ stimuli: scoring: weights: tool-calls: 1 + skill-invocation: 1 prompt: 1 file-matches: 2 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml index 8dd9b7d728f..464d49b6d2a 100644 --- a/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml @@ -43,6 +43,10 @@ stimuli: - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation # VP1: Accept either inline ArmCombinedLroHeaders or alias-based EmployeeMoveLroHeaders usage. + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: employee.tsp @@ -60,6 +64,7 @@ stimuli: scoring: weights: tool-calls: 1 + skill-invocation: 1 prompt: 1 file-matches: 2 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml index f1c44939c32..60a220e1f3e 100644 --- a/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml @@ -47,6 +47,10 @@ stimuli: - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation # VP1: ArmAsyncOperationHeader with FinalResult = Employee (alias or inline) + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: employee.tsp @@ -78,6 +82,7 @@ stimuli: scoring: weights: tool-calls: 1 + skill-invocation: 1 prompt: 1 file-matches: 5 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml index 074e66955f1..a30a48400ce 100644 --- a/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml @@ -46,6 +46,10 @@ stimuli: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: '*.tsp' @@ -59,6 +63,7 @@ stimuli: scoring: weights: tool-calls: 1 + skill-invocation: 1 prompt: 1 file-matches: 2 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml index cf02806dbd4..38c8cfebecf 100644 --- a/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml @@ -23,22 +23,18 @@ stimuli: max_tokens: 5000 environment: files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp + - src: ../fixtures/004002-decorate-length-constrains-on-array-item/employee.tsp dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp + - src: ../fixtures/004002-decorate-length-constrains-on-array-item/main.tsp dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json + - src: ../fixtures/004002-decorate-length-constrains-on-array-item/package.json dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md + - src: ../fixtures/004002-decorate-length-constrains-on-array-item/readme.md dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp + - src: ../fixtures/004002-decorate-length-constrains-on-array-item/shared.tsp dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml + - src: ../fixtures/004002-decorate-length-constrains-on-array-item/tspconfig.yaml dest: tspconfig.yaml - - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json - dest: stable/2021-11-01/widget.json - - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json - dest: preview/2024-10-01-preview/widget.json graders: - type: tool-calls config: @@ -46,7 +42,10 @@ stimuli: - edit - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - azure-sdk-mcp-azsdk_run_typespec_validation - # VP1: Custom scalar type with minLength/maxLength constraints + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: employee.tsp @@ -73,6 +72,7 @@ stimuli: scoring: weights: tool-calls: 1 + skill-invocation: 1 prompt: 1 file-matches: 4 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml index fee37196f97..a1e94e44a3f 100644 --- a/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml @@ -53,6 +53,10 @@ stimuli: required: - edit # VP1: Underscore operationIds should be removed (e.g. BgpConnection has only underscore ones) + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-not-matches config: path: BgpConnection.tsp @@ -111,6 +115,7 @@ stimuli: scoring: weights: tool-calls: 1 + skill-invocation: 1 file-not-matches: 3 file-matches: 4 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml index 7018d3ac511..a9c30d6b466 100644 --- a/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml +++ b/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml @@ -39,6 +39,10 @@ stimuli: required: - edit - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author - type: file-matches config: path: models.tsp @@ -50,5 +54,6 @@ stimuli: scoring: weights: tool-calls: 1 + skill-invocation: 1 file-matches: 2 threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/employee.tsp new file mode 100644 index 00000000000..950bdede6b8 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/employee.tsp @@ -0,0 +1,100 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.Core; +using Azure.ResourceManager; + +namespace Microsoft.Widget; + +/** Employee resource */ +model Employee is TrackedResource { + ...ResourceNameParameter; +} + +/** Employee properties */ +model EmployeeProperties { + /** Age of employee */ + age?: int32; + + /** City of employee */ + city?: string; + + /** Profile of employee */ + @encode("base64url") + profile?: bytes; + + /** The status of the last operation. */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; + + /** The assets belong to the employee. */ + assets: string[]; +} + +/** The provisioning state of a resource. */ +@lroStatus +union ProvisioningState { + string, + + /** The resource create request has been accepted */ + Accepted: "Accepted", + + /** The resource is being provisioned */ + Provisioning: "Provisioning", + + /** The resource is updating */ + Updating: "Updating", + + /** Resource has been created. */ + Succeeded: "Succeeded", + + /** Resource creation failed. */ + Failed: "Failed", + + /** Resource creation was canceled. */ + Canceled: "Canceled", + + /** The resource is being deleted */ + Deleting: "Deleting", +} + +/** Employee move request */ +model MoveRequest { + /** The moving from location */ + from: string; + + /** The moving to location */ + to: string; +} + +/** Employee move response */ +model MoveResponse { + /** The status of the move */ + movingStatus: string; +} + +@armResourceOperations +interface Employees { + get is ArmResourceRead; + createOrUpdate is ArmResourceCreateOrReplaceAsync; + update is ArmCustomPatchSync< + Employee, + Azure.ResourceManager.Foundations.ResourceUpdateModel< + Employee, + EmployeeProperties + > + >; + delete is ArmResourceDeleteWithoutOkAsync; + listByResourceGroup is ArmResourceListByParent; + listBySubscription is ArmListBySubscription; + + /** A sample resource action that move employee to different location */ + move is ArmResourceActionSync; + + /** A sample HEAD operation to check resource existence */ + checkExistence is ArmResourceCheckExistence; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/main.tsp new file mode 100644 index 00000000000..a9ac2fb7119 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/main.tsp @@ -0,0 +1,31 @@ +import "@typespec/http"; +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Http; +using TypeSpec.Rest; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +/** Microsoft.Widget Resource Provider management API. */ +@armProviderNamespace +@service(#{ title: "Widget" }) +@versioned(Microsoft.Widget.Versions) +namespace Microsoft.Widget; + +/** The available API versions. */ +enum Versions { + /** 2021-10-01-preview version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + @previewVersion + v2021_10_01_preview: "2021-10-01-preview", + + /** 2021-11-01 version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + v2021_11_01: "2021-11-01", +} + +interface Operations extends Azure.ResourceManager.Operations {} \ No newline at end of file diff --git a/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/package.json b/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/package.json new file mode 100644 index 00000000000..45377b8ad61 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/package.json @@ -0,0 +1,50 @@ +{ + "name": "azure-rest-api-specs", + "devDependencies": { + "@azure-tools/openai-typespec": "1.11.0", + "@azure-tools/spec-gen-sdk": "~0.9.1", + "@azure-tools/specs-shared": "file:.github/shared", + "@azure-tools/typespec-apiview": "0.7.2", + "@azure-tools/typespec-metadata": "0.1.1", + "@azure-tools/typespec-autorest": "0.66.0", + "@azure-tools/typespec-azure-core": "0.66.0", + "@azure-tools/typespec-azure-portal-core": "0.66.0", + "@azure-tools/typespec-azure-resource-manager": "0.66.0", + "@azure-tools/typespec-azure-rulesets": "0.66.0", + "@azure-tools/typespec-client-generator-cli": "0.31.0", + "@azure-tools/typespec-client-generator-core": "0.66.3", + "@azure-tools/typespec-liftr-base": "0.13.0", + "@autorest/openapi-to-typespec": "0.11.13", + "@azure/avocado": "0.10.5", + "@azure/oad": "0.12.4", + "@microsoft.azure/openapi-validator": "2.2.4", + "@microsoft.azure/openapi-validator-core": "1.0.7", + "@microsoft.azure/openapi-validator-rulesets": "2.2.5", + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/sse": "0.80.0", + "@typespec/events": "0.80.0", + "@typespec/openapi": "1.10.0", + "@typespec/openapi3": "1.10.0", + "@typespec/prettier-plugin-typespec": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/streams": "0.80.0", + "@typespec/versioning": "0.80.0", + "@typespec/xml": "0.80.0", + "azure-rest-api-specs-eng-tools": "file:eng/tools", + "oav": "4.0.3", + "prettier": "3.8.1", + "typescript": "~5.9.2" + }, + "overrides": { + "@typespec/asset-emitter": "0.79.1", + "get-uri": "^6.0.5", + "minimatch@^3.0.0": "^3.1.5", + "superagent": "^10.2.3" + }, + "engines": { + "node": ">=20.0.0", + "npm": ">=10.0.0" + }, + "private": true +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/readme.md b/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/readme.md new file mode 100644 index 00000000000..3c4a3d353b9 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/readme.md @@ -0,0 +1,45 @@ +# Widget + +> see https://aka.ms/autorest + +This is the AutoRest configuration file for Widget. + +## Configuration + +### Basic Information + +This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. +This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we +use the native TypeSpec code generation configured in the tspconfig.yaml file. + +```yaml +openapi-type: arm +openapi-subtype: rpaas +tag: package-2021-11-01 +``` + +### Tag: package-2021-11-01 + +These settings apply only when `--tag=package-2021-11-01` is specified on the command line. + +```yaml $(tag) == 'package-2021-11-01' +input-file: + - stable/2021-11-01/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +### Tag: package-2021-10-01-preview + +These settings apply only when `--tag=package-2021-10-01-preview` is specified on the command line. + +```yaml $(tag) == 'package-2021-10-01-preview' +input-file: + - preview/2021-10-01-preview/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +--- diff --git a/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/shared.tsp new file mode 100644 index 00000000000..1b94bb70503 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/shared.tsp @@ -0,0 +1,8 @@ +@doc("Faked shared model") +model FakedSharedModel { + @doc("The tag.") + tag: string; + + @doc("The created date.") + createdAt: utcDateTime; +} diff --git a/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/tspconfig.yaml new file mode 100644 index 00000000000..9c97da201c0 --- /dev/null +++ b/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/tspconfig.yaml @@ -0,0 +1,44 @@ +parameters: + "service-dir": + default: "sdk/widget" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + use-read-only-status-schema: true + emitter-output-dir: "{project-root}" + output-file: "{version-status}/{version}/widget.json" + arm-types-dir: "{project-root}/../../../../common-types/resource-management" + "@azure-typespec/http-client-csharp-mgmt": + namespace: "Azure.ResourceManager.Widget" + emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" + "@azure-tools/typespec-python": + emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" + namespace: "azure.mgmt.widget" + generate-test: true + generate-sample: true + flavor: "azure" + "@azure-tools/typespec-java": + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" + namespace: "com.azure.resourcemanager.widget" + service-name: "Widget" # human-readable service name, whitespace allowed + flavor: azure + "@azure-tools/typespec-ts": + emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" + flavor: azure + experimental-extensible-enums: true + package-details: + name: "@azure/arm-widget" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/widget" + emitter-output-dir: "{output-dir}/{service-dir}/armwidget" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" From 7098b9ea39f24aace1d972c97d9a1deefdb56949 Mon Sep 17 00:00:00 2001 From: Haoling Dong Date: Mon, 27 Apr 2026 16:38:12 +0800 Subject: [PATCH 12/98] Add back mcp tools and constrain sections --- .github/skills/azure-typespec-author/SKILL.md | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/.github/skills/azure-typespec-author/SKILL.md b/.github/skills/azure-typespec-author/SKILL.md index 09f5b81d71a..3629019d05c 100644 --- a/.github/skills/azure-typespec-author/SKILL.md +++ b/.github/skills/azure-typespec-author/SKILL.md @@ -10,11 +10,33 @@ compatibility: # Azure TypeSpec Author +## MCP Tools + +| Tool | Purpose | +| ------------------------------------------------------ | --------------------------------------------------------- | +| `azure-sdk-mcp:azsdk_typespec_generate_authoring_plan` | Generate grounded authoring plan (General Authoring only) | +| `azure-sdk-mcp:azsdk_run_typespec_validation` | Validate TypeSpec | + +**Prerequisite:** `azure-sdk-mcp` server must be running. + +# When to invoke the azure-typespec-author skill + +The `azure-typespec-author` skill **must** be invoked immediately in all modes (including plan mode) for any task that involves creating and modifying TypeSpec (`.tsp`) files except for `client.tsp` under the specification directory in this repository. This includes but is not limited to: + +- Adding, bumping, or promoting API versions (preview, stable) +- Adding or modifying resources, operations, models, properties, or decorators +- Changing visibility, constraints, breaking changes, LRO patterns, or suppressions +- Defining or updating operationId, spread models, or extension resources +- Converting Swagger to TypeSpec (post-conversion edits) + ## Constraints -- **Never skip steps** — even trivial `.tsp` changes can require complex versioning decorators. -- **Minimal edits** — only change what the request requires. -- **Authoring plan is source of truth** — do not deviate by copying existing code patterns. +- **Always follow the full workflow** — even seemingly simple changes (e.g. adding a default value) can require complex versioning decorator changes. Never skip steps. +- **Mandatory for ALL `.tsp` edits** — even a single `?` change can be breaking. +- **Minimal, scoped edits** — only change what the request requires. +- **Always validate** — run every steps in [validation](references/validation.md) after every edit. +- **Always cite references** — provide links that justify the approach. +- **Follow the authoring plan exactly** — code changes in Step 4 MUST follow the authoring plan generated in Step 3. Do not deviate by referring to existing code patterns in the TypeSpec project; the authoring plan is the single source of truth for what to change. ## Workflow From fb12e77b14ae4eec73dcb514815784783d3fac28 Mon Sep 17 00:00:00 2001 From: Haoling Dong Date: Mon, 27 Apr 2026 16:55:32 +0800 Subject: [PATCH 13/98] resolve comments --- .../azure-typespec-author/references/authoring-plan.md | 7 +++---- .../skills/azure-typespec-author/references/validation.md | 6 +++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/.github/skills/azure-typespec-author/references/authoring-plan.md b/.github/skills/azure-typespec-author/references/authoring-plan.md index de3e74424ad..ffad8361602 100644 --- a/.github/skills/azure-typespec-author/references/authoring-plan.md +++ b/.github/skills/azure-typespec-author/references/authoring-plan.md @@ -4,7 +4,7 @@ ## 3.1 General (All Cases) -Use **one or both** tools to build an authoring plan: +Use **both** tools to build an authoring plan, if the retrieved results have conflict, rely on agentic search. 1. **MCP Tool** — call `azsdk_typespec_generate_authoring_plan` with: - `request`: user request (verbatim) @@ -21,6 +21,5 @@ Use **one or both** tools to build an authoring plan: > **Must** use Agentic Search (option 2 above) to build the plan — do not call the MCP tool. -1. Only one preview version allowed; decorate with `@previewVersion`. -2. Copy `.json` files from latest version's `examples/` into new version's `examples/`. Update `api-version` in each file. Delete old version's example folder if old version is no longer existed. -3. Update `readme.md`. +1. Copy `.json` files from latest version's `examples/` into new version's `examples/`. Update `api-version` in each file. Delete old version's example folder if old version is no longer existed. +2. Update `readme.md`. diff --git a/.github/skills/azure-typespec-author/references/validation.md b/.github/skills/azure-typespec-author/references/validation.md index 0ff30b508fb..750baa5bd56 100644 --- a/.github/skills/azure-typespec-author/references/validation.md +++ b/.github/skills/azure-typespec-author/references/validation.md @@ -10,16 +10,16 @@ Run all sub-steps in order after applying changes. ### 5.1: TypeSpec Validation -Invoke `azsdk_run_typespec_validation` with the project root. On failure → fix → re-run until resolved. +Invoke `azsdk_run_typespec_validation` with the project root. On failure → fix → re-run. Limit to 3 retry attempts; if still failing after 3 retries, stop and report the remaining errors to the user. ### 5.2: Compile -Run `tsp compile .` from the project root. Verify `.json` output under `{project-root}/{version-status}/{target-version}/`. Fix compile errors if any. +Run `tsp compile .` from the project root. Verify `.json` output under the directory specified by the `@azure-tools/typespec-autorest` entry in the project's tspconfig.yaml. Fix compile errors if any. > 5.1 checks for errors/warnings; 5.2 generates the OpenAPI output. Both are required. ### 5.3: Example Verification -Verify `{project-root}/{version-status}/{target-version}/examples/` exists with `.json` files using the correct `api-version`. If missing, copy from the previous version's examples and update `api-version`. +Verify `{project-root}/{version-status}/{target-version}/examples/` exists with `.json` files using the correct `api-version`. If missing, copy from the previous version's examples and update `api-version`. Skip example verification for XML-based specs, as the tooling does not support examples for XML specifications. Verify that any example folder for an API version that no longer exists in the `Versions` enum has been deleted. For each folder under `{project-root}/{version-status}/`, check that the folder name matches an entry in the `Versions` enum. If a folder exists for a removed version, delete it. From a3c8b1f017e465e7c4be1f6e0af4e077afc5367b Mon Sep 17 00:00:00 2001 From: JoyerJin <116236375+JoyerJin@users.noreply.github.com> Date: Mon, 27 Apr 2026 18:23:13 +0800 Subject: [PATCH 14/98] edit package Co-authored-by: Copilot --- .../package.json | 24 +------------------ .../001002-version-default-value/package.json | 24 +------------------ .../package.json | 24 +------------------ .../package.json | 24 +------------------ .../package.json | 24 +------------------ .../package.json | 24 +------------------ .../package.json | 24 +------------------ .../package.json | 24 +------------------ .../package.json | 24 +------------------ .../package.json | 24 +------------------ .../package.json | 24 +------------------ .../package.json | 24 +------------------ .../package.json | 24 +------------------ .../package.json | 24 +------------------ .../package.json | 24 +------------------ .../Microsoft.Widget/Widget/package.json | 24 +------------------ 16 files changed, 16 insertions(+), 368 deletions(-) diff --git a/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/package.json b/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/package.json index 45377b8ad61..9b0af8bcd6e 100644 --- a/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/package.json +++ b/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/package.json @@ -1,40 +1,18 @@ { "name": "azure-rest-api-specs", "devDependencies": { - "@azure-tools/openai-typespec": "1.11.0", - "@azure-tools/spec-gen-sdk": "~0.9.1", - "@azure-tools/specs-shared": "file:.github/shared", - "@azure-tools/typespec-apiview": "0.7.2", - "@azure-tools/typespec-metadata": "0.1.1", "@azure-tools/typespec-autorest": "0.66.0", "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-portal-core": "0.66.0", "@azure-tools/typespec-azure-resource-manager": "0.66.0", "@azure-tools/typespec-azure-rulesets": "0.66.0", "@azure-tools/typespec-client-generator-cli": "0.31.0", "@azure-tools/typespec-client-generator-core": "0.66.3", - "@azure-tools/typespec-liftr-base": "0.13.0", - "@autorest/openapi-to-typespec": "0.11.13", - "@azure/avocado": "0.10.5", - "@azure/oad": "0.12.4", - "@microsoft.azure/openapi-validator": "2.2.4", - "@microsoft.azure/openapi-validator-core": "1.0.7", - "@microsoft.azure/openapi-validator-rulesets": "2.2.5", "@typespec/compiler": "1.10.0", "@typespec/http": "1.10.0", - "@typespec/sse": "0.80.0", - "@typespec/events": "0.80.0", "@typespec/openapi": "1.10.0", "@typespec/openapi3": "1.10.0", - "@typespec/prettier-plugin-typespec": "1.10.0", "@typespec/rest": "0.80.0", - "@typespec/streams": "0.80.0", - "@typespec/versioning": "0.80.0", - "@typespec/xml": "0.80.0", - "azure-rest-api-specs-eng-tools": "file:eng/tools", - "oav": "4.0.3", - "prettier": "3.8.1", - "typescript": "~5.9.2" + "@typespec/versioning": "0.80.0" }, "overrides": { "@typespec/asset-emitter": "0.79.1", diff --git a/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/package.json b/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/package.json index 45377b8ad61..9b0af8bcd6e 100644 --- a/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/package.json +++ b/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/package.json @@ -1,40 +1,18 @@ { "name": "azure-rest-api-specs", "devDependencies": { - "@azure-tools/openai-typespec": "1.11.0", - "@azure-tools/spec-gen-sdk": "~0.9.1", - "@azure-tools/specs-shared": "file:.github/shared", - "@azure-tools/typespec-apiview": "0.7.2", - "@azure-tools/typespec-metadata": "0.1.1", "@azure-tools/typespec-autorest": "0.66.0", "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-portal-core": "0.66.0", "@azure-tools/typespec-azure-resource-manager": "0.66.0", "@azure-tools/typespec-azure-rulesets": "0.66.0", "@azure-tools/typespec-client-generator-cli": "0.31.0", "@azure-tools/typespec-client-generator-core": "0.66.3", - "@azure-tools/typespec-liftr-base": "0.13.0", - "@autorest/openapi-to-typespec": "0.11.13", - "@azure/avocado": "0.10.5", - "@azure/oad": "0.12.4", - "@microsoft.azure/openapi-validator": "2.2.4", - "@microsoft.azure/openapi-validator-core": "1.0.7", - "@microsoft.azure/openapi-validator-rulesets": "2.2.5", "@typespec/compiler": "1.10.0", "@typespec/http": "1.10.0", - "@typespec/sse": "0.80.0", - "@typespec/events": "0.80.0", "@typespec/openapi": "1.10.0", "@typespec/openapi3": "1.10.0", - "@typespec/prettier-plugin-typespec": "1.10.0", "@typespec/rest": "0.80.0", - "@typespec/streams": "0.80.0", - "@typespec/versioning": "0.80.0", - "@typespec/xml": "0.80.0", - "azure-rest-api-specs-eng-tools": "file:eng/tools", - "oav": "4.0.3", - "prettier": "3.8.1", - "typescript": "~5.9.2" + "@typespec/versioning": "0.80.0" }, "overrides": { "@typespec/asset-emitter": "0.79.1", diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/package.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/package.json index 45377b8ad61..9b0af8bcd6e 100644 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/package.json +++ b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/package.json @@ -1,40 +1,18 @@ { "name": "azure-rest-api-specs", "devDependencies": { - "@azure-tools/openai-typespec": "1.11.0", - "@azure-tools/spec-gen-sdk": "~0.9.1", - "@azure-tools/specs-shared": "file:.github/shared", - "@azure-tools/typespec-apiview": "0.7.2", - "@azure-tools/typespec-metadata": "0.1.1", "@azure-tools/typespec-autorest": "0.66.0", "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-portal-core": "0.66.0", "@azure-tools/typespec-azure-resource-manager": "0.66.0", "@azure-tools/typespec-azure-rulesets": "0.66.0", "@azure-tools/typespec-client-generator-cli": "0.31.0", "@azure-tools/typespec-client-generator-core": "0.66.3", - "@azure-tools/typespec-liftr-base": "0.13.0", - "@autorest/openapi-to-typespec": "0.11.13", - "@azure/avocado": "0.10.5", - "@azure/oad": "0.12.4", - "@microsoft.azure/openapi-validator": "2.2.4", - "@microsoft.azure/openapi-validator-core": "1.0.7", - "@microsoft.azure/openapi-validator-rulesets": "2.2.5", "@typespec/compiler": "1.10.0", "@typespec/http": "1.10.0", - "@typespec/sse": "0.80.0", - "@typespec/events": "0.80.0", "@typespec/openapi": "1.10.0", "@typespec/openapi3": "1.10.0", - "@typespec/prettier-plugin-typespec": "1.10.0", "@typespec/rest": "0.80.0", - "@typespec/streams": "0.80.0", - "@typespec/versioning": "0.80.0", - "@typespec/xml": "0.80.0", - "azure-rest-api-specs-eng-tools": "file:eng/tools", - "oav": "4.0.3", - "prettier": "3.8.1", - "typescript": "~5.9.2" + "@typespec/versioning": "0.80.0" }, "overrides": { "@typespec/asset-emitter": "0.79.1", diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/package.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/package.json index 45377b8ad61..9b0af8bcd6e 100644 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/package.json +++ b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/package.json @@ -1,40 +1,18 @@ { "name": "azure-rest-api-specs", "devDependencies": { - "@azure-tools/openai-typespec": "1.11.0", - "@azure-tools/spec-gen-sdk": "~0.9.1", - "@azure-tools/specs-shared": "file:.github/shared", - "@azure-tools/typespec-apiview": "0.7.2", - "@azure-tools/typespec-metadata": "0.1.1", "@azure-tools/typespec-autorest": "0.66.0", "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-portal-core": "0.66.0", "@azure-tools/typespec-azure-resource-manager": "0.66.0", "@azure-tools/typespec-azure-rulesets": "0.66.0", "@azure-tools/typespec-client-generator-cli": "0.31.0", "@azure-tools/typespec-client-generator-core": "0.66.3", - "@azure-tools/typespec-liftr-base": "0.13.0", - "@autorest/openapi-to-typespec": "0.11.13", - "@azure/avocado": "0.10.5", - "@azure/oad": "0.12.4", - "@microsoft.azure/openapi-validator": "2.2.4", - "@microsoft.azure/openapi-validator-core": "1.0.7", - "@microsoft.azure/openapi-validator-rulesets": "2.2.5", "@typespec/compiler": "1.10.0", "@typespec/http": "1.10.0", - "@typespec/sse": "0.80.0", - "@typespec/events": "0.80.0", "@typespec/openapi": "1.10.0", "@typespec/openapi3": "1.10.0", - "@typespec/prettier-plugin-typespec": "1.10.0", "@typespec/rest": "0.80.0", - "@typespec/streams": "0.80.0", - "@typespec/versioning": "0.80.0", - "@typespec/xml": "0.80.0", - "azure-rest-api-specs-eng-tools": "file:eng/tools", - "oav": "4.0.3", - "prettier": "3.8.1", - "typescript": "~5.9.2" + "@typespec/versioning": "0.80.0" }, "overrides": { "@typespec/asset-emitter": "0.79.1", diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/package.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/package.json index 45377b8ad61..9b0af8bcd6e 100644 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/package.json +++ b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/package.json @@ -1,40 +1,18 @@ { "name": "azure-rest-api-specs", "devDependencies": { - "@azure-tools/openai-typespec": "1.11.0", - "@azure-tools/spec-gen-sdk": "~0.9.1", - "@azure-tools/specs-shared": "file:.github/shared", - "@azure-tools/typespec-apiview": "0.7.2", - "@azure-tools/typespec-metadata": "0.1.1", "@azure-tools/typespec-autorest": "0.66.0", "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-portal-core": "0.66.0", "@azure-tools/typespec-azure-resource-manager": "0.66.0", "@azure-tools/typespec-azure-rulesets": "0.66.0", "@azure-tools/typespec-client-generator-cli": "0.31.0", "@azure-tools/typespec-client-generator-core": "0.66.3", - "@azure-tools/typespec-liftr-base": "0.13.0", - "@autorest/openapi-to-typespec": "0.11.13", - "@azure/avocado": "0.10.5", - "@azure/oad": "0.12.4", - "@microsoft.azure/openapi-validator": "2.2.4", - "@microsoft.azure/openapi-validator-core": "1.0.7", - "@microsoft.azure/openapi-validator-rulesets": "2.2.5", "@typespec/compiler": "1.10.0", "@typespec/http": "1.10.0", - "@typespec/sse": "0.80.0", - "@typespec/events": "0.80.0", "@typespec/openapi": "1.10.0", "@typespec/openapi3": "1.10.0", - "@typespec/prettier-plugin-typespec": "1.10.0", "@typespec/rest": "0.80.0", - "@typespec/streams": "0.80.0", - "@typespec/versioning": "0.80.0", - "@typespec/xml": "0.80.0", - "azure-rest-api-specs-eng-tools": "file:eng/tools", - "oav": "4.0.3", - "prettier": "3.8.1", - "typescript": "~5.9.2" + "@typespec/versioning": "0.80.0" }, "overrides": { "@typespec/asset-emitter": "0.79.1", diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/package.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/package.json index 45377b8ad61..9b0af8bcd6e 100644 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/package.json +++ b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/package.json @@ -1,40 +1,18 @@ { "name": "azure-rest-api-specs", "devDependencies": { - "@azure-tools/openai-typespec": "1.11.0", - "@azure-tools/spec-gen-sdk": "~0.9.1", - "@azure-tools/specs-shared": "file:.github/shared", - "@azure-tools/typespec-apiview": "0.7.2", - "@azure-tools/typespec-metadata": "0.1.1", "@azure-tools/typespec-autorest": "0.66.0", "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-portal-core": "0.66.0", "@azure-tools/typespec-azure-resource-manager": "0.66.0", "@azure-tools/typespec-azure-rulesets": "0.66.0", "@azure-tools/typespec-client-generator-cli": "0.31.0", "@azure-tools/typespec-client-generator-core": "0.66.3", - "@azure-tools/typespec-liftr-base": "0.13.0", - "@autorest/openapi-to-typespec": "0.11.13", - "@azure/avocado": "0.10.5", - "@azure/oad": "0.12.4", - "@microsoft.azure/openapi-validator": "2.2.4", - "@microsoft.azure/openapi-validator-core": "1.0.7", - "@microsoft.azure/openapi-validator-rulesets": "2.2.5", "@typespec/compiler": "1.10.0", "@typespec/http": "1.10.0", - "@typespec/sse": "0.80.0", - "@typespec/events": "0.80.0", "@typespec/openapi": "1.10.0", "@typespec/openapi3": "1.10.0", - "@typespec/prettier-plugin-typespec": "1.10.0", "@typespec/rest": "0.80.0", - "@typespec/streams": "0.80.0", - "@typespec/versioning": "0.80.0", - "@typespec/xml": "0.80.0", - "azure-rest-api-specs-eng-tools": "file:eng/tools", - "oav": "4.0.3", - "prettier": "3.8.1", - "typescript": "~5.9.2" + "@typespec/versioning": "0.80.0" }, "overrides": { "@typespec/asset-emitter": "0.79.1", diff --git a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/package.json b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/package.json index 45377b8ad61..9b0af8bcd6e 100644 --- a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/package.json +++ b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/package.json @@ -1,40 +1,18 @@ { "name": "azure-rest-api-specs", "devDependencies": { - "@azure-tools/openai-typespec": "1.11.0", - "@azure-tools/spec-gen-sdk": "~0.9.1", - "@azure-tools/specs-shared": "file:.github/shared", - "@azure-tools/typespec-apiview": "0.7.2", - "@azure-tools/typespec-metadata": "0.1.1", "@azure-tools/typespec-autorest": "0.66.0", "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-portal-core": "0.66.0", "@azure-tools/typespec-azure-resource-manager": "0.66.0", "@azure-tools/typespec-azure-rulesets": "0.66.0", "@azure-tools/typespec-client-generator-cli": "0.31.0", "@azure-tools/typespec-client-generator-core": "0.66.3", - "@azure-tools/typespec-liftr-base": "0.13.0", - "@autorest/openapi-to-typespec": "0.11.13", - "@azure/avocado": "0.10.5", - "@azure/oad": "0.12.4", - "@microsoft.azure/openapi-validator": "2.2.4", - "@microsoft.azure/openapi-validator-core": "1.0.7", - "@microsoft.azure/openapi-validator-rulesets": "2.2.5", "@typespec/compiler": "1.10.0", "@typespec/http": "1.10.0", - "@typespec/sse": "0.80.0", - "@typespec/events": "0.80.0", "@typespec/openapi": "1.10.0", "@typespec/openapi3": "1.10.0", - "@typespec/prettier-plugin-typespec": "1.10.0", "@typespec/rest": "0.80.0", - "@typespec/streams": "0.80.0", - "@typespec/versioning": "0.80.0", - "@typespec/xml": "0.80.0", - "azure-rest-api-specs-eng-tools": "file:eng/tools", - "oav": "4.0.3", - "prettier": "3.8.1", - "typescript": "~5.9.2" + "@typespec/versioning": "0.80.0" }, "overrides": { "@typespec/asset-emitter": "0.79.1", diff --git a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/package.json b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/package.json index 45377b8ad61..9b0af8bcd6e 100644 --- a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/package.json +++ b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/package.json @@ -1,40 +1,18 @@ { "name": "azure-rest-api-specs", "devDependencies": { - "@azure-tools/openai-typespec": "1.11.0", - "@azure-tools/spec-gen-sdk": "~0.9.1", - "@azure-tools/specs-shared": "file:.github/shared", - "@azure-tools/typespec-apiview": "0.7.2", - "@azure-tools/typespec-metadata": "0.1.1", "@azure-tools/typespec-autorest": "0.66.0", "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-portal-core": "0.66.0", "@azure-tools/typespec-azure-resource-manager": "0.66.0", "@azure-tools/typespec-azure-rulesets": "0.66.0", "@azure-tools/typespec-client-generator-cli": "0.31.0", "@azure-tools/typespec-client-generator-core": "0.66.3", - "@azure-tools/typespec-liftr-base": "0.13.0", - "@autorest/openapi-to-typespec": "0.11.13", - "@azure/avocado": "0.10.5", - "@azure/oad": "0.12.4", - "@microsoft.azure/openapi-validator": "2.2.4", - "@microsoft.azure/openapi-validator-core": "1.0.7", - "@microsoft.azure/openapi-validator-rulesets": "2.2.5", "@typespec/compiler": "1.10.0", "@typespec/http": "1.10.0", - "@typespec/sse": "0.80.0", - "@typespec/events": "0.80.0", "@typespec/openapi": "1.10.0", "@typespec/openapi3": "1.10.0", - "@typespec/prettier-plugin-typespec": "1.10.0", "@typespec/rest": "0.80.0", - "@typespec/streams": "0.80.0", - "@typespec/versioning": "0.80.0", - "@typespec/xml": "0.80.0", - "azure-rest-api-specs-eng-tools": "file:eng/tools", - "oav": "4.0.3", - "prettier": "3.8.1", - "typescript": "~5.9.2" + "@typespec/versioning": "0.80.0" }, "overrides": { "@typespec/asset-emitter": "0.79.1", diff --git a/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/package.json b/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/package.json index 45377b8ad61..9b0af8bcd6e 100644 --- a/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/package.json +++ b/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/package.json @@ -1,40 +1,18 @@ { "name": "azure-rest-api-specs", "devDependencies": { - "@azure-tools/openai-typespec": "1.11.0", - "@azure-tools/spec-gen-sdk": "~0.9.1", - "@azure-tools/specs-shared": "file:.github/shared", - "@azure-tools/typespec-apiview": "0.7.2", - "@azure-tools/typespec-metadata": "0.1.1", "@azure-tools/typespec-autorest": "0.66.0", "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-portal-core": "0.66.0", "@azure-tools/typespec-azure-resource-manager": "0.66.0", "@azure-tools/typespec-azure-rulesets": "0.66.0", "@azure-tools/typespec-client-generator-cli": "0.31.0", "@azure-tools/typespec-client-generator-core": "0.66.3", - "@azure-tools/typespec-liftr-base": "0.13.0", - "@autorest/openapi-to-typespec": "0.11.13", - "@azure/avocado": "0.10.5", - "@azure/oad": "0.12.4", - "@microsoft.azure/openapi-validator": "2.2.4", - "@microsoft.azure/openapi-validator-core": "1.0.7", - "@microsoft.azure/openapi-validator-rulesets": "2.2.5", "@typespec/compiler": "1.10.0", "@typespec/http": "1.10.0", - "@typespec/sse": "0.80.0", - "@typespec/events": "0.80.0", "@typespec/openapi": "1.10.0", "@typespec/openapi3": "1.10.0", - "@typespec/prettier-plugin-typespec": "1.10.0", "@typespec/rest": "0.80.0", - "@typespec/streams": "0.80.0", - "@typespec/versioning": "0.80.0", - "@typespec/xml": "0.80.0", - "azure-rest-api-specs-eng-tools": "file:eng/tools", - "oav": "4.0.3", - "prettier": "3.8.1", - "typescript": "~5.9.2" + "@typespec/versioning": "0.80.0" }, "overrides": { "@typespec/asset-emitter": "0.79.1", diff --git a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/package.json b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/package.json index 45377b8ad61..9b0af8bcd6e 100644 --- a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/package.json +++ b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/package.json @@ -1,40 +1,18 @@ { "name": "azure-rest-api-specs", "devDependencies": { - "@azure-tools/openai-typespec": "1.11.0", - "@azure-tools/spec-gen-sdk": "~0.9.1", - "@azure-tools/specs-shared": "file:.github/shared", - "@azure-tools/typespec-apiview": "0.7.2", - "@azure-tools/typespec-metadata": "0.1.1", "@azure-tools/typespec-autorest": "0.66.0", "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-portal-core": "0.66.0", "@azure-tools/typespec-azure-resource-manager": "0.66.0", "@azure-tools/typespec-azure-rulesets": "0.66.0", "@azure-tools/typespec-client-generator-cli": "0.31.0", "@azure-tools/typespec-client-generator-core": "0.66.3", - "@azure-tools/typespec-liftr-base": "0.13.0", - "@autorest/openapi-to-typespec": "0.11.13", - "@azure/avocado": "0.10.5", - "@azure/oad": "0.12.4", - "@microsoft.azure/openapi-validator": "2.2.4", - "@microsoft.azure/openapi-validator-core": "1.0.7", - "@microsoft.azure/openapi-validator-rulesets": "2.2.5", "@typespec/compiler": "1.10.0", "@typespec/http": "1.10.0", - "@typespec/sse": "0.80.0", - "@typespec/events": "0.80.0", "@typespec/openapi": "1.10.0", "@typespec/openapi3": "1.10.0", - "@typespec/prettier-plugin-typespec": "1.10.0", "@typespec/rest": "0.80.0", - "@typespec/streams": "0.80.0", - "@typespec/versioning": "0.80.0", - "@typespec/xml": "0.80.0", - "azure-rest-api-specs-eng-tools": "file:eng/tools", - "oav": "4.0.3", - "prettier": "3.8.1", - "typescript": "~5.9.2" + "@typespec/versioning": "0.80.0" }, "overrides": { "@typespec/asset-emitter": "0.79.1", diff --git a/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/package.json b/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/package.json index 45377b8ad61..9b0af8bcd6e 100644 --- a/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/package.json +++ b/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/package.json @@ -1,40 +1,18 @@ { "name": "azure-rest-api-specs", "devDependencies": { - "@azure-tools/openai-typespec": "1.11.0", - "@azure-tools/spec-gen-sdk": "~0.9.1", - "@azure-tools/specs-shared": "file:.github/shared", - "@azure-tools/typespec-apiview": "0.7.2", - "@azure-tools/typespec-metadata": "0.1.1", "@azure-tools/typespec-autorest": "0.66.0", "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-portal-core": "0.66.0", "@azure-tools/typespec-azure-resource-manager": "0.66.0", "@azure-tools/typespec-azure-rulesets": "0.66.0", "@azure-tools/typespec-client-generator-cli": "0.31.0", "@azure-tools/typespec-client-generator-core": "0.66.3", - "@azure-tools/typespec-liftr-base": "0.13.0", - "@autorest/openapi-to-typespec": "0.11.13", - "@azure/avocado": "0.10.5", - "@azure/oad": "0.12.4", - "@microsoft.azure/openapi-validator": "2.2.4", - "@microsoft.azure/openapi-validator-core": "1.0.7", - "@microsoft.azure/openapi-validator-rulesets": "2.2.5", "@typespec/compiler": "1.10.0", "@typespec/http": "1.10.0", - "@typespec/sse": "0.80.0", - "@typespec/events": "0.80.0", "@typespec/openapi": "1.10.0", "@typespec/openapi3": "1.10.0", - "@typespec/prettier-plugin-typespec": "1.10.0", "@typespec/rest": "0.80.0", - "@typespec/streams": "0.80.0", - "@typespec/versioning": "0.80.0", - "@typespec/xml": "0.80.0", - "azure-rest-api-specs-eng-tools": "file:eng/tools", - "oav": "4.0.3", - "prettier": "3.8.1", - "typescript": "~5.9.2" + "@typespec/versioning": "0.80.0" }, "overrides": { "@typespec/asset-emitter": "0.79.1", diff --git a/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/package.json b/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/package.json index 45377b8ad61..9b0af8bcd6e 100644 --- a/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/package.json +++ b/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/package.json @@ -1,40 +1,18 @@ { "name": "azure-rest-api-specs", "devDependencies": { - "@azure-tools/openai-typespec": "1.11.0", - "@azure-tools/spec-gen-sdk": "~0.9.1", - "@azure-tools/specs-shared": "file:.github/shared", - "@azure-tools/typespec-apiview": "0.7.2", - "@azure-tools/typespec-metadata": "0.1.1", "@azure-tools/typespec-autorest": "0.66.0", "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-portal-core": "0.66.0", "@azure-tools/typespec-azure-resource-manager": "0.66.0", "@azure-tools/typespec-azure-rulesets": "0.66.0", "@azure-tools/typespec-client-generator-cli": "0.31.0", "@azure-tools/typespec-client-generator-core": "0.66.3", - "@azure-tools/typespec-liftr-base": "0.13.0", - "@autorest/openapi-to-typespec": "0.11.13", - "@azure/avocado": "0.10.5", - "@azure/oad": "0.12.4", - "@microsoft.azure/openapi-validator": "2.2.4", - "@microsoft.azure/openapi-validator-core": "1.0.7", - "@microsoft.azure/openapi-validator-rulesets": "2.2.5", "@typespec/compiler": "1.10.0", "@typespec/http": "1.10.0", - "@typespec/sse": "0.80.0", - "@typespec/events": "0.80.0", "@typespec/openapi": "1.10.0", "@typespec/openapi3": "1.10.0", - "@typespec/prettier-plugin-typespec": "1.10.0", "@typespec/rest": "0.80.0", - "@typespec/streams": "0.80.0", - "@typespec/versioning": "0.80.0", - "@typespec/xml": "0.80.0", - "azure-rest-api-specs-eng-tools": "file:eng/tools", - "oav": "4.0.3", - "prettier": "3.8.1", - "typescript": "~5.9.2" + "@typespec/versioning": "0.80.0" }, "overrides": { "@typespec/asset-emitter": "0.79.1", diff --git a/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/package.json b/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/package.json index 45377b8ad61..9b0af8bcd6e 100644 --- a/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/package.json +++ b/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/package.json @@ -1,40 +1,18 @@ { "name": "azure-rest-api-specs", "devDependencies": { - "@azure-tools/openai-typespec": "1.11.0", - "@azure-tools/spec-gen-sdk": "~0.9.1", - "@azure-tools/specs-shared": "file:.github/shared", - "@azure-tools/typespec-apiview": "0.7.2", - "@azure-tools/typespec-metadata": "0.1.1", "@azure-tools/typespec-autorest": "0.66.0", "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-portal-core": "0.66.0", "@azure-tools/typespec-azure-resource-manager": "0.66.0", "@azure-tools/typespec-azure-rulesets": "0.66.0", "@azure-tools/typespec-client-generator-cli": "0.31.0", "@azure-tools/typespec-client-generator-core": "0.66.3", - "@azure-tools/typespec-liftr-base": "0.13.0", - "@autorest/openapi-to-typespec": "0.11.13", - "@azure/avocado": "0.10.5", - "@azure/oad": "0.12.4", - "@microsoft.azure/openapi-validator": "2.2.4", - "@microsoft.azure/openapi-validator-core": "1.0.7", - "@microsoft.azure/openapi-validator-rulesets": "2.2.5", "@typespec/compiler": "1.10.0", "@typespec/http": "1.10.0", - "@typespec/sse": "0.80.0", - "@typespec/events": "0.80.0", "@typespec/openapi": "1.10.0", "@typespec/openapi3": "1.10.0", - "@typespec/prettier-plugin-typespec": "1.10.0", "@typespec/rest": "0.80.0", - "@typespec/streams": "0.80.0", - "@typespec/versioning": "0.80.0", - "@typespec/xml": "0.80.0", - "azure-rest-api-specs-eng-tools": "file:eng/tools", - "oav": "4.0.3", - "prettier": "3.8.1", - "typescript": "~5.9.2" + "@typespec/versioning": "0.80.0" }, "overrides": { "@typespec/asset-emitter": "0.79.1", diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/package.json b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/package.json index 45377b8ad61..9b0af8bcd6e 100644 --- a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/package.json +++ b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/package.json @@ -1,40 +1,18 @@ { "name": "azure-rest-api-specs", "devDependencies": { - "@azure-tools/openai-typespec": "1.11.0", - "@azure-tools/spec-gen-sdk": "~0.9.1", - "@azure-tools/specs-shared": "file:.github/shared", - "@azure-tools/typespec-apiview": "0.7.2", - "@azure-tools/typespec-metadata": "0.1.1", "@azure-tools/typespec-autorest": "0.66.0", "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-portal-core": "0.66.0", "@azure-tools/typespec-azure-resource-manager": "0.66.0", "@azure-tools/typespec-azure-rulesets": "0.66.0", "@azure-tools/typespec-client-generator-cli": "0.31.0", "@azure-tools/typespec-client-generator-core": "0.66.3", - "@azure-tools/typespec-liftr-base": "0.13.0", - "@autorest/openapi-to-typespec": "0.11.13", - "@azure/avocado": "0.10.5", - "@azure/oad": "0.12.4", - "@microsoft.azure/openapi-validator": "2.2.4", - "@microsoft.azure/openapi-validator-core": "1.0.7", - "@microsoft.azure/openapi-validator-rulesets": "2.2.5", "@typespec/compiler": "1.10.0", "@typespec/http": "1.10.0", - "@typespec/sse": "0.80.0", - "@typespec/events": "0.80.0", "@typespec/openapi": "1.10.0", "@typespec/openapi3": "1.10.0", - "@typespec/prettier-plugin-typespec": "1.10.0", "@typespec/rest": "0.80.0", - "@typespec/streams": "0.80.0", - "@typespec/versioning": "0.80.0", - "@typespec/xml": "0.80.0", - "azure-rest-api-specs-eng-tools": "file:eng/tools", - "oav": "4.0.3", - "prettier": "3.8.1", - "typescript": "~5.9.2" + "@typespec/versioning": "0.80.0" }, "overrides": { "@typespec/asset-emitter": "0.79.1", diff --git a/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/package.json b/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/package.json index 45377b8ad61..9b0af8bcd6e 100644 --- a/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/package.json +++ b/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/package.json @@ -1,40 +1,18 @@ { "name": "azure-rest-api-specs", "devDependencies": { - "@azure-tools/openai-typespec": "1.11.0", - "@azure-tools/spec-gen-sdk": "~0.9.1", - "@azure-tools/specs-shared": "file:.github/shared", - "@azure-tools/typespec-apiview": "0.7.2", - "@azure-tools/typespec-metadata": "0.1.1", "@azure-tools/typespec-autorest": "0.66.0", "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-portal-core": "0.66.0", "@azure-tools/typespec-azure-resource-manager": "0.66.0", "@azure-tools/typespec-azure-rulesets": "0.66.0", "@azure-tools/typespec-client-generator-cli": "0.31.0", "@azure-tools/typespec-client-generator-core": "0.66.3", - "@azure-tools/typespec-liftr-base": "0.13.0", - "@autorest/openapi-to-typespec": "0.11.13", - "@azure/avocado": "0.10.5", - "@azure/oad": "0.12.4", - "@microsoft.azure/openapi-validator": "2.2.4", - "@microsoft.azure/openapi-validator-core": "1.0.7", - "@microsoft.azure/openapi-validator-rulesets": "2.2.5", "@typespec/compiler": "1.10.0", "@typespec/http": "1.10.0", - "@typespec/sse": "0.80.0", - "@typespec/events": "0.80.0", "@typespec/openapi": "1.10.0", "@typespec/openapi3": "1.10.0", - "@typespec/prettier-plugin-typespec": "1.10.0", "@typespec/rest": "0.80.0", - "@typespec/streams": "0.80.0", - "@typespec/versioning": "0.80.0", - "@typespec/xml": "0.80.0", - "azure-rest-api-specs-eng-tools": "file:eng/tools", - "oav": "4.0.3", - "prettier": "3.8.1", - "typescript": "~5.9.2" + "@typespec/versioning": "0.80.0" }, "overrides": { "@typespec/asset-emitter": "0.79.1", diff --git a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/package.json b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/package.json index 45377b8ad61..9b0af8bcd6e 100644 --- a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/package.json +++ b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/package.json @@ -1,40 +1,18 @@ { "name": "azure-rest-api-specs", "devDependencies": { - "@azure-tools/openai-typespec": "1.11.0", - "@azure-tools/spec-gen-sdk": "~0.9.1", - "@azure-tools/specs-shared": "file:.github/shared", - "@azure-tools/typespec-apiview": "0.7.2", - "@azure-tools/typespec-metadata": "0.1.1", "@azure-tools/typespec-autorest": "0.66.0", "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-portal-core": "0.66.0", "@azure-tools/typespec-azure-resource-manager": "0.66.0", "@azure-tools/typespec-azure-rulesets": "0.66.0", "@azure-tools/typespec-client-generator-cli": "0.31.0", "@azure-tools/typespec-client-generator-core": "0.66.3", - "@azure-tools/typespec-liftr-base": "0.13.0", - "@autorest/openapi-to-typespec": "0.11.13", - "@azure/avocado": "0.10.5", - "@azure/oad": "0.12.4", - "@microsoft.azure/openapi-validator": "2.2.4", - "@microsoft.azure/openapi-validator-core": "1.0.7", - "@microsoft.azure/openapi-validator-rulesets": "2.2.5", "@typespec/compiler": "1.10.0", "@typespec/http": "1.10.0", - "@typespec/sse": "0.80.0", - "@typespec/events": "0.80.0", "@typespec/openapi": "1.10.0", "@typespec/openapi3": "1.10.0", - "@typespec/prettier-plugin-typespec": "1.10.0", "@typespec/rest": "0.80.0", - "@typespec/streams": "0.80.0", - "@typespec/versioning": "0.80.0", - "@typespec/xml": "0.80.0", - "azure-rest-api-specs-eng-tools": "file:eng/tools", - "oav": "4.0.3", - "prettier": "3.8.1", - "typescript": "~5.9.2" + "@typespec/versioning": "0.80.0" }, "overrides": { "@typespec/asset-emitter": "0.79.1", From 78a87810fb9114541f3b4c941bfa48e0b51305de Mon Sep 17 00:00:00 2001 From: Haoling Dong Date: Tue, 28 Apr 2026 15:06:04 +0800 Subject: [PATCH 15/98] Add azure-typespec-author skill evaluation pipeline Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../azure-typespec-author-benchmark.yml | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 eng/pipelines/azure-typespec-author-benchmark.yml diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml new file mode 100644 index 00000000000..bf7e094f609 --- /dev/null +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -0,0 +1,114 @@ +# NOTE: Please refer to https://aka.ms/azsdk/engsys/ci-yaml before editing this file. + +trigger: none + +pr: none + +parameters: +- name: PythonVersion + type: string + default: '3.10' + +extends: + template: /eng/pipelines/templates/stages/1es-redirect.yml + parameters: + Use1ESOfficial: false + stages: + - stage: EvalTypeSpecAuthor + displayName: Azure TypeSpec Author Skill Evaluation + variables: + - template: /eng/pipelines/templates/variables/globals.yml + - template: /eng/pipelines/templates/variables/image.yml + pool: + name: $(LINUXPOOL) + image: $(LINUXVMIMAGE) + os: linux + jobs: + - job: RunEvals + displayName: Run Vally Evaluations + timeoutInMinutes: 120 + steps: + - checkout: self + fetchDepth: 0 + + # Install Go and build/start the QA bot backend + - script: | + echo "Downloading Go 1.24.0..." + curl -LO https://go.dev/dl/go1.24.0.linux-amd64.tar.gz + + echo "Removing existing Go installation..." + sudo rm -rf /usr/local/go + + echo "Extracting Go 1.24.0..." + sudo tar -C /usr/local -xzf go1.24.0.linux-amd64.tar.gz + + echo "Setting environment variables..." + echo "##vso[task.setvariable variable=GOROOT]/usr/local/go" + echo "##vso[task.prependpath]/usr/local/go/bin" + displayName: Install Go + + - script: go version + displayName: Check Go version + + - task: AzureCLI@2 + displayName: Start QA bot backend service + inputs: + azureSubscription: 'azuresdkqabot-dev' + scriptType: bash + scriptLocation: inlineScript + workingDirectory: $(Build.SourcesDirectory)/tools/sdk-ai-bots/azure-sdk-qa-bot-backend + inlineScript: | + export GOPROXY=https://proxy.golang.org,direct + go build -o qa-bot-service + chmod +x qa-bot-service + nohup ./qa-bot-service /dev/null 2>&1 & + sleep 20 + lsof -ti:8088 + env: + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + AZURE_APPCONFIG_ENDPOINT: $(AZURE_APPCONFIG_ENDPOINT) + + # Install .NET SDK for azsdk-cli MCP server + - task: UseDotNet@2 + displayName: Install .NET 8.0 SDK + inputs: + version: '8.x' + + # Install Node.js and Vally CLI + - template: /eng/common/pipelines/templates/steps/login-to-github.yml + parameters: + TokenOwners: + - microsoft + + - task: NodeTool@0 + inputs: + versionSpec: '22.x' + displayName: Install Node.js + + - script: | + npm config set "@microsoft:registry" "https://npm.pkg.github.com" + npm config set "//npm.pkg.github.com/:_authToken" "$(GH_TOKEN)" + displayName: Configure GitHub Packages registry + + - script: npm install -g @microsoft/vally-cli + displayName: Install Vally CLI + + # Run evaluations + - script: | + vally eval --suite all --workspace ./debug --output-dir ./results --verbose || true + displayName: Run azure-typespec-author evaluations + workingDirectory: $(Build.SourcesDirectory)/.github/skills/azure-typespec-author/evaluate + continueOnError: true + + templateContext: + outputs: + - output: pipelineArtifact + path: $(Build.SourcesDirectory)/.github/skills/azure-typespec-author/evaluate/debug + artifact: eval-debug-workspace + displayName: Publish Debug Workspace + condition: always() + - output: pipelineArtifact + path: $(Build.SourcesDirectory)/.github/skills/azure-typespec-author/evaluate/results + artifact: eval-results + displayName: Publish Evaluation Results + condition: always() From e3af6a862e5d89d0c5555bec26e5fa9a21bc79c7 Mon Sep 17 00:00:00 2001 From: Haoling Dong Date: Tue, 28 Apr 2026 16:20:08 +0800 Subject: [PATCH 16/98] add 5 test cases --- .../evaluate/.vally.yaml | 24 ++++ .../evaluate/evals/001001.eval.yaml | 72 ++++++++++ .../evaluate/evals/001002.eval.yaml | 77 +++++++++++ .../evaluate/evals/001003.eval.yaml | 73 +++++++++++ .../evaluate/evals/001004.eval.yaml | 69 ++++++++++ .../evaluate/evals/001005.eval.yaml | 124 ++++++++++++++++++ .../employee.tsp | 110 ++++++++++++++++ .../001-share-version-new-feature/main.tsp | 32 +++++ .../package.json | 28 ++++ .../001-share-version-new-feature/readme.md | 45 +++++++ .../001-share-version-new-feature/shared.tsp | 8 ++ .../tspconfig.yaml | 44 +++++++ .../001002-version-default-value/employee.tsp | 63 +++++++++ .../001002-version-default-value/main.tsp | 36 +++++ .../001002-version-default-value/package.json | 28 ++++ .../001002-version-default-value/readme.md | 57 ++++++++ .../001002-version-default-value/shared.tsp | 8 ++ .../tspconfig.yaml | 44 +++++++ .../employee.tsp | 104 +++++++++++++++ ...ployees_CreateOrUpdate_MaximumSet_Gen.json | 70 ++++++++++ .../Employees_Delete_MaximumSet_Gen.json | 18 +++ .../Employees_Get_MaximumSet_Gen.json | 35 +++++ ...es_ListByResourceGroup_MaximumSet_Gen.json | 39 ++++++ ...es_ListByResourceGroup_MinimumSet_Gen.json | 21 +++ ...ees_ListBySubscription_MaximumSet_Gen.json | 38 ++++++ ...ees_ListBySubscription_MinimumSet_Gen.json | 20 +++ .../Employees_Update_MaximumSet_Gen.json | 43 ++++++ .../Operations_List_MaximumSet_Gen.json | 28 ++++ .../Operations_List_MinimumSet_Gen.json | 12 ++ ...ployees_CreateOrUpdate_MaximumSet_Gen.json | 85 ++++++++++++ .../Employees_Delete_MaximumSet_Gen.json | 18 +++ .../Employees_Get_MaximumSet_Gen.json | 40 ++++++ ...es_ListByResourceGroup_MaximumSet_Gen.json | 44 +++++++ ...es_ListByResourceGroup_MinimumSet_Gen.json | 21 +++ ...ees_ListBySubscription_MaximumSet_Gen.json | 43 ++++++ ...ees_ListBySubscription_MinimumSet_Gen.json | 20 +++ .../Employees_Update_MaximumSet_Gen.json | 53 ++++++++ .../Operations_List_MaximumSet_Gen.json | 28 ++++ .../Operations_List_MinimumSet_Gen.json | 12 ++ .../main.tsp | 31 +++++ .../package.json | 28 ++++ .../readme.md | 45 +++++++ .../shared.tsp | 8 ++ .../tspconfig.yaml | 44 +++++++ 44 files changed, 1890 insertions(+) create mode 100644 .github/skills/azure-typespec-author/evaluate/.vally.yaml create mode 100644 .github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml create mode 100644 .github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml create mode 100644 .github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml create mode 100644 .github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml create mode 100644 .github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/employee.tsp create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/main.tsp create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/package.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/readme.md create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/shared.tsp create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/tspconfig.yaml create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/employee.tsp create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/main.tsp create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/package.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/readme.md create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/shared.tsp create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/tspconfig.yaml create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/employee.tsp create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/main.tsp create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/package.json create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/readme.md create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/shared.tsp create mode 100644 .github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/tspconfig.yaml diff --git a/.github/skills/azure-typespec-author/evaluate/.vally.yaml b/.github/skills/azure-typespec-author/evaluate/.vally.yaml new file mode 100644 index 00000000000..4a301f9044e --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/.vally.yaml @@ -0,0 +1,24 @@ +# Vally configuration for Azure SDK Typespec Author MCP tool evaluations +# See: https://vally.dev/reference/vally-config + +paths: + evals: [evals/] + evalFilenames: ["*.eval.yaml"] + skills: [../] + results: results/ + +environments: + azsdk-mcp: + mcpServers: + azure-sdk-mcp: + type: stdio + command: dotnet + args: ["run", "--project", "../../../../tools/azsdk-cli/Azure.Sdk.Tools.Cli", "--", "start"] + timeout: 30000 + env: + AZSDKTOOLS_AGENT_TESTING: "false" + AZSDKTOOLS_COLLECT_TELEMETRY: "false" + AZURE_SDK_KB_ENDPOINT: "http://localhost:8088" +suites: + all: + evals: ["evals/*.eval.yaml"] diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml new file mode 100644 index 00000000000..b81d05f1586 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml @@ -0,0 +1,72 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment +environment: azsdk-mcp + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- name: 001001-version-spread-property + prompt: I added `...Azure.ResourceManager.ManagedServiceIdentityProperty;` which updates all my existing API versions and introduces a breaking change. I want to introduce the properties of the spread model '...ManagedServiceIdentityProperty' in API version 2025-05-04-preview only. + environment: + files: + - src: ../fixtures/001-share-version-new-feature/employee.tsp + dest: employee.tsp + - src: ../fixtures/001-share-version-new-feature/main.tsp + dest: main.tsp + - src: ../fixtures/001-share-version-new-feature/shared.tsp + dest: shared.tsp + - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml + dest: tspconfig.yaml + - src: ../fixtures/001-share-version-new-feature/package.json + dest: package.json + - src: ../fixtures/001-share-version-new-feature/readme.md + dest: readme.md + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author + - type: file-matches + config: + path: main.tsp + pattern: 2025-05-04-preview + - type: file-matches + config: + path: employee.tsp + pattern: "\\.\\.\\.ManagedServiceIdentityProperty;" + - type: file-matches + config: + path: employee.tsp + pattern: "@@added\\(Employee\\.identity, (Microsoft\\.Widget\\.)?Versions\\.(v2025_05_04_preview|`2025-05-04-preview`)\\);" + - type: prompt + config: + prompt: Verify changes are scoped to this task only, with no unrelated edits beyond introducing preview-only identity via versioning. + model: claude-opus-4.6 + scoring: scale_1_5 + threshold: 1.0 + constraints: + max_turns: 10 + max_tokens: 50000 +scoring: + weights: + file-matches: 3 + tool-calls: 1 + skill-invocation: 1 + prompt: 1 + threshold: 1.0 diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml new file mode 100644 index 00000000000..a7ab314a0b3 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml @@ -0,0 +1,77 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment +environment: azsdk-mcp + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- name: 001002-version-default-value + prompt: | + add a default value `21` for property age in model EmployeeProperties only for the new api version 2025-11-01 + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/001002-version-default-value/employee.tsp + dest: employee.tsp + - src: ../fixtures/001002-version-default-value/main.tsp + dest: main.tsp + - src: ../fixtures/001002-version-default-value/package.json + dest: package.json + - src: ../fixtures/001002-version-default-value/readme.md + dest: readme.md + - src: ../fixtures/001002-version-default-value/shared.tsp + dest: shared.tsp + - src: ../fixtures/001002-version-default-value/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author + - type: file-matches + config: + path: employee.tsp + pattern: '@removed\(Versions\.v2025_11_01\)' + - type: file-matches + config: + path: employee.tsp + pattern: '@renamedFrom\(Versions\.v2025_11_01, "age"\)' + - type: file-matches + config: + path: employee.tsp + pattern: '@added\(Versions\.v2025_11_01\)' + - type: file-matches + config: + path: employee.tsp + pattern: 'age\?: int32 = 21;' + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: add a default value of 21 for the `age` property in `EmployeeProperties` that only applies to the 2025-11-01 API version. The old age renamed and removed for the new version.' + model: claude-opus-4.6 +scoring: + weights: + tool-calls: 1 + skill-invocation: 1 + prompt: 1 + file-matches: 4 + threshold: 1.0 diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml new file mode 100644 index 00000000000..5a170070fc0 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml @@ -0,0 +1,73 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment +environment: azsdk-mcp + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + change the property age of EmployeeProperties from required to optional for api version 2025-05-04-preview + name: 001003-version-required-to-optional + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/001-share-version-new-feature/employee.tsp + dest: employee.tsp + - src: ../fixtures/001-share-version-new-feature/main.tsp + dest: main.tsp + - src: ../fixtures/001-share-version-new-feature/package.json + dest: package.json + - src: ../fixtures/001-share-version-new-feature/readme.md + dest: readme.md + - src: ../fixtures/001-share-version-new-feature/shared.tsp + dest: shared.tsp + - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author + - type: file-matches + config: + path: main.tsp + pattern: 2025-05-04-preview + - type: file-matches + config: + path: employee.tsp + pattern: '@madeOptional' + - type: file-matches + config: + path: employee.tsp + pattern: 2025-05-04-preview|v2025_05_04_preview + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6 +scoring: + weights: + prompt: 1 + file-matches: 2 + tool-calls: 1 + skill-invocation: 1 + threshold: 1.0 diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml new file mode 100644 index 00000000000..0940cca560d --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml @@ -0,0 +1,69 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment +environment: azsdk-mcp + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + change the visibility of property 'provisioningState' from Lifecycle.Read to Lifecycle.Read and Lifecycle.Create in version 2025-05-04-preview only + name: 001004-version-property-decorator + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/001-share-version-new-feature/employee.tsp + dest: employee.tsp + - src: ../fixtures/001-share-version-new-feature/main.tsp + dest: main.tsp + - src: ../fixtures/001-share-version-new-feature/package.json + dest: package.json + - src: ../fixtures/001-share-version-new-feature/readme.md + dest: readme.md + - src: ../fixtures/001-share-version-new-feature/shared.tsp + dest: shared.tsp + - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml + dest: tspconfig.yaml + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author + - type: file-matches + config: + path: employee.tsp + pattern: Lifecycle\.Read, Lifecycle\.Create + - type: file-matches + config: + path: main.tsp + pattern: 2025-05-04-preview + - type: prompt + config: + scoring: scale_1_5 + threshold: 1.0 + prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' + model: claude-opus-4.6 +scoring: + weights: + prompt: 1 + file-matches: 2 + tool-calls: 1 + skill-invocation: 1 + threshold: 1.0 diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml new file mode 100644 index 00000000000..a07a68a97f4 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml @@ -0,0 +1,124 @@ +name: azure-typespec-author-eval +description: Evaluation suite for azure-typespec-author. +version: "1.0" +type: capability # capability | regression + +# Root-level environment +environment: azsdk-mcp + +# Execution configuration +config: + runs: 1 # Trials per stimulus + timeout: 1800 # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use + +# Test cases +stimuli: +- prompt: | + Add a new preview version `2025-05-04-preview` to my service widget resource manager. Exclude Feature: `age` property with default value 21. Carry other features. + name: 001005-version-add-preview-after-preview + constraints: + max_turns: 10 + max_tokens: 5000 + environment: + files: + - src: ../fixtures/001005-version-add-preview-after-preview\employee.tsp + dest: employee.tsp + - src: ../fixtures/001005-version-add-preview-after-preview\main.tsp + dest: main.tsp + - src: ../fixtures/001005-version-add-preview-after-preview\shared.tsp + dest: shared.tsp + - src: ../fixtures/001005-version-add-preview-after-preview\tspconfig.yaml + dest: tspconfig.yaml + - src: ../fixtures/001005-version-add-preview-after-preview\package.json + dest: package.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_CreateOrUpdate_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Delete_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Get_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_ListByResourceGroup_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_ListBySubscription_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Update_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Operations_List_MaximumSet_Gen.json + dest: examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Operations_List_MinimumSet_Gen.json + dest: examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json + dest: examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListBySubscription_MinimumSet_Gen.json + dest: examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json + dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Operations_List_MaximumSet_Gen.json + dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Operations_List_MinimumSet_Gen.json + dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json + graders: + - type: tool-calls + config: + required: + - edit + - azure-sdk-mcp-azsdk_run_typespec_validation + - type: skill-invocation + config: + required: + - azure-typespec-author + - type: file-exists + config: + path: examples/2025-05-04-preview/Employees_Get_MaximumSet_Gen.json + - type: file-not-exists + config: + path: examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json + - type: file-matches + config: + path: main.tsp + pattern: 2025-05-04-preview + - type: file-not-matches + config: + path: main.tsp + pattern: 2024-10-01-preview + - type: file-not-matches + config: + path: employee.tsp + pattern: oldAge + - type: file-matches + config: + path: employee.tsp + pattern: '@added\(Versions\.v2025_05_04_preview\)\s+workLocation\?: WorkLocation;' + - type: file-not-matches + config: + path: employee.tsp + pattern: v2024_10_01_preview + - type: file-matches + config: + path: employee.tsp + pattern: 'age\?: int32;' + - type: file-matches + config: + path: employee.tsp + pattern: '@typeChangedFrom\(Versions\.v2025_05_04_preview, string\[\]\)' +scoring: + weights: + file-matches: 4 + file-not-matches: 3 + file-exists: 1 + file-not-exists: 1 + tool-calls: 1 + skill-invocation: 1 + threshold: 1.0 diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/employee.tsp b/.github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/employee.tsp new file mode 100644 index 00000000000..67516a5d7b9 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/employee.tsp @@ -0,0 +1,110 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +namespace Microsoft.Widget; + +/** Employee resource */ +model Employee is TrackedResource { + ...ResourceNameParameter; + ...ManagedServiceIdentityProperty; +} + +/** Employee properties */ +model EmployeeProperties { + /** Age of employee */ + age?: int32; + + /** City of employee */ + city?: string; + + /** Email of employee */ + email?: string; + + /** Department of employee */ + department?: string; + + /** Status code of employee */ + statusCode?: string; + + /** Profile of employee */ + @encode("base64url") + profile?: bytes; + + /** The status of the last operation. */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; +} + +/** The provisioning state of a resource. */ +@lroStatus +union ProvisioningState { + ResourceProvisioningState, + + /** The resource is being provisioned */ + Provisioning: "Provisioning", + + /** The resource is updating */ + Updating: "Updating", + + /** The resource is being deleted */ + Deleting: "Deleting", + + /** The resource create request has been accepted */ + Accepted: "Accepted", + + string, +} + +/** Employee move request */ +model MoveRequest { + /** The moving from location */ + from: string; + + /** The moving to location */ + to: string; +} + +/** Employee move response */ +model MoveResponse { + /** The status of the move */ + movingStatus: string; +} + +/** Export result model */ +model ExportResult { + /** Exported data */ + data?: string; +} + +@armResourceOperations +interface Employees { + get is ArmResourceRead; + createOrUpdate is ArmResourceCreateOrReplaceAsync; + update is ArmCustomPatchSync< + Employee, + Azure.ResourceManager.Foundations.ResourceUpdateModel< + Employee, + EmployeeProperties + > + >; + delete is ArmResourceDeleteWithoutOkAsync; + listByResourceGroup is ArmResourceListByParent; + listBySubscription is ArmListBySubscription; + + /** Export employee data */ + exportData is ArmResourceActionSync; + + /** A sample resource action that move employee to different location */ + move is ArmResourceActionSync; + + /** A sample HEAD operation to check resource existence */ + checkExistence is ArmResourceCheckExistence; +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/main.tsp b/.github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/main.tsp new file mode 100644 index 00000000000..4478b277d67 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/main.tsp @@ -0,0 +1,32 @@ +import "@typespec/http"; +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "./employee.tsp"; + +using TypeSpec.Http; +using TypeSpec.Rest; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +/** Microsoft.Widget Resource Provider management API. */ +@armProviderNamespace +@service(#{ title: "Widget" }) +@versioned(Microsoft.Widget.Versions) +namespace Microsoft.Widget; + +/** The available API versions. */ +enum Versions { + /** 2021-11-01 version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + v2021_11_01: "2021-11-01", + + /** 2025-05-04-preview version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + @previewVersion + v2025_05_04_preview: "2025-05-04-preview", +} + +interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/package.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/package.json new file mode 100644 index 00000000000..9b0af8bcd6e --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/package.json @@ -0,0 +1,28 @@ +{ + "name": "azure-rest-api-specs", + "devDependencies": { + "@azure-tools/typespec-autorest": "0.66.0", + "@azure-tools/typespec-azure-core": "0.66.0", + "@azure-tools/typespec-azure-resource-manager": "0.66.0", + "@azure-tools/typespec-azure-rulesets": "0.66.0", + "@azure-tools/typespec-client-generator-cli": "0.31.0", + "@azure-tools/typespec-client-generator-core": "0.66.3", + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/openapi": "1.10.0", + "@typespec/openapi3": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/versioning": "0.80.0" + }, + "overrides": { + "@typespec/asset-emitter": "0.79.1", + "get-uri": "^6.0.5", + "minimatch@^3.0.0": "^3.1.5", + "superagent": "^10.2.3" + }, + "engines": { + "node": ">=20.0.0", + "npm": ">=10.0.0" + }, + "private": true +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/readme.md b/.github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/readme.md new file mode 100644 index 00000000000..0769a118a0a --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/readme.md @@ -0,0 +1,45 @@ +# Widget + +> see https://aka.ms/autorest + +This is the AutoRest configuration file for Widget. + +## Configuration + +### Basic Information + +This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. +This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we +use the native TypeSpec code generation configured in the tspconfig.yaml file. + +```yaml +openapi-type: arm +openapi-subtype: rpaas +tag: package-2021-11-01 +``` + +### Tag: package-2021-11-01 + +These settings apply only when `--tag=package-2021-11-01` is specified on the command line. + +```yaml $(tag) == 'package-2021-11-01' +input-file: + - stable/2021-11-01/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +### Tag: package-2025-05-04-preview + +These settings apply only when `--tag=package-2025-05-04-preview` is specified on the command line. + +```yaml $(tag) == 'package-2025-05-04-preview' +input-file: + - preview/2025-05-04-preview/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +--- diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/shared.tsp b/.github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/shared.tsp new file mode 100644 index 00000000000..1b94bb70503 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/shared.tsp @@ -0,0 +1,8 @@ +@doc("Faked shared model") +model FakedSharedModel { + @doc("The tag.") + tag: string; + + @doc("The created date.") + createdAt: utcDateTime; +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/tspconfig.yaml b/.github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/tspconfig.yaml new file mode 100644 index 00000000000..9c97da201c0 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/tspconfig.yaml @@ -0,0 +1,44 @@ +parameters: + "service-dir": + default: "sdk/widget" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + use-read-only-status-schema: true + emitter-output-dir: "{project-root}" + output-file: "{version-status}/{version}/widget.json" + arm-types-dir: "{project-root}/../../../../common-types/resource-management" + "@azure-typespec/http-client-csharp-mgmt": + namespace: "Azure.ResourceManager.Widget" + emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" + "@azure-tools/typespec-python": + emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" + namespace: "azure.mgmt.widget" + generate-test: true + generate-sample: true + flavor: "azure" + "@azure-tools/typespec-java": + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" + namespace: "com.azure.resourcemanager.widget" + service-name: "Widget" # human-readable service name, whitespace allowed + flavor: azure + "@azure-tools/typespec-ts": + emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" + flavor: azure + experimental-extensible-enums: true + package-details: + name: "@azure/arm-widget" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/widget" + emitter-output-dir: "{output-dir}/{service-dir}/armwidget" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/employee.tsp b/.github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/employee.tsp new file mode 100644 index 00000000000..3c5e47132d0 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/employee.tsp @@ -0,0 +1,63 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.Core; +using Azure.ResourceManager; + +namespace Microsoft.Widget; + +/** Employee resource */ +model Employee is TrackedResource { + ...ResourceNameParameter; +} + +/** Employee properties */ +model EmployeeProperties { + /** Age of employee */ + age?: int32; + + /** City of employee */ + city?: string; + + /** Profile of employee */ + @encode("base64url") + profile?: bytes; + + /** The status of the last operation. */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; +} + +/** The resource provisioning state. */ +@lroStatus +union ProvisioningState { + ResourceProvisioningState, + + /** The resource is being provisioned */ + Provisioning: "Provisioning", + + /** The resource is updating */ + Updating: "Updating", + + /** The resource is being deleted */ + Deleting: "Deleting", + + /** The resource create request has been accepted */ + Accepted: "Accepted", + + string, +} + +@armResourceOperations +interface Employees { + get is ArmResourceRead; + createOrUpdate is ArmResourceCreateOrReplaceAsync; + update is ArmResourcePatchSync; + delete is ArmResourceDeleteWithoutOkAsync; + listByResourceGroup is ArmResourceListByParent; + listBySubscription is ArmListBySubscription; +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/main.tsp b/.github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/main.tsp new file mode 100644 index 00000000000..5c2b4ea187c --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/main.tsp @@ -0,0 +1,36 @@ +import "@typespec/http"; +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "./employee.tsp"; + +using TypeSpec.Http; +using TypeSpec.Rest; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +/** Microsoft.Widget Resource Provider management API. */ +@armProviderNamespace +@service(#{ title: "Widget" }) +@versioned(Microsoft.Widget.Versions) +namespace Microsoft.Widget; + +/** The available API versions. */ +enum Versions { + /** 2021-10-01-preview version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + @previewVersion + v2021_10_01_preview: "2021-10-01-preview", + + /** 2021-11-01 version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + v2021_11_01: "2021-11-01", + + /** 2025-11-01 version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + v2025_11_01: "2025-11-01", +} + +interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/package.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/package.json new file mode 100644 index 00000000000..9b0af8bcd6e --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/package.json @@ -0,0 +1,28 @@ +{ + "name": "azure-rest-api-specs", + "devDependencies": { + "@azure-tools/typespec-autorest": "0.66.0", + "@azure-tools/typespec-azure-core": "0.66.0", + "@azure-tools/typespec-azure-resource-manager": "0.66.0", + "@azure-tools/typespec-azure-rulesets": "0.66.0", + "@azure-tools/typespec-client-generator-cli": "0.31.0", + "@azure-tools/typespec-client-generator-core": "0.66.3", + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/openapi": "1.10.0", + "@typespec/openapi3": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/versioning": "0.80.0" + }, + "overrides": { + "@typespec/asset-emitter": "0.79.1", + "get-uri": "^6.0.5", + "minimatch@^3.0.0": "^3.1.5", + "superagent": "^10.2.3" + }, + "engines": { + "node": ">=20.0.0", + "npm": ">=10.0.0" + }, + "private": true +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/readme.md b/.github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/readme.md new file mode 100644 index 00000000000..e34e8a22ea5 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/readme.md @@ -0,0 +1,57 @@ +# Widget + +> see https://aka.ms/autorest + +This is the AutoRest configuration file for Widget. + +## Configuration + +### Basic Information + +This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. +This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we +use the native TypeSpec code generation configured in the tspconfig.yaml file. + +```yaml +openapi-type: arm +openapi-subtype: rpaas +tag: package-2025-11-01 +``` + +### Tag: package-2025-11-01 + +These settings apply only when `--tag=package-2025-11-01` is specified on the command line. + +```yaml $(tag) == 'package-2025-11-01' +input-file: + - stable/2025-11-01/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +### Tag: package-2021-11-01 + +These settings apply only when `--tag=package-2021-11-01` is specified on the command line. + +```yaml $(tag) == 'package-2021-11-01' +input-file: + - stable/2021-11-01/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +### Tag: package-2021-10-01-preview + +These settings apply only when `--tag=package-2021-10-01-preview` is specified on the command line. + +```yaml $(tag) == 'package-2021-10-01-preview' +input-file: + - preview/2021-10-01-preview/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +--- diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/shared.tsp b/.github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/shared.tsp new file mode 100644 index 00000000000..1b94bb70503 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/shared.tsp @@ -0,0 +1,8 @@ +@doc("Faked shared model") +model FakedSharedModel { + @doc("The tag.") + tag: string; + + @doc("The created date.") + createdAt: utcDateTime; +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/tspconfig.yaml b/.github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/tspconfig.yaml new file mode 100644 index 00000000000..9c97da201c0 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001002-version-default-value/tspconfig.yaml @@ -0,0 +1,44 @@ +parameters: + "service-dir": + default: "sdk/widget" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + use-read-only-status-schema: true + emitter-output-dir: "{project-root}" + output-file: "{version-status}/{version}/widget.json" + arm-types-dir: "{project-root}/../../../../common-types/resource-management" + "@azure-typespec/http-client-csharp-mgmt": + namespace: "Azure.ResourceManager.Widget" + emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" + "@azure-tools/typespec-python": + emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" + namespace: "azure.mgmt.widget" + generate-test: true + generate-sample: true + flavor: "azure" + "@azure-tools/typespec-java": + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" + namespace: "com.azure.resourcemanager.widget" + service-name: "Widget" # human-readable service name, whitespace allowed + flavor: azure + "@azure-tools/typespec-ts": + emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" + flavor: azure + experimental-extensible-enums: true + package-details: + name: "@azure/arm-widget" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/widget" + emitter-output-dir: "{output-dir}/{service-dir}/armwidget" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/employee.tsp b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/employee.tsp new file mode 100644 index 00000000000..254c9a00e29 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/employee.tsp @@ -0,0 +1,104 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +namespace Microsoft.Widget; + +/** A Widget Employee resource */ +model Employee is TrackedResource { + ...ResourceNameParameter; +} + +/** Employee properties */ +model EmployeeProperties { + /** Age of employee (before 2025-11-01) */ + @removed(Versions.v2024_10_01_preview) + @renamedFrom(Versions.v2024_10_01_preview, "age") + oldAge?: int32; + + /** Age of employee (from 2025-11-01 onward, default is 21) */ + @added(Versions.v2024_10_01_preview) + age?: int32 = 21; + + /** City of employee */ + city?: string; + + /** Work location of employee */ + @added(Versions.v2024_10_01_preview) + workLocation?: WorkLocation; + + /** Profile of employee */ + @encode("base64url") + profile?: bytes; + + /** The status of the last operation. */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; + + /** The assets belong to the employee. */ + @typeChangedFrom(Versions.v2024_10_01_preview, string[]) + assets: AssetItem[]; +} + +/** Constrained asset item. */ +@added(Versions.v2024_10_01_preview) +@minLength(3) +@maxLength(10) +scalar AssetItem extends string; + +/** Work location details */ +@added(Versions.v2024_10_01_preview) +model WorkLocation { + /** Country */ + country?: string; + + /** Company */ + company?: string; + + /** Seat number */ + seatNumber?: string; +} + +/** The resource provisioning state. */ +@lroStatus +union ProvisioningState { + ResourceProvisioningState, + + /** The resource is being provisioned */ + Provisioning: "Provisioning", + + /** The resource is updating */ + Updating: "Updating", + + /** The resource is being deleted */ + Deleting: "Deleting", + + /** The resource create request has been accepted */ + Accepted: "Accepted", + + string, +} + +@armResourceOperations +interface Employees { + get is ArmResourceRead; + createOrUpdate is ArmResourceCreateOrReplaceAsync; + update is ArmCustomPatchSync< + Employee, + Azure.ResourceManager.Foundations.ResourceUpdateModel< + Employee, + EmployeeProperties + > + >; + delete is ArmResourceDeleteWithoutOkAsync; + listByResourceGroup is ArmResourceListByParent; + listBySubscription is ArmListBySubscription; +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json new file mode 100644 index 00000000000..26e0fb29b7d --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json @@ -0,0 +1,70 @@ +{ + "title": "Employees_CreateOrUpdate - generated by [MaximumSet] rule", + "operationId": "Employees_CreateOrUpdate", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo", + "resource": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms" + }, + "tags": {}, + "location": "itajgxyqozseoygnl" + } + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + }, + "201": { + "headers": { + "Azure-AsyncOperation": "https://contoso.com/operationstatus" + }, + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json new file mode 100644 index 00000000000..0fd8e915fa4 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json @@ -0,0 +1,18 @@ +{ + "title": "Employees_Delete - generated by [MaximumSet] rule", + "operationId": "Employees_Delete", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo" + }, + "responses": { + "202": { + "headers": { + "location": "https://contoso.com/operationstatus" + } + }, + "204": {} + } +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json new file mode 100644 index 00000000000..1ddc2fc19f8 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json @@ -0,0 +1,35 @@ +{ + "title": "Employees_Get - generated by [MaximumSet] rule", + "operationId": "Employees_Get", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo" + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json new file mode 100644 index 00000000000..48836349caf --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json @@ -0,0 +1,39 @@ +{ + "title": "Employees_ListByResourceGroup - generated by [MaximumSet] rule", + "operationId": "Employees_ListByResourceGroup", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + ], + "nextLink": "https://microsoft.com/a" + } + } + } +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json new file mode 100644 index 00000000000..0cdf8ee402d --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json @@ -0,0 +1,21 @@ +{ + "title": "Employees_ListByResourceGroup - generated by [MinimumSet] rule", + "operationId": "Employees_ListByResourceGroup", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" + } + ] + } + } + } +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json new file mode 100644 index 00000000000..85d5915b7a4 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json @@ -0,0 +1,38 @@ +{ + "title": "Employees_ListBySubscription - generated by [MaximumSet] rule", + "operationId": "Employees_ListBySubscription", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + ], + "nextLink": "https://microsoft.com/a" + } + } + } +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json new file mode 100644 index 00000000000..a2222331f4a --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json @@ -0,0 +1,20 @@ +{ + "title": "Employees_ListBySubscription - generated by [MinimumSet] rule", + "operationId": "Employees_ListBySubscription", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" + } + ] + } + } + } +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json new file mode 100644 index 00000000000..f9c86837139 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json @@ -0,0 +1,43 @@ +{ + "title": "Employees_Update - generated by [MaximumSet] rule", + "operationId": "Employees_Update", + "parameters": { + "api-version": "2021-10-01", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo", + "properties": { + "tags": {}, + "properties": { + "age": 24, + "city": "uyfg", + "profile": "oapgijcswfkruiuuzbwco" + } + } + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json new file mode 100644 index 00000000000..56745464c52 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json @@ -0,0 +1,28 @@ +{ + "title": "Operations_List - generated by [MaximumSet] rule", + "operationId": "Operations_List", + "parameters": { + "api-version": "2021-10-01" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "ymeow", + "isDataAction": true, + "display": { + "provider": "qxyznq", + "resource": "bqfwkox", + "operation": "td", + "description": "eikaaucpxk" + }, + "origin": "user", + "actionType": "Internal" + } + ], + "nextLink": "https://sample.com/nextLink" + } + } + } +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json new file mode 100644 index 00000000000..db39d591542 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json @@ -0,0 +1,12 @@ +{ + "title": "Operations_List - generated by [MinimumSet] rule", + "operationId": "Operations_List", + "parameters": { + "api-version": "2021-10-01" + }, + "responses": { + "200": { + "body": {} + } + } +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json new file mode 100644 index 00000000000..155490965ae --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json @@ -0,0 +1,85 @@ +{ + "title": "Employees_CreateOrUpdate - generated by [MaximumSet] rule", + "operationId": "Employees_CreateOrUpdate", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo", + "resource": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms" + }, + "tags": {}, + "location": "itajgxyqozseoygnl" + } + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + }, + "201": { + "headers": { + "Azure-AsyncOperation": "https://contoso.com/operationstatus" + }, + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json new file mode 100644 index 00000000000..75e4ee09f4f --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json @@ -0,0 +1,18 @@ +{ + "title": "Employees_Delete - generated by [MaximumSet] rule", + "operationId": "Employees_Delete", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo" + }, + "responses": { + "202": { + "headers": { + "location": "https://contoso.com/operationstatus" + } + }, + "204": {} + } +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json new file mode 100644 index 00000000000..99ce03c4aab --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json @@ -0,0 +1,40 @@ +{ + "title": "Employees_Get - generated by [MaximumSet] rule", + "operationId": "Employees_Get", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo" + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json new file mode 100644 index 00000000000..b8365a35231 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json @@ -0,0 +1,44 @@ +{ + "title": "Employees_ListByResourceGroup - generated by [MaximumSet] rule", + "operationId": "Employees_ListByResourceGroup", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + ], + "nextLink": "https://microsoft.com/a" + } + } + } +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json new file mode 100644 index 00000000000..a32bb795d40 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json @@ -0,0 +1,21 @@ +{ + "title": "Employees_ListByResourceGroup - generated by [MinimumSet] rule", + "operationId": "Employees_ListByResourceGroup", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" + } + ] + } + } + } +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json new file mode 100644 index 00000000000..52ff5143133 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json @@ -0,0 +1,43 @@ +{ + "title": "Employees_ListBySubscription - generated by [MaximumSet] rule", + "operationId": "Employees_ListBySubscription", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + ], + "nextLink": "https://microsoft.com/a" + } + } + } +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json new file mode 100644 index 00000000000..dbf38f2ac64 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json @@ -0,0 +1,20 @@ +{ + "title": "Employees_ListBySubscription - generated by [MinimumSet] rule", + "operationId": "Employees_ListBySubscription", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" + } + ] + } + } + } +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json new file mode 100644 index 00000000000..f376551af11 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json @@ -0,0 +1,53 @@ +{ + "title": "Employees_Update - generated by [MaximumSet] rule", + "operationId": "Employees_Update", + "parameters": { + "api-version": "2024-10-01-preview", + "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", + "resourceGroupName": "rgwidget", + "employeeName": "foo", + "properties": { + "tags": {}, + "properties": { + "age": 24, + "city": "uyfg", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "B2-456" + }, + "profile": "oapgijcswfkruiuuzbwco" + } + } + }, + "responses": { + "200": { + "body": { + "properties": { + "age": 30, + "city": "gydhnntudughbmxlkyzrskcdkotrxn", + "workLocation": { + "country": "US", + "company": "Microsoft", + "seatNumber": "A1-234" + }, + "profile": "ms", + "provisioningState": "Succeeded" + }, + "tags": {}, + "location": "itajgxyqozseoygnl", + "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", + "name": "xepyxhpb", + "type": "svvamxrdnnv", + "systemData": { + "createdBy": "iewyxsnriqktsvp", + "createdByType": "User", + "createdAt": "2023-05-19T00:28:48.610Z", + "lastModifiedBy": "xrchbnnuzierzpxw", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-05-19T00:28:48.610Z" + } + } + } + } +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json new file mode 100644 index 00000000000..0f4075414b4 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json @@ -0,0 +1,28 @@ +{ + "title": "Operations_List - generated by [MaximumSet] rule", + "operationId": "Operations_List", + "parameters": { + "api-version": "2024-10-01-preview" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "ymeow", + "isDataAction": true, + "display": { + "provider": "qxyznq", + "resource": "bqfwkox", + "operation": "td", + "description": "kfcrqmzuwfreqvh" + }, + "origin": "user", + "actionType": "Internal" + } + ], + "nextLink": "https://sample.com/nextLink" + } + } + } +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json new file mode 100644 index 00000000000..93e6f549129 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json @@ -0,0 +1,12 @@ +{ + "title": "Operations_List - generated by [MinimumSet] rule", + "operationId": "Operations_List", + "parameters": { + "api-version": "2024-10-01-preview" + }, + "responses": { + "200": { + "body": {} + } + } +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/main.tsp b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/main.tsp new file mode 100644 index 00000000000..9c334ab9c00 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/main.tsp @@ -0,0 +1,31 @@ +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "./employee.tsp"; + +using TypeSpec.Http; +using TypeSpec.Rest; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; + +/** Microsoft.Widget Resource Provider management API. */ +@armProviderNamespace +@service(#{ title: "Widget" }) +@versioned(Microsoft.Widget.Versions) +namespace Microsoft.Widget; + +/** The available API versions. */ +enum Versions { + /** 2021-10-01 version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + v2021_10_01: "2021-10-01", + + /** 2024-10-01-preview version */ + @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) + @previewVersion + v2024_10_01_preview: "2024-10-01-preview", +} + +interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/package.json b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/package.json new file mode 100644 index 00000000000..9b0af8bcd6e --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/package.json @@ -0,0 +1,28 @@ +{ + "name": "azure-rest-api-specs", + "devDependencies": { + "@azure-tools/typespec-autorest": "0.66.0", + "@azure-tools/typespec-azure-core": "0.66.0", + "@azure-tools/typespec-azure-resource-manager": "0.66.0", + "@azure-tools/typespec-azure-rulesets": "0.66.0", + "@azure-tools/typespec-client-generator-cli": "0.31.0", + "@azure-tools/typespec-client-generator-core": "0.66.3", + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/openapi": "1.10.0", + "@typespec/openapi3": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/versioning": "0.80.0" + }, + "overrides": { + "@typespec/asset-emitter": "0.79.1", + "get-uri": "^6.0.5", + "minimatch@^3.0.0": "^3.1.5", + "superagent": "^10.2.3" + }, + "engines": { + "node": ">=20.0.0", + "npm": ">=10.0.0" + }, + "private": true +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/readme.md b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/readme.md new file mode 100644 index 00000000000..a0e0464736f --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/readme.md @@ -0,0 +1,45 @@ +# Widget + +> see https://aka.ms/autorest + +This is the AutoRest configuration file for Widget. + +## Configuration + +### Basic Information + +This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. +This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we +use the native TypeSpec code generation configured in the tspconfig.yaml file. + +```yaml +openapi-type: arm +openapi-subtype: rpaas +tag: package-2025-05-04-preview +``` + +### Tag: package-2025-05-04-preview + +These settings apply only when `--tag=package-2025-05-04-preview` is specified on the command line. + +```yaml $(tag) == 'package-2025-05-04-preview' +input-file: + - preview/2025-05-04-preview/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +### Tag: package-2021-10-01 + +These settings apply only when `--tag=package-2021-10-01` is specified on the command line. + +```yaml $(tag) == 'package-2021-10-01' +input-file: + - stable/2021-10-01/widget.json +suppressions: + - code: PathContainsResourceType + - code: PathResourceProviderMatchNamespace +``` + +--- diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/shared.tsp b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/shared.tsp new file mode 100644 index 00000000000..1b94bb70503 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/shared.tsp @@ -0,0 +1,8 @@ +@doc("Faked shared model") +model FakedSharedModel { + @doc("The tag.") + tag: string; + + @doc("The created date.") + createdAt: utcDateTime; +} diff --git a/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/tspconfig.yaml b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/tspconfig.yaml new file mode 100644 index 00000000000..9c97da201c0 --- /dev/null +++ b/.github/skills/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/tspconfig.yaml @@ -0,0 +1,44 @@ +parameters: + "service-dir": + default: "sdk/widget" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + use-read-only-status-schema: true + emitter-output-dir: "{project-root}" + output-file: "{version-status}/{version}/widget.json" + arm-types-dir: "{project-root}/../../../../common-types/resource-management" + "@azure-typespec/http-client-csharp-mgmt": + namespace: "Azure.ResourceManager.Widget" + emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" + "@azure-tools/typespec-python": + emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" + namespace: "azure.mgmt.widget" + generate-test: true + generate-sample: true + flavor: "azure" + "@azure-tools/typespec-java": + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" + namespace: "com.azure.resourcemanager.widget" + service-name: "Widget" # human-readable service name, whitespace allowed + flavor: azure + "@azure-tools/typespec-ts": + emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" + flavor: azure + experimental-extensible-enums: true + package-details: + name: "@azure/arm-widget" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/widget" + emitter-output-dir: "{output-dir}/{service-dir}/armwidget" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" From ed9385ad7416ec04a22dce110c412edd3fc61769 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 29 Apr 2026 10:42:19 +0800 Subject: [PATCH 17/98] Fix CI: log service output and improve startup health check --- .../azure-typespec-author-benchmark.yml | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index bf7e094f609..351bb9f4a30 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -1,7 +1,5 @@ # NOTE: Please refer to https://aka.ms/azsdk/engsys/ci-yaml before editing this file. - trigger: none - pr: none parameters: @@ -35,13 +33,10 @@ extends: - script: | echo "Downloading Go 1.24.0..." curl -LO https://go.dev/dl/go1.24.0.linux-amd64.tar.gz - echo "Removing existing Go installation..." sudo rm -rf /usr/local/go - echo "Extracting Go 1.24.0..." sudo tar -C /usr/local -xzf go1.24.0.linux-amd64.tar.gz - echo "Setting environment variables..." echo "##vso[task.setvariable variable=GOROOT]/usr/local/go" echo "##vso[task.prependpath]/usr/local/go/bin" @@ -61,9 +56,22 @@ extends: export GOPROXY=https://proxy.golang.org,direct go build -o qa-bot-service chmod +x qa-bot-service - nohup ./qa-bot-service /dev/null 2>&1 & + nohup ./qa-bot-service > qa-bot-service.log 2>&1 & + SERVICE_PID=$! + echo "Service started with PID: $SERVICE_PID" sleep 20 - lsof -ti:8088 + echo "=== Service log ===" + cat qa-bot-service.log || true + echo "===================" + if ! kill -0 $SERVICE_PID 2>/dev/null; then + echo "ERROR: Service process has exited unexpectedly" + exit 1 + fi + if ! lsof -ti:8088 > /dev/null 2>&1; then + echo "ERROR: No process listening on port 8088" + exit 1 + fi + echo "Service is running on port 8088" env: SYSTEM_ACCESSTOKEN: $(System.AccessToken) AZURE_APPCONFIG_ENDPOINT: $(AZURE_APPCONFIG_ENDPOINT) @@ -111,4 +119,4 @@ extends: path: $(Build.SourcesDirectory)/.github/skills/azure-typespec-author/evaluate/results artifact: eval-results displayName: Publish Evaluation Results - condition: always() + condition: always() \ No newline at end of file From 54f67b24c85ea3e6f2bb5eb22230764b0ed4df12 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 29 Apr 2026 11:18:31 +0800 Subject: [PATCH 18/98] Add Azure SDK QA Bot Dev Variables group to pipeline --- eng/pipelines/azure-typespec-author-benchmark.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index 351bb9f4a30..0ab6d01ce1a 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -17,6 +17,7 @@ extends: variables: - template: /eng/pipelines/templates/variables/globals.yml - template: /eng/pipelines/templates/variables/image.yml + - group: Azure SDK QA Bot Dev Variables pool: name: $(LINUXPOOL) image: $(LINUXVMIMAGE) From 792e0c33b952bca6b94319c63ea4d8d7f01223c4 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 29 Apr 2026 12:43:36 +0800 Subject: [PATCH 19/98] Fix npm auth: use azsdk-microsoft-package-github-token for GitHub Packages --- eng/pipelines/azure-typespec-author-benchmark.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index 0ab6d01ce1a..ad3e32e16f5 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -18,6 +18,7 @@ extends: - template: /eng/pipelines/templates/variables/globals.yml - template: /eng/pipelines/templates/variables/image.yml - group: Azure SDK QA Bot Dev Variables + - group: AzSDK_Eval_Variable_group pool: name: $(LINUXPOOL) image: $(LINUXVMIMAGE) @@ -84,11 +85,6 @@ extends: version: '8.x' # Install Node.js and Vally CLI - - template: /eng/common/pipelines/templates/steps/login-to-github.yml - parameters: - TokenOwners: - - microsoft - - task: NodeTool@0 inputs: versionSpec: '22.x' @@ -96,7 +92,7 @@ extends: - script: | npm config set "@microsoft:registry" "https://npm.pkg.github.com" - npm config set "//npm.pkg.github.com/:_authToken" "$(GH_TOKEN)" + npm config set "//npm.pkg.github.com/:_authToken" "$(azsdk-microsoft-package-github-token)" displayName: Configure GitHub Packages registry - script: npm install -g @microsoft/vally-cli From 8165d990cc59d816e340cc3191951ab394da6b41 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Thu, 30 Apr 2026 16:01:24 +0800 Subject: [PATCH 20/98] Update evaluate stage: add Copilot SDK install and GITHUB_TOKEN for vally eval --- eng/pipelines/azure-typespec-author-benchmark.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index ad3e32e16f5..60cd8f3c590 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -84,7 +84,7 @@ extends: inputs: version: '8.x' - # Install Node.js and Vally CLI + # Install Node.js, Vally CLI, and Copilot SDK - task: NodeTool@0 inputs: versionSpec: '22.x' @@ -98,12 +98,17 @@ extends: - script: npm install -g @microsoft/vally-cli displayName: Install Vally CLI + - script: npm install -g @github/copilot-sdk + displayName: Install Copilot SDK + # Run evaluations - script: | vally eval --suite all --workspace ./debug --output-dir ./results --verbose || true displayName: Run azure-typespec-author evaluations workingDirectory: $(Build.SourcesDirectory)/.github/skills/azure-typespec-author/evaluate continueOnError: true + env: + GITHUB_TOKEN: $(azuresdk-copilot-github-pat) templateContext: outputs: From afb20175924ddd35ef0bbce39b1ecbb4be0be01a Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Thu, 30 Apr 2026 16:27:00 +0800 Subject: [PATCH 21/98] Fix npm install: use local prefix to avoid EPERM on global install --- eng/pipelines/azure-typespec-author-benchmark.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index 60cd8f3c590..0d339db781b 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -95,11 +95,14 @@ extends: npm config set "//npm.pkg.github.com/:_authToken" "$(azsdk-microsoft-package-github-token)" displayName: Configure GitHub Packages registry - - script: npm install -g @microsoft/vally-cli - displayName: Install Vally CLI - - - script: npm install -g @github/copilot-sdk - displayName: Install Copilot SDK + - script: | + # Install to local prefix to avoid permission issues with global install + npm config set prefix ~/.npm-global + mkdir -p ~/.npm-global + npm install -g @microsoft/vally-cli + npm install -g @github/copilot-sdk + echo "##vso[task.prependpath]$(HOME)/.npm-global/bin" + displayName: Install Vally CLI and Copilot SDK # Run evaluations - script: | From 89731b1c17b6ecdbac553dd74a509e94b201cbc1 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Thu, 30 Apr 2026 16:47:40 +0800 Subject: [PATCH 22/98] Fix PATH: use bash \C:\Users\haolingdong not ADO \ for npm-global bin --- eng/pipelines/azure-typespec-author-benchmark.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index 0d339db781b..c35f8b40c3f 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -101,7 +101,7 @@ extends: mkdir -p ~/.npm-global npm install -g @microsoft/vally-cli npm install -g @github/copilot-sdk - echo "##vso[task.prependpath]$(HOME)/.npm-global/bin" + echo "##vso[task.prependpath]$HOME/.npm-global/bin" displayName: Install Vally CLI and Copilot SDK # Run evaluations From 4c4172df10740dd00fe1973f1d64fa3eb2aa8135 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Thu, 30 Apr 2026 17:11:13 +0800 Subject: [PATCH 23/98] Switch to ubuntu-latest pool to fix registry.npmjs.org EPERM on 1ES managed pool --- eng/pipelines/azure-typespec-author-benchmark.yml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index c35f8b40c3f..07750459894 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -16,12 +16,11 @@ extends: displayName: Azure TypeSpec Author Skill Evaluation variables: - template: /eng/pipelines/templates/variables/globals.yml - - template: /eng/pipelines/templates/variables/image.yml - group: Azure SDK QA Bot Dev Variables - group: AzSDK_Eval_Variable_group pool: - name: $(LINUXPOOL) - image: $(LINUXVMIMAGE) + name: Azure Pipelines + vmImage: ubuntu-latest os: linux jobs: - job: RunEvals @@ -96,12 +95,8 @@ extends: displayName: Configure GitHub Packages registry - script: | - # Install to local prefix to avoid permission issues with global install - npm config set prefix ~/.npm-global - mkdir -p ~/.npm-global npm install -g @microsoft/vally-cli npm install -g @github/copilot-sdk - echo "##vso[task.prependpath]$HOME/.npm-global/bin" displayName: Install Vally CLI and Copilot SDK # Run evaluations From e5f3365f7970c4bed653dfa8056d2e1cce3269e6 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Thu, 30 Apr 2026 17:16:37 +0800 Subject: [PATCH 24/98] Update evaluate stage to match jeo02 reference: tag-based eval, simplified install --- .../azure-typespec-author-benchmark.yml | 42 +++++++++---------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index 07750459894..e472717d0ad 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -16,11 +16,12 @@ extends: displayName: Azure TypeSpec Author Skill Evaluation variables: - template: /eng/pipelines/templates/variables/globals.yml + - template: /eng/pipelines/templates/variables/image.yml - group: Azure SDK QA Bot Dev Variables - group: AzSDK_Eval_Variable_group pool: - name: Azure Pipelines - vmImage: ubuntu-latest + name: $(LINUXPOOL) + image: $(LINUXVMIMAGE) os: linux jobs: - job: RunEvals @@ -85,25 +86,27 @@ extends: # Install Node.js, Vally CLI, and Copilot SDK - task: NodeTool@0 + displayName: Use Node.js 22 inputs: versionSpec: '22.x' - displayName: Install Node.js - - script: | - npm config set "@microsoft:registry" "https://npm.pkg.github.com" - npm config set "//npm.pkg.github.com/:_authToken" "$(azsdk-microsoft-package-github-token)" - displayName: Configure GitHub Packages registry + - script: npm install -g @microsoft/vally-cli + displayName: Install Vally CLI - - script: | - npm install -g @microsoft/vally-cli - npm install -g @github/copilot-sdk - displayName: Install Vally CLI and Copilot SDK + - script: npm install -g @github/copilot-sdk + displayName: Install Copilot SDK # Run evaluations - script: | - vally eval --suite all --workspace ./debug --output-dir ./results --verbose || true - displayName: Run azure-typespec-author evaluations - workingDirectory: $(Build.SourcesDirectory)/.github/skills/azure-typespec-author/evaluate + cd .github/skills + mkdir -p .vally/results + areas=$(ls -d */ 2>/dev/null | xargs -I{} basename {} | grep -v '^results$' | paste -sd, -) + if [ -n "$areas" ]; then + vally eval --tag "priority=p0" --tag "area=${areas}" --output-dir ".vally/results" + else + echo "No skills found — skipping" + fi + displayName: Run evaluations continueOnError: true env: GITHUB_TOKEN: $(azuresdk-copilot-github-pat) @@ -111,12 +114,7 @@ extends: templateContext: outputs: - output: pipelineArtifact - path: $(Build.SourcesDirectory)/.github/skills/azure-typespec-author/evaluate/debug - artifact: eval-debug-workspace - displayName: Publish Debug Workspace - condition: always() - - output: pipelineArtifact - path: $(Build.SourcesDirectory)/.github/skills/azure-typespec-author/evaluate/results - artifact: eval-results - displayName: Publish Evaluation Results + path: $(Build.SourcesDirectory)/.github/skills/.vally/results + artifact: eval-results-$(Build.BuildId) + displayName: Upload eval results condition: always() \ No newline at end of file From 2b37fd87c1dcf0c18acda6deae74e383c6b566dc Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 11:51:30 +0800 Subject: [PATCH 25/98] Remove 1ES PT wrapper and use azsdk-pool directly to allow npm registry access --- .../azure-typespec-author-benchmark.yml | 198 +++++++++--------- 1 file changed, 94 insertions(+), 104 deletions(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index e472717d0ad..4144728a933 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -2,119 +2,109 @@ trigger: none pr: none -parameters: -- name: PythonVersion - type: string - default: '3.10' +variables: + - template: /eng/pipelines/templates/variables/globals.yml + - template: /eng/pipelines/templates/variables/image.yml + - group: Azure SDK QA Bot Dev Variables + - group: AzSDK_Eval_Variable_group -extends: - template: /eng/pipelines/templates/stages/1es-redirect.yml - parameters: - Use1ESOfficial: false - stages: - - stage: EvalTypeSpecAuthor - displayName: Azure TypeSpec Author Skill Evaluation - variables: - - template: /eng/pipelines/templates/variables/globals.yml - - template: /eng/pipelines/templates/variables/image.yml - - group: Azure SDK QA Bot Dev Variables - - group: AzSDK_Eval_Variable_group +stages: + - stage: EvalTypeSpecAuthor + displayName: Azure TypeSpec Author Skill Evaluation + jobs: + - job: RunEvals + displayName: Run Vally Evaluations + timeoutInMinutes: 120 pool: name: $(LINUXPOOL) - image: $(LINUXVMIMAGE) - os: linux - jobs: - - job: RunEvals - displayName: Run Vally Evaluations - timeoutInMinutes: 120 - steps: - - checkout: self - fetchDepth: 0 + demands: ImageOverride -equals $(LINUXVMIMAGE) + steps: + - checkout: self + fetchDepth: 0 - # Install Go and build/start the QA bot backend - - script: | - echo "Downloading Go 1.24.0..." - curl -LO https://go.dev/dl/go1.24.0.linux-amd64.tar.gz - echo "Removing existing Go installation..." - sudo rm -rf /usr/local/go - echo "Extracting Go 1.24.0..." - sudo tar -C /usr/local -xzf go1.24.0.linux-amd64.tar.gz - echo "Setting environment variables..." - echo "##vso[task.setvariable variable=GOROOT]/usr/local/go" - echo "##vso[task.prependpath]/usr/local/go/bin" - displayName: Install Go + # Install Go and build/start the QA bot backend + - script: | + echo "Downloading Go 1.24.0..." + curl -LO https://go.dev/dl/go1.24.0.linux-amd64.tar.gz + echo "Removing existing Go installation..." + sudo rm -rf /usr/local/go + echo "Extracting Go 1.24.0..." + sudo tar -C /usr/local -xzf go1.24.0.linux-amd64.tar.gz + echo "Setting environment variables..." + echo "##vso[task.setvariable variable=GOROOT]/usr/local/go" + echo "##vso[task.prependpath]/usr/local/go/bin" + displayName: Install Go - - script: go version - displayName: Check Go version + - script: go version + displayName: Check Go version - - task: AzureCLI@2 - displayName: Start QA bot backend service - inputs: - azureSubscription: 'azuresdkqabot-dev' - scriptType: bash - scriptLocation: inlineScript - workingDirectory: $(Build.SourcesDirectory)/tools/sdk-ai-bots/azure-sdk-qa-bot-backend - inlineScript: | - export GOPROXY=https://proxy.golang.org,direct - go build -o qa-bot-service - chmod +x qa-bot-service - nohup ./qa-bot-service > qa-bot-service.log 2>&1 & - SERVICE_PID=$! - echo "Service started with PID: $SERVICE_PID" - sleep 20 - echo "=== Service log ===" - cat qa-bot-service.log || true - echo "===================" - if ! kill -0 $SERVICE_PID 2>/dev/null; then - echo "ERROR: Service process has exited unexpectedly" - exit 1 - fi - if ! lsof -ti:8088 > /dev/null 2>&1; then - echo "ERROR: No process listening on port 8088" - exit 1 - fi - echo "Service is running on port 8088" - env: - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - AZURE_APPCONFIG_ENDPOINT: $(AZURE_APPCONFIG_ENDPOINT) + - task: AzureCLI@2 + displayName: Start QA bot backend service + inputs: + azureSubscription: 'azuresdkqabot-dev' + scriptType: bash + scriptLocation: inlineScript + workingDirectory: $(Build.SourcesDirectory)/tools/sdk-ai-bots/azure-sdk-qa-bot-backend + inlineScript: | + export GOPROXY=https://proxy.golang.org,direct + go build -o qa-bot-service + chmod +x qa-bot-service + nohup ./qa-bot-service > qa-bot-service.log 2>&1 & + SERVICE_PID=$! + echo "Service started with PID: $SERVICE_PID" + sleep 20 + echo "=== Service log ===" + cat qa-bot-service.log || true + echo "===================" + if ! kill -0 $SERVICE_PID 2>/dev/null; then + echo "ERROR: Service process has exited unexpectedly" + exit 1 + fi + if ! lsof -ti:8088 > /dev/null 2>&1; then + echo "ERROR: No process listening on port 8088" + exit 1 + fi + echo "Service is running on port 8088" + env: + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + AZURE_APPCONFIG_ENDPOINT: $(AZURE_APPCONFIG_ENDPOINT) - # Install .NET SDK for azsdk-cli MCP server - - task: UseDotNet@2 - displayName: Install .NET 8.0 SDK - inputs: - version: '8.x' + # Install .NET SDK for azsdk-cli MCP server + - task: UseDotNet@2 + displayName: Install .NET 8.0 SDK + inputs: + version: '8.x' - # Install Node.js, Vally CLI, and Copilot SDK - - task: NodeTool@0 - displayName: Use Node.js 22 - inputs: - versionSpec: '22.x' + # Install Node.js, Vally CLI, and Copilot SDK + - task: NodeTool@0 + displayName: Use Node.js 22 + inputs: + versionSpec: '22.x' - - script: npm install -g @microsoft/vally-cli - displayName: Install Vally CLI + - script: npm install -g @microsoft/vally-cli + displayName: Install Vally CLI - - script: npm install -g @github/copilot-sdk - displayName: Install Copilot SDK + - script: npm install -g @github/copilot-sdk + displayName: Install Copilot SDK - # Run evaluations - - script: | - cd .github/skills - mkdir -p .vally/results - areas=$(ls -d */ 2>/dev/null | xargs -I{} basename {} | grep -v '^results$' | paste -sd, -) - if [ -n "$areas" ]; then - vally eval --tag "priority=p0" --tag "area=${areas}" --output-dir ".vally/results" - else - echo "No skills found — skipping" - fi - displayName: Run evaluations - continueOnError: true - env: - GITHUB_TOKEN: $(azuresdk-copilot-github-pat) + # Run evaluations + - script: | + cd .github/skills + mkdir -p .vally/results + areas=$(ls -d */ 2>/dev/null | xargs -I{} basename {} | grep -v '^results$' | paste -sd, -) + if [ -n "$areas" ]; then + vally eval --tag "priority=p0" --tag "area=${areas}" --output-dir ".vally/results" + else + echo "No skills found — skipping" + fi + displayName: Run evaluations + continueOnError: true + env: + GITHUB_TOKEN: $(azuresdk-copilot-github-pat) - templateContext: - outputs: - - output: pipelineArtifact - path: $(Build.SourcesDirectory)/.github/skills/.vally/results - artifact: eval-results-$(Build.BuildId) - displayName: Upload eval results - condition: always() \ No newline at end of file + - task: PublishPipelineArtifact@1 + displayName: Upload eval results + condition: always() + inputs: + targetPath: $(Build.SourcesDirectory)/.github/skills/.vally/results + artifactName: eval-results-$(Build.BuildId) From 03e6cd270cfb4f41c70c3811136d4e86a9327cc8 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 11:55:36 +0800 Subject: [PATCH 26/98] Use Azure Artifacts npm mirror for 1ES pool egress --- .../azure-typespec-author-benchmark.yml | 200 ++++++++++-------- 1 file changed, 106 insertions(+), 94 deletions(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index 4144728a933..3ccf7ad1fdd 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -2,109 +2,121 @@ trigger: none pr: none -variables: - - template: /eng/pipelines/templates/variables/globals.yml - - template: /eng/pipelines/templates/variables/image.yml - - group: Azure SDK QA Bot Dev Variables - - group: AzSDK_Eval_Variable_group +parameters: +- name: PythonVersion + type: string + default: '3.10' -stages: - - stage: EvalTypeSpecAuthor - displayName: Azure TypeSpec Author Skill Evaluation - jobs: - - job: RunEvals - displayName: Run Vally Evaluations - timeoutInMinutes: 120 +extends: + template: /eng/pipelines/templates/stages/1es-redirect.yml + parameters: + Use1ESOfficial: false + stages: + - stage: EvalTypeSpecAuthor + displayName: Azure TypeSpec Author Skill Evaluation + variables: + - template: /eng/pipelines/templates/variables/globals.yml + - template: /eng/pipelines/templates/variables/image.yml + - group: Azure SDK QA Bot Dev Variables + - group: AzSDK_Eval_Variable_group pool: name: $(LINUXPOOL) - demands: ImageOverride -equals $(LINUXVMIMAGE) - steps: - - checkout: self - fetchDepth: 0 + image: $(LINUXVMIMAGE) + os: linux + jobs: + - job: RunEvals + displayName: Run Vally Evaluations + timeoutInMinutes: 120 + steps: + - checkout: self + fetchDepth: 0 - # Install Go and build/start the QA bot backend - - script: | - echo "Downloading Go 1.24.0..." - curl -LO https://go.dev/dl/go1.24.0.linux-amd64.tar.gz - echo "Removing existing Go installation..." - sudo rm -rf /usr/local/go - echo "Extracting Go 1.24.0..." - sudo tar -C /usr/local -xzf go1.24.0.linux-amd64.tar.gz - echo "Setting environment variables..." - echo "##vso[task.setvariable variable=GOROOT]/usr/local/go" - echo "##vso[task.prependpath]/usr/local/go/bin" - displayName: Install Go + # Install Go and build/start the QA bot backend + - script: | + echo "Downloading Go 1.24.0..." + curl -LO https://go.dev/dl/go1.24.0.linux-amd64.tar.gz + echo "Removing existing Go installation..." + sudo rm -rf /usr/local/go + echo "Extracting Go 1.24.0..." + sudo tar -C /usr/local -xzf go1.24.0.linux-amd64.tar.gz + echo "Setting environment variables..." + echo "##vso[task.setvariable variable=GOROOT]/usr/local/go" + echo "##vso[task.prependpath]/usr/local/go/bin" + displayName: Install Go - - script: go version - displayName: Check Go version + - script: go version + displayName: Check Go version - - task: AzureCLI@2 - displayName: Start QA bot backend service - inputs: - azureSubscription: 'azuresdkqabot-dev' - scriptType: bash - scriptLocation: inlineScript - workingDirectory: $(Build.SourcesDirectory)/tools/sdk-ai-bots/azure-sdk-qa-bot-backend - inlineScript: | - export GOPROXY=https://proxy.golang.org,direct - go build -o qa-bot-service - chmod +x qa-bot-service - nohup ./qa-bot-service > qa-bot-service.log 2>&1 & - SERVICE_PID=$! - echo "Service started with PID: $SERVICE_PID" - sleep 20 - echo "=== Service log ===" - cat qa-bot-service.log || true - echo "===================" - if ! kill -0 $SERVICE_PID 2>/dev/null; then - echo "ERROR: Service process has exited unexpectedly" - exit 1 - fi - if ! lsof -ti:8088 > /dev/null 2>&1; then - echo "ERROR: No process listening on port 8088" - exit 1 - fi - echo "Service is running on port 8088" - env: - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - AZURE_APPCONFIG_ENDPOINT: $(AZURE_APPCONFIG_ENDPOINT) + - task: AzureCLI@2 + displayName: Start QA bot backend service + inputs: + azureSubscription: 'azuresdkqabot-dev' + scriptType: bash + scriptLocation: inlineScript + workingDirectory: $(Build.SourcesDirectory)/tools/sdk-ai-bots/azure-sdk-qa-bot-backend + inlineScript: | + export GOPROXY=https://proxy.golang.org,direct + go build -o qa-bot-service + chmod +x qa-bot-service + nohup ./qa-bot-service > qa-bot-service.log 2>&1 & + SERVICE_PID=$! + echo "Service started with PID: $SERVICE_PID" + sleep 20 + echo "=== Service log ===" + cat qa-bot-service.log || true + echo "===================" + if ! kill -0 $SERVICE_PID 2>/dev/null; then + echo "ERROR: Service process has exited unexpectedly" + exit 1 + fi + if ! lsof -ti:8088 > /dev/null 2>&1; then + echo "ERROR: No process listening on port 8088" + exit 1 + fi + echo "Service is running on port 8088" + env: + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + AZURE_APPCONFIG_ENDPOINT: $(AZURE_APPCONFIG_ENDPOINT) - # Install .NET SDK for azsdk-cli MCP server - - task: UseDotNet@2 - displayName: Install .NET 8.0 SDK - inputs: - version: '8.x' + # Install .NET SDK for azsdk-cli MCP server + - task: UseDotNet@2 + displayName: Install .NET 8.0 SDK + inputs: + version: '8.x' - # Install Node.js, Vally CLI, and Copilot SDK - - task: NodeTool@0 - displayName: Use Node.js 22 - inputs: - versionSpec: '22.x' + # Install Node.js, Vally CLI, and Copilot SDK + # Use the internal Azure Artifacts npm mirror because the 1ES + # managed pool blocks direct egress to registry.npmjs.org. + - task: NodeTool@0 + displayName: Use Node.js 22 + inputs: + versionSpec: '22.x' - - script: npm install -g @microsoft/vally-cli - displayName: Install Vally CLI + - script: npm install --global @microsoft/vally-cli --registry https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-tools/npm/registry/ + displayName: Install Vally CLI - - script: npm install -g @github/copilot-sdk - displayName: Install Copilot SDK + - script: npm install --global @github/copilot-sdk --registry https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-tools/npm/registry/ + displayName: Install Copilot SDK - # Run evaluations - - script: | - cd .github/skills - mkdir -p .vally/results - areas=$(ls -d */ 2>/dev/null | xargs -I{} basename {} | grep -v '^results$' | paste -sd, -) - if [ -n "$areas" ]; then - vally eval --tag "priority=p0" --tag "area=${areas}" --output-dir ".vally/results" - else - echo "No skills found — skipping" - fi - displayName: Run evaluations - continueOnError: true - env: - GITHUB_TOKEN: $(azuresdk-copilot-github-pat) + # Run evaluations + - script: | + cd .github/skills + mkdir -p .vally/results + areas=$(ls -d */ 2>/dev/null | xargs -I{} basename {} | grep -v '^results$' | paste -sd, -) + if [ -n "$areas" ]; then + vally eval --tag "priority=p0" --tag "area=${areas}" --output-dir ".vally/results" + else + echo "No skills found — skipping" + fi + displayName: Run evaluations + continueOnError: true + env: + GITHUB_TOKEN: $(azuresdk-copilot-github-pat) - - task: PublishPipelineArtifact@1 - displayName: Upload eval results - condition: always() - inputs: - targetPath: $(Build.SourcesDirectory)/.github/skills/.vally/results - artifactName: eval-results-$(Build.BuildId) + templateContext: + outputs: + - output: pipelineArtifact + path: $(Build.SourcesDirectory)/.github/skills/.vally/results + artifact: eval-results-$(Build.BuildId) + displayName: Upload eval results + condition: always() From c5ba7a9e5561ced227ceb3ce29e9ed5984abd3ac Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 12:00:34 +0800 Subject: [PATCH 27/98] Use Use1ESOfficial: true to satisfy 1ES PT drift check on internal project --- eng/pipelines/azure-typespec-author-benchmark.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index 3ccf7ad1fdd..713d1f80a4a 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -10,7 +10,7 @@ parameters: extends: template: /eng/pipelines/templates/stages/1es-redirect.yml parameters: - Use1ESOfficial: false + Use1ESOfficial: true stages: - stage: EvalTypeSpecAuthor displayName: Azure TypeSpec Author Skill Evaluation @@ -120,3 +120,4 @@ extends: artifact: eval-results-$(Build.BuildId) displayName: Upload eval results condition: always() + From 020bed2b09a2e8dece00b188ccc0bed5c52b9103 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 12:09:57 +0800 Subject: [PATCH 28/98] Authenticate npm against Azure Artifacts feed via create-authenticated-npmrc template --- eng/pipelines/azure-typespec-author-benchmark.yml | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index 713d1f80a4a..e0b8a70c172 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -85,17 +85,22 @@ extends: version: '8.x' # Install Node.js, Vally CLI, and Copilot SDK - # Use the internal Azure Artifacts npm mirror because the 1ES - # managed pool blocks direct egress to registry.npmjs.org. + # Use the internal Azure Artifacts npm mirror (with auth) because + # the 1ES managed pool blocks direct egress to registry.npmjs.org. - task: NodeTool@0 displayName: Use Node.js 22 inputs: versionSpec: '22.x' - - script: npm install --global @microsoft/vally-cli --registry https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-tools/npm/registry/ + - template: /eng/common/pipelines/templates/steps/create-authenticated-npmrc.yml + parameters: + npmrcPath: $(Build.SourcesDirectory)/.npmrc + registryUrl: https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-tools/npm/registry/ + + - script: npm install --global @microsoft/vally-cli --userconfig $(Build.SourcesDirectory)/.npmrc displayName: Install Vally CLI - - script: npm install --global @github/copilot-sdk --registry https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-tools/npm/registry/ + - script: npm install --global @github/copilot-sdk --userconfig $(Build.SourcesDirectory)/.npmrc displayName: Install Copilot SDK # Run evaluations @@ -121,3 +126,4 @@ extends: displayName: Upload eval results condition: always() + From 1abf9cd6d02cb173bc4aa74d4e2fb7b1e823bb35 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 12:54:17 +0800 Subject: [PATCH 29/98] Run vally from azure-typespec-author/evaluate so it finds .vally.yaml and evals --- .../azure-typespec-author-benchmark.yml | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index e0b8a70c172..182ecf9f894 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -104,15 +104,12 @@ extends: displayName: Install Copilot SDK # Run evaluations + # The vally config (.vally.yaml) lives in the skill's evaluate/ + # directory; cd there so vally discovers evals/*.eval.yaml. - script: | - cd .github/skills - mkdir -p .vally/results - areas=$(ls -d */ 2>/dev/null | xargs -I{} basename {} | grep -v '^results$' | paste -sd, -) - if [ -n "$areas" ]; then - vally eval --tag "priority=p0" --tag "area=${areas}" --output-dir ".vally/results" - else - echo "No skills found — skipping" - fi + cd .github/skills/azure-typespec-author/evaluate + mkdir -p results + vally eval --suite all --output-dir results displayName: Run evaluations continueOnError: true env: @@ -121,9 +118,10 @@ extends: templateContext: outputs: - output: pipelineArtifact - path: $(Build.SourcesDirectory)/.github/skills/.vally/results + path: $(Build.SourcesDirectory)/.github/skills/azure-typespec-author/evaluate/results artifact: eval-results-$(Build.BuildId) displayName: Upload eval results condition: always() + From 3d8c2d52718626ee38bdfb5a1c1adcf80ee2c8a8 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 13:05:31 +0800 Subject: [PATCH 30/98] Fix eval 001002.eval.yaml: timeout duration string + forward-slash paths --- .../azure-typespec-author/evaluate/evals/001002.eval.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml index a7ab314a0b3..5b9e3b212a1 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "30m" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use @@ -75,3 +75,4 @@ scoring: prompt: 1 file-matches: 4 threshold: 1.0 + From f2c93a8a7a9bd570a80dc2fc514d07866adc70f9 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 13:05:33 +0800 Subject: [PATCH 31/98] Fix eval 001001.eval.yaml: timeout duration string + forward-slash paths --- .../azure-typespec-author/evaluate/evals/001001.eval.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml index b81d05f1586..8af211d8bc5 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "30m" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use @@ -70,3 +70,4 @@ scoring: skill-invocation: 1 prompt: 1 threshold: 1.0 + From 9438cb58d86a10b1dcbe13012dcc015dc69c6fd4 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 13:05:34 +0800 Subject: [PATCH 32/98] Fix eval 001003.eval.yaml: timeout duration string + forward-slash paths --- .../azure-typespec-author/evaluate/evals/001003.eval.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml index 5a170070fc0..136758abf69 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "30m" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use @@ -71,3 +71,4 @@ scoring: tool-calls: 1 skill-invocation: 1 threshold: 1.0 + From de2223e171f6f7b049ed609d9c2c6f53bda6af7a Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 13:05:36 +0800 Subject: [PATCH 33/98] Fix eval 001005.eval.yaml: timeout duration string + forward-slash paths --- .../evaluate/evals/001005.eval.yaml | 49 ++++++++++--------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml index a07a68a97f4..1333d2e4db3 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "30m" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use @@ -23,51 +23,51 @@ stimuli: max_tokens: 5000 environment: files: - - src: ../fixtures/001005-version-add-preview-after-preview\employee.tsp + - src: ../fixtures/001005-version-add-preview-after-preview/employee.tsp dest: employee.tsp - - src: ../fixtures/001005-version-add-preview-after-preview\main.tsp + - src: ../fixtures/001005-version-add-preview-after-preview/main.tsp dest: main.tsp - - src: ../fixtures/001005-version-add-preview-after-preview\shared.tsp + - src: ../fixtures/001005-version-add-preview-after-preview/shared.tsp dest: shared.tsp - - src: ../fixtures/001005-version-add-preview-after-preview\tspconfig.yaml + - src: ../fixtures/001005-version-add-preview-after-preview/tspconfig.yaml dest: tspconfig.yaml - - src: ../fixtures/001005-version-add-preview-after-preview\package.json + - src: ../fixtures/001005-version-add-preview-after-preview/package.json dest: package.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Operations_List_MinimumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json dest: examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json dest: examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListBySubscription_MinimumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json dest: examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Operations_List_MinimumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json graders: - type: tool-calls @@ -122,3 +122,4 @@ scoring: tool-calls: 1 skill-invocation: 1 threshold: 1.0 + From 5151caa1ab72b249e6bd71227611fed2a1f06f01 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 13:05:37 +0800 Subject: [PATCH 34/98] Fix eval 001004.eval.yaml: timeout duration string + forward-slash paths --- .../azure-typespec-author/evaluate/evals/001004.eval.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml index 0940cca560d..cdfe6e59b84 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "30m" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use @@ -67,3 +67,4 @@ scoring: tool-calls: 1 skill-invocation: 1 threshold: 1.0 + From 21fde592f22f3e88f492ab1c90a97f4a2a5abb89 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 13:16:23 +0800 Subject: [PATCH 35/98] Fix .vally.yaml mcp timeout to duration string --- .github/skills/azure-typespec-author/evaluate/.vally.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/.vally.yaml b/.github/skills/azure-typespec-author/evaluate/.vally.yaml index 4a301f9044e..0501649d125 100644 --- a/.github/skills/azure-typespec-author/evaluate/.vally.yaml +++ b/.github/skills/azure-typespec-author/evaluate/.vally.yaml @@ -14,7 +14,7 @@ environments: type: stdio command: dotnet args: ["run", "--project", "../../../../tools/azsdk-cli/Azure.Sdk.Tools.Cli", "--", "start"] - timeout: 30000 + timeout: "30s" env: AZSDKTOOLS_AGENT_TESTING: "false" AZSDKTOOLS_COLLECT_TELEMETRY: "false" From 5d84f2d45a33d0bb9b9bdfc40d5f1e44382e66be Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 15:50:39 +0800 Subject: [PATCH 36/98] Set MCP server timeout to 30m --- .github/skills/azure-typespec-author/evaluate/.vally.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/.vally.yaml b/.github/skills/azure-typespec-author/evaluate/.vally.yaml index 0501649d125..9918369e978 100644 --- a/.github/skills/azure-typespec-author/evaluate/.vally.yaml +++ b/.github/skills/azure-typespec-author/evaluate/.vally.yaml @@ -14,7 +14,7 @@ environments: type: stdio command: dotnet args: ["run", "--project", "../../../../tools/azsdk-cli/Azure.Sdk.Tools.Cli", "--", "start"] - timeout: "30s" + timeout: "30m" env: AZSDKTOOLS_AGENT_TESTING: "false" AZSDKTOOLS_COLLECT_TELEMETRY: "false" From 4591dcbb027ae35ab13d798c626d65cd3a73aeb1 Mon Sep 17 00:00:00 2001 From: Haoling Dong Date: Wed, 6 May 2026 16:21:17 +0800 Subject: [PATCH 37/98] update skill --- .../azure-typespec-author/evaluate/.vally.yaml | 2 +- .../references/reference-document-links.md | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/skills/azure-typespec-author/evaluate/.vally.yaml b/.github/skills/azure-typespec-author/evaluate/.vally.yaml index e0308b86996..de8e9e1a5a6 100644 --- a/.github/skills/azure-typespec-author/evaluate/.vally.yaml +++ b/.github/skills/azure-typespec-author/evaluate/.vally.yaml @@ -16,7 +16,7 @@ environments: args: ["run", "--project", "../../../../tools/azsdk-cli/Azure.Sdk.Tools.Cli", "--", "start"] timeout: 300000 env: - AZSDKTOOLS_AGENT_TESTING: "false" + AZSDKTOOLS_AGENT_TESTING: "true" AZSDKTOOLS_COLLECT_TELEMETRY: "false" AZURE_SDK_KB_ENDPOINT: "http://localhost:8088" azsdk-mcp-remote-kb: diff --git a/.github/skills/azure-typespec-author/references/reference-document-links.md b/.github/skills/azure-typespec-author/references/reference-document-links.md index 3f64043c54f..a5af2ea6a88 100644 --- a/.github/skills/azure-typespec-author/references/reference-document-links.md +++ b/.github/skills/azure-typespec-author/references/reference-document-links.md @@ -1,9 +1,10 @@ # Reference Document Links -## API Version Evolution (ARM) +## API Version Evolution -- [Preview version overview](https://azure.github.io/typespec-azure/docs/howtos/versioning/01-preview-version): Overview of how preview API versions work in TypeSpec Azure. -- [preview → preview](https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/02-preview-after-preview/): How to add a new preview version after an existing preview version. -- [preview → stable](https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/03-stable-after-preview/): How to promote a preview version to stable. -- [stable → preview](https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/04-preview-after-stable/): How to add a new preview version after a stable version. -- [stable → stable](https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/05-stable-after-stable/): How to add a new stable version after an existing stable version. +- [About versioning](https://azure.github.io/typespec-azure/docs/howtos/versioning/01-about-versioning/): Overview of API versioning in TypeSpec Azure. +- [preview → preview](https://azure.github.io/typespec-azure/docs/howtos/versioning/02-preview-after-preview/): How to add a new preview version after an existing preview version. +- [preview → stable](https://azure.github.io/typespec-azure/docs/howtos/versioning/03-stable-after-preview/): How to promote a preview version to stable. +- [stable → preview](https://azure.github.io/typespec-azure/docs/howtos/versioning/04-preview-after-stable/): How to add a new preview version after a stable version. +- [stable → stable](https://azure.github.io/typespec-azure/docs/howtos/versioning/05-stable-after-stable/): How to add a new stable version after an existing stable version. +- [Evolving APIs using the Versioning Library](https://azure.github.io/typespec-azure/docs/howtos/versioning/06-evolving-apis/): Guidance for applying versioning decorators when APIs evolve. From 44bc8aefe2e9a49b51f1ab40c219a075b1d707b8 Mon Sep 17 00:00:00 2001 From: Haoling Dong Date: Wed, 6 May 2026 16:30:49 +0800 Subject: [PATCH 38/98] fix merge issue --- .github/azure-typespec-author/SKILL.md | 123 - .../evaluate/.vally.yaml | 47 - .../evaluate/evals/001001.eval.yaml | 72 - .../evaluate/evals/001002.eval.yaml | 77 - .../evaluate/evals/001003.eval.yaml | 73 - .../evaluate/evals/001004.eval.yaml | 69 - .../evaluate/evals/001005.eval.yaml | 124 - .../evaluate/evals/001006.eval.yaml | 109 - .../evaluate/evals/001007.eval.yaml | 126 - .../evaluate/evals/001008.eval.yaml | 119 - .../evaluate/evals/001009.eval.yaml | 72 - .../evaluate/evals/001010.eval.yaml | 65 - .../evaluate/evals/001011.eval.yaml | 70 - .../evaluate/evals/001012.eval.yaml | 82 - .../evaluate/evals/001013.eval.yaml | 77 - .../evaluate/evals/002001.eval.yaml | 78 - .../evaluate/evals/002002.eval.yaml | 66 - .../evaluate/evals/002003.eval.yaml | 58 - .../evaluate/evals/002004.eval.yaml | 79 - .../evaluate/evals/002005.eval.yaml | 90 - .../evaluate/evals/002006.eval.yaml | 130 - .../evaluate/evals/002007.eval.yaml | 113 - .../evaluate/evals/002008.eval.yaml | 61 - .../evaluate/evals/002009.eval.yaml | 65 - .../evaluate/evals/002010.eval.yaml | 69 - .../evaluate/evals/003001.eval.yaml | 70 - .../evaluate/evals/003002.eval.yaml | 88 - .../evaluate/evals/004001.eval.yaml | 69 - .../evaluate/evals/004002.eval.yaml | 78 - .../evaluate/evals/004003.eval.yaml | 121 - .../evaluate/evals/005001.eval.yaml | 59 - .../evaluate/evals/all.eval.yaml | 1581 ---- .../employee.tsp | 110 - .../001-share-version-new-feature/main.tsp | 32 - .../package.json | 28 - .../001-share-version-new-feature/readme.md | 45 - .../001-share-version-new-feature/shared.tsp | 8 - .../tspconfig.yaml | 44 - .../001002-version-default-value/employee.tsp | 63 - .../001002-version-default-value/main.tsp | 36 - .../001002-version-default-value/package.json | 28 - .../001002-version-default-value/readme.md | 57 - .../001002-version-default-value/shared.tsp | 8 - .../tspconfig.yaml | 44 - .../employee.tsp | 104 - ...ployees_CreateOrUpdate_MaximumSet_Gen.json | 70 - .../Employees_Delete_MaximumSet_Gen.json | 18 - .../Employees_Get_MaximumSet_Gen.json | 35 - ...es_ListByResourceGroup_MaximumSet_Gen.json | 39 - ...es_ListByResourceGroup_MinimumSet_Gen.json | 21 - ...ees_ListBySubscription_MaximumSet_Gen.json | 38 - ...ees_ListBySubscription_MinimumSet_Gen.json | 20 - .../Employees_Update_MaximumSet_Gen.json | 43 - .../Operations_List_MaximumSet_Gen.json | 28 - .../Operations_List_MinimumSet_Gen.json | 12 - ...ployees_CreateOrUpdate_MaximumSet_Gen.json | 85 - .../Employees_Delete_MaximumSet_Gen.json | 18 - .../Employees_Get_MaximumSet_Gen.json | 40 - ...es_ListByResourceGroup_MaximumSet_Gen.json | 44 - ...es_ListByResourceGroup_MinimumSet_Gen.json | 21 - ...ees_ListBySubscription_MaximumSet_Gen.json | 43 - ...ees_ListBySubscription_MinimumSet_Gen.json | 20 - .../Employees_Update_MaximumSet_Gen.json | 53 - .../Operations_List_MaximumSet_Gen.json | 28 - .../Operations_List_MinimumSet_Gen.json | 12 - .../main.tsp | 31 - .../package.json | 28 - .../readme.md | 45 - .../shared.tsp | 8 - .../tspconfig.yaml | 44 - .../employee.tsp | 104 - ...ployees_CreateOrUpdate_MaximumSet_Gen.json | 70 - .../Employees_Delete_MaximumSet_Gen.json | 18 - .../Employees_Get_MaximumSet_Gen.json | 35 - ...es_ListByResourceGroup_MaximumSet_Gen.json | 39 - ...es_ListByResourceGroup_MinimumSet_Gen.json | 21 - ...ees_ListBySubscription_MaximumSet_Gen.json | 38 - ...ees_ListBySubscription_MinimumSet_Gen.json | 20 - .../Employees_Update_MaximumSet_Gen.json | 43 - .../Operations_List_MaximumSet_Gen.json | 28 - .../Operations_List_MinimumSet_Gen.json | 12 - ...ployees_CreateOrUpdate_MaximumSet_Gen.json | 85 - .../Employees_Delete_MaximumSet_Gen.json | 18 - .../Employees_Get_MaximumSet_Gen.json | 40 - ...es_ListByResourceGroup_MaximumSet_Gen.json | 44 - ...es_ListByResourceGroup_MinimumSet_Gen.json | 21 - ...ees_ListBySubscription_MaximumSet_Gen.json | 43 - ...ees_ListBySubscription_MinimumSet_Gen.json | 20 - .../Employees_Update_MaximumSet_Gen.json | 53 - .../Operations_List_MaximumSet_Gen.json | 28 - .../Operations_List_MinimumSet_Gen.json | 12 - .../main.tsp | 30 - .../package.json | 28 - .../readme.md | 57 - .../shared.tsp | 8 - .../tspconfig.yaml | 44 - .../employee.tsp | 104 - ...ployees_CreateOrUpdate_MaximumSet_Gen.json | 70 - .../Employees_Delete_MaximumSet_Gen.json | 18 - .../Employees_Get_MaximumSet_Gen.json | 35 - ...es_ListByResourceGroup_MaximumSet_Gen.json | 39 - ...es_ListByResourceGroup_MinimumSet_Gen.json | 21 - ...ees_ListBySubscription_MaximumSet_Gen.json | 38 - ...ees_ListBySubscription_MinimumSet_Gen.json | 20 - .../Employees_Update_MaximumSet_Gen.json | 43 - .../Operations_List_MaximumSet_Gen.json | 28 - .../Operations_List_MinimumSet_Gen.json | 12 - ...ployees_CreateOrUpdate_MaximumSet_Gen.json | 85 - .../Employees_Delete_MaximumSet_Gen.json | 18 - .../Employees_Get_MaximumSet_Gen.json | 40 - ...es_ListByResourceGroup_MaximumSet_Gen.json | 44 - ...es_ListByResourceGroup_MinimumSet_Gen.json | 21 - ...ees_ListBySubscription_MaximumSet_Gen.json | 43 - ...ees_ListBySubscription_MinimumSet_Gen.json | 20 - .../Employees_Update_MaximumSet_Gen.json | 53 - .../Operations_List_MaximumSet_Gen.json | 28 - .../Operations_List_MinimumSet_Gen.json | 12 - .../main.tsp | 31 - .../package.json | 28 - .../readme.md | 45 - .../shared.tsp | 8 - .../tspconfig.yaml | 44 - .../employee.tsp | 104 - ...ployees_CreateOrUpdate_MaximumSet_Gen.json | 70 - .../Employees_Delete_MaximumSet_Gen.json | 18 - .../Employees_Get_MaximumSet_Gen.json | 35 - ...es_ListByResourceGroup_MaximumSet_Gen.json | 39 - ...es_ListByResourceGroup_MinimumSet_Gen.json | 21 - ...ees_ListBySubscription_MaximumSet_Gen.json | 38 - ...ees_ListBySubscription_MinimumSet_Gen.json | 20 - .../Employees_Update_MaximumSet_Gen.json | 43 - .../Operations_List_MaximumSet_Gen.json | 28 - .../Operations_List_MinimumSet_Gen.json | 12 - ...ployees_CreateOrUpdate_MaximumSet_Gen.json | 85 - .../Employees_Delete_MaximumSet_Gen.json | 18 - .../Employees_Get_MaximumSet_Gen.json | 40 - ...es_ListByResourceGroup_MaximumSet_Gen.json | 44 - ...es_ListByResourceGroup_MinimumSet_Gen.json | 21 - ...ees_ListBySubscription_MaximumSet_Gen.json | 43 - ...ees_ListBySubscription_MinimumSet_Gen.json | 20 - .../Employees_Update_MaximumSet_Gen.json | 53 - .../Operations_List_MaximumSet_Gen.json | 28 - .../Operations_List_MinimumSet_Gen.json | 12 - .../main.tsp | 30 - .../package.json | 28 - .../readme.md | 45 - .../shared.tsp | 8 - .../tspconfig.yaml | 44 - .../employee.tsp | 104 - .../main.tsp | 32 - .../package.json | 28 - .../preview/2024-10-01-preview/widget.json | 710 -- .../readme.md | 45 - .../shared.tsp | 8 - .../stable/2021-11-01/widget.json | 710 -- .../tspconfig.yaml | 44 - .../badgeAssignment.tsp | 41 - .../employee.tsp | 100 - .../main.tsp | 33 - .../package.json | 28 - .../preview/2024-10-01-preview/widget.json | 1045 --- .../readme.md | 45 - .../shared.tsp | 8 - .../stable/2021-11-01/widget.json | 1045 --- .../tspconfig.yaml | 44 - .../002005-ARM-define-the-resource/main.tsp | 31 - .../package.json | 28 - .../002005-ARM-define-the-resource/readme.md | 45 - .../002005-ARM-define-the-resource/shared.tsp | 8 - .../tspconfig.yaml | 44 - .../employee.tsp | 99 - .../main.tsp | 32 - .../package.json | 28 - .../preview/2024-10-01-preview/widget.json | 548 -- .../readme.md | 45 - .../shared.tsp | 8 - .../stable/2021-11-01/widget.json | 548 -- .../tspconfig.yaml | 44 - .../employee.tsp | 91 - .../002010-arm-action-sync-operation/main.tsp | 32 - .../package.json | 28 - .../readme.md | 19 - .../shared.tsp | 8 - .../tspconfig.yaml | 44 - .../employee.tsp | 78 - .../003-long-running-operation-share/main.tsp | 31 - .../package.json | 28 - .../readme.md | 45 - .../shared.tsp | 8 - .../tspconfig.yaml | 44 - .../employee.tsp | 100 - .../main.tsp | 31 - .../package.json | 28 - .../readme.md | 45 - .../shared.tsp | 8 - .../tspconfig.yaml | 44 - .../BastionHost.tsp | 214 - .../BgpConnection.tsp | 142 - .../ExpressRouteGateway.tsp | 214 - .../ExpressRoutePort.tsp | 195 - .../ExpressRouteProviderPort.tsp | 75 - .../NetworkInterface.tsp | 250 - .../P2SVpnGateway.tsp | 213 - .../Route.tsp | 80 - .../VpnServerConfigurationPolicyGroup.tsp | 98 - .../VpnSiteLinkConnection.tsp | 138 - .../package.json | 28 - .../tspconfig.yaml | 15 - .../005001-warning-suppress-warning/main.tsp | 41 - .../models.tsp | 4942 ----------- .../package.json | 28 - .../005001-warning-suppress-warning/stubs.tsp | 405 - .../tspconfig.yaml | 14 - .../Microsoft.Widget/Widget/employee.tsp | 100 - .../fixtures/Microsoft.Widget/Widget/main.tsp | 32 - .../Microsoft.Widget/Widget/package-lock.json | 7870 ----------------- .../Microsoft.Widget/Widget/package.json | 28 - .../preview/2024-10-01-preview/widget.json | 692 -- .../Microsoft.Widget/Widget/readme.md | 45 - .../Microsoft.Widget/Widget/shared.tsp | 8 - .../Widget/stable/2021-11-01/widget.json | 692 -- .../Microsoft.Widget/Widget/tspconfig.yaml | 44 - .../references/agentic-search.md | 15 - .../analyze-project-and-classify-task.md | 62 - .../references/api-version-evolution.md | 31 - .../references/general-authoring-intake.md | 42 - .../references/validation.md | 36 - 227 files changed, 31564 deletions(-) delete mode 100644 .github/azure-typespec-author/SKILL.md delete mode 100644 .github/azure-typespec-author/evaluate/.vally.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/001001.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/001002.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/001003.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/001004.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/001005.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/001006.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/001007.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/001008.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/001009.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/001010.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/001011.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/001012.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/001013.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/002001.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/002002.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/002003.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/002004.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/002005.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/002006.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/002007.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/002008.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/002009.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/002010.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/003001.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/003002.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/004001.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/004002.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/004003.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/005001.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/evals/all.eval.yaml delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/employee.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/main.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/package.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/readme.md delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/shared.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/tspconfig.yaml delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/employee.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/main.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/package.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/readme.md delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/shared.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/tspconfig.yaml delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/employee.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/main.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/package.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/readme.md delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/shared.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/tspconfig.yaml delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/employee.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Operations_List_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Operations_List_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Get_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Update_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Operations_List_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Operations_List_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/main.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/package.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/readme.md delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/shared.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/tspconfig.yaml delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/employee.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/main.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/package.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/readme.md delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/shared.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/tspconfig.yaml delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/employee.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Operations_List_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Operations_List_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Get_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Update_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Operations_List_MaximumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Operations_List_MinimumSet_Gen.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/main.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/package.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/readme.md delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/shared.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/tspconfig.yaml delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/employee.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/main.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/package.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/preview/2024-10-01-preview/widget.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/readme.md delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/shared.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/stable/2021-11-01/widget.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/tspconfig.yaml delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/badgeAssignment.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/employee.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/main.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/package.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/preview/2024-10-01-preview/widget.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/readme.md delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/shared.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/stable/2021-11-01/widget.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/tspconfig.yaml delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/main.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/package.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/readme.md delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/shared.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/tspconfig.yaml delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/employee.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/main.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/package.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/preview/2024-10-01-preview/widget.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/readme.md delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/shared.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/stable/2021-11-01/widget.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/tspconfig.yaml delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/employee.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/main.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/package.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/readme.md delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/shared.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/tspconfig.yaml delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/employee.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/main.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/package.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/readme.md delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/shared.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/tspconfig.yaml delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/employee.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/main.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/package.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/readme.md delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/shared.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/tspconfig.yaml delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/BastionHost.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/BgpConnection.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteGateway.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRoutePort.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteProviderPort.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/NetworkInterface.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/P2SVpnGateway.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/Route.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/VpnServerConfigurationPolicyGroup.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/VpnSiteLinkConnection.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/package.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/tspconfig.yaml delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/main.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/models.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/package.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/stubs.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/tspconfig.yaml delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/employee.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/main.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/package-lock.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/package.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/readme.md delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/shared.tsp delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json delete mode 100644 .github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/tspconfig.yaml delete mode 100644 .github/azure-typespec-author/references/agentic-search.md delete mode 100644 .github/azure-typespec-author/references/analyze-project-and-classify-task.md delete mode 100644 .github/azure-typespec-author/references/api-version-evolution.md delete mode 100644 .github/azure-typespec-author/references/general-authoring-intake.md delete mode 100644 .github/azure-typespec-author/references/validation.md diff --git a/.github/azure-typespec-author/SKILL.md b/.github/azure-typespec-author/SKILL.md deleted file mode 100644 index 4d758549117..00000000000 --- a/.github/azure-typespec-author/SKILL.md +++ /dev/null @@ -1,123 +0,0 @@ ---- -name: azure-typespec-author -license: MIT -metadata: - version: "1.0.0" -description: "Authors and modifies Azure TypeSpec (.tsp) API specifications. USE FOR: any TypeSpec/tsp change — api versions (add, bump, preview, stable, promote), resources, operations, models, properties, decorators, visibility, constraints, breaking changes, LRO, suppressions, operationId, spread model. Covers ARM resource-manager and data-plane services. DO NOT USE FOR: SDK generation, releasing SDK packages, or single MCP tool calls. INVOKES: azure-sdk-mcp:azsdk_typespec_generate_authoring_plan, azure-sdk-mcp:azsdk_run_typespec_validation." -compatibility: - requires: "azure-sdk-mcp server with azsdk_typespec_generate_authoring_plan and azsdk_run_typespec_validation tools" ---- - -# Azure TypeSpec Author - -## MCP Tools - -| Tool | Purpose | -| ------------------------------------------------------ | --------------------------------------------------------- | -| `azure-sdk-mcp:azsdk_typespec_generate_authoring_plan` | Generate grounded authoring plan (General Authoring only) | -| `azure-sdk-mcp:azsdk_run_typespec_validation` | Validate TypeSpec | - -**Prerequisite:** `azure-sdk-mcp` server must be running. - -## Constraints - -- **Always follow the full workflow** — even seemingly simple changes (e.g. adding a default value) can require complex versioning decorator changes. Never skip steps. -- **Mandatory for ALL `.tsp` edits** — even a single `?` change can be breaking. -- **Minimal, scoped edits** — only change what the request requires. -- **Always validate** — run every steps in [validation](references/validation.md) after every edit. -- **Always cite references** — provide links that justify the approach. -- **Follow the authoring plan exactly** — code changes in Step 4 MUST follow the authoring plan generated in Step 3. Do not deviate by referring to existing code patterns in the TypeSpec project; the authoring plan is the single source of truth for what to change. - ---- - -## Workflow - -> Classify → Intake → Plan → Apply → Validate - -### Progress Checklist - -Copy and update as you progress: - -- [ ] Step 1: Analyzed project & classified as: \_\_\_ -- [ ] Step 2: Collected intake inputs -- [ ] Step 3: Retrieved authoring plan -- [ ] Step 4: Applied changes -- [ ] Step 5: Validated with TypeSpec validation and `tsp compile .` - -### Step 1: Analyze & Classify - -Follow [analyze project & classify task](references/analyze-project-and-classify-task.md). - -Classify as exactly one: - -| Task Type | When | `azsdk_typespec_generate_authoring_plan` | -| ------------------------- | --------------------------------------------------------------------------------- | ---------------------------------------- | -| **API Version Evolution** | Adding a new preview or stable API version to an existing ARM service. (ARM only) | **MUST NOT** call | -| **General Authoring** | Any other `.tsp` change (resources, operations, models, properties, etc.) | **MUST** call | - -State your classification explicitly before proceeding. - ---- - -### Step 2: Intake - -Collect inputs needed for the change. Branch by task type: - -- **API Version Evolution** → Follow [API version evolution reference — Step 2](references/api-version-evolution.md#step-2-intake). -- **General Authoring** → Follow [intake guide](references/general-authoring-intake.md). - ---- - -### Step 3: Retrieve Authoring Plan - -Check your classification from Step 1, then branch: - -- **API Version Evolution** → Follow [API version evolution reference — Step 3](references/api-version-evolution.md#step-3-retrieve-authoring-plan). **MUST NOT** call `azsdk_typespec_generate_authoring_plan`. -- **General Authoring** → **MUST** invoke `azure-sdk-mcp:azsdk_typespec_generate_authoring_plan` with: - - | Parameter | Value | - | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | `request` | User request (verbatim) | - | `additionalInformation` | All content gathered from Steps 1–2 (intake analysis, user answers, relevant `.tsp` code read from the project), **including any case-specific Defaults noted in Step 2.2** | - | `typeSpecProjectRootPath` | TypeSpec project root path | - - Do not proceed without an authoring plan from this tool. - ---- - -### Step 4: Apply Changes - -Confirm uncertainties with the user, then make minimal `.tsp` edits. - -- **API Version Evolution** → Apply the plan from Step 3. -- **General Authoring** → Apply the authoring plan from Step 3. - ---- - -### Step 5: Validate - -See [validation guide](references/validation.md) for sub-steps. You must run TypeSpec validation (5.1), `tsp compile .` (5.2), and example verification (5.3, API Version Evolution only). - ---- - -## Reference Files - -| File | Purpose | -| --------------------------------------------------------------------------------------- | ----------------------------------------- | -| [analyze-project-and-classify-task.md](references/analyze-project-and-classify-task.md) | Step 1: project analysis + classification | -| [api-version-evolution.md](references/api-version-evolution.md) | Steps 2–4 for API Version Evolution tasks | -| [general-authoring-intake.md](references/general-authoring-intake.md) | Step 2 for General Authoring tasks | -| [agentic-search.md](references/agentic-search.md) | Procedure for fetching external docs | -| [validation.md](references/validation.md) | Step 5: validation sub-steps | - -## Examples - -- "Add a new preview API version 2026-01-01-preview for widget resource manager" -- "Bump to stable version 2026-01-01 for Microsoft.Widget" -- "Add an ARM resource named Asset with CRUD operations" -- "Add a new property to the Widget model" - -## Troubleshooting - -- **TypeSpec validation fails** — display all errors, provide fix suggestions, re-run validation. -- **API Version Evolution** — use the versioning guide URLs in the [version evolution reference](references/api-version-evolution.md); do not call the authoring plan tool. diff --git a/.github/azure-typespec-author/evaluate/.vally.yaml b/.github/azure-typespec-author/evaluate/.vally.yaml deleted file mode 100644 index 1e2109aa12b..00000000000 --- a/.github/azure-typespec-author/evaluate/.vally.yaml +++ /dev/null @@ -1,47 +0,0 @@ -# Vally configuration for Azure SDK Typespec Author MCP tool evaluations -# See: https://vally.dev/reference/vally-config - -paths: - evals: [evals/] - evalFilenames: ["*.eval.yaml"] - skills: [../] - results: results/ - -environments: - azsdk-mcp: - mcpServers: - azure-sdk-mcp: - type: stdio - command: dotnet - args: ["run", "--project", "../../../tools/azsdk-cli/Azure.Sdk.Tools.Cli", "--", "start"] - timeout: 30000 - env: - AZSDKTOOLS_AGENT_TESTING: "false" - AZSDKTOOLS_COLLECT_TELEMETRY: "false" - AZURE_SDK_KB_ENDPOINT: "http://localhost:8088" - azsdk-mcp-remote: - mcpServers: - azure-sdk-mcp: - type: stdio - command: dotnet - args: ["run", "--project", "../../../tools/azsdk-cli/Azure.Sdk.Tools.Cli", "--", "start"] - timeout: 30000 - env: - AZSDKTOOLS_AGENT_TESTING: "false" - AZSDKTOOLS_COLLECT_TELEMETRY: "false" - -suites: - versioning: - evals: ["evals/001001.eval.yaml","evals/001002.eval.yaml","evals/001003.eval.yaml","evals/001004.eval.yaml","evals/001005.eval.yaml","evals/001006.eval.yaml","evals/001007.eval.yaml","evals/001008.eval.yaml","evals/001009.eval.yaml","evals/001010.eval.yaml","evals/001011.eval.yaml","evals/001012.eval.yaml","evals/001013.eval.yaml"] - version-evolution: - evals: ["evals/001005.eval.yaml","evals/001006.eval.yaml","evals/001007.eval.yaml","evals/001008.eval.yaml"] - armtemplate: - evals: ["evals/002001.eval.yaml","evals/002002.eval.yaml","evals/002003.eval.yaml","evals/002004.eval.yaml","evals/002005.eval.yaml","evals/002006.eval.yaml","evals/002007.eval.yaml","evals/002008.eval.yaml","evals/002009.eval.yaml","evals/002010.eval.yaml"] - longrunningoperation: - evals: ["evals/003001.eval.yaml","evals/003002.eval.yaml"] - decorators: - evals: ["evals/004001.eval.yaml","evals/004002.eval.yaml","evals/004003.eval.yaml"] - warning: - evals: ["evals/005001.eval.yaml"] - all: - evals: ["evals/*.eval.yaml"] \ No newline at end of file diff --git a/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml deleted file mode 100644 index b81d05f1586..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/001001.eval.yaml +++ /dev/null @@ -1,72 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- name: 001001-version-spread-property - prompt: I added `...Azure.ResourceManager.ManagedServiceIdentityProperty;` which updates all my existing API versions and introduces a breaking change. I want to introduce the properties of the spread model '...ManagedServiceIdentityProperty' in API version 2025-05-04-preview only. - environment: - files: - - src: ../fixtures/001-share-version-new-feature/employee.tsp - dest: employee.tsp - - src: ../fixtures/001-share-version-new-feature/main.tsp - dest: main.tsp - - src: ../fixtures/001-share-version-new-feature/shared.tsp - dest: shared.tsp - - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml - dest: tspconfig.yaml - - src: ../fixtures/001-share-version-new-feature/package.json - dest: package.json - - src: ../fixtures/001-share-version-new-feature/readme.md - dest: readme.md - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: main.tsp - pattern: 2025-05-04-preview - - type: file-matches - config: - path: employee.tsp - pattern: "\\.\\.\\.ManagedServiceIdentityProperty;" - - type: file-matches - config: - path: employee.tsp - pattern: "@@added\\(Employee\\.identity, (Microsoft\\.Widget\\.)?Versions\\.(v2025_05_04_preview|`2025-05-04-preview`)\\);" - - type: prompt - config: - prompt: Verify changes are scoped to this task only, with no unrelated edits beyond introducing preview-only identity via versioning. - model: claude-opus-4.6 - scoring: scale_1_5 - threshold: 1.0 - constraints: - max_turns: 10 - max_tokens: 50000 -scoring: - weights: - file-matches: 3 - tool-calls: 1 - skill-invocation: 1 - prompt: 1 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml deleted file mode 100644 index a7ab314a0b3..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/001002.eval.yaml +++ /dev/null @@ -1,77 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- name: 001002-version-default-value - prompt: | - add a default value `21` for property age in model EmployeeProperties only for the new api version 2025-11-01 - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/001002-version-default-value/employee.tsp - dest: employee.tsp - - src: ../fixtures/001002-version-default-value/main.tsp - dest: main.tsp - - src: ../fixtures/001002-version-default-value/package.json - dest: package.json - - src: ../fixtures/001002-version-default-value/readme.md - dest: readme.md - - src: ../fixtures/001002-version-default-value/shared.tsp - dest: shared.tsp - - src: ../fixtures/001002-version-default-value/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: employee.tsp - pattern: '@removed\(Versions\.v2025_11_01\)' - - type: file-matches - config: - path: employee.tsp - pattern: '@renamedFrom\(Versions\.v2025_11_01, "age"\)' - - type: file-matches - config: - path: employee.tsp - pattern: '@added\(Versions\.v2025_11_01\)' - - type: file-matches - config: - path: employee.tsp - pattern: 'age\?: int32 = 21;' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: add a default value of 21 for the `age` property in `EmployeeProperties` that only applies to the 2025-11-01 API version. The old age renamed and removed for the new version.' - model: claude-opus-4.6 -scoring: - weights: - tool-calls: 1 - skill-invocation: 1 - prompt: 1 - file-matches: 4 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml deleted file mode 100644 index 5a170070fc0..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/001003.eval.yaml +++ /dev/null @@ -1,73 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - change the property age of EmployeeProperties from required to optional for api version 2025-05-04-preview - name: 001003-version-required-to-optional - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/001-share-version-new-feature/employee.tsp - dest: employee.tsp - - src: ../fixtures/001-share-version-new-feature/main.tsp - dest: main.tsp - - src: ../fixtures/001-share-version-new-feature/package.json - dest: package.json - - src: ../fixtures/001-share-version-new-feature/readme.md - dest: readme.md - - src: ../fixtures/001-share-version-new-feature/shared.tsp - dest: shared.tsp - - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: main.tsp - pattern: 2025-05-04-preview - - type: file-matches - config: - path: employee.tsp - pattern: '@madeOptional' - - type: file-matches - config: - path: employee.tsp - pattern: 2025-05-04-preview|v2025_05_04_preview - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -scoring: - weights: - prompt: 1 - file-matches: 2 - tool-calls: 1 - skill-invocation: 1 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml deleted file mode 100644 index 0940cca560d..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/001004.eval.yaml +++ /dev/null @@ -1,69 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - change the visibility of property 'provisioningState' from Lifecycle.Read to Lifecycle.Read and Lifecycle.Create in version 2025-05-04-preview only - name: 001004-version-property-decorator - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/001-share-version-new-feature/employee.tsp - dest: employee.tsp - - src: ../fixtures/001-share-version-new-feature/main.tsp - dest: main.tsp - - src: ../fixtures/001-share-version-new-feature/package.json - dest: package.json - - src: ../fixtures/001-share-version-new-feature/readme.md - dest: readme.md - - src: ../fixtures/001-share-version-new-feature/shared.tsp - dest: shared.tsp - - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: employee.tsp - pattern: Lifecycle\.Read, Lifecycle\.Create - - type: file-matches - config: - path: main.tsp - pattern: 2025-05-04-preview - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -scoring: - weights: - prompt: 1 - file-matches: 2 - tool-calls: 1 - skill-invocation: 1 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml deleted file mode 100644 index a07a68a97f4..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/001005.eval.yaml +++ /dev/null @@ -1,124 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - Add a new preview version `2025-05-04-preview` to my service widget resource manager. Exclude Feature: `age` property with default value 21. Carry other features. - name: 001005-version-add-preview-after-preview - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/001005-version-add-preview-after-preview\employee.tsp - dest: employee.tsp - - src: ../fixtures/001005-version-add-preview-after-preview\main.tsp - dest: main.tsp - - src: ../fixtures/001005-version-add-preview-after-preview\shared.tsp - dest: shared.tsp - - src: ../fixtures/001005-version-add-preview-after-preview\tspconfig.yaml - dest: tspconfig.yaml - - src: ../fixtures/001005-version-add-preview-after-preview\package.json - dest: package.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_CreateOrUpdate_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Delete_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Get_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_ListByResourceGroup_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_ListBySubscription_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Update_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Operations_List_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Operations_List_MinimumSet_Gen.json - dest: examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json - dest: examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListBySubscription_MinimumSet_Gen.json - dest: examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Operations_List_MaximumSet_Gen.json - dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Operations_List_MinimumSet_Gen.json - dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-exists - config: - path: examples/2025-05-04-preview/Employees_Get_MaximumSet_Gen.json - - type: file-not-exists - config: - path: examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json - - type: file-matches - config: - path: main.tsp - pattern: 2025-05-04-preview - - type: file-not-matches - config: - path: main.tsp - pattern: 2024-10-01-preview - - type: file-not-matches - config: - path: employee.tsp - pattern: oldAge - - type: file-matches - config: - path: employee.tsp - pattern: '@added\(Versions\.v2025_05_04_preview\)\s+workLocation\?: WorkLocation;' - - type: file-not-matches - config: - path: employee.tsp - pattern: v2024_10_01_preview - - type: file-matches - config: - path: employee.tsp - pattern: 'age\?: int32;' - - type: file-matches - config: - path: employee.tsp - pattern: '@typeChangedFrom\(Versions\.v2025_05_04_preview, string\[\]\)' -scoring: - weights: - file-matches: 4 - file-not-matches: 3 - file-exists: 1 - file-not-exists: 1 - tool-calls: 1 - skill-invocation: 1 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001006.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001006.eval.yaml deleted file mode 100644 index 13e796fc3ea..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/001006.eval.yaml +++ /dev/null @@ -1,109 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - Add a new preview version `2025-05-04-preview` to my service widget resource manager. Carry over all the features from the latest stable version - name: 001006-version-add-preview-after-stable - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/001006-version-add-preview-after-stable\employee.tsp - dest: employee.tsp - - src: ../fixtures/001006-version-add-preview-after-stable\main.tsp - dest: main.tsp - - src: ../fixtures/001006-version-add-preview-after-stable\shared.tsp - dest: shared.tsp - - src: ../fixtures/001006-version-add-preview-after-stable\tspconfig.yaml - dest: tspconfig.yaml - - src: ../fixtures/001006-version-add-preview-after-stable\package.json - dest: package.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Operations_List_MaximumSet_Gen.json - dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Operations_List_MinimumSet_Gen.json - dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_Delete_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_Get_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json - dest: examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_ListBySubscription_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_ListBySubscription_MinimumSet_Gen.json - dest: examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_Update_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Operations_List_MaximumSet_Gen.json - dest: examples/2024-10-01/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Operations_List_MinimumSet_Gen.json - dest: examples/2024-10-01/Operations_List_MinimumSet_Gen.json - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-exists - config: - path: examples/2025-05-04-preview/Employees_Get_MaximumSet_Gen.json - - type: file-exists - config: - path: examples/2024-10-01/Employees_Get_MaximumSet_Gen.json - - type: file-matches - config: - path: main.tsp - pattern: 2025-05-04-preview - - type: file-matches - config: - path: main.tsp - pattern: 2024-10-01 - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -scoring: - weights: - file-exists: 2 - prompt: 1 - file-matches: 2 - tool-calls: 1 - skill-invocation: 1 - threshold: 1.0 \ No newline at end of file diff --git a/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml deleted file mode 100644 index 87c42bc2b1e..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/001007.eval.yaml +++ /dev/null @@ -1,126 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - I want to add a new stable version `2025-01-01`. Exclude `workLocation` property and `WorkLocation` model. Carry other features. - name: 001007-version-add-stable-after-preview - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/001007-version-add-stable-after-preview\employee.tsp - dest: employee.tsp - - src: ../fixtures/001007-version-add-stable-after-preview\main.tsp - dest: main.tsp - - src: ../fixtures/001007-version-add-stable-after-preview\shared.tsp - dest: shared.tsp - - src: ../fixtures/001007-version-add-stable-after-preview\tspconfig.yaml - dest: tspconfig.yaml - - src: ../fixtures/001007-version-add-stable-after-preview\package.json - dest: package.json - - src: ../fixtures/001007-version-add-stable-after-preview\readme.md - dest: readme.md - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json - dest: examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_ListBySubscription_MinimumSet_Gen.json - dest: examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Operations_List_MaximumSet_Gen.json - dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Operations_List_MinimumSet_Gen.json - dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_CreateOrUpdate_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_Delete_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_Get_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_ListByResourceGroup_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_ListByResourceGroup_MinimumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_ListBySubscription_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_ListBySubscription_MinimumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_Update_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Operations_List_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Operations_List_MinimumSet_Gen.json - dest: examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-exists - config: - path: examples/2025-01-01/Employees_Get_MaximumSet_Gen.json - - type: file-not-exists - config: - path: examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json - - type: file-matches - config: - path: main.tsp - pattern: 2025-01-01 - - type: file-not-matches - config: - path: main.tsp - pattern: 2024-10-01-preview - - type: file-not-matches - config: - path: employee.tsp - pattern: 'workLocation\?: WorkLocation;' - - type: file-matches - config: - path: employee.tsp - pattern: '@removed\(Versions\.v2025_01_01\)\s*@renamedFrom\(Versions\.v2025_01_01, "age"\)\s*oldAge\?: int32;' - - type: file-matches - config: - path: employee.tsp - pattern: '@added\(Versions\.v2025_01_01\)\s*age\?: int32 = 21;' - - type: file-not-matches - config: - path: employee.tsp - pattern: v2024_10_01_preview -scoring: - weights: - file-matches: 2 - file-not-matches: 3 - file-exists: 1 - file-not-exists: 1 - tool-calls: 1 - skill-invocation: 1 - threshold: 1.0 \ No newline at end of file diff --git a/.github/azure-typespec-author/evaluate/evals/001008.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001008.eval.yaml deleted file mode 100644 index a7900d3f387..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/001008.eval.yaml +++ /dev/null @@ -1,119 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - Add a new stable version `2025-01-01` to my service. Carry over changes. - name: 001008-version-add-stable-after-stable - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/001008-version-add-stable-after-stable\employee.tsp - dest: employee.tsp - - src: ../fixtures/001008-version-add-stable-after-stable\main.tsp - dest: main.tsp - - src: ../fixtures/001008-version-add-stable-after-stable\shared.tsp - dest: shared.tsp - - src: ../fixtures/001008-version-add-stable-after-stable\tspconfig.yaml - dest: tspconfig.yaml - - src: ../fixtures/001008-version-add-stable-after-stable\package.json - dest: package.json - - src: ../fixtures/001008-version-add-stable-after-stable\readme.md - dest: readme.md - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json - dest: examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_ListBySubscription_MinimumSet_Gen.json - dest: examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Operations_List_MaximumSet_Gen.json - dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Operations_List_MinimumSet_Gen.json - dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_Delete_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_Get_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json - dest: examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_ListBySubscription_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_ListBySubscription_MinimumSet_Gen.json - dest: examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_Update_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Operations_List_MaximumSet_Gen.json - dest: examples/2024-10-01/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Operations_List_MinimumSet_Gen.json - dest: examples/2024-10-01/Operations_List_MinimumSet_Gen.json - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-exists - config: - path: examples/2024-10-01/Employees_Get_MaximumSet_Gen.json - - type: file-exists - config: - path: examples/2025-01-01/Employees_Get_MaximumSet_Gen.json - - type: file-matches - config: - path: main.tsp - pattern: 2021-10-01 - - type: file-matches - config: - path: main.tsp - pattern: 2024-10-01 - - type: file-matches - config: - path: main.tsp - pattern: 2025-01-01 - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -scoring: - weights: - file-exists: 2 - prompt: 1 - file-matches: 3 - tool-calls: 1 - skill-invocation: 1 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml deleted file mode 100644 index a8d6b64e0ac..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/001009.eval.yaml +++ /dev/null @@ -1,72 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - In the Widget project, make the `email` property required in EmployeeProperties only for version `2025-05-04-preview`. - name: 001009-version-model-property-required - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/001-share-version-new-feature/employee.tsp - dest: Microsoft.Widget/Widget/employee.tsp - - src: ../fixtures/001-share-version-new-feature/main.tsp - dest: Microsoft.Widget/Widget/main.tsp - - src: ../fixtures/001-share-version-new-feature/package.json - dest: Microsoft.Widget/Widget/package.json - - src: ../fixtures/001-share-version-new-feature/readme.md - dest: Microsoft.Widget/Widget/readme.md - - src: ../fixtures/001-share-version-new-feature/shared.tsp - dest: Microsoft.Widget/Widget/shared.tsp - - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml - dest: Microsoft.Widget/Widget/tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: Microsoft.Widget/Widget/main.tsp - pattern: v2025_05_04_preview - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: '@madeRequired\(Versions\.v2025_05_04_preview\)' - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: 'email: string;' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify email property made required only in new version, only scoped edits made. Verify compile the project and fix any compilation errors if present.' - model: claude-opus-4.6 -scoring: - weights: - prompt: 1 - file-matches: 3 - tool-calls: 1 - skill-invocation: 1 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml deleted file mode 100644 index 078f85448d4..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/001010.eval.yaml +++ /dev/null @@ -1,65 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - In the Widget project, remove the `department` property from EmployeeProperties only for version `2025-05-04-preview`. - name: 001010-version-model-property-removed - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/001-share-version-new-feature/employee.tsp - dest: Microsoft.Widget/Widget/employee.tsp - - src: ../fixtures/001-share-version-new-feature/main.tsp - dest: Microsoft.Widget/Widget/main.tsp - - src: ../fixtures/001-share-version-new-feature/package.json - dest: Microsoft.Widget/Widget/package.json - - src: ../fixtures/001-share-version-new-feature/readme.md - dest: Microsoft.Widget/Widget/readme.md - - src: ../fixtures/001-share-version-new-feature/shared.tsp - dest: Microsoft.Widget/Widget/shared.tsp - - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml - dest: Microsoft.Widget/Widget/tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: Microsoft.Widget/Widget/main.tsp - pattern: v2025_05_04_preview - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: '@removed\(Versions\.v2025_05_04_preview\)' - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: 'department\?: string;' -scoring: - weights: - tool-calls: 1 - skill-invocation: 1 - file-matches: 3 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml deleted file mode 100644 index 05512728bd2..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/001011.eval.yaml +++ /dev/null @@ -1,70 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - In the Widget project, rename the `age` property to `employeeAge` in EmployeeProperties only for version `2025-05-04-preview`. - name: 001011-version-model-property-renamed - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: Microsoft.Widget/Widget/employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: Microsoft.Widget/Widget/main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: Microsoft.Widget/Widget/package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: Microsoft.Widget/Widget/readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: Microsoft.Widget/Widget/shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: Microsoft.Widget/Widget/tspconfig.yaml - - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json - dest: Microsoft.Widget/Widget/stable/2021-11-01/widget.json - - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json - dest: Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: Microsoft.Widget/Widget/main.tsp - pattern: v2025_05_04_preview - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: '@renamedFrom\(Versions\.v2025_05_04_preview, "age"\)' - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: 'employeeAge\?: int32;' -scoring: - weights: - file-matches: 3 - tool-calls: 1 - skill-invocation: 1 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml deleted file mode 100644 index 223f339b0c1..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/001012.eval.yaml +++ /dev/null @@ -1,82 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - In the Widget project, change the return type of the `exportData` operation from `ExportResult` to `DetailedExportResult` with additional optional properties `format` (string) and `exportedAt` (utcDateTime) only for version `2025-05-04-preview`. - name: 001012-version-operation-return-type-changed - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: Microsoft.Widget/Widget/employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: Microsoft.Widget/Widget/main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: Microsoft.Widget/Widget/package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: Microsoft.Widget/Widget/readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: Microsoft.Widget/Widget/shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: Microsoft.Widget/Widget/tspconfig.yaml - - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json - dest: Microsoft.Widget/Widget/stable/2021-11-01/widget.json - - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json - dest: Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: Microsoft.Widget/Widget/main.tsp - pattern: v2025_05_04_preview - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: 'model DetailedExportResult' - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: 'format\?: string;' - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: 'exportedAt\?: utcDateTime;' - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: '@returnTypeChangedFrom\(Versions\.v2025_05_04_preview, ExportResult\)' - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: 'exportData is ArmResourceActionSync;' -scoring: - weights: - file-matches: 6 - tool-calls: 1 - skill-invocation: 1 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml b/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml deleted file mode 100644 index ccefd24795b..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/001013.eval.yaml +++ /dev/null @@ -1,77 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - In the Widget project, change the type of the `statusCode` property from `string` to `int32` in EmployeeProperties only for version `2025-05-04-preview`. - name: 001013-version-model-property-type-changed - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: Microsoft.Widget/Widget/employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: Microsoft.Widget/Widget/main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: Microsoft.Widget/Widget/package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: Microsoft.Widget/Widget/readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: Microsoft.Widget/Widget/shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: Microsoft.Widget/Widget/tspconfig.yaml - - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json - dest: Microsoft.Widget/Widget/stable/2021-11-01/widget.json - - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json - dest: Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: Microsoft.Widget/Widget/main.tsp - pattern: v2025_05_04_preview - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: '@typeChangedFrom\(Versions\.v2025_05_04_preview, string\)' - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: 'statusCode\?: int32;' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -scoring: - weights: - prompt: 1 - file-matches: 3 - tool-calls: 1 - skill-invocation: 1 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml deleted file mode 100644 index 3104bd51d32..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/002001.eval.yaml +++ /dev/null @@ -1,78 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - change resource Employee to be an extension resource - name: 002001-ARM-change-resource-type - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json - dest: stable/2021-11-01/widget.json - - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json - dest: preview/2024-10-01-preview/widget.json - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: '*.tsp' - pattern: ExtensionResource< - - type: file-not-matches - config: - path: '*.tsp' - pattern: TrackedResource< - - type: file-matches - config: - path: '*.tsp' - pattern: Extension\.Read<|Extension\.CreateOrReplaceAsync<|Extension\.CustomPatch(Sync|Async)<|Extension\.DeleteWithoutOkAsync<|Extension\.ListByTarget< - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'The original separate list-by-resource-group and list-by-subscription operations should be consolidated into a single list operation using the extension list template. A scope-parameterized interface should be defined to allow the extension resource to be scoped to any parent resource.' - model: claude-opus-4.6 -scoring: - weights: - tool-calls: 1 - skill-invocation: 1 - prompt: 1 - file-not-matches: 1 - file-matches: 2 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml deleted file mode 100644 index bc2347f6392..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/002002.eval.yaml +++ /dev/null @@ -1,66 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - add an extension resource named asset - name: 002002-ARM-define-extension-resource - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: '*.tsp' - pattern: model Asset is ExtensionResource - - type: file-matches - config: - path: '*.tsp' - pattern: interface Assets|interface AssetOps - - type: file-matches - config: - path: '*.tsp' - pattern: provisioningState -scoring: - weights: - tool-calls: 1 - skill-invocation: 1 - file-matches: 3 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml deleted file mode 100644 index ea1eda462d1..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/002003.eval.yaml +++ /dev/null @@ -1,58 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - Define a PATCH operation for Employees. It is to update properties of an employee. Ensure the definition meets TypeSpec Azure guidelines. - name: 002003-ARM-define-full-update-operation - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/002003-ARM-define-full-update-operation/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: '*.tsp' - pattern: 'update\s+is\s+ArmCustomPatchSync\s*<\s*Employee\s*,\s*Azure\.ResourceManager\.Foundations\.ResourceUpdateModel\s*<\s*Employee\s*,\s*EmployeeProperties\s*>\s*>\s*;' -scoring: - weights: - tool-calls: 1 - skill-invocation: 1 - file-matches: 1 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml deleted file mode 100644 index 34d569946f8..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/002004.eval.yaml +++ /dev/null @@ -1,79 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - Define a "badge assignment" extension resource. It should be an extension resource that can be attached to an employee. Ensure the definition meets TypeSpec Azure guidelines. - name: 002004-ARM-define-extension-resource - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/002004-ARM-define-extension-resource/badgeAssignment.tsp - dest: badgeAssignment.tsp - - src: ../fixtures/002004-ARM-define-extension-resource/employee.tsp - dest: employee.tsp - - src: ../fixtures/002004-ARM-define-extension-resource/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: badgeAssignment.tsp - pattern: model BadgeAssignment is ExtensionResource - - type: file-matches - config: - path: badgeAssignment.tsp - pattern: '@visibility\(Lifecycle\.Read\)' - - type: file-matches - config: - path: badgeAssignment.tsp - pattern: Extension\.Read<|Extension\.CreateOrReplaceAsync<|Extension\.CustomPatch(Sync|Async)<|Extension\.DeleteWithoutOkAsync< - - type: file-matches - config: - path: badgeAssignment.tsp - pattern: Extension\.ListByTarget< - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -scoring: - weights: - tool-calls: 1 - skill-invocation: 1 - prompt: 1 - file-matches: 4 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml deleted file mode 100644 index 0d62311c28b..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/002005.eval.yaml +++ /dev/null @@ -1,90 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - Define a Azure resource "Employee" under the namespace "Microsoft.Widget" using TypeSpec. Properties: age (int32, optional), city (string, optional), profile (bytes, optional), provisioningState (enum incorporating ResourceProvisioningState, optional, read-only). Ensure the definition meets TypeSpec Azure design guidelines. - name: 002005-ARM-define-the-resource - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/002005-ARM-define-the-resource/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: '*.tsp' - pattern: model Employee is TrackedResource - # Point 3: EmployeeProperties has age, city, profile, and read-only provisioningState - - type: file-matches - config: - path: '*.tsp' - pattern: 'age\?: int32' - - type: file-matches - config: - path: '*.tsp' - pattern: '@visibility\(Lifecycle\.Read\)' - # Point 4: ProvisioningState union includes standard ARM states - - type: file-matches - config: - path: '*.tsp' - pattern: ResourceProvisioningState - # Point 5: CRUD + listByResourceGroup + listBySubscription - - type: file-matches - config: - path: '*.tsp' - pattern: ArmResourceCreateOrReplaceAsync|ArmResourceCreateOrUpdateAsync - - type: file-matches - config: - path: '*.tsp' - pattern: ArmResourceListByParent - - type: file-matches - config: - path: '*.tsp' - pattern: ArmListBySubscription - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify all five aspects: (1) Employee resource definition is written into a TSP file; (2) Employee model uses TrackedResource under Microsoft.Widget namespace; (3) EmployeeProperties includes age, city, profile, and a read-only provisioningState; (4) ProvisioningState is a union type incorporating standard ARM ResourceProvisioningState; (5) Employees interface includes full CRUD operations (get, create, update, delete) plus listByResourceGroup and listBySubscription.' - model: claude-opus-4.6 -scoring: - weights: - tool-calls: 1 - skill-invocation: 1 - prompt: 1 - file-matches: 7 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml deleted file mode 100644 index d5014ddbe0f..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/002006.eval.yaml +++ /dev/null @@ -1,130 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - Create a new "AddressResource" child resource under the parent resource "Employee". Address properties: street 1(optional), street 2(optional), city(optional), state(optional), postal code(optional), country(optional), and a read-only provisioningState(optional). Ensure the definition meets TypeSpec Azure design guidelines. - name: 002006-ARM-define-child-resource - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json - dest: stable/2021-11-01/widget.json - - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json - dest: preview/2024-10-01-preview/widget.json - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: '*.tsp' - pattern: '@parentResource\(Employee\)' - - type: file-matches - config: - path: '*.tsp' - pattern: 'model AddressResource is ProxyResource|model AddressResource is ProxyResource' - - type: file-matches - config: - path: '*.tsp' - pattern: interface Addresses|interface AddressResource - - type: file-matches - config: - path: '*.tsp' - pattern: 'model AddressProperties|model AddressResourceProperties' - - type: file-matches - config: - path: '*.tsp' - pattern: 'street1\?: string;' - - type: file-matches - config: - path: '*.tsp' - pattern: 'street2\?: string;' - - type: file-matches - config: - path: '*.tsp' - pattern: 'city\?: string;' - - type: file-matches - config: - path: '*.tsp' - pattern: 'state\?: string;' - - type: file-matches - config: - path: '*.tsp' - pattern: 'postalCode\?: string;' - - type: file-matches - config: - path: '*.tsp' - pattern: 'country\?: string;' - - type: file-matches - config: - path: '*.tsp' - pattern: '@visibility\(Lifecycle\.Read\)' - - type: file-matches - config: - path: '*.tsp' - pattern: 'provisioningState\?: ProvisioningState;' - # Addresses interface CRUD + list-by-parent - - type: file-matches - config: - path: '*.tsp' - pattern: ArmResourceRead - - type: file-matches - config: - path: '*.tsp' - pattern: ArmResourceCreateOrReplaceAsync|ArmResourceCreateOrReplaceSync - - type: file-matches - config: - path: '*.tsp' - pattern: ArmResourceDeleteWithoutOkAsync|ArmResourceDeleteSync - - type: file-matches - config: - path: '*.tsp' - pattern: ArmResourceListByParent - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'The Addresses interface should include standard CRUD operations (get, create, update, delete) and a list-by-parent operation.' - model: claude-opus-4.6 -scoring: - weights: - tool-calls: 1 - skill-invocation: 1 - prompt: 1 - file-matches: 16 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml deleted file mode 100644 index bb239bb5e4b..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/002007.eval.yaml +++ /dev/null @@ -1,113 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - Add an additional POST action called "/notify" to the standard operations of Employee. Request body: message content (string) and priority (enum with values Low, Medium, High). Response body: notification identifier (string) and status (string). Ensure the definition meets TypeSpec Azure design guidelines. - name: 002007-ARM-define-custom-action - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json - dest: stable/2021-11-01/widget.json - - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json - dest: preview/2024-10-01-preview/widget.json - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - # VP1: Extensible enum for notification priority levels (Low, Medium, High) - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: 'employee.tsp' - pattern: union.*Priority|enum.*Priority - - type: file-matches - config: - path: 'employee.tsp' - pattern: 'Low|"Low"' - - type: file-matches - config: - path: 'employee.tsp' - pattern: 'Medium|"Medium"' - - type: file-matches - config: - path: 'employee.tsp' - pattern: 'High|"High"' - # VP2: Request model with message content (string) and priority fields - - type: file-matches - config: - path: 'employee.tsp' - pattern: model.*Notify.*Request|model.*Notification.*Request - - type: file-matches - config: - path: 'employee.tsp' - pattern: 'message.*:\s*string|content.*:\s*string' - - type: file-matches - config: - path: 'employee.tsp' - pattern: 'priority.*:\s*.*Priority' - # VP3: Response model with notification identifier (string) and status (string) - - type: file-matches - config: - path: 'employee.tsp' - pattern: model.*Notify.*Response|model.*Notification.*Response - - type: file-matches - config: - path: 'employee.tsp' - pattern: 'notificationId.*:\s*string|identifier.*:\s*string' - - type: file-matches - config: - path: 'employee.tsp' - pattern: 'status.*:\s*string' - # VP4: Synchronous notify action on Employees interface - - type: file-matches - config: - path: 'employee.tsp' - pattern: 'notify is ArmResourceActionSync<|notify is ArmResourceActionAsync<|notify is ArmResourceAction<' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -scoring: - weights: - tool-calls: 1 - skill-invocation: 1 - prompt: 1 - file-matches: 11 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml deleted file mode 100644 index 9f17bc7a107..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/002008.eval.yaml +++ /dev/null @@ -1,61 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - add top and skip query parameters to the ListBySubscription operation in interface Employees - name: 002008-ARM-add-parameters - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json - dest: stable/2021-11-01/widget.json - - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json - dest: preview/2024-10-01-preview/widget.json - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: '*.tsp' - pattern: 'listBySubscription\s+is\s+ArmListBySubscription\s*<\s*Employee\s*,\s*\{\s*\.\.\.TopQueryParameter;\s*\.\.\.SkipQueryParameter;\s*\}\s*>|listBySubscription\s+is\s+ArmListBySubscription\s*<\s*Employee\s*,\s*Parameters\s*=\s*ArmTopParameter\s*&\s*ArmSkipParameter\s*>|model\s+EmployeeListBySubscriptionParameters\s+is\s+Azure\.Core\.StandardListQueryParameters\s*;[\s\S]*?listBySubscription\s+is\s+ArmListBySubscription\s*<\s*Employee\s*,\s*EmployeeListBySubscriptionParameters\s*>' -scoring: - weights: - tool-calls: 1 - skill-invocation: 1 - file-matches: 1 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml deleted file mode 100644 index e14ba5a81d1..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/002009.eval.yaml +++ /dev/null @@ -1,65 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - In the Widget project, add a patch operation to an existing ARM resource named 'Employee' - name: 002009-arm-add-patch-operation-to-resource - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/002009-arm-add-patch-operation-to-resource/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: employee.tsp - pattern: 'update\s+is\s+ArmCustomPatchSync\s*<\s*Employee\s*,\s*Azure\.ResourceManager\.Foundations\.ResourceUpdateModel\s*<\s*Employee\s*,\s*EmployeeProperties\s*>\s*>\s*;' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -scoring: - weights: - tool-calls: 1 - skill-invocation: 1 - prompt: 1 - file-matches: 1 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml b/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml deleted file mode 100644 index ebed4a60f67..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/002010.eval.yaml +++ /dev/null @@ -1,69 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - In the Widget project, add a sync operation exportData for employee resource. - name: 002010-arm-action-sync-operation - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/002010-arm-action-sync-operation/employee.tsp - dest: employee.tsp - - src: ../fixtures/002010-arm-action-sync-operation/main.tsp - dest: main.tsp - - src: ../fixtures/002010-arm-action-sync-operation/package.json - dest: package.json - - src: ../fixtures/002010-arm-action-sync-operation/readme.md - dest: readme.md - - src: ../fixtures/002010-arm-action-sync-operation/shared.tsp - dest: shared.tsp - - src: ../fixtures/002010-arm-action-sync-operation/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: employee.tsp - pattern: 'exportData\s+is\s+ArmResourceActionSync' - - type: file-matches - config: - path: employee.tsp - pattern: 'ExportResponse' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -scoring: - weights: - tool-calls: 1 - skill-invocation: 1 - prompt: 1 - file-matches: 2 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml deleted file mode 100644 index 464d49b6d2a..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/003001.eval.yaml +++ /dev/null @@ -1,70 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - Add a move async operation to move employee, operation's request is MoveRequest, response is MoveResponse - name: 003001-arm-action-lro - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/003-long-running-operation-share/employee.tsp - dest: employee.tsp - - src: ../fixtures/003-long-running-operation-share/main.tsp - dest: main.tsp - - src: ../fixtures/003-long-running-operation-share/package.json - dest: package.json - - src: ../fixtures/003-long-running-operation-share/readme.md - dest: readme.md - - src: ../fixtures/003-long-running-operation-share/shared.tsp - dest: shared.tsp - - src: ../fixtures/003-long-running-operation-share/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - # VP1: Accept either inline ArmCombinedLroHeaders or alias-based EmployeeMoveLroHeaders usage. - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: employee.tsp - pattern: 'move\s+is\s+ArmResourceActionAsync\s*<\s*Employee\s*,\s*MoveRequest\s*,\s*MoveResponse\s*,\s*LroHeaders\s*=' - - type: file-matches - config: - path: employee.tsp - pattern: 'ArmCombinedLroHeaders\s*<\s*FinalResult\s*=\s*MoveResponse\s*>' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -scoring: - weights: - tool-calls: 1 - skill-invocation: 1 - prompt: 1 - file-matches: 2 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml deleted file mode 100644 index 60a220e1f3e..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/003002.eval.yaml +++ /dev/null @@ -1,88 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - Modify the LRO createOrUpdate PUT operation in interface Employees so that it returns Azure-AsyncOperation header but NOT Retry-After header in the 201 response. The operation currently uses ArmResourceCreateOrReplaceAsync template. - name: 003002-arm-modify-response - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json - dest: stable/2021-11-01/widget.json - - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json - dest: preview/2024-10-01-preview/widget.json - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - # VP1: ArmAsyncOperationHeader with FinalResult = Employee (alias or inline) - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: employee.tsp - pattern: 'ArmAsyncOperationHeader' - # VP2: createOrUpdate uses ArmResourceCreateOrReplaceAsync with custom LroHeaders - - type: file-matches - config: - path: employee.tsp - pattern: 'createOrUpdate is ArmResourceCreateOrReplaceAsync<' - - type: file-matches - config: - path: employee.tsp - pattern: 'LroHeaders\s*=' - # VP3: Other operations unchanged - - type: file-matches - config: - path: employee.tsp - pattern: 'update is ArmResourcePatchSync' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -scoring: - weights: - tool-calls: 1 - skill-invocation: 1 - prompt: 1 - file-matches: 5 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml deleted file mode 100644 index a30a48400ce..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/004001.eval.yaml +++ /dev/null @@ -1,69 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - use authoring plan to add minLength decorator to set the minLength 1 for resource name parameter of Employee resource - name: 004001-decorate-mgmt-resource-name-parameter - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json - dest: stable/2021-11-01/widget.json - - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json - dest: preview/2024-10-01-preview/widget.json - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: '*.tsp' - pattern: '@@minLength\(Employee\.name,\s*1\)' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -scoring: - weights: - tool-calls: 1 - skill-invocation: 1 - prompt: 1 - file-matches: 2 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml deleted file mode 100644 index 38c8cfebecf..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/004002.eval.yaml +++ /dev/null @@ -1,78 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - I have a property `assets: string[]` in EmployeeProperties. Add @minLength(3) @maxLength(10) constraints for any item of the assets array. - name: 004002-decorate-length-constrains-on-array-item - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/004002-decorate-length-constrains-on-array-item/employee.tsp - dest: employee.tsp - - src: ../fixtures/004002-decorate-length-constrains-on-array-item/main.tsp - dest: main.tsp - - src: ../fixtures/004002-decorate-length-constrains-on-array-item/package.json - dest: package.json - - src: ../fixtures/004002-decorate-length-constrains-on-array-item/readme.md - dest: readme.md - - src: ../fixtures/004002-decorate-length-constrains-on-array-item/shared.tsp - dest: shared.tsp - - src: ../fixtures/004002-decorate-length-constrains-on-array-item/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: employee.tsp - pattern: 'scalar.*extends string' - - type: file-matches - config: - path: employee.tsp - pattern: '@minLength\(3\)' - - type: file-matches - config: - path: employee.tsp - pattern: '@maxLength\(10\)' - # VP2: Assets array uses custom scalar type instead of plain string - - type: file-not-matches - config: - path: employee.tsp - pattern: 'assets:\s*string\[\]' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify asset use the custom scalar type with minLength and maxLength constraints instead of plain string.' - model: claude-opus-4.6 -scoring: - weights: - tool-calls: 1 - skill-invocation: 1 - prompt: 1 - file-matches: 4 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml b/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml deleted file mode 100644 index a1e94e44a3f..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/004003.eval.yaml +++ /dev/null @@ -1,121 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - Remove @operationId and its associated #suppress for no-openapi from all operations. Then restore those operationIds that do not contain underscores or begin with a lowercase letter. - name: 004003-delete-and-restore-operationId-decorator - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/BastionHost.tsp - dest: BastionHost.tsp - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/BgpConnection.tsp - dest: BgpConnection.tsp - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteGateway.tsp - dest: ExpressRouteGateway.tsp - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/ExpressRoutePort.tsp - dest: ExpressRoutePort.tsp - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteProviderPort.tsp - dest: ExpressRouteProviderPort.tsp - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/NetworkInterface.tsp - dest: NetworkInterface.tsp - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/P2SVpnGateway.tsp - dest: P2SVpnGateway.tsp - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/package.json - dest: package.json - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/Route.tsp - dest: Route.tsp - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/VpnServerConfigurationPolicyGroup.tsp - dest: VpnServerConfigurationPolicyGroup.tsp - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/VpnSiteLinkConnection.tsp - dest: VpnSiteLinkConnection.tsp - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - # VP1: Underscore operationIds should be removed (e.g. BgpConnection has only underscore ones) - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-not-matches - config: - path: BgpConnection.tsp - pattern: '@operationId\(' - - type: file-not-matches - config: - path: NetworkInterface.tsp - pattern: '@operationId\(' - - type: file-not-matches - config: - path: ExpressRouteGateway.tsp - pattern: '@operationId\(' - - type: file-not-matches - config: - path: ExpressRoutePort.tsp - pattern: '@operationId\(' - - type: file-not-matches - config: - path: NetworkInterface.tsp - pattern: '@operationId\(' - - type: file-not-matches - config: - path: P2SVpnGateway.tsp - pattern: '@operationId\(' - - type: file-not-matches - config: - path: VpnServerConfigurationPolicyGroup.tsp - pattern: '@operationId\(' - - type: file-not-matches - config: - path: VpnSiteLinkConnection.tsp - pattern: '@operationId\(' - # VP2: Non-standard PascalCase operationIds restored with @operationId - - type: file-matches - config: - path: BastionHost.tsp - pattern: '@operationId\("PutBastionShareableLink"\)' - - type: file-matches - config: - path: BastionHost.tsp - pattern: '@operationId\("GetActiveSessions"\)' - - type: file-matches - config: - path: ExpressRouteProviderPort.tsp - pattern: '@operationId\("ExpressRouteProviderPort"\)' - # VP3: Restored operationIds keep their #suppress comment - - type: file-matches - config: - path: BastionHost.tsp - pattern: '#suppress.*no-openapi|#suppress.*operationId' - # Underscore one in ExpressRouteProviderPort should be removed - - type: file-not-matches - config: - path: ExpressRouteProviderPort.tsp - pattern: '@operationId\("ExpressRouteProviderPortsLocation_List"\)' -scoring: - weights: - tool-calls: 1 - skill-invocation: 1 - file-not-matches: 3 - file-matches: 4 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml b/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml deleted file mode 100644 index a9c30d6b466..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/005001.eval.yaml +++ /dev/null @@ -1,59 +0,0 @@ -name: azure-typespec-author-eval -description: Evaluation suite for azure-typespec-author. -version: "1.0" -type: capability # capability | regression - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use - -# Test cases -stimuli: -- prompt: | - Add suppressions for the warnings produced by "tsp compile .", and set the justification to "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details". - name: 005001-warning-suppress-warning - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/005001-warning-suppress-warning/models.tsp - dest: models.tsp - - src: ../fixtures/005001-warning-suppress-warning/package.json - dest: package.json - - src: ../fixtures/005001-warning-suppress-warning/tspconfig.yaml - dest: tspconfig.yaml - - src: ../fixtures/005001-warning-suppress-warning/main.tsp - dest: main.tsp - - src: ../fixtures/005001-warning-suppress-warning/stubs.tsp - dest: stubs.tsp - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: skill-invocation - config: - required: - - azure-typespec-author - - type: file-matches - config: - path: models.tsp - pattern: '#suppress' - - type: file-matches - config: - path: models.tsp - pattern: 'FIXME: Update justification, follow aka\.ms/tsp/conversion-fix for details' -scoring: - weights: - tool-calls: 1 - skill-invocation: 1 - file-matches: 2 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/evals/all.eval.yaml b/.github/azure-typespec-author/evaluate/evals/all.eval.yaml deleted file mode 100644 index b02a0868e0a..00000000000 --- a/.github/azure-typespec-author/evaluate/evals/all.eval.yaml +++ /dev/null @@ -1,1581 +0,0 @@ -# Evaluate configuration for Azure SDK Typespec Author MCP tool evaluations -# See: https://literate-engine-r3wnl4v.pages.github.io/reference/eval-spec/ -# Keep this combined file synchronized with evals/*.eval.yaml single-case specs. -# Preserve ordering for readability: stimulus uses name first; grader uses type before config. -name: azure-typespec-author-eval -description: Combined evaluation suite for azure-typespec-author (all 29 cases). -version: "1.0" -type: capability - -# Root-level environment -environment: azsdk-mcp - -# Execution configuration -config: - runs: 1 - timeout: 1800 - model: claude-opus-4.6 - executor: copilot-sdk -# Cases are intentionally sorted by case id. -stimuli: -- name: 001001-version-spread-property - prompt: I added `...Azure.ResourceManager.ManagedServiceIdentityProperty;` which updates all my existing API versions and introduces a breaking change. I want to introduce the properties of the spread model '...ManagedServiceIdentityProperty' in API version 2025-05-04-preview only. - constraints: - max_turns: 10 - max_tokens: 50000 - environment: - files: - - src: ../fixtures/001-share-version-new-feature/employee.tsp - dest: employee.tsp - - src: ../fixtures/001-share-version-new-feature/main.tsp - dest: main.tsp - - src: ../fixtures/001-share-version-new-feature/shared.tsp - dest: shared.tsp - - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml - dest: tspconfig.yaml - - src: ../fixtures/001-share-version-new-feature/package.json - dest: package.json - - src: ../fixtures/001-share-version-new-feature/readme.md - dest: readme.md - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: main.tsp - pattern: 2025-05-04-preview - - type: file-matches - config: - path: employee.tsp - pattern: '\.\.\.ManagedServiceIdentityProperty;' - - type: file-matches - config: - path: employee.tsp - pattern: '@@added\(Employee\.identity, (Microsoft\.Widget\.)?Versions\.(v2025_05_04_preview|`2025-05-04-preview`)\);' - - type: prompt - config: - prompt: Verify changes are scoped to this task only, with no unrelated edits beyond introducing preview-only identity via versioning. - model: claude-opus-4.6 - scoring: scale_1_5 - threshold: 1 -- name: 001002-version-default-value - prompt: | - add a default value `21` for property age in model EmployeeProperties only for a new api version 2025-11-01 - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/001002-version-default-value/employee.tsp - dest: employee.tsp - - src: ../fixtures/001002-version-default-value/main.tsp - dest: main.tsp - - src: ../fixtures/001002-version-default-value/package.json - dest: package.json - - src: ../fixtures/001002-version-default-value/readme.md - dest: readme.md - - src: ../fixtures/001002-version-default-value/shared.tsp - dest: shared.tsp - - src: ../fixtures/001002-version-default-value/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: employee.tsp - pattern: '@removed\(Versions\.v2025_11_01\)' - - type: file-matches - config: - path: employee.tsp - pattern: '@renamedFrom\(Versions\.v2025_11_01, "age"\)' - - type: file-matches - config: - path: employee.tsp - pattern: '@added\(Versions\.v2025_11_01\)' - - type: file-matches - config: - path: employee.tsp - pattern: 'age\?: int32 = 21;' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -- name: 001003-version-required-to-optional - prompt: | - change the property age of EmployeeProperties from required to optional for api version 2025-05-04-preview - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/001-share-version-new-feature/employee.tsp - dest: employee.tsp - - src: ../fixtures/001-share-version-new-feature/main.tsp - dest: main.tsp - - src: ../fixtures/001-share-version-new-feature/package.json - dest: package.json - - src: ../fixtures/001-share-version-new-feature/readme.md - dest: readme.md - - src: ../fixtures/001-share-version-new-feature/shared.tsp - dest: shared.tsp - - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: main.tsp - pattern: 2025-05-04-preview - - type: file-matches - config: - path: employee.tsp - pattern: '@madeOptional' - - type: file-matches - config: - path: employee.tsp - pattern: 2025-05-04-preview|v2025_05_04_preview - - type: prompt - config: - scoring: scale_1_5 - threshold: 1 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -- name: 001004-version-property-decorator - prompt: | - change the visibility of property 'provisioningState' from Lifecycle.Read to Lifecycle.Read and Lifecycle.Create in version 2025-05-04-preview only - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/001-share-version-new-feature/employee.tsp - dest: employee.tsp - - src: ../fixtures/001-share-version-new-feature/main.tsp - dest: main.tsp - - src: ../fixtures/001-share-version-new-feature/package.json - dest: package.json - - src: ../fixtures/001-share-version-new-feature/readme.md - dest: readme.md - - src: ../fixtures/001-share-version-new-feature/shared.tsp - dest: shared.tsp - - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: employee.tsp - pattern: Lifecycle\.Read, Lifecycle\.Create - - type: file-matches - config: - path: main.tsp - pattern: 2025-05-04-preview - - type: prompt - config: - scoring: scale_1_5 - threshold: 1 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -- name: 001005-version-add-preview-after-preview - prompt: | - Add a new preview version `2025-05-04-preview` to my service widget resource manager. Exclude Feature: `age` property with default value 21. Carry other features. - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/001005-version-add-preview-after-preview\employee.tsp - dest: employee.tsp - - src: ../fixtures/001005-version-add-preview-after-preview\main.tsp - dest: main.tsp - - src: ../fixtures/001005-version-add-preview-after-preview\shared.tsp - dest: shared.tsp - - src: ../fixtures/001005-version-add-preview-after-preview\tspconfig.yaml - dest: tspconfig.yaml - - src: ../fixtures/001005-version-add-preview-after-preview\package.json - dest: package.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_CreateOrUpdate_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Delete_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Get_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_ListByResourceGroup_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_ListBySubscription_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Update_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Operations_List_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Operations_List_MinimumSet_Gen.json - dest: examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json - dest: examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListBySubscription_MinimumSet_Gen.json - dest: examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Operations_List_MaximumSet_Gen.json - dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Operations_List_MinimumSet_Gen.json - dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-exists - config: - path: examples/2025-05-04-preview/Employees_Get_MaximumSet_Gen.json - - type: file-not-exists - config: - path: examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json - - type: file-matches - config: - path: main.tsp - pattern: 2025-05-04-preview - - type: file-not-matches - config: - path: main.tsp - pattern: 2024-10-01-preview - - type: file-not-matches - config: - path: employee.tsp - pattern: oldAge - - type: file-matches - config: - path: employee.tsp - pattern: '@added\(Versions\.v2025_05_04_preview\)\s+workLocation\?: WorkLocation;' - - type: file-not-matches - config: - path: employee.tsp - pattern: v2024_10_01_preview - - type: file-matches - config: - path: employee.tsp - pattern: 'age\?: int32;' - - type: file-matches - config: - path: employee.tsp - pattern: '@typeChangedFrom\(Versions\.v2025_05_04_preview, string\[\]\)' -- name: 001006-version-add-preview-after-stable - prompt: | - Add a new preview version `2025-05-04-preview` to my service widget resource manager. Carry over all the features from the latest stable version - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/001006-version-add-preview-after-stable\employee.tsp - dest: employee.tsp - - src: ../fixtures/001006-version-add-preview-after-stable\main.tsp - dest: main.tsp - - src: ../fixtures/001006-version-add-preview-after-stable\shared.tsp - dest: shared.tsp - - src: ../fixtures/001006-version-add-preview-after-stable\tspconfig.yaml - dest: tspconfig.yaml - - src: ../fixtures/001006-version-add-preview-after-stable\package.json - dest: package.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Operations_List_MaximumSet_Gen.json - dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Operations_List_MinimumSet_Gen.json - dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_Delete_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_Get_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json - dest: examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_ListBySubscription_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_ListBySubscription_MinimumSet_Gen.json - dest: examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_Update_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Operations_List_MaximumSet_Gen.json - dest: examples/2024-10-01/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Operations_List_MinimumSet_Gen.json - dest: examples/2024-10-01/Operations_List_MinimumSet_Gen.json - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-exists - config: - path: examples/2025-05-04-preview/Employees_Get_MaximumSet_Gen.json - - type: file-exists - config: - path: examples/2024-10-01/Employees_Get_MaximumSet_Gen.json - - type: file-matches - config: - path: main.tsp - pattern: 2025-05-04-preview - - type: file-matches - config: - path: main.tsp - pattern: 2024-10-01 - - type: prompt - config: - scoring: scale_1_5 - threshold: 1 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -- name: 001007-version-add-stable-after-preview - prompt: | - I want to add a new stable version `2025-01-01`. Exclude `workLocation` property and `WorkLocation` model. Carry other features. - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/001007-version-add-stable-after-preview\employee.tsp - dest: employee.tsp - - src: ../fixtures/001007-version-add-stable-after-preview\main.tsp - dest: main.tsp - - src: ../fixtures/001007-version-add-stable-after-preview\shared.tsp - dest: shared.tsp - - src: ../fixtures/001007-version-add-stable-after-preview\tspconfig.yaml - dest: tspconfig.yaml - - src: ../fixtures/001007-version-add-stable-after-preview\package.json - dest: package.json - - src: ../fixtures/001007-version-add-stable-after-preview\readme.md - dest: readme.md - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json - dest: examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_ListBySubscription_MinimumSet_Gen.json - dest: examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Operations_List_MaximumSet_Gen.json - dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Operations_List_MinimumSet_Gen.json - dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_CreateOrUpdate_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_Delete_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_Get_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_ListByResourceGroup_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_ListByResourceGroup_MinimumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_ListBySubscription_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_ListBySubscription_MinimumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_Update_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Operations_List_MaximumSet_Gen.json - dest: examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Operations_List_MinimumSet_Gen.json - dest: examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-exists - config: - path: examples/2025-01-01/Employees_Get_MaximumSet_Gen.json - - type: file-not-exists - config: - path: examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json - - type: file-matches - config: - path: main.tsp - pattern: 2025-01-01 - - type: file-not-matches - config: - path: main.tsp - pattern: 2024-10-01-preview - - type: file-not-matches - config: - path: employee.tsp - pattern: 'workLocation\?: WorkLocation;' - - type: file-matches - config: - path: employee.tsp - pattern: '@removed\(Versions\.v2025_01_01\)\s*@renamedFrom\(Versions\.v2025_01_01, "age"\)\s*oldAge\?: int32;' - - type: file-matches - config: - path: employee.tsp - pattern: '@added\(Versions\.v2025_01_01\)\s*age\?: int32 = 21;' - - type: file-not-matches - config: - path: employee.tsp - pattern: v2024_10_01_preview -- name: 001008-version-add-stable-after-stable - prompt: | - Add a new stable version `2025-01-01` to my service. Carry over changes. - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/001008-version-add-stable-after-stable\employee.tsp - dest: employee.tsp - - src: ../fixtures/001008-version-add-stable-after-stable\main.tsp - dest: main.tsp - - src: ../fixtures/001008-version-add-stable-after-stable\shared.tsp - dest: shared.tsp - - src: ../fixtures/001008-version-add-stable-after-stable\tspconfig.yaml - dest: tspconfig.yaml - - src: ../fixtures/001008-version-add-stable-after-stable\package.json - dest: package.json - - src: ../fixtures/001008-version-add-stable-after-stable\readme.md - dest: readme.md - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json - dest: examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_ListBySubscription_MinimumSet_Gen.json - dest: examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json - dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Operations_List_MaximumSet_Gen.json - dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Operations_List_MinimumSet_Gen.json - dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_Delete_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_Get_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json - dest: examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_ListBySubscription_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_ListBySubscription_MinimumSet_Gen.json - dest: examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_Update_MaximumSet_Gen.json - dest: examples/2024-10-01/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Operations_List_MaximumSet_Gen.json - dest: examples/2024-10-01/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Operations_List_MinimumSet_Gen.json - dest: examples/2024-10-01/Operations_List_MinimumSet_Gen.json - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-exists - config: - path: examples/2024-10-01/Employees_Get_MaximumSet_Gen.json - - type: file-exists - config: - path: examples/2025-01-01/Employees_Get_MaximumSet_Gen.json - - type: file-matches - config: - path: main.tsp - pattern: 2021-10-01 - - type: file-matches - config: - path: main.tsp - pattern: 2024-10-01 - - type: file-matches - config: - path: main.tsp - pattern: 2025-01-01 - - type: prompt - config: - scoring: scale_1_5 - threshold: 1 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -- name: 001009-version-model-property-required - prompt: | - In the Widget project, make the `email` property required in EmployeeProperties only for version `2025-05-04-preview`. - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/001-share-version-new-feature/employee.tsp - dest: Microsoft.Widget/Widget/employee.tsp - - src: ../fixtures/001-share-version-new-feature/main.tsp - dest: Microsoft.Widget/Widget/main.tsp - - src: ../fixtures/001-share-version-new-feature/package.json - dest: Microsoft.Widget/Widget/package.json - - src: ../fixtures/001-share-version-new-feature/readme.md - dest: Microsoft.Widget/Widget/readme.md - - src: ../fixtures/001-share-version-new-feature/shared.tsp - dest: Microsoft.Widget/Widget/shared.tsp - - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml - dest: Microsoft.Widget/Widget/tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: Microsoft.Widget/Widget/main.tsp - pattern: v2025_05_04_preview - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: '@madeRequired\(Versions\.v2025_05_04_preview\)' - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: 'email: string;' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1.0 - prompt: 'Verify email property made required only in new version, only scoped edits made. Verify compile the project and fix any compilation errors if present.' - model: claude-opus-4.6 -- name: 001010-version-model-property-removed - prompt: | - In the Widget project, remove the `department` property from EmployeeProperties only for version `2025-05-04-preview`. - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/001-share-version-new-feature/employee.tsp - dest: Microsoft.Widget/Widget/employee.tsp - - src: ../fixtures/001-share-version-new-feature/main.tsp - dest: Microsoft.Widget/Widget/main.tsp - - src: ../fixtures/001-share-version-new-feature/package.json - dest: Microsoft.Widget/Widget/package.json - - src: ../fixtures/001-share-version-new-feature/readme.md - dest: Microsoft.Widget/Widget/readme.md - - src: ../fixtures/001-share-version-new-feature/shared.tsp - dest: Microsoft.Widget/Widget/shared.tsp - - src: ../fixtures/001-share-version-new-feature/tspconfig.yaml - dest: Microsoft.Widget/Widget/tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: Microsoft.Widget/Widget/main.tsp - pattern: v2025_05_04_preview - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: '@removed\(Versions\.v2025_05_04_preview\)' - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: 'department\?: string;' -- name: 001011-version-model-property-renamed - prompt: | - In the Widget project, rename the `age` property to `employeeAge` in EmployeeProperties only for version `2025-05-04-preview`. - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: Microsoft.Widget/Widget/employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: Microsoft.Widget/Widget/main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: Microsoft.Widget/Widget/package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: Microsoft.Widget/Widget/readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: Microsoft.Widget/Widget/shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: Microsoft.Widget/Widget/tspconfig.yaml - - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json - dest: Microsoft.Widget/Widget/stable/2021-11-01/widget.json - - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json - dest: Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: Microsoft.Widget/Widget/main.tsp - pattern: v2025_05_04_preview - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: '@renamedFrom\(Versions\.v2025_05_04_preview, "age"\)' - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: 'employeeAge\?: int32;' -- name: 001012-version-operation-return-type-changed - prompt: | - In the Widget project, change the return type of the `exportData` operation from `ExportResult` to `DetailedExportResult` with additional optional properties `format` (string) and `exportedAt` (utcDateTime) only for version `2025-05-04-preview`. - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: Microsoft.Widget/Widget/employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: Microsoft.Widget/Widget/main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: Microsoft.Widget/Widget/package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: Microsoft.Widget/Widget/readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: Microsoft.Widget/Widget/shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: Microsoft.Widget/Widget/tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: Microsoft.Widget/Widget/main.tsp - pattern: v2025_05_04_preview - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: model DetailedExportResult - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: 'format\?: string;' - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: 'exportedAt\?: utcDateTime;' - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: '@returnTypeChangedFrom\(Versions\.v2025_05_04_preview, ExportResult\)' - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: exportData is ArmResourceActionSync; -- name: 001013-version-model-property-type-changed - prompt: | - In the Widget project, change the type of the `statusCode` property from `string` to `int32` in EmployeeProperties only for version `2025-05-04-preview`. - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: Microsoft.Widget/Widget/employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: Microsoft.Widget/Widget/main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: Microsoft.Widget/Widget/package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: Microsoft.Widget/Widget/readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: Microsoft.Widget/Widget/shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: Microsoft.Widget/Widget/tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: Microsoft.Widget/Widget/main.tsp - pattern: v2025_05_04_preview - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: '@typeChangedFrom\(Versions\.v2025_05_04_preview, string\)' - - type: file-matches - config: - path: Microsoft.Widget/Widget/employee.tsp - pattern: 'statusCode\?: int32;' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -- name: 002001-ARM-change-resource-type - prompt: | - change resource Employee to be an extension resource - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: '*.tsp' - pattern: ExtensionResource< - - type: file-not-matches - config: - path: '*.tsp' - pattern: TrackedResource< - - type: file-matches - config: - path: '*.tsp' - pattern: Extension\.Read<|Extension\.CreateOrReplaceAsync<|Extension\.CustomPatch(Sync|Async)<|Extension\.DeleteWithoutOkAsync<|Extension\.ListByTarget< - - type: prompt - config: - scoring: scale_1_5 - threshold: 1 - prompt: The original separate list-by-resource-group and list-by-subscription operations should be consolidated into a single list operation using the extension list template. A scope-parameterized interface should be defined to allow the extension resource to be scoped to any parent resource. - model: claude-opus-4.6 -- name: 002002-ARM-define-extension-resource - prompt: | - add an extension resource named asset - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: '*.tsp' - pattern: model Asset is ExtensionResource - - type: file-matches - config: - path: '*.tsp' - pattern: interface Assets|interface AssetOps - - type: file-matches - config: - path: '*.tsp' - pattern: provisioningState -- name: 002003-ARM-define-full-update-operation - prompt: | - Define a PATCH operation for Employees. It is to update properties of an employee. Ensure the definition meets TypeSpec Azure guidelines. - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/002003-ARM-define-full-update-operation/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: '*.tsp' - pattern: update\s+is\s+ArmCustomPatchSync\s*<\s*Employee\s*,\s*Azure\.ResourceManager\.Foundations\.ResourceUpdateModel\s*<\s*Employee\s*,\s*EmployeeProperties\s*>\s*>\s*; -- name: 002004-ARM-define-extension-resource - prompt: | - Define a "badge assignment" extension resource. It should be an extension resource that can be attached to an employee. Ensure the definition meets TypeSpec Azure guidelines. - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/002004-ARM-define-extension-resource/badgeAssignment.tsp - dest: badgeAssignment.tsp - - src: ../fixtures/002004-ARM-define-extension-resource/employee.tsp - dest: employee.tsp - - src: ../fixtures/002004-ARM-define-extension-resource/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: badgeAssignment.tsp - pattern: model BadgeAssignment is ExtensionResource - - type: file-matches - config: - path: badgeAssignment.tsp - pattern: '@visibility\(Lifecycle\.Read\)' - - type: file-matches - config: - path: badgeAssignment.tsp - pattern: Extension\.Read<|Extension\.CreateOrReplaceAsync<|Extension\.CustomPatch(Sync|Async)<|Extension\.DeleteWithoutOkAsync< - - type: file-matches - config: - path: badgeAssignment.tsp - pattern: Extension\.ListByTarget< - - type: prompt - config: - scoring: scale_1_5 - threshold: 1 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -- name: 002005-ARM-define-the-resource - prompt: | - Define a Azure resource "Employee" under the namespace "Microsoft.Widget" using TypeSpec. Properties: age (int32, optional), city (string, optional), profile (bytes, optional), provisioningState (enum incorporating ResourceProvisioningState, optional, read-only). Ensure the definition meets TypeSpec Azure design guidelines. - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/002005-ARM-define-the-resource/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: '*.tsp' - pattern: model Employee is TrackedResource - - type: file-matches - config: - path: '*.tsp' - pattern: 'age\?: int32' - - type: file-matches - config: - path: '*.tsp' - pattern: '@visibility\(Lifecycle\.Read\)' - - type: file-matches - config: - path: '*.tsp' - pattern: ResourceProvisioningState - - type: file-matches - config: - path: '*.tsp' - pattern: ArmResourceCreateOrReplaceAsync|ArmResourceCreateOrUpdateAsync - - type: file-matches - config: - path: '*.tsp' - pattern: ArmResourceListByParent - - type: file-matches - config: - path: '*.tsp' - pattern: ArmListBySubscription - - type: prompt - config: - scoring: scale_1_5 - threshold: 1 - prompt: 'Verify all five aspects: (1) Employee resource definition is written into a TSP file; (2) Employee model uses TrackedResource under Microsoft.Widget namespace; (3) EmployeeProperties includes age, city, profile, and a read-only provisioningState; (4) ProvisioningState is a union type incorporating standard ARM ResourceProvisioningState; (5) Employees interface includes full CRUD operations (get, create, update, delete) plus listByResourceGroup and listBySubscription.' - model: claude-opus-4.6 -- name: 002006-ARM-define-child-resource - prompt: | - Create a new "AddressResource" child resource under the parent resource "Employee". Address properties: street 1(optional), street 2(optional), city(optional), state(optional), postal code(optional), country(optional), and a read-only provisioningState(optional). Ensure the definition meets TypeSpec Azure design guidelines. - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: '*.tsp' - pattern: '@parentResource\(Employee\)' - - type: file-matches - config: - path: '*.tsp' - pattern: model AddressResource is ProxyResource|model AddressResource is ProxyResource - - type: file-matches - config: - path: '*.tsp' - pattern: interface Addresses|interface AddressResource - - type: file-matches - config: - path: '*.tsp' - pattern: model AddressProperties|model AddressResourceProperties - - type: file-matches - config: - path: '*.tsp' - pattern: 'street1\?: string;' - - type: file-matches - config: - path: '*.tsp' - pattern: 'street2\?: string;' - - type: file-matches - config: - path: '*.tsp' - pattern: 'city\?: string;' - - type: file-matches - config: - path: '*.tsp' - pattern: 'state\?: string;' - - type: file-matches - config: - path: '*.tsp' - pattern: 'postalCode\?: string;' - - type: file-matches - config: - path: '*.tsp' - pattern: 'country\?: string;' - - type: file-matches - config: - path: '*.tsp' - pattern: '@visibility\(Lifecycle\.Read\)' - - type: file-matches - config: - path: '*.tsp' - pattern: 'provisioningState\?: ProvisioningState;' - - type: file-matches - config: - path: '*.tsp' - pattern: ArmResourceRead - - type: file-matches - config: - path: '*.tsp' - pattern: ArmResourceCreateOrReplaceAsync|ArmResourceCreateOrReplaceSync - - type: file-matches - config: - path: '*.tsp' - pattern: ArmResourceDeleteWithoutOkAsync|ArmResourceDeleteSync - - type: file-matches - config: - path: '*.tsp' - pattern: ArmResourceListByParent - - type: prompt - config: - scoring: scale_1_5 - threshold: 1 - prompt: The Addresses interface should include standard CRUD operations (get, create, update, delete) and a list-by-parent operation. - model: claude-opus-4.6 -- name: 002007-ARM-define-custom-action - prompt: | - Add an additional POST action called "/notify" to the standard operations of Employee. Request body: message content (string) and priority (enum with values Low, Medium, High). Response body: notification identifier (string) and status (string). Ensure the definition meets TypeSpec Azure design guidelines. - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: employee.tsp - pattern: union.*Priority|enum.*Priority - - type: file-matches - config: - path: employee.tsp - pattern: Low|"Low" - - type: file-matches - config: - path: employee.tsp - pattern: Medium|"Medium" - - type: file-matches - config: - path: employee.tsp - pattern: High|"High" - - type: file-matches - config: - path: employee.tsp - pattern: model.*Notify.*Request|model.*Notification.*Request - - type: file-matches - config: - path: employee.tsp - pattern: message.*:\s*string|content.*:\s*string - - type: file-matches - config: - path: employee.tsp - pattern: priority.*:\s*.*Priority - - type: file-matches - config: - path: employee.tsp - pattern: model.*Notify.*Response|model.*Notification.*Response - - type: file-matches - config: - path: employee.tsp - pattern: notificationId.*:\s*string|identifier.*:\s*string - - type: file-matches - config: - path: employee.tsp - pattern: status.*:\s*string - - type: file-matches - config: - path: employee.tsp - pattern: notify is ArmResourceActionSync<|notify is ArmResourceActionAsync<|notify is ArmResourceAction< - - type: prompt - config: - scoring: scale_1_5 - threshold: 1 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -- name: 002008-ARM-add-parameters - prompt: | - add top and skip query parameters to the ListBySubscription operation in interface Employees - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json - dest: stable/2021-11-01/widget.json - - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json - dest: preview/2024-10-01-preview/widget.json - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: '*.tsp' - pattern: listBySubscription\s+is\s+ArmListBySubscription\s*<\s*Employee\s*,\s*\{\s*\.\.\.TopQueryParameter;\s*\.\.\.SkipQueryParameter;\s*\}\s*>|listBySubscription\s+is\s+ArmListBySubscription\s*<\s*Employee\s*,\s*Parameters\s*=\s*ArmTopParameter\s*&\s*ArmSkipParameter\s*>|model\s+EmployeeListBySubscriptionParameters\s+is\s+Azure\.Core\.StandardListQueryParameters\s*;[\s\S]*?listBySubscription\s+is\s+ArmListBySubscription\s*<\s*Employee\s*,\s*EmployeeListBySubscriptionParameters\s*> -- name: 002009-arm-add-patch-operation-to-resource - prompt: | - In the Widget project, add a patch operation to an existing ARM resource named 'Employee' - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/002009-arm-add-patch-operation-to-resource/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: employee.tsp - pattern: update\s+is\s+ArmCustomPatchSync\s*<\s*Employee\s*,\s*Azure\.ResourceManager\.Foundations\.ResourceUpdateModel\s*<\s*Employee\s*,\s*EmployeeProperties\s*>\s*>\s*; - - type: prompt - config: - scoring: scale_1_5 - threshold: 1 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -- name: 002010-arm-action-sync-operation - prompt: | - In the Widget project, add a sync operation exportData for employee resource. - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/002010-arm-action-sync-operation/employee.tsp - dest: employee.tsp - - src: ../fixtures/002010-arm-action-sync-operation/main.tsp - dest: main.tsp - - src: ../fixtures/002010-arm-action-sync-operation/package.json - dest: package.json - - src: ../fixtures/002010-arm-action-sync-operation/readme.md - dest: readme.md - - src: ../fixtures/002010-arm-action-sync-operation/shared.tsp - dest: shared.tsp - - src: ../fixtures/002010-arm-action-sync-operation/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: employee.tsp - pattern: 'exportData\s+is\s+ArmResourceActionSync' - - type: file-matches - config: - path: employee.tsp - pattern: 'ExportResponse' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -- name: 003001-arm-action-lro - prompt: | - Add a move async operation to move employee, operation's request is MoveRequest, response is MoveResponse - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/003-long-running-operation-share/employee.tsp - dest: employee.tsp - - src: ../fixtures/003-long-running-operation-share/main.tsp - dest: main.tsp - - src: ../fixtures/003-long-running-operation-share/package.json - dest: package.json - - src: ../fixtures/003-long-running-operation-share/readme.md - dest: readme.md - - src: ../fixtures/003-long-running-operation-share/shared.tsp - dest: shared.tsp - - src: ../fixtures/003-long-running-operation-share/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: employee.tsp - pattern: 'move\s+is\s+ArmResourceActionAsync\s*<\s*Employee\s*,\s*MoveRequest\s*,\s*MoveResponse\s*,\s*LroHeaders\s*=' - - type: file-matches - config: - path: employee.tsp - pattern: 'ArmCombinedLroHeaders\s*<\s*FinalResult\s*=\s*MoveResponse\s*>' - - type: prompt - config: - scoring: scale_1_5 - threshold: 1 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -- name: 003002-arm-modify-response - prompt: | - Modify the LRO createOrUpdate PUT operation in interface Employees so that it returns Azure-AsyncOperation header but NOT Retry-After header in the 201 response. The operation currently uses ArmResourceCreateOrReplaceAsync template. - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: employee.tsp - pattern: ArmAsyncOperationHeader - - type: file-matches - config: - path: employee.tsp - pattern: createOrUpdate is ArmResourceCreateOrReplaceAsync< - - type: file-matches - config: - path: employee.tsp - pattern: LroHeaders\s*= - - type: file-matches - config: - path: employee.tsp - pattern: update is ArmResourcePatchSync - - type: prompt - config: - scoring: scale_1_5 - threshold: 1 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -- name: 004001-decorate-mgmt-resource-name-parameter - prompt: | - use authoring plan to add minLength decorator to set the minLength 1 for resource name parameter of Employee resource - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/shared.tsp - dest: shared.tsp - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: '*.tsp' - pattern: '@minLength\(1\)|@@minLength\(Employee\.name,\s*1\)' - - type: file-matches - config: - path: '*.tsp' - pattern: ResourceNameParameter|@key\("employeeName"\) - - type: prompt - config: - scoring: scale_1_5 - threshold: 1 - prompt: 'Verify change scope and quality only: no unrelated edits, and the implemented result is semantically consistent with the task intent.' - model: claude-opus-4.6 -- name: 004002-decorate-length-constrains-on-array-item - prompt: | - I have a property `assets: string[]` in EmployeeProperties. Add @minLength(3) @maxLength(10) constraints for any item of the assets array. - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/Microsoft.Widget/Widget/employee.tsp - dest: employee.tsp - - src: ../fixtures/Microsoft.Widget/Widget/main.tsp - dest: main.tsp - - src: ../fixtures/Microsoft.Widget/Widget/package.json - dest: package.json - - src: ../fixtures/Microsoft.Widget/Widget/readme.md - dest: readme.md - - src: ../fixtures/Microsoft.Widget/Widget/tspconfig.yaml - dest: tspconfig.yaml - - src: ../fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json - dest: stable/2021-11-01/widget.json - - src: ../fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json - dest: preview/2024-10-01-preview/widget.json - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_typespec_generate_authoring_plan - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: employee.tsp - pattern: scalar.*extends string - - type: file-matches - config: - path: employee.tsp - pattern: '@minLength\(3\)' - - type: file-matches - config: - path: employee.tsp - pattern: '@maxLength\(10\)' - - type: file-not-matches - config: - path: employee.tsp - pattern: assets:\s*string\[\] - - type: prompt - config: - scoring: scale_1_5 - threshold: 1 - prompt: Verify asset use the custom scalar type with minLength and maxLength constraints instead of plain string. - model: claude-opus-4.6 -- name: 004003-delete-and-restore-operationId-decorator - prompt: | - Remove @operationId and its associated #suppress for no-openapi from all operations. Then restore those operationIds that do not contain underscores or begin with a lowercase letter. - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/BastionHost.tsp - dest: BastionHost.tsp - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/BgpConnection.tsp - dest: BgpConnection.tsp - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteGateway.tsp - dest: ExpressRouteGateway.tsp - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/ExpressRoutePort.tsp - dest: ExpressRoutePort.tsp - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteProviderPort.tsp - dest: ExpressRouteProviderPort.tsp - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/NetworkInterface.tsp - dest: NetworkInterface.tsp - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/P2SVpnGateway.tsp - dest: P2SVpnGateway.tsp - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/package.json - dest: package.json - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/Route.tsp - dest: Route.tsp - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/VpnServerConfigurationPolicyGroup.tsp - dest: VpnServerConfigurationPolicyGroup.tsp - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/VpnSiteLinkConnection.tsp - dest: VpnSiteLinkConnection.tsp - - src: ../fixtures/004003-delete-and-restore-operationId-decorator/tspconfig.yaml - dest: tspconfig.yaml - graders: - - type: tool-calls - config: - required: edit - - type: file-not-matches - config: - path: BgpConnection.tsp - pattern: '@operationId\(' - - type: file-not-matches - config: - path: NetworkInterface.tsp - pattern: '@operationId\(' - - type: file-matches - config: - path: BastionHost.tsp - pattern: '@operationId\("PutBastionShareableLink"\)' - - type: file-matches - config: - path: BastionHost.tsp - pattern: '@operationId\("GetActiveSessions"\)' - - type: file-matches - config: - path: ExpressRouteProviderPort.tsp - pattern: '@operationId\("ExpressRouteProviderPort"\)' - - type: file-matches - config: - path: BastionHost.tsp - pattern: '#suppress.*no-openapi|#suppress.*operationId' - - type: file-not-matches - config: - path: ExpressRouteProviderPort.tsp - pattern: '@operationId\("ExpressRouteProviderPortsLocation_List"\)' -- name: 005001-warning-suppress-warning - prompt: | - Add suppressions for the warnings produced by "tsp compile .", and set the justification to "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details". - constraints: - max_turns: 10 - max_tokens: 5000 - environment: - files: - - src: ../fixtures/005001-warning-suppress-warning/models.tsp - dest: models.tsp - - src: ../fixtures/005001-warning-suppress-warning/package.json - dest: package.json - - src: ../fixtures/005001-warning-suppress-warning/tspconfig.yaml - dest: tspconfig.yaml - - src: ../fixtures/005001-warning-suppress-warning/main.tsp - dest: main.tsp - - src: ../fixtures/005001-warning-suppress-warning/stubs.tsp - dest: stubs.tsp - graders: - - type: tool-calls - config: - required: - - edit - - azure-sdk-mcp-azsdk_run_typespec_validation - - type: file-matches - config: - path: models.tsp - pattern: '#suppress' - - type: file-matches - config: - path: models.tsp - pattern: 'FIXME: Update justification, follow aka\.ms/tsp/conversion-fix for details' -scoring: - weights: - file-matches: 1 - file-not-matches: 1 - file-exists: 1 - file-not-exists: 1 - tool-calls: 1 - threshold: 1.0 diff --git a/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/employee.tsp deleted file mode 100644 index 67516a5d7b9..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/employee.tsp +++ /dev/null @@ -1,110 +0,0 @@ -import "@typespec/rest"; -import "@typespec/http"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; - -using TypeSpec.Rest; -using TypeSpec.Http; -using TypeSpec.Versioning; -using Azure.Core; -using Azure.ResourceManager; - -namespace Microsoft.Widget; - -/** Employee resource */ -model Employee is TrackedResource { - ...ResourceNameParameter; - ...ManagedServiceIdentityProperty; -} - -/** Employee properties */ -model EmployeeProperties { - /** Age of employee */ - age?: int32; - - /** City of employee */ - city?: string; - - /** Email of employee */ - email?: string; - - /** Department of employee */ - department?: string; - - /** Status code of employee */ - statusCode?: string; - - /** Profile of employee */ - @encode("base64url") - profile?: bytes; - - /** The status of the last operation. */ - @visibility(Lifecycle.Read) - provisioningState?: ProvisioningState; -} - -/** The provisioning state of a resource. */ -@lroStatus -union ProvisioningState { - ResourceProvisioningState, - - /** The resource is being provisioned */ - Provisioning: "Provisioning", - - /** The resource is updating */ - Updating: "Updating", - - /** The resource is being deleted */ - Deleting: "Deleting", - - /** The resource create request has been accepted */ - Accepted: "Accepted", - - string, -} - -/** Employee move request */ -model MoveRequest { - /** The moving from location */ - from: string; - - /** The moving to location */ - to: string; -} - -/** Employee move response */ -model MoveResponse { - /** The status of the move */ - movingStatus: string; -} - -/** Export result model */ -model ExportResult { - /** Exported data */ - data?: string; -} - -@armResourceOperations -interface Employees { - get is ArmResourceRead; - createOrUpdate is ArmResourceCreateOrReplaceAsync; - update is ArmCustomPatchSync< - Employee, - Azure.ResourceManager.Foundations.ResourceUpdateModel< - Employee, - EmployeeProperties - > - >; - delete is ArmResourceDeleteWithoutOkAsync; - listByResourceGroup is ArmResourceListByParent; - listBySubscription is ArmListBySubscription; - - /** Export employee data */ - exportData is ArmResourceActionSync; - - /** A sample resource action that move employee to different location */ - move is ArmResourceActionSync; - - /** A sample HEAD operation to check resource existence */ - checkExistence is ArmResourceCheckExistence; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/main.tsp deleted file mode 100644 index 4478b277d67..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/main.tsp +++ /dev/null @@ -1,32 +0,0 @@ -import "@typespec/http"; -import "@typespec/rest"; -import "@typespec/versioning"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "./employee.tsp"; - -using TypeSpec.Http; -using TypeSpec.Rest; -using TypeSpec.Versioning; -using Azure.Core; -using Azure.ResourceManager; - -/** Microsoft.Widget Resource Provider management API. */ -@armProviderNamespace -@service(#{ title: "Widget" }) -@versioned(Microsoft.Widget.Versions) -namespace Microsoft.Widget; - -/** The available API versions. */ -enum Versions { - /** 2021-11-01 version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - v2021_11_01: "2021-11-01", - - /** 2025-05-04-preview version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - @previewVersion - v2025_05_04_preview: "2025-05-04-preview", -} - -interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/package.json b/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/package.json deleted file mode 100644 index 9b0af8bcd6e..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "azure-rest-api-specs", - "devDependencies": { - "@azure-tools/typespec-autorest": "0.66.0", - "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-resource-manager": "0.66.0", - "@azure-tools/typespec-azure-rulesets": "0.66.0", - "@azure-tools/typespec-client-generator-cli": "0.31.0", - "@azure-tools/typespec-client-generator-core": "0.66.3", - "@typespec/compiler": "1.10.0", - "@typespec/http": "1.10.0", - "@typespec/openapi": "1.10.0", - "@typespec/openapi3": "1.10.0", - "@typespec/rest": "0.80.0", - "@typespec/versioning": "0.80.0" - }, - "overrides": { - "@typespec/asset-emitter": "0.79.1", - "get-uri": "^6.0.5", - "minimatch@^3.0.0": "^3.1.5", - "superagent": "^10.2.3" - }, - "engines": { - "node": ">=20.0.0", - "npm": ">=10.0.0" - }, - "private": true -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/readme.md b/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/readme.md deleted file mode 100644 index 0769a118a0a..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/readme.md +++ /dev/null @@ -1,45 +0,0 @@ -# Widget - -> see https://aka.ms/autorest - -This is the AutoRest configuration file for Widget. - -## Configuration - -### Basic Information - -This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. -This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we -use the native TypeSpec code generation configured in the tspconfig.yaml file. - -```yaml -openapi-type: arm -openapi-subtype: rpaas -tag: package-2021-11-01 -``` - -### Tag: package-2021-11-01 - -These settings apply only when `--tag=package-2021-11-01` is specified on the command line. - -```yaml $(tag) == 'package-2021-11-01' -input-file: - - stable/2021-11-01/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - -### Tag: package-2025-05-04-preview - -These settings apply only when `--tag=package-2025-05-04-preview` is specified on the command line. - -```yaml $(tag) == 'package-2025-05-04-preview' -input-file: - - preview/2025-05-04-preview/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - ---- diff --git a/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/shared.tsp deleted file mode 100644 index 1b94bb70503..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/shared.tsp +++ /dev/null @@ -1,8 +0,0 @@ -@doc("Faked shared model") -model FakedSharedModel { - @doc("The tag.") - tag: string; - - @doc("The created date.") - createdAt: utcDateTime; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/tspconfig.yaml deleted file mode 100644 index 9c97da201c0..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001-share-version-new-feature/tspconfig.yaml +++ /dev/null @@ -1,44 +0,0 @@ -parameters: - "service-dir": - default: "sdk/widget" -emit: - - "@azure-tools/typespec-autorest" -options: - "@azure-tools/typespec-autorest": - use-read-only-status-schema: true - emitter-output-dir: "{project-root}" - output-file: "{version-status}/{version}/widget.json" - arm-types-dir: "{project-root}/../../../../common-types/resource-management" - "@azure-typespec/http-client-csharp-mgmt": - namespace: "Azure.ResourceManager.Widget" - emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" - "@azure-tools/typespec-python": - emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" - namespace: "azure.mgmt.widget" - generate-test: true - generate-sample: true - flavor: "azure" - "@azure-tools/typespec-java": - emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" - namespace: "com.azure.resourcemanager.widget" - service-name: "Widget" # human-readable service name, whitespace allowed - flavor: azure - "@azure-tools/typespec-ts": - emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" - flavor: azure - experimental-extensible-enums: true - package-details: - name: "@azure/arm-widget" - "@azure-tools/typespec-go": - service-dir: "sdk/resourcemanager/widget" - emitter-output-dir: "{output-dir}/{service-dir}/armwidget" - module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" - fix-const-stuttering: true - flavor: "azure" - generate-samples: true - generate-fakes: true - head-as-boolean: true - inject-spans: true -linter: - extends: - - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/employee.tsp deleted file mode 100644 index 3c5e47132d0..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/employee.tsp +++ /dev/null @@ -1,63 +0,0 @@ -import "@typespec/rest"; -import "@typespec/http"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; - -using TypeSpec.Rest; -using TypeSpec.Http; -using Azure.Core; -using Azure.ResourceManager; - -namespace Microsoft.Widget; - -/** Employee resource */ -model Employee is TrackedResource { - ...ResourceNameParameter; -} - -/** Employee properties */ -model EmployeeProperties { - /** Age of employee */ - age?: int32; - - /** City of employee */ - city?: string; - - /** Profile of employee */ - @encode("base64url") - profile?: bytes; - - /** The status of the last operation. */ - @visibility(Lifecycle.Read) - provisioningState?: ProvisioningState; -} - -/** The resource provisioning state. */ -@lroStatus -union ProvisioningState { - ResourceProvisioningState, - - /** The resource is being provisioned */ - Provisioning: "Provisioning", - - /** The resource is updating */ - Updating: "Updating", - - /** The resource is being deleted */ - Deleting: "Deleting", - - /** The resource create request has been accepted */ - Accepted: "Accepted", - - string, -} - -@armResourceOperations -interface Employees { - get is ArmResourceRead; - createOrUpdate is ArmResourceCreateOrReplaceAsync; - update is ArmResourcePatchSync; - delete is ArmResourceDeleteWithoutOkAsync; - listByResourceGroup is ArmResourceListByParent; - listBySubscription is ArmListBySubscription; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/main.tsp deleted file mode 100644 index 5c2b4ea187c..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/main.tsp +++ /dev/null @@ -1,36 +0,0 @@ -import "@typespec/http"; -import "@typespec/rest"; -import "@typespec/versioning"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "./employee.tsp"; - -using TypeSpec.Http; -using TypeSpec.Rest; -using TypeSpec.Versioning; -using Azure.Core; -using Azure.ResourceManager; - -/** Microsoft.Widget Resource Provider management API. */ -@armProviderNamespace -@service(#{ title: "Widget" }) -@versioned(Microsoft.Widget.Versions) -namespace Microsoft.Widget; - -/** The available API versions. */ -enum Versions { - /** 2021-10-01-preview version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - @previewVersion - v2021_10_01_preview: "2021-10-01-preview", - - /** 2021-11-01 version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - v2021_11_01: "2021-11-01", - - /** 2025-11-01 version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - v2025_11_01: "2025-11-01", -} - -interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/package.json b/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/package.json deleted file mode 100644 index 9b0af8bcd6e..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "azure-rest-api-specs", - "devDependencies": { - "@azure-tools/typespec-autorest": "0.66.0", - "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-resource-manager": "0.66.0", - "@azure-tools/typespec-azure-rulesets": "0.66.0", - "@azure-tools/typespec-client-generator-cli": "0.31.0", - "@azure-tools/typespec-client-generator-core": "0.66.3", - "@typespec/compiler": "1.10.0", - "@typespec/http": "1.10.0", - "@typespec/openapi": "1.10.0", - "@typespec/openapi3": "1.10.0", - "@typespec/rest": "0.80.0", - "@typespec/versioning": "0.80.0" - }, - "overrides": { - "@typespec/asset-emitter": "0.79.1", - "get-uri": "^6.0.5", - "minimatch@^3.0.0": "^3.1.5", - "superagent": "^10.2.3" - }, - "engines": { - "node": ">=20.0.0", - "npm": ">=10.0.0" - }, - "private": true -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/readme.md b/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/readme.md deleted file mode 100644 index e34e8a22ea5..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/readme.md +++ /dev/null @@ -1,57 +0,0 @@ -# Widget - -> see https://aka.ms/autorest - -This is the AutoRest configuration file for Widget. - -## Configuration - -### Basic Information - -This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. -This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we -use the native TypeSpec code generation configured in the tspconfig.yaml file. - -```yaml -openapi-type: arm -openapi-subtype: rpaas -tag: package-2025-11-01 -``` - -### Tag: package-2025-11-01 - -These settings apply only when `--tag=package-2025-11-01` is specified on the command line. - -```yaml $(tag) == 'package-2025-11-01' -input-file: - - stable/2025-11-01/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - -### Tag: package-2021-11-01 - -These settings apply only when `--tag=package-2021-11-01` is specified on the command line. - -```yaml $(tag) == 'package-2021-11-01' -input-file: - - stable/2021-11-01/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - -### Tag: package-2021-10-01-preview - -These settings apply only when `--tag=package-2021-10-01-preview` is specified on the command line. - -```yaml $(tag) == 'package-2021-10-01-preview' -input-file: - - preview/2021-10-01-preview/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - ---- diff --git a/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/shared.tsp deleted file mode 100644 index 1b94bb70503..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/shared.tsp +++ /dev/null @@ -1,8 +0,0 @@ -@doc("Faked shared model") -model FakedSharedModel { - @doc("The tag.") - tag: string; - - @doc("The created date.") - createdAt: utcDateTime; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/tspconfig.yaml deleted file mode 100644 index 9c97da201c0..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001002-version-default-value/tspconfig.yaml +++ /dev/null @@ -1,44 +0,0 @@ -parameters: - "service-dir": - default: "sdk/widget" -emit: - - "@azure-tools/typespec-autorest" -options: - "@azure-tools/typespec-autorest": - use-read-only-status-schema: true - emitter-output-dir: "{project-root}" - output-file: "{version-status}/{version}/widget.json" - arm-types-dir: "{project-root}/../../../../common-types/resource-management" - "@azure-typespec/http-client-csharp-mgmt": - namespace: "Azure.ResourceManager.Widget" - emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" - "@azure-tools/typespec-python": - emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" - namespace: "azure.mgmt.widget" - generate-test: true - generate-sample: true - flavor: "azure" - "@azure-tools/typespec-java": - emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" - namespace: "com.azure.resourcemanager.widget" - service-name: "Widget" # human-readable service name, whitespace allowed - flavor: azure - "@azure-tools/typespec-ts": - emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" - flavor: azure - experimental-extensible-enums: true - package-details: - name: "@azure/arm-widget" - "@azure-tools/typespec-go": - service-dir: "sdk/resourcemanager/widget" - emitter-output-dir: "{output-dir}/{service-dir}/armwidget" - module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" - fix-const-stuttering: true - flavor: "azure" - generate-samples: true - generate-fakes: true - head-as-boolean: true - inject-spans: true -linter: - extends: - - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/employee.tsp deleted file mode 100644 index 254c9a00e29..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/employee.tsp +++ /dev/null @@ -1,104 +0,0 @@ -import "@typespec/rest"; -import "@typespec/http"; -import "@typespec/versioning"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; - -using TypeSpec.Rest; -using TypeSpec.Http; -using TypeSpec.Versioning; -using Azure.Core; -using Azure.ResourceManager; - -namespace Microsoft.Widget; - -/** A Widget Employee resource */ -model Employee is TrackedResource { - ...ResourceNameParameter; -} - -/** Employee properties */ -model EmployeeProperties { - /** Age of employee (before 2025-11-01) */ - @removed(Versions.v2024_10_01_preview) - @renamedFrom(Versions.v2024_10_01_preview, "age") - oldAge?: int32; - - /** Age of employee (from 2025-11-01 onward, default is 21) */ - @added(Versions.v2024_10_01_preview) - age?: int32 = 21; - - /** City of employee */ - city?: string; - - /** Work location of employee */ - @added(Versions.v2024_10_01_preview) - workLocation?: WorkLocation; - - /** Profile of employee */ - @encode("base64url") - profile?: bytes; - - /** The status of the last operation. */ - @visibility(Lifecycle.Read) - provisioningState?: ProvisioningState; - - /** The assets belong to the employee. */ - @typeChangedFrom(Versions.v2024_10_01_preview, string[]) - assets: AssetItem[]; -} - -/** Constrained asset item. */ -@added(Versions.v2024_10_01_preview) -@minLength(3) -@maxLength(10) -scalar AssetItem extends string; - -/** Work location details */ -@added(Versions.v2024_10_01_preview) -model WorkLocation { - /** Country */ - country?: string; - - /** Company */ - company?: string; - - /** Seat number */ - seatNumber?: string; -} - -/** The resource provisioning state. */ -@lroStatus -union ProvisioningState { - ResourceProvisioningState, - - /** The resource is being provisioned */ - Provisioning: "Provisioning", - - /** The resource is updating */ - Updating: "Updating", - - /** The resource is being deleted */ - Deleting: "Deleting", - - /** The resource create request has been accepted */ - Accepted: "Accepted", - - string, -} - -@armResourceOperations -interface Employees { - get is ArmResourceRead; - createOrUpdate is ArmResourceCreateOrReplaceAsync; - update is ArmCustomPatchSync< - Employee, - Azure.ResourceManager.Foundations.ResourceUpdateModel< - Employee, - EmployeeProperties - > - >; - delete is ArmResourceDeleteWithoutOkAsync; - listByResourceGroup is ArmResourceListByParent; - listBySubscription is ArmListBySubscription; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json deleted file mode 100644 index 26e0fb29b7d..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "title": "Employees_CreateOrUpdate - generated by [MaximumSet] rule", - "operationId": "Employees_CreateOrUpdate", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo", - "resource": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms" - }, - "tags": {}, - "location": "itajgxyqozseoygnl" - } - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - }, - "201": { - "headers": { - "Azure-AsyncOperation": "https://contoso.com/operationstatus" - }, - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json deleted file mode 100644 index 0fd8e915fa4..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "title": "Employees_Delete - generated by [MaximumSet] rule", - "operationId": "Employees_Delete", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo" - }, - "responses": { - "202": { - "headers": { - "location": "https://contoso.com/operationstatus" - } - }, - "204": {} - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json deleted file mode 100644 index 1ddc2fc19f8..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "title": "Employees_Get - generated by [MaximumSet] rule", - "operationId": "Employees_Get", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo" - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json deleted file mode 100644 index 48836349caf..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "title": "Employees_ListByResourceGroup - generated by [MaximumSet] rule", - "operationId": "Employees_ListByResourceGroup", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - ], - "nextLink": "https://microsoft.com/a" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json deleted file mode 100644 index 0cdf8ee402d..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "title": "Employees_ListByResourceGroup - generated by [MinimumSet] rule", - "operationId": "Employees_ListByResourceGroup", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" - } - ] - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json deleted file mode 100644 index 85d5915b7a4..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "title": "Employees_ListBySubscription - generated by [MaximumSet] rule", - "operationId": "Employees_ListBySubscription", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - ], - "nextLink": "https://microsoft.com/a" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json deleted file mode 100644 index a2222331f4a..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "title": "Employees_ListBySubscription - generated by [MinimumSet] rule", - "operationId": "Employees_ListBySubscription", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" - } - ] - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json deleted file mode 100644 index f9c86837139..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "title": "Employees_Update - generated by [MaximumSet] rule", - "operationId": "Employees_Update", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo", - "properties": { - "tags": {}, - "properties": { - "age": 24, - "city": "uyfg", - "profile": "oapgijcswfkruiuuzbwco" - } - } - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json deleted file mode 100644 index 56745464c52..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "title": "Operations_List - generated by [MaximumSet] rule", - "operationId": "Operations_List", - "parameters": { - "api-version": "2021-10-01" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "name": "ymeow", - "isDataAction": true, - "display": { - "provider": "qxyznq", - "resource": "bqfwkox", - "operation": "td", - "description": "eikaaucpxk" - }, - "origin": "user", - "actionType": "Internal" - } - ], - "nextLink": "https://sample.com/nextLink" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json deleted file mode 100644 index db39d591542..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "title": "Operations_List - generated by [MinimumSet] rule", - "operationId": "Operations_List", - "parameters": { - "api-version": "2021-10-01" - }, - "responses": { - "200": { - "body": {} - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json deleted file mode 100644 index 155490965ae..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "title": "Employees_CreateOrUpdate - generated by [MaximumSet] rule", - "operationId": "Employees_CreateOrUpdate", - "parameters": { - "api-version": "2024-10-01-preview", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo", - "resource": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms" - }, - "tags": {}, - "location": "itajgxyqozseoygnl" - } - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - }, - "201": { - "headers": { - "Azure-AsyncOperation": "https://contoso.com/operationstatus" - }, - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json deleted file mode 100644 index 75e4ee09f4f..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "title": "Employees_Delete - generated by [MaximumSet] rule", - "operationId": "Employees_Delete", - "parameters": { - "api-version": "2024-10-01-preview", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo" - }, - "responses": { - "202": { - "headers": { - "location": "https://contoso.com/operationstatus" - } - }, - "204": {} - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json deleted file mode 100644 index 99ce03c4aab..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "title": "Employees_Get - generated by [MaximumSet] rule", - "operationId": "Employees_Get", - "parameters": { - "api-version": "2024-10-01-preview", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo" - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json deleted file mode 100644 index b8365a35231..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "title": "Employees_ListByResourceGroup - generated by [MaximumSet] rule", - "operationId": "Employees_ListByResourceGroup", - "parameters": { - "api-version": "2024-10-01-preview", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - ], - "nextLink": "https://microsoft.com/a" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json deleted file mode 100644 index a32bb795d40..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "title": "Employees_ListByResourceGroup - generated by [MinimumSet] rule", - "operationId": "Employees_ListByResourceGroup", - "parameters": { - "api-version": "2024-10-01-preview", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" - } - ] - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json deleted file mode 100644 index 52ff5143133..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "title": "Employees_ListBySubscription - generated by [MaximumSet] rule", - "operationId": "Employees_ListBySubscription", - "parameters": { - "api-version": "2024-10-01-preview", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - ], - "nextLink": "https://microsoft.com/a" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json deleted file mode 100644 index dbf38f2ac64..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "title": "Employees_ListBySubscription - generated by [MinimumSet] rule", - "operationId": "Employees_ListBySubscription", - "parameters": { - "api-version": "2024-10-01-preview", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" - } - ] - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json deleted file mode 100644 index f376551af11..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "title": "Employees_Update - generated by [MaximumSet] rule", - "operationId": "Employees_Update", - "parameters": { - "api-version": "2024-10-01-preview", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo", - "properties": { - "tags": {}, - "properties": { - "age": 24, - "city": "uyfg", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "B2-456" - }, - "profile": "oapgijcswfkruiuuzbwco" - } - } - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json deleted file mode 100644 index 0f4075414b4..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "title": "Operations_List - generated by [MaximumSet] rule", - "operationId": "Operations_List", - "parameters": { - "api-version": "2024-10-01-preview" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "name": "ymeow", - "isDataAction": true, - "display": { - "provider": "qxyznq", - "resource": "bqfwkox", - "operation": "td", - "description": "kfcrqmzuwfreqvh" - }, - "origin": "user", - "actionType": "Internal" - } - ], - "nextLink": "https://sample.com/nextLink" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json deleted file mode 100644 index 93e6f549129..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "title": "Operations_List - generated by [MinimumSet] rule", - "operationId": "Operations_List", - "parameters": { - "api-version": "2024-10-01-preview" - }, - "responses": { - "200": { - "body": {} - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/main.tsp deleted file mode 100644 index 9c334ab9c00..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/main.tsp +++ /dev/null @@ -1,31 +0,0 @@ -import "@typespec/rest"; -import "@typespec/versioning"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "./employee.tsp"; - -using TypeSpec.Http; -using TypeSpec.Rest; -using TypeSpec.Versioning; -using Azure.Core; -using Azure.ResourceManager; - -/** Microsoft.Widget Resource Provider management API. */ -@armProviderNamespace -@service(#{ title: "Widget" }) -@versioned(Microsoft.Widget.Versions) -namespace Microsoft.Widget; - -/** The available API versions. */ -enum Versions { - /** 2021-10-01 version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - v2021_10_01: "2021-10-01", - - /** 2024-10-01-preview version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - @previewVersion - v2024_10_01_preview: "2024-10-01-preview", -} - -interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/package.json b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/package.json deleted file mode 100644 index 9b0af8bcd6e..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "azure-rest-api-specs", - "devDependencies": { - "@azure-tools/typespec-autorest": "0.66.0", - "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-resource-manager": "0.66.0", - "@azure-tools/typespec-azure-rulesets": "0.66.0", - "@azure-tools/typespec-client-generator-cli": "0.31.0", - "@azure-tools/typespec-client-generator-core": "0.66.3", - "@typespec/compiler": "1.10.0", - "@typespec/http": "1.10.0", - "@typespec/openapi": "1.10.0", - "@typespec/openapi3": "1.10.0", - "@typespec/rest": "0.80.0", - "@typespec/versioning": "0.80.0" - }, - "overrides": { - "@typespec/asset-emitter": "0.79.1", - "get-uri": "^6.0.5", - "minimatch@^3.0.0": "^3.1.5", - "superagent": "^10.2.3" - }, - "engines": { - "node": ">=20.0.0", - "npm": ">=10.0.0" - }, - "private": true -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/readme.md b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/readme.md deleted file mode 100644 index a0e0464736f..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/readme.md +++ /dev/null @@ -1,45 +0,0 @@ -# Widget - -> see https://aka.ms/autorest - -This is the AutoRest configuration file for Widget. - -## Configuration - -### Basic Information - -This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. -This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we -use the native TypeSpec code generation configured in the tspconfig.yaml file. - -```yaml -openapi-type: arm -openapi-subtype: rpaas -tag: package-2025-05-04-preview -``` - -### Tag: package-2025-05-04-preview - -These settings apply only when `--tag=package-2025-05-04-preview` is specified on the command line. - -```yaml $(tag) == 'package-2025-05-04-preview' -input-file: - - preview/2025-05-04-preview/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - -### Tag: package-2021-10-01 - -These settings apply only when `--tag=package-2021-10-01` is specified on the command line. - -```yaml $(tag) == 'package-2021-10-01' -input-file: - - stable/2021-10-01/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - ---- diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/shared.tsp deleted file mode 100644 index 1b94bb70503..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/shared.tsp +++ /dev/null @@ -1,8 +0,0 @@ -@doc("Faked shared model") -model FakedSharedModel { - @doc("The tag.") - tag: string; - - @doc("The created date.") - createdAt: utcDateTime; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/tspconfig.yaml deleted file mode 100644 index 9c97da201c0..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001005-version-add-preview-after-preview/tspconfig.yaml +++ /dev/null @@ -1,44 +0,0 @@ -parameters: - "service-dir": - default: "sdk/widget" -emit: - - "@azure-tools/typespec-autorest" -options: - "@azure-tools/typespec-autorest": - use-read-only-status-schema: true - emitter-output-dir: "{project-root}" - output-file: "{version-status}/{version}/widget.json" - arm-types-dir: "{project-root}/../../../../common-types/resource-management" - "@azure-typespec/http-client-csharp-mgmt": - namespace: "Azure.ResourceManager.Widget" - emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" - "@azure-tools/typespec-python": - emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" - namespace: "azure.mgmt.widget" - generate-test: true - generate-sample: true - flavor: "azure" - "@azure-tools/typespec-java": - emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" - namespace: "com.azure.resourcemanager.widget" - service-name: "Widget" # human-readable service name, whitespace allowed - flavor: azure - "@azure-tools/typespec-ts": - emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" - flavor: azure - experimental-extensible-enums: true - package-details: - name: "@azure/arm-widget" - "@azure-tools/typespec-go": - service-dir: "sdk/resourcemanager/widget" - emitter-output-dir: "{output-dir}/{service-dir}/armwidget" - module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" - fix-const-stuttering: true - flavor: "azure" - generate-samples: true - generate-fakes: true - head-as-boolean: true - inject-spans: true -linter: - extends: - - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/employee.tsp deleted file mode 100644 index 801d16775fe..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/employee.tsp +++ /dev/null @@ -1,104 +0,0 @@ -import "@typespec/rest"; -import "@typespec/http"; -import "@typespec/versioning"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; - -using TypeSpec.Rest; -using TypeSpec.Http; -using TypeSpec.Versioning; -using Azure.Core; -using Azure.ResourceManager; - -namespace Microsoft.Widget; - -/** A Widget Employee resource */ -model Employee is TrackedResource { - ...ResourceNameParameter; -} - -/** Employee properties */ -model EmployeeProperties { - /** Age of employee (before 2025-11-01) */ - @removed(Versions.v2024_10_01) - @renamedFrom(Versions.v2024_10_01, "age") - oldAge?: int32; - - /** Age of employee (from 2025-11-01 onward, default is 21) */ - @added(Versions.v2024_10_01) - age?: int32 = 21; - - /** City of employee */ - city?: string; - - /** Work location of employee */ - @added(Versions.v2024_10_01) - workLocation?: WorkLocation; - - /** Profile of employee */ - @encode("base64url") - profile?: bytes; - - /** The status of the last operation. */ - @visibility(Lifecycle.Read) - provisioningState?: ProvisioningState; - - /** The assets belong to the employee. */ - @typeChangedFrom(Versions.v2024_10_01, string[]) - assets: AssetItem[]; -} - -/** Constrained asset item. */ -@added(Versions.v2024_10_01) -@minLength(3) -@maxLength(10) -scalar AssetItem extends string; - -/** Work location details */ -@added(Versions.v2024_10_01) -model WorkLocation { - /** Country */ - country?: string; - - /** Company */ - company?: string; - - /** Seat number */ - seatNumber?: string; -} - -/** The resource provisioning state. */ -@lroStatus -union ProvisioningState { - ResourceProvisioningState, - - /** The resource is being provisioned */ - Provisioning: "Provisioning", - - /** The resource is updating */ - Updating: "Updating", - - /** The resource is being deleted */ - Deleting: "Deleting", - - /** The resource create request has been accepted */ - Accepted: "Accepted", - - string, -} - -@armResourceOperations -interface Employees { - get is ArmResourceRead; - createOrUpdate is ArmResourceCreateOrReplaceAsync; - update is ArmCustomPatchSync< - Employee, - Azure.ResourceManager.Foundations.ResourceUpdateModel< - Employee, - EmployeeProperties - > - >; - delete is ArmResourceDeleteWithoutOkAsync; - listByResourceGroup is ArmResourceListByParent; - listBySubscription is ArmListBySubscription; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json deleted file mode 100644 index 26e0fb29b7d..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "title": "Employees_CreateOrUpdate - generated by [MaximumSet] rule", - "operationId": "Employees_CreateOrUpdate", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo", - "resource": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms" - }, - "tags": {}, - "location": "itajgxyqozseoygnl" - } - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - }, - "201": { - "headers": { - "Azure-AsyncOperation": "https://contoso.com/operationstatus" - }, - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json deleted file mode 100644 index 0fd8e915fa4..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "title": "Employees_Delete - generated by [MaximumSet] rule", - "operationId": "Employees_Delete", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo" - }, - "responses": { - "202": { - "headers": { - "location": "https://contoso.com/operationstatus" - } - }, - "204": {} - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json deleted file mode 100644 index 1ddc2fc19f8..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "title": "Employees_Get - generated by [MaximumSet] rule", - "operationId": "Employees_Get", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo" - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json deleted file mode 100644 index 48836349caf..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "title": "Employees_ListByResourceGroup - generated by [MaximumSet] rule", - "operationId": "Employees_ListByResourceGroup", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - ], - "nextLink": "https://microsoft.com/a" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json deleted file mode 100644 index 0cdf8ee402d..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "title": "Employees_ListByResourceGroup - generated by [MinimumSet] rule", - "operationId": "Employees_ListByResourceGroup", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" - } - ] - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json deleted file mode 100644 index 85d5915b7a4..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "title": "Employees_ListBySubscription - generated by [MaximumSet] rule", - "operationId": "Employees_ListBySubscription", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - ], - "nextLink": "https://microsoft.com/a" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json deleted file mode 100644 index a2222331f4a..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "title": "Employees_ListBySubscription - generated by [MinimumSet] rule", - "operationId": "Employees_ListBySubscription", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" - } - ] - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json deleted file mode 100644 index f9c86837139..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "title": "Employees_Update - generated by [MaximumSet] rule", - "operationId": "Employees_Update", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo", - "properties": { - "tags": {}, - "properties": { - "age": 24, - "city": "uyfg", - "profile": "oapgijcswfkruiuuzbwco" - } - } - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Operations_List_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Operations_List_MaximumSet_Gen.json deleted file mode 100644 index 305336b0df8..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Operations_List_MaximumSet_Gen.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "title": "Operations_List - generated by [MaximumSet] rule", - "operationId": "Operations_List", - "parameters": { - "api-version": "2021-10-01" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "name": "ymeow", - "isDataAction": true, - "display": { - "provider": "qxyznq", - "resource": "bqfwkox", - "operation": "td", - "description": "kfcrqmzuwfreqvh" - }, - "origin": "user", - "actionType": "Internal" - } - ], - "nextLink": "https://sample.com/nextLink" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Operations_List_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Operations_List_MinimumSet_Gen.json deleted file mode 100644 index db39d591542..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Operations_List_MinimumSet_Gen.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "title": "Operations_List - generated by [MinimumSet] rule", - "operationId": "Operations_List", - "parameters": { - "api-version": "2021-10-01" - }, - "responses": { - "200": { - "body": {} - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json deleted file mode 100644 index 566c91ac8ed..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "title": "Employees_CreateOrUpdate - generated by [MaximumSet] rule", - "operationId": "Employees_CreateOrUpdate", - "parameters": { - "api-version": "2024-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo", - "resource": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms" - }, - "tags": {}, - "location": "itajgxyqozseoygnl" - } - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - }, - "201": { - "headers": { - "Azure-AsyncOperation": "https://contoso.com/operationstatus" - }, - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json deleted file mode 100644 index f9383986629..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "title": "Employees_Delete - generated by [MaximumSet] rule", - "operationId": "Employees_Delete", - "parameters": { - "api-version": "2024-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo" - }, - "responses": { - "202": { - "headers": { - "location": "https://contoso.com/operationstatus" - } - }, - "204": {} - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Get_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Get_MaximumSet_Gen.json deleted file mode 100644 index 39c4503c393..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Get_MaximumSet_Gen.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "title": "Employees_Get - generated by [MaximumSet] rule", - "operationId": "Employees_Get", - "parameters": { - "api-version": "2024-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo" - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json deleted file mode 100644 index f21f164e415..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "title": "Employees_ListByResourceGroup - generated by [MaximumSet] rule", - "operationId": "Employees_ListByResourceGroup", - "parameters": { - "api-version": "2024-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - ], - "nextLink": "https://microsoft.com/a" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json deleted file mode 100644 index 11579b602c2..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "title": "Employees_ListByResourceGroup - generated by [MinimumSet] rule", - "operationId": "Employees_ListByResourceGroup", - "parameters": { - "api-version": "2024-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" - } - ] - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json deleted file mode 100644 index 049be5c5146..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "title": "Employees_ListBySubscription - generated by [MaximumSet] rule", - "operationId": "Employees_ListBySubscription", - "parameters": { - "api-version": "2024-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - ], - "nextLink": "https://microsoft.com/a" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json deleted file mode 100644 index 7874b5ed5d2..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "title": "Employees_ListBySubscription - generated by [MinimumSet] rule", - "operationId": "Employees_ListBySubscription", - "parameters": { - "api-version": "2024-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" - } - ] - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Update_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Update_MaximumSet_Gen.json deleted file mode 100644 index 001d46d682c..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Update_MaximumSet_Gen.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "title": "Employees_Update - generated by [MaximumSet] rule", - "operationId": "Employees_Update", - "parameters": { - "api-version": "2024-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo", - "properties": { - "tags": {}, - "properties": { - "age": 24, - "city": "uyfg", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "B2-456" - }, - "profile": "oapgijcswfkruiuuzbwco" - } - } - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Operations_List_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Operations_List_MaximumSet_Gen.json deleted file mode 100644 index e393cb2932c..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Operations_List_MaximumSet_Gen.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "title": "Operations_List - generated by [MaximumSet] rule", - "operationId": "Operations_List", - "parameters": { - "api-version": "2024-10-01" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "name": "ymeow", - "isDataAction": true, - "display": { - "provider": "qxyznq", - "resource": "bqfwkox", - "operation": "td", - "description": "eikaaucpxk" - }, - "origin": "user", - "actionType": "Internal" - } - ], - "nextLink": "https://sample.com/nextLink" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Operations_List_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Operations_List_MinimumSet_Gen.json deleted file mode 100644 index 3cc3f3a1cfa..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Operations_List_MinimumSet_Gen.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "title": "Operations_List - generated by [MinimumSet] rule", - "operationId": "Operations_List", - "parameters": { - "api-version": "2024-10-01" - }, - "responses": { - "200": { - "body": {} - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/main.tsp deleted file mode 100644 index cc51e1b1f76..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/main.tsp +++ /dev/null @@ -1,30 +0,0 @@ -import "@typespec/rest"; -import "@typespec/versioning"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "./employee.tsp"; - -using TypeSpec.Http; -using TypeSpec.Rest; -using TypeSpec.Versioning; -using Azure.Core; -using Azure.ResourceManager; - -/** Microsoft.Widget Resource Provider management API. */ -@armProviderNamespace -@service(#{ title: "Widget" }) -@versioned(Microsoft.Widget.Versions) -namespace Microsoft.Widget; - -/** The available API versions. */ -enum Versions { - /** 2021-10-01 version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - v2021_10_01: "2021-10-01", - - /** 2024-10-01 version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - v2024_10_01: "2024-10-01", -} - -interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/package.json b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/package.json deleted file mode 100644 index 9b0af8bcd6e..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "azure-rest-api-specs", - "devDependencies": { - "@azure-tools/typespec-autorest": "0.66.0", - "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-resource-manager": "0.66.0", - "@azure-tools/typespec-azure-rulesets": "0.66.0", - "@azure-tools/typespec-client-generator-cli": "0.31.0", - "@azure-tools/typespec-client-generator-core": "0.66.3", - "@typespec/compiler": "1.10.0", - "@typespec/http": "1.10.0", - "@typespec/openapi": "1.10.0", - "@typespec/openapi3": "1.10.0", - "@typespec/rest": "0.80.0", - "@typespec/versioning": "0.80.0" - }, - "overrides": { - "@typespec/asset-emitter": "0.79.1", - "get-uri": "^6.0.5", - "minimatch@^3.0.0": "^3.1.5", - "superagent": "^10.2.3" - }, - "engines": { - "node": ">=20.0.0", - "npm": ">=10.0.0" - }, - "private": true -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/readme.md b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/readme.md deleted file mode 100644 index 7b7a656467b..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/readme.md +++ /dev/null @@ -1,57 +0,0 @@ -# Widget - -> see https://aka.ms/autorest - -This is the AutoRest configuration file for Widget. - -## Configuration - -### Basic Information - -This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. -This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we -use the native TypeSpec code generation configured in the tspconfig.yaml file. - -```yaml -openapi-type: arm -openapi-subtype: rpaas -tag: package-2025-05-04-preview -``` - -### Tag: package-2025-05-04-preview - -These settings apply only when `--tag=package-2025-05-04-preview` is specified on the command line. - -```yaml $(tag) == 'package-2025-05-04-preview' -input-file: - - preview/2025-05-04-preview/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - -### Tag: package-2024-10-01 - -These settings apply only when `--tag=package-2024-10-01` is specified on the command line. - -```yaml $(tag) == 'package-2024-10-01' -input-file: - - stable/2024-10-01/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - -### Tag: package-2021-10-01 - -These settings apply only when `--tag=package-2021-10-01` is specified on the command line. - -```yaml $(tag) == 'package-2021-10-01' -input-file: - - stable/2021-10-01/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - ---- diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/shared.tsp deleted file mode 100644 index 1b94bb70503..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/shared.tsp +++ /dev/null @@ -1,8 +0,0 @@ -@doc("Faked shared model") -model FakedSharedModel { - @doc("The tag.") - tag: string; - - @doc("The created date.") - createdAt: utcDateTime; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/tspconfig.yaml deleted file mode 100644 index 9c97da201c0..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001006-version-add-preview-after-stable/tspconfig.yaml +++ /dev/null @@ -1,44 +0,0 @@ -parameters: - "service-dir": - default: "sdk/widget" -emit: - - "@azure-tools/typespec-autorest" -options: - "@azure-tools/typespec-autorest": - use-read-only-status-schema: true - emitter-output-dir: "{project-root}" - output-file: "{version-status}/{version}/widget.json" - arm-types-dir: "{project-root}/../../../../common-types/resource-management" - "@azure-typespec/http-client-csharp-mgmt": - namespace: "Azure.ResourceManager.Widget" - emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" - "@azure-tools/typespec-python": - emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" - namespace: "azure.mgmt.widget" - generate-test: true - generate-sample: true - flavor: "azure" - "@azure-tools/typespec-java": - emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" - namespace: "com.azure.resourcemanager.widget" - service-name: "Widget" # human-readable service name, whitespace allowed - flavor: azure - "@azure-tools/typespec-ts": - emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" - flavor: azure - experimental-extensible-enums: true - package-details: - name: "@azure/arm-widget" - "@azure-tools/typespec-go": - service-dir: "sdk/resourcemanager/widget" - emitter-output-dir: "{output-dir}/{service-dir}/armwidget" - module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" - fix-const-stuttering: true - flavor: "azure" - generate-samples: true - generate-fakes: true - head-as-boolean: true - inject-spans: true -linter: - extends: - - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/employee.tsp deleted file mode 100644 index 254c9a00e29..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/employee.tsp +++ /dev/null @@ -1,104 +0,0 @@ -import "@typespec/rest"; -import "@typespec/http"; -import "@typespec/versioning"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; - -using TypeSpec.Rest; -using TypeSpec.Http; -using TypeSpec.Versioning; -using Azure.Core; -using Azure.ResourceManager; - -namespace Microsoft.Widget; - -/** A Widget Employee resource */ -model Employee is TrackedResource { - ...ResourceNameParameter; -} - -/** Employee properties */ -model EmployeeProperties { - /** Age of employee (before 2025-11-01) */ - @removed(Versions.v2024_10_01_preview) - @renamedFrom(Versions.v2024_10_01_preview, "age") - oldAge?: int32; - - /** Age of employee (from 2025-11-01 onward, default is 21) */ - @added(Versions.v2024_10_01_preview) - age?: int32 = 21; - - /** City of employee */ - city?: string; - - /** Work location of employee */ - @added(Versions.v2024_10_01_preview) - workLocation?: WorkLocation; - - /** Profile of employee */ - @encode("base64url") - profile?: bytes; - - /** The status of the last operation. */ - @visibility(Lifecycle.Read) - provisioningState?: ProvisioningState; - - /** The assets belong to the employee. */ - @typeChangedFrom(Versions.v2024_10_01_preview, string[]) - assets: AssetItem[]; -} - -/** Constrained asset item. */ -@added(Versions.v2024_10_01_preview) -@minLength(3) -@maxLength(10) -scalar AssetItem extends string; - -/** Work location details */ -@added(Versions.v2024_10_01_preview) -model WorkLocation { - /** Country */ - country?: string; - - /** Company */ - company?: string; - - /** Seat number */ - seatNumber?: string; -} - -/** The resource provisioning state. */ -@lroStatus -union ProvisioningState { - ResourceProvisioningState, - - /** The resource is being provisioned */ - Provisioning: "Provisioning", - - /** The resource is updating */ - Updating: "Updating", - - /** The resource is being deleted */ - Deleting: "Deleting", - - /** The resource create request has been accepted */ - Accepted: "Accepted", - - string, -} - -@armResourceOperations -interface Employees { - get is ArmResourceRead; - createOrUpdate is ArmResourceCreateOrReplaceAsync; - update is ArmCustomPatchSync< - Employee, - Azure.ResourceManager.Foundations.ResourceUpdateModel< - Employee, - EmployeeProperties - > - >; - delete is ArmResourceDeleteWithoutOkAsync; - listByResourceGroup is ArmResourceListByParent; - listBySubscription is ArmListBySubscription; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json deleted file mode 100644 index 26e0fb29b7d..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "title": "Employees_CreateOrUpdate - generated by [MaximumSet] rule", - "operationId": "Employees_CreateOrUpdate", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo", - "resource": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms" - }, - "tags": {}, - "location": "itajgxyqozseoygnl" - } - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - }, - "201": { - "headers": { - "Azure-AsyncOperation": "https://contoso.com/operationstatus" - }, - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json deleted file mode 100644 index 0fd8e915fa4..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "title": "Employees_Delete - generated by [MaximumSet] rule", - "operationId": "Employees_Delete", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo" - }, - "responses": { - "202": { - "headers": { - "location": "https://contoso.com/operationstatus" - } - }, - "204": {} - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json deleted file mode 100644 index 1ddc2fc19f8..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "title": "Employees_Get - generated by [MaximumSet] rule", - "operationId": "Employees_Get", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo" - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json deleted file mode 100644 index 48836349caf..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "title": "Employees_ListByResourceGroup - generated by [MaximumSet] rule", - "operationId": "Employees_ListByResourceGroup", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - ], - "nextLink": "https://microsoft.com/a" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json deleted file mode 100644 index 0cdf8ee402d..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "title": "Employees_ListByResourceGroup - generated by [MinimumSet] rule", - "operationId": "Employees_ListByResourceGroup", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" - } - ] - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json deleted file mode 100644 index 85d5915b7a4..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "title": "Employees_ListBySubscription - generated by [MaximumSet] rule", - "operationId": "Employees_ListBySubscription", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - ], - "nextLink": "https://microsoft.com/a" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json deleted file mode 100644 index a2222331f4a..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "title": "Employees_ListBySubscription - generated by [MinimumSet] rule", - "operationId": "Employees_ListBySubscription", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" - } - ] - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json deleted file mode 100644 index f9c86837139..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "title": "Employees_Update - generated by [MaximumSet] rule", - "operationId": "Employees_Update", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo", - "properties": { - "tags": {}, - "properties": { - "age": 24, - "city": "uyfg", - "profile": "oapgijcswfkruiuuzbwco" - } - } - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json deleted file mode 100644 index 305336b0df8..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "title": "Operations_List - generated by [MaximumSet] rule", - "operationId": "Operations_List", - "parameters": { - "api-version": "2021-10-01" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "name": "ymeow", - "isDataAction": true, - "display": { - "provider": "qxyznq", - "resource": "bqfwkox", - "operation": "td", - "description": "kfcrqmzuwfreqvh" - }, - "origin": "user", - "actionType": "Internal" - } - ], - "nextLink": "https://sample.com/nextLink" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json deleted file mode 100644 index db39d591542..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "title": "Operations_List - generated by [MinimumSet] rule", - "operationId": "Operations_List", - "parameters": { - "api-version": "2021-10-01" - }, - "responses": { - "200": { - "body": {} - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json deleted file mode 100644 index 155490965ae..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "title": "Employees_CreateOrUpdate - generated by [MaximumSet] rule", - "operationId": "Employees_CreateOrUpdate", - "parameters": { - "api-version": "2024-10-01-preview", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo", - "resource": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms" - }, - "tags": {}, - "location": "itajgxyqozseoygnl" - } - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - }, - "201": { - "headers": { - "Azure-AsyncOperation": "https://contoso.com/operationstatus" - }, - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json deleted file mode 100644 index 75e4ee09f4f..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "title": "Employees_Delete - generated by [MaximumSet] rule", - "operationId": "Employees_Delete", - "parameters": { - "api-version": "2024-10-01-preview", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo" - }, - "responses": { - "202": { - "headers": { - "location": "https://contoso.com/operationstatus" - } - }, - "204": {} - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json deleted file mode 100644 index 99ce03c4aab..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "title": "Employees_Get - generated by [MaximumSet] rule", - "operationId": "Employees_Get", - "parameters": { - "api-version": "2024-10-01-preview", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo" - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json deleted file mode 100644 index b8365a35231..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "title": "Employees_ListByResourceGroup - generated by [MaximumSet] rule", - "operationId": "Employees_ListByResourceGroup", - "parameters": { - "api-version": "2024-10-01-preview", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - ], - "nextLink": "https://microsoft.com/a" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json deleted file mode 100644 index a32bb795d40..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "title": "Employees_ListByResourceGroup - generated by [MinimumSet] rule", - "operationId": "Employees_ListByResourceGroup", - "parameters": { - "api-version": "2024-10-01-preview", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" - } - ] - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json deleted file mode 100644 index 52ff5143133..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "title": "Employees_ListBySubscription - generated by [MaximumSet] rule", - "operationId": "Employees_ListBySubscription", - "parameters": { - "api-version": "2024-10-01-preview", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - ], - "nextLink": "https://microsoft.com/a" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json deleted file mode 100644 index dbf38f2ac64..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "title": "Employees_ListBySubscription - generated by [MinimumSet] rule", - "operationId": "Employees_ListBySubscription", - "parameters": { - "api-version": "2024-10-01-preview", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" - } - ] - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json deleted file mode 100644 index f376551af11..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "title": "Employees_Update - generated by [MaximumSet] rule", - "operationId": "Employees_Update", - "parameters": { - "api-version": "2024-10-01-preview", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo", - "properties": { - "tags": {}, - "properties": { - "age": 24, - "city": "uyfg", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "B2-456" - }, - "profile": "oapgijcswfkruiuuzbwco" - } - } - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json deleted file mode 100644 index 0f4075414b4..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "title": "Operations_List - generated by [MaximumSet] rule", - "operationId": "Operations_List", - "parameters": { - "api-version": "2024-10-01-preview" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "name": "ymeow", - "isDataAction": true, - "display": { - "provider": "qxyznq", - "resource": "bqfwkox", - "operation": "td", - "description": "kfcrqmzuwfreqvh" - }, - "origin": "user", - "actionType": "Internal" - } - ], - "nextLink": "https://sample.com/nextLink" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json deleted file mode 100644 index 93e6f549129..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "title": "Operations_List - generated by [MinimumSet] rule", - "operationId": "Operations_List", - "parameters": { - "api-version": "2024-10-01-preview" - }, - "responses": { - "200": { - "body": {} - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/main.tsp deleted file mode 100644 index 9c334ab9c00..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/main.tsp +++ /dev/null @@ -1,31 +0,0 @@ -import "@typespec/rest"; -import "@typespec/versioning"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "./employee.tsp"; - -using TypeSpec.Http; -using TypeSpec.Rest; -using TypeSpec.Versioning; -using Azure.Core; -using Azure.ResourceManager; - -/** Microsoft.Widget Resource Provider management API. */ -@armProviderNamespace -@service(#{ title: "Widget" }) -@versioned(Microsoft.Widget.Versions) -namespace Microsoft.Widget; - -/** The available API versions. */ -enum Versions { - /** 2021-10-01 version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - v2021_10_01: "2021-10-01", - - /** 2024-10-01-preview version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - @previewVersion - v2024_10_01_preview: "2024-10-01-preview", -} - -interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/package.json b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/package.json deleted file mode 100644 index 9b0af8bcd6e..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "azure-rest-api-specs", - "devDependencies": { - "@azure-tools/typespec-autorest": "0.66.0", - "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-resource-manager": "0.66.0", - "@azure-tools/typespec-azure-rulesets": "0.66.0", - "@azure-tools/typespec-client-generator-cli": "0.31.0", - "@azure-tools/typespec-client-generator-core": "0.66.3", - "@typespec/compiler": "1.10.0", - "@typespec/http": "1.10.0", - "@typespec/openapi": "1.10.0", - "@typespec/openapi3": "1.10.0", - "@typespec/rest": "0.80.0", - "@typespec/versioning": "0.80.0" - }, - "overrides": { - "@typespec/asset-emitter": "0.79.1", - "get-uri": "^6.0.5", - "minimatch@^3.0.0": "^3.1.5", - "superagent": "^10.2.3" - }, - "engines": { - "node": ">=20.0.0", - "npm": ">=10.0.0" - }, - "private": true -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/readme.md b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/readme.md deleted file mode 100644 index a30f0d7a322..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/readme.md +++ /dev/null @@ -1,45 +0,0 @@ -# Widget - -> see https://aka.ms/autorest - -This is the AutoRest configuration file for Widget. - -## Configuration - -### Basic Information - -This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. -This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we -use the native TypeSpec code generation configured in the tspconfig.yaml file. - -```yaml -openapi-type: arm -openapi-subtype: rpaas -tag: package-2025-01-01 -``` - -### Tag: package-2025-01-01 - -These settings apply only when `--tag=package-2025-01-01` is specified on the command line. - -```yaml $(tag) == 'package-2025-01-01' -input-file: - - stable/2025-01-01/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - -### Tag: package-2021-10-01 - -These settings apply only when `--tag=package-2021-10-01` is specified on the command line. - -```yaml $(tag) == 'package-2021-10-01' -input-file: - - stable/2021-10-01/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - ---- diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/shared.tsp deleted file mode 100644 index 1b94bb70503..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/shared.tsp +++ /dev/null @@ -1,8 +0,0 @@ -@doc("Faked shared model") -model FakedSharedModel { - @doc("The tag.") - tag: string; - - @doc("The created date.") - createdAt: utcDateTime; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/tspconfig.yaml deleted file mode 100644 index 9c97da201c0..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001007-version-add-stable-after-preview/tspconfig.yaml +++ /dev/null @@ -1,44 +0,0 @@ -parameters: - "service-dir": - default: "sdk/widget" -emit: - - "@azure-tools/typespec-autorest" -options: - "@azure-tools/typespec-autorest": - use-read-only-status-schema: true - emitter-output-dir: "{project-root}" - output-file: "{version-status}/{version}/widget.json" - arm-types-dir: "{project-root}/../../../../common-types/resource-management" - "@azure-typespec/http-client-csharp-mgmt": - namespace: "Azure.ResourceManager.Widget" - emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" - "@azure-tools/typespec-python": - emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" - namespace: "azure.mgmt.widget" - generate-test: true - generate-sample: true - flavor: "azure" - "@azure-tools/typespec-java": - emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" - namespace: "com.azure.resourcemanager.widget" - service-name: "Widget" # human-readable service name, whitespace allowed - flavor: azure - "@azure-tools/typespec-ts": - emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" - flavor: azure - experimental-extensible-enums: true - package-details: - name: "@azure/arm-widget" - "@azure-tools/typespec-go": - service-dir: "sdk/resourcemanager/widget" - emitter-output-dir: "{output-dir}/{service-dir}/armwidget" - module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" - fix-const-stuttering: true - flavor: "azure" - generate-samples: true - generate-fakes: true - head-as-boolean: true - inject-spans: true -linter: - extends: - - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/employee.tsp deleted file mode 100644 index 801d16775fe..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/employee.tsp +++ /dev/null @@ -1,104 +0,0 @@ -import "@typespec/rest"; -import "@typespec/http"; -import "@typespec/versioning"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; - -using TypeSpec.Rest; -using TypeSpec.Http; -using TypeSpec.Versioning; -using Azure.Core; -using Azure.ResourceManager; - -namespace Microsoft.Widget; - -/** A Widget Employee resource */ -model Employee is TrackedResource { - ...ResourceNameParameter; -} - -/** Employee properties */ -model EmployeeProperties { - /** Age of employee (before 2025-11-01) */ - @removed(Versions.v2024_10_01) - @renamedFrom(Versions.v2024_10_01, "age") - oldAge?: int32; - - /** Age of employee (from 2025-11-01 onward, default is 21) */ - @added(Versions.v2024_10_01) - age?: int32 = 21; - - /** City of employee */ - city?: string; - - /** Work location of employee */ - @added(Versions.v2024_10_01) - workLocation?: WorkLocation; - - /** Profile of employee */ - @encode("base64url") - profile?: bytes; - - /** The status of the last operation. */ - @visibility(Lifecycle.Read) - provisioningState?: ProvisioningState; - - /** The assets belong to the employee. */ - @typeChangedFrom(Versions.v2024_10_01, string[]) - assets: AssetItem[]; -} - -/** Constrained asset item. */ -@added(Versions.v2024_10_01) -@minLength(3) -@maxLength(10) -scalar AssetItem extends string; - -/** Work location details */ -@added(Versions.v2024_10_01) -model WorkLocation { - /** Country */ - country?: string; - - /** Company */ - company?: string; - - /** Seat number */ - seatNumber?: string; -} - -/** The resource provisioning state. */ -@lroStatus -union ProvisioningState { - ResourceProvisioningState, - - /** The resource is being provisioned */ - Provisioning: "Provisioning", - - /** The resource is updating */ - Updating: "Updating", - - /** The resource is being deleted */ - Deleting: "Deleting", - - /** The resource create request has been accepted */ - Accepted: "Accepted", - - string, -} - -@armResourceOperations -interface Employees { - get is ArmResourceRead; - createOrUpdate is ArmResourceCreateOrReplaceAsync; - update is ArmCustomPatchSync< - Employee, - Azure.ResourceManager.Foundations.ResourceUpdateModel< - Employee, - EmployeeProperties - > - >; - delete is ArmResourceDeleteWithoutOkAsync; - listByResourceGroup is ArmResourceListByParent; - listBySubscription is ArmListBySubscription; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json deleted file mode 100644 index 26e0fb29b7d..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "title": "Employees_CreateOrUpdate - generated by [MaximumSet] rule", - "operationId": "Employees_CreateOrUpdate", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo", - "resource": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms" - }, - "tags": {}, - "location": "itajgxyqozseoygnl" - } - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - }, - "201": { - "headers": { - "Azure-AsyncOperation": "https://contoso.com/operationstatus" - }, - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json deleted file mode 100644 index 0fd8e915fa4..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "title": "Employees_Delete - generated by [MaximumSet] rule", - "operationId": "Employees_Delete", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo" - }, - "responses": { - "202": { - "headers": { - "location": "https://contoso.com/operationstatus" - } - }, - "204": {} - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json deleted file mode 100644 index 1ddc2fc19f8..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "title": "Employees_Get - generated by [MaximumSet] rule", - "operationId": "Employees_Get", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo" - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json deleted file mode 100644 index 48836349caf..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "title": "Employees_ListByResourceGroup - generated by [MaximumSet] rule", - "operationId": "Employees_ListByResourceGroup", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - ], - "nextLink": "https://microsoft.com/a" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json deleted file mode 100644 index 0cdf8ee402d..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "title": "Employees_ListByResourceGroup - generated by [MinimumSet] rule", - "operationId": "Employees_ListByResourceGroup", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" - } - ] - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json deleted file mode 100644 index 85d5915b7a4..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "title": "Employees_ListBySubscription - generated by [MaximumSet] rule", - "operationId": "Employees_ListBySubscription", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - ], - "nextLink": "https://microsoft.com/a" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json deleted file mode 100644 index a2222331f4a..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "title": "Employees_ListBySubscription - generated by [MinimumSet] rule", - "operationId": "Employees_ListBySubscription", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" - } - ] - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json deleted file mode 100644 index f9c86837139..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "title": "Employees_Update - generated by [MaximumSet] rule", - "operationId": "Employees_Update", - "parameters": { - "api-version": "2021-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo", - "properties": { - "tags": {}, - "properties": { - "age": 24, - "city": "uyfg", - "profile": "oapgijcswfkruiuuzbwco" - } - } - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Operations_List_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Operations_List_MaximumSet_Gen.json deleted file mode 100644 index 305336b0df8..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Operations_List_MaximumSet_Gen.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "title": "Operations_List - generated by [MaximumSet] rule", - "operationId": "Operations_List", - "parameters": { - "api-version": "2021-10-01" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "name": "ymeow", - "isDataAction": true, - "display": { - "provider": "qxyznq", - "resource": "bqfwkox", - "operation": "td", - "description": "kfcrqmzuwfreqvh" - }, - "origin": "user", - "actionType": "Internal" - } - ], - "nextLink": "https://sample.com/nextLink" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Operations_List_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Operations_List_MinimumSet_Gen.json deleted file mode 100644 index db39d591542..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Operations_List_MinimumSet_Gen.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "title": "Operations_List - generated by [MinimumSet] rule", - "operationId": "Operations_List", - "parameters": { - "api-version": "2021-10-01" - }, - "responses": { - "200": { - "body": {} - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json deleted file mode 100644 index 566c91ac8ed..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "title": "Employees_CreateOrUpdate - generated by [MaximumSet] rule", - "operationId": "Employees_CreateOrUpdate", - "parameters": { - "api-version": "2024-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo", - "resource": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms" - }, - "tags": {}, - "location": "itajgxyqozseoygnl" - } - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - }, - "201": { - "headers": { - "Azure-AsyncOperation": "https://contoso.com/operationstatus" - }, - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json deleted file mode 100644 index f9383986629..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "title": "Employees_Delete - generated by [MaximumSet] rule", - "operationId": "Employees_Delete", - "parameters": { - "api-version": "2024-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo" - }, - "responses": { - "202": { - "headers": { - "location": "https://contoso.com/operationstatus" - } - }, - "204": {} - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Get_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Get_MaximumSet_Gen.json deleted file mode 100644 index 39c4503c393..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Get_MaximumSet_Gen.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "title": "Employees_Get - generated by [MaximumSet] rule", - "operationId": "Employees_Get", - "parameters": { - "api-version": "2024-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo" - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json deleted file mode 100644 index f21f164e415..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "title": "Employees_ListByResourceGroup - generated by [MaximumSet] rule", - "operationId": "Employees_ListByResourceGroup", - "parameters": { - "api-version": "2024-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - ], - "nextLink": "https://microsoft.com/a" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json deleted file mode 100644 index 11579b602c2..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "title": "Employees_ListByResourceGroup - generated by [MinimumSet] rule", - "operationId": "Employees_ListByResourceGroup", - "parameters": { - "api-version": "2024-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" - } - ] - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json deleted file mode 100644 index 049be5c5146..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "title": "Employees_ListBySubscription - generated by [MaximumSet] rule", - "operationId": "Employees_ListBySubscription", - "parameters": { - "api-version": "2024-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - ], - "nextLink": "https://microsoft.com/a" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json deleted file mode 100644 index 7874b5ed5d2..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "title": "Employees_ListBySubscription - generated by [MinimumSet] rule", - "operationId": "Employees_ListBySubscription", - "parameters": { - "api-version": "2024-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test" - } - ] - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Update_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Update_MaximumSet_Gen.json deleted file mode 100644 index 001d46d682c..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Update_MaximumSet_Gen.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "title": "Employees_Update - generated by [MaximumSet] rule", - "operationId": "Employees_Update", - "parameters": { - "api-version": "2024-10-01", - "subscriptionId": "11809CA1-E126-4017-945E-AA795CD5C5A9", - "resourceGroupName": "rgwidget", - "employeeName": "foo", - "properties": { - "tags": {}, - "properties": { - "age": 24, - "city": "uyfg", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "B2-456" - }, - "profile": "oapgijcswfkruiuuzbwco" - } - } - }, - "responses": { - "200": { - "body": { - "properties": { - "age": 30, - "city": "gydhnntudughbmxlkyzrskcdkotrxn", - "workLocation": { - "country": "US", - "company": "Microsoft", - "seatNumber": "A1-234" - }, - "profile": "ms", - "provisioningState": "Succeeded" - }, - "tags": {}, - "location": "itajgxyqozseoygnl", - "id": "/subscriptions/11809CA1-E126-4017-945E-AA795CD5C5A9/resourceGroups/rgopenapi/providers/Microsoft.Contoso/employees/test", - "name": "xepyxhpb", - "type": "svvamxrdnnv", - "systemData": { - "createdBy": "iewyxsnriqktsvp", - "createdByType": "User", - "createdAt": "2023-05-19T00:28:48.610Z", - "lastModifiedBy": "xrchbnnuzierzpxw", - "lastModifiedByType": "User", - "lastModifiedAt": "2023-05-19T00:28:48.610Z" - } - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Operations_List_MaximumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Operations_List_MaximumSet_Gen.json deleted file mode 100644 index e393cb2932c..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Operations_List_MaximumSet_Gen.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "title": "Operations_List - generated by [MaximumSet] rule", - "operationId": "Operations_List", - "parameters": { - "api-version": "2024-10-01" - }, - "responses": { - "200": { - "body": { - "value": [ - { - "name": "ymeow", - "isDataAction": true, - "display": { - "provider": "qxyznq", - "resource": "bqfwkox", - "operation": "td", - "description": "eikaaucpxk" - }, - "origin": "user", - "actionType": "Internal" - } - ], - "nextLink": "https://sample.com/nextLink" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Operations_List_MinimumSet_Gen.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Operations_List_MinimumSet_Gen.json deleted file mode 100644 index 3cc3f3a1cfa..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Operations_List_MinimumSet_Gen.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "title": "Operations_List - generated by [MinimumSet] rule", - "operationId": "Operations_List", - "parameters": { - "api-version": "2024-10-01" - }, - "responses": { - "200": { - "body": {} - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/main.tsp deleted file mode 100644 index cc51e1b1f76..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/main.tsp +++ /dev/null @@ -1,30 +0,0 @@ -import "@typespec/rest"; -import "@typespec/versioning"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "./employee.tsp"; - -using TypeSpec.Http; -using TypeSpec.Rest; -using TypeSpec.Versioning; -using Azure.Core; -using Azure.ResourceManager; - -/** Microsoft.Widget Resource Provider management API. */ -@armProviderNamespace -@service(#{ title: "Widget" }) -@versioned(Microsoft.Widget.Versions) -namespace Microsoft.Widget; - -/** The available API versions. */ -enum Versions { - /** 2021-10-01 version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - v2021_10_01: "2021-10-01", - - /** 2024-10-01 version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - v2024_10_01: "2024-10-01", -} - -interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/package.json b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/package.json deleted file mode 100644 index 9b0af8bcd6e..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "azure-rest-api-specs", - "devDependencies": { - "@azure-tools/typespec-autorest": "0.66.0", - "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-resource-manager": "0.66.0", - "@azure-tools/typespec-azure-rulesets": "0.66.0", - "@azure-tools/typespec-client-generator-cli": "0.31.0", - "@azure-tools/typespec-client-generator-core": "0.66.3", - "@typespec/compiler": "1.10.0", - "@typespec/http": "1.10.0", - "@typespec/openapi": "1.10.0", - "@typespec/openapi3": "1.10.0", - "@typespec/rest": "0.80.0", - "@typespec/versioning": "0.80.0" - }, - "overrides": { - "@typespec/asset-emitter": "0.79.1", - "get-uri": "^6.0.5", - "minimatch@^3.0.0": "^3.1.5", - "superagent": "^10.2.3" - }, - "engines": { - "node": ">=20.0.0", - "npm": ">=10.0.0" - }, - "private": true -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/readme.md b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/readme.md deleted file mode 100644 index 59d18fbc138..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/readme.md +++ /dev/null @@ -1,45 +0,0 @@ -# Widget - -> see https://aka.ms/autorest - -This is the AutoRest configuration file for Widget. - -## Configuration - -### Basic Information - -This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. -This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we -use the native TypeSpec code generation configured in the tspconfig.yaml file. - -```yaml -openapi-type: arm -openapi-subtype: rpaas -tag: package-2024-10-01 -``` - -### Tag: package-2024-10-01 - -These settings apply only when `--tag=package-2024-10-01` is specified on the command line. - -```yaml $(tag) == 'package-2024-10-01' -input-file: - - stable/2024-10-01/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - -### Tag: package-2021-10-01 - -These settings apply only when `--tag=package-2021-10-01` is specified on the command line. - -```yaml $(tag) == 'package-2021-10-01' -input-file: - - stable/2021-10-01/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - ---- diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/shared.tsp deleted file mode 100644 index 1b94bb70503..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/shared.tsp +++ /dev/null @@ -1,8 +0,0 @@ -@doc("Faked shared model") -model FakedSharedModel { - @doc("The tag.") - tag: string; - - @doc("The created date.") - createdAt: utcDateTime; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/tspconfig.yaml deleted file mode 100644 index 9c97da201c0..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/001008-version-add-stable-after-stable/tspconfig.yaml +++ /dev/null @@ -1,44 +0,0 @@ -parameters: - "service-dir": - default: "sdk/widget" -emit: - - "@azure-tools/typespec-autorest" -options: - "@azure-tools/typespec-autorest": - use-read-only-status-schema: true - emitter-output-dir: "{project-root}" - output-file: "{version-status}/{version}/widget.json" - arm-types-dir: "{project-root}/../../../../common-types/resource-management" - "@azure-typespec/http-client-csharp-mgmt": - namespace: "Azure.ResourceManager.Widget" - emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" - "@azure-tools/typespec-python": - emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" - namespace: "azure.mgmt.widget" - generate-test: true - generate-sample: true - flavor: "azure" - "@azure-tools/typespec-java": - emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" - namespace: "com.azure.resourcemanager.widget" - service-name: "Widget" # human-readable service name, whitespace allowed - flavor: azure - "@azure-tools/typespec-ts": - emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" - flavor: azure - experimental-extensible-enums: true - package-details: - name: "@azure/arm-widget" - "@azure-tools/typespec-go": - service-dir: "sdk/resourcemanager/widget" - emitter-output-dir: "{output-dir}/{service-dir}/armwidget" - module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" - fix-const-stuttering: true - flavor: "azure" - generate-samples: true - generate-fakes: true - head-as-boolean: true - inject-spans: true -linter: - extends: - - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/employee.tsp deleted file mode 100644 index 8dd5a2464ae..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/employee.tsp +++ /dev/null @@ -1,104 +0,0 @@ -import "@typespec/rest"; -import "@typespec/http"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; - -using TypeSpec.Rest; -using TypeSpec.Http; -using Azure.Core; -using Azure.ResourceManager; - -namespace Microsoft.Widget; - -/** Employee resource */ -model Employee is TrackedResource { - ...ResourceNameParameter; - ...ManagedServiceIdentityProperty; -} - -/** Employee properties */ -model EmployeeProperties { - /** Age of employee */ - age?: int32; - - /** City of employee */ - city?: string; - - /** Email of employee */ - email?: string; - - /** Department of employee */ - department?: string; - - /** Status code of employee */ - statusCode?: string; - - /** Profile of employee */ - @encode("base64url") - profile?: bytes; - - /** The assets belong to the employee. */ - assets: string[]; - - /** The status of the last operation. */ - @visibility(Lifecycle.Read) - provisioningState?: ProvisioningState; -} - -/** Export result model */ -model ExportResult { - /** Exported data */ - data?: string; -} - -/** Employee move request */ -model MoveRequest { - /** The moving from location */ - from: string; - - /** The moving to location */ - to: string; -} - -/** Employee move response */ -model MoveResponse { - /** The status of the move */ - movingStatus: string; -} - -/** The resource provisioning state. */ -@lroStatus -union ProvisioningState { - ResourceProvisioningState, - - /** The resource is being provisioned */ - Provisioning: "Provisioning", - - /** The resource is updating */ - Updating: "Updating", - - /** The resource is being deleted */ - Deleting: "Deleting", - - /** The resource create request has been accepted */ - Accepted: "Accepted", - - string, -} - -@armResourceOperations -interface Employees { - get is ArmResourceRead; - createOrUpdate is ArmResourceCreateOrReplaceAsync; - /** It incorrectly uses ARMResourcePatch* as the operation template.* */ - update is ArmResourcePatchAsync< - Employee, - Azure.ResourceManager.Foundations.ResourceUpdateModel - >; - delete is ArmResourceDeleteWithoutOkAsync; - listByResourceGroup is ArmResourceListByParent; - listBySubscription is ArmListBySubscription; - - /** Export employee data */ - exportData is ArmResourceActionSync; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/main.tsp deleted file mode 100644 index 2990eb2b363..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/main.tsp +++ /dev/null @@ -1,32 +0,0 @@ -import "@typespec/http"; -import "@typespec/rest"; -import "@typespec/versioning"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "./employee.tsp"; - -using TypeSpec.Http; -using TypeSpec.Rest; -using TypeSpec.Versioning; -using Azure.Core; -using Azure.ResourceManager; - -/** Microsoft.Widget Resource Provider management API. */ -@armProviderNamespace -@service(#{ title: "Widget" }) -@versioned(Microsoft.Widget.Versions) -namespace Microsoft.Widget; - -/** The available API versions. */ -enum Versions { - /** 2021-11-01 version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - v2021_11_01: "2021-11-01", - - /** 2024-10-01-preview version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - @previewVersion - v2024_10_01_preview: "2024-10-01-preview", -} - -interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/package.json b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/package.json deleted file mode 100644 index 9b0af8bcd6e..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "azure-rest-api-specs", - "devDependencies": { - "@azure-tools/typespec-autorest": "0.66.0", - "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-resource-manager": "0.66.0", - "@azure-tools/typespec-azure-rulesets": "0.66.0", - "@azure-tools/typespec-client-generator-cli": "0.31.0", - "@azure-tools/typespec-client-generator-core": "0.66.3", - "@typespec/compiler": "1.10.0", - "@typespec/http": "1.10.0", - "@typespec/openapi": "1.10.0", - "@typespec/openapi3": "1.10.0", - "@typespec/rest": "0.80.0", - "@typespec/versioning": "0.80.0" - }, - "overrides": { - "@typespec/asset-emitter": "0.79.1", - "get-uri": "^6.0.5", - "minimatch@^3.0.0": "^3.1.5", - "superagent": "^10.2.3" - }, - "engines": { - "node": ">=20.0.0", - "npm": ">=10.0.0" - }, - "private": true -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/preview/2024-10-01-preview/widget.json b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/preview/2024-10-01-preview/widget.json deleted file mode 100644 index 808a45ab360..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/preview/2024-10-01-preview/widget.json +++ /dev/null @@ -1,710 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "Widget", - "version": "2024-10-01-preview", - "description": "Microsoft.Widget Resource Provider management API.", - "x-typespec-generated": [ - { - "emitter": "@azure-tools/typespec-autorest" - } - ] - }, - "schemes": [ - "https" - ], - "host": "management.azure.com", - "produces": [ - "application/json" - ], - "consumes": [ - "application/json" - ], - "security": [ - { - "azure_auth": [ - "user_impersonation" - ] - } - ], - "securityDefinitions": { - "azure_auth": { - "type": "oauth2", - "description": "Azure Active Directory OAuth2 Flow.", - "flow": "implicit", - "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", - "scopes": { - "user_impersonation": "impersonate your user account" - } - } - }, - "tags": [ - { - "name": "Operations" - }, - { - "name": "Employees" - } - ], - "paths": { - "/providers/Microsoft.Widget/operations": { - "get": { - "operationId": "Operations_List", - "tags": [ - "Operations" - ], - "description": "List the operations for the provider", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/OperationListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/providers/Microsoft.Widget/employees": { - "get": { - "operationId": "Employees_ListBySubscription", - "tags": [ - "Employees" - ], - "description": "List Employee resources by subscription ID", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/EmployeeListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees": { - "get": { - "operationId": "Employees_ListByResourceGroup", - "tags": [ - "Employees" - ], - "description": "List Employee resources by resource group", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/EmployeeListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}": { - "get": { - "operationId": "Employees_Get", - "tags": [ - "Employees" - ], - "description": "Get a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - }, - "put": { - "operationId": "Employees_CreateOrUpdate", - "tags": [ - "Employees" - ], - "description": "Create a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - }, - { - "name": "resource", - "in": "body", - "description": "Resource create parameters.", - "required": true, - "schema": { - "$ref": "#/definitions/Employee" - } - } - ], - "responses": { - "200": { - "description": "Resource 'Employee' update operation succeeded", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "201": { - "description": "Resource 'Employee' create operation succeeded", - "schema": { - "$ref": "#/definitions/Employee" - }, - "headers": { - "Azure-AsyncOperation": { - "type": "string", - "description": "A link to the status monitor" - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "azure-async-operation" - }, - "x-ms-long-running-operation": true - }, - "patch": { - "operationId": "Employees_Update", - "tags": [ - "Employees" - ], - "description": "It incorrectly uses ARMResourcePatch* as the operation template.*", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - }, - { - "name": "properties", - "in": "body", - "description": "The resource properties to be updated.", - "required": true, - "schema": { - "$ref": "#/definitions/EmployeeUpdate" - } - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "202": { - "description": "Resource update request accepted.", - "headers": { - "Location": { - "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "location" - }, - "x-ms-long-running-operation": true - }, - "delete": { - "operationId": "Employees_Delete", - "tags": [ - "Employees" - ], - "description": "Delete a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "202": { - "description": "Resource deletion accepted.", - "headers": { - "Location": { - "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "204": { - "description": "Resource does not exist." - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "location" - }, - "x-ms-long-running-operation": true - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}/exportData": { - "post": { - "operationId": "Employees_ExportData", - "tags": [ - "Employees" - ], - "description": "Export employee data", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/ExportResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - } - } - }, - "definitions": { - "Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate": { - "type": "object", - "description": "Managed service identity (system assigned and/or user assigned identities)", - "properties": { - "type": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentityType", - "description": "The type of managed identity assigned to this resource." - }, - "userAssignedIdentities": { - "type": "object", - "description": "The identities assigned to this resource by the user.", - "additionalProperties": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/UserAssignedIdentity", - "x-nullable": true - } - } - } - }, - "Azure.ResourceManager.CommonTypes.TrackedResourceUpdate": { - "type": "object", - "title": "Tracked Resource", - "description": "The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'", - "properties": { - "tags": { - "type": "object", - "description": "Resource tags.", - "additionalProperties": { - "type": "string" - } - } - }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/Resource" - } - ] - }, - "Employee": { - "type": "object", - "description": "Employee resource", - "properties": { - "properties": { - "$ref": "#/definitions/EmployeeProperties", - "description": "The resource-specific properties for this resource." - }, - "identity": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentity", - "description": "The managed service identities assigned to this resource." - } - }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/TrackedResource" - } - ] - }, - "EmployeeListResult": { - "type": "object", - "description": "The response of a Employee list operation.", - "properties": { - "value": { - "type": "array", - "description": "The Employee items on this page", - "items": { - "$ref": "#/definitions/Employee" - } - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "required": [ - "value" - ] - }, - "EmployeeProperties": { - "type": "object", - "description": "Employee properties", - "properties": { - "age": { - "type": "integer", - "format": "int32", - "description": "Age of employee" - }, - "city": { - "type": "string", - "description": "City of employee" - }, - "email": { - "type": "string", - "description": "Email of employee" - }, - "department": { - "type": "string", - "description": "Department of employee" - }, - "statusCode": { - "type": "string", - "description": "Status code of employee" - }, - "profile": { - "type": "string", - "format": "base64url", - "description": "Profile of employee" - }, - "assets": { - "type": "array", - "description": "The assets belong to the employee.", - "items": { - "type": "string" - } - }, - "provisioningState": { - "$ref": "#/definitions/ProvisioningState", - "description": "The status of the last operation.", - "readOnly": true - } - }, - "required": [ - "assets" - ] - }, - "EmployeePropertiesUpdate": { - "type": "object", - "description": "Employee properties", - "properties": { - "age": { - "type": "integer", - "format": "int32", - "description": "Age of employee" - }, - "city": { - "type": "string", - "description": "City of employee" - }, - "email": { - "type": "string", - "description": "Email of employee" - }, - "department": { - "type": "string", - "description": "Department of employee" - }, - "statusCode": { - "type": "string", - "description": "Status code of employee" - }, - "profile": { - "type": "string", - "format": "base64url", - "description": "Profile of employee" - }, - "assets": { - "type": "array", - "description": "The assets belong to the employee.", - "items": { - "type": "string" - } - } - } - }, - "EmployeeUpdate": { - "type": "object", - "description": "Employee resource", - "properties": { - "properties": { - "$ref": "#/definitions/EmployeePropertiesUpdate", - "description": "The resource-specific properties for this resource." - }, - "identity": { - "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate", - "description": "The managed service identities assigned to this resource." - } - }, - "allOf": [ - { - "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.TrackedResourceUpdate" - } - ] - }, - "ExportResult": { - "type": "object", - "description": "Export result model", - "properties": { - "data": { - "type": "string", - "description": "Exported data" - } - } - }, - "MoveRequest": { - "type": "object", - "description": "Employee move request", - "properties": { - "from": { - "type": "string", - "description": "The moving from location" - }, - "to": { - "type": "string", - "description": "The moving to location" - } - }, - "required": [ - "from", - "to" - ] - }, - "MoveResponse": { - "type": "object", - "description": "Employee move response", - "properties": { - "movingStatus": { - "type": "string", - "description": "The status of the move" - } - }, - "required": [ - "movingStatus" - ] - }, - "ProvisioningState": { - "type": "string", - "description": "The resource provisioning state.", - "enum": [ - "Succeeded", - "Failed", - "Canceled", - "Provisioning", - "Updating", - "Deleting", - "Accepted" - ], - "x-ms-enum": { - "name": "ProvisioningState", - "modelAsString": true, - "values": [ - { - "name": "Succeeded", - "value": "Succeeded", - "description": "Resource has been created." - }, - { - "name": "Failed", - "value": "Failed", - "description": "Resource creation failed." - }, - { - "name": "Canceled", - "value": "Canceled", - "description": "Resource creation was canceled." - }, - { - "name": "Provisioning", - "value": "Provisioning", - "description": "The resource is being provisioned" - }, - { - "name": "Updating", - "value": "Updating", - "description": "The resource is updating" - }, - { - "name": "Deleting", - "value": "Deleting", - "description": "The resource is being deleted" - }, - { - "name": "Accepted", - "value": "Accepted", - "description": "The resource create request has been accepted" - } - ] - }, - "readOnly": true - } - }, - "parameters": {} -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/readme.md b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/readme.md deleted file mode 100644 index 3c4a3d353b9..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/readme.md +++ /dev/null @@ -1,45 +0,0 @@ -# Widget - -> see https://aka.ms/autorest - -This is the AutoRest configuration file for Widget. - -## Configuration - -### Basic Information - -This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. -This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we -use the native TypeSpec code generation configured in the tspconfig.yaml file. - -```yaml -openapi-type: arm -openapi-subtype: rpaas -tag: package-2021-11-01 -``` - -### Tag: package-2021-11-01 - -These settings apply only when `--tag=package-2021-11-01` is specified on the command line. - -```yaml $(tag) == 'package-2021-11-01' -input-file: - - stable/2021-11-01/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - -### Tag: package-2021-10-01-preview - -These settings apply only when `--tag=package-2021-10-01-preview` is specified on the command line. - -```yaml $(tag) == 'package-2021-10-01-preview' -input-file: - - preview/2021-10-01-preview/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - ---- diff --git a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/shared.tsp deleted file mode 100644 index 1b94bb70503..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/shared.tsp +++ /dev/null @@ -1,8 +0,0 @@ -@doc("Faked shared model") -model FakedSharedModel { - @doc("The tag.") - tag: string; - - @doc("The created date.") - createdAt: utcDateTime; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/stable/2021-11-01/widget.json b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/stable/2021-11-01/widget.json deleted file mode 100644 index 09a334e46e5..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/stable/2021-11-01/widget.json +++ /dev/null @@ -1,710 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "Widget", - "version": "2021-11-01", - "description": "Microsoft.Widget Resource Provider management API.", - "x-typespec-generated": [ - { - "emitter": "@azure-tools/typespec-autorest" - } - ] - }, - "schemes": [ - "https" - ], - "host": "management.azure.com", - "produces": [ - "application/json" - ], - "consumes": [ - "application/json" - ], - "security": [ - { - "azure_auth": [ - "user_impersonation" - ] - } - ], - "securityDefinitions": { - "azure_auth": { - "type": "oauth2", - "description": "Azure Active Directory OAuth2 Flow.", - "flow": "implicit", - "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", - "scopes": { - "user_impersonation": "impersonate your user account" - } - } - }, - "tags": [ - { - "name": "Operations" - }, - { - "name": "Employees" - } - ], - "paths": { - "/providers/Microsoft.Widget/operations": { - "get": { - "operationId": "Operations_List", - "tags": [ - "Operations" - ], - "description": "List the operations for the provider", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/OperationListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/providers/Microsoft.Widget/employees": { - "get": { - "operationId": "Employees_ListBySubscription", - "tags": [ - "Employees" - ], - "description": "List Employee resources by subscription ID", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/EmployeeListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees": { - "get": { - "operationId": "Employees_ListByResourceGroup", - "tags": [ - "Employees" - ], - "description": "List Employee resources by resource group", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/EmployeeListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}": { - "get": { - "operationId": "Employees_Get", - "tags": [ - "Employees" - ], - "description": "Get a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - }, - "put": { - "operationId": "Employees_CreateOrUpdate", - "tags": [ - "Employees" - ], - "description": "Create a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - }, - { - "name": "resource", - "in": "body", - "description": "Resource create parameters.", - "required": true, - "schema": { - "$ref": "#/definitions/Employee" - } - } - ], - "responses": { - "200": { - "description": "Resource 'Employee' update operation succeeded", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "201": { - "description": "Resource 'Employee' create operation succeeded", - "schema": { - "$ref": "#/definitions/Employee" - }, - "headers": { - "Azure-AsyncOperation": { - "type": "string", - "description": "A link to the status monitor" - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "azure-async-operation" - }, - "x-ms-long-running-operation": true - }, - "patch": { - "operationId": "Employees_Update", - "tags": [ - "Employees" - ], - "description": "It incorrectly uses ARMResourcePatch* as the operation template.*", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - }, - { - "name": "properties", - "in": "body", - "description": "The resource properties to be updated.", - "required": true, - "schema": { - "$ref": "#/definitions/EmployeeUpdate" - } - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "202": { - "description": "Resource update request accepted.", - "headers": { - "Location": { - "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "location" - }, - "x-ms-long-running-operation": true - }, - "delete": { - "operationId": "Employees_Delete", - "tags": [ - "Employees" - ], - "description": "Delete a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "202": { - "description": "Resource deletion accepted.", - "headers": { - "Location": { - "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "204": { - "description": "Resource does not exist." - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "location" - }, - "x-ms-long-running-operation": true - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}/exportData": { - "post": { - "operationId": "Employees_ExportData", - "tags": [ - "Employees" - ], - "description": "Export employee data", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/ExportResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - } - } - }, - "definitions": { - "Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate": { - "type": "object", - "description": "Managed service identity (system assigned and/or user assigned identities)", - "properties": { - "type": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentityType", - "description": "The type of managed identity assigned to this resource." - }, - "userAssignedIdentities": { - "type": "object", - "description": "The identities assigned to this resource by the user.", - "additionalProperties": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/UserAssignedIdentity", - "x-nullable": true - } - } - } - }, - "Azure.ResourceManager.CommonTypes.TrackedResourceUpdate": { - "type": "object", - "title": "Tracked Resource", - "description": "The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'", - "properties": { - "tags": { - "type": "object", - "description": "Resource tags.", - "additionalProperties": { - "type": "string" - } - } - }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/Resource" - } - ] - }, - "Employee": { - "type": "object", - "description": "Employee resource", - "properties": { - "properties": { - "$ref": "#/definitions/EmployeeProperties", - "description": "The resource-specific properties for this resource." - }, - "identity": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentity", - "description": "The managed service identities assigned to this resource." - } - }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/TrackedResource" - } - ] - }, - "EmployeeListResult": { - "type": "object", - "description": "The response of a Employee list operation.", - "properties": { - "value": { - "type": "array", - "description": "The Employee items on this page", - "items": { - "$ref": "#/definitions/Employee" - } - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "required": [ - "value" - ] - }, - "EmployeeProperties": { - "type": "object", - "description": "Employee properties", - "properties": { - "age": { - "type": "integer", - "format": "int32", - "description": "Age of employee" - }, - "city": { - "type": "string", - "description": "City of employee" - }, - "email": { - "type": "string", - "description": "Email of employee" - }, - "department": { - "type": "string", - "description": "Department of employee" - }, - "statusCode": { - "type": "string", - "description": "Status code of employee" - }, - "profile": { - "type": "string", - "format": "base64url", - "description": "Profile of employee" - }, - "assets": { - "type": "array", - "description": "The assets belong to the employee.", - "items": { - "type": "string" - } - }, - "provisioningState": { - "$ref": "#/definitions/ProvisioningState", - "description": "The status of the last operation.", - "readOnly": true - } - }, - "required": [ - "assets" - ] - }, - "EmployeePropertiesUpdate": { - "type": "object", - "description": "Employee properties", - "properties": { - "age": { - "type": "integer", - "format": "int32", - "description": "Age of employee" - }, - "city": { - "type": "string", - "description": "City of employee" - }, - "email": { - "type": "string", - "description": "Email of employee" - }, - "department": { - "type": "string", - "description": "Department of employee" - }, - "statusCode": { - "type": "string", - "description": "Status code of employee" - }, - "profile": { - "type": "string", - "format": "base64url", - "description": "Profile of employee" - }, - "assets": { - "type": "array", - "description": "The assets belong to the employee.", - "items": { - "type": "string" - } - } - } - }, - "EmployeeUpdate": { - "type": "object", - "description": "Employee resource", - "properties": { - "properties": { - "$ref": "#/definitions/EmployeePropertiesUpdate", - "description": "The resource-specific properties for this resource." - }, - "identity": { - "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate", - "description": "The managed service identities assigned to this resource." - } - }, - "allOf": [ - { - "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.TrackedResourceUpdate" - } - ] - }, - "ExportResult": { - "type": "object", - "description": "Export result model", - "properties": { - "data": { - "type": "string", - "description": "Exported data" - } - } - }, - "MoveRequest": { - "type": "object", - "description": "Employee move request", - "properties": { - "from": { - "type": "string", - "description": "The moving from location" - }, - "to": { - "type": "string", - "description": "The moving to location" - } - }, - "required": [ - "from", - "to" - ] - }, - "MoveResponse": { - "type": "object", - "description": "Employee move response", - "properties": { - "movingStatus": { - "type": "string", - "description": "The status of the move" - } - }, - "required": [ - "movingStatus" - ] - }, - "ProvisioningState": { - "type": "string", - "description": "The resource provisioning state.", - "enum": [ - "Succeeded", - "Failed", - "Canceled", - "Provisioning", - "Updating", - "Deleting", - "Accepted" - ], - "x-ms-enum": { - "name": "ProvisioningState", - "modelAsString": true, - "values": [ - { - "name": "Succeeded", - "value": "Succeeded", - "description": "Resource has been created." - }, - { - "name": "Failed", - "value": "Failed", - "description": "Resource creation failed." - }, - { - "name": "Canceled", - "value": "Canceled", - "description": "Resource creation was canceled." - }, - { - "name": "Provisioning", - "value": "Provisioning", - "description": "The resource is being provisioned" - }, - { - "name": "Updating", - "value": "Updating", - "description": "The resource is updating" - }, - { - "name": "Deleting", - "value": "Deleting", - "description": "The resource is being deleted" - }, - { - "name": "Accepted", - "value": "Accepted", - "description": "The resource create request has been accepted" - } - ] - }, - "readOnly": true - } - }, - "parameters": {} -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/tspconfig.yaml deleted file mode 100644 index 9c97da201c0..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002003-ARM-define-full-update-operation/tspconfig.yaml +++ /dev/null @@ -1,44 +0,0 @@ -parameters: - "service-dir": - default: "sdk/widget" -emit: - - "@azure-tools/typespec-autorest" -options: - "@azure-tools/typespec-autorest": - use-read-only-status-schema: true - emitter-output-dir: "{project-root}" - output-file: "{version-status}/{version}/widget.json" - arm-types-dir: "{project-root}/../../../../common-types/resource-management" - "@azure-typespec/http-client-csharp-mgmt": - namespace: "Azure.ResourceManager.Widget" - emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" - "@azure-tools/typespec-python": - emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" - namespace: "azure.mgmt.widget" - generate-test: true - generate-sample: true - flavor: "azure" - "@azure-tools/typespec-java": - emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" - namespace: "com.azure.resourcemanager.widget" - service-name: "Widget" # human-readable service name, whitespace allowed - flavor: azure - "@azure-tools/typespec-ts": - emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" - flavor: azure - experimental-extensible-enums: true - package-details: - name: "@azure/arm-widget" - "@azure-tools/typespec-go": - service-dir: "sdk/resourcemanager/widget" - emitter-output-dir: "{output-dir}/{service-dir}/armwidget" - module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" - fix-const-stuttering: true - flavor: "azure" - generate-samples: true - generate-fakes: true - head-as-boolean: true - inject-spans: true -linter: - extends: - - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/badgeAssignment.tsp b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/badgeAssignment.tsp deleted file mode 100644 index 6f734df0af4..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/badgeAssignment.tsp +++ /dev/null @@ -1,41 +0,0 @@ -import "@typespec/rest"; -import "@typespec/http"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; - -using TypeSpec.Rest; -using TypeSpec.Http; -using Azure.Core; -using Azure.ResourceManager; - -namespace Microsoft.Widget; - -/** Badge assignment extension resource */ -model BadgeAssignment is ProxyResource { - ...ResourceNameParameter; -} - -/** Badge assignment properties */ -model BadgeAssignmentProperties { - /** Identifier of the badge. */ - badgeId: string; - - /** The date when the badge was assigned. */ - assignedDate?: plainDate; - - /** Indicates whether the badge assignment is active. */ - isActive?: boolean; - - /** The status of the last operation. */ - @visibility(Lifecycle.Read) - provisioningState?: ProvisioningState; -} - -@armResourceOperations -interface BadgeAssignments { - get is ArmResourceRead; - createOrUpdate is ArmResourceCreateOrReplaceAsync; - update is ArmResourcePatchSync; - delete is ArmResourceDeleteWithoutOkAsync; - listByParent is ArmResourceListByParent; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/employee.tsp deleted file mode 100644 index 0436d134471..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/employee.tsp +++ /dev/null @@ -1,100 +0,0 @@ -import "@typespec/rest"; -import "@typespec/http"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; - -using TypeSpec.Rest; -using TypeSpec.Http; -using Azure.Core; -using Azure.ResourceManager; - -namespace Microsoft.Widget; - -/** Employee resource */ -model Employee is TrackedResource { - ...ResourceNameParameter; - ...ManagedServiceIdentityProperty; -} - -/** Employee properties */ -model EmployeeProperties { - /** Age of employee */ - age?: int32; - - /** City of employee */ - city?: string; - - /** Email of employee */ - email?: string; - - /** Department of employee */ - department?: string; - - /** Status code of employee */ - statusCode?: string; - - /** Profile of employee */ - @encode("base64url") - profile?: bytes; - - /** The assets belong to the employee. */ - assets: string[]; - - /** The status of the last operation. */ - @visibility(Lifecycle.Read) - provisioningState?: ProvisioningState; -} - -/** Export result model */ -model ExportResult { - /** Exported data */ - data?: string; -} - -/** Employee move request */ -model MoveRequest { - /** The moving from location */ - from: string; - - /** The moving to location */ - to: string; -} - -/** Employee move response */ -model MoveResponse { - /** The status of the move */ - movingStatus: string; -} - -/** The resource provisioning state. */ -@lroStatus -union ProvisioningState { - ResourceProvisioningState, - - /** The resource is being provisioned */ - Provisioning: "Provisioning", - - /** The resource is updating */ - Updating: "Updating", - - /** The resource is being deleted */ - Deleting: "Deleting", - - /** The resource create request has been accepted */ - Accepted: "Accepted", - - string, -} - -@armResourceOperations -interface Employees { - get is ArmResourceRead; - createOrUpdate is ArmResourceCreateOrReplaceAsync; - update is ArmResourcePatchSync; - delete is ArmResourceDeleteWithoutOkAsync; - listByResourceGroup is ArmResourceListByParent; - listBySubscription is ArmListBySubscription; - - /** Export employee data */ - exportData is ArmResourceActionSync; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/main.tsp deleted file mode 100644 index bb644b57201..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/main.tsp +++ /dev/null @@ -1,33 +0,0 @@ -import "@typespec/http"; -import "@typespec/rest"; -import "@typespec/versioning"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "./employee.tsp"; -import "./badgeAssignment.tsp"; - -using TypeSpec.Http; -using TypeSpec.Rest; -using TypeSpec.Versioning; -using Azure.Core; -using Azure.ResourceManager; - -/** Microsoft.Widget Resource Provider management API. */ -@armProviderNamespace -@service(#{ title: "Widget" }) -@versioned(Microsoft.Widget.Versions) -namespace Microsoft.Widget; - -/** The available API versions. */ -enum Versions { - /** 2021-11-01 version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - v2021_11_01: "2021-11-01", - - /** 2024-10-01-preview version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - @previewVersion - v2024_10_01_preview: "2024-10-01-preview", -} - -interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/package.json b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/package.json deleted file mode 100644 index 9b0af8bcd6e..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "azure-rest-api-specs", - "devDependencies": { - "@azure-tools/typespec-autorest": "0.66.0", - "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-resource-manager": "0.66.0", - "@azure-tools/typespec-azure-rulesets": "0.66.0", - "@azure-tools/typespec-client-generator-cli": "0.31.0", - "@azure-tools/typespec-client-generator-core": "0.66.3", - "@typespec/compiler": "1.10.0", - "@typespec/http": "1.10.0", - "@typespec/openapi": "1.10.0", - "@typespec/openapi3": "1.10.0", - "@typespec/rest": "0.80.0", - "@typespec/versioning": "0.80.0" - }, - "overrides": { - "@typespec/asset-emitter": "0.79.1", - "get-uri": "^6.0.5", - "minimatch@^3.0.0": "^3.1.5", - "superagent": "^10.2.3" - }, - "engines": { - "node": ">=20.0.0", - "npm": ">=10.0.0" - }, - "private": true -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/preview/2024-10-01-preview/widget.json b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/preview/2024-10-01-preview/widget.json deleted file mode 100644 index ea0837c4662..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/preview/2024-10-01-preview/widget.json +++ /dev/null @@ -1,1045 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "Widget", - "version": "2024-10-01-preview", - "description": "Microsoft.Widget Resource Provider management API.", - "x-typespec-generated": [ - { - "emitter": "@azure-tools/typespec-autorest" - } - ] - }, - "schemes": [ - "https" - ], - "host": "management.azure.com", - "produces": [ - "application/json" - ], - "consumes": [ - "application/json" - ], - "security": [ - { - "azure_auth": [ - "user_impersonation" - ] - } - ], - "securityDefinitions": { - "azure_auth": { - "type": "oauth2", - "description": "Azure Active Directory OAuth2 Flow.", - "flow": "implicit", - "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", - "scopes": { - "user_impersonation": "impersonate your user account" - } - } - }, - "tags": [ - { - "name": "Operations" - }, - { - "name": "Employees" - }, - { - "name": "BadgeAssignments" - } - ], - "paths": { - "/providers/Microsoft.Widget/operations": { - "get": { - "operationId": "Operations_List", - "tags": [ - "Operations" - ], - "description": "List the operations for the provider", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/OperationListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/providers/Microsoft.Widget/employees": { - "get": { - "operationId": "Employees_ListBySubscription", - "tags": [ - "Employees" - ], - "description": "List Employee resources by subscription ID", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/EmployeeListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/badgeAssignments": { - "get": { - "operationId": "BadgeAssignments_ListByParent", - "tags": [ - "BadgeAssignments" - ], - "description": "List BadgeAssignment resources by resource group", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/BadgeAssignmentListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/badgeAssignments/{badgeAssignmentName}": { - "get": { - "operationId": "BadgeAssignments_Get", - "tags": [ - "BadgeAssignments" - ], - "description": "Get a BadgeAssignment", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "badgeAssignmentName", - "in": "path", - "description": "The name of the BadgeAssignment", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/BadgeAssignment" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - }, - "put": { - "operationId": "BadgeAssignments_CreateOrUpdate", - "tags": [ - "BadgeAssignments" - ], - "description": "Create a BadgeAssignment", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "badgeAssignmentName", - "in": "path", - "description": "The name of the BadgeAssignment", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - }, - { - "name": "resource", - "in": "body", - "description": "Resource create parameters.", - "required": true, - "schema": { - "$ref": "#/definitions/BadgeAssignment" - } - } - ], - "responses": { - "200": { - "description": "Resource 'BadgeAssignment' update operation succeeded", - "schema": { - "$ref": "#/definitions/BadgeAssignment" - } - }, - "201": { - "description": "Resource 'BadgeAssignment' create operation succeeded", - "schema": { - "$ref": "#/definitions/BadgeAssignment" - }, - "headers": { - "Azure-AsyncOperation": { - "type": "string", - "description": "A link to the status monitor" - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "azure-async-operation" - }, - "x-ms-long-running-operation": true - }, - "patch": { - "operationId": "BadgeAssignments_Update", - "tags": [ - "BadgeAssignments" - ], - "description": "Update a BadgeAssignment", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "badgeAssignmentName", - "in": "path", - "description": "The name of the BadgeAssignment", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - }, - { - "name": "properties", - "in": "body", - "description": "The resource properties to be updated.", - "required": true, - "schema": { - "$ref": "#/definitions/BadgeAssignmentUpdate" - } - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/BadgeAssignment" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - }, - "delete": { - "operationId": "BadgeAssignments_Delete", - "tags": [ - "BadgeAssignments" - ], - "description": "Delete a BadgeAssignment", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "badgeAssignmentName", - "in": "path", - "description": "The name of the BadgeAssignment", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "202": { - "description": "Resource deletion accepted.", - "headers": { - "Location": { - "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "204": { - "description": "Resource does not exist." - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "location" - }, - "x-ms-long-running-operation": true - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees": { - "get": { - "operationId": "Employees_ListByResourceGroup", - "tags": [ - "Employees" - ], - "description": "List Employee resources by resource group", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/EmployeeListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}": { - "get": { - "operationId": "Employees_Get", - "tags": [ - "Employees" - ], - "description": "Get a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - }, - "put": { - "operationId": "Employees_CreateOrUpdate", - "tags": [ - "Employees" - ], - "description": "Create a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - }, - { - "name": "resource", - "in": "body", - "description": "Resource create parameters.", - "required": true, - "schema": { - "$ref": "#/definitions/Employee" - } - } - ], - "responses": { - "200": { - "description": "Resource 'Employee' update operation succeeded", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "201": { - "description": "Resource 'Employee' create operation succeeded", - "schema": { - "$ref": "#/definitions/Employee" - }, - "headers": { - "Azure-AsyncOperation": { - "type": "string", - "description": "A link to the status monitor" - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "azure-async-operation" - }, - "x-ms-long-running-operation": true - }, - "patch": { - "operationId": "Employees_Update", - "tags": [ - "Employees" - ], - "description": "Update a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - }, - { - "name": "properties", - "in": "body", - "description": "The resource properties to be updated.", - "required": true, - "schema": { - "$ref": "#/definitions/EmployeeUpdate" - } - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - }, - "delete": { - "operationId": "Employees_Delete", - "tags": [ - "Employees" - ], - "description": "Delete a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "202": { - "description": "Resource deletion accepted.", - "headers": { - "Location": { - "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "204": { - "description": "Resource does not exist." - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "location" - }, - "x-ms-long-running-operation": true - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}/exportData": { - "post": { - "operationId": "Employees_ExportData", - "tags": [ - "Employees" - ], - "description": "Export employee data", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/ExportResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - } - } - }, - "definitions": { - "Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate": { - "type": "object", - "description": "Managed service identity (system assigned and/or user assigned identities)", - "properties": { - "type": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentityType", - "description": "The type of managed identity assigned to this resource." - }, - "userAssignedIdentities": { - "type": "object", - "description": "The identities assigned to this resource by the user.", - "additionalProperties": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/UserAssignedIdentity", - "x-nullable": true - } - } - } - }, - "Azure.ResourceManager.CommonTypes.TrackedResourceUpdate": { - "type": "object", - "title": "Tracked Resource", - "description": "The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'", - "properties": { - "tags": { - "type": "object", - "description": "Resource tags.", - "additionalProperties": { - "type": "string" - } - } - }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/Resource" - } - ] - }, - "BadgeAssignment": { - "type": "object", - "description": "Badge assignment extension resource", - "properties": { - "properties": { - "$ref": "#/definitions/BadgeAssignmentProperties", - "description": "The resource-specific properties for this resource." - } - }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ProxyResource" - } - ] - }, - "BadgeAssignmentListResult": { - "type": "object", - "description": "The response of a BadgeAssignment list operation.", - "properties": { - "value": { - "type": "array", - "description": "The BadgeAssignment items on this page", - "items": { - "$ref": "#/definitions/BadgeAssignment" - } - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "required": [ - "value" - ] - }, - "BadgeAssignmentProperties": { - "type": "object", - "description": "Badge assignment properties", - "properties": { - "badgeId": { - "type": "string", - "description": "Identifier of the badge." - }, - "assignedDate": { - "type": "string", - "format": "date", - "description": "The date when the badge was assigned." - }, - "isActive": { - "type": "boolean", - "description": "Indicates whether the badge assignment is active." - }, - "provisioningState": { - "$ref": "#/definitions/ProvisioningState", - "description": "The status of the last operation.", - "readOnly": true - } - }, - "required": [ - "badgeId" - ] - }, - "BadgeAssignmentPropertiesUpdate": { - "type": "object", - "description": "Badge assignment properties", - "properties": { - "badgeId": { - "type": "string", - "description": "Identifier of the badge." - }, - "assignedDate": { - "type": "string", - "format": "date", - "description": "The date when the badge was assigned." - }, - "isActive": { - "type": "boolean", - "description": "Indicates whether the badge assignment is active." - } - } - }, - "BadgeAssignmentUpdate": { - "type": "object", - "description": "Badge assignment extension resource", - "properties": { - "properties": { - "$ref": "#/definitions/BadgeAssignmentPropertiesUpdate", - "description": "The resource-specific properties for this resource." - } - }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ProxyResource" - } - ] - }, - "Employee": { - "type": "object", - "description": "Employee resource", - "properties": { - "properties": { - "$ref": "#/definitions/EmployeeProperties", - "description": "The resource-specific properties for this resource." - }, - "identity": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentity", - "description": "The managed service identities assigned to this resource." - } - }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/TrackedResource" - } - ] - }, - "EmployeeListResult": { - "type": "object", - "description": "The response of a Employee list operation.", - "properties": { - "value": { - "type": "array", - "description": "The Employee items on this page", - "items": { - "$ref": "#/definitions/Employee" - } - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "required": [ - "value" - ] - }, - "EmployeeProperties": { - "type": "object", - "description": "Employee properties", - "properties": { - "age": { - "type": "integer", - "format": "int32", - "description": "Age of employee" - }, - "city": { - "type": "string", - "description": "City of employee" - }, - "email": { - "type": "string", - "description": "Email of employee" - }, - "department": { - "type": "string", - "description": "Department of employee" - }, - "statusCode": { - "type": "string", - "description": "Status code of employee" - }, - "profile": { - "type": "string", - "format": "base64url", - "description": "Profile of employee" - }, - "assets": { - "type": "array", - "description": "The assets belong to the employee.", - "items": { - "type": "string" - } - }, - "provisioningState": { - "$ref": "#/definitions/ProvisioningState", - "description": "The status of the last operation.", - "readOnly": true - } - }, - "required": [ - "assets" - ] - }, - "EmployeePropertiesUpdate": { - "type": "object", - "description": "Employee properties", - "properties": { - "age": { - "type": "integer", - "format": "int32", - "description": "Age of employee" - }, - "city": { - "type": "string", - "description": "City of employee" - }, - "email": { - "type": "string", - "description": "Email of employee" - }, - "department": { - "type": "string", - "description": "Department of employee" - }, - "statusCode": { - "type": "string", - "description": "Status code of employee" - }, - "profile": { - "type": "string", - "format": "base64url", - "description": "Profile of employee" - }, - "assets": { - "type": "array", - "description": "The assets belong to the employee.", - "items": { - "type": "string" - } - } - } - }, - "EmployeeUpdate": { - "type": "object", - "description": "Employee resource", - "properties": { - "properties": { - "$ref": "#/definitions/EmployeePropertiesUpdate", - "description": "The resource-specific properties for this resource." - }, - "identity": { - "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate", - "description": "The managed service identities assigned to this resource." - } - }, - "allOf": [ - { - "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.TrackedResourceUpdate" - } - ] - }, - "ExportResult": { - "type": "object", - "description": "Export result model", - "properties": { - "data": { - "type": "string", - "description": "Exported data" - } - } - }, - "MoveRequest": { - "type": "object", - "description": "Employee move request", - "properties": { - "from": { - "type": "string", - "description": "The moving from location" - }, - "to": { - "type": "string", - "description": "The moving to location" - } - }, - "required": [ - "from", - "to" - ] - }, - "MoveResponse": { - "type": "object", - "description": "Employee move response", - "properties": { - "movingStatus": { - "type": "string", - "description": "The status of the move" - } - }, - "required": [ - "movingStatus" - ] - }, - "ProvisioningState": { - "type": "string", - "description": "The resource provisioning state.", - "enum": [ - "Succeeded", - "Failed", - "Canceled", - "Provisioning", - "Updating", - "Deleting", - "Accepted" - ], - "x-ms-enum": { - "name": "ProvisioningState", - "modelAsString": true, - "values": [ - { - "name": "Succeeded", - "value": "Succeeded", - "description": "Resource has been created." - }, - { - "name": "Failed", - "value": "Failed", - "description": "Resource creation failed." - }, - { - "name": "Canceled", - "value": "Canceled", - "description": "Resource creation was canceled." - }, - { - "name": "Provisioning", - "value": "Provisioning", - "description": "The resource is being provisioned" - }, - { - "name": "Updating", - "value": "Updating", - "description": "The resource is updating" - }, - { - "name": "Deleting", - "value": "Deleting", - "description": "The resource is being deleted" - }, - { - "name": "Accepted", - "value": "Accepted", - "description": "The resource create request has been accepted" - } - ] - }, - "readOnly": true - } - }, - "parameters": {} -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/readme.md b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/readme.md deleted file mode 100644 index 3c4a3d353b9..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/readme.md +++ /dev/null @@ -1,45 +0,0 @@ -# Widget - -> see https://aka.ms/autorest - -This is the AutoRest configuration file for Widget. - -## Configuration - -### Basic Information - -This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. -This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we -use the native TypeSpec code generation configured in the tspconfig.yaml file. - -```yaml -openapi-type: arm -openapi-subtype: rpaas -tag: package-2021-11-01 -``` - -### Tag: package-2021-11-01 - -These settings apply only when `--tag=package-2021-11-01` is specified on the command line. - -```yaml $(tag) == 'package-2021-11-01' -input-file: - - stable/2021-11-01/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - -### Tag: package-2021-10-01-preview - -These settings apply only when `--tag=package-2021-10-01-preview` is specified on the command line. - -```yaml $(tag) == 'package-2021-10-01-preview' -input-file: - - preview/2021-10-01-preview/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - ---- diff --git a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/shared.tsp deleted file mode 100644 index 1b94bb70503..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/shared.tsp +++ /dev/null @@ -1,8 +0,0 @@ -@doc("Faked shared model") -model FakedSharedModel { - @doc("The tag.") - tag: string; - - @doc("The created date.") - createdAt: utcDateTime; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/stable/2021-11-01/widget.json b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/stable/2021-11-01/widget.json deleted file mode 100644 index 22560a933ca..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/stable/2021-11-01/widget.json +++ /dev/null @@ -1,1045 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "Widget", - "version": "2021-11-01", - "description": "Microsoft.Widget Resource Provider management API.", - "x-typespec-generated": [ - { - "emitter": "@azure-tools/typespec-autorest" - } - ] - }, - "schemes": [ - "https" - ], - "host": "management.azure.com", - "produces": [ - "application/json" - ], - "consumes": [ - "application/json" - ], - "security": [ - { - "azure_auth": [ - "user_impersonation" - ] - } - ], - "securityDefinitions": { - "azure_auth": { - "type": "oauth2", - "description": "Azure Active Directory OAuth2 Flow.", - "flow": "implicit", - "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", - "scopes": { - "user_impersonation": "impersonate your user account" - } - } - }, - "tags": [ - { - "name": "Operations" - }, - { - "name": "Employees" - }, - { - "name": "BadgeAssignments" - } - ], - "paths": { - "/providers/Microsoft.Widget/operations": { - "get": { - "operationId": "Operations_List", - "tags": [ - "Operations" - ], - "description": "List the operations for the provider", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/OperationListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/providers/Microsoft.Widget/employees": { - "get": { - "operationId": "Employees_ListBySubscription", - "tags": [ - "Employees" - ], - "description": "List Employee resources by subscription ID", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/EmployeeListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/badgeAssignments": { - "get": { - "operationId": "BadgeAssignments_ListByParent", - "tags": [ - "BadgeAssignments" - ], - "description": "List BadgeAssignment resources by resource group", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/BadgeAssignmentListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/badgeAssignments/{badgeAssignmentName}": { - "get": { - "operationId": "BadgeAssignments_Get", - "tags": [ - "BadgeAssignments" - ], - "description": "Get a BadgeAssignment", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "badgeAssignmentName", - "in": "path", - "description": "The name of the BadgeAssignment", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/BadgeAssignment" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - }, - "put": { - "operationId": "BadgeAssignments_CreateOrUpdate", - "tags": [ - "BadgeAssignments" - ], - "description": "Create a BadgeAssignment", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "badgeAssignmentName", - "in": "path", - "description": "The name of the BadgeAssignment", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - }, - { - "name": "resource", - "in": "body", - "description": "Resource create parameters.", - "required": true, - "schema": { - "$ref": "#/definitions/BadgeAssignment" - } - } - ], - "responses": { - "200": { - "description": "Resource 'BadgeAssignment' update operation succeeded", - "schema": { - "$ref": "#/definitions/BadgeAssignment" - } - }, - "201": { - "description": "Resource 'BadgeAssignment' create operation succeeded", - "schema": { - "$ref": "#/definitions/BadgeAssignment" - }, - "headers": { - "Azure-AsyncOperation": { - "type": "string", - "description": "A link to the status monitor" - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "azure-async-operation" - }, - "x-ms-long-running-operation": true - }, - "patch": { - "operationId": "BadgeAssignments_Update", - "tags": [ - "BadgeAssignments" - ], - "description": "Update a BadgeAssignment", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "badgeAssignmentName", - "in": "path", - "description": "The name of the BadgeAssignment", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - }, - { - "name": "properties", - "in": "body", - "description": "The resource properties to be updated.", - "required": true, - "schema": { - "$ref": "#/definitions/BadgeAssignmentUpdate" - } - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/BadgeAssignment" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - }, - "delete": { - "operationId": "BadgeAssignments_Delete", - "tags": [ - "BadgeAssignments" - ], - "description": "Delete a BadgeAssignment", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "badgeAssignmentName", - "in": "path", - "description": "The name of the BadgeAssignment", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "202": { - "description": "Resource deletion accepted.", - "headers": { - "Location": { - "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "204": { - "description": "Resource does not exist." - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "location" - }, - "x-ms-long-running-operation": true - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees": { - "get": { - "operationId": "Employees_ListByResourceGroup", - "tags": [ - "Employees" - ], - "description": "List Employee resources by resource group", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/EmployeeListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}": { - "get": { - "operationId": "Employees_Get", - "tags": [ - "Employees" - ], - "description": "Get a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - }, - "put": { - "operationId": "Employees_CreateOrUpdate", - "tags": [ - "Employees" - ], - "description": "Create a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - }, - { - "name": "resource", - "in": "body", - "description": "Resource create parameters.", - "required": true, - "schema": { - "$ref": "#/definitions/Employee" - } - } - ], - "responses": { - "200": { - "description": "Resource 'Employee' update operation succeeded", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "201": { - "description": "Resource 'Employee' create operation succeeded", - "schema": { - "$ref": "#/definitions/Employee" - }, - "headers": { - "Azure-AsyncOperation": { - "type": "string", - "description": "A link to the status monitor" - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "azure-async-operation" - }, - "x-ms-long-running-operation": true - }, - "patch": { - "operationId": "Employees_Update", - "tags": [ - "Employees" - ], - "description": "Update a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - }, - { - "name": "properties", - "in": "body", - "description": "The resource properties to be updated.", - "required": true, - "schema": { - "$ref": "#/definitions/EmployeeUpdate" - } - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - }, - "delete": { - "operationId": "Employees_Delete", - "tags": [ - "Employees" - ], - "description": "Delete a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "202": { - "description": "Resource deletion accepted.", - "headers": { - "Location": { - "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "204": { - "description": "Resource does not exist." - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "location" - }, - "x-ms-long-running-operation": true - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}/exportData": { - "post": { - "operationId": "Employees_ExportData", - "tags": [ - "Employees" - ], - "description": "Export employee data", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/ExportResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - } - } - }, - "definitions": { - "Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate": { - "type": "object", - "description": "Managed service identity (system assigned and/or user assigned identities)", - "properties": { - "type": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentityType", - "description": "The type of managed identity assigned to this resource." - }, - "userAssignedIdentities": { - "type": "object", - "description": "The identities assigned to this resource by the user.", - "additionalProperties": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/UserAssignedIdentity", - "x-nullable": true - } - } - } - }, - "Azure.ResourceManager.CommonTypes.TrackedResourceUpdate": { - "type": "object", - "title": "Tracked Resource", - "description": "The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'", - "properties": { - "tags": { - "type": "object", - "description": "Resource tags.", - "additionalProperties": { - "type": "string" - } - } - }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/Resource" - } - ] - }, - "BadgeAssignment": { - "type": "object", - "description": "Badge assignment extension resource", - "properties": { - "properties": { - "$ref": "#/definitions/BadgeAssignmentProperties", - "description": "The resource-specific properties for this resource." - } - }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ProxyResource" - } - ] - }, - "BadgeAssignmentListResult": { - "type": "object", - "description": "The response of a BadgeAssignment list operation.", - "properties": { - "value": { - "type": "array", - "description": "The BadgeAssignment items on this page", - "items": { - "$ref": "#/definitions/BadgeAssignment" - } - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "required": [ - "value" - ] - }, - "BadgeAssignmentProperties": { - "type": "object", - "description": "Badge assignment properties", - "properties": { - "badgeId": { - "type": "string", - "description": "Identifier of the badge." - }, - "assignedDate": { - "type": "string", - "format": "date", - "description": "The date when the badge was assigned." - }, - "isActive": { - "type": "boolean", - "description": "Indicates whether the badge assignment is active." - }, - "provisioningState": { - "$ref": "#/definitions/ProvisioningState", - "description": "The status of the last operation.", - "readOnly": true - } - }, - "required": [ - "badgeId" - ] - }, - "BadgeAssignmentPropertiesUpdate": { - "type": "object", - "description": "Badge assignment properties", - "properties": { - "badgeId": { - "type": "string", - "description": "Identifier of the badge." - }, - "assignedDate": { - "type": "string", - "format": "date", - "description": "The date when the badge was assigned." - }, - "isActive": { - "type": "boolean", - "description": "Indicates whether the badge assignment is active." - } - } - }, - "BadgeAssignmentUpdate": { - "type": "object", - "description": "Badge assignment extension resource", - "properties": { - "properties": { - "$ref": "#/definitions/BadgeAssignmentPropertiesUpdate", - "description": "The resource-specific properties for this resource." - } - }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ProxyResource" - } - ] - }, - "Employee": { - "type": "object", - "description": "Employee resource", - "properties": { - "properties": { - "$ref": "#/definitions/EmployeeProperties", - "description": "The resource-specific properties for this resource." - }, - "identity": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentity", - "description": "The managed service identities assigned to this resource." - } - }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/TrackedResource" - } - ] - }, - "EmployeeListResult": { - "type": "object", - "description": "The response of a Employee list operation.", - "properties": { - "value": { - "type": "array", - "description": "The Employee items on this page", - "items": { - "$ref": "#/definitions/Employee" - } - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "required": [ - "value" - ] - }, - "EmployeeProperties": { - "type": "object", - "description": "Employee properties", - "properties": { - "age": { - "type": "integer", - "format": "int32", - "description": "Age of employee" - }, - "city": { - "type": "string", - "description": "City of employee" - }, - "email": { - "type": "string", - "description": "Email of employee" - }, - "department": { - "type": "string", - "description": "Department of employee" - }, - "statusCode": { - "type": "string", - "description": "Status code of employee" - }, - "profile": { - "type": "string", - "format": "base64url", - "description": "Profile of employee" - }, - "assets": { - "type": "array", - "description": "The assets belong to the employee.", - "items": { - "type": "string" - } - }, - "provisioningState": { - "$ref": "#/definitions/ProvisioningState", - "description": "The status of the last operation.", - "readOnly": true - } - }, - "required": [ - "assets" - ] - }, - "EmployeePropertiesUpdate": { - "type": "object", - "description": "Employee properties", - "properties": { - "age": { - "type": "integer", - "format": "int32", - "description": "Age of employee" - }, - "city": { - "type": "string", - "description": "City of employee" - }, - "email": { - "type": "string", - "description": "Email of employee" - }, - "department": { - "type": "string", - "description": "Department of employee" - }, - "statusCode": { - "type": "string", - "description": "Status code of employee" - }, - "profile": { - "type": "string", - "format": "base64url", - "description": "Profile of employee" - }, - "assets": { - "type": "array", - "description": "The assets belong to the employee.", - "items": { - "type": "string" - } - } - } - }, - "EmployeeUpdate": { - "type": "object", - "description": "Employee resource", - "properties": { - "properties": { - "$ref": "#/definitions/EmployeePropertiesUpdate", - "description": "The resource-specific properties for this resource." - }, - "identity": { - "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate", - "description": "The managed service identities assigned to this resource." - } - }, - "allOf": [ - { - "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.TrackedResourceUpdate" - } - ] - }, - "ExportResult": { - "type": "object", - "description": "Export result model", - "properties": { - "data": { - "type": "string", - "description": "Exported data" - } - } - }, - "MoveRequest": { - "type": "object", - "description": "Employee move request", - "properties": { - "from": { - "type": "string", - "description": "The moving from location" - }, - "to": { - "type": "string", - "description": "The moving to location" - } - }, - "required": [ - "from", - "to" - ] - }, - "MoveResponse": { - "type": "object", - "description": "Employee move response", - "properties": { - "movingStatus": { - "type": "string", - "description": "The status of the move" - } - }, - "required": [ - "movingStatus" - ] - }, - "ProvisioningState": { - "type": "string", - "description": "The resource provisioning state.", - "enum": [ - "Succeeded", - "Failed", - "Canceled", - "Provisioning", - "Updating", - "Deleting", - "Accepted" - ], - "x-ms-enum": { - "name": "ProvisioningState", - "modelAsString": true, - "values": [ - { - "name": "Succeeded", - "value": "Succeeded", - "description": "Resource has been created." - }, - { - "name": "Failed", - "value": "Failed", - "description": "Resource creation failed." - }, - { - "name": "Canceled", - "value": "Canceled", - "description": "Resource creation was canceled." - }, - { - "name": "Provisioning", - "value": "Provisioning", - "description": "The resource is being provisioned" - }, - { - "name": "Updating", - "value": "Updating", - "description": "The resource is updating" - }, - { - "name": "Deleting", - "value": "Deleting", - "description": "The resource is being deleted" - }, - { - "name": "Accepted", - "value": "Accepted", - "description": "The resource create request has been accepted" - } - ] - }, - "readOnly": true - } - }, - "parameters": {} -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/tspconfig.yaml deleted file mode 100644 index 9c97da201c0..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002004-ARM-define-extension-resource/tspconfig.yaml +++ /dev/null @@ -1,44 +0,0 @@ -parameters: - "service-dir": - default: "sdk/widget" -emit: - - "@azure-tools/typespec-autorest" -options: - "@azure-tools/typespec-autorest": - use-read-only-status-schema: true - emitter-output-dir: "{project-root}" - output-file: "{version-status}/{version}/widget.json" - arm-types-dir: "{project-root}/../../../../common-types/resource-management" - "@azure-typespec/http-client-csharp-mgmt": - namespace: "Azure.ResourceManager.Widget" - emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" - "@azure-tools/typespec-python": - emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" - namespace: "azure.mgmt.widget" - generate-test: true - generate-sample: true - flavor: "azure" - "@azure-tools/typespec-java": - emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" - namespace: "com.azure.resourcemanager.widget" - service-name: "Widget" # human-readable service name, whitespace allowed - flavor: azure - "@azure-tools/typespec-ts": - emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" - flavor: azure - experimental-extensible-enums: true - package-details: - name: "@azure/arm-widget" - "@azure-tools/typespec-go": - service-dir: "sdk/resourcemanager/widget" - emitter-output-dir: "{output-dir}/{service-dir}/armwidget" - module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" - fix-const-stuttering: true - flavor: "azure" - generate-samples: true - generate-fakes: true - head-as-boolean: true - inject-spans: true -linter: - extends: - - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/main.tsp deleted file mode 100644 index aa109170c02..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/main.tsp +++ /dev/null @@ -1,31 +0,0 @@ -import "@typespec/http"; -import "@typespec/rest"; -import "@typespec/versioning"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; - -using TypeSpec.Http; -using TypeSpec.Rest; -using TypeSpec.Versioning; -using Azure.Core; -using Azure.ResourceManager; - -/** Microsoft.Widget Resource Provider management API. */ -@armProviderNamespace -@service(#{ title: "Widget" }) -@versioned(Microsoft.Widget.Versions) -namespace Microsoft.Widget; - -/** The available API versions. */ -enum Versions { - /** 2021-11-01 version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - v2021_11_01: "2021-11-01", - - /** 2024-10-01-preview version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - @previewVersion - v2024_10_01_preview: "2024-10-01-preview", -} - -interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/package.json b/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/package.json deleted file mode 100644 index 9b0af8bcd6e..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "azure-rest-api-specs", - "devDependencies": { - "@azure-tools/typespec-autorest": "0.66.0", - "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-resource-manager": "0.66.0", - "@azure-tools/typespec-azure-rulesets": "0.66.0", - "@azure-tools/typespec-client-generator-cli": "0.31.0", - "@azure-tools/typespec-client-generator-core": "0.66.3", - "@typespec/compiler": "1.10.0", - "@typespec/http": "1.10.0", - "@typespec/openapi": "1.10.0", - "@typespec/openapi3": "1.10.0", - "@typespec/rest": "0.80.0", - "@typespec/versioning": "0.80.0" - }, - "overrides": { - "@typespec/asset-emitter": "0.79.1", - "get-uri": "^6.0.5", - "minimatch@^3.0.0": "^3.1.5", - "superagent": "^10.2.3" - }, - "engines": { - "node": ">=20.0.0", - "npm": ">=10.0.0" - }, - "private": true -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/readme.md b/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/readme.md deleted file mode 100644 index 3c4a3d353b9..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/readme.md +++ /dev/null @@ -1,45 +0,0 @@ -# Widget - -> see https://aka.ms/autorest - -This is the AutoRest configuration file for Widget. - -## Configuration - -### Basic Information - -This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. -This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we -use the native TypeSpec code generation configured in the tspconfig.yaml file. - -```yaml -openapi-type: arm -openapi-subtype: rpaas -tag: package-2021-11-01 -``` - -### Tag: package-2021-11-01 - -These settings apply only when `--tag=package-2021-11-01` is specified on the command line. - -```yaml $(tag) == 'package-2021-11-01' -input-file: - - stable/2021-11-01/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - -### Tag: package-2021-10-01-preview - -These settings apply only when `--tag=package-2021-10-01-preview` is specified on the command line. - -```yaml $(tag) == 'package-2021-10-01-preview' -input-file: - - preview/2021-10-01-preview/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - ---- diff --git a/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/shared.tsp deleted file mode 100644 index 1b94bb70503..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/shared.tsp +++ /dev/null @@ -1,8 +0,0 @@ -@doc("Faked shared model") -model FakedSharedModel { - @doc("The tag.") - tag: string; - - @doc("The created date.") - createdAt: utcDateTime; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/tspconfig.yaml deleted file mode 100644 index 9c97da201c0..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002005-ARM-define-the-resource/tspconfig.yaml +++ /dev/null @@ -1,44 +0,0 @@ -parameters: - "service-dir": - default: "sdk/widget" -emit: - - "@azure-tools/typespec-autorest" -options: - "@azure-tools/typespec-autorest": - use-read-only-status-schema: true - emitter-output-dir: "{project-root}" - output-file: "{version-status}/{version}/widget.json" - arm-types-dir: "{project-root}/../../../../common-types/resource-management" - "@azure-typespec/http-client-csharp-mgmt": - namespace: "Azure.ResourceManager.Widget" - emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" - "@azure-tools/typespec-python": - emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" - namespace: "azure.mgmt.widget" - generate-test: true - generate-sample: true - flavor: "azure" - "@azure-tools/typespec-java": - emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" - namespace: "com.azure.resourcemanager.widget" - service-name: "Widget" # human-readable service name, whitespace allowed - flavor: azure - "@azure-tools/typespec-ts": - emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" - flavor: azure - experimental-extensible-enums: true - package-details: - name: "@azure/arm-widget" - "@azure-tools/typespec-go": - service-dir: "sdk/resourcemanager/widget" - emitter-output-dir: "{output-dir}/{service-dir}/armwidget" - module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" - fix-const-stuttering: true - flavor: "azure" - generate-samples: true - generate-fakes: true - head-as-boolean: true - inject-spans: true -linter: - extends: - - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/employee.tsp deleted file mode 100644 index 5d262735ece..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/employee.tsp +++ /dev/null @@ -1,99 +0,0 @@ -import "@typespec/rest"; -import "@typespec/http"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; - -using TypeSpec.Rest; -using TypeSpec.Http; -using Azure.Core; -using Azure.ResourceManager; - -namespace Microsoft.Widget; - -/** Employee resource */ -model Employee is TrackedResource { - ...ResourceNameParameter; - ...ManagedServiceIdentityProperty; -} - -/** Employee properties */ -model EmployeeProperties { - /** Age of employee */ - age?: int32; - - /** City of employee */ - city?: string; - - /** Email of employee */ - email?: string; - - /** Department of employee */ - department?: string; - - /** Status code of employee */ - statusCode?: string; - - /** Profile of employee */ - @encode("base64url") - profile?: bytes; - - /** The assets belong to the employee. */ - assets: string[]; - - /** The status of the last operation. */ - @visibility(Lifecycle.Read) - provisioningState?: ProvisioningState; -} - -/** Export result model */ -model ExportResult { - /** Exported data */ - data?: string; -} - -/** Employee move request */ -model MoveRequest { - /** The moving from location */ - from: string; - - /** The moving to location */ - to: string; -} - -/** Employee move response */ -model MoveResponse { - /** The status of the move */ - movingStatus: string; -} - -/** The resource provisioning state. */ -@lroStatus -union ProvisioningState { - ResourceProvisioningState, - - /** The resource is being provisioned */ - Provisioning: "Provisioning", - - /** The resource is updating */ - Updating: "Updating", - - /** The resource is being deleted */ - Deleting: "Deleting", - - /** The resource create request has been accepted */ - Accepted: "Accepted", - - string, -} - -@armResourceOperations -interface Employees { - get is ArmResourceRead; - createOrUpdate is ArmResourceCreateOrReplaceAsync; - delete is ArmResourceDeleteWithoutOkAsync; - listByResourceGroup is ArmResourceListByParent; - listBySubscription is ArmListBySubscription; - - /** Export employee data */ - exportData is ArmResourceActionSync; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/main.tsp deleted file mode 100644 index 16a5a51b5ca..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/main.tsp +++ /dev/null @@ -1,32 +0,0 @@ -import "@typespec/http"; -import "@typespec/rest"; -import "@typespec/versioning"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "./employee.tsp"; - -using TypeSpec.Http; -using TypeSpec.Rest; -using TypeSpec.Versioning; -using Azure.Core; -using Azure.ResourceManager; - -/** Microsoft.Widget Resource Provider management API. */ -@armProviderNamespace -@service(#{ title: "Widget" }) -@versioned(Microsoft.Widget.Versions) -namespace Microsoft.Widget; - -/** The available API versions. */ -enum Versions { - /** 2021-11-01 version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - v2021_11_01: "2021-11-01", - - /** 2024-10-01-preview version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - @previewVersion - v2024_10_01_preview: "2024-10-01-preview", -} - -interface Operations extends Azure.ResourceManager.Operations {} \ No newline at end of file diff --git a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/package.json b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/package.json deleted file mode 100644 index 9b0af8bcd6e..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "azure-rest-api-specs", - "devDependencies": { - "@azure-tools/typespec-autorest": "0.66.0", - "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-resource-manager": "0.66.0", - "@azure-tools/typespec-azure-rulesets": "0.66.0", - "@azure-tools/typespec-client-generator-cli": "0.31.0", - "@azure-tools/typespec-client-generator-core": "0.66.3", - "@typespec/compiler": "1.10.0", - "@typespec/http": "1.10.0", - "@typespec/openapi": "1.10.0", - "@typespec/openapi3": "1.10.0", - "@typespec/rest": "0.80.0", - "@typespec/versioning": "0.80.0" - }, - "overrides": { - "@typespec/asset-emitter": "0.79.1", - "get-uri": "^6.0.5", - "minimatch@^3.0.0": "^3.1.5", - "superagent": "^10.2.3" - }, - "engines": { - "node": ">=20.0.0", - "npm": ">=10.0.0" - }, - "private": true -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/preview/2024-10-01-preview/widget.json b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/preview/2024-10-01-preview/widget.json deleted file mode 100644 index f82701d4271..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/preview/2024-10-01-preview/widget.json +++ /dev/null @@ -1,548 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "Widget", - "version": "2024-10-01-preview", - "description": "Microsoft.Widget Resource Provider management API.", - "x-typespec-generated": [ - { - "emitter": "@azure-tools/typespec-autorest" - } - ] - }, - "schemes": [ - "https" - ], - "host": "management.azure.com", - "produces": [ - "application/json" - ], - "consumes": [ - "application/json" - ], - "security": [ - { - "azure_auth": [ - "user_impersonation" - ] - } - ], - "securityDefinitions": { - "azure_auth": { - "type": "oauth2", - "description": "Azure Active Directory OAuth2 Flow.", - "flow": "implicit", - "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", - "scopes": { - "user_impersonation": "impersonate your user account" - } - } - }, - "tags": [ - { - "name": "Operations" - }, - { - "name": "Employees" - } - ], - "paths": { - "/providers/Microsoft.Widget/operations": { - "get": { - "operationId": "Operations_List", - "tags": [ - "Operations" - ], - "description": "List the operations for the provider", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/OperationListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/providers/Microsoft.Widget/employees": { - "get": { - "operationId": "Employees_ListBySubscription", - "tags": [ - "Employees" - ], - "description": "List Employee resources by subscription ID", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/EmployeeListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees": { - "get": { - "operationId": "Employees_ListByResourceGroup", - "tags": [ - "Employees" - ], - "description": "List Employee resources by resource group", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/EmployeeListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}": { - "get": { - "operationId": "Employees_Get", - "tags": [ - "Employees" - ], - "description": "Get a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - }, - "put": { - "operationId": "Employees_CreateOrUpdate", - "tags": [ - "Employees" - ], - "description": "Create a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - }, - { - "name": "resource", - "in": "body", - "description": "Resource create parameters.", - "required": true, - "schema": { - "$ref": "#/definitions/Employee" - } - } - ], - "responses": { - "200": { - "description": "Resource 'Employee' update operation succeeded", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "201": { - "description": "Resource 'Employee' create operation succeeded", - "schema": { - "$ref": "#/definitions/Employee" - }, - "headers": { - "Azure-AsyncOperation": { - "type": "string", - "description": "A link to the status monitor" - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "azure-async-operation" - }, - "x-ms-long-running-operation": true - }, - "delete": { - "operationId": "Employees_Delete", - "tags": [ - "Employees" - ], - "description": "Delete a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "202": { - "description": "Resource deletion accepted.", - "headers": { - "Location": { - "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "204": { - "description": "Resource does not exist." - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "location" - }, - "x-ms-long-running-operation": true - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}/exportData": { - "post": { - "operationId": "Employees_ExportData", - "tags": [ - "Employees" - ], - "description": "Export employee data", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/ExportResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - } - } - }, - "definitions": { - "Employee": { - "type": "object", - "description": "Employee resource", - "properties": { - "properties": { - "$ref": "#/definitions/EmployeeProperties", - "description": "The resource-specific properties for this resource." - }, - "identity": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentity", - "description": "The managed service identities assigned to this resource." - } - }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/TrackedResource" - } - ] - }, - "EmployeeListResult": { - "type": "object", - "description": "The response of a Employee list operation.", - "properties": { - "value": { - "type": "array", - "description": "The Employee items on this page", - "items": { - "$ref": "#/definitions/Employee" - } - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "required": [ - "value" - ] - }, - "EmployeeProperties": { - "type": "object", - "description": "Employee properties", - "properties": { - "age": { - "type": "integer", - "format": "int32", - "description": "Age of employee" - }, - "city": { - "type": "string", - "description": "City of employee" - }, - "email": { - "type": "string", - "description": "Email of employee" - }, - "department": { - "type": "string", - "description": "Department of employee" - }, - "statusCode": { - "type": "string", - "description": "Status code of employee" - }, - "profile": { - "type": "string", - "format": "base64url", - "description": "Profile of employee" - }, - "assets": { - "type": "array", - "description": "The assets belong to the employee.", - "items": { - "type": "string" - } - }, - "provisioningState": { - "$ref": "#/definitions/ProvisioningState", - "description": "The status of the last operation.", - "readOnly": true - } - }, - "required": [ - "assets" - ] - }, - "ExportResult": { - "type": "object", - "description": "Export result model", - "properties": { - "data": { - "type": "string", - "description": "Exported data" - } - } - }, - "MoveRequest": { - "type": "object", - "description": "Employee move request", - "properties": { - "from": { - "type": "string", - "description": "The moving from location" - }, - "to": { - "type": "string", - "description": "The moving to location" - } - }, - "required": [ - "from", - "to" - ] - }, - "MoveResponse": { - "type": "object", - "description": "Employee move response", - "properties": { - "movingStatus": { - "type": "string", - "description": "The status of the move" - } - }, - "required": [ - "movingStatus" - ] - }, - "ProvisioningState": { - "type": "string", - "description": "The resource provisioning state.", - "enum": [ - "Succeeded", - "Failed", - "Canceled", - "Provisioning", - "Updating", - "Deleting", - "Accepted" - ], - "x-ms-enum": { - "name": "ProvisioningState", - "modelAsString": true, - "values": [ - { - "name": "Succeeded", - "value": "Succeeded", - "description": "Resource has been created." - }, - { - "name": "Failed", - "value": "Failed", - "description": "Resource creation failed." - }, - { - "name": "Canceled", - "value": "Canceled", - "description": "Resource creation was canceled." - }, - { - "name": "Provisioning", - "value": "Provisioning", - "description": "The resource is being provisioned" - }, - { - "name": "Updating", - "value": "Updating", - "description": "The resource is updating" - }, - { - "name": "Deleting", - "value": "Deleting", - "description": "The resource is being deleted" - }, - { - "name": "Accepted", - "value": "Accepted", - "description": "The resource create request has been accepted" - } - ] - }, - "readOnly": true - } - }, - "parameters": {} -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/readme.md b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/readme.md deleted file mode 100644 index 3c4a3d353b9..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/readme.md +++ /dev/null @@ -1,45 +0,0 @@ -# Widget - -> see https://aka.ms/autorest - -This is the AutoRest configuration file for Widget. - -## Configuration - -### Basic Information - -This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. -This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we -use the native TypeSpec code generation configured in the tspconfig.yaml file. - -```yaml -openapi-type: arm -openapi-subtype: rpaas -tag: package-2021-11-01 -``` - -### Tag: package-2021-11-01 - -These settings apply only when `--tag=package-2021-11-01` is specified on the command line. - -```yaml $(tag) == 'package-2021-11-01' -input-file: - - stable/2021-11-01/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - -### Tag: package-2021-10-01-preview - -These settings apply only when `--tag=package-2021-10-01-preview` is specified on the command line. - -```yaml $(tag) == 'package-2021-10-01-preview' -input-file: - - preview/2021-10-01-preview/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - ---- diff --git a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/shared.tsp deleted file mode 100644 index 1b94bb70503..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/shared.tsp +++ /dev/null @@ -1,8 +0,0 @@ -@doc("Faked shared model") -model FakedSharedModel { - @doc("The tag.") - tag: string; - - @doc("The created date.") - createdAt: utcDateTime; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/stable/2021-11-01/widget.json b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/stable/2021-11-01/widget.json deleted file mode 100644 index f2c77c3a866..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/stable/2021-11-01/widget.json +++ /dev/null @@ -1,548 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "Widget", - "version": "2021-11-01", - "description": "Microsoft.Widget Resource Provider management API.", - "x-typespec-generated": [ - { - "emitter": "@azure-tools/typespec-autorest" - } - ] - }, - "schemes": [ - "https" - ], - "host": "management.azure.com", - "produces": [ - "application/json" - ], - "consumes": [ - "application/json" - ], - "security": [ - { - "azure_auth": [ - "user_impersonation" - ] - } - ], - "securityDefinitions": { - "azure_auth": { - "type": "oauth2", - "description": "Azure Active Directory OAuth2 Flow.", - "flow": "implicit", - "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", - "scopes": { - "user_impersonation": "impersonate your user account" - } - } - }, - "tags": [ - { - "name": "Operations" - }, - { - "name": "Employees" - } - ], - "paths": { - "/providers/Microsoft.Widget/operations": { - "get": { - "operationId": "Operations_List", - "tags": [ - "Operations" - ], - "description": "List the operations for the provider", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/OperationListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/providers/Microsoft.Widget/employees": { - "get": { - "operationId": "Employees_ListBySubscription", - "tags": [ - "Employees" - ], - "description": "List Employee resources by subscription ID", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/EmployeeListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees": { - "get": { - "operationId": "Employees_ListByResourceGroup", - "tags": [ - "Employees" - ], - "description": "List Employee resources by resource group", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/EmployeeListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}": { - "get": { - "operationId": "Employees_Get", - "tags": [ - "Employees" - ], - "description": "Get a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - }, - "put": { - "operationId": "Employees_CreateOrUpdate", - "tags": [ - "Employees" - ], - "description": "Create a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - }, - { - "name": "resource", - "in": "body", - "description": "Resource create parameters.", - "required": true, - "schema": { - "$ref": "#/definitions/Employee" - } - } - ], - "responses": { - "200": { - "description": "Resource 'Employee' update operation succeeded", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "201": { - "description": "Resource 'Employee' create operation succeeded", - "schema": { - "$ref": "#/definitions/Employee" - }, - "headers": { - "Azure-AsyncOperation": { - "type": "string", - "description": "A link to the status monitor" - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "azure-async-operation" - }, - "x-ms-long-running-operation": true - }, - "delete": { - "operationId": "Employees_Delete", - "tags": [ - "Employees" - ], - "description": "Delete a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "202": { - "description": "Resource deletion accepted.", - "headers": { - "Location": { - "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "204": { - "description": "Resource does not exist." - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "location" - }, - "x-ms-long-running-operation": true - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}/exportData": { - "post": { - "operationId": "Employees_ExportData", - "tags": [ - "Employees" - ], - "description": "Export employee data", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/ExportResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - } - } - }, - "definitions": { - "Employee": { - "type": "object", - "description": "Employee resource", - "properties": { - "properties": { - "$ref": "#/definitions/EmployeeProperties", - "description": "The resource-specific properties for this resource." - }, - "identity": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentity", - "description": "The managed service identities assigned to this resource." - } - }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/TrackedResource" - } - ] - }, - "EmployeeListResult": { - "type": "object", - "description": "The response of a Employee list operation.", - "properties": { - "value": { - "type": "array", - "description": "The Employee items on this page", - "items": { - "$ref": "#/definitions/Employee" - } - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "required": [ - "value" - ] - }, - "EmployeeProperties": { - "type": "object", - "description": "Employee properties", - "properties": { - "age": { - "type": "integer", - "format": "int32", - "description": "Age of employee" - }, - "city": { - "type": "string", - "description": "City of employee" - }, - "email": { - "type": "string", - "description": "Email of employee" - }, - "department": { - "type": "string", - "description": "Department of employee" - }, - "statusCode": { - "type": "string", - "description": "Status code of employee" - }, - "profile": { - "type": "string", - "format": "base64url", - "description": "Profile of employee" - }, - "assets": { - "type": "array", - "description": "The assets belong to the employee.", - "items": { - "type": "string" - } - }, - "provisioningState": { - "$ref": "#/definitions/ProvisioningState", - "description": "The status of the last operation.", - "readOnly": true - } - }, - "required": [ - "assets" - ] - }, - "ExportResult": { - "type": "object", - "description": "Export result model", - "properties": { - "data": { - "type": "string", - "description": "Exported data" - } - } - }, - "MoveRequest": { - "type": "object", - "description": "Employee move request", - "properties": { - "from": { - "type": "string", - "description": "The moving from location" - }, - "to": { - "type": "string", - "description": "The moving to location" - } - }, - "required": [ - "from", - "to" - ] - }, - "MoveResponse": { - "type": "object", - "description": "Employee move response", - "properties": { - "movingStatus": { - "type": "string", - "description": "The status of the move" - } - }, - "required": [ - "movingStatus" - ] - }, - "ProvisioningState": { - "type": "string", - "description": "The resource provisioning state.", - "enum": [ - "Succeeded", - "Failed", - "Canceled", - "Provisioning", - "Updating", - "Deleting", - "Accepted" - ], - "x-ms-enum": { - "name": "ProvisioningState", - "modelAsString": true, - "values": [ - { - "name": "Succeeded", - "value": "Succeeded", - "description": "Resource has been created." - }, - { - "name": "Failed", - "value": "Failed", - "description": "Resource creation failed." - }, - { - "name": "Canceled", - "value": "Canceled", - "description": "Resource creation was canceled." - }, - { - "name": "Provisioning", - "value": "Provisioning", - "description": "The resource is being provisioned" - }, - { - "name": "Updating", - "value": "Updating", - "description": "The resource is updating" - }, - { - "name": "Deleting", - "value": "Deleting", - "description": "The resource is being deleted" - }, - { - "name": "Accepted", - "value": "Accepted", - "description": "The resource create request has been accepted" - } - ] - }, - "readOnly": true - } - }, - "parameters": {} -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/tspconfig.yaml deleted file mode 100644 index 9c97da201c0..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002009-arm-add-patch-operation-to-resource/tspconfig.yaml +++ /dev/null @@ -1,44 +0,0 @@ -parameters: - "service-dir": - default: "sdk/widget" -emit: - - "@azure-tools/typespec-autorest" -options: - "@azure-tools/typespec-autorest": - use-read-only-status-schema: true - emitter-output-dir: "{project-root}" - output-file: "{version-status}/{version}/widget.json" - arm-types-dir: "{project-root}/../../../../common-types/resource-management" - "@azure-typespec/http-client-csharp-mgmt": - namespace: "Azure.ResourceManager.Widget" - emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" - "@azure-tools/typespec-python": - emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" - namespace: "azure.mgmt.widget" - generate-test: true - generate-sample: true - flavor: "azure" - "@azure-tools/typespec-java": - emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" - namespace: "com.azure.resourcemanager.widget" - service-name: "Widget" # human-readable service name, whitespace allowed - flavor: azure - "@azure-tools/typespec-ts": - emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" - flavor: azure - experimental-extensible-enums: true - package-details: - name: "@azure/arm-widget" - "@azure-tools/typespec-go": - service-dir: "sdk/resourcemanager/widget" - emitter-output-dir: "{output-dir}/{service-dir}/armwidget" - module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" - fix-const-stuttering: true - flavor: "azure" - generate-samples: true - generate-fakes: true - head-as-boolean: true - inject-spans: true -linter: - extends: - - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/employee.tsp deleted file mode 100644 index 770ead12eed..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/employee.tsp +++ /dev/null @@ -1,91 +0,0 @@ -import "@typespec/rest"; -import "@typespec/http"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; - -using TypeSpec.Rest; -using TypeSpec.Http; -using Azure.Core; -using Azure.ResourceManager; - -namespace Microsoft.Widget; - -/** Employee resource */ -model Employee is TrackedResource { - ...ResourceNameParameter; - ...ManagedServiceIdentityProperty; -} - -/** Employee properties */ -model EmployeeProperties { - /** Age of employee */ - age?: int32; - - /** City of employee */ - city?: string; - - /** Email of employee */ - email?: string; - - /** Department of employee */ - department?: string; - - /** Status code of employee */ - statusCode?: string; - - /** Profile of employee */ - @encode("base64url") - profile?: bytes; - - /** The assets belong to the employee. */ - assets: string[]; - - /** The status of the last operation. */ - @visibility(Lifecycle.Read) - provisioningState?: ProvisioningState; -} - -/** Employee move request */ -model MoveRequest { - /** The moving from location */ - from: string; - - /** The moving to location */ - to: string; -} - -/** Employee move response */ -model MoveResponse { - /** The status of the move */ - movingStatus: string; -} - -/** The resource provisioning state. */ -@lroStatus -union ProvisioningState { - ResourceProvisioningState, - - /** The resource is being provisioned */ - Provisioning: "Provisioning", - - /** The resource is updating */ - Updating: "Updating", - - /** The resource is being deleted */ - Deleting: "Deleting", - - /** The resource create request has been accepted */ - Accepted: "Accepted", - - string, -} - -@armResourceOperations -interface Employees { - get is ArmResourceRead; - createOrUpdate is ArmResourceCreateOrReplaceAsync; - update is ArmResourcePatchSync; - delete is ArmResourceDeleteWithoutOkAsync; - listByResourceGroup is ArmResourceListByParent; - listBySubscription is ArmListBySubscription; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/main.tsp deleted file mode 100644 index 2990eb2b363..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/main.tsp +++ /dev/null @@ -1,32 +0,0 @@ -import "@typespec/http"; -import "@typespec/rest"; -import "@typespec/versioning"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "./employee.tsp"; - -using TypeSpec.Http; -using TypeSpec.Rest; -using TypeSpec.Versioning; -using Azure.Core; -using Azure.ResourceManager; - -/** Microsoft.Widget Resource Provider management API. */ -@armProviderNamespace -@service(#{ title: "Widget" }) -@versioned(Microsoft.Widget.Versions) -namespace Microsoft.Widget; - -/** The available API versions. */ -enum Versions { - /** 2021-11-01 version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - v2021_11_01: "2021-11-01", - - /** 2024-10-01-preview version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - @previewVersion - v2024_10_01_preview: "2024-10-01-preview", -} - -interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/package.json b/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/package.json deleted file mode 100644 index 9b0af8bcd6e..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "azure-rest-api-specs", - "devDependencies": { - "@azure-tools/typespec-autorest": "0.66.0", - "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-resource-manager": "0.66.0", - "@azure-tools/typespec-azure-rulesets": "0.66.0", - "@azure-tools/typespec-client-generator-cli": "0.31.0", - "@azure-tools/typespec-client-generator-core": "0.66.3", - "@typespec/compiler": "1.10.0", - "@typespec/http": "1.10.0", - "@typespec/openapi": "1.10.0", - "@typespec/openapi3": "1.10.0", - "@typespec/rest": "0.80.0", - "@typespec/versioning": "0.80.0" - }, - "overrides": { - "@typespec/asset-emitter": "0.79.1", - "get-uri": "^6.0.5", - "minimatch@^3.0.0": "^3.1.5", - "superagent": "^10.2.3" - }, - "engines": { - "node": ">=20.0.0", - "npm": ">=10.0.0" - }, - "private": true -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/readme.md b/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/readme.md deleted file mode 100644 index 448096610f8..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/readme.md +++ /dev/null @@ -1,19 +0,0 @@ -# Widget - -> see https://aka.ms/autorest - -This is the AutoRest configuration file for Widget. - -## Configuration - -### Basic Information - -This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. -This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we -use the native TypeSpec code generation configured in the tspconfig.yaml file. - -```yaml -openapi-type: arm -openapi-subtype: rpaas -tag: package-2021-11-01 -``` diff --git a/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/shared.tsp deleted file mode 100644 index 1b94bb70503..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/shared.tsp +++ /dev/null @@ -1,8 +0,0 @@ -@doc("Faked shared model") -model FakedSharedModel { - @doc("The tag.") - tag: string; - - @doc("The created date.") - createdAt: utcDateTime; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/tspconfig.yaml deleted file mode 100644 index 9c97da201c0..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/002010-arm-action-sync-operation/tspconfig.yaml +++ /dev/null @@ -1,44 +0,0 @@ -parameters: - "service-dir": - default: "sdk/widget" -emit: - - "@azure-tools/typespec-autorest" -options: - "@azure-tools/typespec-autorest": - use-read-only-status-schema: true - emitter-output-dir: "{project-root}" - output-file: "{version-status}/{version}/widget.json" - arm-types-dir: "{project-root}/../../../../common-types/resource-management" - "@azure-typespec/http-client-csharp-mgmt": - namespace: "Azure.ResourceManager.Widget" - emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" - "@azure-tools/typespec-python": - emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" - namespace: "azure.mgmt.widget" - generate-test: true - generate-sample: true - flavor: "azure" - "@azure-tools/typespec-java": - emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" - namespace: "com.azure.resourcemanager.widget" - service-name: "Widget" # human-readable service name, whitespace allowed - flavor: azure - "@azure-tools/typespec-ts": - emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" - flavor: azure - experimental-extensible-enums: true - package-details: - name: "@azure/arm-widget" - "@azure-tools/typespec-go": - service-dir: "sdk/resourcemanager/widget" - emitter-output-dir: "{output-dir}/{service-dir}/armwidget" - module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" - fix-const-stuttering: true - flavor: "azure" - generate-samples: true - generate-fakes: true - head-as-boolean: true - inject-spans: true -linter: - extends: - - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/employee.tsp deleted file mode 100644 index 012be609ccc..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/employee.tsp +++ /dev/null @@ -1,78 +0,0 @@ -import "@typespec/rest"; -import "@typespec/http"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; - -using TypeSpec.Rest; -using TypeSpec.Http; -using Azure.Core; -using Azure.ResourceManager; - -namespace Microsoft.Widget; - -/** Employee resource */ -model Employee is TrackedResource { - ...ResourceNameParameter; -} - -/** Employee properties */ -model EmployeeProperties { - /** Age of employee */ - age?: int32; - - /** City of employee */ - city?: string; - - /** Profile of employee */ - @encode("base64url") - profile?: bytes; - - /** The status of the last operation. */ - @visibility(Lifecycle.Read) - provisioningState?: ProvisioningState; -} - -/** The resource provisioning state. */ -@lroStatus -union ProvisioningState { - ResourceProvisioningState, - - /** The resource is being provisioned */ - Provisioning: "Provisioning", - - /** The resource is updating */ - Updating: "Updating", - - /** The resource is being deleted */ - Deleting: "Deleting", - - /** The resource create request has been accepted */ - Accepted: "Accepted", - - string, -} - -/** Employee move request */ -model MoveRequest { - /** The moving from location */ - from: string; - - /** The moving to location */ - to: string; -} - -/** Employee move response */ -model MoveResponse { - /** The status of the move */ - movingStatus: string; -} - -@armResourceOperations -interface Employees { - get is ArmResourceRead; - createOrUpdate is ArmResourceCreateOrReplaceAsync; - update is ArmResourcePatchSync; - delete is ArmResourceDeleteWithoutOkAsync; - listByResourceGroup is ArmResourceListByParent; - listBySubscription is ArmListBySubscription; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/main.tsp deleted file mode 100644 index 6a7baecaf3e..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/main.tsp +++ /dev/null @@ -1,31 +0,0 @@ -import "@typespec/http"; -import "@typespec/rest"; -import "@typespec/versioning"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; - -using TypeSpec.Http; -using TypeSpec.Rest; -using TypeSpec.Versioning; -using Azure.Core; -using Azure.ResourceManager; - -/** Microsoft.Widget Resource Provider management API. */ -@armProviderNamespace -@service(#{ title: "Widget" }) -@versioned(Microsoft.Widget.Versions) -namespace Microsoft.Widget; - -/** The available API versions. */ -enum Versions { - /** 2021-10-01-preview version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - @previewVersion - v2021_10_01_preview: "2021-10-01-preview", - - /** 2021-11-01 version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - v2021_11_01: "2021-11-01", -} - -interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/package.json b/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/package.json deleted file mode 100644 index 9b0af8bcd6e..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "azure-rest-api-specs", - "devDependencies": { - "@azure-tools/typespec-autorest": "0.66.0", - "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-resource-manager": "0.66.0", - "@azure-tools/typespec-azure-rulesets": "0.66.0", - "@azure-tools/typespec-client-generator-cli": "0.31.0", - "@azure-tools/typespec-client-generator-core": "0.66.3", - "@typespec/compiler": "1.10.0", - "@typespec/http": "1.10.0", - "@typespec/openapi": "1.10.0", - "@typespec/openapi3": "1.10.0", - "@typespec/rest": "0.80.0", - "@typespec/versioning": "0.80.0" - }, - "overrides": { - "@typespec/asset-emitter": "0.79.1", - "get-uri": "^6.0.5", - "minimatch@^3.0.0": "^3.1.5", - "superagent": "^10.2.3" - }, - "engines": { - "node": ">=20.0.0", - "npm": ">=10.0.0" - }, - "private": true -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/readme.md b/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/readme.md deleted file mode 100644 index 3c4a3d353b9..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/readme.md +++ /dev/null @@ -1,45 +0,0 @@ -# Widget - -> see https://aka.ms/autorest - -This is the AutoRest configuration file for Widget. - -## Configuration - -### Basic Information - -This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. -This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we -use the native TypeSpec code generation configured in the tspconfig.yaml file. - -```yaml -openapi-type: arm -openapi-subtype: rpaas -tag: package-2021-11-01 -``` - -### Tag: package-2021-11-01 - -These settings apply only when `--tag=package-2021-11-01` is specified on the command line. - -```yaml $(tag) == 'package-2021-11-01' -input-file: - - stable/2021-11-01/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - -### Tag: package-2021-10-01-preview - -These settings apply only when `--tag=package-2021-10-01-preview` is specified on the command line. - -```yaml $(tag) == 'package-2021-10-01-preview' -input-file: - - preview/2021-10-01-preview/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - ---- diff --git a/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/shared.tsp deleted file mode 100644 index 1b94bb70503..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/shared.tsp +++ /dev/null @@ -1,8 +0,0 @@ -@doc("Faked shared model") -model FakedSharedModel { - @doc("The tag.") - tag: string; - - @doc("The created date.") - createdAt: utcDateTime; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/tspconfig.yaml deleted file mode 100644 index 9c97da201c0..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/003-long-running-operation-share/tspconfig.yaml +++ /dev/null @@ -1,44 +0,0 @@ -parameters: - "service-dir": - default: "sdk/widget" -emit: - - "@azure-tools/typespec-autorest" -options: - "@azure-tools/typespec-autorest": - use-read-only-status-schema: true - emitter-output-dir: "{project-root}" - output-file: "{version-status}/{version}/widget.json" - arm-types-dir: "{project-root}/../../../../common-types/resource-management" - "@azure-typespec/http-client-csharp-mgmt": - namespace: "Azure.ResourceManager.Widget" - emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" - "@azure-tools/typespec-python": - emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" - namespace: "azure.mgmt.widget" - generate-test: true - generate-sample: true - flavor: "azure" - "@azure-tools/typespec-java": - emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" - namespace: "com.azure.resourcemanager.widget" - service-name: "Widget" # human-readable service name, whitespace allowed - flavor: azure - "@azure-tools/typespec-ts": - emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" - flavor: azure - experimental-extensible-enums: true - package-details: - name: "@azure/arm-widget" - "@azure-tools/typespec-go": - service-dir: "sdk/resourcemanager/widget" - emitter-output-dir: "{output-dir}/{service-dir}/armwidget" - module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" - fix-const-stuttering: true - flavor: "azure" - generate-samples: true - generate-fakes: true - head-as-boolean: true - inject-spans: true -linter: - extends: - - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/employee.tsp deleted file mode 100644 index 950bdede6b8..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/employee.tsp +++ /dev/null @@ -1,100 +0,0 @@ -import "@typespec/rest"; -import "@typespec/http"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; - -using TypeSpec.Rest; -using TypeSpec.Http; -using Azure.Core; -using Azure.ResourceManager; - -namespace Microsoft.Widget; - -/** Employee resource */ -model Employee is TrackedResource { - ...ResourceNameParameter; -} - -/** Employee properties */ -model EmployeeProperties { - /** Age of employee */ - age?: int32; - - /** City of employee */ - city?: string; - - /** Profile of employee */ - @encode("base64url") - profile?: bytes; - - /** The status of the last operation. */ - @visibility(Lifecycle.Read) - provisioningState?: ProvisioningState; - - /** The assets belong to the employee. */ - assets: string[]; -} - -/** The provisioning state of a resource. */ -@lroStatus -union ProvisioningState { - string, - - /** The resource create request has been accepted */ - Accepted: "Accepted", - - /** The resource is being provisioned */ - Provisioning: "Provisioning", - - /** The resource is updating */ - Updating: "Updating", - - /** Resource has been created. */ - Succeeded: "Succeeded", - - /** Resource creation failed. */ - Failed: "Failed", - - /** Resource creation was canceled. */ - Canceled: "Canceled", - - /** The resource is being deleted */ - Deleting: "Deleting", -} - -/** Employee move request */ -model MoveRequest { - /** The moving from location */ - from: string; - - /** The moving to location */ - to: string; -} - -/** Employee move response */ -model MoveResponse { - /** The status of the move */ - movingStatus: string; -} - -@armResourceOperations -interface Employees { - get is ArmResourceRead; - createOrUpdate is ArmResourceCreateOrReplaceAsync; - update is ArmCustomPatchSync< - Employee, - Azure.ResourceManager.Foundations.ResourceUpdateModel< - Employee, - EmployeeProperties - > - >; - delete is ArmResourceDeleteWithoutOkAsync; - listByResourceGroup is ArmResourceListByParent; - listBySubscription is ArmListBySubscription; - - /** A sample resource action that move employee to different location */ - move is ArmResourceActionSync; - - /** A sample HEAD operation to check resource existence */ - checkExistence is ArmResourceCheckExistence; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/main.tsp deleted file mode 100644 index a9ac2fb7119..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/main.tsp +++ /dev/null @@ -1,31 +0,0 @@ -import "@typespec/http"; -import "@typespec/rest"; -import "@typespec/versioning"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; - -using TypeSpec.Http; -using TypeSpec.Rest; -using TypeSpec.Versioning; -using Azure.Core; -using Azure.ResourceManager; - -/** Microsoft.Widget Resource Provider management API. */ -@armProviderNamespace -@service(#{ title: "Widget" }) -@versioned(Microsoft.Widget.Versions) -namespace Microsoft.Widget; - -/** The available API versions. */ -enum Versions { - /** 2021-10-01-preview version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - @previewVersion - v2021_10_01_preview: "2021-10-01-preview", - - /** 2021-11-01 version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - v2021_11_01: "2021-11-01", -} - -interface Operations extends Azure.ResourceManager.Operations {} \ No newline at end of file diff --git a/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/package.json b/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/package.json deleted file mode 100644 index 9b0af8bcd6e..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "azure-rest-api-specs", - "devDependencies": { - "@azure-tools/typespec-autorest": "0.66.0", - "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-resource-manager": "0.66.0", - "@azure-tools/typespec-azure-rulesets": "0.66.0", - "@azure-tools/typespec-client-generator-cli": "0.31.0", - "@azure-tools/typespec-client-generator-core": "0.66.3", - "@typespec/compiler": "1.10.0", - "@typespec/http": "1.10.0", - "@typespec/openapi": "1.10.0", - "@typespec/openapi3": "1.10.0", - "@typespec/rest": "0.80.0", - "@typespec/versioning": "0.80.0" - }, - "overrides": { - "@typespec/asset-emitter": "0.79.1", - "get-uri": "^6.0.5", - "minimatch@^3.0.0": "^3.1.5", - "superagent": "^10.2.3" - }, - "engines": { - "node": ">=20.0.0", - "npm": ">=10.0.0" - }, - "private": true -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/readme.md b/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/readme.md deleted file mode 100644 index 3c4a3d353b9..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/readme.md +++ /dev/null @@ -1,45 +0,0 @@ -# Widget - -> see https://aka.ms/autorest - -This is the AutoRest configuration file for Widget. - -## Configuration - -### Basic Information - -This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. -This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we -use the native TypeSpec code generation configured in the tspconfig.yaml file. - -```yaml -openapi-type: arm -openapi-subtype: rpaas -tag: package-2021-11-01 -``` - -### Tag: package-2021-11-01 - -These settings apply only when `--tag=package-2021-11-01` is specified on the command line. - -```yaml $(tag) == 'package-2021-11-01' -input-file: - - stable/2021-11-01/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - -### Tag: package-2021-10-01-preview - -These settings apply only when `--tag=package-2021-10-01-preview` is specified on the command line. - -```yaml $(tag) == 'package-2021-10-01-preview' -input-file: - - preview/2021-10-01-preview/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - ---- diff --git a/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/shared.tsp deleted file mode 100644 index 1b94bb70503..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/shared.tsp +++ /dev/null @@ -1,8 +0,0 @@ -@doc("Faked shared model") -model FakedSharedModel { - @doc("The tag.") - tag: string; - - @doc("The created date.") - createdAt: utcDateTime; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/tspconfig.yaml deleted file mode 100644 index 9c97da201c0..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/004002-decorate-length-constrains-on-array-item/tspconfig.yaml +++ /dev/null @@ -1,44 +0,0 @@ -parameters: - "service-dir": - default: "sdk/widget" -emit: - - "@azure-tools/typespec-autorest" -options: - "@azure-tools/typespec-autorest": - use-read-only-status-schema: true - emitter-output-dir: "{project-root}" - output-file: "{version-status}/{version}/widget.json" - arm-types-dir: "{project-root}/../../../../common-types/resource-management" - "@azure-typespec/http-client-csharp-mgmt": - namespace: "Azure.ResourceManager.Widget" - emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" - "@azure-tools/typespec-python": - emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" - namespace: "azure.mgmt.widget" - generate-test: true - generate-sample: true - flavor: "azure" - "@azure-tools/typespec-java": - emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" - namespace: "com.azure.resourcemanager.widget" - service-name: "Widget" # human-readable service name, whitespace allowed - flavor: azure - "@azure-tools/typespec-ts": - emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" - flavor: azure - experimental-extensible-enums: true - package-details: - name: "@azure/arm-widget" - "@azure-tools/typespec-go": - service-dir: "sdk/resourcemanager/widget" - emitter-output-dir: "{output-dir}/{service-dir}/armwidget" - module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" - fix-const-stuttering: true - flavor: "azure" - generate-samples: true - generate-fakes: true - head-as-boolean: true - inject-spans: true -linter: - extends: - - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/BastionHost.tsp b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/BastionHost.tsp deleted file mode 100644 index db93ba8eaa0..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/BastionHost.tsp +++ /dev/null @@ -1,214 +0,0 @@ -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "@typespec/openapi"; -import "@typespec/rest"; -import "./models.tsp"; - -using TypeSpec.Rest; -using Azure.ResourceManager; -using TypeSpec.Http; -using TypeSpec.OpenAPI; - -namespace Microsoft.Network; -/** - * Bastion Host resource. - */ -#suppress "@azure-tools/typespec-azure-core/no-private-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@Http.Private.includeInapplicableMetadataInPayload(false) -@Azure.ResourceManager.Legacy.feature(Features.virtualNetwork) -model BastionHost extends Resource { - properties?: BastionHostPropertiesFormat; - - @visibility(Lifecycle.Read) - @path - @key("bastionHostName") - @segment("bastionHosts") - name: string; - - /** A list of availability zones denoting where the resource needs to come from. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - zones?: string[]; - - /** A unique read-only string that changes whenever the resource is updated. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; - - /** - * The sku of this Bastion Host. - */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - sku?: Sku; -} - -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@Azure.ResourceManager.Legacy.feature(Features.virtualNetwork) -@armResourceOperations -interface BastionHosts { - /** - * Gets the specified Bastion Host. - */ - get is ArmResourceRead; - - /** - * Creates or updates the specified Bastion Host. - */ - createOrUpdate is ArmResourceCreateOrReplaceAsync< - BastionHost, - Error = CloudError - >; - - /** - * Updates Tags for BastionHost resource - */ - #suppress "@azure-tools/typespec-azure-resource-manager/lro-location-header" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @patch(#{ implicitOptionality: false }) - updateTags is ArmCustomPatchAsync< - BastionHost, - PatchModel = TagsObject, - LroHeaders = ArmAsyncOperationHeader & - Azure.Core.Foundations.RetryAfterHeader, - Error = CloudError - >; - - /** - * Deletes the specified Bastion Host. - */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - delete is ArmResourceDeleteWithoutOkAsync< - BastionHost, - Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse, - Error = CloudError - >; - - /** - * Lists all Bastion Hosts in a resource group. - */ - listByResourceGroup is ArmResourceListByParent< - BastionHost, - Error = CloudError - >; - - /** - * Lists all Bastion Hosts in a subscription. - */ - list is ArmListBySubscription; - - /** - * Creates a Bastion Shareable Links for all the VMs specified in the request. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("BastionHosts") - @tag("BastionShareableLink") - @operationId("PutBastionShareableLink") - @list - @action("createShareableLinks") - putBastionShareableLink is ArmResourceActionAsync< - BastionHost, - BastionShareableLinkListRequest, - BastionShareableLinkListResult, - Error = CloudError - >; - - /** - * Deletes the Bastion Shareable Links for all the VMs specified in the request. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("BastionHosts") - @tag("BastionShareableLink") - @operationId("DeleteBastionShareableLink") - @action("deleteShareableLinks") - deleteBastionShareableLink is ArmResourceActionAsync< - BastionHost, - BastionShareableLinkListRequest, - Response = { - @body body: void; - }, - Error = CloudError - >; - - /** - * Deletes the Bastion Shareable Links for all the tokens specified in the request. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("BastionHosts") - @tag("BastionShareableLink") - @operationId("DeleteBastionShareableLinkByToken") - @action("deleteShareableLinksByToken") - deleteBastionShareableLinkByToken is ArmResourceActionAsyncBase< - BastionHost, - Request = BastionShareableLinkTokenListRequest, - Response = ArmAcceptedLroResponse, - BaseParameters = Azure.ResourceManager.Foundations.DefaultBaseParameters, - Error = CloudError - >; - - /** - * Return the Bastion Shareable Links for all the VMs specified in the request. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("BastionHosts") - @tag("BastionShareableLink") - @operationId("GetBastionShareableLink") - @list - @action("getShareableLinks") - getBastionShareableLink is ArmResourceActionSync< - BastionHost, - BastionShareableLinkListRequest, - BastionShareableLinkListResult, - Error = CloudError - >; - - /** - * Returns the list of currently active sessions on the Bastion. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @operationId("GetActiveSessions") - @list - getActiveSessions is ArmResourceActionAsync< - BastionHost, - void, - BastionActiveSessionListResult, - Error = CloudError - >; - - /** - * Returns the list of currently active sessions on the Bastion. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @operationId("DisconnectActiveSessions") - @list - disconnectActiveSessions is ArmResourceActionSync< - BastionHost, - SessionIds, - ArmResponse, - Error = CloudError - >; -} - -@@doc(BastionHost.name, "The name of the Bastion Host."); -@@doc(BastionHost.properties, "Represents the bastion host resource."); -@@doc(BastionHosts.createOrUpdate::parameters.resource, - "Parameters supplied to the create or update Bastion Host operation." -); -@@doc(BastionHosts.updateTags::parameters.properties, - "Parameters supplied to update BastionHost tags." -); -@@doc(BastionHosts.putBastionShareableLink::parameters.body, - "Post request for Create/Delete/Get Bastion Shareable Link endpoints." -); -@@doc(BastionHosts.deleteBastionShareableLink::parameters.body, - "Post request for Create/Delete/Get Bastion Shareable Link endpoints." -); -@@doc(BastionHosts.deleteBastionShareableLinkByToken::parameters.body, - "Post request for Delete Bastion Shareable Link By Token endpoint." -); -@@doc(BastionHosts.getBastionShareableLink::parameters.body, - "Post request for Create/Delete/Get Bastion Shareable Link endpoints." -); -@@doc(BastionHosts.disconnectActiveSessions::parameters.body, - "The list of sessionids to disconnect." -); diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/BgpConnection.tsp b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/BgpConnection.tsp deleted file mode 100644 index 7b1263282af..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/BgpConnection.tsp +++ /dev/null @@ -1,142 +0,0 @@ -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "@typespec/openapi"; -import "@typespec/rest"; -import "./models.tsp"; -import "./VirtualHub.tsp"; - -using TypeSpec.Rest; -using Azure.ResourceManager; -using TypeSpec.Http; -using TypeSpec.OpenAPI; - -namespace Microsoft.Network; -/** - * Virtual Appliance Site resource. - */ -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/no-private-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@Azure.ResourceManager.Legacy.feature(Features.virtualWAN) -@parentResource(VirtualHub) -@Http.Private.includeInapplicableMetadataInPayload(false) -model BgpConnection extends SubResourceModel { - properties?: BgpConnectionProperties; - - @visibility(Lifecycle.Read) - @path - @key("connectionName") - @segment("bgpConnections") - name: string; - - /** - * A unique read-only string that changes whenever the resource is updated. - */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; -} - -alias VirtualHubBgpConnectionOps = Azure.ResourceManager.Legacy.LegacyOperations< - { - ...ApiVersionParameter; - ...SubscriptionIdParameter; - ...ResourceGroupParameter; - ...Azure.ResourceManager.Legacy.Provider; - - /** The name of the virtual hub. */ - @path - @segment("virtualHubs") - @key - hubName: string; - }, - { - /** The name of the bgp connection. */ - @path - @segment("bgpConnections") - @key - connectionName: string; - } ->; - -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@Azure.ResourceManager.Legacy.feature(Features.virtualWAN) -@armResourceOperations(#{omitTags: true}) -interface BgpConnections { - /** - * Retrieves the details of a Virtual Hub Bgp Connection. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @operationId("VirtualHubBgpConnection_Get") - get is ArmResourceRead; - - /** - * Creates a VirtualHubBgpConnection resource if it doesn't exist else updates the existing VirtualHubBgpConnection. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @operationId("VirtualHubBgpConnection_CreateOrUpdate") - createOrUpdate is ArmResourceCreateOrReplaceAsync< - BgpConnection, - Error = CloudError - >; - - /** - * Deletes a VirtualHubBgpConnection. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - #suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @operationId("VirtualHubBgpConnection_Delete") - delete is ArmResourceDeleteWithoutOkAsync< - BgpConnection, - Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse, - Error = CloudError - >; - - /** - * Retrieves the details of all VirtualHubBgpConnections. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @operationId("VirtualHubBgpConnections_List") - list is ArmResourceListByParent< - BgpConnection, - Response = ArmResponse, - Error = CloudError - >; - - /** - * Retrieves a list of routes the virtual hub bgp connection has learned. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @operationId("VirtualHubBgpConnections_ListLearnedRoutes") - @action("learnedRoutes") - listLearnedRoutes is VirtualHubBgpConnectionOps.ActionAsync< - BgpConnection, - void, - void, - Response = Record | ArmAcceptedLroResponse & - Azure.Core.Foundations.RetryAfterHeader>, - OverrideErrorType = CloudError - >; - - /** - * Retrieves a list of routes the virtual hub bgp connection is advertising to the specified peer. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @operationId("VirtualHubBgpConnections_ListAdvertisedRoutes") - @action("advertisedRoutes") - listAdvertisedRoutes is VirtualHubBgpConnectionOps.ActionAsync< - BgpConnection, - void, - void, - Response = Record | ArmAcceptedLroResponse & - Azure.Core.Foundations.RetryAfterHeader>, - OverrideErrorType = CloudError - >; -} - -@@doc(BgpConnection.name, "The name of the connection."); -@@doc(BgpConnection.properties, "The properties of the Bgp connections."); -@@doc(BgpConnections.createOrUpdate::parameters.resource, - "Parameters of Bgp connection." -); diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteGateway.tsp b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteGateway.tsp deleted file mode 100644 index 49a7b08fa8c..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteGateway.tsp +++ /dev/null @@ -1,214 +0,0 @@ -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "@typespec/openapi"; -import "@typespec/rest"; -import "./models.tsp"; - -using TypeSpec.Rest; -using Azure.ResourceManager; -using TypeSpec.Http; -using TypeSpec.OpenAPI; - -namespace Microsoft.Network; -/** - * ExpressRoute gateway resource. - */ -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/no-private-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@Azure.ResourceManager.Legacy.feature(Features.virtualWAN) -@Http.Private.includeInapplicableMetadataInPayload(false) -model ExpressRouteGateway extends Resource { - properties?: ExpressRouteGatewayProperties; - - @visibility(Lifecycle.Read) - @path - @key("expressRouteGatewayName") - @segment("expressRouteGateways") - name: string; - - /** A unique read-only string that changes whenever the resource is updated. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; -} - -alias ExpressRouteConnectionOps = Azure.ResourceManager.Legacy.RoutedOperations< - { - ...ApiVersionParameter; - ...SubscriptionIdParameter; - ...ResourceGroupParameter; - - /** The name of the express route gateway. */ - @path - @segment("expressRouteGateways") - @key - expressRouteGatewayName: string; - }, - { - /** The name of the express route connection. */ - @path - @segment("expressRouteConnections") - @key - connectionName: string; - }, - ResourceRoute = #{ - route: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}", - } ->; - -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@Azure.ResourceManager.Legacy.feature(Features.virtualWAN) -@armResourceOperations(#{ allowStaticRoutes: true, omitTags: true }) -interface ExpressRouteGateways { - /** - * Fetches the details of a ExpressRoute gateway in a resource group. - */ - @tag("ExpressRouteGateways") - @autoRoute - get is ArmResourceRead; - - /** - * Creates or updates a ExpressRoute gateway in a specified resource group. - */ - @tag("ExpressRouteGateways") - createOrUpdate is ArmResourceCreateOrReplaceAsync< - ExpressRouteGateway, - Error = CloudError - >; - - /** - * Updates express route gateway tags. - */ - #suppress "@azure-tools/typespec-azure-resource-manager/lro-location-header" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("ExpressRouteGateways") - @patch(#{ implicitOptionality: false }) - @autoRoute - updateTags is ArmCustomPatchAsync< - ExpressRouteGateway, - PatchModel = TagsObject, - LroHeaders = ArmAsyncOperationHeader & - Azure.Core.Foundations.RetryAfterHeader, - Error = CloudError - >; - - /** - * Deletes the specified ExpressRoute gateway in a resource group. An ExpressRoute gateway resource can only be deleted when there are no connection subresources. - */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("ExpressRouteGateways") - @autoRoute - delete is ArmResourceDeleteWithoutOkAsync< - ExpressRouteGateway, - Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse, - Error = CloudError - >; - - /** - * Lists ExpressRoute gateways in a given resource group. - */ - @tag("ExpressRouteGateways") - @autoRoute - listByResourceGroup is ArmResourceListByParent< - ExpressRouteGateway, - Response = ArmResponse, - Error = CloudError - >; - - /** - * Lists ExpressRoute gateways under a given subscription. - */ - @tag("ExpressRouteGateways") - @autoRoute - listBySubscription is ArmListBySubscription< - ExpressRouteGateway, - Response = ArmResponse, - Error = CloudError - >; - - /** - * Creates a connection between an ExpressRoute gateway and an ExpressRoute circuit. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - #suppress "@azure-tools/typespec-azure-core/invalid-final-state" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("ExpressRouteConnections") - @operationId("ExpressRouteConnections_CreateOrUpdate") - @put - @Azure.Core.useFinalStateVia("azure-async-operation") - @route("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}") - expressRouteConnectionsCreateOrUpdate is ExpressRouteConnectionOps.ActionAsync< - ExpressRouteGateway, - ExpressRouteConnection, - void, - Response = ArmResponse | ArmResourceCreatedResponse< - ExpressRouteConnection, - LroHeaders = ArmAsyncOperationHeader & - Azure.Core.Foundations.RetryAfterHeader - >, - OverrideErrorType = CloudError - >; - - /** - * Gets the specified ExpressRouteConnection. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("ExpressRouteConnections") - @operationId("ExpressRouteConnections_Get") - @get - @route("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}") - expressRouteConnectionsGet is ExpressRouteConnectionOps.ActionSync< - ExpressRouteGateway, - void, - Response = ArmResponse, - OverrideErrorType = CloudError - >; - - /** - * Deletes a connection to a ExpressRoute circuit. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("ExpressRouteConnections") - @operationId("ExpressRouteConnections_Delete") - @delete - @route("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteGateways/{expressRouteGatewayName}/expressRouteConnections/{connectionName}") - expressRouteConnectionsDelete is ExpressRouteConnectionOps.ActionAsync< - ExpressRouteGateway, - void, - void, - Response = { - @body body: void; - } | ArmAcceptedLroResponse | NoContentResponse, - OverrideErrorType = CloudError - >; - - /** - * Lists ExpressRouteConnections. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("ExpressRouteConnections") - @operationId("ExpressRouteConnections_List") - @list - @get - @action("expressRouteConnections") - list is ArmResourceActionSync< - ExpressRouteGateway, - void, - ArmResponse, - Error = CloudError - >; -} - -@@doc(ExpressRouteGateway.name, "The name of the ExpressRoute gateway."); -@@doc(ExpressRouteGateway.properties, - "Properties of the express route gateway." -); -@@doc(ExpressRouteGateways.createOrUpdate::parameters.resource, - "Parameters required in an ExpressRoute gateway PUT operation." -); -@@doc(ExpressRouteGateways.updateTags::parameters.properties, - "Parameters supplied to update a virtual wan express route gateway tags." -); -@@doc(ExpressRouteGateways.expressRouteConnectionsCreateOrUpdate::parameters.body, - "Parameters required in an ExpressRouteConnection PUT operation." -); diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRoutePort.tsp b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRoutePort.tsp deleted file mode 100644 index 67e0d7f12f3..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRoutePort.tsp +++ /dev/null @@ -1,195 +0,0 @@ -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "@typespec/openapi"; -import "@typespec/rest"; -import "./models.tsp"; - -using TypeSpec.Rest; -using Azure.ResourceManager; -using TypeSpec.Http; -using TypeSpec.OpenAPI; - -namespace Microsoft.Network; -/** - * ExpressRoutePort resource definition. - */ -#suppress "@azure-tools/typespec-azure-core/no-private-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@summary("ExpressRoute Port") -@Azure.ResourceManager.Legacy.feature(Features.expressRoute) -@Http.Private.includeInapplicableMetadataInPayload(false) -model ExpressRoutePort extends Resource { - properties?: ExpressRoutePortPropertiesFormat; - - @visibility(Lifecycle.Read) - @path - @key("expressRoutePortName") - @segment("ExpressRoutePorts") - name: string; - - /** A unique read-only string that changes whenever the resource is updated. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; - - /** - * The identity of ExpressRoutePort, if configured. - */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - identity?: ManagedServiceIdentity; -} - -alias ExpressRouteLinkOps = Azure.ResourceManager.Legacy.RoutedOperations< - { - ...ApiVersionParameter; - ...SubscriptionIdParameter; - ...ResourceGroupParameter; - - /** The name of the express route port. */ - @path - @segment("ExpressRoutePorts") - @key - expressRoutePortName: string; - }, - { - /** The name of the express route link. */ - @path - @segment("links") - @key - linkName: string; - }, - ResourceRoute = #{ - route: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRoutePorts/{expressRoutePortName}/links/{linkName}", - } ->; - -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@Azure.ResourceManager.Legacy.feature(Features.expressRoute) -@armResourceOperations(#{ allowStaticRoutes: true, omitTags: true }) -interface ExpressRoutePorts { - /** - * Retrieves the requested ExpressRoutePort resource. - */ - @tag("ExpressRoutePorts") - @autoRoute - get is ArmResourceRead; - - /** - * Creates or updates the specified ExpressRoutePort resource. - */ - @tag("ExpressRoutePorts") - @autoRoute - createOrUpdate is ArmResourceCreateOrReplaceAsync< - ExpressRoutePort, - Error = CloudError - >; - - /** - * Update ExpressRoutePort tags. - */ - @tag("ExpressRoutePorts") - @autoRoute - @patch(#{ implicitOptionality: false }) - updateTags is ArmCustomPatchSync< - ExpressRoutePort, - PatchModel = TagsObject, - Error = CloudError - >; - - /** - * Deletes the specified ExpressRoutePort resource. - */ - #suppress "@azure-tools/typespec-azure-resource-manager/lro-location-header" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - #suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("ExpressRoutePorts") - @Azure.Core.useFinalStateVia("azure-async-operation") - @autoRoute - delete is ArmResourceDeleteWithoutOkAsync< - ExpressRoutePort, - Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse, - Error = CloudError - >; - - /** - * List all the ExpressRoutePort resources in the specified resource group. - */ - @tag("ExpressRoutePorts") - @autoRoute - listByResourceGroup is ArmResourceListByParent< - ExpressRoutePort, - Response = ExpressRoutePortListResult, - Error = CloudError - >; - - /** - * List all the ExpressRoutePort resources in the specified subscription. - */ - @tag("ExpressRoutePorts") - @autoRoute - list is ArmListBySubscription< - ExpressRoutePort, - Response = ExpressRoutePortListResult, - Error = CloudError - >; - - /** - * Generate a letter of authorization for the requested ExpressRoutePort resource. - */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("ExpressRoutePorts") - @action("generateLoa") - @autoRoute - generateLOA is ArmResourceActionSync< - ExpressRoutePort, - GenerateExpressRoutePortsLOARequest, - ArmResponse, - Error = CloudError - >; - - /** - * Retrieves the specified ExpressRouteLink resource. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("ExpressRouteLinks") - @operationId("ExpressRouteLinks_Get") - @get - @route("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ExpressRoutePorts/{expressRoutePortName}/links/{linkName}") - expressRouteLinksGet is ExpressRouteLinkOps.ActionSync< - ExpressRoutePort, - void, - Response = ArmResponse, - OverrideErrorType = CloudError - >; - - /** - * Retrieve the ExpressRouteLink sub-resources of the specified ExpressRoutePort resource. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("ExpressRouteLinks") - @operationId("ExpressRouteLinks_List") - @list - @get - @action("links") - @autoRoute - expressRouteLinksList is ArmResourceActionSync< - ExpressRoutePort, - void, - ArmResponse, - Error = CloudError - >; -} - -@@doc(ExpressRoutePort.name, "The name of ExpressRoutePort."); -@@doc(ExpressRoutePort.properties, "ExpressRoutePort properties."); -@@doc(ExpressRoutePorts.createOrUpdate::parameters.resource, - "Parameters supplied to the create ExpressRoutePort operation." -); -@@doc(ExpressRoutePorts.updateTags::parameters.properties, - "Parameters supplied to update ExpressRoutePort resource tags." -); -@@doc(ExpressRoutePorts.generateLOA::parameters.body, - "Request parameters supplied to generate a letter of authorization." -); diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteProviderPort.tsp b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteProviderPort.tsp deleted file mode 100644 index f18e9afd851..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/ExpressRouteProviderPort.tsp +++ /dev/null @@ -1,75 +0,0 @@ -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "@typespec/openapi"; -import "@typespec/rest"; -import "./models.tsp"; - -using TypeSpec.Rest; -using Azure.ResourceManager; -using TypeSpec.Http; -using TypeSpec.OpenAPI; - -namespace Microsoft.Network; -/** - * ExpressRouteProviderPort resource. - */ -#suppress "@azure-tools/typespec-azure-core/no-private-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@subscriptionResource -@Azure.ResourceManager.Legacy.feature(Features.expressRoute) -@Http.Private.includeInapplicableMetadataInPayload(false) -model ExpressRouteProviderPort extends ResourceWithReadOnlyNameAndID { - properties?: ExpressRouteProviderPortProperties; - - @visibility(Lifecycle.Read) - @path - @key("providerport") - @segment("expressRouteProviderPorts") - name: string; - - /** A unique read-only string that changes whenever the resource is updated. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; -} - -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@Azure.ResourceManager.Legacy.feature(Features.expressRoute) -@armResourceOperations -interface ExpressRouteProviderPorts { - /** - * Retrieves detail of a provider port. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @operationId("ExpressRouteProviderPort") - expressRouteProviderPort is ArmResourceRead< - ExpressRouteProviderPort, - BaseParameters = Azure.ResourceManager.Foundations.SubscriptionBaseParameters, - Error = CloudError - >; - - /** - * Retrieves all the ExpressRouteProviderPorts in a subscription. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @operationId("ExpressRouteProviderPortsLocation_List") - list is Legacy.ArmListSinglePageByParent< - ExpressRouteProviderPort, - BaseParameters = Azure.ResourceManager.Foundations.SubscriptionBaseParameters, - Parameters = { - /** - * The filter to apply on the operation. For example, you can use $filter=location eq '{state}'. - */ - @query("$filter") - $filter?: string; - }, - Error = CloudError - >; -} - -@@doc(ExpressRouteProviderPort.name, "The name of the provider port."); -@@doc(ExpressRouteProviderPort.properties, - "Properties of the express route Service Provider Port." -); diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/NetworkInterface.tsp b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/NetworkInterface.tsp deleted file mode 100644 index 0e5673e1116..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/NetworkInterface.tsp +++ /dev/null @@ -1,250 +0,0 @@ -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "@typespec/openapi"; -import "@typespec/rest"; -import "./models.tsp"; - -using TypeSpec.Rest; -using Azure.ResourceManager; -using TypeSpec.Http; -using TypeSpec.OpenAPI; - -namespace Microsoft.Network; -/** - * A network interface in a resource group. - */ -#suppress "@azure-tools/typespec-azure-core/no-private-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@Http.Private.includeInapplicableMetadataInPayload(false) -@Azure.ResourceManager.Legacy.feature(Features.virtualNetwork) -model NetworkInterface extends Resource { - properties?: NetworkInterfacePropertiesFormat; - - @visibility(Lifecycle.Read) - @path - @key("networkInterfaceName") - @segment("networkInterfaces") - name: string; - - /** - * The extended location of the network interface. - */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - extendedLocation?: ExtendedLocation; - - /** A unique read-only string that changes whenever the resource is updated. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; -} - -alias NetworkInterfaceOps = Azure.ResourceManager.Legacy.LegacyOperations< - { - ...ApiVersionParameter; - ...SubscriptionIdParameter; - ...ResourceGroupParameter; - - #suppress "@azure-tools/typespec-azure-core/documentation-required" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @path - @segment("providers") - providerName: "microsoft.Compute"; - - /** The name of the cloud service. */ - @path - @segment("cloudServices") - @key - cloudServiceName: string; - - /** The name of role instance. */ - @path - @segment("roleInstances") - @key - roleInstanceName: string; - }, - { - /** The name of the network interface. */ - @path - @segment("networkInterfaces") - @key - networkInterfaceName: string; - } ->; - -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@Azure.ResourceManager.Legacy.feature(Features.virtualNetwork) -@armResourceOperations -interface NetworkInterfaces { - /** - * Get the specified network interface in a cloud service. - */ - getCloudServiceNetworkInterface is NetworkInterfaceOps.Read< - NetworkInterface, - Parameters = { - /** - * Expands referenced resources. - */ - @query("$expand") - $expand?: string; - }, - OverrideErrorType = CloudError - >; - - /** - * Gets information about all network interfaces in a role instance in a cloud service. - */ - listCloudServiceRoleInstanceNetworkInterfaces is NetworkInterfaceOps.List< - NetworkInterface, - OverrideErrorType = CloudError - >; -} -alias NetworkInterfaceOperationGroupOps = Azure.ResourceManager.Legacy.LegacyOperations< - { - ...ApiVersionParameter; - ...SubscriptionIdParameter; - ...ResourceGroupParameter; - ...Azure.ResourceManager.Legacy.Provider; - }, - { - /** The name of the network interface. */ - @path - @segment("networkInterfaces") - @key - networkInterfaceName: string; - } ->; - -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@Azure.ResourceManager.Legacy.feature(Features.virtualNetwork) -@armResourceOperations(#{omitTags: true}) -interface NetworkInterfaceOperationGroup { - /** - * Gets information about the specified network interface. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("NetworkInterfaces") - @operationId("NetworkInterfaces_Get") - get is NetworkInterfaceOperationGroupOps.Read< - NetworkInterface, - Parameters = { - /** - * Expands referenced resources. - */ - @query("$expand") - $expand?: string; - }, - OverrideErrorType = CloudError - >; - - /** - * Creates or updates a network interface. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("NetworkInterfaces") - @operationId("NetworkInterfaces_CreateOrUpdate") - createOrUpdate is NetworkInterfaceOperationGroupOps.CreateOrUpdateAsync< - NetworkInterface, - OverrideErrorType = CloudError - >; - - /** - * Updates a network interface tags. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("NetworkInterfaces") - @operationId("NetworkInterfaces_UpdateTags") - @patch(#{ implicitOptionality: false }) - updateTags is NetworkInterfaceOperationGroupOps.CustomPatchSync< - NetworkInterface, - PatchModel = TagsObject, - OverrideErrorType = CloudError - >; - - /** - * Deletes the specified network interface. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - #suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("NetworkInterfaces") - @operationId("NetworkInterfaces_Delete") - delete is NetworkInterfaceOperationGroupOps.DeleteWithoutOkAsync< - NetworkInterface, - Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse, - OverrideErrorType = CloudError - >; - - /** - * Gets all network interfaces in a resource group. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("NetworkInterfaces") - @operationId("NetworkInterfaces_List") - list is NetworkInterfaceOperationGroupOps.List< - NetworkInterface, - OverrideErrorType = CloudError - >; - - /** - * Gets all network interfaces in a subscription. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("NetworkInterfaces") - @operationId("NetworkInterfaces_ListAll") - listAll is ArmListBySubscription; - - /** - * Gets all route tables applied to a network interface. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("NetworkInterfaces") - @operationId("NetworkInterfaces_GetEffectiveRouteTable") - @post - @action("effectiveRouteTable") - getEffectiveRouteTable is NetworkInterfaceOperationGroupOps.ActionAsync< - NetworkInterface, - void, - EffectiveRouteListResult, - OverrideErrorType = CloudError - >; - - /** - * Gets all network security groups applied to a network interface. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("NetworkInterfaces") - @operationId("NetworkInterfaces_ListEffectiveNetworkSecurityGroups") - @post - @action("effectiveNetworkSecurityGroups") - listEffectiveNetworkSecurityGroups is NetworkInterfaceOperationGroupOps.ActionAsync< - NetworkInterface, - void, - EffectiveNetworkSecurityGroupListResult, - OverrideErrorType = CloudError - >; - - /** - * List all load balancers in a network interface. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("NetworkInterfaces") - @operationId("NetworkInterfaceLoadBalancers_List") - @list - @get - @action("loadBalancers") - networkInterfaceLoadBalancersList is NetworkInterfaceOperationGroupOps.ActionSync< - NetworkInterface, - void, - ArmResponse, - OverrideErrorType = CloudError - >; -} - -@@doc(NetworkInterface.name, "The name of the network interface."); -@@doc(NetworkInterface.properties, "Properties of the network interface."); -@@doc(NetworkInterfaceOperationGroup.createOrUpdate::parameters.resource, - "Parameters supplied to the create or update network interface operation." -); -@@doc(NetworkInterfaceOperationGroup.updateTags::parameters.properties, - "Parameters supplied to update network interface tags." -); diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/P2SVpnGateway.tsp b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/P2SVpnGateway.tsp deleted file mode 100644 index 07f2c99f93f..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/P2SVpnGateway.tsp +++ /dev/null @@ -1,213 +0,0 @@ -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "@typespec/openapi"; -import "@typespec/rest"; -import "./models.tsp"; - -using TypeSpec.Rest; -using Azure.ResourceManager; -using TypeSpec.Http; -using TypeSpec.OpenAPI; - -namespace Microsoft.Network; -/** - * P2SVpnGateway Resource. - */ -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/no-private-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@Azure.ResourceManager.Legacy.feature(Features.virtualWAN) -@Http.Private.includeInapplicableMetadataInPayload(false) -model P2SVpnGateway extends ResourceWithRequiredLocation { - properties?: P2SVpnGatewayProperties; - - @visibility(Lifecycle.Read) - @path - @key("gatewayName") - @segment("p2svpnGateways") - name: string; - - /** - * A unique read-only string that changes whenever the resource is updated. - */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; -} - -alias P2SVpnGatewayOps = Azure.ResourceManager.Legacy.LegacyOperations< - { - ...ApiVersionParameter; - ...SubscriptionIdParameter; - ...ResourceGroupParameter; - ...Azure.ResourceManager.Legacy.Provider; - }, - { - /** The name of the P2S Vpn Gateway. */ - @path - @segment("p2svpnGateways") - @key - p2sVpnGatewayName: string; - } ->; - -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@Azure.ResourceManager.Legacy.feature(Features.virtualWAN) -@armResourceOperations(#{omitTags: true}) -interface P2SVpnGateways { - /** - * Retrieves the details of a virtual wan p2s vpn gateway. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @operationId("P2sVpnGateways_Get") - get is ArmResourceRead; - - /** - * Creates a virtual wan p2s vpn gateway if it doesn't exist else updates the existing gateway. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @operationId("P2sVpnGateways_CreateOrUpdate") - createOrUpdate is ArmResourceCreateOrReplaceAsync< - P2SVpnGateway, - Error = CloudError - >; - - /** - * Updates virtual wan p2s vpn gateway tags. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - #suppress "@azure-tools/typespec-azure-resource-manager/lro-location-header" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("P2SVpnGateways") - @operationId("P2sVpnGateways_UpdateTags") - @patch(#{ implicitOptionality: false }) - updateTags is ArmCustomPatchAsync< - P2SVpnGateway, - PatchModel = TagsObject, - LroHeaders = ArmAsyncOperationHeader & - Azure.Core.Foundations.RetryAfterHeader, - Error = CloudError - >; - - /** - * Deletes a virtual wan p2s vpn gateway. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - #suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @operationId("P2sVpnGateways_Delete") - delete is ArmResourceDeleteWithoutOkAsync< - P2SVpnGateway, - Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse, - Error = CloudError - >; - - /** - * Lists all the P2SVpnGateways in a resource group. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @operationId("P2sVpnGateways_ListByResourceGroup") - listByResourceGroup is ArmResourceListByParent< - P2SVpnGateway, - Response = ArmResponse, - Error = CloudError - >; - - /** - * Lists all the P2SVpnGateways in a subscription. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @operationId("P2sVpnGateways_List") - list is ArmListBySubscription< - P2SVpnGateway, - Response = ArmResponse, - Error = CloudError - >; - - /** - * Resets the primary of the p2s vpn gateway in the specified resource group. - */ - @tag("P2SVpnGateways") - reset is ArmResourceActionAsync< - P2SVpnGateway, - void, - P2SVpnGateway, - Error = CloudError - >; - - /** - * Generates VPN profile for P2S client of the P2SVpnGateway in the specified resource group. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("P2SVpnGateways") - @operationId("P2sVpnGateways_GenerateVpnProfile") - @action("generatevpnprofile") - generateVpnProfile is ArmResourceActionAsync< - P2SVpnGateway, - P2SVpnProfileParameters, - VpnProfileResponse, - Error = CloudError - >; - - /** - * Gets the connection health of P2S clients of the virtual wan P2SVpnGateway in the specified resource group. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("P2SVpnGateways") - @operationId("P2sVpnGateways_GetP2sVpnConnectionHealth") - getP2sVpnConnectionHealth is ArmResourceActionAsync< - P2SVpnGateway, - void, - P2SVpnGateway, - Error = CloudError - >; - - /** - * Gets the sas url to get the connection health detail of P2S clients of the virtual wan P2SVpnGateway in the specified resource group. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("P2SVpnGateways") - @operationId("P2sVpnGateways_GetP2sVpnConnectionHealthDetailed") - getP2sVpnConnectionHealthDetailed is ArmResourceActionAsync< - P2SVpnGateway, - P2SVpnConnectionHealthRequest, - P2SVpnConnectionHealth, - Error = CloudError - >; - - /** - * Disconnect P2S vpn connections of the virtual wan P2SVpnGateway in the specified resource group. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("P2SVpnGateways") - @operationId("P2sVpnGateways_DisconnectP2sVpnConnections") - disconnectP2sVpnConnections is P2SVpnGatewayOps.ActionAsync< - P2SVpnGateway, - P2SVpnConnectionRequest, - Result = void, - Response = { - @body body: void; - } | ArmAcceptedLroResponse, - OverrideErrorType = CloudError - >; -} - -@@doc(P2SVpnGateway.name, "The name of the gateway."); -@@doc(P2SVpnGateway.properties, "Properties of the P2SVpnGateway."); -@@doc(P2SVpnGateways.createOrUpdate::parameters.resource, - "Parameters supplied to create or Update a virtual wan p2s vpn gateway." -); -@@doc(P2SVpnGateways.updateTags::parameters.properties, - "Parameters supplied to update a virtual wan p2s vpn gateway tags." -); -@@doc(P2SVpnGateways.generateVpnProfile::parameters.body, - "Parameters supplied to the generate P2SVpnGateway VPN client package operation." -); -@@doc(P2SVpnGateways.getP2sVpnConnectionHealthDetailed::parameters.body, - "Request parameters supplied to get p2s vpn connections detailed health." -); -@@doc(P2SVpnGateways.disconnectP2sVpnConnections::parameters.body, - "The parameters are supplied to disconnect p2s vpn connections." -); - diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/Route.tsp b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/Route.tsp deleted file mode 100644 index 1ff841643bc..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/Route.tsp +++ /dev/null @@ -1,80 +0,0 @@ -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "@typespec/openapi"; -import "@typespec/rest"; -import "./models.tsp"; -import "./RouteTable.tsp"; - -using TypeSpec.Rest; -using Azure.ResourceManager; -using TypeSpec.Http; -using TypeSpec.OpenAPI; - -namespace Microsoft.Network; -/** - * Route resource. - */ -#suppress "@azure-tools/typespec-azure-core/no-private-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@Azure.ResourceManager.Legacy.feature(Features.virtualNetwork) -@parentResource(RouteTable) -@Http.Private.includeInapplicableMetadataInPayload(false) -model Route extends SubResourceModel { - properties?: RoutePropertiesFormat; - - @visibility(Lifecycle.Read) - @path - @key("routeName") - @segment("routes") - name: string; - - /** - * A unique read-only string that changes whenever the resource is updated. - */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; -} - -@@doc(Route.name, - "The name of the resource that is unique within a resource group. This name can be used to access the resource." -); -@@doc(Route.type, "Resource type."); - -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@Azure.ResourceManager.Legacy.feature(Features.virtualNetwork) -@armResourceOperations -interface Routes { - /** - * Gets the specified route from a route table. - */ - get is ArmResourceRead; - - /** - * Creates or updates a route in the specified route table. - */ - createOrUpdate is ArmResourceCreateOrReplaceAsync; - - /** - * Deletes the specified route from a route table. - */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - delete is ArmResourceDeleteWithoutOkAsync< - Route, - Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse, - Error = CloudError - >; - - /** - * Gets all routes in a route table. - */ - list is ArmResourceListByParent; -} - -@@doc(Route.name, "The name of the route."); -@@doc(Route.properties, "Properties of the route."); -@@doc(Routes.createOrUpdate::parameters.resource, - "Parameters supplied to the create or update route operation." -); diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/VpnServerConfigurationPolicyGroup.tsp b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/VpnServerConfigurationPolicyGroup.tsp deleted file mode 100644 index 52ab518bd13..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/VpnServerConfigurationPolicyGroup.tsp +++ /dev/null @@ -1,98 +0,0 @@ -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "@typespec/openapi"; -import "@typespec/rest"; -import "./models.tsp"; -import "./VpnServerConfiguration.tsp"; - -using TypeSpec.Rest; -using Azure.ResourceManager; -using TypeSpec.Http; -using TypeSpec.OpenAPI; - -namespace Microsoft.Network; -/** - * VpnServerConfigurationPolicyGroup Resource. - */ -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/no-private-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@Azure.ResourceManager.Legacy.feature(Features.virtualWAN) -@parentResource(VpnServerConfiguration) -@Http.Private.includeInapplicableMetadataInPayload(false) -model VpnServerConfigurationPolicyGroup extends SubResourceModel { - properties?: VpnServerConfigurationPolicyGroupProperties; - - /** - * The name of the resource that is unique within a resource group. This name can be used to access the resource. - */ - @visibility(Lifecycle.Read) - @path - @key("configurationPolicyGroupName") - @segment("configurationPolicyGroups") - name: string; - - /** - * A unique read-only string that changes whenever the resource is updated. - */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; -} - -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@Azure.ResourceManager.Legacy.feature(Features.virtualWAN) -@armResourceOperations(#{omitTags: true}) -interface VpnServerConfigurationPolicyGroups { - /** - * Retrieves the details of a ConfigurationPolicyGroup. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @operationId("ConfigurationPolicyGroups_Get") - get is ArmResourceRead; - - /** - * Creates a ConfigurationPolicyGroup if it doesn't exist else updates the existing one. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @operationId("ConfigurationPolicyGroups_CreateOrUpdate") - createOrUpdate is ArmResourceCreateOrReplaceAsync< - VpnServerConfigurationPolicyGroup, - Error = CloudError - >; - - /** - * Deletes a ConfigurationPolicyGroup. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - #suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @operationId("ConfigurationPolicyGroups_Delete") - delete is ArmResourceDeleteWithoutOkAsync< - VpnServerConfigurationPolicyGroup, - Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse, - Error = CloudError - >; - - /** - * Lists all the configurationPolicyGroups in a resource group for a vpnServerConfiguration. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @operationId("configurationPolicyGroups_ListByVpnServerConfiguration") - listByVpnServerConfiguration is ArmResourceListByParent< - VpnServerConfigurationPolicyGroup, - Response = ArmResponse, - Error = CloudError - >; -} - -@@doc(VpnServerConfigurationPolicyGroup.name, - "The name of the resource that is unique within a resource group. This name can be used to access the resource." -); -@@doc(VpnServerConfigurationPolicyGroup.properties, - "Properties of the VpnServerConfigurationPolicyGroup." -); -@@doc(VpnServerConfigurationPolicyGroups.createOrUpdate::parameters.resource, - "Parameters supplied to create or update a VpnServerConfiguration PolicyGroup." -); - diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/VpnSiteLinkConnection.tsp b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/VpnSiteLinkConnection.tsp deleted file mode 100644 index ab1c7814a28..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/VpnSiteLinkConnection.tsp +++ /dev/null @@ -1,138 +0,0 @@ -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "@typespec/openapi"; -import "@typespec/rest"; -import "./models.tsp"; -import "./VpnGateway.tsp"; - -using TypeSpec.Rest; -using Azure.ResourceManager; -using TypeSpec.Http; -using TypeSpec.OpenAPI; - -namespace Microsoft.Network; -/** - * VpnSiteLinkConnection Resource. - */ -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/no-private-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@Azure.ResourceManager.Legacy.feature(Features.virtualWAN) -@parentResource(VpnGateway) -@Http.Private.includeInapplicableMetadataInPayload(false) -model VpnSiteLinkConnection extends SubResourceModel { - properties?: VpnSiteLinkConnectionProperties; - - /** - * The name of the resource that is unique within a resource group. This name can be used to access the resource. - */ - @visibility(Lifecycle.Read) - @path - @key("linkConnectionName") - @segment("vpnLinkConnections") - name: string; - - /** - * A unique read-only string that changes whenever the resource is updated. - */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; -} - -alias VpnSiteLinkConnectionsOps = Azure.ResourceManager.Legacy.LegacyOperations< - { - ...ApiVersionParameter; - ...SubscriptionIdParameter; - ...ResourceGroupParameter; - ...Azure.ResourceManager.Legacy.Provider; - - /** The name of the vpn gateway. */ - @path - @segment("vpnGateways") - @key - gatewayName: string; - - /** The name of the vpn connection. */ - @path - @segment("vpnConnections") - @key - connectionName: string; - }, - { - /** The name of the vpn link connection. */ - @path - @segment("vpnLinkConnections") - @key - linkConnectionName: string; - } ->; - -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@Azure.ResourceManager.Legacy.feature(Features.virtualWAN) -@armResourceOperations(#{omitTags: true}) -interface VpnSiteLinkConnections { - /** - * Retrieves the details of a vpn site link connection. - */ - get is VpnSiteLinkConnectionsOps.Read< - VpnSiteLinkConnection, - OverrideErrorType = CloudError - >; - - /** - * Retrieves all vpn site link connections for a particular virtual wan vpn gateway vpn connection. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @operationId("VpnLinkConnections_ListByVpnConnection") - listByVpnConnection is ArmResourceListByParent< - VpnSiteLinkConnection, - Parameters = { - /** The name of the vpn connection. */ - @path - @segment("vpnConnections") - @key - connectionName: string; - }, - Response = ArmResponse, - Error = CloudError - >; - - /** - * Resets the VpnLink connection specified. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @tag("vpnLinkConnections") - @operationId("VpnLinkConnections_ResetConnection") - @action("resetconnection") - resetConnection is VpnSiteLinkConnectionsOps.ActionAsync< - VpnSiteLinkConnection, - Request = void, - Result = void, - Response = ArmAcceptedLroResponse, - OverrideErrorType = ErrorResponse - >; - - /** - * Lists IKE Security Associations for Vpn Site Link Connection in the specified resource group. - */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @operationId("VpnLinkConnections_GetIkeSas") - @action("getikesas") - getIkeSas is VpnSiteLinkConnectionsOps.ActionAsync< - VpnSiteLinkConnection, - void, - { - @body body: stringApplicationJson; - }, - OverrideErrorType = ErrorResponse - >; -} - -@@doc(VpnSiteLinkConnection.name, - "The name of the resource that is unique within a resource group. This name can be used to access the resource." -); -@@doc(VpnSiteLinkConnection.properties, - "Properties of the VPN site link connection." -); diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/package.json b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/package.json deleted file mode 100644 index 9b0af8bcd6e..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "azure-rest-api-specs", - "devDependencies": { - "@azure-tools/typespec-autorest": "0.66.0", - "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-resource-manager": "0.66.0", - "@azure-tools/typespec-azure-rulesets": "0.66.0", - "@azure-tools/typespec-client-generator-cli": "0.31.0", - "@azure-tools/typespec-client-generator-core": "0.66.3", - "@typespec/compiler": "1.10.0", - "@typespec/http": "1.10.0", - "@typespec/openapi": "1.10.0", - "@typespec/openapi3": "1.10.0", - "@typespec/rest": "0.80.0", - "@typespec/versioning": "0.80.0" - }, - "overrides": { - "@typespec/asset-emitter": "0.79.1", - "get-uri": "^6.0.5", - "minimatch@^3.0.0": "^3.1.5", - "superagent": "^10.2.3" - }, - "engines": { - "node": ">=20.0.0", - "npm": ">=10.0.0" - }, - "private": true -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/tspconfig.yaml deleted file mode 100644 index 8725cee2c96..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/004003-delete-and-restore-operationId-decorator/tspconfig.yaml +++ /dev/null @@ -1,15 +0,0 @@ -emit: - - "@azure-tools/typespec-autorest" -options: - "@azure-tools/typespec-autorest": - omit-unreachable-types: true - emitter-output-dir: "{project-root}" - azure-resource-provider-folder: "resource-manager" - emit-lro-options: "all" - examples-dir: "{project-root}/examples" - output-file: "../{version-status}/{version}/{feature}.json" - arm-types-dir: "{project-root}/../../../../../common-types/resource-management" - output-splitting: "legacy-feature-files" -linter: - extends: - - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/main.tsp deleted file mode 100644 index c9aac058349..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/main.tsp +++ /dev/null @@ -1,41 +0,0 @@ -import "@typespec/rest"; -import "@typespec/versioning"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "./models.tsp"; -import "./stubs.tsp"; - -using TypeSpec.Rest; -using TypeSpec.Http; -using Azure.ResourceManager.Foundations; -using Azure.Core; -using Azure.ResourceManager; -using TypeSpec.Versioning; - -@armProviderNamespace -@service(#{ title: "CognitiveServicesManagementClient" }) -@versioned(Versions) -@armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v3) -namespace Microsoft.CognitiveServices; - -/** - * The available API versions. - */ -enum Versions { - /** - * The 2025-10-01-preview API version. - */ - v2025_10_01_preview: "2025-10-01-preview", - - /** - * The 2025-12-01 API version. - */ - v2025_12_01: "2025-12-01", - - /** - * The 2026-01-15-preview API version. - */ - v2026_01_15_preview: "2026-01-15-preview", -} - -interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/models.tsp b/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/models.tsp deleted file mode 100644 index acf39fd0027..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/models.tsp +++ /dev/null @@ -1,4942 +0,0 @@ -import "@typespec/rest"; -import "@typespec/http"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; - -using TypeSpec.Rest; -using TypeSpec.Http; -using Azure.ResourceManager; -using Azure.ResourceManager.Foundations; - -namespace Microsoft.CognitiveServices; - -/** - * This field is required to be implemented by the Resource Provider if the service has more than one tier, but is not required on a PUT. - */ -union SkuTier { - string, - Free: "Free", - Basic: "Basic", - Standard: "Standard", - Premium: "Premium", - Enterprise: "Enterprise", -} - -/** - * Gets the status of the cognitive services account at the time the operation was called. - */ -union ProvisioningState { - string, - Accepted: "Accepted", - Creating: "Creating", - Deleting: "Deleting", - Moving: "Moving", - Failed: "Failed", - Succeeded: "Succeeded", - Canceled: "Canceled", - ResolvingDNS: "ResolvingDNS", -} - -/** - * The default action when no rule from ipRules and from virtualNetworkRules match. This is only used after the bypass property has been evaluated. - */ -union NetworkRuleAction { - string, - Allow: "Allow", - Deny: "Deny", -} - -/** - * Setting for trusted services. - */ -union ByPassSelection { - string, - None: "None", - AzureServices: "AzureServices", -} - -/** - * Enumerates the possible value of keySource for Encryption - */ -union KeySource { - string, - `Microsoft.CognitiveServices`: "Microsoft.CognitiveServices", - `Microsoft.KeyVault`: "Microsoft.KeyVault", -} - -/** - * The type of identity that created the resource. - */ -union CreatedByType { - string, - User: "User", - Application: "Application", - ManagedIdentity: "ManagedIdentity", - Key: "Key", -} - -/** - * Whether or not public endpoint access is allowed for this account. - */ -union PublicNetworkAccess { - string, - Enabled: "Enabled", - Disabled: "Disabled", -} - -/** - * Multiregion routing methods. - */ -union RoutingMethods { - string, - Priority: "Priority", - Weighted: "Weighted", - Performance: "Performance", -} - -/** - * The action of AbusePenalty. - */ -union AbusePenaltyAction { - string, - Throttle: "Throttle", - Block: "Block", -} - -/** - * Specifies what features in AI Foundry network injection applies to. Currently only supports 'agent' for agent scenarios. 'none' means no network injection. - */ -union ScenarioType { - string, - none: "none", - agent: "agent", -} - -/** - * The reason for restriction. - */ -union ResourceSkuRestrictionsReasonCode { - string, - QuotaId: "QuotaId", - NotAvailableForSubscription: "NotAvailableForSubscription", -} - -/** - * The unit of the metric. - */ -union UnitType { - string, - Count: "Count", - Bytes: "Bytes", - Seconds: "Seconds", - Percent: "Percent", - CountPerSecond: "CountPerSecond", - BytesPerSecond: "BytesPerSecond", - Milliseconds: "Milliseconds", -} - -/** - * Cognitive Services account quota usage status. - */ -union QuotaUsageStatus { - string, - Included: "Included", - Blocked: "Blocked", - InOverage: "InOverage", - Unknown: "Unknown", -} - -/** - * Indicates whether the deprecation date is a confirmed planned end-of-life date or an estimated deprecation date. When 'Planned', the deprecation date represents a confirmed and communicated model end-of-life date. When 'Tentative', the deprecation date is an estimated timeline that may be subject to change. - */ -union DeprecationStatus { - string, - Planned: "Planned", - Tentative: "Tentative", -} - -/** - * Model lifecycle status. - */ -union ModelLifecycleStatus { - string, - - /** - * Legacy state. Replaced with GenerallyAvailable going forward. - */ - Stable: "Stable", - - /** - * Model is in preview and may be subject to changes. - */ - Preview: "Preview", - - /** - * Model is generally available for production use. - */ - GenerallyAvailable: "GenerallyAvailable", - - /** - * Model is being deprecated and will be removed in the future. Only customers with existing deployments can create new deployments with this model. - */ - Deprecating: "Deprecating", - - /** - * Model has been deprecated, also known as retired, and is no longer supported. Inference calls to deployments of models in this lifecycle state will return 410 errors. - */ - Deprecated: "Deprecated", - - /** - * Model is a legacy version that is no longer recommended for use. Customers should migrate to newer models. Check replacementConfig for upgrade information. - */ - Legacy: "Legacy", -} - -/** - * The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit logs UX. Default value is "user,system" - */ -union Origin { - string, - user: "user", - system: "system", - `user,system`: "user,system", -} - -/** - * Enum. Indicates the action type. "Internal" refers to actions that are for internal only APIs. - */ -union ActionType { - string, - Internal: "Internal", -} - -/** - * Account hosting model. - */ -union HostingModel { - string, - Web: "Web", - ConnectedContainer: "ConnectedContainer", - DisconnectedContainer: "DisconnectedContainer", - ProvisionedWeb: "ProvisionedWeb", -} - -/** - * Gets the status of the resource at the time the operation was called. - */ -union DeploymentProvisioningState { - string, - Accepted: "Accepted", - Creating: "Creating", - Deleting: "Deleting", - Moving: "Moving", - Failed: "Failed", - Succeeded: "Succeeded", - Disabled: "Disabled", - Canceled: "Canceled", -} - -/** - * Deployment scale type. - */ -union DeploymentScaleType { - string, - Standard: "Standard", - Manual: "Manual", -} - -/** - * Deployment model version upgrade option. - */ -union DeploymentModelVersionUpgradeOption { - string, - OnceNewDefaultVersionAvailable: "OnceNewDefaultVersionAvailable", - OnceCurrentVersionExpired: "OnceCurrentVersionExpired", - NoAutoUpgrade: "NoAutoUpgrade", -} - -/** - * The service tier for the deployment. Determines the pricing and performance level for request processing. Use 'Default' for standard pricing or 'Priority' for higher-priority processing with premium pricing. Note: Pause operations are only supported on Standard, DataZoneStandard, and GlobalStandard SKUs. - */ -union ServiceTier { - string, - - /** - * Default service tier meaning the request will be processed with the standard pricing and performance for the selected model. - */ - Default: "Default", - - /** - * Priority service tier meaning the request will be processed with higher pricing and performance for the selected model. - */ - Priority: "Priority", -} - -/** - * The state of the deployment. Controls whether the deployment is accepting inference requests. Use 'Running' for active deployments that process requests, or 'Paused' to temporarily stop inference while preserving the deployment configuration. - */ -union DeploymentState { - string, - - /** - * The deployment is running and accepting inference requests. - */ - Running: "Running", - - /** - * The deployment is paused and not accepting inference requests. - */ - Paused: "Paused", -} - -/** - * Gets the status of the resource at the time the operation was called. - */ -union CommitmentPlanProvisioningState { - string, - Accepted: "Accepted", - Creating: "Creating", - Deleting: "Deleting", - Moving: "Moving", - Failed: "Failed", - Succeeded: "Succeeded", - Canceled: "Canceled", -} - -/** - * Gets the status of the resource at the time the operation was called. - */ -union EncryptionScopeProvisioningState { - string, - Accepted: "Accepted", - Creating: "Creating", - Deleting: "Deleting", - Moving: "Moving", - Failed: "Failed", - Succeeded: "Succeeded", - Canceled: "Canceled", -} - -/** - * The encryptionScope state. - */ -union EncryptionScopeState { - string, - Disabled: "Disabled", - Enabled: "Enabled", -} - -/** - * Content Filters policy type. - */ -union RaiPolicyType { - string, - UserManaged: "UserManaged", - SystemManaged: "SystemManaged", -} - -/** - * Rai policy mode. The enum value mapping is as below: Default = 0, Deferred=1, Blocking=2, Asynchronous_filter =3. Please use 'Asynchronous_filter' after 2025-06-01. It is the same as 'Deferred' in previous version. - */ -union RaiPolicyMode { - string, - Default: "Default", - Deferred: "Deferred", - Blocking: "Blocking", - Asynchronous_filter: "Asynchronous_filter", -} - -/** - * Level at which content is filtered. - */ -union ContentLevel { - string, - Low: "Low", - Medium: "Medium", - High: "High", -} - -/** - * Content source to apply the Content Filters. - */ -union RaiPolicyContentSource { - string, - Prompt: "Prompt", - Completion: "Completion", - PreToolCall: "PreToolCall", - PostToolCall: "PostToolCall", - PreRun: "PreRun", - PostRun: "PostRun", -} - -/** - * The action types to apply to the content filters - */ -union RaiActionType { - string, - None: "None", - BLOCKING: "BLOCKING", - ANNOTATING: "ANNOTATING", - HITL: "HITL", - RETRY: "RETRY", -} - -/** - * Direction of Access Rule - */ -union NspAccessRuleDirection { - string, - Inbound: "Inbound", - Outbound: "Outbound", -} - -/** - * Defender for AI state on the AI resource. - */ -union DefenderForAISettingState { - string, - Disabled: "Disabled", - Enabled: "Enabled", -} - -/** - * Authentication type of the connection target - */ -union ConnectionAuthType { - string, - PAT: "PAT", - ManagedIdentity: "ManagedIdentity", - UsernamePassword: "UsernamePassword", - None: "None", - SAS: "SAS", - AccountKey: "AccountKey", - ServicePrincipal: "ServicePrincipal", - AccessKey: "AccessKey", - ApiKey: "ApiKey", - CustomKeys: "CustomKeys", - OAuth2: "OAuth2", - AAD: "AAD", - DelegatedSAS: "DelegatedSAS", - ProjectManagedIdentity: "ProjectManagedIdentity", - AccountManagedIdentity: "AccountManagedIdentity", - UserEntraToken: "UserEntraToken", - AgentUserImpersonation: "AgentUserImpersonation", - AgenticIdentityToken: "AgenticIdentityToken", - AgenticUser: "AgenticUser", -} - -/** - * Category of the connection - */ -union ConnectionCategory { - string, - PythonFeed: "PythonFeed", - ContainerRegistry: "ContainerRegistry", - Git: "Git", - S3: "S3", - Snowflake: "Snowflake", - AzureKeyVault: "AzureKeyVault", - AzureSqlDb: "AzureSqlDb", - AzureSynapseAnalytics: "AzureSynapseAnalytics", - AzureMySqlDb: "AzureMySqlDb", - AzurePostgresDb: "AzurePostgresDb", - ADLSGen2: "ADLSGen2", - AzureContainerAppEnvironment: "AzureContainerAppEnvironment", - Redis: "Redis", - ApiKey: "ApiKey", - AzureOpenAI: "AzureOpenAI", - AIServices: "AIServices", - CognitiveSearch: "CognitiveSearch", - CognitiveService: "CognitiveService", - CustomKeys: "CustomKeys", - AzureBlob: "AzureBlob", - AzureStorageAccount: "AzureStorageAccount", - AzureOneLake: "AzureOneLake", - CosmosDb: "CosmosDb", - CosmosDbMongoDbApi: "CosmosDbMongoDbApi", - AzureDataExplorer: "AzureDataExplorer", - AzureMariaDb: "AzureMariaDb", - AzureDatabricksDeltaLake: "AzureDatabricksDeltaLake", - AzureSqlMi: "AzureSqlMi", - AzureTableStorage: "AzureTableStorage", - AmazonRdsForOracle: "AmazonRdsForOracle", - AmazonRdsForSqlServer: "AmazonRdsForSqlServer", - AmazonRedshift: "AmazonRedshift", - Db2: "Db2", - Drill: "Drill", - GoogleBigQuery: "GoogleBigQuery", - Greenplum: "Greenplum", - Hbase: "Hbase", - Hive: "Hive", - Impala: "Impala", - Informix: "Informix", - MariaDb: "MariaDb", - MicrosoftAccess: "MicrosoftAccess", - MySql: "MySql", - Netezza: "Netezza", - Oracle: "Oracle", - Phoenix: "Phoenix", - PostgreSql: "PostgreSql", - Presto: "Presto", - SapOpenHub: "SapOpenHub", - SapBw: "SapBw", - SapHana: "SapHana", - SapTable: "SapTable", - Spark: "Spark", - SqlServer: "SqlServer", - Sybase: "Sybase", - Teradata: "Teradata", - Vertica: "Vertica", - Pinecone: "Pinecone", - Databricks: "Databricks", - Cassandra: "Cassandra", - Couchbase: "Couchbase", - MongoDbV2: "MongoDbV2", - MongoDbAtlas: "MongoDbAtlas", - AmazonS3Compatible: "AmazonS3Compatible", - FileServer: "FileServer", - FtpServer: "FtpServer", - GoogleCloudStorage: "GoogleCloudStorage", - Hdfs: "Hdfs", - OracleCloudStorage: "OracleCloudStorage", - Sftp: "Sftp", - GenericHttp: "GenericHttp", - ODataRest: "ODataRest", - Odbc: "Odbc", - GenericRest: "GenericRest", - RemoteTool: "RemoteTool", - AmazonMws: "AmazonMws", - Concur: "Concur", - Dynamics: "Dynamics", - DynamicsAx: "DynamicsAx", - DynamicsCrm: "DynamicsCrm", - GoogleAdWords: "GoogleAdWords", - Hubspot: "Hubspot", - Jira: "Jira", - Magento: "Magento", - Marketo: "Marketo", - Office365: "Office365", - Eloqua: "Eloqua", - Responsys: "Responsys", - OracleServiceCloud: "OracleServiceCloud", - PayPal: "PayPal", - QuickBooks: "QuickBooks", - Salesforce: "Salesforce", - SalesforceServiceCloud: "SalesforceServiceCloud", - SalesforceMarketingCloud: "SalesforceMarketingCloud", - SapCloudForCustomer: "SapCloudForCustomer", - SapEcc: "SapEcc", - ServiceNow: "ServiceNow", - SharePointOnlineList: "SharePointOnlineList", - Shopify: "Shopify", - Square: "Square", - WebTable: "WebTable", - Xero: "Xero", - Zoho: "Zoho", - GenericContainerRegistry: "GenericContainerRegistry", - Elasticsearch: "Elasticsearch", - AppInsights: "AppInsights", - AppConfig: "AppConfig", - OpenAI: "OpenAI", - Serp: "Serp", - BingLLMSearch: "BingLLMSearch", - Serverless: "Serverless", - ManagedOnlineEndpoint: "ManagedOnlineEndpoint", - ApiManagement: "ApiManagement", - ModelGateway: "ModelGateway", - GroundingWithBingSearch: "GroundingWithBingSearch", - GroundingWithCustomSearch: "GroundingWithCustomSearch", - Sharepoint: "Sharepoint", - MicrosoftFabric: "MicrosoftFabric", - PowerPlatformEnvironment: "PowerPlatformEnvironment", - RemoteA2A: "RemoteA2A", -} - -/** - * Group based on connection category - */ -union ConnectionGroup { - string, - Azure: "Azure", - AzureAI: "AzureAI", - Database: "Database", - NoSQL: "NoSQL", - File: "File", - GenericProtocol: "GenericProtocol", - ServicesAndApps: "ServicesAndApps", -} - -union ManagedPERequirement { - string, - Required: "Required", - NotRequired: "NotRequired", - NotApplicable: "NotApplicable", -} - -union ManagedPEStatus { - string, - Inactive: "Inactive", - Active: "Active", - NotApplicable: "NotApplicable", -} - -union CapabilityHostKind { - string, - Agents: "Agents", -} - -/** - * Provisioning state of capability host. - */ -union CapabilityHostProvisioningState { - string, - Succeeded: "Succeeded", - Failed: "Failed", - Canceled: "Canceled", - Creating: "Creating", - Updating: "Updating", - Deleting: "Deleting", -} - -/** - * Gets the tier upgrade policy for the subscription. - */ -union TierUpgradePolicy { - string, - OnceUpgradeIsAvailable: "OnceUpgradeIsAvailable", - NoAutoUpgrade: "NoAutoUpgrade", -} - -/** - * Specifies whether an upgrade to the next quota tier is available. - */ -union UpgradeAvailabilityStatus { - string, - Available: "Available", - NotAvailable: "NotAvailable", -} - -/** - * Category of a managed network Outbound Rule of a cognitive services account. - */ -union RuleCategory { - string, - Required: "Required", - Recommended: "Recommended", - UserDefined: "UserDefined", - Dependency: "Dependency", -} - -/** - * Type of a managed network Outbound Rule of a cognitive services account. - */ -union RuleStatus { - string, - Inactive: "Inactive", - Active: "Active", - Provisioning: "Provisioning", - Deleting: "Deleting", - Failed: "Failed", -} - -/** - * Type of a managed network Outbound Rule of a cognitive services account. - */ -union RuleType { - string, - FQDN: "FQDN", - PrivateEndpoint: "PrivateEndpoint", - ServiceTag: "ServiceTag", -} - -/** - * Isolation mode for the managed network of a cognitive services account. - */ -union IsolationMode { - string, - Disabled: "Disabled", - AllowInternetOutbound: "AllowInternetOutbound", - AllowOnlyApprovedOutbound: "AllowOnlyApprovedOutbound", -} - -/** - * Status for the managed network of a cognitive services account. - */ -union ManagedNetworkStatus { - string, - Inactive: "Inactive", - Active: "Active", -} - -/** - * Firewall Sku used for FQDN Rules - */ -union FirewallSku { - string, - Standard: "Standard", - Basic: "Basic", -} - -/** - * The Kind of the managed network. Users can switch from V1 to V2 for granular access controls, but cannot switch back to V1 once V2 is enabled. - */ -union ManagedNetworkKind { - string, - V1: "V1", - V2: "V2", -} - -union ManagedNetworkProvisioningState { - string, - Deferred: "Deferred", - Updating: "Updating", - Succeeded: "Succeeded", - Failed: "Failed", - Deleting: "Deleting", - Deleted: "Deleted", -} - -/** - * Specifies the kind of Entra identity described by this object. - */ -union IdentityKind { - string, - - /** - * Represents a class identity, used for agentic applications. - */ - AgentBlueprint: "AgentBlueprint", - - /** - * Represents an instance identity. - */ - AgentInstance: "AgentInstance", - - /** - * Represents an agentic instance identity with user-like traits. - */ - AgenticUser: "AgenticUser", - - /** - * Represents a classic managed identity. - */ - Managed: "Managed", - - /** - * No identity. - */ - None: "None", -} - -/** - * Enumeration of identity types, from the perspective of management. - */ -union IdentityManagementType { - string, - - /** - * Platform-managed identity. - */ - System: "System", - - /** - * User-managed identity. - */ - User: "User", - - /** - * No identity. - */ - None: "None", -} - -/** - * Represents the provisioning state of an identity resource. - */ -union IdentityProvisioningState { - string, - - /** - * Identity is being created. - */ - Creating: "Creating", - - /** - * Identity is being updated. - */ - Updating: "Updating", - - /** - * Identity has been successfully provisioned. - */ - Succeeded: "Succeeded", - - /** - * Identity provisioning has failed. - */ - Failed: "Failed", - - /** - * Identity provisioning has been canceled. - */ - Canceled: "Canceled", - - /** - * Identity is being deleted. - */ - Deleting: "Deleting", -} - -/** - * Authorization scheme type. - */ -union BuiltInAuthorizationScheme { - string, - - /** - * Standard AzureML RBAC - */ - Default: "Default", - - /** - * Claim-based, requires membership in the tenant - */ - OrganizationScope: "OrganizationScope", - - /** - * Channels-specific (AzureBotService) authorization - */ - Channels: "Channels", - - /** - * Custom scheme defined by the application author - */ - Custom: "Custom", -} - -/** - * Traffic routing protocol, used to distribute an application's inbound traffic to its deployments. - */ -union TrafficRoutingProtocol { - string, - - /** - * Percentage based routing - */ - FixedRatio: "FixedRatio", -} - -/** - * Provisioning state of an agentic application. - */ -union AgenticApplicationProvisioningState { - string, - - /** - * The application was successfully provisioned. - */ - Succeeded: "Succeeded", - - /** - * The application provisioning failed. - */ - Failed: "Failed", - - /** - * The application provisioning was canceled. - */ - Canceled: "Canceled", - - /** - * The application is being created. - */ - Creating: "Creating", - - /** - * The application is being updated. - */ - Updating: "Updating", - - /** - * The application is being deleted. - */ - Deleting: "Deleting", -} - -/** - * Current operational state of the agentic functionality represented by this deployment. - */ -union AgentDeploymentState { - string, - - /** - * The deployment is starting. - */ - Starting: "Starting", - - /** - * The deployment started/is operational. - */ - Running: "Running", - - /** - * The deployment is being stopped. - */ - Stopping: "Stopping", - - /** - * The deployment was stopped. - */ - Stopped: "Stopped", - - /** - * The deployment failed. - */ - Failed: "Failed", - - /** - * The deployment is being deleted. - */ - Deleting: "Deleting", - - /** - * The deployment was deleted. - */ - Deleted: "Deleted", - - /** - * The deployment is being updated. - */ - Updating: "Updating", -} - -/** - * Protocol used by the agent/exposed by a deployment. - */ -union AgentProtocol { - string, - - /** - * Agent protocol (aka Active) - */ - Agent: "Agent", - - /** - * Agent2Agent standard - */ - A2A: "A2A", - - /** - * OpenAI-compatible - */ - Responses: "Responses", -} - -/** - * Specifies the type of deployment for an agent, indicating how the underlying compute and network infrastructure is managed. - */ -union AgentDeploymentType { - string, - - /** - * The underlying infra is managed by the platform in the deployer's subscription - */ - Managed: "Managed", - - /** - * The underlying infra is owned by the platform - */ - Hosted: "Hosted", - - /** - * The underlying infra is provisioned by the deployer (BYO) - */ - Custom: "Custom", -} - -/** - * Provisioning state of an agentic deployment, as an Azure resource. - */ -union AgentDeploymentProvisioningState { - string, - - /** - * The deployment was successfully completed. - */ - Succeeded: "Succeeded", - - /** - * The deployment failed. - */ - Failed: "Failed", - - /** - * The deployment was canceled. - */ - Canceled: "Canceled", - - /** - * The deployment is being created. - */ - Creating: "Creating", - - /** - * The deployment is being updated. - */ - Updating: "Updating", - - /** - * The deployment is being deleted. - */ - Deleting: "Deleting", -} - -/** - * The identity type. - */ -enum ResourceIdentityType { - None, - SystemAssigned, - UserAssigned, - `SystemAssigned, UserAssigned`, -} - -/** - * key name to generate (Key1|Key2) - */ -enum KeyName { - Key1, - Key2, -} - -/** - * The type of restrictions. - */ -enum ResourceSkuRestrictionsType { - Location, - Zone, -} - -/** - * The resource model definition representing SKU - */ -model Sku { - /** - * The name of the SKU. Ex - P3. It is typically a letter+number code - */ - name: string; - - /** - * This field is required to be implemented by the Resource Provider if the service has more than one tier, but is not required on a PUT. - */ - tier?: SkuTier; - - /** - * The SKU size. When the name field is the combination of tier and some other value, this would be the standalone code. - */ - size?: string; - - /** - * If the service has different generations of hardware, for the same SKU, then that can be captured here. - */ - family?: string; - - /** - * If the SKU supports scale out/in then the capacity integer should be included. If scale out/in is not possible for the resource this may be omitted. - */ - capacity?: int32; -} - -/** - * Identity for the resource. - */ -model Identity { - /** - * The identity type. - */ - type?: ResourceIdentityType; - - /** - * The tenant ID of resource. - */ - @visibility(Lifecycle.Read) - tenantId?: string; - - /** - * The principal ID of resource identity. - */ - @visibility(Lifecycle.Read) - principalId?: string; - - /** - * The list of user assigned identities associated with the resource. The user identity dictionary key references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName} - */ - userAssignedIdentities?: Record; -} - -/** - * User-assigned managed identity. - */ -model UserAssignedIdentity { - /** - * Azure Active Directory principal ID associated with this Identity. - */ - @visibility(Lifecycle.Read) - principalId?: string; - - /** - * Client App Id associated with this identity. - */ - @visibility(Lifecycle.Read) - clientId?: string; -} - -/** - * Properties of Cognitive Services account. - */ -model AccountProperties { - /** - * Gets the status of the cognitive services account at the time the operation was called. - */ - @visibility(Lifecycle.Read) - provisioningState?: ProvisioningState; - - /** - * Endpoint of the created account. - */ - @visibility(Lifecycle.Read) - endpoint?: string; - - /** - * The internal identifier (deprecated, do not use this property). - */ - @visibility(Lifecycle.Read) - internalId?: string; - - /** - * Gets the capabilities of the cognitive services account. Each item indicates the capability of a specific feature. The values are read-only and for reference only. - */ - @visibility(Lifecycle.Read) - @identifiers(#["name"]) - capabilities?: SkuCapability[]; - - /** - * If the resource is migrated from an existing key. - */ - @visibility(Lifecycle.Read) - isMigrated?: boolean; - - /** - * Resource migration token. - */ - migrationToken?: string; - - /** - * Sku change info of account. - */ - @visibility(Lifecycle.Read) - skuChangeInfo?: SkuChangeInfo; - - /** - * Optional subdomain name used for token-based authentication. - */ - customSubDomainName?: string; - - /** - * A collection of rules governing the accessibility from specific network locations. - */ - networkAcls?: NetworkRuleSet; - - /** - * The encryption properties for this resource. - */ - encryption?: Encryption; - - /** - * The storage accounts for this resource. - */ - @identifiers(#["resourceId"]) - userOwnedStorage?: UserOwnedStorage[]; - - /** - * The user owned AML account properties. - */ - amlWorkspace?: UserOwnedAmlWorkspace; - - /** - * The private endpoint connection associated with the Cognitive Services account. - */ - @visibility(Lifecycle.Read) - privateEndpointConnections?: PrivateEndpointConnection[]; - - /** - * Whether or not public endpoint access is allowed for this account. - */ - publicNetworkAccess?: PublicNetworkAccess; - - /** - * The api properties for special APIs. - */ - apiProperties?: ApiProperties; - - /** - * Gets the date of cognitive services account creation. - */ - @visibility(Lifecycle.Read) - dateCreated?: string; - - /** - * The call rate limit Cognitive Services account. - */ - @visibility(Lifecycle.Read) - callRateLimit?: CallRateLimit; - - /** - * The flag to enable dynamic throttling. - */ - dynamicThrottlingEnabled?: boolean; - - /** - * The flag to disable stored completions. - */ - storedCompletionsDisabled?: boolean; - - @visibility(Lifecycle.Read) - quotaLimit?: QuotaLimit; - - restrictOutboundNetworkAccess?: boolean; - allowedFqdnList?: string[]; - disableLocalAuth?: boolean; - - /** - * Dictionary of - */ - @visibility(Lifecycle.Read) - endpoints?: Record; - - @visibility(Lifecycle.Create, Lifecycle.Update) - restore?: boolean; - - /** - * The deletion date, only available for deleted account. - */ - @visibility(Lifecycle.Read) - deletionDate?: string; - - /** - * The scheduled purge date, only available for deleted account. - */ - @visibility(Lifecycle.Read) - scheduledPurgeDate?: string; - - /** - * The multiregion settings of Cognitive Services account. - */ - locations?: MultiRegionSettings; - - /** - * The commitment plan associations of Cognitive Services account. - */ - @visibility(Lifecycle.Read) - @identifiers(#["commitmentPlanId"]) - commitmentPlanAssociations?: CommitmentPlanAssociation[]; - - /** - * The abuse penalty. - */ - @visibility(Lifecycle.Read) - abusePenalty?: AbusePenalty; - - /** - * Cognitive Services Rai Monitor Config. - */ - raiMonitorConfig?: RaiMonitorConfig; - - networkInjections?: NetworkInjection[]; - - /** - * Specifies whether this resource support project management as child resources, used as containers for access management, data isolation and cost in AI Foundry. - */ - allowProjectManagement?: boolean; - - /** - * Specifies the project, by project name, that is targeted when data plane endpoints are called without a project parameter. - */ - defaultProject?: string; - - /** - * Specifies the projects, by project name, that are associated with this resource. - */ - associatedProjects?: string[]; -} - -/** - * SkuCapability indicates the capability of a certain feature. - */ -model SkuCapability { - /** - * The name of the SkuCapability. - */ - name?: string; - - /** - * The value of the SkuCapability. - */ - value?: string; -} - -/** - * Sku change info of account. - */ -model SkuChangeInfo { - /** - * Gets the count of downgrades. - */ - countOfDowngrades?: float32; - - /** - * Gets the count of upgrades after downgrades. - */ - countOfUpgradesAfterDowngrades?: float32; - - /** - * Gets the last change date. - */ - lastChangeDate?: string; -} - -/** - * A set of rules governing the network accessibility. - */ -model NetworkRuleSet { - /** - * The default action when no rule from ipRules and from virtualNetworkRules match. This is only used after the bypass property has been evaluated. - */ - defaultAction?: NetworkRuleAction; - - /** - * Setting for trusted services. - */ - bypass?: ByPassSelection; - - /** - * The list of IP address rules. - */ - @identifiers(#[]) - ipRules?: IpRule[]; - - /** - * The list of virtual network rules. - */ - virtualNetworkRules?: VirtualNetworkRule[]; -} - -/** - * A rule governing the accessibility from a specific ip address or ip range. - */ -model IpRule { - /** - * An IPv4 address range in CIDR notation, such as '124.56.78.91' (simple IP address) or '124.56.78.0/24' (all addresses that start with 124.56.78). - */ - value: string; -} - -/** - * A rule governing the accessibility from a specific virtual network. - */ -model VirtualNetworkRule { - /** - * Full resource id of a vnet subnet, such as '/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/subnet1'. - */ - id: string; - - /** - * Gets the state of virtual network rule. - */ - state?: string; - - /** - * Ignore missing vnet service endpoint or not. - */ - ignoreMissingVnetServiceEndpoint?: boolean; -} - -/** - * Properties to configure Encryption - */ -model Encryption { - /** - * Properties of KeyVault - */ - keyVaultProperties?: KeyVaultProperties; - - /** - * Enumerates the possible value of keySource for Encryption - */ - keySource?: KeySource = KeySource.`Microsoft.KeyVault`; -} - -/** - * Properties to configure keyVault Properties - */ -model KeyVaultProperties { - /** - * Name of the Key from KeyVault - */ - keyName?: string; - - /** - * Version of the Key from KeyVault - */ - keyVersion?: string; - - /** - * Uri of KeyVault - */ - keyVaultUri?: string; - - identityClientId?: string; -} - -/** - * The user owned storage for Cognitive Services account. - */ -model UserOwnedStorage { - /** - * Full resource id of a Microsoft.Storage resource. - */ - resourceId?: string; - - identityClientId?: string; -} - -/** - * The user owned AML account for Cognitive Services account. - */ -model UserOwnedAmlWorkspace { - /** - * Full resource id of a AML account resource. - */ - resourceId?: string; - - /** - * Identity Client id of a AML account resource. - */ - identityClientId?: string; -} - -/** - * Properties of the PrivateEndpointConnectProperties. - */ -model PrivateEndpointConnectionProperties { - /** - * The resource of private end point. - */ - privateEndpoint?: Azure.ResourceManager.CommonTypes.PrivateEndpoint; - - /** - * A collection of information about the state of the connection between service consumer and provider. - */ - privateLinkServiceConnectionState: Azure.ResourceManager.CommonTypes.PrivateLinkServiceConnectionState; - - /** - * The provisioning state of the private endpoint connection resource. - */ - @visibility(Lifecycle.Read) - provisioningState?: Azure.ResourceManager.CommonTypes.PrivateEndpointConnectionProvisioningState; - - /** - * The private link resource group ids. - */ - groupIds?: string[]; -} - -/** - * The api properties for special APIs. - */ -model ApiProperties { - ...Record; - - /** - * (QnAMaker Only) The runtime endpoint of QnAMaker. - */ - qnaRuntimeEndpoint?: string; - - /** - * (QnAMaker Only) The Azure Search endpoint key of QnAMaker. - */ - qnaAzureSearchEndpointKey?: string; - - /** - * (QnAMaker Only) The Azure Search endpoint id of QnAMaker. - */ - qnaAzureSearchEndpointId?: string; - - /** - * (Bing Search Only) The flag to enable statistics of Bing Search. - */ - statisticsEnabled?: boolean; - - /** - * (Personalization Only) The flag to enable statistics of Bing Search. - */ - @maxLength(1000) - @pattern("^( *)Endpoint=sb://(.*);( *)SharedAccessKeyName=(.*);( *)SharedAccessKey=(.*)$") - eventHubConnectionString?: string; - - /** - * (Personalization Only) The storage account connection string. - */ - @maxLength(1000) - @pattern("^(( *)DefaultEndpointsProtocol=(http|https)( *);( *))?AccountName=(.*)AccountKey=(.*)EndpointSuffix=(.*)$") - storageAccountConnectionString?: string; - - /** - * (Metrics Advisor Only) The Azure AD Client Id (Application Id). - */ - @maxLength(500) - aadClientId?: string; - - /** - * (Metrics Advisor Only) The Azure AD Tenant Id. - */ - @maxLength(500) - aadTenantId?: string; - - /** - * (Metrics Advisor Only) The super user of Metrics Advisor. - */ - @maxLength(500) - superUser?: string; - - /** - * (Metrics Advisor Only) The website name of Metrics Advisor. - */ - @maxLength(500) - websiteName?: string; -} - -/** - * The call rate limit Cognitive Services account. - */ -model CallRateLimit { - /** - * The count value of Call Rate Limit. - */ - count?: float32; - - /** - * The renewal period in seconds of Call Rate Limit. - */ - renewalPeriod?: float32; - - @identifiers(#["key"]) - rules?: ThrottlingRule[]; -} - -model ThrottlingRule { - key?: string; - renewalPeriod?: float32; - count?: float32; - minCount?: float32; - dynamicThrottlingEnabled?: boolean; - - @identifiers(#["path", "method"]) - matchPatterns?: RequestMatchPattern[]; -} - -model RequestMatchPattern { - path?: string; - method?: string; -} - -model QuotaLimit { - count?: float32; - renewalPeriod?: float32; - - @identifiers(#["key"]) - rules?: ThrottlingRule[]; -} - -/** - * The multiregion settings Cognitive Services account. - */ -model MultiRegionSettings { - /** - * Multiregion routing methods. - */ - routingMethod?: RoutingMethods; - - @identifiers(#["name"]) - regions?: RegionSetting[]; -} - -/** - * The call rate limit Cognitive Services account. - */ -model RegionSetting { - /** - * Name of the region. - */ - name?: string; - - /** - * A value for priority or weighted routing methods. - */ - value?: float32; - - /** - * Maps the region to the regional custom subdomain. - */ - customsubdomain?: string; -} - -/** - * The commitment plan association. - */ -model CommitmentPlanAssociation { - /** - * The Azure resource id of the commitment plan. - */ - commitmentPlanId?: string; - - /** - * The location of of the commitment plan. - */ - commitmentPlanLocation?: string; -} - -/** - * The abuse penalty. - */ -model AbusePenalty { - /** - * The action of AbusePenalty. - */ - action?: AbusePenaltyAction; - - /** - * The percentage of rate limit. - */ - rateLimitPercentage?: float32; - - /** - * The datetime of expiration of the AbusePenalty. - */ - // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. - expiration?: utcDateTime; -} - -/** - * Cognitive Services Rai Monitor Config. - */ -model RaiMonitorConfig { - /** - * The storage resource Id. - */ - adxStorageResourceId?: string; - - /** - * The identity client Id to access the storage. - */ - identityClientId?: string; -} - -/** - * Specifies in AI Foundry where virtual network injection occurs to secure scenarios like Agents entirely within the user's private network, eliminating public internet exposure while maintaining control over network configurations and resources. - */ -model NetworkInjection { - /** - * Specifies what features in AI Foundry network injection applies to. Currently only supports 'agent' for agent scenarios. 'none' means no network injection. - */ - scenario?: ScenarioType; - - /** - * Specify the subnet for which your Agent Client is injected into. - */ - subnetArmId?: Azure.Core.armResourceIdentifier<[ - { - type: "Microsoft.Network/virtualNetworks/subnets"; - } - ]>; - - /** - * Boolean to enable Microsoft Managed Network for subnet delegation - */ - useMicrosoftManagedNetwork?: boolean; -} - -/** - * The access keys for the cognitive services account. - */ -model ApiKeys { - /** - * Gets the value of key 1. - */ - key1?: string; - - /** - * Gets the value of key 2. - */ - key2?: string; -} - -/** - * Regenerate key parameters. - */ -model RegenerateKeyParameters { - /** - * key name to generate (Key1|Key2) - */ - keyName: KeyName; -} - -/** - * The Get Skus operation response. - */ -model ResourceSkuListResult is Azure.Core.Page; - -/** - * Describes an available Cognitive Services SKU. - */ -model ResourceSku { - /** - * The type of resource the SKU applies to. - */ - resourceType?: string; - - /** - * The name of SKU. - */ - name?: string; - - /** - * Specifies the tier of Cognitive Services account. - */ - tier?: string; - - /** - * The Kind of resources that are supported in this SKU. - */ - kind?: string; - - /** - * The set of locations that the SKU is available. - */ - locations?: string[]; - - /** - * The restrictions because of which SKU cannot be used. This is empty if there are no restrictions. - */ - @identifiers(#[]) - restrictions?: ResourceSkuRestrictions[]; -} - -/** - * Describes restrictions of a SKU. - */ -model ResourceSkuRestrictions { - /** - * The type of restrictions. - */ - type?: ResourceSkuRestrictionsType; - - /** - * The value of restrictions. If the restriction type is set to location. This would be different locations where the SKU is restricted. - */ - values?: string[]; - - /** - * The information about the restriction where the SKU cannot be used. - */ - restrictionInfo?: ResourceSkuRestrictionInfo; - - /** - * The reason for restriction. - */ - reasonCode?: ResourceSkuRestrictionsReasonCode; -} - -model ResourceSkuRestrictionInfo { - /** - * Locations where the SKU is restricted - */ - locations?: string[]; - - /** - * List of availability zones where the SKU is restricted. - */ - zones?: string[]; -} - -/** - * The list of cognitive services accounts operation response. - */ -model AccountSkuListResult { - /** - * Gets the list of Cognitive Services accounts and their properties. - */ - @identifiers(#["sku/name", "resourceType"]) - value?: AccountSku[]; -} - -/** - * Cognitive Services resource type and SKU. - */ -model AccountSku { - /** - * Resource Namespace and Type - */ - resourceType?: string; - - /** - * The SKU of Cognitive Services account. - */ - sku?: Sku; -} - -/** - * The response to a list usage request. - */ -model UsageListResult { - /** - * The link used to get the next page of Usages. - */ - @nextLink - nextLink?: string; - - /** - * The list of usages for Cognitive Service account. - */ - @pageItems - @identifiers(#["name"]) - value?: Usage[]; -} - -/** - * The usage data for a usage request. - */ -model Usage { - /** - * The unit of the metric. - */ - unit?: UnitType; - - /** - * The name information for the metric. - */ - name?: MetricName; - - /** - * The quota period used to summarize the usage values. - */ - quotaPeriod?: string; - - /** - * Maximum value for this metric. - */ - limit?: float64; - - /** - * Current value for this metric. - */ - currentValue?: float64; - - /** - * Next reset time for current quota. - */ - nextResetTime?: string; - - /** - * Cognitive Services account quota usage status. - */ - status?: QuotaUsageStatus; -} - -/** - * A metric name. - */ -model MetricName { - /** - * The name of the metric. - */ - value?: string; - - /** - * The friendly name of the metric. - */ - localizedValue?: string; -} - -/** - * The list of cognitive services accounts operation response. - */ -model AccountModelListResult { - /** - * The link used to get the next page of Model. - */ - @nextLink - nextLink?: string; - - /** - * Gets the list of Cognitive Services accounts Model and their properties. - */ - @pageItems - @identifiers(#["name", "format", "version"]) - value?: AccountModel[]; -} - -/** - * Cognitive Services account Model. - */ -model AccountModel extends DeploymentModel { - /** - * Properties of Cognitive Services account deployment model. - */ - baseModel?: DeploymentModel; - - /** - * If the model is default version. - */ - isDefaultVersion?: boolean; - - /** - * The list of Model Sku. - */ - @identifiers(#["name"]) - skus?: ModelSku[]; - - /** - * The max capacity. - */ - maxCapacity?: int32; - - /** - * The capabilities. - */ - capabilities?: Record; - - /** - * The capabilities for finetune models. - */ - finetuneCapabilities?: Record; - - /** - * Cognitive Services account ModelDeprecationInfo. - */ - deprecation?: ModelDeprecationInfo; - - /** - * Configuration for model replacement. - */ - replacementConfig?: ReplacementConfig; - - /** - * Asset identifier for the model in the model catalog. - */ - modelCatalogAssetId?: string; - - /** - * Model lifecycle status. - */ - lifecycleStatus?: ModelLifecycleStatus; - - /** - * Metadata pertaining to creation and last modification of the resource. - */ - @visibility(Lifecycle.Read) - systemData?: SystemData; -} - -/** - * Properties of Cognitive Services account deployment model. - */ -model DeploymentModel { - /** - * Deployment model publisher. - */ - publisher?: string; - - /** - * Deployment model format. - */ - format?: string; - - /** - * Deployment model name. - */ - name?: string; - - /** - * Optional. Deployment model version. If version is not specified, a default version will be assigned. The default version is different for different models and might change when there is new version available for a model. Default version for a model could be found from list models API. - */ - version?: string; - - /** - * Optional. Deployment model source ARM resource ID. - */ - source?: string; - - /** - * Optional. Source of the model, another Microsoft.CognitiveServices accounts ARM resource ID. - */ - sourceAccount?: Azure.Core.armResourceIdentifier<[ - { - type: "Microsoft.CognitiveServices/accounts"; - } - ]>; - - /** - * The call rate limit Cognitive Services account. - */ - @visibility(Lifecycle.Read) - callRateLimit?: CallRateLimit; -} - -/** - * Describes an available Cognitive Services Model SKU. - */ -model ModelSku { - /** - * The name of the model SKU. - */ - name?: string; - - /** - * The usage name of the model SKU. - */ - usageName?: string; - - /** - * The datetime of deprecation of the model SKU. - */ - // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. - deprecationDate?: utcDateTime; - - /** - * The capacity configuration. - */ - capacity?: CapacityConfig; - - /** - * The list of rateLimit. - */ - @identifiers(#[]) - rateLimits?: CallRateLimit[]; - - /** - * The list of billing meter info. - */ - @identifiers(#[]) - cost?: BillingMeterInfo[]; -} - -/** - * The capacity configuration. - */ -model CapacityConfig { - /** - * The minimum capacity. - */ - minimum?: int32; - - /** - * The maximum capacity. - */ - maximum?: int32; - - /** - * The minimal incremental between allowed values for capacity. - */ - step?: int32; - - /** - * The default capacity. - */ - default?: int32; - - /** - * The array of allowed values for capacity. - */ - allowedValues?: int32[]; -} - -model BillingMeterInfo { - name?: string; - meterId?: string; - unit?: string; -} - -/** - * Cognitive Services account ModelDeprecationInfo. - */ -model ModelDeprecationInfo { - /** - * The datetime of deprecation of the fineTune Model. - */ - fineTune?: string; - - /** - * The datetime of deprecation of the inference Model. - */ - inference?: string; - - /** - * Indicates whether the deprecation date is a confirmed planned end-of-life date or an estimated deprecation date. When 'Planned', the deprecation date represents a confirmed and communicated model end-of-life date. When 'Tentative', the deprecation date is an estimated timeline that may be subject to change. - */ - deprecationStatus?: DeprecationStatus; -} - -/** - * Configuration for model replacement. - */ -model ReplacementConfig { - /** - * The name of the replacement model. - */ - targetModelName?: string; - - /** - * The version of the replacement model. - */ - targetModelVersion?: string; - - /** - * The date when automatic upgrade should start. This applies to deployments with the OnceNewDefaultVersionAvailable upgrade option. - */ - // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. - autoUpgradeStartDate?: utcDateTime; - - /** - * The number of days before deprecation date to trigger upgrade. This applies to deployments with the OnceCurrentVersionExpired upgrade option. - */ - upgradeOnExpiryLeadTimeDays?: int32; -} - -/** - * Check SKU availability parameter. - */ -model CheckSkuAvailabilityParameter { - /** - * The SKU of the resource. - */ - skus: string[]; - - /** - * The kind (type) of cognitive service account. - */ - kind: string; - - /** - * The Type of the resource. - */ - type: string; -} - -/** - * Check SKU availability result list. - */ -model SkuAvailabilityListResult { - /** - * Check SKU availability result list. - */ - @identifiers(#["skuName", "type", "kind"]) - value?: SkuAvailability[]; -} - -/** - * SKU availability. - */ -model SkuAvailability { - /** - * The kind (type) of cognitive service account. - */ - kind?: string; - - /** - * The Type of the resource. - */ - type?: string; - - /** - *The name of SKU. - */ - skuName?: string; - - /** - * Indicates the given SKU is available or not. - */ - skuAvailable?: boolean; - - /** - * Reason why the SKU is not available. - */ - reason?: string; - - /** - * Additional error message. - */ - message?: string; -} - -/** - * The list of cognitive services accounts operation response. - */ -model CommitmentTierListResult { - /** - * The link used to get the next page of CommitmentTier. - */ - @nextLink - nextLink?: string; - - /** - * Gets the list of Cognitive Services accounts CommitmentTier and their properties. - */ - @pageItems - @visibility(Lifecycle.Read) - @identifiers(#["kind", "tier", "skuName", "hostingModel", "planType"]) - value?: CommitmentTier[]; -} - -/** - * Cognitive Services account commitment tier. - */ -model CommitmentTier { - /** - * The kind (type) of cognitive service account. - */ - kind?: string; - - /** - * The name of the SKU. Ex - P3. It is typically a letter+number code - */ - skuName?: string; - - /** - * Account hosting model. - */ - hostingModel?: HostingModel; - - /** - * Commitment plan type. - */ - planType?: string; - - /** - * Commitment period commitment tier. - */ - tier?: string; - - /** - * Commitment period commitment max count. - */ - maxCount?: int32; - - /** - * Cognitive Services account commitment quota. - */ - quota?: CommitmentQuota; - - /** - * Cognitive Services account commitment cost. - */ - cost?: CommitmentCost; -} - -/** - * Cognitive Services account commitment quota. - */ -model CommitmentQuota { - /** - * Commitment quota quantity. - */ - quantity?: int64; - - /** - * Commitment quota unit. - */ - unit?: string; -} - -/** - * Cognitive Services account commitment cost. - */ -model CommitmentCost { - /** - * Commitment meter Id. - */ - commitmentMeterId?: string; - - /** - * Overage meter Id. - */ - overageMeterId?: string; -} - -/** - * The list of cognitive services models. - */ -model ModelListResult { - /** - * The link used to get the next page of Model. - */ - @nextLink - nextLink?: string; - - /** - * Gets the list of Cognitive Services accounts Model and their properties. - */ - @pageItems - @identifiers(#[ - "kind", - "skuName", - "/model/name", - "/model/format", - "/model/version" - ]) - value?: Model[]; -} - -/** - * Cognitive Services Model. - */ -model Model { - /** - * Cognitive Services account Model. - */ - `model`?: AccountModel; - - /** - * The kind (type) of cognitive service account. - */ - kind?: string; - - /** - * The name of SKU. - */ - skuName?: string; - - /** - * The description of the model. - */ - description?: string; -} - -model ModelCapacityListResultValueItem - extends Azure.ResourceManager.CommonTypes.ProxyResource { - /** - * The location of the Model Sku Capacity. - */ - location?: string; - - /** - * Cognitive Services account ModelSkuCapacity. - */ - properties?: ModelSkuCapacityProperties; -} - -/** - * Cognitive Services account ModelSkuCapacity. - */ -model ModelSkuCapacityProperties { - /** - * Properties of Cognitive Services account deployment model. - */ - `model`?: DeploymentModel; - - skuName?: string; - - /** - * The available capacity for deployment with this model and sku. - */ - availableCapacity?: float32; - - /** - * The available capacity for deployment with a fine-tune version of this model and sku. - */ - availableFinetuneCapacity?: float32; -} - -/** - * Check Domain availability parameter. - */ -model CheckDomainAvailabilityParameter { - /** - * The subdomain name to use. - */ - subdomainName: string; - - /** - * The Type of the resource. - */ - type: string; - - /** - * The kind (type) of cognitive service account. - */ - kind?: string; -} - -/** - * Domain availability. - */ -model DomainAvailability { - /** - * Indicates the given SKU is available or not. - */ - isSubdomainAvailable?: boolean; - - /** - * Reason why the SKU is not available. - */ - reason?: string; - - /** - * The subdomain name to use. - */ - subdomainName?: string; - - /** - * The Type of the resource. - */ - type?: string; - - /** - * The kind (type) of cognitive service account. - */ - kind?: string; -} - -/** - * Calculate Model Capacity parameter. - */ -model CalculateModelCapacityParameter { - /** - * Properties of Cognitive Services account deployment model. - */ - `model`?: DeploymentModel; - - /** - * The name of SKU. - */ - skuName?: string; - - /** - * List of Model Capacity Calculator Workload. - */ - @identifiers(#[]) - workloads?: ModelCapacityCalculatorWorkload[]; -} - -/** - * Model Capacity Calculator Workload. - */ -model ModelCapacityCalculatorWorkload { - /** - * Request per minute. - */ - requestPerMinute?: int64; - - /** - * Dictionary, Model Capacity Calculator Workload Parameters. - */ - requestParameters?: ModelCapacityCalculatorWorkloadRequestParam; -} - -/** - * Dictionary, Model Capacity Calculator Workload Parameters. - */ -model ModelCapacityCalculatorWorkloadRequestParam { - /** - * Average prompt tokens. - */ - avgPromptTokens?: int64; - - /** - * Average generated tokens. - */ - avgGeneratedTokens?: int64; -} - -/** - * Calculate Model Capacity result. - */ -model CalculateModelCapacityResult { - /** - * Properties of Cognitive Services account deployment model. - */ - `model`?: DeploymentModel; - - skuName?: string; - - /** - * Model Estimated Capacity. - */ - estimatedCapacity?: CalculateModelCapacityResultEstimatedCapacity; -} - -/** - * Model Estimated Capacity. - */ -model CalculateModelCapacityResultEstimatedCapacity { - value?: int32; - deployableValue?: int32; -} - -/** - * A list of private endpoint connections - */ -model PrivateEndpointConnectionListResult { - /** - * Array of private endpoint connections - */ - @pageItems - value?: PrivateEndpointConnection[]; -} - -/** - * A list of private link resources - */ -model PrivateLinkResourceListResult { - /** - * Array of private link resources - */ - value?: PrivateLinkResource[]; -} - -/** - * A private link resource - */ -model PrivateLinkResource extends Azure.ResourceManager.CommonTypes.Resource { - /** - * Resource properties. - */ - properties?: PrivateLinkResourceProperties; -} - -/** - * Properties of a private link resource. - */ -model PrivateLinkResourceProperties { - /** - * The private link resource group id. - */ - @visibility(Lifecycle.Read) - groupId?: string; - - /** - * The private link resource required member names. - */ - @visibility(Lifecycle.Read) - requiredMembers?: string[]; - - /** - * The private link resource Private link DNS zone name. - */ - requiredZoneNames?: string[]; - - /** - * The private link resource display name. - */ - @visibility(Lifecycle.Read) - displayName?: string; -} - -/** - * Properties of Cognitive Services account deployment. - */ -model DeploymentProperties { - /** - * Gets the status of the resource at the time the operation was called. - */ - @visibility(Lifecycle.Read) - provisioningState?: DeploymentProvisioningState; - - /** - * Properties of Cognitive Services account deployment model. - */ - `model`?: DeploymentModel; - - /** - * Properties of Cognitive Services account deployment model. (Deprecated, please use Deployment.sku instead.) - */ - scaleSettings?: DeploymentScaleSettings; - - /** - * The capabilities. - */ - @visibility(Lifecycle.Read) - capabilities?: Record; - - /** - * The name of RAI policy. - */ - raiPolicyName?: string; - - /** - * The call rate limit Cognitive Services account. - */ - @visibility(Lifecycle.Read) - callRateLimit?: CallRateLimit; - - @visibility(Lifecycle.Read) - @identifiers(#["key"]) - rateLimits?: ThrottlingRule[]; - - /** - * Deployment model version upgrade option. - */ - versionUpgradeOption?: DeploymentModelVersionUpgradeOption; - - /** - * If the dynamic throttling is enabled. - */ - @visibility(Lifecycle.Read) - dynamicThrottlingEnabled?: boolean; - - /** - * The current capacity. - */ - currentCapacity?: int32; - - /** - * Internal use only. - */ - capacitySettings?: DeploymentCapacitySettings; - - /** - * The name of parent deployment. - */ - parentDeploymentName?: string; - - /** - * Specifies the deployment name that should serve requests when the request would have otherwise been throttled due to reaching current deployment throughput limit. - */ - spilloverDeploymentName?: string; - - /** - * The service tier for the deployment. Determines the pricing and performance level for request processing. Use 'Default' for standard pricing or 'Priority' for higher-priority processing with premium pricing. Note: Pause operations are only supported on Standard, DataZoneStandard, and GlobalStandard SKUs. - */ - serviceTier?: ServiceTier | null; - - /** - * The state of the deployment. Controls whether the deployment is accepting inference requests. Use 'Running' for active deployments that process requests, or 'Paused' to temporarily stop inference while preserving the deployment configuration. - */ - deploymentState?: DeploymentState | null; -} - -/** - * Properties of Cognitive Services account deployment model. (Deprecated, please use Deployment.sku instead.) - */ -model DeploymentScaleSettings { - /** - * Deployment scale type. - */ - scaleType?: DeploymentScaleType; - - /** - * Deployment capacity. - */ - capacity?: int32; - - /** - * Deployment active capacity. This value might be different from `capacity` if customer recently updated `capacity`. - */ - @visibility(Lifecycle.Read) - activeCapacity?: int32; -} - -/** - * Internal use only. - */ -model DeploymentCapacitySettings { - /** - * The designated capacity. - */ - @minValue(0) - designatedCapacity?: int32; - - /** - * The priority of this capacity setting. - */ - @minValue(0) - priority?: int32; -} - -/** - * The object being used to update tags and sku of a resource, in general used for PATCH operations. - */ -model PatchResourceTagsAndSku extends PatchResourceTags { - /** - * The resource model definition representing SKU - */ - sku?: Sku; -} - -/** - * The object being used to update tags of a resource, in general used for PATCH operations. - */ -model PatchResourceTags { - /** - * Resource tags. - */ - @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) - tags?: Record; -} - -/** - * The list of cognitive services accounts operation response. - */ -model DeploymentSkuListResult { - /** - * The link used to get the next page of deployment skus. - */ - @nextLink - nextLink?: string; - - /** - * Gets the list of Cognitive Services accounts deployment skus. - */ - @pageItems - @identifiers(#["resourceType"]) - @visibility(Lifecycle.Read) - value?: SkuResource[]; -} - -/** - * Properties of Cognitive Services account resource sku resource properties. - */ -model SkuResource { - /** - * The resource type name. - */ - resourceType?: string; - - /** - * The resource model definition representing SKU - */ - sku?: Sku; - - /** - * The capacity configuration. - */ - capacity?: CapacityConfig; -} - -/** - * Properties of Cognitive Services account commitment plan. - */ -model CommitmentPlanProperties { - /** - * Gets the status of the resource at the time the operation was called. - */ - @visibility(Lifecycle.Read) - provisioningState?: CommitmentPlanProvisioningState; - - /** - * Commitment plan guid. - */ - commitmentPlanGuid?: string; - - /** - * Account hosting model. - */ - hostingModel?: HostingModel; - - /** - * Commitment plan type. - */ - planType?: string; - - /** - * Cognitive Services account commitment period. - */ - current?: CommitmentPeriod; - - /** - * AutoRenew commitment plan. - */ - autoRenew?: boolean; - - /** - * Cognitive Services account commitment period. - */ - next?: CommitmentPeriod; - - /** - * Cognitive Services account commitment period. - */ - @visibility(Lifecycle.Read) - last?: CommitmentPeriod; - - /** - * The list of ProvisioningIssue. - */ - @visibility(Lifecycle.Read) - provisioningIssues?: string[]; -} - -/** - * Cognitive Services account commitment period. - */ -model CommitmentPeriod { - /** - * Commitment period commitment tier. - */ - tier?: string; - - /** - * Commitment period commitment count. - */ - count?: int32; - - /** - * Cognitive Services account commitment quota. - */ - @visibility(Lifecycle.Read) - quota?: CommitmentQuota; - - /** - * Commitment period start date. - */ - @visibility(Lifecycle.Read) - startDate?: string; - - /** - * Commitment period end date. - */ - @visibility(Lifecycle.Read) - endDate?: string; -} - -/** - * Properties to EncryptionScope - */ -model EncryptionScopeProperties extends Encryption { - /** - * Gets the status of the resource at the time the operation was called. - */ - @visibility(Lifecycle.Read) - provisioningState?: EncryptionScopeProvisioningState; - - /** - * The encryptionScope state. - */ - state?: EncryptionScopeState; -} - -/** - * Azure OpenAI Content Filters properties. - */ -model RaiPolicyProperties { - /** - * Content Filters policy type. - */ - @visibility(Lifecycle.Read) - type?: RaiPolicyType; - - /** - * Rai policy mode. The enum value mapping is as below: Default = 0, Deferred=1, Blocking=2, Asynchronous_filter =3. Please use 'Asynchronous_filter' after 2025-06-01. It is the same as 'Deferred' in previous version. - */ - mode?: RaiPolicyMode; - - /** - * Name of Rai policy. - */ - basePolicyName?: string; - - /** - * The list of Content Filters. - */ - @identifiers(#["name"]) - contentFilters?: RaiPolicyContentFilter[]; - - /** - * The list of custom Blocklist. - */ - @identifiers(#[]) - customBlocklists?: CustomBlocklistConfig[]; - - /** - * The list of custom rai topics. - */ - @identifiers(#[]) - customTopics?: CustomTopicConfig[]; - - /** - * The list of Safety Providers. - */ - @identifiers(#[]) - safetyProviders?: SafetyProviderConfig[]; -} - -/** - * Azure OpenAI Content Filter. - */ -model RaiPolicyContentFilter { - /** - * Name of ContentFilter. - */ - name?: string; - - /** - * If the ContentFilter is enabled. - */ - enabled?: boolean; - - /** - * Level at which content is filtered. - */ - severityThreshold?: ContentLevel; - - /** - * If blocking would occur. - */ - blocking?: boolean; - - /** - * Content source to apply the Content Filters. - */ - source?: RaiPolicyContentSource; - - /** - * The action types to apply to the content filters - */ - action?: RaiActionType; -} - -/** - * Gets or sets the source to which filter applies. - */ -model CustomBlocklistConfig extends RaiBlocklistConfig { - /** - * Content source to apply the Content Filters. - */ - source?: RaiPolicyContentSource; -} - -/** - * Azure OpenAI blocklist config. - */ -model RaiBlocklistConfig { - /** - * Name of ContentFilter. - */ - blocklistName?: string; - - /** - * If blocking would occur. - */ - blocking?: boolean; -} - -/** - * Gets or sets the source to which filter applies. - */ -model CustomTopicConfig extends RaiTopicConfig { - /** - * Content source to apply the Content Filters. - */ - source?: RaiPolicyContentSource; -} - -/** - * Azure OpenAI RAI topic config. - */ -model RaiTopicConfig { - /** - * Name of RAI topic. - */ - topicName?: string; - - /** - * If blocking would occur. - */ - blocking?: boolean; -} - -/** - * Gets or sets the source to which safety providers applies. - */ -model SafetyProviderConfig extends RaiSafetyProviderConfig { - /** - * Content source to apply the Content Filters. - */ - source?: RaiPolicyContentSource; -} - -/** - * Azure OpenAI RAI safety provider config. - */ -model RaiSafetyProviderConfig { - /** - * Name of RAI Safety Provider. - */ - safetyProviderName?: string; - - /** - * If blocking would occur. - */ - blocking?: boolean; -} - -/** - * RAI Custom Blocklist properties. - */ -model RaiBlocklistProperties { - /** - * Description of the block list. - */ - description?: string; -} - -/** - * The list of cognitive services RAI Blocklist Items. - */ -model RaiBlockListItemsResult { - /** - * The link used to get the next page of RaiBlocklistItems. - */ - @nextLink - nextLink?: string; - - /** - * The list of RaiBlocklistItems. - */ - @pageItems - @identifiers(#["name"]) - value?: RaiBlocklistItem[]; -} - -/** - * RAI Custom Blocklist Item properties. - */ -model RaiBlocklistItemProperties { - /** - * Pattern to match against. - */ - pattern?: string; - - /** - * If the pattern is a regex pattern. - */ - isRegex?: boolean; -} - -/** - * The Cognitive Services RaiBlocklist Item request body. - */ -model RaiBlocklistItemBulkRequest { - name?: string; - - /** - * Properties of Cognitive Services RaiBlocklist Item. - */ - properties?: RaiBlocklistItemProperties; -} - -/** - * RAI Custom Topic properties. - */ -model RaiTopicProperties { - /** - * The unique identifier of the custom topic. - */ - topicId?: string; - - /** - * The name of the custom topic. - */ - topicName?: string; - - /** - * Description of the custom topic. - */ - description?: string; - - /** - * Sample blob url for the custom topic. - */ - sampleBlobUrl?: string; - - /** - * Status of the custom topic. - */ - status?: string; - - /** - * Failed reason if the status is Failed. - */ - failedReason?: string; - - /** - * Creation time of the custom topic. - */ - // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. - createdAt?: utcDateTime; - - /** - * Last modified time of the custom topic. - */ - // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. - lastModifiedAt?: utcDateTime; -} - -/** - * The list of cognitive services RAI External Safety Providers. - */ -model RaiExternalSafetyProviderResult { - /** - * The link used to get the next page of Rai External Safety Provider. - */ - @nextLink - nextLink?: string; - - /** - * The list of RaiExternalSafetyProvider. - */ - @pageItems - @identifiers(#["name"]) - value?: RaiExternalSafetyProviderSchema[]; -} - -/** - * RAI External SafetyProvider schema properties. - */ -model RaiExternalSafetyProviderSchemaProperties { - /** - * The unique identifier of the safety provider. - */ - providerId?: string; - - /** - * Name of the safety provider. - */ - providerName?: string; - - /** - * Safety provider mode sync/async. - */ - mode?: string; - - /** - * Webhook URL for the safety provider. - */ - url?: url; - - /** - * The name of the secret in Key Vault that contains the api key to access the webhook. - */ - secretName?: string; - - /** - * The managed identity to access the Key Vault. - */ - managedIdentity?: string; - - /** - * The Key Vault URI that contains the api key for safety provider urls. - */ - keyVaultUri?: url; - - /** - * Creation time of the safety provider. - */ - @visibility(Lifecycle.Read) - // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. - createdAt?: utcDateTime; - - /** - * Last modified time of the safety provider. - */ - @visibility(Lifecycle.Read) - // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. - lastModifiedAt?: utcDateTime; -} - -/** - * Cognitive Services Rai External Safety provider. - */ -model RaiExternalSafetyProvider - extends Azure.ResourceManager.CommonTypes.ProxyResource { - /** - * Resource Etag. - */ - @visibility(Lifecycle.Read) - etag?: string; - - /** - * Resource tags. - */ - @visibility(Lifecycle.Read) - tags?: Record; - - /** - * Properties of Cognitive Services Rai External Safety provider. - */ - properties?: RaiExternalSafetyProviderProperties; -} - -/** - * RAI External SafetyProvider properties. - */ -model RaiExternalSafetyProviderProperties { - /** - * The unique identifier of the safety provider. - */ - providerId?: string; - - /** - * Name of the safety provider. - */ - providerName?: string; - - /** - * Safety provider mode sync/async. - */ - mode?: string; - - /** - * Webhook URL for the safety provider. - */ - url?: url; - - /** - * Creation time of the safety provider. - */ - // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. - createdAt?: utcDateTime; - - /** - * Last modified time of the safety provider. - */ - // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. - lastModifiedAt?: utcDateTime; -} - -/** - * The list of cognitive services RAI Topics. - */ -model RaiTopicResult { - /** - * The link used to get the next page of RaiTopics. - */ - @nextLink - nextLink?: string; - - /** - * The list of RaiTopic. - */ - @pageItems - @identifiers(#["name"]) - value?: RaiTopic[]; -} - -/** - * RAI Tool Label properties. - */ -model RaiToolLabelProperties { - /** - * The unique tool connection name, e.g., 'Web_Search'. - */ - toolConnectionName: string; - - /** - * Account-level tool label definition. - */ - accountScope?: RaiToolLabelPropertiesAccountScope; - - /** - * List of project-level tool label definitions. - */ - projectScopes?: RaiToolLabelPropertiesProjectScopesItem[]; -} - -/** - * Account-level tool label definition. - */ -model RaiToolLabelPropertiesAccountScope { - /** - * Dictionary of label key-value pairs for the account scope. - */ - labelValues?: Record; -} - -model RaiToolLabelPropertiesProjectScopesItem { - /** - * Project name to which this scope applies. - */ - project: string; - - /** - * Dictionary of label key-value pairs for the project scope. - */ - labelValues: Record; -} - -/** - * The list of Cognitive Services RAI Tool Labels. - */ -model RaiToolLabelResult { - /** - * The link used to get the next page of RaiToolLabels. - */ - @nextLink - nextLink?: string; - - /** - * The list of RAI Tool Labels. - */ - @pageItems - @identifiers(#["name"]) - value?: RaiToolLabel[]; -} - -/** - * Azure OpenAI Content Filter Properties. - */ -model RaiContentFilterProperties { - /** - * Name of Content Filter. - */ - name?: string; - - /** - * If the Content Filter has multi severity levels(Low, Medium, or High). - */ - isMultiLevelFilter?: boolean; - - /** - * Content source to apply the Content Filters. - */ - source?: RaiPolicyContentSource; -} - -/** - * The commitment plan account association properties. - */ -model CommitmentPlanAccountAssociationProperties { - /** - * The Azure resource id of the account. - */ - accountId?: string; -} - -/** - * A list of NSP configurations for an Cognitive Services account. - */ -model NetworkSecurityPerimeterConfigurationList { - /** - * Array of NSP configurations List Result for an Cognitive Services account. - */ - @pageItems - @identifiers(#["id"]) - value?: NetworkSecurityPerimeterConfiguration[]; - - /** - * Link to retrieve next page of results. - */ - @nextLink - nextLink?: string; -} - -/** - * The properties of an NSP Configuration. - */ -model NetworkSecurityPerimeterConfigurationProperties { - /** - * Provisioning state of NetworkSecurityPerimeter configuration - */ - @visibility(Lifecycle.Read) - provisioningState?: string; - - /** - * List of Provisioning Issues - */ - @identifiers(#["name"]) - provisioningIssues?: ProvisioningIssue[]; - - /** - * Information about a linked Network Security Perimeter - */ - networkSecurityPerimeter?: NetworkSecurityPerimeter; - - /** - * Network Security Perimeter Configuration Association Information - */ - resourceAssociation?: NetworkSecurityPerimeterConfigurationAssociationInfo; - - /** - * Network Security Perimeter Profile Information - */ - profile?: NetworkSecurityPerimeterProfileInfo; -} - -model ProvisioningIssue { - /** - * Name of the NSP provisioning issue - */ - name?: string; - - /** - * Properties of Provisioning Issue - */ - properties?: ProvisioningIssueProperties; -} - -/** - * Properties of Provisioning Issue - */ -model ProvisioningIssueProperties { - /** - * Type of Issue - */ - issueType?: string; - - /** - * Severity of the issue - */ - severity?: string; - - /** - * Description of the issue - */ - description?: string; - - /** - * IDs of resources that can be associated to the same perimeter to remediate the issue. - */ - suggestedResourceIds?: Azure.Core.armResourceIdentifier[]; - - /** - * Optional array, suggested access rules - */ - suggestedAccessRules?: NetworkSecurityPerimeterAccessRule[]; -} - -/** - * Network Security Perimeter Access Rule - */ -model NetworkSecurityPerimeterAccessRule { - /** - * Network Security Perimeter Access Rule Name - */ - name?: string; - - /** - * Properties of Network Security Perimeter Access Rule - */ - properties?: NetworkSecurityPerimeterAccessRuleProperties; -} - -/** - * The Properties of Network Security Perimeter Rule - */ -model NetworkSecurityPerimeterAccessRuleProperties { - /** - * Direction of Access Rule - */ - direction?: NspAccessRuleDirection; - - /** - * Address prefixes for inbound rules - */ - addressPrefixes?: string[]; - - /** - * Subscriptions for inbound rules - */ - subscriptions?: NetworkSecurityPerimeterAccessRulePropertiesSubscriptionsItem[]; - - /** - * NetworkSecurityPerimeters for inbound rules - */ - networkSecurityPerimeters?: NetworkSecurityPerimeter[]; - - /** - * Fully qualified domain name for outbound rules - */ - fullyQualifiedDomainNames?: string[]; -} - -/** - * Subscription for inbound rule - */ -model NetworkSecurityPerimeterAccessRulePropertiesSubscriptionsItem { - /** - * Fully qualified identifier of subscription - */ - id?: string; -} - -/** - * Information about a linked Network Security Perimeter - */ -model NetworkSecurityPerimeter { - /** - * Fully qualified identifier of the resource - */ - id?: Azure.Core.armResourceIdentifier; - - /** - * Guid of the resource - */ - perimeterGuid?: string; - - /** - * Location of the resource - */ - location?: string; -} - -/** - * Network Security Perimeter Configuration Association Information - */ -model NetworkSecurityPerimeterConfigurationAssociationInfo { - /** - * Name of the resource association - */ - name?: string; - - /** - * Access Mode of the resource association - */ - accessMode?: string; -} - -/** - * Network Security Perimeter Profile Information - */ -model NetworkSecurityPerimeterProfileInfo { - /** - * Name of the resource profile - */ - name?: string; - - /** - * Access rules version of the resource profile - */ - accessRulesVersion?: int64; - - @identifiers(#[]) - accessRules?: NetworkSecurityPerimeterAccessRule[]; - - /** - * Current diagnostic settings version - */ - diagnosticSettingsVersion?: int64; - - /** - * List of enabled log categories - */ - enabledLogCategories?: string[]; -} - -/** - * The list of cognitive services Defender for AI Settings. - */ -model DefenderForAISettingResult { - /** - * The link used to get the next page of Defender for AI Settings. - */ - @nextLink - nextLink?: string; - - /** - * The list of Defender for AI Settings. - */ - @pageItems - @identifiers(#["name"]) - value?: DefenderForAISetting[]; -} - -/** - * The Defender for AI resource properties. - */ -model DefenderForAISettingProperties { - /** - * Defender for AI state on the AI resource. - */ - state?: DefenderForAISettingState; -} - -/** - * Properties of Cognitive Services Project'. - */ -model ProjectProperties { - /** - * Gets the status of the cognitive services project at the time the operation was called. - */ - @visibility(Lifecycle.Read) - provisioningState?: ProvisioningState; - - /** - * The display name of the Cognitive Services Project. - */ - displayName?: string; - - /** - * The description of the Cognitive Services Project. - */ - description?: string; - - /** - * The list of endpoint for this Cognitive Services Project. - */ - @visibility(Lifecycle.Read) - endpoints?: Record; - - /** - * Indicates whether the project is the default project for the account. - */ - @visibility(Lifecycle.Read) - isDefault?: boolean; -} - -/** - * Connection property base schema. - */ -@discriminator("authType") -model ConnectionPropertiesV2 { - /** - * Authentication type of the connection target - */ - authType: ConnectionAuthType; - - /** - * Category of the connection - */ - category?: ConnectionCategory; - - @visibility(Lifecycle.Read) - createdByWorkspaceArmId?: Azure.Core.armResourceIdentifier; - - /** - * Provides the error message if the connection fails - */ - error?: string; - - // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. - - expiryTime?: utcDateTime; - - /** - * Group based on connection category - */ - @visibility(Lifecycle.Read) - group?: ConnectionGroup; - - isSharedToAll?: boolean; - - /** - * Store user metadata for this connection - */ - metadata?: Record; - - /** - * Specifies how private endpoints are used with this connection: 'Required', 'NotRequired', or 'NotApplicable'. - */ - peRequirement?: ManagedPERequirement; - - /** - * Specifies the status of private endpoints for this connection: 'Inactive', 'Active', or 'NotApplicable'. - */ - peStatus?: ManagedPEStatus; - - sharedUserList?: string[]; - - /** - * The connection URL to be used. - */ - target?: string; - - useWorkspaceManagedIdentity?: boolean; -} - -/** - * The properties that the Cognitive services connection will be updated with. - */ -model ConnectionUpdateContent { - /** - * The properties that the Cognitive services connection will be updated with. - */ - properties?: ConnectionPropertiesV2; -} - -model ConnectionPropertiesV2BasicResourceArmPaginatedResult { - @nextLink - nextLink?: string; - - @pageItems - value?: ConnectionPropertiesV2BasicResource[]; -} -/** - * A paginated list of Capability Host entities. - */ -model CapabilityHostResourceArmPaginatedResult { - /** - * The link to the next page of Capability Host objects. If null, there are no additional pages. - */ - @nextLink - nextLink?: string | null; - - /** - * An array of objects of type Capability Host. - */ - @pageItems - value?: CapabilityHost[]; -} - -model CapabilityHostProperties extends ResourceBase { - /** - * List of AI services connections. - */ - aiServicesConnections?: string[] | null; - - /** - * Kind of this capability host. - */ - capabilityHostKind?: CapabilityHostKind; - - /** - * Customer subnet info to help set up this capability host. - */ - customerSubnet?: string | null; - - /** - * Provisioning state for the CapabilityHost. - */ - @visibility(Lifecycle.Read) - provisioningState?: CapabilityHostProvisioningState; - - /** - * List of connection names from those available in the account or project to be used as a storage resource. - */ - storageConnections?: string[] | null; - - /** - * List of connection names from those available in the account or project to be used for Thread storage. - */ - threadStorageConnections?: string[] | null; - - /** - * List of connection names from those available in the account or project to be used for vector database (e.g. CosmosDB). - */ - vectorStoreConnections?: string[] | null; - - /** - * Whether public hosting environment is enabled for the capability host - */ - enablePublicHostingEnvironment?: boolean; -} - -model ResourceBase { - /** - * The asset description text. - */ - description?: string | null; - - /** - * Tag dictionary. Tags can be added, removed, and updated. - */ - tags?: Record | null; -} - -/** - * A paginated list of Project Capability Host entities. - */ -model ProjectCapabilityHostResourceArmPaginatedResult { - /** - * The link to the next page of Project Capability Host objects. If null, there are no additional pages. - */ - @nextLink - nextLink?: string | null; - - /** - * An array of objects of type Project Capability Host. - */ - @pageItems - value?: ProjectCapabilityHost[]; -} - -model ProjectCapabilityHostProperties { - /** - * List of AI services connections. - */ - aiServicesConnections?: string[] | null; - - /** - * List of connection names from those available in the account or project to be used for vector database (e.g. CosmosDB). - */ - vectorStoreConnections?: string[] | null; - - /** - * List of connection names from those available in the account or project to be used as a storage resource. - */ - storageConnections?: string[] | null; - - /** - * List of connection names from those available in the account or project to be used for Thread storage. - */ - threadStorageConnections?: string[] | null; - - /** - * Provisioning state for the CapabilityHost. - */ - @visibility(Lifecycle.Read) - provisioningState?: CapabilityHostProvisioningState; -} - -/** - * Properties of Quota Tier resource'. - */ -model QuotaTierProperties { - /** - * Name of the current quota tier for the subscription. - */ - @visibility(Lifecycle.Read) - currentTierName?: string; - - /** - * Gets the tier upgrade policy for the subscription. - */ - tierUpgradePolicy?: TierUpgradePolicy; - - /** - * The date on which the current tier was assigned to the subscription (UTC). - */ - @visibility(Lifecycle.Read) - // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. - assignmentDate?: utcDateTime; - - /** - * Information about the quota tier upgrade eligibility for the subscription. - */ - @visibility(Lifecycle.Read) - tierUpgradeEligibilityInfo?: QuotaTierUpgradeEligibilityInfo | null; -} - -/** - * Information about the quota tier upgrade eligibility for the subscription. - */ -model QuotaTierUpgradeEligibilityInfo { - /** - * Name of the next quota tier for the subscription. - */ - nextTierName?: string | null; - - /** - * Specifies whether an upgrade to the next quota tier is available. - */ - upgradeAvailabilityStatus?: UpgradeAvailabilityStatus; - - /** - * The date after which the current tier will be upgraded to the next tier if the TierUpgradePolicy is "OnceUpgradeIsAvailable" (UTC). - */ - - // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. - upgradeApplicableDate?: utcDateTime | null; - - /** - * Reason in case the subscription is not eligible for upgrade to the next tier. - */ - upgradeUnavailabilityReason?: string | null; -} - -/** - * Outbound Rule for the managed network of a cognitive services account. - */ -@discriminator("type") -model OutboundRule { - /** - * Category of a managed network Outbound Rule of a cognitive services account. - */ - category?: RuleCategory; - - /** - * Type of a managed network Outbound Rule of a cognitive services account. - */ - status?: RuleStatus; - - /** - * Type of a managed network Outbound Rule of a cognitive services account. - */ - type: RuleType; - - /** - * Error information about an outbound rule of a cognitive services account if RuleStatus is failed. - */ - @visibility(Lifecycle.Read) - errorInformation?: string; - - @visibility(Lifecycle.Read) - parentRuleNames?: string[]; -} - -model ManagedNetworkSettingsBasicResource - extends Azure.ResourceManager.CommonTypes.Resource { - /** - * Managed Network settings for a cognitive services account. - */ - properties?: ManagedNetworkSettings; -} - -/** - * Managed Network settings for a cognitive services account. - */ -model ManagedNetworkSettings { - /** - * Isolation mode for the managed network of a cognitive services account. - */ - isolationMode?: IsolationMode; - - @visibility(Lifecycle.Read) - networkId?: string; - - /** - * Dictionary of - */ - outboundRules?: Record | null; - - /** - * Status of the Provisioning for the managed network of a cognitive services account. - */ - status?: ManagedNetworkProvisionStatus; - - /** - * Firewall Sku used for FQDN Rules - */ - firewallSku?: FirewallSku; - - /** - * The Kind of the managed network. Users can switch from V1 to V2 for granular access controls, but cannot switch back to V1 once V2 is enabled. - */ - managedNetworkKind?: ManagedNetworkKind; - - /** - * Public IP address assigned to the Azure Firewall. - */ - @visibility(Lifecycle.Read) - egressIpAddress?: string | null; -} - -/** - * Status of the Provisioning for the managed network of a cognitive services account. - */ -model ManagedNetworkProvisionStatus { - /** - * Status for the managed network of a cognitive services account. - */ - status?: ManagedNetworkStatus; -} - -/** - * The properties of the managed network settings of a cognitive services account. - */ -model ManagedNetworkSettingsProperties { - /** - * Managed Network settings for a cognitive services account. - */ - managedNetwork?: ManagedNetworkSettingsEx; - - /** - * The current deployment state of the managed network resource. The provisioningState is to indicate states for resource provisioning. - */ - @visibility(Lifecycle.Read) - provisioningState?: ManagedNetworkProvisioningState; -} - -model ManagedNetworkSettingsEx extends ManagedNetworkSettings { - @visibility(Lifecycle.Read) - changeableIsolationModes?: IsolationMode[]; -} - -/** - * A paginated list of Agent Application entities. - */ -model AgentApplicationResourceArmPaginatedResult { - /** - * The link to the next page of Agent Application objects. If null, there are no additional pages. - */ - @nextLink - nextLink?: string | null; - - /** - * An array of objects of type Agent Application. - */ - @pageItems - value?: AgentApplication[]; -} - -/** - * Resource type representing an agentic application as a management construct. - */ -model AgenticApplicationProperties extends ResourceBase { - /** - * The display name of the application. - */ - displayName?: string | null; - - /** - * The application's dedicated invocation endpoint. - */ - baseUrl?: string | null; - - /** - * The list of agent definitions comprising this application, returned as references to the objects under the parent project; use this to obtain a flat list of all agent-version pairs represented by this application. - */ - agents?: AgentReferenceProperties[] | null; - - /** - * The EntraId Agentic Blueprint of the application. - */ - agentIdentityBlueprint?: AssignedIdentity | null; - - /** - * The (default) agent instance identity of the application. - */ - defaultInstanceIdentity?: AssignedIdentity | null; - - /** - * Gets or sets the authorization policy associated with this agentic application instance. - */ - authorizationPolicy?: ApplicationAuthorizationPolicy | null; - - /** - * Gets or sets the traffic routing policy for the application's deployments. - */ - trafficRoutingPolicy?: ApplicationTrafficRoutingPolicy | null; - - /** - * Provisioning state of the application. - */ - @visibility(Lifecycle.Read) - provisioningState?: AgenticApplicationProvisioningState; - - /** - * Enabledstate of the application. - */ - @visibility(Lifecycle.Read) - isEnabled?: boolean; -} - -/** - * Type modeling a reference to a version of an agent definition. - */ -model AgentReferenceProperties { - /** - * Gets the agent's unique identifier within the organization (subscription). - */ - agentId?: string | null; - - /** - * Gets the agent's name (unique within the project/app). - */ - agentName?: string | null; -} - -/** - * Type representing an identity assignment - */ -model AssignedIdentity { - /** - * Specifies the kind of Entra identity described by this object. - */ - kind: IdentityKind; - - /** - * Enumeration of identity types, from the perspective of management. - */ - type: IdentityManagementType; - - /** - * The client ID of the identity. - */ - clientId: string; - - /** - * The principal ID of the identity. - */ - principalId: string; - - /** - * The tenant ID of the identity. - */ - tenantId: string; - - /** - * The subject of this identity assignment. - */ - subject?: string | null; - - /** - * Represents the provisioning state of an identity resource. - */ - @visibility(Lifecycle.Read) - provisioningState?: IdentityProvisioningState; -} - -/** - * Represents a policy for authorizing applications based on specified authentication and authorization schemes. - */ -@discriminator("type") -model ApplicationAuthorizationPolicy { - /** - * Authorization scheme type. - */ - type: BuiltInAuthorizationScheme; -} - -/** - * Type representing an application traffic policy as a property of an agentic application. - */ -model ApplicationTrafficRoutingPolicy { - /** - * Methodology used to route traffic to the application's deployments. - */ - protocol?: TrafficRoutingProtocol; - - /** - * Gets or sets the collection of traffic routing rules. - */ - rules?: TrafficRoutingRule[] | null; -} - -/** - * Represents a rule for routing traffic to a specific deployment. - */ -model TrafficRoutingRule { - /** - * The identifier of this traffic routing rule. - */ - ruleId?: string | null; - - /** - * A user-provided description for this traffic routing rule. - */ - description?: string | null; - - /** - * The unique identifier of the deployment to which traffic is routed by this rule. - */ - deploymentId?: string | null; - - /** - * Gets or sets the percentage of traffic allocated to this instance. - */ - trafficPercentage?: int32; -} - -/** - * A paginated list of Agent Reference entities. - */ -model AgentReferenceResourceArmPaginatedResult { - /** - * The link to the next page of Agent Reference objects. If null, there are no additional pages. - */ - nextLink?: string | null; - - /** - * An array of objects of type Agent Reference. - */ - value?: AgentReference[] | null; -} - -/** - * Agent Reference resource - */ -model AgentReference extends Azure.ResourceManager.CommonTypes.ProxyResource { - /** - * [Required] Additional attributes of the entity. - */ - properties: AgentReferenceProperties; -} - -/** - * A paginated list of Agent Deployment entities. - */ -model AgentDeploymentResourceArmPaginatedResult { - /** - * The link to the next page of Agent Deployment objects. If null, there are no additional pages. - */ - @nextLink - nextLink?: string | null; - - /** - * An array of objects of type Agent Deployment. - */ - @pageItems - value?: AgentDeployment[]; -} - -/** - * Type representing an agent deployment as a management construct. - */ -@discriminator("deploymentType") -model AgentDeploymentProperties extends ResourceBase { - /** - * Gets or sets the display name of the deployment. - */ - displayName?: string | null; - - /** - * Gets or sets the unique identifier of the deployment. - */ - deploymentId?: string | null; - - /** - * Gets or sets the current operational state of the deployment (and, intrinsically, of the comprising agents). - */ - state?: AgentDeploymentState | null; - - /** - * Gets or sets the supported protocol types and versions exposed by this deployment. - */ - protocols?: AgentProtocolVersion[] | null; - - /** - * Returns a flat list of agent:version deployed in this deployment. - */ - agents?: VersionedAgentReference[] | null; - - /** - * Gets or sets the type of deployment for the agent. - */ - deploymentType: AgentDeploymentType; - - /** - * Gets or sets the provisioning state of the agent deployment. - */ - @visibility(Lifecycle.Read) - provisioningState?: AgentDeploymentProvisioningState; -} - -/** - * Type modeling the protocol and version used by an agent/exposed by a deployment. - */ -model AgentProtocolVersion { - /** - * The protocol used by the agent/exposed by a deployment. - */ - protocol?: AgentProtocol; - - /** - * The version of the protocol. - */ - version?: string | null; -} - -/** - * Type modeling a reference to a version of an agent definition. - */ -model VersionedAgentReference extends AgentReferenceProperties { - /** - * Gets the agent's version (unique for each agent lineage). - */ - agentVersion?: string | null; -} - -model PATAuthTypeConnectionProperties extends ConnectionPropertiesV2 { - credentials?: ConnectionPersonalAccessToken; - - /** - * Authentication type of the connection target - */ - authType: "PAT"; -} - -model ConnectionPersonalAccessToken { - @secret - pat?: string; -} - -model ManagedIdentityAuthTypeConnectionProperties - extends ConnectionPropertiesV2 { - credentials?: ConnectionManagedIdentity; - - /** - * Authentication type of the connection target - */ - authType: "ManagedIdentity"; -} - -model ConnectionManagedIdentity { - clientId?: string; - resourceId?: string; -} - -model UsernamePasswordAuthTypeConnectionProperties - extends ConnectionPropertiesV2 { - credentials?: ConnectionUsernamePassword; - - /** - * Authentication type of the connection target - */ - authType: "UsernamePassword"; -} - -model ConnectionUsernamePassword { - @secret - password?: string; - - /** - * Optional, required by connections like SalesForce for extra security in addition to UsernamePassword - */ - @secret - securityToken?: string; - - username?: string; -} - -model NoneAuthTypeConnectionProperties extends ConnectionPropertiesV2 { - /** - * Authentication type of the connection target - */ - authType: "None"; -} - -model SASAuthTypeConnectionProperties extends ConnectionPropertiesV2 { - credentials?: ConnectionSharedAccessSignature; - - /** - * Authentication type of the connection target - */ - authType: "SAS"; -} - -model ConnectionSharedAccessSignature { - @secret - sas?: string; -} - -/** - * This connection type covers the account key connection for Azure storage - */ -model AccountKeyAuthTypeConnectionProperties extends ConnectionPropertiesV2 { - /** - * Account key object for connection credential. - */ - credentials?: ConnectionAccountKey; - - /** - * Authentication type of the connection target - */ - authType: "AccountKey"; -} - -/** - * Account key object for connection credential. - */ -model ConnectionAccountKey { - @secret - key?: string; -} - -model ServicePrincipalAuthTypeConnectionProperties - extends ConnectionPropertiesV2 { - credentials?: ConnectionServicePrincipal; - - /** - * Authentication type of the connection target - */ - authType: "ServicePrincipal"; -} - -model ConnectionServicePrincipal { - clientId?: string; - - @secret - clientSecret?: string; - - tenantId?: string; -} - -model AccessKeyAuthTypeConnectionProperties extends ConnectionPropertiesV2 { - credentials?: ConnectionAccessKey; - - /** - * Authentication type of the connection target - */ - authType: "AccessKey"; -} - -model ConnectionAccessKey { - accessKeyId?: string; - - @secret - secretAccessKey?: string; -} - -/** - * This connection type covers the generic ApiKey auth connection categories, for examples: - * AzureOpenAI: - * Category:= AzureOpenAI - * AuthType:= ApiKey (as type discriminator) - * Credentials:= {ApiKey} as .ApiKey - * Target:= {ApiBase} - * - * CognitiveService: - * Category:= CognitiveService - * AuthType:= ApiKey (as type discriminator) - * Credentials:= {SubscriptionKey} as ApiKey - * Target:= ServiceRegion={serviceRegion} - * - * CognitiveSearch: - * Category:= CognitiveSearch - * AuthType:= ApiKey (as type discriminator) - * Credentials:= {Key} as ApiKey - * Target:= {Endpoint} - * - * Use Metadata property bag for ApiType, ApiVersion, Kind and other metadata fields - */ -model ApiKeyAuthConnectionProperties extends ConnectionPropertiesV2 { - /** - * Api key object for connection credential. - */ - credentials?: ConnectionApiKey; - - /** - * Authentication type of the connection target - */ - authType: "ApiKey"; -} - -/** - * Api key object for connection credential. - */ -model ConnectionApiKey { - @secret - key?: string; -} - -/** - * Category:= CustomKeys - * AuthType:= CustomKeys (as type discriminator) - * Credentials:= {CustomKeys} as CustomKeys - * Target:= {any value} - * Use Metadata property bag for ApiVersion and other metadata fields - */ -model CustomKeysConnectionProperties extends ConnectionPropertiesV2 { - /** - * Custom Keys credential object - */ - credentials?: CustomKeys; - - /** - * Authentication type of the connection target - */ - authType: "CustomKeys"; -} - -/** - * Custom Keys credential object - */ -model CustomKeys { - /** - * Dictionary of - */ - keys?: Record; -} - -model OAuth2AuthTypeConnectionProperties extends ConnectionPropertiesV2 { - /** - * ClientId and ClientSecret are required. Other properties are optional - * depending on each OAuth2 provider's implementation. - */ - credentials?: ConnectionOAuth2; - - /** - * Authentication type of the connection target - */ - authType: "OAuth2"; -} - -/** - * ClientId and ClientSecret are required. Other properties are optional - * depending on each OAuth2 provider's implementation. - */ -model ConnectionOAuth2 { - /** - * Required by Concur connection category - */ - authUrl?: url; - - /** - * Client id in the format of UUID - */ - clientId?: Azure.Core.uuid; - - @secret - clientSecret?: string; - - /** - * Required by GoogleAdWords connection category - */ - @secret - developerToken?: string; - - @secret - password?: string; - - /** - * Required by GoogleBigQuery, GoogleAdWords, Hubspot, QuickBooks, Square, Xero, Zoho - * where user needs to get RefreshToken offline - */ - @secret - refreshToken?: string; - - /** - * Required by QuickBooks and Xero connection categories - */ - tenantId?: string; - - /** - * Concur, ServiceNow auth server AccessToken grant type is 'Password' - * which requires UsernamePassword - */ - username?: string; -} - -/** - * This connection type covers the AAD auth for any applicable Azure service - */ -model AADAuthTypeConnectionProperties extends ConnectionPropertiesV2 { - /** - * Authentication type of the connection target - */ - authType: "AAD"; -} - -/** - * FQDN Outbound Rule for the managed network of a cognitive services account. - */ -model FqdnOutboundRule extends OutboundRule { - destination?: string; - - /** - * Type of a managed network Outbound Rule of a cognitive services account. - */ - type: "FQDN"; -} - -/** - * Represents a managed agent deployment where the underlying infrastructure is managed by the platform in the deployer's subscription. - */ -model ManagedAgentDeployment extends AgentDeploymentProperties { - /** - * Gets or sets the type of deployment for the agent. - */ - deploymentType: "Managed"; -} - -/** - * Represents a hosted agent deployment where the underlying infrastructure is owned by the platform. - */ -model HostedAgentDeployment extends AgentDeploymentProperties { - /** - * Gets or sets the minimum number of replicas for this hosted deployment. - */ - @minValue(0) - minReplicas?: int32; - - /** - * Gets or sets the maximum number of replicas for this hosted deployment. - */ - @minValue(0) - maxReplicas?: int32; - - /** - * Gets or sets the type of deployment for the agent. - */ - deploymentType: "Hosted"; -} - -/** - * Built-in role-based authorization policy. - */ -model RoleBasedBuiltInAuthorizationPolicy - extends ApplicationAuthorizationPolicy { - /** - * Authorization scheme type. - */ - type: "Default"; -} - -/** - * Built-in authorization policy scoped to organization/tenant. - */ -model OrganizationSharedBuiltInAuthorizationPolicy - extends ApplicationAuthorizationPolicy { - /** - * Authorization scheme type. - */ - type: "OrganizationScope"; -} - -/** - * Represents a built-in authorization policy specific to Azure Bot Service/Channels authentication. - */ -model ChannelsBuiltInAuthorizationPolicy - extends ApplicationAuthorizationPolicy { - /** - * Authorization scheme type. - */ - type: "Channels"; -} - -/** - * Represents a detailed description of an agent, including its name, functionality, hosting information, supported interaction modes, and available skills. - */ -model AgentCard { - /** - * Human-readable name for the Agent (e.g., 'Recipe Agent'). - */ - name?: string | null; - - /** - * Human-readable description of the Agent's function. - */ - description?: string | null; - - /** - * URL address where the Agent is hosted. - */ - url?: string | null; - - /** - * Service provider information for the Agent. - */ - provider?: ProviderInfo | null; - - /** - * Version of the Agent (format defined by provider, e.g., '1.0.0'). - */ - version?: string | null; - - /** - * URL for the Agent's documentation. - */ - documentationUrl?: string | null; - - /** - * Default interaction modes supported by the Agent across all skills. - */ - defaultInputModes?: string[] | null; - - /** - * Default output modes supported by the Agent across all skills. - */ - defaultOutputModes?: string[] | null; - - /** - * Collection of capability units the Agent can perform. - */ - skills?: Skill[] | null; -} - -/** - * Service provider information for the Agent - */ -model ProviderInfo { - /** - * Organization name of the provider. - */ - organization?: string | null; - - /** - * URL of the provider. - */ - url?: string | null; -} - -/** - * Collection of capability units the Agent can perform - */ -model Skill { - /** - * Unique identifier for the skill. - */ - id?: string | null; - - /** - * Human-readable name for the skill. - */ - name?: string | null; - - /** - * Skill description. - */ - description?: string | null; - - /** - * Tags describing the skill's capability category (e.g., 'cooking', 'customer support'). - */ - tags?: string[] | null; - - /** - * Example scenarios or prompts the skill can execute (e.g., 'I need a recipe for bread'). - */ - examples?: string[] | null; - - /** - * Input MIME types supported by the skill (if different from default). - */ - inputModes?: string[] | null; - - /** - * Output MIME types supported by the skill (if different from default). - */ - outputModes?: string[] | null; -} - -/** - * The list of cognitive services accounts operation response. - */ -model ModelCapacityListResult { - /** - * The link used to get the next page of ModelSkuCapacity. - */ - @nextLink - nextLink?: string; - - /** - * Gets the list of Cognitive Services accounts ModelSkuCapacity. - */ - @visibility(Lifecycle.Read) - @pageItems - @identifiers(#["model"]) - value?: ModelCapacityListResultValueItem[]; -} - -/** - * List of managed networks of a cognitive services account. - */ -model ManagedNetworkListResult { - /** - * The link to the next page constructed using the continuationToken. If null, there are no additional pages. - */ - @nextLink - nextLink?: string; - - /** - * The list of managed network settings of an account. Since this list may be incomplete, the nextLink field should be used to request the next list of cognitive services accounts. - */ - @pageItems - value?: ManagedNetworkSettingsPropertiesBasicResource[]; -} - -/** - * List of outbound rules for the managed network of a cognitive services account. - */ -model OutboundRuleListResult { - /** - * The link to the next page constructed using the continuationToken. If null, there are no additional pages. - */ - @nextLink - nextLink?: string; - - /** - * The list of cognitive services accounts. Since this list may be incomplete, the nextLink field should be used to request the next list of cognitive services accounts. - */ - @pageItems - value?: OutboundRuleBasicResource[]; -} - -/** - * Managed Network Provisioning options for managed network of a cognitive services account. - */ -model ManagedNetworkProvisionOptions {} - -/** - * The list of cognitive services RAI Blocklists. - */ -model RaiBlockListResult { - /** - * The link used to get the next page of RaiBlocklists. - */ - @nextLink - nextLink?: string; - - /** - * The list of RaiBlocklist. - */ - @pageItems - @identifiers(#["name"]) - value?: RaiBlocklist[]; -} - -/** - * The list of Cognitive Services RaiBlocklist Items for batch add. - */ -@identifiers(#["name"]) -model RaiBlocklistItemsBulkAddRequest is Array; - -/** - * The list of cognitive services accounts operation response. - */ -model AccountListResult { - /** - * The link used to get the next page of accounts. - */ - @nextLink - nextLink?: string; - - /** - * Gets the list of Cognitive Services accounts and their properties. - */ - @pageItems - @visibility(Lifecycle.Read) - value?: Account[]; -} - -/** - * The list of cognitive services Commitment Plan Account Association operation response. - */ -model CommitmentPlanAccountAssociationListResult { - /** - * The link used to get the next page of Commitment Plan Account Association. - */ - @nextLink - nextLink?: string; - - /** - * Gets the list of Cognitive Services Commitment Plan Account Association and their properties. - */ - @pageItems - @visibility(Lifecycle.Read) - @identifiers(#["id"]) - value?: CommitmentPlanAccountAssociation[]; -} - -/** - * The list of cognitive services accounts operation response. - */ -model CommitmentPlanListResult { - /** - * The link used to get the next page of CommitmentPlan. - */ - @nextLink - nextLink?: string; - - /** - * Gets the list of Cognitive Services accounts CommitmentPlan and their properties. - */ - @pageItems - @visibility(Lifecycle.Read) - value?: CommitmentPlan[]; -} - -/** - * The list of cognitive services accounts operation response. - */ -model DeploymentListResult { - /** - * The link used to get the next page of Deployment. - */ - @nextLink - nextLink?: string; - - /** - * Gets the list of Cognitive Services accounts Deployment and their properties. - */ - @pageItems - @visibility(Lifecycle.Read) - value?: Deployment[]; -} - -/** - * The list of cognitive services EncryptionScopes. - */ -model EncryptionScopeListResult { - /** - * The link used to get the next page of EncryptionScope. - */ - @nextLink - nextLink?: string; - - /** - * The list of EncryptionScope. - */ - @pageItems - @identifiers(#["name"]) - value?: EncryptionScope[]; -} - -/** - * The list of cognitive services projects operation response. - */ -model ProjectListResult { - /** - * The link used to get the next page of projects. - */ - @nextLink - nextLink?: string; - - /** - * Gets the list of Cognitive Services projects and their properties. - */ - @pageItems - @visibility(Lifecycle.Read) - value?: Project[]; -} - -/** - * The list of Quota Tiers response. - */ -model QuotaTierListResult { - /** - * The link used to get the next page of quota tiers. - */ - @nextLink - nextLink?: string; - - /** - * Gets the list of Quota Tiers and their properties. - */ - @pageItems - @visibility(Lifecycle.Read) - @identifiers(#["id"]) - value?: QuotaTier[]; -} - -/** - * The list of Content Filters. - */ -model RaiContentFilterListResult { - /** - * The link used to get the next page of Content Filters. - */ - @nextLink - nextLink?: string; - - /** - * The list of RaiContentFilter. - */ - @pageItems - @identifiers(#["name"]) - value?: RaiContentFilter[]; -} - -/** - * The list of cognitive services RaiPolicies. - */ -model RaiPolicyListResult { - /** - * The link used to get the next page of RaiPolicy. - */ - @nextLink - nextLink?: string; - - /** - * The list of RaiPolicy. - */ - @pageItems - @identifiers(#["name"]) - value?: RaiPolicy[]; -} -@@identifiers(ResourceSkuListResult.value, #["resourceType", "name", "kind"]); - -/** - * The list of Cognitive Services RaiBlocklist Items Names. - */ -model RaiBlocklistItemsBulkDeleteRequest is Array; diff --git a/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/package.json b/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/package.json deleted file mode 100644 index 9b0af8bcd6e..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "azure-rest-api-specs", - "devDependencies": { - "@azure-tools/typespec-autorest": "0.66.0", - "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-resource-manager": "0.66.0", - "@azure-tools/typespec-azure-rulesets": "0.66.0", - "@azure-tools/typespec-client-generator-cli": "0.31.0", - "@azure-tools/typespec-client-generator-core": "0.66.3", - "@typespec/compiler": "1.10.0", - "@typespec/http": "1.10.0", - "@typespec/openapi": "1.10.0", - "@typespec/openapi3": "1.10.0", - "@typespec/rest": "0.80.0", - "@typespec/versioning": "0.80.0" - }, - "overrides": { - "@typespec/asset-emitter": "0.79.1", - "get-uri": "^6.0.5", - "minimatch@^3.0.0": "^3.1.5", - "superagent": "^10.2.3" - }, - "engines": { - "node": ">=20.0.0", - "npm": ">=10.0.0" - }, - "private": true -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/stubs.tsp b/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/stubs.tsp deleted file mode 100644 index 0723aefb85e..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/stubs.tsp +++ /dev/null @@ -1,405 +0,0 @@ -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "@typespec/openapi"; -import "@typespec/rest"; -import "@typespec/versioning"; - -using TypeSpec.Rest; -using Azure.ResourceManager; -using TypeSpec.Http; -using TypeSpec.OpenAPI; -using TypeSpec.Versioning; - -namespace Microsoft.CognitiveServices; - -// Resource definitions for types referenced in models.tsp. -// Based on specification/cognitiveservices/CognitiveServices.Management. - -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -model Account - is Azure.ResourceManager.Legacy.TrackedResourceWithOptionalLocation { - ...ResourceNameParameter< - Resource = Account, - KeyName = "accountName", - SegmentName = "accounts", - NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" - >; - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - etag?: string; - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - kind?: string; - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - sku?: Sku; - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - identity?: Identity; -} - -@parentResource(Account) -model Deployment is Azure.ResourceManager.ProxyResource { - ...ResourceNameParameter< - Resource = Deployment, - KeyName = "deploymentName", - SegmentName = "deployments", - NamePattern = "" - >; - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - sku?: Sku; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) - tags?: Record; -} - -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@parentResource(Account) -model CommitmentPlan - is Azure.ResourceManager.Legacy.TrackedResourceWithOptionalLocation { - ...ResourceNameParameter< - Resource = CommitmentPlan, - KeyName = "commitmentPlanName", - SegmentName = "commitmentPlans", - NamePattern = "" - >; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - kind?: string; - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - sku?: Sku; -} - -@parentResource(CommitmentPlan) -model CommitmentPlanAccountAssociation - is Azure.ResourceManager.ProxyResource { - ...ResourceNameParameter< - Resource = CommitmentPlanAccountAssociation, - KeyName = "commitmentPlanAssociationName", - SegmentName = "accountAssociations", - NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" - >; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) - tags?: Record; -} - -@parentResource(Account) -model EncryptionScope - is Azure.ResourceManager.ProxyResource { - ...ResourceNameParameter< - Resource = EncryptionScope, - KeyName = "encryptionScopeName", - SegmentName = "encryptionScopes", - NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" - >; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) - tags?: Record; -} - -@parentResource(Account) -model RaiPolicy is Azure.ResourceManager.ProxyResource { - ...ResourceNameParameter< - Resource = RaiPolicy, - KeyName = "raiPolicyName", - SegmentName = "raiPolicies", - NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" - >; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) - tags?: Record; -} - -@parentResource(Account) -model RaiBlocklist - is Azure.ResourceManager.ProxyResource { - ...ResourceNameParameter< - Resource = RaiBlocklist, - KeyName = "raiBlocklistName", - SegmentName = "raiBlocklists", - NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" - >; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) - tags?: Record; -} - -@parentResource(RaiBlocklist) -model RaiBlocklistItem - is Azure.ResourceManager.ProxyResource { - ...ResourceNameParameter< - Resource = RaiBlocklistItem, - KeyName = "raiBlocklistItemName", - SegmentName = "raiBlocklistItems", - NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" - >; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) - tags?: Record; -} - -@parentResource(Account) -model RaiTopic is Azure.ResourceManager.ProxyResource { - ...ResourceNameParameter< - Resource = RaiTopic, - KeyName = "raiTopicName", - SegmentName = "raitopics", - NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" - >; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) - tags?: Record; -} - -@parentResource(Account) -model RaiToolLabel - is Azure.ResourceManager.ProxyResource { - ...ResourceNameParameter< - Resource = RaiToolLabel, - KeyName = "raiToolConnectionName", - SegmentName = "raiToolLabels", - NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" - >; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read, Lifecycle.Create) - tags?: Record; -} - -@subscriptionResource -@parentResource(SubscriptionLocationResource) -model RaiContentFilter - is Azure.ResourceManager.ProxyResource { - ...ResourceNameParameter< - Resource = RaiContentFilter, - KeyName = "filterName", - SegmentName = "raiContentFilters", - NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" - >; -} - -@subscriptionResource -model RaiExternalSafetyProviderSchema - is Azure.ResourceManager.ProxyResource { - ...ResourceNameParameter< - Resource = RaiExternalSafetyProviderSchema, - KeyName = "safetyProviderName", - SegmentName = "raiExternalSafetyProviders", - NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" - >; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - tags?: Record; -} - -@parentResource(Account) -model NetworkSecurityPerimeterConfiguration - is Azure.ResourceManager.ProxyResource { - ...ResourceNameParameter< - Resource = NetworkSecurityPerimeterConfiguration, - KeyName = "nspConfigurationName", - SegmentName = "networkSecurityPerimeterConfigurations", - NamePattern = "^.*$" - >; -} - -@parentResource(Account) -model DefenderForAISetting - is Azure.ResourceManager.ProxyResource { - ...ResourceNameParameter< - Resource = DefenderForAISetting, - KeyName = "defenderForAISettingName", - SegmentName = "defenderForAISettings", - NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" - >; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) - tags?: Record; -} - -@parentResource(Account) -model ConnectionPropertiesV2BasicResource - is Azure.ResourceManager.ProxyResource { - ...ResourceNameParameter< - Resource = ConnectionPropertiesV2BasicResource, - KeyName = "connectionName", - SegmentName = "connections", - NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_-]{2,32}$" - >; -} - -@parentResource(Account) -model CapabilityHost - is Azure.ResourceManager.ProxyResource { - ...ResourceNameParameter< - Resource = CapabilityHost, - KeyName = "capabilityHostName", - SegmentName = "capabilityHosts", - NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9\\-_]{0,254}$" - >; -} - -@parentResource(Project) -model ProjectCapabilityHost - is Azure.ResourceManager.ProxyResource< - ProjectCapabilityHostProperties, - false - > { - ...ResourceNameParameter< - Resource = ProjectCapabilityHost, - KeyName = "capabilityHostName", - SegmentName = "capabilityHosts", - NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9\\-_]{0,254}$" - >; -} - -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -@parentResource(Account) -model Project - is Azure.ResourceManager.Legacy.TrackedResourceWithOptionalLocation { - ...ResourceNameParameter< - Resource = Project, - KeyName = "projectName", - SegmentName = "projects", - NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_.-]*$" - >; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - identity?: Identity; -} - -@subscriptionResource -model QuotaTier is Azure.ResourceManager.ProxyResource { - ...ResourceNameParameter< - Resource = QuotaTier, - KeyName = "default", - SegmentName = "quotaTiers", - NamePattern = "" - >; -} - -@parentResource(Project) -model AgentApplication - is Azure.ResourceManager.ProxyResource { - ...ResourceNameParameter< - Resource = AgentApplication, - KeyName = "name", - SegmentName = "applications", - NamePattern = "" - >; -} - -@parentResource(Project) -model AgentDeployment - is Azure.ResourceManager.ProxyResource { - ...ResourceNameParameter< - Resource = AgentDeployment, - KeyName = "deploymentName", - SegmentName = "deployments", - NamePattern = "" - >; -} - -@parentResource(ManagedNetworkSettingsPropertiesBasicResource) -model OutboundRuleBasicResource - is Azure.ResourceManager.ProxyResource { - ...ResourceNameParameter< - Resource = OutboundRuleBasicResource, - KeyName = "ruleName", - SegmentName = "outboundRules", - NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_-]{2,32}$" - >; -} - -@parentResource(Account) -model ManagedNetworkSettingsPropertiesBasicResource - is Azure.ResourceManager.ProxyResource { - ...ResourceNameParameter< - Resource = ManagedNetworkSettingsPropertiesBasicResource, - KeyName = "managedNetworkName", - SegmentName = "managedNetworks", - NamePattern = "^[a-zA-Z0-9][a-zA-Z0-9_-]{2,32}$" - >; -} - -@parentResource(Account) -model PrivateEndpointConnection - is Azure.ResourceManager.ProxyResource { - ...ResourceNameParameter< - Resource = PrivateEndpointConnection, - KeyName = "privateEndpointConnectionName", - SegmentName = "privateEndpointConnections", - NamePattern = "" - >; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @visibility(Lifecycle.Read) - etag?: string; - - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - location?: string; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/tspconfig.yaml deleted file mode 100644 index fee9363ae42..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/005001-warning-suppress-warning/tspconfig.yaml +++ /dev/null @@ -1,14 +0,0 @@ -parameters: - "service-dir": - default: "sdk/cognitiveservices" -emit: - - "@azure-tools/typespec-autorest" -options: - "@azure-tools/typespec-autorest": - use-read-only-status-schema: true - emitter-output-dir: "{project-root}" - output-file: "{version-status}/{version}/cognitiveservices.json" - arm-types-dir: "{project-root}/../../../../common-types/resource-management" -linter: - extends: - - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/employee.tsp b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/employee.tsp deleted file mode 100644 index 0436d134471..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/employee.tsp +++ /dev/null @@ -1,100 +0,0 @@ -import "@typespec/rest"; -import "@typespec/http"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; - -using TypeSpec.Rest; -using TypeSpec.Http; -using Azure.Core; -using Azure.ResourceManager; - -namespace Microsoft.Widget; - -/** Employee resource */ -model Employee is TrackedResource { - ...ResourceNameParameter; - ...ManagedServiceIdentityProperty; -} - -/** Employee properties */ -model EmployeeProperties { - /** Age of employee */ - age?: int32; - - /** City of employee */ - city?: string; - - /** Email of employee */ - email?: string; - - /** Department of employee */ - department?: string; - - /** Status code of employee */ - statusCode?: string; - - /** Profile of employee */ - @encode("base64url") - profile?: bytes; - - /** The assets belong to the employee. */ - assets: string[]; - - /** The status of the last operation. */ - @visibility(Lifecycle.Read) - provisioningState?: ProvisioningState; -} - -/** Export result model */ -model ExportResult { - /** Exported data */ - data?: string; -} - -/** Employee move request */ -model MoveRequest { - /** The moving from location */ - from: string; - - /** The moving to location */ - to: string; -} - -/** Employee move response */ -model MoveResponse { - /** The status of the move */ - movingStatus: string; -} - -/** The resource provisioning state. */ -@lroStatus -union ProvisioningState { - ResourceProvisioningState, - - /** The resource is being provisioned */ - Provisioning: "Provisioning", - - /** The resource is updating */ - Updating: "Updating", - - /** The resource is being deleted */ - Deleting: "Deleting", - - /** The resource create request has been accepted */ - Accepted: "Accepted", - - string, -} - -@armResourceOperations -interface Employees { - get is ArmResourceRead; - createOrUpdate is ArmResourceCreateOrReplaceAsync; - update is ArmResourcePatchSync; - delete is ArmResourceDeleteWithoutOkAsync; - listByResourceGroup is ArmResourceListByParent; - listBySubscription is ArmListBySubscription; - - /** Export employee data */ - exportData is ArmResourceActionSync; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/main.tsp b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/main.tsp deleted file mode 100644 index 2990eb2b363..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/main.tsp +++ /dev/null @@ -1,32 +0,0 @@ -import "@typespec/http"; -import "@typespec/rest"; -import "@typespec/versioning"; -import "@azure-tools/typespec-azure-core"; -import "@azure-tools/typespec-azure-resource-manager"; -import "./employee.tsp"; - -using TypeSpec.Http; -using TypeSpec.Rest; -using TypeSpec.Versioning; -using Azure.Core; -using Azure.ResourceManager; - -/** Microsoft.Widget Resource Provider management API. */ -@armProviderNamespace -@service(#{ title: "Widget" }) -@versioned(Microsoft.Widget.Versions) -namespace Microsoft.Widget; - -/** The available API versions. */ -enum Versions { - /** 2021-11-01 version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - v2021_11_01: "2021-11-01", - - /** 2024-10-01-preview version */ - @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5) - @previewVersion - v2024_10_01_preview: "2024-10-01-preview", -} - -interface Operations extends Azure.ResourceManager.Operations {} diff --git a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/package-lock.json b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/package-lock.json deleted file mode 100644 index 372c0155191..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/package-lock.json +++ /dev/null @@ -1,7870 +0,0 @@ -{ - "name": "azure-rest-api-specs", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "azure-rest-api-specs", - "devDependencies": { - "@autorest/openapi-to-typespec": "0.11.13", - "@azure-tools/openai-typespec": "1.11.0", - "@azure-tools/spec-gen-sdk": "~0.9.1", - "@azure-tools/specs-shared": "file:.github/shared", - "@azure-tools/typespec-apiview": "0.7.2", - "@azure-tools/typespec-autorest": "0.66.0", - "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-portal-core": "0.66.0", - "@azure-tools/typespec-azure-resource-manager": "0.66.0", - "@azure-tools/typespec-azure-rulesets": "0.66.0", - "@azure-tools/typespec-client-generator-cli": "0.31.0", - "@azure-tools/typespec-client-generator-core": "0.66.3", - "@azure-tools/typespec-liftr-base": "0.13.0", - "@azure-tools/typespec-metadata": "0.1.1", - "@azure/avocado": "0.10.5", - "@azure/oad": "0.12.4", - "@microsoft.azure/openapi-validator": "2.2.4", - "@microsoft.azure/openapi-validator-core": "1.0.7", - "@microsoft.azure/openapi-validator-rulesets": "2.2.5", - "@typespec/compiler": "1.10.0", - "@typespec/events": "0.80.0", - "@typespec/http": "1.10.0", - "@typespec/openapi": "1.10.0", - "@typespec/openapi3": "1.10.0", - "@typespec/prettier-plugin-typespec": "1.10.0", - "@typespec/rest": "0.80.0", - "@typespec/sse": "0.80.0", - "@typespec/streams": "0.80.0", - "@typespec/versioning": "0.80.0", - "@typespec/xml": "0.80.0", - "azure-rest-api-specs-eng-tools": "file:eng/tools", - "oav": "4.0.3", - "prettier": "3.8.1", - "typescript": "~5.9.2" - }, - "engines": { - "node": ">=20.0.0", - "npm": ">=10.0.0" - } - }, - ".github/shared": { - "dev": true - }, - "eng/tools": { - "dev": true - }, - "node_modules/@apidevtools/json-schema-ref-parser": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.1.2.tgz", - "integrity": "sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jsdevtools/ono": "^7.1.3", - "@types/json-schema": "^7.0.6", - "call-me-maybe": "^1.0.1", - "js-yaml": "^4.1.0" - } - }, - "node_modules/@apidevtools/openapi-schemas": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz", - "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/@apidevtools/swagger-methods": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", - "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@apidevtools/swagger-parser": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-12.1.0.tgz", - "integrity": "sha512-e5mJoswsnAX0jG+J09xHFYQXb/bUc5S3pLpMxUuRUA2H8T2kni3yEoyz2R3Dltw5f4A6j6rPNMpWTK+iVDFlng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@apidevtools/json-schema-ref-parser": "14.0.1", - "@apidevtools/openapi-schemas": "^2.1.0", - "@apidevtools/swagger-methods": "^3.0.2", - "ajv": "^8.17.1", - "ajv-draft-04": "^1.0.0", - "call-me-maybe": "^1.0.2" - }, - "peerDependencies": { - "openapi-types": ">=7" - } - }, - "node_modules/@apidevtools/swagger-parser/node_modules/@apidevtools/json-schema-ref-parser": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-14.0.1.tgz", - "integrity": "sha512-Oc96zvmxx1fqoSEdUmfmvvb59/KDOnUoJ7s2t7bISyAn0XEz57LCCw8k2Y4Pf3mwKaZLMciESALORLgfe2frCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.15", - "js-yaml": "^4.1.0" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/philsturgeon" - } - }, - "node_modules/@apidevtools/swagger-parser/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@apidevtools/swagger-parser/node_modules/ajv-draft-04": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", - "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^8.5.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/@apidevtools/swagger-parser/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/@autorest/codemodel": { - "version": "4.20.1", - "resolved": "https://registry.npmjs.org/@autorest/codemodel/-/codemodel-4.20.1.tgz", - "integrity": "sha512-MdI4G0EdQ8yOxGzgT1rCOXxXkCrUQLjVykOvdAyByIgHbnpRop1UzUQuuKmXO8gQPSy7xwYhnfVSgETbHIJZgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure-tools/codegen": "~2.10.1", - "js-yaml": "~4.1.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@autorest/core": { - "version": "3.10.9", - "resolved": "https://registry.npmjs.org/@autorest/core/-/core-3.10.9.tgz", - "integrity": "sha512-k7vYHZMgzdu0FBC2j+ezj7mjptm+UOzQvtj/e3l78qAKi8L/SMLUQXTsw8Z2OL8vNG8MK4A/qlqVRwfM9k91vA==", - "dev": true, - "license": "MIT", - "bin": { - "autorest-core": "entrypoints/app.js", - "autorest-language-service": "entrypoints/language-service.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@autorest/extension-base": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@autorest/extension-base/-/extension-base-3.6.1.tgz", - "integrity": "sha512-FWfO6LM3p+R1dW87wnGdJsCpZw67/h1hj09LsQuY0ywKBKv9lrLAW6AlVPrFyvUUIaCMMgd01U6TifCz/FRG9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure-tools/codegen": "~2.10.1", - "js-yaml": "~4.1.0", - "vscode-jsonrpc": "^3.5.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@autorest/openapi-to-typespec": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@autorest/openapi-to-typespec/-/openapi-to-typespec-0.11.13.tgz", - "integrity": "sha512-4ub+WpzV0Nt1x+ZiIaumysrl5ftrBjfd/I9R3Vj624dUzP9QAmP5xGaRMiayIMeSYVITurRsroJ8wb4PHoJmpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@autorest/codemodel": "~4.20.1", - "@autorest/extension-base": "~3.6.1", - "@azure-tools/codegen": "~2.10.1", - "@azure-tools/openapi": "~3.6.1", - "@typespec/prettier-plugin-typespec": "^1.5.0", - "change-case-all": "~2.1.0", - "lodash": "~4.17.20", - "pluralize": "^8.0.0", - "prettier": "~3.5.3" - } - }, - "node_modules/@autorest/openapi-to-typespec/node_modules/prettier": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", - "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/@autorest/schemas": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@autorest/schemas/-/schemas-1.3.6.tgz", - "integrity": "sha512-kuditGLKhfEjHQxb1aCfs/j2hJL2y8eYEB94smxDd7Qp9beR+oYWwAM/y6PzgkAfk6OrRb3hZ+/NaZTXdoKU5A==", - "dev": true, - "license": "ISC" - }, - "node_modules/@azure-tools/async-io": { - "version": "3.0.254", - "resolved": "https://registry.npmjs.org/@azure-tools/async-io/-/async-io-3.0.254.tgz", - "integrity": "sha512-X1C7XdyCuo50ch9FzKtTvmK18FgDxxf1Bbt3cSoknQqeDaRegHSSCO+zByq2YA4NvUzKXeZ1engh29IDxZXgpQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure-tools/tasks": "~3.0.255", - "proper-lockfile": "~2.0.1" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/@azure-tools/codegen": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/@azure-tools/codegen/-/codegen-2.10.1.tgz", - "integrity": "sha512-fZfREKjQnBTscjObgK4LuyZNFaofoCNQDNz0jl1i8fYNwCM5EOF9BXwtEtobuEyCpPUNDxQ/KKO65eWzirqk4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure-tools/async-io": "~3.0.0", - "js-yaml": "~4.1.0", - "semver": "^7.7.2" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@azure-tools/json": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@azure-tools/json/-/json-1.3.1.tgz", - "integrity": "sha512-0f4kQ6c513ycuk0Z29Nm09D/3dQHrHkduUW8wsFR1QTQ5uqgdYaDWg5I4cZbA8OkOIrJG73TzB/3G0liVCQ+Fw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@azure-tools/jsonschema": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@azure-tools/jsonschema/-/jsonschema-1.3.1.tgz", - "integrity": "sha512-P4KnJzZJjCATcn3nRcF5MPja2wrPdP48Us643+0eqGtNBL4O20CFVEm6WFeFeR8JhvNCsZfeayHiE6VOspe1rg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@azure-tools/openai-typespec": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@azure-tools/openai-typespec/-/openai-typespec-1.11.0.tgz", - "integrity": "sha512-xxHeThd4CJZeOZ7JPV6lPj+8vSkO7V1qZ+zodQdZdlx0jDX7tTJ9VJ5ZakZ/R7g+3sfoECIuhE0TCz+Wq6nXWA==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@typespec/http": "*", - "@typespec/openapi": "*" - } - }, - "node_modules/@azure-tools/openapi": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@azure-tools/openapi/-/openapi-3.6.1.tgz", - "integrity": "sha512-vkIu0CUg09bzxqrlrNHdoOPu9AFhObp0FqG40M2WaF2dcVgLalsUc+wK5s4LpftlZAxcBmzVHna22JhI5/0X9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure-tools/json": "~1.3.1", - "@azure-tools/jsonschema": "~1.3.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@azure-tools/openapi-tools-common": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@azure-tools/openapi-tools-common/-/openapi-tools-common-1.2.2.tgz", - "integrity": "sha512-r6oBkNsND1sA+ZjHlE1vTf2hUj4RUnbD9KG9uksEKnLVC6oOD5WuJYCO5y4xDzWWuR0x+9gImovQqXAE7ZXYfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/async-retry": "^1.4.1", - "@types/commonmark": "^0.27.3", - "@types/node-fetch": "^2.5.7", - "async-retry": "^1.2.3", - "commonmark": "^0.28.1", - "front-matter": "^4.0.2", - "node-fetch": "^2.6.0", - "tslib": "^2.0.0" - } - }, - "node_modules/@azure-tools/openapi-tools-common/node_modules/commonmark": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/commonmark/-/commonmark-0.28.1.tgz", - "integrity": "sha512-PklsZ9pgrfFQ5hQH9BRzoWnqI9db2LeR9MhvkNk8iz97kfaTNmhTU+IE8jKDHTEfivZZXoFqzGqzddXdk14EJw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "entities": "~ 1.1.1", - "mdurl": "~ 1.0.1", - "minimist": "~ 1.2.0", - "string.prototype.repeat": "^0.2.0" - }, - "bin": { - "commonmark": "bin/commonmark" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@azure-tools/openapi-tools-common/node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/@azure-tools/spec-gen-sdk": { - "version": "0.9.7", - "resolved": "https://registry.npmjs.org/@azure-tools/spec-gen-sdk/-/spec-gen-sdk-0.9.7.tgz", - "integrity": "sha512-itvieLe36WCP6yVQUclAdnCUAxCUfVCbYAKHWZA+avKwl1taAMilkG5s9UyYiT/Bkprw3HNzlUFTB83kCk45Ow==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.6", - "filehound": "^1.17.5", - "handlebars": "~4.7.7", - "jsonc-parser": "^2.3.1", - "lodash": "^4.17.20", - "marked": "^15.0.6", - "prettier": "2.1.2", - "winston": "^3.3.3", - "winston-transport": "^4.4.0", - "yaml": "^2.7.0", - "yargs": "^17.7.2" - }, - "bin": { - "spec-gen-sdk": "cmd/spec-gen-sdk.js" - }, - "engines": { - "node": ">=20.10.0" - } - }, - "node_modules/@azure-tools/spec-gen-sdk/node_modules/prettier": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.2.tgz", - "integrity": "sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@azure-tools/specs-shared": { - "resolved": ".github/shared", - "link": true - }, - "node_modules/@azure-tools/tasks": { - "version": "3.0.255", - "resolved": "https://registry.npmjs.org/@azure-tools/tasks/-/tasks-3.0.255.tgz", - "integrity": "sha512-GjALNLz7kWMEdRVbaN5g0cJHNAr3XVTbP0611Mv2UzMgGL6FOhNZJK+oPHJKLDR8EEDZNnkwPlyi7B+INXUSQA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/@azure-tools/typespec-apiview": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-apiview/-/typespec-apiview-0.7.2.tgz", - "integrity": "sha512-4nF24c4agRkLdb9ldMU+zfY37MEvBNB2wm42j6AJAagk89/SLqU0YCNrDBH9IBPLb6UnXCEodIou3TBl6Fu7VA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@typespec/compiler": "^1.0.0", - "@typespec/versioning": ">=0.67 <1.0" - } - }, - "node_modules/@azure-tools/typespec-autorest": { - "version": "0.66.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-autorest/-/typespec-autorest-0.66.0.tgz", - "integrity": "sha512-sznnlQ2Cyxny7bXSl+PzGu+qQf/rrSIvf2qR7G/bqWbK6MNykXwiDk9uR5q93Y8spA9vv4jk38Il4rSXqmAzLQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.66.0", - "@azure-tools/typespec-azure-resource-manager": "^0.66.0", - "@azure-tools/typespec-client-generator-core": "^0.66.0", - "@typespec/compiler": "^1.10.0", - "@typespec/http": "^1.10.0", - "@typespec/openapi": "^1.10.0", - "@typespec/rest": "^0.80.0", - "@typespec/versioning": "^0.80.0", - "@typespec/xml": "^0.80.0" - }, - "peerDependenciesMeta": { - "@typespec/xml": { - "optional": true - } - } - }, - "node_modules/@azure-tools/typespec-azure-core": { - "version": "0.66.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.66.0.tgz", - "integrity": "sha512-OBKxRN7AucK3snh+GtLKSDdcZTz08IgcSZlIO3c4KSlmcR5twT1NMyqf1+V8SAhyOdZimndb+ikzrkkgab+GpA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "@typespec/compiler": "^1.10.0", - "@typespec/http": "^1.10.0", - "@typespec/rest": "^0.80.0" - } - }, - "node_modules/@azure-tools/typespec-azure-portal-core": { - "version": "0.66.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-portal-core/-/typespec-azure-portal-core-0.66.0.tgz", - "integrity": "sha512-aYFNKi227V/okLORJEYRWg5luPD+9y/aGbPfdRYlng842ubbb+LE2X9GbiJbwzHIyJT3/o0l5O6W5h7gf9PDVQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@azure-tools/typespec-azure-resource-manager": "^0.66.0", - "@typespec/compiler": "^1.10.0" - } - }, - "node_modules/@azure-tools/typespec-azure-resource-manager": { - "version": "0.66.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.66.0.tgz", - "integrity": "sha512-UbgYUaYTt7prsv+RYxd2kiOWjeEeoH56QOqgXnSOFhYzq/h9fyDaQAm6+CY7cklziED+MYy3uMQd1BG9mNwlfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "change-case": "~5.4.4", - "pluralize": "^8.0.0" - }, - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.66.0", - "@typespec/compiler": "^1.10.0", - "@typespec/http": "^1.10.0", - "@typespec/openapi": "^1.10.0", - "@typespec/rest": "^0.80.0", - "@typespec/versioning": "^0.80.0" - } - }, - "node_modules/@azure-tools/typespec-azure-rulesets": { - "version": "0.66.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-rulesets/-/typespec-azure-rulesets-0.66.0.tgz", - "integrity": "sha512-Wf0SpphmKDDzHgaqpxl68DpP65VUWjpD3mrnZ3Lw4Pdtt8BcZf7+LKgFF06gPRnh15hR0VbjAERCzxI/qGY4ag==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.66.0", - "@azure-tools/typespec-azure-resource-manager": "^0.66.0", - "@azure-tools/typespec-client-generator-core": "^0.66.1", - "@typespec/compiler": "^1.10.0" - } - }, - "node_modules/@azure-tools/typespec-client-generator-cli": { - "version": "0.31.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-cli/-/typespec-client-generator-cli-0.31.0.tgz", - "integrity": "sha512-ukz9IROlYhr0TAXeVLT6oHb/SbZyDFp+rTKYw5XblNBJChLiq+PDalrjyWXsSF8J15TfKS4vixEOc+LZUQQb0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@autorest/core": "^3.10.2", - "@autorest/openapi-to-typespec": ">=0.10.6 <1.0.0", - "@azure-tools/typespec-autorest": ">=0.53.0 <1.0.0", - "@azure/core-rest-pipeline": "^1.12.0", - "@types/yargs": "^17.0.32", - "autorest": "^3.7.1", - "chalk": "^5.3.0", - "dotenv": "^16.4.5", - "prompt-sync": "^4.2.0", - "simple-git": "^3.20.0", - "yaml": "^2.3.1", - "yargs": "^17.2.1" - }, - "bin": { - "tsp-client": "cmd/tsp-client.js" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@typespec/compiler": "1.0.0-rc.1 || >=1.0.0 <2.0.0" - } - }, - "node_modules/@azure-tools/typespec-client-generator-core": { - "version": "0.66.3", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.66.3.tgz", - "integrity": "sha512-sNetQ6igxAp/vL6X2kEIy715ToDTqoJeb+OL59GEUtOW/3KBSi5tsxvDdCwSfEoaNEmv/FYjh/gJDwAWCJdFJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "change-case": "~5.4.4", - "pluralize": "^8.0.0", - "yaml": "~2.8.2" - }, - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.66.0", - "@typespec/compiler": "^1.10.0", - "@typespec/events": "^0.80.0", - "@typespec/http": "^1.10.0", - "@typespec/openapi": "^1.10.0", - "@typespec/rest": "^0.80.0", - "@typespec/sse": "^0.80.0", - "@typespec/streams": "^0.80.0", - "@typespec/versioning": "^0.80.0", - "@typespec/xml": "^0.80.0" - } - }, - "node_modules/@azure-tools/typespec-liftr-base": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-liftr-base/-/typespec-liftr-base-0.13.0.tgz", - "integrity": "sha512-MF40K/IHwyy3N606DTZSPhFSwA/84ekR9RqvmtJXsXD0SdYcQSoAHOJp4o5qw8OAPSC+aKZ5A+TXRx333V/3PQ==", - "dev": true - }, - "node_modules/@azure-tools/typespec-metadata": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-metadata/-/typespec-metadata-0.1.1.tgz", - "integrity": "sha512-i28N2ridCH0JoWJ/R3KYZaQF5hYXugPWtef80JXcPtdOmoWIizJ8q/3eSNhuPMOJPXVk8tOWGALlduyrtYI+pQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yaml": "~2.8.2" - }, - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "@typespec/compiler": "^1.10.0" - } - }, - "node_modules/@azure-tools/uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@azure-tools/uri/-/uri-3.1.1.tgz", - "integrity": "sha512-UgPgD+qVtm4ASYqoTDazjowimrmMGGEQqPnNk9K/8CZdi2oSLtGqX9S1++2+NDaHlq74VyxbcNMKoxgO+2CCUQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure-tools/async-io": "~3.0.0", - "file-url": "3.0.0", - "get-uri": "~3.0.2", - "urijs": "~1.19.1" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/avocado": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/@azure/avocado/-/avocado-0.10.5.tgz", - "integrity": "sha512-0zTQ2ha0deH8cJiJLYIg3jgR9tqNVvALyNjRpEtKbgBolK5iAKXDmkWj96y1mixG2d/r8s3vSZcrQ22gi4f7wg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/openapi-markdown": "0.9.4", - "@azure/swagger-validation-common": "0.1.2", - "@ts-common/async-iterator": "^1.1.0", - "@ts-common/commonmark-to-markdown": "^2.0.2", - "@ts-common/fs": "^1.1.0", - "@ts-common/iterator": "^1.1.2", - "@ts-common/json": "^1.1.0", - "@ts-common/json-parser": "^1.1.0", - "@ts-common/string-map": "^1.1.1", - "commonmark": "0.31.2", - "glob": "^13.0.0", - "js-yaml": "^4.1.0", - "jsonpath-plus": "^10.0.0", - "node-object-hash": "^3.1.1", - "yargs": "^15.4.1" - }, - "bin": { - "avocado": "bin/cli.js" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/avocado/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@azure/avocado/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/@azure/avocado/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@azure/avocado/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@azure/avocado/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/@azure/avocado/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@azure/avocado/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@azure/core-auth": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz", - "integrity": "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.1.2", - "@azure/core-util": "^1.13.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/core-rest-pipeline": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.23.0.tgz", - "integrity": "sha512-Evs1INHo+jUjwHi1T6SG6Ua/LHOQBCLuKEEE6efIpt4ZOoNonaT1kP32GoOcdNDbfqsD2445CPri3MubBy5DEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.1.2", - "@azure/core-auth": "^1.10.0", - "@azure/core-tracing": "^1.3.0", - "@azure/core-util": "^1.13.0", - "@azure/logger": "^1.3.0", - "@typespec/ts-http-runtime": "^0.3.4", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/core-tracing": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz", - "integrity": "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/core-util": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz", - "integrity": "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.1.2", - "@typespec/ts-http-runtime": "^0.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/logger": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz", - "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typespec/ts-http-runtime": "^0.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/ms-rest-js": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@azure/ms-rest-js/-/ms-rest-js-2.7.0.tgz", - "integrity": "sha512-ngbzWbqF+NmztDOpLBVDxYM+XLcUj7nKhxGbSU9WtIsXfRB//cf2ZbAG5HkOrhU9/wd/ORRB6lM/d69RKVjiyA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/core-auth": "^1.1.4", - "abort-controller": "^3.0.0", - "form-data": "^2.5.0", - "node-fetch": "^2.6.7", - "tslib": "^1.10.0", - "tunnel": "0.0.6", - "uuid": "^8.3.2", - "xml2js": "^0.5.0" - } - }, - "node_modules/@azure/ms-rest-js/node_modules/form-data": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.5.tgz", - "integrity": "sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.35", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/@azure/ms-rest-js/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@azure/oad": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@azure/oad/-/oad-0.12.4.tgz", - "integrity": "sha512-HQYwZpv5psul/EKCjDFIEapYP54W6/Q9dAZ9iLez/d5e3w1xGbZl5BQHiCeq+VCOBVoj8FrkWMa1mHYBQziZog==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ts-common/fs": "0.2.0", - "@ts-common/iterator": "0.3.6", - "@ts-common/json": "0.3.1", - "@ts-common/json-parser": "0.9.0", - "@ts-common/source-map": "0.5.0", - "@ts-common/string-map": "0.3.0", - "autorest": "^3.8.0", - "js-yaml": "^4.1.0", - "json-pointer": "0.6.2", - "json-refs": "^3.0.15", - "lodash": "^4.17.21", - "source-map": "0.7.6", - "tslib": "^2.6.3", - "winston": "^3.13.0", - "yargs": "^15.4.1" - }, - "bin": { - "oad": "dist/cli.js" - }, - "engines": { - "node": ">=20.19.0" - } - }, - "node_modules/@azure/oad/node_modules/@ts-common/async-iterator": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@ts-common/async-iterator/-/async-iterator-0.2.3.tgz", - "integrity": "sha512-szLdrutwQxBCIECaO2RTFcUPFj+9QVk4xKAj+APgeeLoEs67tNjXFgvfU0kOfF04qTHlPNPqcutSqxMHqzG3qA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@ts-common/iterator": "^0.3.6", - "tslib": "^1.10.0" - } - }, - "node_modules/@azure/oad/node_modules/@ts-common/async-iterator/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@azure/oad/node_modules/@ts-common/fs": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@ts-common/fs/-/fs-0.2.0.tgz", - "integrity": "sha512-ul1v4ZatcHuAzrwr/hGjSbk37pnfnLYDWC1yMEynQlnV8ndAcIVNYwQPPOYtLADPKTi3y74g5Q4BF3xPurDHLA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@ts-common/async-iterator": "^0.2.0", - "@types/node": "^10.12.18", - "tslib": "^1.9.3" - } - }, - "node_modules/@azure/oad/node_modules/@ts-common/fs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@azure/oad/node_modules/@ts-common/iterator": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@ts-common/iterator/-/iterator-0.3.6.tgz", - "integrity": "sha512-nNdcleTj3qLlchH17HI/xqOc6sNgOqJ5DdRR0nOEVdJVZCo5bfqoQTu6+Q9ZwMhuETuR2d86MSlmaL2FVHnPjQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@azure/oad/node_modules/@ts-common/json": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@ts-common/json/-/json-0.3.1.tgz", - "integrity": "sha512-vaplNdZPdeWr4p+hLJGdn08UMTSgYQrlRtxrAS0fAWyMlmFalBm/XRhHnohgiflRaj2jxl7ZxihjNlC/LZ/1YQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@ts-common/iterator": "^0.3.1", - "@ts-common/string-map": "^0.3.0" - } - }, - "node_modules/@azure/oad/node_modules/@ts-common/json-parser": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@ts-common/json-parser/-/json-parser-0.9.0.tgz", - "integrity": "sha512-how0z/Ak7Bay+feIYfJFVV8UMw8Ky2Czoo5XwN7QigCOlN4HyW6wSNup4zrZ7t6NUB0002tW/+IOKCH2lAVJOg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@ts-common/add-position": "0.0.2", - "@ts-common/iterator": "^0.3.5", - "@ts-common/json": "^0.3.1", - "@ts-common/source-map": "^0.5.0", - "@ts-common/string-map": "^0.3.0", - "tslib": "^1.9.3" - } - }, - "node_modules/@azure/oad/node_modules/@ts-common/json-parser/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@azure/oad/node_modules/@ts-common/string-map": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@ts-common/string-map/-/string-map-0.3.0.tgz", - "integrity": "sha512-tikHtQPV/R48VAnlolyl1FIHciror68LXyruelvYf+lRE6ysjIGB2iNyw7wN6aDcUs2wN/CD6fF8Ye7lVIWNTQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@ts-common/iterator": "^0.3.0" - } - }, - "node_modules/@azure/oad/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@azure/oad/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/@azure/oad/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@azure/oad/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@azure/oad/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/@azure/oad/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@azure/oad/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@azure/openapi-markdown": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@azure/openapi-markdown/-/openapi-markdown-0.9.4.tgz", - "integrity": "sha512-QBxabmf+64mQuyWRLsBoLKdvB7PH2U9RsyQMekorl17DOVEkgQxMsQdL/WMlz/V2wMyiI433FlrbdUiiFapfKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ts-common/commonmark-to-markdown": "^2.0.2", - "@ts-common/iterator": "^0.3.1", - "@ts-common/string-map": "^0.3.0", - "@ts-common/virtual-fs": "^0.3.0", - "commonmark": "^0.28.1", - "js-yaml": "^3.13.1", - "tslib": "^1.9.3" - } - }, - "node_modules/@azure/openapi-markdown/node_modules/@ts-common/iterator": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@ts-common/iterator/-/iterator-0.3.6.tgz", - "integrity": "sha512-nNdcleTj3qLlchH17HI/xqOc6sNgOqJ5DdRR0nOEVdJVZCo5bfqoQTu6+Q9ZwMhuETuR2d86MSlmaL2FVHnPjQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@azure/openapi-markdown/node_modules/@ts-common/string-map": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@ts-common/string-map/-/string-map-0.3.0.tgz", - "integrity": "sha512-tikHtQPV/R48VAnlolyl1FIHciror68LXyruelvYf+lRE6ysjIGB2iNyw7wN6aDcUs2wN/CD6fF8Ye7lVIWNTQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@ts-common/iterator": "^0.3.0" - } - }, - "node_modules/@azure/openapi-markdown/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@azure/openapi-markdown/node_modules/commonmark": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/commonmark/-/commonmark-0.28.1.tgz", - "integrity": "sha512-PklsZ9pgrfFQ5hQH9BRzoWnqI9db2LeR9MhvkNk8iz97kfaTNmhTU+IE8jKDHTEfivZZXoFqzGqzddXdk14EJw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "entities": "~ 1.1.1", - "mdurl": "~ 1.0.1", - "minimist": "~ 1.2.0", - "string.prototype.repeat": "^0.2.0" - }, - "bin": { - "commonmark": "bin/commonmark" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@azure/openapi-markdown/node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/@azure/openapi-markdown/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@azure/openapi-markdown/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@azure/swagger-validation-common": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@azure/swagger-validation-common/-/swagger-validation-common-0.1.2.tgz", - "integrity": "sha512-QjmSpAliTzc77WTCnm3+zS2qVGv5U9/2h2y1ICZKQp5+0JSMcy3dPbS9WiKKkpsGQ2b1BJbDugJqKVg6a+8AeA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/code-frame": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@colors/colors": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", - "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@dabh/diagnostics": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.8.tgz", - "integrity": "sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@so-ric/colorspace": "^1.1.6", - "enabled": "2.0.x", - "kuler": "^2.0.0" - } - }, - "node_modules/@inquirer/ansi": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.5.tgz", - "integrity": "sha512-doc2sWgJpbFQ64UflSVd17ibMGDuxO1yKgOgLMwavzESnXjFWJqUeG8saYosqKpHp4kWiM5x1nXvEjbpx90gzw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - } - }, - "node_modules/@inquirer/figures": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.5.tgz", - "integrity": "sha512-NsSs4kzfm12lNetHwAn3GEuH317IzpwrMCbOuMIVytpjnJ90YYHNwdRgYGuKmVxwuIqSgqk3M5qqQt1cDk0tGQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - } - }, - "node_modules/@inversifyjs/common": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@inversifyjs/common/-/common-1.5.2.tgz", - "integrity": "sha512-WlzR9xGadABS9gtgZQ+luoZ8V6qm4Ii6RQfcfC9Ho2SOlE6ZuemFo7PKJvKI0ikm8cmKbU8hw5UK6E4qovH21w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@inversifyjs/container": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@inversifyjs/container/-/container-1.15.0.tgz", - "integrity": "sha512-U2xYsPrJTz5za2TExi5lg8qOWf8TEVBpN+pQM7B8BVA2rajtbRE9A66SLRHk8c1eGXmg+0K4Hdki6tWAsSQBUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inversifyjs/common": "1.5.2", - "@inversifyjs/core": "9.2.0", - "@inversifyjs/plugin": "0.2.0", - "@inversifyjs/reflect-metadata-utils": "1.4.1" - }, - "peerDependencies": { - "reflect-metadata": "~0.2.2" - } - }, - "node_modules/@inversifyjs/core": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@inversifyjs/core/-/core-9.2.0.tgz", - "integrity": "sha512-Nm7BR6KmpgshIHpVQWuEDehqRVb6GBm8LFEuhc2s4kSZWrArZ15RmXQzROLk4m+hkj4kMXgvMm5Qbopot/D6Sg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inversifyjs/common": "1.5.2", - "@inversifyjs/prototype-utils": "0.1.3", - "@inversifyjs/reflect-metadata-utils": "1.4.1" - } - }, - "node_modules/@inversifyjs/plugin": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@inversifyjs/plugin/-/plugin-0.2.0.tgz", - "integrity": "sha512-R/JAdkTSD819pV1zi0HP54mWHyX+H2m8SxldXRgPQarS3ySV4KPyRdosWcfB8Se0JJZWZLHYiUNiS6JvMWSPjw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@inversifyjs/prototype-utils": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@inversifyjs/prototype-utils/-/prototype-utils-0.1.3.tgz", - "integrity": "sha512-EzRamZzNgE9Sn3QtZ8NncNa2lpPMZfspqbK6BWFguWnOpK8ymp2TUuH46ruFHZhrHKnknPd7fG22ZV7iF517TQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inversifyjs/common": "1.5.2" - } - }, - "node_modules/@inversifyjs/reflect-metadata-utils": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@inversifyjs/reflect-metadata-utils/-/reflect-metadata-utils-1.4.1.tgz", - "integrity": "sha512-Cp77C4d2wLaHXiUB7iH6Cxb7i1lD/YDuTIHLTDzKINqGSz0DCSoL/Dg2wVkW/6Qx03r/yQMLJ+32Agl32N2X8g==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "reflect-metadata": "~0.2.2" - } - }, - "node_modules/@isaacs/fs-minipass": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.4" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@jsdevtools/ono": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", - "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jsep-plugin/assignment": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jsep-plugin/assignment/-/assignment-1.3.0.tgz", - "integrity": "sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.16.0" - }, - "peerDependencies": { - "jsep": "^0.4.0||^1.0.0" - } - }, - "node_modules/@jsep-plugin/regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@jsep-plugin/regex/-/regex-1.0.4.tgz", - "integrity": "sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.16.0" - }, - "peerDependencies": { - "jsep": "^0.4.0||^1.0.0" - } - }, - "node_modules/@jsep-plugin/ternary": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@jsep-plugin/ternary/-/ternary-1.1.4.tgz", - "integrity": "sha512-ck5wiqIbqdMX6WRQztBL7ASDty9YLgJ3sSAK5ZpBzXeySvFGCzIvM6UiAI4hTZ22fEcYQVV/zhUbNscggW+Ukg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.16.0" - }, - "peerDependencies": { - "jsep": "^0.4.0||^1.0.0" - } - }, - "node_modules/@kwsites/file-exists": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", - "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.1" - } - }, - "node_modules/@kwsites/promise-deferred": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", - "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@microsoft.azure/openapi-validator": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@microsoft.azure/openapi-validator/-/openapi-validator-2.2.4.tgz", - "integrity": "sha512-dI21t3eEfoFQB8g1rhctbjEeA8cbL+F4VL+C7I7GyKPRTnRf2JrLac7+OXMJTuw74JYKuRtiCzqjUjS5JQCLYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure-tools/uri": "^3.1.1", - "@microsoft.azure/openapi-validator-core": "^1.0.0", - "@microsoft.azure/openapi-validator-rulesets": "^2.0.0", - "@stoplight/json-ref-resolver": "^3.1.6", - "@stoplight/spectral-core": "^1.18.3", - "@stoplight/types": "^14.1.1", - "js-yaml": "^4.1.0", - "tslib": "^2.3.1", - "vscode-jsonrpc": "^3.2.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@microsoft.azure/openapi-validator-core": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@microsoft.azure/openapi-validator-core/-/openapi-validator-core-1.0.7.tgz", - "integrity": "sha512-7hSz1571z2Efx86AnXCuV7jEKw88lKhBWHBdThPBvdGsEEkNTNvXnGMdae/eNRO9a//gqowQPuD0A5oQWimFwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure-tools/uri": "^3.1.1", - "dependency-graph": "^1.0.0", - "jsonc-parser": "^3.2.1", - "jsonpath-plus": "^10.3.0", - "lodash": "^4.17.21", - "tslib": "^2.3.1" - } - }, - "node_modules/@microsoft.azure/openapi-validator-core/node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@microsoft.azure/openapi-validator-rulesets": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@microsoft.azure/openapi-validator-rulesets/-/openapi-validator-rulesets-2.2.5.tgz", - "integrity": "sha512-Zqnz+gly2cE1bXWbpAHf8NNH5tbhxOjn4dvAQsfLRhjCNgz5UTL5hVlAWMXV3cfEDMqsC489ZcZ2o5zzQcuiOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@apidevtools/json-schema-ref-parser": "^9.0.9", - "@microsoft.azure/openapi-validator-core": "^1.0.0", - "@stoplight/json-ref-resolver": "^3.1.6", - "@stoplight/spectral-core": "^1.18.3", - "@stoplight/spectral-formats": "^1.6.0", - "@stoplight/spectral-functions": "^1.7.2", - "@stoplight/types": "^14.1.1", - "jsonpath-plus": "^10.3.0", - "lodash": "^4.17.21", - "string.prototype.matchall": "^4.0.11", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@paralleldrive/cuid2": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.3.1.tgz", - "integrity": "sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "^1.1.5" - } - }, - "node_modules/@scalar/helpers": { - "version": "0.2.18", - "resolved": "https://registry.npmjs.org/@scalar/helpers/-/helpers-0.2.18.tgz", - "integrity": "sha512-w1d4tpNEVZ293oB2BAgLrS0kVPUtG3eByNmOCJA5eK9vcT4D3cmsGtWjUaaqit0BQCsBFHK51rasGvSWnApYTw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20" - } - }, - "node_modules/@scalar/json-magic": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@scalar/json-magic/-/json-magic-0.11.7.tgz", - "integrity": "sha512-GVz9E0vXu+ecypkdn0biK1gbQVkK4QTTX1Hq3eMgxlLQC91wwiqWfCqwfhuX0LRu+Z5OmYhLhufDJEEh56rVgA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@scalar/helpers": "0.2.18", - "pathe": "^2.0.3", - "yaml": "^2.8.0" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@scalar/openapi-parser": { - "version": "0.24.17", - "resolved": "https://registry.npmjs.org/@scalar/openapi-parser/-/openapi-parser-0.24.17.tgz", - "integrity": "sha512-aM9UVrzlMreC3X/sZbyj+7XDZmat3ecGC3RpU8dqEO/HIH+CEX0xMLuP+41DhePCYg5+9TtDomSfWuMq4x1Z1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@scalar/helpers": "0.2.18", - "@scalar/json-magic": "0.11.7", - "@scalar/openapi-types": "0.5.4", - "@scalar/openapi-upgrader": "0.1.11", - "ajv": "^8.17.1", - "ajv-draft-04": "^1.0.0", - "ajv-formats": "^3.0.1", - "jsonpointer": "^5.0.1", - "leven": "^4.0.0", - "yaml": "^2.8.0" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@scalar/openapi-parser/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@scalar/openapi-parser/node_modules/ajv-draft-04": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", - "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^8.5.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/@scalar/openapi-parser/node_modules/ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/@scalar/openapi-parser/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/@scalar/openapi-types": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@scalar/openapi-types/-/openapi-types-0.5.4.tgz", - "integrity": "sha512-2pEbhprh8lLGDfUI6mNm9EV104pjb3+aJsXrFaqfgOSre7r6NlgM5HcSbsLjzDAnTikjJhJ3IMal1Rz8WVwiOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "zod": "^4.3.5" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@scalar/openapi-upgrader": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/@scalar/openapi-upgrader/-/openapi-upgrader-0.1.11.tgz", - "integrity": "sha512-ngJcHGoCHmpWgYtNy08vmzFfLdQEkMpvaCQqNPPMNKq0QEXOv89e/rn+TZJZgPnRlY7fDIoIhn9lNgr+azBW+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@scalar/openapi-types": "0.5.4" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@simple-git/args-pathspec": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@simple-git/args-pathspec/-/args-pathspec-1.0.3.tgz", - "integrity": "sha512-ngJMaHlsWDTfjyq9F3VIQ8b7NXbBLq5j9i5bJ6XLYtD6qlDXT7fdKY2KscWWUF8t18xx052Y/PUO1K1TRc9yKA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@simple-git/argv-parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@simple-git/argv-parser/-/argv-parser-1.1.1.tgz", - "integrity": "sha512-Q9lBcfQ+VQCpQqGJFHe5yooOS5hGdLFFbJ5R+R5aDsnkPCahtn1hSkMcORX65J2Z5lxSkD0lQorMsncuBQxYUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@simple-git/args-pathspec": "^1.0.3" - } - }, - "node_modules/@sindresorhus/merge-streams": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", - "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@so-ric/colorspace": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@so-ric/colorspace/-/colorspace-1.1.6.tgz", - "integrity": "sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==", - "dev": true, - "license": "MIT", - "dependencies": { - "color": "^5.0.2", - "text-hex": "1.0.x" - } - }, - "node_modules/@stoplight/json": { - "version": "3.21.7", - "resolved": "https://registry.npmjs.org/@stoplight/json/-/json-3.21.7.tgz", - "integrity": "sha512-xcJXgKFqv/uCEgtGlPxy3tPA+4I+ZI4vAuMJ885+ThkTHFVkC+0Fm58lA9NlsyjnkpxFh4YiQWpH+KefHdbA0A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@stoplight/ordered-object-literal": "^1.0.3", - "@stoplight/path": "^1.3.2", - "@stoplight/types": "^13.6.0", - "jsonc-parser": "~2.2.1", - "lodash": "^4.17.21", - "safe-stable-stringify": "^1.1" - }, - "engines": { - "node": ">=8.3.0" - } - }, - "node_modules/@stoplight/json-ref-readers": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@stoplight/json-ref-readers/-/json-ref-readers-1.2.2.tgz", - "integrity": "sha512-nty0tHUq2f1IKuFYsLM4CXLZGHdMn+X/IwEUIpeSOXt0QjMUbL0Em57iJUDzz+2MkWG83smIigNZ3fauGjqgdQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "node-fetch": "^2.6.0", - "tslib": "^1.14.1" - }, - "engines": { - "node": ">=8.3.0" - } - }, - "node_modules/@stoplight/json-ref-readers/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@stoplight/json-ref-resolver": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@stoplight/json-ref-resolver/-/json-ref-resolver-3.1.6.tgz", - "integrity": "sha512-YNcWv3R3n3U6iQYBsFOiWSuRGE5su1tJSiX6pAPRVk7dP0L7lqCteXGzuVRQ0gMZqUl8v1P0+fAKxF6PLo9B5A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@stoplight/json": "^3.21.0", - "@stoplight/path": "^1.3.2", - "@stoplight/types": "^12.3.0 || ^13.0.0", - "@types/urijs": "^1.19.19", - "dependency-graph": "~0.11.0", - "fast-memoize": "^2.5.2", - "immer": "^9.0.6", - "lodash": "^4.17.21", - "tslib": "^2.6.0", - "urijs": "^1.19.11" - }, - "engines": { - "node": ">=8.3.0" - } - }, - "node_modules/@stoplight/json-ref-resolver/node_modules/@stoplight/types": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.20.0.tgz", - "integrity": "sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.4", - "utility-types": "^3.10.0" - }, - "engines": { - "node": "^12.20 || >=14.13" - } - }, - "node_modules/@stoplight/json-ref-resolver/node_modules/dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/@stoplight/json/node_modules/@stoplight/types": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.20.0.tgz", - "integrity": "sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.4", - "utility-types": "^3.10.0" - }, - "engines": { - "node": "^12.20 || >=14.13" - } - }, - "node_modules/@stoplight/json/node_modules/jsonc-parser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.1.tgz", - "integrity": "sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@stoplight/ordered-object-literal": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@stoplight/ordered-object-literal/-/ordered-object-literal-1.0.5.tgz", - "integrity": "sha512-COTiuCU5bgMUtbIFBuyyh2/yVVzlr5Om0v5utQDgBCuQUOPgU1DwoffkTfg4UBQOvByi5foF4w4T+H9CoRe5wg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/@stoplight/path": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@stoplight/path/-/path-1.3.2.tgz", - "integrity": "sha512-lyIc6JUlUA8Ve5ELywPC8I2Sdnh1zc1zmbYgVarhXIp9YeAB0ReeqmGEOWNtlHkbP2DAA1AL65Wfn2ncjK/jtQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/@stoplight/spectral-core": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@stoplight/spectral-core/-/spectral-core-1.22.0.tgz", - "integrity": "sha512-4hTxMDs4TFUG4/jKjaZttA65gNuV2PCKI9+51I+J4nL6ylo17DlbW+sl6byKnBuV/85HxaV33ri5fEGlp8lTSA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@stoplight/better-ajv-errors": "1.0.3", - "@stoplight/json": "~3.21.0", - "@stoplight/path": "1.3.2", - "@stoplight/spectral-parsers": "^1.0.0", - "@stoplight/spectral-ref-resolver": "^1.0.4", - "@stoplight/spectral-runtime": "^1.1.2", - "@stoplight/types": "~13.6.0", - "@types/es-aggregate-error": "^1.0.2", - "@types/json-schema": "^7.0.11", - "ajv": "^8.18.0", - "ajv-errors": "~3.0.0", - "ajv-formats": "~2.1.1", - "es-aggregate-error": "^1.0.7", - "expr-eval-fork": "^3.0.1", - "jsonpath-plus": "^10.3.0", - "lodash": "^4.18.1", - "lodash.topath": "^4.5.2", - "minimatch": "^3.1.4", - "nimma": "0.2.3", - "pony-cause": "^1.1.1", - "tslib": "^2.8.1" - }, - "engines": { - "node": "^16.20 || ^18.18 || >= 20.17" - } - }, - "node_modules/@stoplight/spectral-core/node_modules/@stoplight/better-ajv-errors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@stoplight/better-ajv-errors/-/better-ajv-errors-1.0.3.tgz", - "integrity": "sha512-0p9uXkuB22qGdNfy3VeEhxkU5uwvp/KrBTAbrLBURv6ilxIVwanKwjMc41lQfIVgPGcOkmLbTolfFrSsueu7zA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "jsonpointer": "^5.0.0", - "leven": "^3.1.0" - }, - "engines": { - "node": "^12.20 || >= 14.13" - }, - "peerDependencies": { - "ajv": ">=8" - } - }, - "node_modules/@stoplight/spectral-core/node_modules/@stoplight/types": { - "version": "13.6.0", - "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.6.0.tgz", - "integrity": "sha512-dzyuzvUjv3m1wmhPfq82lCVYGcXG0xUYgqnWfCq3PCVR4BKFhjdkHrnJ+jIDoMKvXb05AZP/ObQF6+NpDo29IQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.4", - "utility-types": "^3.10.0" - }, - "engines": { - "node": "^12.20 || >=14.13" - } - }, - "node_modules/@stoplight/spectral-core/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@stoplight/spectral-core/node_modules/ajv-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz", - "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^8.0.1" - } - }, - "node_modules/@stoplight/spectral-core/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/@stoplight/spectral-core/node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@stoplight/spectral-core/node_modules/lodash": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", - "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@stoplight/spectral-formats": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@stoplight/spectral-formats/-/spectral-formats-1.8.2.tgz", - "integrity": "sha512-c06HB+rOKfe7tuxg0IdKDEA5XnjL2vrn/m/OVIIxtINtBzphZrOgtRn7epQ5bQF5SWp84Ue7UJWaGgDwVngMFw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@stoplight/json": "^3.17.0", - "@stoplight/spectral-core": "^1.19.2", - "@types/json-schema": "^7.0.7", - "tslib": "^2.8.1" - }, - "engines": { - "node": "^16.20 || ^18.18 || >= 20.17" - } - }, - "node_modules/@stoplight/spectral-functions": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@stoplight/spectral-functions/-/spectral-functions-1.10.2.tgz", - "integrity": "sha512-PIfPUgTRo8EtAnL1MIrzhHoUuojSaE8shGSMaHS3BxGyc8d079BE5+TqJa1/WLUb9YT9JQnZ0Aj4xfi8NcJOIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@stoplight/better-ajv-errors": "1.0.3", - "@stoplight/json": "^3.17.1", - "@stoplight/spectral-core": "^1.19.4", - "@stoplight/spectral-formats": "^1.8.1", - "@stoplight/spectral-runtime": "^1.1.2", - "ajv": "^8.18.0", - "ajv-draft-04": "~1.0.0", - "ajv-errors": "~3.0.0", - "ajv-formats": "~2.1.1", - "lodash": "^4.18.1", - "tslib": "^2.8.1" - }, - "engines": { - "node": "^16.20 || ^18.18 || >= 20.17" - } - }, - "node_modules/@stoplight/spectral-functions/node_modules/@stoplight/better-ajv-errors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@stoplight/better-ajv-errors/-/better-ajv-errors-1.0.3.tgz", - "integrity": "sha512-0p9uXkuB22qGdNfy3VeEhxkU5uwvp/KrBTAbrLBURv6ilxIVwanKwjMc41lQfIVgPGcOkmLbTolfFrSsueu7zA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "jsonpointer": "^5.0.0", - "leven": "^3.1.0" - }, - "engines": { - "node": "^12.20 || >= 14.13" - }, - "peerDependencies": { - "ajv": ">=8" - } - }, - "node_modules/@stoplight/spectral-functions/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@stoplight/spectral-functions/node_modules/ajv-draft-04": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", - "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^8.5.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/@stoplight/spectral-functions/node_modules/ajv-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz", - "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^8.0.1" - } - }, - "node_modules/@stoplight/spectral-functions/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/@stoplight/spectral-functions/node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@stoplight/spectral-functions/node_modules/lodash": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", - "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@stoplight/spectral-parsers": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@stoplight/spectral-parsers/-/spectral-parsers-1.0.5.tgz", - "integrity": "sha512-ANDTp2IHWGvsQDAY85/jQi9ZrF4mRrA5bciNHX+PUxPr4DwS6iv4h+FVWJMVwcEYdpyoIdyL+SRmHdJfQEPmwQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@stoplight/json": "~3.21.0", - "@stoplight/types": "^14.1.1", - "@stoplight/yaml": "~4.3.0", - "tslib": "^2.8.1" - }, - "engines": { - "node": "^16.20 || ^18.18 || >= 20.17" - } - }, - "node_modules/@stoplight/spectral-ref-resolver": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@stoplight/spectral-ref-resolver/-/spectral-ref-resolver-1.0.5.tgz", - "integrity": "sha512-gj3TieX5a9zMW29z3mBlAtDOCgN3GEc1VgZnCVlr5irmR4Qi5LuECuFItAq4pTn5Zu+sW5bqutsCH7D4PkpyAA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@stoplight/json-ref-readers": "1.2.2", - "@stoplight/json-ref-resolver": "~3.1.6", - "@stoplight/spectral-runtime": "^1.1.2", - "dependency-graph": "0.11.0", - "tslib": "^2.8.1" - }, - "engines": { - "node": "^16.20 || ^18.18 || >= 20.17" - } - }, - "node_modules/@stoplight/spectral-ref-resolver/node_modules/dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/@stoplight/spectral-runtime": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@stoplight/spectral-runtime/-/spectral-runtime-1.1.5.tgz", - "integrity": "sha512-6/HSCQBKnI4M5qonCKos2W7oggXv+U/ml+m/cAd4eJAYfIVEmaLUo03qSWIIl4cBc5ujJPmn2WnCiRrz1++P7Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@stoplight/json": "^3.20.1", - "@stoplight/path": "^1.3.2", - "@stoplight/types": "^13.6.0", - "abort-controller": "^3.0.0", - "lodash": "^4.18.1", - "node-fetch": "^2.7.0", - "tslib": "^2.8.1" - }, - "engines": { - "node": "^16.20 || ^18.18 || >= 20.17" - } - }, - "node_modules/@stoplight/spectral-runtime/node_modules/@stoplight/types": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.20.0.tgz", - "integrity": "sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.4", - "utility-types": "^3.10.0" - }, - "engines": { - "node": "^12.20 || >=14.13" - } - }, - "node_modules/@stoplight/spectral-runtime/node_modules/lodash": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", - "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@stoplight/types": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-14.1.1.tgz", - "integrity": "sha512-/kjtr+0t0tjKr+heVfviO9FrU/uGLc+QNX3fHJc19xsCNYqU7lVhaXxDmEID9BZTjG+/r9pK9xP/xU02XGg65g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.4", - "utility-types": "^3.10.0" - }, - "engines": { - "node": "^12.20 || >=14.13" - } - }, - "node_modules/@stoplight/yaml": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@stoplight/yaml/-/yaml-4.3.0.tgz", - "integrity": "sha512-JZlVFE6/dYpP9tQmV0/ADfn32L9uFarHWxfcRhReKUnljz1ZiUM5zpX+PH8h5CJs6lao3TuFqnPm9IJJCEkE2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@stoplight/ordered-object-literal": "^1.0.5", - "@stoplight/types": "^14.1.1", - "@stoplight/yaml-ast-parser": "0.0.50", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=10.8" - } - }, - "node_modules/@stoplight/yaml-ast-parser": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@stoplight/yaml-ast-parser/-/yaml-ast-parser-0.0.50.tgz", - "integrity": "sha512-Pb6M8TDO9DtSVla9yXSTAxmo9GVEouq5P40DWXdOie69bXogZTkgvopCq+yEvTMA0F6PEvdJmbtTV3ccIp11VQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@ts-common/add-position": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@ts-common/add-position/-/add-position-0.0.2.tgz", - "integrity": "sha512-ENfIN5410jyxqXbQZXmj1ifFPjnhXOuJdQjglDXhLR8vyD74PTUz277BN9Voua2DKeOjlAnyBK7ml1ciMsBqhw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@ts-common/iterator": "^0.3.5" - } - }, - "node_modules/@ts-common/add-position/node_modules/@ts-common/iterator": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@ts-common/iterator/-/iterator-0.3.6.tgz", - "integrity": "sha512-nNdcleTj3qLlchH17HI/xqOc6sNgOqJ5DdRR0nOEVdJVZCo5bfqoQTu6+Q9ZwMhuETuR2d86MSlmaL2FVHnPjQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@ts-common/async-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ts-common/async-iterator/-/async-iterator-1.1.0.tgz", - "integrity": "sha512-Uifzj7otY+3VGef6ohW85MHAsEvYhGtn+WedQ9hFYCsnBnDA8GI8QwB9U9Nd995NQohuNVL3zoqiBD/yUaJILg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ts-common/iterator": "^1.1.0", - "tslib": "^1.10.0" - } - }, - "node_modules/@ts-common/async-iterator/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@ts-common/commonmark-to-markdown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@ts-common/commonmark-to-markdown/-/commonmark-to-markdown-2.0.2.tgz", - "integrity": "sha512-gLUxc7phOvWiDavHDshU3JGxKsepSCYAuXpMVxU0j6MDah2EbV3y0UA4x1wHkWmlf7bVuDLcnsiYQttqEX1zQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ts-common/iterator": "^1.1.1", - "@types/commonmark": "^0.27.3", - "commonmark": "^0.28.1", - "front-matter": "^4.0.2" - } - }, - "node_modules/@ts-common/commonmark-to-markdown/node_modules/commonmark": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/commonmark/-/commonmark-0.28.1.tgz", - "integrity": "sha512-PklsZ9pgrfFQ5hQH9BRzoWnqI9db2LeR9MhvkNk8iz97kfaTNmhTU+IE8jKDHTEfivZZXoFqzGqzddXdk14EJw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "entities": "~ 1.1.1", - "mdurl": "~ 1.0.1", - "minimist": "~ 1.2.0", - "string.prototype.repeat": "^0.2.0" - }, - "bin": { - "commonmark": "bin/commonmark" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@ts-common/commonmark-to-markdown/node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/@ts-common/fs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ts-common/fs/-/fs-1.1.0.tgz", - "integrity": "sha512-VRz8Hgs8hnEsRv2eXli77RQZznWwwkplySR6WwGmVkKyGb98Th8g7CWnRMmjLSBYhSnnRrSLRc+kXzFf1v0Ozg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ts-common/async-iterator": "^1.1.0", - "@types/node": "^10.12.18", - "tslib": "^1.9.3" - } - }, - "node_modules/@ts-common/fs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@ts-common/iterator": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ts-common/iterator/-/iterator-1.1.2.tgz", - "integrity": "sha512-edwrL2/efx3uphxuSEI7fCHJENFmTg+gR7TY8ruTRxNWIWc240YSg+v4T3qVAtgG8npwRC4QtQDu72hi8mrR5A==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "tslib": "^2.3.1" - } - }, - "node_modules/@ts-common/json": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ts-common/json/-/json-1.1.0.tgz", - "integrity": "sha512-ylWLEIxGLbvx6l4V1rfVneH5uosOggSXSB4/RQ94i63iRHH+Z70qc7Ll+kRCt50T+3MLn/lzgV2k7TIKLUQIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ts-common/iterator": "^1.1.0", - "@ts-common/string-map": "^1.1.0" - } - }, - "node_modules/@ts-common/json-parser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ts-common/json-parser/-/json-parser-1.1.0.tgz", - "integrity": "sha512-UWk3/Al4KhEeu4StiNTJkCdDcgWeQKTNyiU1/KTMkRcFqCuTtYbRumqS53SBMOgHVXMNRXl2gwg/BKNwLNdsAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ts-common/add-position": "^1.1.0", - "@ts-common/iterator": "^1.1.0", - "@ts-common/json": "^1.1.0", - "@ts-common/source-map": "^1.1.0", - "@ts-common/string-map": "^1.1.0", - "tslib": "^1.9.3" - } - }, - "node_modules/@ts-common/json-parser/node_modules/@ts-common/add-position": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ts-common/add-position/-/add-position-1.1.0.tgz", - "integrity": "sha512-2ikPepUtJ+BlidwQD6+2Y8aAU14v8LUBATvf51haCwor2lbvSHdcfBgqlMQVl4pmge5NkA0FtNjXS7w/ewkkzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ts-common/iterator": "^1.1.0" - }, - "peerDependencies": { - "tslib": "^1.0.0" - } - }, - "node_modules/@ts-common/json-parser/node_modules/@ts-common/property-set": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@ts-common/property-set/-/property-set-1.1.4.tgz", - "integrity": "sha512-TYpBgozpJAN310dFRtvNmVw/o5rctF94O2mOyFB5AOjAfsZ24gl7PL8c8CgrMA3cvOxiWpKm3gPoqWSGz/3oCA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@ts-common/json-parser/node_modules/@ts-common/source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ts-common/source-map/-/source-map-1.1.0.tgz", - "integrity": "sha512-QORaf3+t5h9pKLnvdByXwcNfXeysQ3OrKXZvg3o5+joMc0OUN2bwnAPYtOxyarN9Bsw6dnwL0OUYJ6Yc7fwugg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ts-common/iterator": "^1.1.0", - "@ts-common/json": "^1.1.0", - "@ts-common/property-set": "^1.1.0", - "@ts-common/string-map": "^1.1.0" - } - }, - "node_modules/@ts-common/json-parser/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@ts-common/property-set": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@ts-common/property-set/-/property-set-0.1.0.tgz", - "integrity": "sha512-Mw/CPiksQI/Tvp8/bmne6ZYmOcgHuMOrflairbzdpfgMz7lrINFu8PyDQw6yTnIASeZR4yW0xljb66gCE4Jj0w==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@ts-common/source-map": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@ts-common/source-map/-/source-map-0.5.0.tgz", - "integrity": "sha512-aKFWvuN5uALt+hUtkPA4gHjtloDy2qHW1FB1r758KCTI0h0lP3dNJGcfwg7NnmD0qKQiZAY/J73/NYrbuTfT3A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@ts-common/iterator": "^0.3.0", - "@ts-common/json": "^0.3.0", - "@ts-common/property-set": "^0.1.0", - "@ts-common/string-map": "^0.3.0" - } - }, - "node_modules/@ts-common/source-map/node_modules/@ts-common/iterator": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@ts-common/iterator/-/iterator-0.3.6.tgz", - "integrity": "sha512-nNdcleTj3qLlchH17HI/xqOc6sNgOqJ5DdRR0nOEVdJVZCo5bfqoQTu6+Q9ZwMhuETuR2d86MSlmaL2FVHnPjQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@ts-common/source-map/node_modules/@ts-common/json": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@ts-common/json/-/json-0.3.1.tgz", - "integrity": "sha512-vaplNdZPdeWr4p+hLJGdn08UMTSgYQrlRtxrAS0fAWyMlmFalBm/XRhHnohgiflRaj2jxl7ZxihjNlC/LZ/1YQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@ts-common/iterator": "^0.3.1", - "@ts-common/string-map": "^0.3.0" - } - }, - "node_modules/@ts-common/source-map/node_modules/@ts-common/string-map": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@ts-common/string-map/-/string-map-0.3.0.tgz", - "integrity": "sha512-tikHtQPV/R48VAnlolyl1FIHciror68LXyruelvYf+lRE6ysjIGB2iNyw7wN6aDcUs2wN/CD6fF8Ye7lVIWNTQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@ts-common/iterator": "^0.3.0" - } - }, - "node_modules/@ts-common/string-map": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@ts-common/string-map/-/string-map-1.1.1.tgz", - "integrity": "sha512-dmh+Kdf3S6wbuW0CGULVYYukOHKyvGVKFF86cFe1W+MkYqjhsclJQ0AvJJTxncqohFKjsbJvMCd/5ee7u5dU1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ts-common/iterator": "^1.1.2" - }, - "peerDependencies": { - "tslib": "^2.6.2" - } - }, - "node_modules/@ts-common/virtual-fs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@ts-common/virtual-fs/-/virtual-fs-0.3.0.tgz", - "integrity": "sha512-ryoXw52FTLhiexoNBA/hcAlW8gxPhrKEuZODgpCiF0wswNJdg/j+rCb9k1VppJdeIJ30b0Wg+2vPsrOrdnYTIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@ts-common/fs": "^0.2.0", - "@ts-common/iterator": "^0.3.0", - "@types/async-retry": "^1.4.1", - "@types/node-fetch": "^2.5.5", - "async-retry": "^1.3.1", - "node-fetch": "^2.6.0" - } - }, - "node_modules/@ts-common/virtual-fs/node_modules/@ts-common/async-iterator": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@ts-common/async-iterator/-/async-iterator-0.2.3.tgz", - "integrity": "sha512-szLdrutwQxBCIECaO2RTFcUPFj+9QVk4xKAj+APgeeLoEs67tNjXFgvfU0kOfF04qTHlPNPqcutSqxMHqzG3qA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@ts-common/iterator": "^0.3.6", - "tslib": "^1.10.0" - } - }, - "node_modules/@ts-common/virtual-fs/node_modules/@ts-common/fs": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@ts-common/fs/-/fs-0.2.0.tgz", - "integrity": "sha512-ul1v4ZatcHuAzrwr/hGjSbk37pnfnLYDWC1yMEynQlnV8ndAcIVNYwQPPOYtLADPKTi3y74g5Q4BF3xPurDHLA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@ts-common/async-iterator": "^0.2.0", - "@types/node": "^10.12.18", - "tslib": "^1.9.3" - } - }, - "node_modules/@ts-common/virtual-fs/node_modules/@ts-common/iterator": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@ts-common/iterator/-/iterator-0.3.6.tgz", - "integrity": "sha512-nNdcleTj3qLlchH17HI/xqOc6sNgOqJ5DdRR0nOEVdJVZCo5bfqoQTu6+Q9ZwMhuETuR2d86MSlmaL2FVHnPjQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@ts-common/virtual-fs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@types/async-retry": { - "version": "1.4.9", - "resolved": "https://registry.npmjs.org/@types/async-retry/-/async-retry-1.4.9.tgz", - "integrity": "sha512-s1ciZQJzRh3708X/m3vPExr5KJlzlZJvXsKpbtE2luqNcbROr64qU+3KpJsYHqWMeaxI839OvXf9PrUSw1Xtyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/retry": "*" - } - }, - "node_modules/@types/commonmark": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@types/commonmark/-/commonmark-0.27.10.tgz", - "integrity": "sha512-iEZobUnvlM+UX5fXWCmC4eQXwCs01Z8Xa1W0VjiWUF/XsNy4BHtskqJ9MyLZVMHbA0ezhyonCDqz3hMvsCm6Hg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/es-aggregate-error": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/es-aggregate-error/-/es-aggregate-error-1.0.6.tgz", - "integrity": "sha512-qJ7LIFp06h1QE1aVxbVd+zJP2wdaugYXYfd6JxsyRMrYHaxb6itXPogW2tz+ylUJ1n1b+JF1PHyYCfYHm0dvUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node-fetch": { - "version": "2.6.13", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.13.tgz", - "integrity": "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "form-data": "^4.0.4" - } - }, - "node_modules/@types/retry": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.5.tgz", - "integrity": "sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/triple-beam": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", - "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/urijs": { - "version": "1.19.26", - "resolved": "https://registry.npmjs.org/@types/urijs/-/urijs-1.19.26.tgz", - "integrity": "sha512-wkXrVzX5yoqLnndOwFsieJA7oKM8cNkOKJtf/3vVGSUFkWDKZvFHpIl9Pvqb/T9UsawBBFMTTD8xu7sK5MWuvg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/yargs": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", - "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@typespec/asset-emitter": { - "version": "0.79.1", - "resolved": "https://registry.npmjs.org/@typespec/asset-emitter/-/asset-emitter-0.79.1.tgz", - "integrity": "sha512-53s3GLu5BwNkl7Itr/OizfhymTV2u7k5/cwjUOAt03AUDfiKlwbsp+iCIsq1vccJuoDOiXOceJOfL8rAf4/9LQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "@typespec/compiler": "^1.10.0" - } - }, - "node_modules/@typespec/compiler": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.10.0.tgz", - "integrity": "sha512-R6BATDkughntPpaxeESJF+wxma5PEjgmnnKvH0/ByqUH8VyhIckQWE9kkP0Uc/EJ0o0VYhe8qCwWQvV70k5lTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "~7.29.0", - "@inquirer/prompts": "^8.0.1", - "ajv": "~8.18.0", - "change-case": "~5.4.4", - "env-paths": "^4.0.0", - "globby": "~16.1.0", - "is-unicode-supported": "^2.1.0", - "mustache": "~4.2.0", - "picocolors": "~1.1.1", - "prettier": "~3.8.0", - "semver": "^7.7.1", - "tar": "^7.5.2", - "temporal-polyfill": "^0.3.0", - "vscode-languageserver": "~9.0.1", - "vscode-languageserver-textdocument": "~1.0.12", - "yaml": "~2.8.2", - "yargs": "~18.0.0" - }, - "bin": { - "tsp": "cmd/tsp.js", - "tsp-server": "cmd/tsp-server.js" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@typespec/compiler/node_modules/@inquirer/checkbox": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.1.4.tgz", - "integrity": "sha512-w6KF8ZYRvqHhROkOTHXYC3qIV/KYEu5o12oLqQySvch61vrYtRxNSHTONSdJqWiFJPlCUQAHT5OgOIyuTr+MHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^2.0.5", - "@inquirer/core": "^11.1.9", - "@inquirer/figures": "^2.0.5", - "@inquirer/type": "^4.0.5" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@typespec/compiler/node_modules/@inquirer/confirm": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.0.12.tgz", - "integrity": "sha512-h9FgGun3QwVYNj5TWIZZ+slii73bMoBFjPfVIGtnFuL4t8gBiNDV9PcSfIzkuxvgquJKt9nr1QzszpBzTbH8Og==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^11.1.9", - "@inquirer/type": "^4.0.5" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@typespec/compiler/node_modules/@inquirer/core": { - "version": "11.1.9", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.1.9.tgz", - "integrity": "sha512-BDE4fG22uYh1bGSifcj7JSx119TVYNViMhMu85usp4Fswrzh6M0DV3yld64jA98uOAa2GSQ4Bg4bZRm2d2cwSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^2.0.5", - "@inquirer/figures": "^2.0.5", - "@inquirer/type": "^4.0.5", - "cli-width": "^4.1.0", - "fast-wrap-ansi": "^0.2.0", - "mute-stream": "^3.0.0", - "signal-exit": "^4.1.0" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@typespec/compiler/node_modules/@inquirer/editor": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.1.1.tgz", - "integrity": "sha512-6y11LgmNpmn5D2aB5FgnCfBUBK8ZstwLCalyJmORcJZ/WrhOjm16mu6eSqIx8DnErxDqSLr+Jkp+GP8/Nwd5tA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^11.1.9", - "@inquirer/external-editor": "^3.0.0", - "@inquirer/type": "^4.0.5" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@typespec/compiler/node_modules/@inquirer/expand": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.0.13.tgz", - "integrity": "sha512-dF2zvrFo9LshkcB23/O1il13kBkBltWIXzut1evfbuBLXMiGIuC45c+ZQ0uukjCDsvI8OWqun4FRYMnzFCQa3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^11.1.9", - "@inquirer/type": "^4.0.5" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@typespec/compiler/node_modules/@inquirer/external-editor": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-3.0.0.tgz", - "integrity": "sha512-lDSwMgg+M5rq6JKBYaJwSX6T9e/HK2qqZ1oxmOwn4AQoJE5D+7TumsxLGC02PWS//rkIVqbZv3XA3ejsc9FYvg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chardet": "^2.1.1", - "iconv-lite": "^0.7.2" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@typespec/compiler/node_modules/@inquirer/input": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.0.12.tgz", - "integrity": "sha512-uiMFBl4LqFzJClh80Q3f9hbOFJ6kgkDWI4LjAeBuyO6EanVVMF69AgOvpi1qdqjDSjDN6578B6nky9ceEpI+1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^11.1.9", - "@inquirer/type": "^4.0.5" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@typespec/compiler/node_modules/@inquirer/number": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.0.12.tgz", - "integrity": "sha512-/vrwhEf7Xsuh+YlHF4IjSy3g1cyrQuPaSiHIxCEbLu8qnfvrcvJyCkoktOOF+xV9gSb77/G0n3h04RbMDW2sIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^11.1.9", - "@inquirer/type": "^4.0.5" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@typespec/compiler/node_modules/@inquirer/password": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.0.12.tgz", - "integrity": "sha512-CBh7YHju623lxJRcAOo498ZUwIuMy63bqW/vVq0tQAZVv+lkWlHkP9ealYE1utWSisEShY5VMdzIXRmyEODzcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^2.0.5", - "@inquirer/core": "^11.1.9", - "@inquirer/type": "^4.0.5" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@typespec/compiler/node_modules/@inquirer/prompts": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.4.2.tgz", - "integrity": "sha512-XJmn/wY4AX56l1BRU+ZjDrFtg9+2uBEi4JvJQj82kwJDQKiPgSn4CEsbfGGygS4Gw6rkL4W18oATjfVfaqub2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/checkbox": "^5.1.4", - "@inquirer/confirm": "^6.0.12", - "@inquirer/editor": "^5.1.1", - "@inquirer/expand": "^5.0.13", - "@inquirer/input": "^5.0.12", - "@inquirer/number": "^4.0.12", - "@inquirer/password": "^5.0.12", - "@inquirer/rawlist": "^5.2.8", - "@inquirer/search": "^4.1.8", - "@inquirer/select": "^5.1.4" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@typespec/compiler/node_modules/@inquirer/rawlist": { - "version": "5.2.8", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.2.8.tgz", - "integrity": "sha512-Su7FQvp5buZmCymN3PPoYv31ZQQX4ve2j02k7piGgKAWgE+AQRB5YoYVveGXcl3TZ9ldgRMSxj56YfDFmmaqLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^11.1.9", - "@inquirer/type": "^4.0.5" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@typespec/compiler/node_modules/@inquirer/search": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.1.8.tgz", - "integrity": "sha512-fGiHKGD6DyPIYUWxoXnQTeXeyYqSOUrasDMABBmMHUalH/LxkuzY0xVRtimXAt1sUeeyYkVuKQx1bebMuN11Kw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^11.1.9", - "@inquirer/figures": "^2.0.5", - "@inquirer/type": "^4.0.5" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@typespec/compiler/node_modules/@inquirer/select": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.1.4.tgz", - "integrity": "sha512-2kWcGKPMLAXAWRp1AH1SLsQmX+j0QjeljyXMUji9WMZC8nRDO0b7qquIGr6143E7KMLt3VAIGNXzwa/6PXQs4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^2.0.5", - "@inquirer/core": "^11.1.9", - "@inquirer/figures": "^2.0.5", - "@inquirer/type": "^4.0.5" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@typespec/compiler/node_modules/@inquirer/type": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.0.5.tgz", - "integrity": "sha512-aetVUNeKNc/VriqXlw1NRSW0zhMBB0W4bNbWRJgzRl/3d0QNDQFfk0GO5SDdtjMZVg6o8ZKEiadd7SCCzoOn5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@typespec/compiler/node_modules/@types/node": { - "version": "25.6.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz", - "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==", - "extraneous": true, - "license": "MIT", - "dependencies": { - "undici-types": "~7.19.0" - } - }, - "node_modules/@typespec/compiler/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@typespec/compiler/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@typespec/compiler/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@typespec/compiler/node_modules/cliui": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", - "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^7.2.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@typespec/compiler/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@typespec/compiler/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/@typespec/compiler/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@typespec/compiler/node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@typespec/compiler/node_modules/wrap-ansi": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", - "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/@typespec/compiler/node_modules/yargs": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", - "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^9.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "string-width": "^7.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^22.0.0" - }, - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=23" - } - }, - "node_modules/@typespec/compiler/node_modules/yargs-parser": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", - "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=23" - } - }, - "node_modules/@typespec/events": { - "version": "0.80.0", - "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.80.0.tgz", - "integrity": "sha512-FrWEUwxhDNbE2YN4fyqV5Qrz9qFJbvPoiKrJM7dexkb7eyhepq3dbc5zZgAm/qFBQ+XxGQQVJ4swXxKT+338fw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "@typespec/compiler": "^1.10.0" - } - }, - "node_modules/@typespec/http": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.10.0.tgz", - "integrity": "sha512-/fj55fmUj4m/FmNdfH0V52menVrmS2r5Xj9d1H+pnjQbxvvaxS906RSRcoF8kbg3PvlibP/Py5u82TAk53AyqA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "@typespec/compiler": "^1.10.0", - "@typespec/streams": "^0.80.0" - }, - "peerDependenciesMeta": { - "@typespec/streams": { - "optional": true - } - } - }, - "node_modules/@typespec/openapi": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.10.0.tgz", - "integrity": "sha512-tukmyp+c9CFlA2FdF61XfT9eTe5WXWz6J8pOrJ9+IYg0BcBwhJkvDj6BYpDD6SjxbRr1wO5ZL2Whe6MequsyVw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "@typespec/compiler": "^1.10.0", - "@typespec/http": "^1.10.0" - } - }, - "node_modules/@typespec/openapi3": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@typespec/openapi3/-/openapi3-1.10.0.tgz", - "integrity": "sha512-G2UTfsDuUprvhFIymHiLKly6FoA9UkRmTImqgmROP4JkKCdY/Mo6Xo03sufY8urywVjIWE3dryXpy5DjpOt9Eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@scalar/json-magic": "^0.11.5", - "@scalar/openapi-parser": "^0.24.1", - "@scalar/openapi-types": "^0.5.0", - "@typespec/asset-emitter": "^0.79.1", - "yaml": "~2.8.2" - }, - "bin": { - "tsp-openapi3": "cmd/tsp-openapi3.js" - }, - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "@typespec/compiler": "^1.10.0", - "@typespec/events": "^0.80.0", - "@typespec/http": "^1.10.0", - "@typespec/json-schema": "^1.10.0", - "@typespec/openapi": "^1.10.0", - "@typespec/sse": "^0.80.0", - "@typespec/streams": "^0.80.0", - "@typespec/versioning": "^0.80.0" - }, - "peerDependenciesMeta": { - "@typespec/events": { - "optional": true - }, - "@typespec/json-schema": { - "optional": true - }, - "@typespec/sse": { - "optional": true - }, - "@typespec/streams": { - "optional": true - }, - "@typespec/versioning": { - "optional": true - }, - "@typespec/xml": { - "optional": true - } - } - }, - "node_modules/@typespec/prettier-plugin-typespec": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@typespec/prettier-plugin-typespec/-/prettier-plugin-typespec-1.10.0.tgz", - "integrity": "sha512-X4/YjQIxa+uQ4bPrOIcjn6ucIX09SlBWOb8GEwbwqkfZqDvbJEevA2A3OmgI0cyhIndo4PdrkBydWtoK0J0Z+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "prettier": "~3.8.0" - } - }, - "node_modules/@typespec/rest": { - "version": "0.80.0", - "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.80.0.tgz", - "integrity": "sha512-xczXLoB2akSIDner41gQYTS9CG6TdCN0QHYvXBT6ZrYEnBh+pMvdymW//5CSOTamZLOGo9AOJVJaFfwbFA4vQQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "@typespec/compiler": "^1.10.0", - "@typespec/http": "^1.10.0" - } - }, - "node_modules/@typespec/sse": { - "version": "0.80.0", - "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.80.0.tgz", - "integrity": "sha512-/lxYgMaxgEcjBVhep9tf/VnFD2wnkZlkmjUHLeZL8Cuf+qip61Ren6Ml91YtNnnIFYsuuymDzRclrA073ZBR6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "@typespec/compiler": "^1.10.0", - "@typespec/events": "^0.80.0", - "@typespec/http": "^1.10.0", - "@typespec/streams": "^0.80.0" - } - }, - "node_modules/@typespec/streams": { - "version": "0.80.0", - "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.80.0.tgz", - "integrity": "sha512-lNvzrvX/ZRIxRpxIBZu90XNsT+uWsMbLtxHd9edspHAiID3c9WKZbl2fnLcPqdR/60odqKve4yGzB9gF58GUDQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "@typespec/compiler": "^1.10.0" - } - }, - "node_modules/@typespec/ts-http-runtime": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.5.tgz", - "integrity": "sha512-yURCknZhvywvQItHMMmFSo+fq5arCUIyz/CVk7jD89MSai7dkaX8ufjCWp3NttLojoTVbcE72ri+be/TnEbMHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@typespec/versioning": { - "version": "0.80.0", - "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.80.0.tgz", - "integrity": "sha512-WQCT0jN2lSRfwOy+Cd1KUYzenpKR5TdoX0uW6zQdvxQ9nQZIXoaSaReh9/ldhmSV4xv3p2dqF9oq1cdbVGfJTg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "@typespec/compiler": "^1.10.0" - } - }, - "node_modules/@typespec/xml": { - "version": "0.80.0", - "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.80.0.tgz", - "integrity": "sha512-Qfy5eyCcOF3xYOU/dejhpmmeY75U1Q9C8XBE+GvSZ3lakRfKBIpT+X6Q07qmKSAbGYJZKYLWCIAy/dgCuu/OAA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "@typespec/compiler": "^1.10.0" - } - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/ajv": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", - "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ansi-styles/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ansi-styles/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true, - "license": "MIT" - }, - "node_modules/astring": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", - "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", - "dev": true, - "license": "MIT", - "bin": { - "astring": "bin/astring" - } - }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "dev": true, - "license": "MIT" - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/async-retry": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", - "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "retry": "0.13.1" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/autorest": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/autorest/-/autorest-3.8.0.tgz", - "integrity": "sha512-FwpPuDGXuLLnBAR3SCGQcQHPCRoyYXPTMnJ80kN6HRsK+b1/pJ1DtOOzqL4XTCdtq37gth1AoFCerSOwSc3iGQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "autorest": "entrypoints/app.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/azure-rest-api-specs-eng-tools": { - "resolved": "eng/tools", - "link": true - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/basic-ftp": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.3.0.tgz", - "integrity": "sha512-5K9eNNn7ywHPsYnFwjKgYH8Hf8B5emh7JKcPaVjjrMJFQQwGpwowEnZNEtHs7DfR7hCZsmaK3VA4HUK0YarT+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", - "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", - "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "get-intrinsic": "^1.3.0", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-me-maybe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/change-case": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", - "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/change-case-all": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-2.1.0.tgz", - "integrity": "sha512-v6b0WWWkZUMHVuYk82l+WROgkUm4qEN2w5hKRNWtEOYwWqUGoi8C6xH0l1RLF1EoWqDFK6MFclmN3od6ws3/uw==", - "dev": true, - "license": "MIT", - "dependencies": { - "change-case": "^5.2.0", - "sponge-case": "^2.0.2", - "swap-case": "^3.0.2", - "title-case": "^3.0.3" - } - }, - "node_modules/chardet": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", - "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 12" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/color": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/color/-/color-5.0.3.tgz", - "integrity": "sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^3.1.3", - "color-string": "^2.1.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/color-convert": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.1.3.tgz", - "integrity": "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "^2.0.0" - }, - "engines": { - "node": ">=14.6" - } - }, - "node_modules/color-name": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.0.tgz", - "integrity": "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" - } - }, - "node_modules/color-string": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.1.4.tgz", - "integrity": "sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/commonmark": { - "version": "0.31.2", - "resolved": "https://registry.npmjs.org/commonmark/-/commonmark-0.31.2.tgz", - "integrity": "sha512-2fRLTyb9r/2835k5cwcAwOj0DEc44FARnMp5veGsJ+mEAZdi52sNopLu07ZyElQUz058H43whzlERDIaaSw4rg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "entities": "~3.0.1", - "mdurl": "~1.0.1", - "minimist": "~1.2.8" - }, - "bin": { - "commonmark": "bin/commonmark" - }, - "engines": { - "node": "*" - } - }, - "node_modules/component-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", - "dev": true, - "license": "MIT" - }, - "node_modules/data-uri-to-buffer": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", - "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/deepdash": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/deepdash/-/deepdash-5.3.9.tgz", - "integrity": "sha512-GRzJ0q9PDj2T+J2fX+b+TlUa2NlZ11l6vJ8LHNKVGeZ8CfxCuJaCychTq07iDRTvlfO8435jlvVS1QXBrW9kMg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.21", - "lodash-es": "^4.17.21" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/dependency-graph": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-1.0.0.tgz", - "integrity": "sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", - "dev": true, - "license": "ISC", - "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "node_modules/difflib": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", - "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", - "dev": true, - "dependencies": { - "heap": ">= 0.2.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/dotenv": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", - "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/enabled": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/env-paths": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-4.0.0.tgz", - "integrity": "sha512-pxP8eL2SwwaTRi/KHYwLYXinDs7gL3jxFcBYmEdYfZmZXbaVDvdppd0XBU8qVz03rDfKZMXg1omHCbsJjZrMsw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-safe-filename": "^0.1.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/err-code": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", - "integrity": "sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==", - "dev": true, - "license": "MIT" - }, - "node_modules/es-abstract": { - "version": "1.24.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.2.tgz", - "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-aggregate-error": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/es-aggregate-error/-/es-aggregate-error-1.0.14.tgz", - "integrity": "sha512-3YxX6rVb07B5TV11AV5wsL7nQCHXNwoHPsQC8S4AmBiqYhyNCJ5BRKXkXyDJvs8QzXN20NgRtxe3dEEQD9NLHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "globalthis": "^1.0.4", - "has-property-descriptors": "^1.0.2", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/expr-eval-fork": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/expr-eval-fork/-/expr-eval-fork-3.0.3.tgz", - "integrity": "sha512-BhC+hbc5lIVjygr840n5DEkW3MQq7H9o+mc1/N7Z5uIiCFVyESLL5DIE7LNq4CYUNxy+XjA+3jRrL/h0Kt2xcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-memoize": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", - "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-string-truncated-width": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", - "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-string-width": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", - "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-string-truncated-width": "^3.0.2" - } - }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fast-wrap-ansi": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.0.tgz", - "integrity": "sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-string-width": "^3.0.2" - } - }, - "node_modules/fastq": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", - "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fecha": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", - "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", - "dev": true, - "license": "MIT" - }, - "node_modules/file-js": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/file-js/-/file-js-0.3.0.tgz", - "integrity": "sha512-nZlX1pxpV6Mt8BghM3Z150bpsCT1zqil97UryusstZLSs9caYAe0Wph2UKPC3awfM2Dq4ri1Sv99KuK4EIImlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bluebird": "^3.4.7", - "minimatch": "^3.0.3", - "proper-lockfile": "^1.2.0" - } - }, - "node_modules/file-js/node_modules/proper-lockfile": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-1.2.0.tgz", - "integrity": "sha512-YNjxtCoY3A+lohlLXWCYrHDhUdfU3MMnuC+ADhloDvJo586LKW23dPrjxGvRGuus05Amcf0cQy6vrjjtbJhWpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "err-code": "^1.0.0", - "extend": "^3.0.0", - "graceful-fs": "^4.1.2", - "retry": "^0.10.0" - } - }, - "node_modules/file-js/node_modules/retry": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", - "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/file-url": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz", - "integrity": "sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/filehound": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/filehound/-/filehound-1.17.6.tgz", - "integrity": "sha512-5q4zjFkI8W2zLmvbvyvI//K882IpEj6sMNXPUQlk5H6W4Wh3OSSylEAIEmMLELP9G7ileYjTKPXOn0YzzS55Lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "bluebird": "^3.7.2", - "file-js": "0.3.0", - "lodash": "^4.17.21", - "minimatch": "^5.0.0", - "moment": "^2.29.1", - "unit-compare": "^1.0.1" - } - }, - "node_modules/filehound/node_modules/brace-expansion": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", - "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filehound/node_modules/minimatch": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", - "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fn.name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", - "dev": true, - "license": "MIT" - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/foreach": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz", - "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==", - "dev": true, - "license": "MIT" - }, - "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/formidable": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", - "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@paralleldrive/cuid2": "^2.2.2", - "dezalgo": "^1.0.4", - "once": "^1.4.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" - } - }, - "node_modules/front-matter": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", - "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-yaml": "^3.13.1" - } - }, - "node_modules/front-matter/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/front-matter/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-east-asian-width": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", - "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-uri": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", - "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "basic-ftp": "^5.0.2", - "data-uri-to-buffer": "^6.0.2", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/glob": { - "version": "13.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-16.1.1.tgz", - "integrity": "sha512-dW7vl+yiAJSp6aCekaVnVJxurRv7DCOLyXqEG3RYMYUg7AuJ2jCqPkZTA8ooqC2vtnkaMcV5WfFBMuEnTu1OQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^4.0.0", - "fast-glob": "^3.3.3", - "ignore": "^7.0.5", - "is-path-inside": "^4.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.4.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/graphlib": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", - "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.15" - } - }, - "node_modules/handlebars": { - "version": "4.7.9", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", - "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", - "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/heap": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", - "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", - "dev": true, - "license": "MIT" - }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/immer": { - "version": "9.0.21", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", - "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/inversify": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/inversify/-/inversify-7.11.0.tgz", - "integrity": "sha512-yZDprSSr8TyVeMGI/AOV4ws6gwjX22hj9Z8/oHAVpJORY6WRFTcUzhnZtibBUHEw2U8ArvHcR+i863DplQ3Cwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inversifyjs/common": "1.5.2", - "@inversifyjs/container": "1.15.0", - "@inversifyjs/core": "9.2.0" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", - "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-safe-filename": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-safe-filename/-/is-safe-filename-0.1.1.tgz", - "integrity": "sha512-4SrR7AdnY11LHfDKTZY1u6Ga3RuxZdl3YKWWShO5iyuG5h8QS4GD2tOb04peBJ5I7pXbR+CGBNEhTcwK+FzN3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-unicode-supported": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsep": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsep/-/jsep-1.4.0.tgz", - "integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.16.0" - } - }, - "node_modules/json-pointer": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.2.tgz", - "integrity": "sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "foreach": "^2.0.4" - } - }, - "node_modules/json-refs": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/json-refs/-/json-refs-3.0.15.tgz", - "integrity": "sha512-0vOQd9eLNBL18EGl5yYaO44GhixmImes2wiYn9Z3sag3QnehWrYWlB9AFtMxCL2Bj3fyxgDYkxGFEU/chlYssw==", - "dev": true, - "license": "MIT", - "dependencies": { - "commander": "~4.1.1", - "graphlib": "^2.1.8", - "js-yaml": "^3.13.1", - "lodash": "^4.17.15", - "native-promise-only": "^0.8.1", - "path-loader": "^1.0.10", - "slash": "^3.0.0", - "uri-js": "^4.2.2" - }, - "bin": { - "json-refs": "bin/json-refs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/json-refs/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/json-refs/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-refs/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jsonc-parser": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz", - "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jsonpath-plus": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-10.4.0.tgz", - "integrity": "sha512-T92WWatJXmhBbKsgH/0hl+jxjdXrifi5IKeMY02DWggRxX0UElcbVzPlmgLTbvsPeW1PasQ6xE2Q75stkhGbsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jsep-plugin/assignment": "^1.3.0", - "@jsep-plugin/regex": "^1.0.4", - "jsep": "^1.4.0" - }, - "bin": { - "jsonpath": "bin/jsonpath-cli.js", - "jsonpath-plus": "bin/jsonpath-cli.js" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/jsonpointer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", - "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kuler": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", - "dev": true, - "license": "MIT" - }, - "node_modules/leven": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-4.1.0.tgz", - "integrity": "sha512-KZ9W9nWDT7rF7Dazg8xyLHGLrmpgq2nVNFUckhqdW3szVP6YhCpp/RAnpmVExA9JvrMynjwSLVrEj3AepHR6ew==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash-es": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.18.1.tgz", - "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.topath": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz", - "integrity": "sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==", - "dev": true, - "license": "MIT" - }, - "node_modules/logform": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz", - "integrity": "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@colors/colors": "1.6.0", - "@types/triple-beam": "^1.3.2", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "safe-stable-stringify": "^2.3.1", - "triple-beam": "^1.3.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/logform/node_modules/safe-stable-stringify": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", - "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/lru-cache": { - "version": "11.3.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.5.tgz", - "integrity": "sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/marked": { - "version": "15.0.12", - "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", - "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==", - "dev": true, - "license": "MIT", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/md5-file": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-5.0.0.tgz", - "integrity": "sha512-xbEFXCYVWrSx/gEKS1VPlg84h/4L20znVIulKw6kMfmBUAZNAnF00eczz9ICMl+/hjQGo5KSXRxbL/47X3rmMw==", - "dev": true, - "license": "MIT", - "bin": { - "md5-file": "cli.js" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minizlib": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", - "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.1.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/moment": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", - "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/mustache": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", - "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", - "dev": true, - "license": "MIT", - "bin": { - "mustache": "bin/mustache" - } - }, - "node_modules/mute-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz", - "integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/native-promise-only": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", - "integrity": "sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "license": "MIT" - }, - "node_modules/nimma": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/nimma/-/nimma-0.2.3.tgz", - "integrity": "sha512-1ZOI8J+1PKKGceo/5CT5GfQOG6H8I2BencSK06YarZ2wXwH37BSSUWldqJmMJYA5JfqDqffxDXynt6f11AyKcA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jsep-plugin/regex": "^1.0.1", - "@jsep-plugin/ternary": "^1.0.2", - "astring": "^1.8.1", - "jsep": "^1.2.0" - }, - "engines": { - "node": "^12.20 || >=14.13" - }, - "optionalDependencies": { - "jsonpath-plus": "^6.0.1 || ^10.1.0", - "lodash.topath": "^4.5.2" - } - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-object-hash": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/node-object-hash/-/node-object-hash-3.1.1.tgz", - "integrity": "sha512-A32kRGjXtwQ+uSa3GrXiCl8HVFY0Jy6IiKFO7UjagAKSaOOrruxB2Qf/w7TP5QtNfB3uOiHTu3cjhp8k/C0PCg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16", - "pnpm": ">=8" - } - }, - "node_modules/oav": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/oav/-/oav-4.0.3.tgz", - "integrity": "sha512-6Vouy5qHNc0v3oDojsmknGDcHmV9atZwH6PkRJp49qmkFpx9Oo/pM16+HIvmYVK0XLsoAUtgohFFxvTFv/dC1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@apidevtools/swagger-parser": "^12.0.0", - "@autorest/schemas": "^1.3.4", - "@azure-tools/openapi-tools-common": "^1.2.2", - "@azure/ms-rest-js": "^2.7.0", - "@azure/openapi-markdown": "0.9.4", - "ajv": "^6.12.6", - "commonmark": "0.31.2", - "deepdash": "^5.3.2", - "difflib": "0.2.4", - "fast-json-stable-stringify": "^2.1.0", - "glob": "^13.0.0", - "inversify": "^7.10.1", - "js-yaml": "^4.1.0", - "json-pointer": "0.6.2", - "json-schema-traverse": "0.4.1", - "jsonpath-plus": "^10.3.0", - "lodash": "^4.17.21", - "md5-file": "^5.0.0", - "mustache": "^4.2.0", - "path-to-regexp": "^6.2.1", - "reflect-metadata": "0.2.2", - "toposort": "^2.0.2", - "winston": "^3.17.0", - "yargs": "^15.4.1" - }, - "bin": { - "oav": "dist/cli.js" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/oav/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/oav/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/oav/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/oav/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/oav/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/oav/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/oav/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/one-time": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fn.name": "1.x.x" - } - }, - "node_modules/openapi-types": { - "version": "12.1.3", - "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", - "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-loader": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/path-loader/-/path-loader-1.0.12.tgz", - "integrity": "sha512-n7oDG8B+k/p818uweWrOixY9/Dsr89o2TkCm6tOTex3fpdo2+BFDgR+KpB37mGKBRsBAlR8CIJMFN0OEy/7hIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "native-promise-only": "^0.8.1", - "superagent": "^7.1.6" - } - }, - "node_modules/path-scurry": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", - "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-to-regexp": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", - "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/pony-cause": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-1.1.1.tgz", - "integrity": "sha512-PxkIc/2ZpLiEzQXu5YRDOUgBlfGYBY8156HY5ZcRAwwonMk5W/MrJP2LLkG/hF7GEQzaHo2aS7ho6ZLCOvf+6g==", - "dev": true, - "license": "0BSD", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/prettier": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", - "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prompt-sync": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/prompt-sync/-/prompt-sync-4.2.0.tgz", - "integrity": "sha512-BuEzzc5zptP5LsgV5MZETjDaKSWfchl5U9Luiu8SKp7iZWD5tZalOxvNcZRwv+d2phNFr8xlbxmFNcRKfJOzJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "strip-ansi": "^5.0.0" - } - }, - "node_modules/proper-lockfile": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-2.0.1.tgz", - "integrity": "sha512-rjaeGbsmhNDcDInmwi4MuI6mRwJu6zq8GjYCLuSuE7GF+4UjgzkL69sVKKJ2T2xH61kK7rXvGYpvaTu909oXaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "retry": "^0.10.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/proper-lockfile/node_modules/retry": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", - "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.15.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", - "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/reflect-metadata": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", - "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true, - "license": "ISC" - }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.4.tgz", - "integrity": "sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.9", - "call-bound": "^1.0.4", - "get-intrinsic": "^1.3.0", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-stable-stringify": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz", - "integrity": "sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw==", - "dev": true, - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/sax": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", - "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=11.0.0" - } - }, - "node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true, - "license": "ISC" - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", - "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/simple-git": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.36.0.tgz", - "integrity": "sha512-cGQjLjK8bxJw4QuYT7gxHw3/IouVESbhahSsHrX97MzCL1gu2u7oy38W6L2ZIGECEfIBG4BabsWDPjBxJENv9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@kwsites/file-exists": "^1.1.1", - "@kwsites/promise-deferred": "^1.1.1", - "@simple-git/args-pathspec": "^1.0.3", - "@simple-git/argv-parser": "^1.1.0", - "debug": "^4.4.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/steveukx/git-js?sponsor=1" - } - }, - "node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/source-map": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", - "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 12" - } - }, - "node_modules/sponge-case": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/sponge-case/-/sponge-case-2.0.3.tgz", - "integrity": "sha512-i4h9ZGRfxV6Xw3mpZSFOfbXjf0cQcYmssGWutgNIfFZ2VM+YIWfD71N/kjjwK6X/AAHzBr+rciEcn/L34S8TGw==", - "dev": true, - "license": "MIT" - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", - "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "regexp.prototype.flags": "^1.5.3", - "set-function-name": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.repeat": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz", - "integrity": "sha512-1BH+X+1hSthZFW+X+JaUkjkkUPwIlLEMJBLANN3hOob3RhEk5snLWNECDnYbgn/m5c5JV7Ersu1Yubaf+05cIA==", - "dev": true - }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/superagent": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-10.3.0.tgz", - "integrity": "sha512-B+4Ik7ROgVKrQsXTV0Jwp2u+PXYLSlqtDAhYnkkD+zn3yg8s/zjA2MeGayPoY/KICrbitwneDHrjSotxKL+0XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "component-emitter": "^1.3.1", - "cookiejar": "^2.1.4", - "debug": "^4.3.7", - "fast-safe-stringify": "^2.1.1", - "form-data": "^4.0.5", - "formidable": "^3.5.4", - "methods": "^1.1.2", - "mime": "2.6.0", - "qs": "^6.14.1" - }, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/swap-case": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-3.0.3.tgz", - "integrity": "sha512-6p4op8wE9CQv7uDFzulI6YXUw4lD9n4oQierdbFThEKVWVQcbQcUjdP27W8XE7V4QnWmnq9jueSHceyyQnqQVA==", - "dev": true, - "license": "MIT" - }, - "node_modules/tar": { - "version": "7.5.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.13.tgz", - "integrity": "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.1.0", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/temporal-polyfill": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/temporal-polyfill/-/temporal-polyfill-0.3.2.tgz", - "integrity": "sha512-TzHthD/heRK947GNiSu3Y5gSPpeUDH34+LESnfsq8bqpFhsB79HFBX8+Z834IVX68P3EUyRPZK5bL/1fh437Eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "temporal-spec": "0.3.1" - } - }, - "node_modules/temporal-spec": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/temporal-spec/-/temporal-spec-0.3.1.tgz", - "integrity": "sha512-B4TUhezh9knfSIMwt7RVggApDRJZo73uZdj8AacL2mZ8RP5KtLianh2MXxL06GN9ESYiIsiuoLQhgVfwe55Yhw==", - "dev": true, - "license": "ISC" - }, - "node_modules/text-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", - "dev": true, - "license": "MIT" - }, - "node_modules/title-case": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz", - "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toposort": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", - "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", - "dev": true, - "license": "MIT" - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/triple-beam": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", - "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/uglify-js": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", - "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici-types": { - "version": "7.19.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz", - "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==", - "extraneous": true, - "license": "MIT" - }, - "node_modules/unicorn-magic": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.0.tgz", - "integrity": "sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/unit-compare": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unit-compare/-/unit-compare-1.0.1.tgz", - "integrity": "sha512-AeLMQr8gcen2WOTwV0Gvi1nKKbY4Mms79MoltZ6hrZV/VANgE/YQly3jtWZJA/fa9m4ajhynq3XMqh5rOyZclA==", - "dev": true, - "license": "ISC", - "dependencies": { - "moment": "^2.14.1" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urijs": { - "version": "1.19.11", - "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", - "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, - "license": "MIT" - }, - "node_modules/utility-types": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", - "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/vscode-jsonrpc": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-3.6.2.tgz", - "integrity": "sha512-T24Jb5V48e4VgYliUXMnZ379ItbrXgOimweKaJshD84z+8q7ZOZjJan0MeDe+Ugb+uqERDVV8SBmemaGMSMugA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0.0 || >=6.0.0" - } - }, - "node_modules/vscode-languageserver": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", - "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "vscode-languageserver-protocol": "3.17.5" - }, - "bin": { - "installServerIntoExtension": "bin/installServerIntoExtension" - } - }, - "node_modules/vscode-languageserver-protocol": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", - "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", - "dev": true, - "license": "MIT", - "dependencies": { - "vscode-jsonrpc": "8.2.0", - "vscode-languageserver-types": "3.17.5" - } - }, - "node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", - "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", - "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", - "dev": true, - "license": "MIT" - }, - "node_modules/vscode-languageserver-types": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", - "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", - "dev": true, - "license": "MIT" - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/which-typed-array": { - "version": "1.1.20", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", - "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/winston": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.19.0.tgz", - "integrity": "sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@colors/colors": "^1.6.0", - "@dabh/diagnostics": "^2.0.8", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "logform": "^2.7.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "safe-stable-stringify": "^2.3.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.9.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/winston-transport": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.9.0.tgz", - "integrity": "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "logform": "^2.7.0", - "readable-stream": "^3.6.2", - "triple-beam": "^1.3.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/winston/node_modules/safe-stable-stringify": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", - "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/xml2js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", - "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/yaml": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", - "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", - "dev": true, - "license": "ISC", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - }, - "funding": { - "url": "https://github.com/sponsors/eemeli" - } - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/zod": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", - "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - } - } -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/package.json b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/package.json deleted file mode 100644 index 9b0af8bcd6e..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "azure-rest-api-specs", - "devDependencies": { - "@azure-tools/typespec-autorest": "0.66.0", - "@azure-tools/typespec-azure-core": "0.66.0", - "@azure-tools/typespec-azure-resource-manager": "0.66.0", - "@azure-tools/typespec-azure-rulesets": "0.66.0", - "@azure-tools/typespec-client-generator-cli": "0.31.0", - "@azure-tools/typespec-client-generator-core": "0.66.3", - "@typespec/compiler": "1.10.0", - "@typespec/http": "1.10.0", - "@typespec/openapi": "1.10.0", - "@typespec/openapi3": "1.10.0", - "@typespec/rest": "0.80.0", - "@typespec/versioning": "0.80.0" - }, - "overrides": { - "@typespec/asset-emitter": "0.79.1", - "get-uri": "^6.0.5", - "minimatch@^3.0.0": "^3.1.5", - "superagent": "^10.2.3" - }, - "engines": { - "node": ">=20.0.0", - "npm": ">=10.0.0" - }, - "private": true -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json deleted file mode 100644 index c01461386bc..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/preview/2024-10-01-preview/widget.json +++ /dev/null @@ -1,692 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "Widget", - "version": "2024-10-01-preview", - "description": "Microsoft.Widget Resource Provider management API.", - "x-typespec-generated": [ - { - "emitter": "@azure-tools/typespec-autorest" - } - ] - }, - "schemes": [ - "https" - ], - "host": "management.azure.com", - "produces": [ - "application/json" - ], - "consumes": [ - "application/json" - ], - "security": [ - { - "azure_auth": [ - "user_impersonation" - ] - } - ], - "securityDefinitions": { - "azure_auth": { - "type": "oauth2", - "description": "Azure Active Directory OAuth2 Flow.", - "flow": "implicit", - "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", - "scopes": { - "user_impersonation": "impersonate your user account" - } - } - }, - "tags": [ - { - "name": "Operations" - }, - { - "name": "Employees" - } - ], - "paths": { - "/providers/Microsoft.Widget/operations": { - "get": { - "operationId": "Operations_List", - "tags": [ - "Operations" - ], - "description": "List the operations for the provider", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/OperationListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/providers/Microsoft.Widget/employees": { - "get": { - "operationId": "Employees_ListBySubscription", - "tags": [ - "Employees" - ], - "description": "List Employee resources by subscription ID", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/EmployeeListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees": { - "get": { - "operationId": "Employees_ListByResourceGroup", - "tags": [ - "Employees" - ], - "description": "List Employee resources by resource group", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/EmployeeListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}": { - "get": { - "operationId": "Employees_Get", - "tags": [ - "Employees" - ], - "description": "Get a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - }, - "put": { - "operationId": "Employees_CreateOrUpdate", - "tags": [ - "Employees" - ], - "description": "Create a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - }, - { - "name": "resource", - "in": "body", - "description": "Resource create parameters.", - "required": true, - "schema": { - "$ref": "#/definitions/Employee" - } - } - ], - "responses": { - "200": { - "description": "Resource 'Employee' update operation succeeded", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "201": { - "description": "Resource 'Employee' create operation succeeded", - "schema": { - "$ref": "#/definitions/Employee" - }, - "headers": { - "Azure-AsyncOperation": { - "type": "string", - "description": "A link to the status monitor" - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "azure-async-operation" - }, - "x-ms-long-running-operation": true - }, - "patch": { - "operationId": "Employees_Update", - "tags": [ - "Employees" - ], - "description": "Update a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - }, - { - "name": "properties", - "in": "body", - "description": "The resource properties to be updated.", - "required": true, - "schema": { - "$ref": "#/definitions/EmployeeUpdate" - } - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - }, - "delete": { - "operationId": "Employees_Delete", - "tags": [ - "Employees" - ], - "description": "Delete a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "202": { - "description": "Resource deletion accepted.", - "headers": { - "Location": { - "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "204": { - "description": "Resource does not exist." - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "location" - }, - "x-ms-long-running-operation": true - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}/exportData": { - "post": { - "operationId": "Employees_ExportData", - "tags": [ - "Employees" - ], - "description": "Export employee data", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/ExportResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - } - } - }, - "definitions": { - "Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate": { - "type": "object", - "description": "Managed service identity (system assigned and/or user assigned identities)", - "properties": { - "type": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentityType", - "description": "The type of managed identity assigned to this resource." - }, - "userAssignedIdentities": { - "type": "object", - "description": "The identities assigned to this resource by the user.", - "additionalProperties": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/UserAssignedIdentity", - "x-nullable": true - } - } - } - }, - "Azure.ResourceManager.CommonTypes.TrackedResourceUpdate": { - "type": "object", - "title": "Tracked Resource", - "description": "The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'", - "properties": { - "tags": { - "type": "object", - "description": "Resource tags.", - "additionalProperties": { - "type": "string" - } - } - }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/Resource" - } - ] - }, - "Employee": { - "type": "object", - "description": "Employee resource", - "properties": { - "properties": { - "$ref": "#/definitions/EmployeeProperties", - "description": "The resource-specific properties for this resource." - }, - "identity": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentity", - "description": "The managed service identities assigned to this resource." - } - }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/TrackedResource" - } - ] - }, - "EmployeeListResult": { - "type": "object", - "description": "The response of a Employee list operation.", - "properties": { - "value": { - "type": "array", - "description": "The Employee items on this page", - "items": { - "$ref": "#/definitions/Employee" - } - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "required": [ - "value" - ] - }, - "EmployeeProperties": { - "type": "object", - "description": "Employee properties", - "properties": { - "age": { - "type": "integer", - "format": "int32", - "description": "Age of employee" - }, - "city": { - "type": "string", - "description": "City of employee" - }, - "email": { - "type": "string", - "description": "Email of employee" - }, - "department": { - "type": "string", - "description": "Department of employee" - }, - "statusCode": { - "type": "string", - "description": "Status code of employee" - }, - "profile": { - "type": "string", - "format": "base64url", - "description": "Profile of employee" - }, - "assets": { - "type": "array", - "description": "The assets belong to the employee.", - "items": { - "type": "string" - } - }, - "provisioningState": { - "$ref": "#/definitions/ProvisioningState", - "description": "The status of the last operation.", - "readOnly": true - } - }, - "required": [ - "assets" - ] - }, - "EmployeePropertiesUpdate": { - "type": "object", - "description": "Employee properties", - "properties": { - "age": { - "type": "integer", - "format": "int32", - "description": "Age of employee" - }, - "city": { - "type": "string", - "description": "City of employee" - }, - "email": { - "type": "string", - "description": "Email of employee" - }, - "department": { - "type": "string", - "description": "Department of employee" - }, - "statusCode": { - "type": "string", - "description": "Status code of employee" - }, - "profile": { - "type": "string", - "format": "base64url", - "description": "Profile of employee" - }, - "assets": { - "type": "array", - "description": "The assets belong to the employee.", - "items": { - "type": "string" - } - } - } - }, - "EmployeeUpdate": { - "type": "object", - "description": "Employee resource", - "properties": { - "properties": { - "$ref": "#/definitions/EmployeePropertiesUpdate", - "description": "The resource-specific properties for this resource." - }, - "identity": { - "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate", - "description": "The managed service identities assigned to this resource." - } - }, - "allOf": [ - { - "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.TrackedResourceUpdate" - } - ] - }, - "ExportResult": { - "type": "object", - "description": "Export result model", - "properties": { - "data": { - "type": "string", - "description": "Exported data" - } - } - }, - "MoveRequest": { - "type": "object", - "description": "Employee move request", - "properties": { - "from": { - "type": "string", - "description": "The moving from location" - }, - "to": { - "type": "string", - "description": "The moving to location" - } - }, - "required": [ - "from", - "to" - ] - }, - "MoveResponse": { - "type": "object", - "description": "Employee move response", - "properties": { - "movingStatus": { - "type": "string", - "description": "The status of the move" - } - }, - "required": [ - "movingStatus" - ] - }, - "ProvisioningState": { - "type": "string", - "description": "The resource provisioning state.", - "enum": [ - "Succeeded", - "Failed", - "Canceled", - "Provisioning", - "Updating", - "Deleting", - "Accepted" - ], - "x-ms-enum": { - "name": "ProvisioningState", - "modelAsString": true, - "values": [ - { - "name": "Succeeded", - "value": "Succeeded", - "description": "Resource has been created." - }, - { - "name": "Failed", - "value": "Failed", - "description": "Resource creation failed." - }, - { - "name": "Canceled", - "value": "Canceled", - "description": "Resource creation was canceled." - }, - { - "name": "Provisioning", - "value": "Provisioning", - "description": "The resource is being provisioned" - }, - { - "name": "Updating", - "value": "Updating", - "description": "The resource is updating" - }, - { - "name": "Deleting", - "value": "Deleting", - "description": "The resource is being deleted" - }, - { - "name": "Accepted", - "value": "Accepted", - "description": "The resource create request has been accepted" - } - ] - }, - "readOnly": true - } - }, - "parameters": {} -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/readme.md b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/readme.md deleted file mode 100644 index 4cc6209ca17..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/readme.md +++ /dev/null @@ -1,45 +0,0 @@ -# Widget - -> see https://aka.ms/autorest - -This is the AutoRest configuration file for Widget. - -## Configuration - -### Basic Information - -This is a TypeSpec project so we only want to readme to default the default tag and point to the outputted swagger file. -This is used for some tools such as doc generation and swagger apiview generation it isn't used for SDK code gen as we -use the native TypeSpec code generation configured in the tspconfig.yaml file. - -```yaml -openapi-type: arm -openapi-subtype: rpaas -tag: package-2021-11-01 -``` - -### Tag: package-2021-11-01 - -These settings apply only when `--tag=package-2021-11-01` is specified on the command line. - -```yaml $(tag) == 'package-2021-11-01' -input-file: - - stable/2021-11-01/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - -### Tag: package-2021-10-01-preview - -These settings apply only when `--tag=package-2021-10-01-preview` is specified on the command line. - -```yaml $(tag) == 'package-2021-10-01-preview' -input-file: - - preview/2021-10-01-preview/widget.json -suppressions: - - code: PathContainsResourceType - - code: PathResourceProviderMatchNamespace -``` - ---- \ No newline at end of file diff --git a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/shared.tsp b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/shared.tsp deleted file mode 100644 index 1b94bb70503..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/shared.tsp +++ /dev/null @@ -1,8 +0,0 @@ -@doc("Faked shared model") -model FakedSharedModel { - @doc("The tag.") - tag: string; - - @doc("The created date.") - createdAt: utcDateTime; -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json deleted file mode 100644 index 512734611ba..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/stable/2021-11-01/widget.json +++ /dev/null @@ -1,692 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "Widget", - "version": "2021-11-01", - "description": "Microsoft.Widget Resource Provider management API.", - "x-typespec-generated": [ - { - "emitter": "@azure-tools/typespec-autorest" - } - ] - }, - "schemes": [ - "https" - ], - "host": "management.azure.com", - "produces": [ - "application/json" - ], - "consumes": [ - "application/json" - ], - "security": [ - { - "azure_auth": [ - "user_impersonation" - ] - } - ], - "securityDefinitions": { - "azure_auth": { - "type": "oauth2", - "description": "Azure Active Directory OAuth2 Flow.", - "flow": "implicit", - "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", - "scopes": { - "user_impersonation": "impersonate your user account" - } - } - }, - "tags": [ - { - "name": "Operations" - }, - { - "name": "Employees" - } - ], - "paths": { - "/providers/Microsoft.Widget/operations": { - "get": { - "operationId": "Operations_List", - "tags": [ - "Operations" - ], - "description": "List the operations for the provider", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/OperationListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/providers/Microsoft.Widget/employees": { - "get": { - "operationId": "Employees_ListBySubscription", - "tags": [ - "Employees" - ], - "description": "List Employee resources by subscription ID", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/EmployeeListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees": { - "get": { - "operationId": "Employees_ListByResourceGroup", - "tags": [ - "Employees" - ], - "description": "List Employee resources by resource group", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/EmployeeListResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}": { - "get": { - "operationId": "Employees_Get", - "tags": [ - "Employees" - ], - "description": "Get a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - }, - "put": { - "operationId": "Employees_CreateOrUpdate", - "tags": [ - "Employees" - ], - "description": "Create a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - }, - { - "name": "resource", - "in": "body", - "description": "Resource create parameters.", - "required": true, - "schema": { - "$ref": "#/definitions/Employee" - } - } - ], - "responses": { - "200": { - "description": "Resource 'Employee' update operation succeeded", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "201": { - "description": "Resource 'Employee' create operation succeeded", - "schema": { - "$ref": "#/definitions/Employee" - }, - "headers": { - "Azure-AsyncOperation": { - "type": "string", - "description": "A link to the status monitor" - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "azure-async-operation" - }, - "x-ms-long-running-operation": true - }, - "patch": { - "operationId": "Employees_Update", - "tags": [ - "Employees" - ], - "description": "Update a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - }, - { - "name": "properties", - "in": "body", - "description": "The resource properties to be updated.", - "required": true, - "schema": { - "$ref": "#/definitions/EmployeeUpdate" - } - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/Employee" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - }, - "delete": { - "operationId": "Employees_Delete", - "tags": [ - "Employees" - ], - "description": "Delete a Employee", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "202": { - "description": "Resource deletion accepted.", - "headers": { - "Location": { - "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, - "204": { - "description": "Resource does not exist." - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "location" - }, - "x-ms-long-running-operation": true - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Widget/employees/{employeeName}/exportData": { - "post": { - "operationId": "Employees_ExportData", - "tags": [ - "Employees" - ], - "description": "Export employee data", - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "name": "employeeName", - "in": "path", - "description": "The name of the Employee", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z0-9-]{3,24}$" - } - ], - "responses": { - "200": { - "description": "Azure operation completed successfully.", - "schema": { - "$ref": "#/definitions/ExportResult" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/ErrorResponse" - } - } - } - } - } - }, - "definitions": { - "Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate": { - "type": "object", - "description": "Managed service identity (system assigned and/or user assigned identities)", - "properties": { - "type": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentityType", - "description": "The type of managed identity assigned to this resource." - }, - "userAssignedIdentities": { - "type": "object", - "description": "The identities assigned to this resource by the user.", - "additionalProperties": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/UserAssignedIdentity", - "x-nullable": true - } - } - } - }, - "Azure.ResourceManager.CommonTypes.TrackedResourceUpdate": { - "type": "object", - "title": "Tracked Resource", - "description": "The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'", - "properties": { - "tags": { - "type": "object", - "description": "Resource tags.", - "additionalProperties": { - "type": "string" - } - } - }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/Resource" - } - ] - }, - "Employee": { - "type": "object", - "description": "Employee resource", - "properties": { - "properties": { - "$ref": "#/definitions/EmployeeProperties", - "description": "The resource-specific properties for this resource." - }, - "identity": { - "$ref": "../../../../../../common-types/resource-management/v5/managedidentity.json#/definitions/ManagedServiceIdentity", - "description": "The managed service identities assigned to this resource." - } - }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v5/types.json#/definitions/TrackedResource" - } - ] - }, - "EmployeeListResult": { - "type": "object", - "description": "The response of a Employee list operation.", - "properties": { - "value": { - "type": "array", - "description": "The Employee items on this page", - "items": { - "$ref": "#/definitions/Employee" - } - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "required": [ - "value" - ] - }, - "EmployeeProperties": { - "type": "object", - "description": "Employee properties", - "properties": { - "age": { - "type": "integer", - "format": "int32", - "description": "Age of employee" - }, - "city": { - "type": "string", - "description": "City of employee" - }, - "email": { - "type": "string", - "description": "Email of employee" - }, - "department": { - "type": "string", - "description": "Department of employee" - }, - "statusCode": { - "type": "string", - "description": "Status code of employee" - }, - "profile": { - "type": "string", - "format": "base64url", - "description": "Profile of employee" - }, - "assets": { - "type": "array", - "description": "The assets belong to the employee.", - "items": { - "type": "string" - } - }, - "provisioningState": { - "$ref": "#/definitions/ProvisioningState", - "description": "The status of the last operation.", - "readOnly": true - } - }, - "required": [ - "assets" - ] - }, - "EmployeePropertiesUpdate": { - "type": "object", - "description": "Employee properties", - "properties": { - "age": { - "type": "integer", - "format": "int32", - "description": "Age of employee" - }, - "city": { - "type": "string", - "description": "City of employee" - }, - "email": { - "type": "string", - "description": "Email of employee" - }, - "department": { - "type": "string", - "description": "Department of employee" - }, - "statusCode": { - "type": "string", - "description": "Status code of employee" - }, - "profile": { - "type": "string", - "format": "base64url", - "description": "Profile of employee" - }, - "assets": { - "type": "array", - "description": "The assets belong to the employee.", - "items": { - "type": "string" - } - } - } - }, - "EmployeeUpdate": { - "type": "object", - "description": "Employee resource", - "properties": { - "properties": { - "$ref": "#/definitions/EmployeePropertiesUpdate", - "description": "The resource-specific properties for this resource." - }, - "identity": { - "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.ManagedServiceIdentityUpdate", - "description": "The managed service identities assigned to this resource." - } - }, - "allOf": [ - { - "$ref": "#/definitions/Azure.ResourceManager.CommonTypes.TrackedResourceUpdate" - } - ] - }, - "ExportResult": { - "type": "object", - "description": "Export result model", - "properties": { - "data": { - "type": "string", - "description": "Exported data" - } - } - }, - "MoveRequest": { - "type": "object", - "description": "Employee move request", - "properties": { - "from": { - "type": "string", - "description": "The moving from location" - }, - "to": { - "type": "string", - "description": "The moving to location" - } - }, - "required": [ - "from", - "to" - ] - }, - "MoveResponse": { - "type": "object", - "description": "Employee move response", - "properties": { - "movingStatus": { - "type": "string", - "description": "The status of the move" - } - }, - "required": [ - "movingStatus" - ] - }, - "ProvisioningState": { - "type": "string", - "description": "The resource provisioning state.", - "enum": [ - "Succeeded", - "Failed", - "Canceled", - "Provisioning", - "Updating", - "Deleting", - "Accepted" - ], - "x-ms-enum": { - "name": "ProvisioningState", - "modelAsString": true, - "values": [ - { - "name": "Succeeded", - "value": "Succeeded", - "description": "Resource has been created." - }, - { - "name": "Failed", - "value": "Failed", - "description": "Resource creation failed." - }, - { - "name": "Canceled", - "value": "Canceled", - "description": "Resource creation was canceled." - }, - { - "name": "Provisioning", - "value": "Provisioning", - "description": "The resource is being provisioned" - }, - { - "name": "Updating", - "value": "Updating", - "description": "The resource is updating" - }, - { - "name": "Deleting", - "value": "Deleting", - "description": "The resource is being deleted" - }, - { - "name": "Accepted", - "value": "Accepted", - "description": "The resource create request has been accepted" - } - ] - }, - "readOnly": true - } - }, - "parameters": {} -} diff --git a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/tspconfig.yaml b/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/tspconfig.yaml deleted file mode 100644 index 9c97da201c0..00000000000 --- a/.github/azure-typespec-author/evaluate/fixtures/Microsoft.Widget/Widget/tspconfig.yaml +++ /dev/null @@ -1,44 +0,0 @@ -parameters: - "service-dir": - default: "sdk/widget" -emit: - - "@azure-tools/typespec-autorest" -options: - "@azure-tools/typespec-autorest": - use-read-only-status-schema: true - emitter-output-dir: "{project-root}" - output-file: "{version-status}/{version}/widget.json" - arm-types-dir: "{project-root}/../../../../common-types/resource-management" - "@azure-typespec/http-client-csharp-mgmt": - namespace: "Azure.ResourceManager.Widget" - emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" - "@azure-tools/typespec-python": - emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-widget" - namespace: "azure.mgmt.widget" - generate-test: true - generate-sample: true - flavor: "azure" - "@azure-tools/typespec-java": - emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-widget" - namespace: "com.azure.resourcemanager.widget" - service-name: "Widget" # human-readable service name, whitespace allowed - flavor: azure - "@azure-tools/typespec-ts": - emitter-output-dir: "{output-dir}/{service-dir}/arm-widget" - flavor: azure - experimental-extensible-enums: true - package-details: - name: "@azure/arm-widget" - "@azure-tools/typespec-go": - service-dir: "sdk/resourcemanager/widget" - emitter-output-dir: "{output-dir}/{service-dir}/armwidget" - module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armwidget" - fix-const-stuttering: true - flavor: "azure" - generate-samples: true - generate-fakes: true - head-as-boolean: true - inject-spans: true -linter: - extends: - - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/.github/azure-typespec-author/references/agentic-search.md b/.github/azure-typespec-author/references/agentic-search.md deleted file mode 100644 index e9bcf0f37b6..00000000000 --- a/.github/azure-typespec-author/references/agentic-search.md +++ /dev/null @@ -1,15 +0,0 @@ -# Agentic Search - -Procedure for fetching external documentation and extracting actionable guidance. - -## Input - -A set of document URLs to fetch (provided by the caller). - -## Procedure - -1. **Fetch documents** — use `web_fetch` to download each URL. Extract the page content as markdown. -2. **Search content** — read the downloaded content and identify instructions, code examples, and patterns relevant to the current task. -3. **Build authoring plan** — synthesize the extracted content into a concrete authoring plan grounded in the fetched material. - -> Do not proceed without an authoring plan grounded in the fetched reference material. diff --git a/.github/azure-typespec-author/references/analyze-project-and-classify-task.md b/.github/azure-typespec-author/references/analyze-project-and-classify-task.md deleted file mode 100644 index bf09a8eebae..00000000000 --- a/.github/azure-typespec-author/references/analyze-project-and-classify-task.md +++ /dev/null @@ -1,62 +0,0 @@ -# Analyze Project & Classify Task - -## Part 1 — Analyze Project - -Collect the inputs below from the TypeSpec project. Ask **up to 6 concise questions** for any that are missing. - -| # | Input | Example | -| --- | --------------------------- | ---------------------------------------------------------------- | -| 1 | TypeSpec project root | `/specification/widget/resource-manager/Microsoft.Widget/Widget` | -| 2 | Path to `tspconfig.yaml` | `/tspconfig.yaml` | -| 3 | Service type | ARM / data-plane | -| 4 | Existing API versions | `2024-01-01 (stable)`, `2024-06-01-preview` | -| 5 | Latest API version | Most recent entry in the `Versions` enum | -| 6 | Current working API version | The version being added or modified this session | -| 7 | Intent | add / modify / fix | -| 8 | Target resource/interface | Resource or operation name (if known) | -| 9 | Constraints | Breaking-change limits, naming rules, emitter targets, etc. | - -## Part 2 — Classify Task - -> **CRITICAL:** Classify into exactly one task type below and state your classification **before** proceeding to Step 2. - -### Definitions - -| Type | What it means | Tool Restriction | -| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | -| **API Version Evolution** | Adding a new preview or stable API version to an existing ARM service. Data-plane API version evolution is not fully supported yet. | **MUST NOT** call `azsdk_typespec_generate_authoring_plan`. Uses web-fetched docs only. | -| **General Authoring** | Any other TypeSpec authoring task that modifies `.tsp` files (resources, operations, models, properties, etc.) | **MUST** call `azsdk_typespec_generate_authoring_plan` in Step 3. | - -### How to Classify - -**API Version Evolution** — any request whose **primary intent** is to introduce a new API version string. -Keyword patterns: - -- _"add a new … API version"_, _"new preview version"_, _"new stable version"_ -- _"bump API version"_, _"introduce version"_, _"add … preview"_, _"add … stable"_ - -**General Authoring** — everything else that modifies `.tsp` files **without** introducing a new API version. - -### Example Prompts - -| Type | Examples | -| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **API Version Evolution** | "Add a new preview API version 2026-01-01-preview for widget resource manager", "Add preview version 2025-06-01-preview", "Bump to stable version 2026-01-01 for Microsoft.Widget", "Introduce a new preview API version for Foo" | -| **General Authoring** | "Add an ARM resource named Asset with CRUD operations", "Add a new property to the Widget model" | - -## Output - -Display the results before proceeding: - -``` -TypeSpec project root: /path/to/project -tspconfig.yaml: /path/to/project/tspconfig.yaml -Service Type: ARM -API Versions: 2024-01-01 (stable), 2024-06-01-preview (preview) -Latest Version: 2024-06-01-preview -Working Version: [TBD] -Intent: [add/modify/fix] -Target: [resource/operation if known] -Constraints: [if any] -Task Type: [API Version Evolution | General Authoring] -``` diff --git a/.github/azure-typespec-author/references/api-version-evolution.md b/.github/azure-typespec-author/references/api-version-evolution.md deleted file mode 100644 index f6c345f0d3b..00000000000 --- a/.github/azure-typespec-author/references/api-version-evolution.md +++ /dev/null @@ -1,31 +0,0 @@ -# API Version Evolution — Reference - -**MUST NOT** call `azsdk_typespec_generate_authoring_plan` for API Version Evolution tasks. - ---- - -## Step 2: Intake - -Search using [agentic search](agentic-search.md) in below documents to determine information needed from user. - -- MUST collect information from user rather than making assumptions. -- MUST use a user friendly way to collect information. - e.g. you MUST List features from latest version and let user select which to carry over vs exclude, rather than assume user wants to carry over all features. - - | Doc | Guide URL | - | ------------------------ | --------------------------------------------------------------------------------------------- | - | Preview version overview | `https://azure.github.io/typespec-azure/docs/howtos/versioning/01-preview-version` | - | preview > preview | `https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/02-preview-after-preview/` | - | preview > stable | `https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/03-stable-after-preview/` | - | stable > preview | `https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/04-preview-after-stable/` | - | stable > stable | `https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/05-stable-after-stable/` | - ---- - -## Step 3: Retrieve Authoring Plan - -1. Build an authoring plan from the fetched guide. Follow its rules for carried-over features and excluded features. Note there should be only one preview version and the preview version should be decorated with `@previewVersion`. - -2. Set up example folder: Copy all `.json` files from the latest version's `examples/` folder into new version's `examples/` folder. Create folder if necessary and update example content if necessary, e.g. api-version should be updated. - -3. update readme.md. diff --git a/.github/azure-typespec-author/references/general-authoring-intake.md b/.github/azure-typespec-author/references/general-authoring-intake.md deleted file mode 100644 index 390d29449f4..00000000000 --- a/.github/azure-typespec-author/references/general-authoring-intake.md +++ /dev/null @@ -1,42 +0,0 @@ -# Intake — General Authoring - -> Step 1 (Analyze Project) must be complete. Do not re-collect those inputs. - -### Step 2.1: Identify the Case - -| Case | Name | Description | Service Type | -| ---- | ----------------------- | ----------------------------------------- | ------------ | -| 1 | Add Resource Type | Define a new ARM resource with operations | ARM | -| 2 | Add Resource Operations | Add CRUD or custom actions on a resource | ARM | - -- **Match found** → collect case-specific inputs (Step 2.2). -- **No match** → skip to Step 3 using Step 1 analysis and the user's request. - -### Step 2.2: Collect Inputs - -**Case 1 — Add Resource Type (For ARM service only)** -Collect: target API version, resource name (PascalCase), hierarchy (top-level or nested + parent), properties (name, type, required/optional). - -Defaults: top-level → `TrackedResource`, child → `ProxyResource`. Operations: `createOrReplace` (PUT/async), `get`, `update/patch`, `delete` (async), list by parent. Top-level adds list by subscription. Use `createOrReplace` (not `createOrUpdate`), - -> MUST use `ArmCustomPatch` for PATCH `update/patch`. -> Top-level tracked resources MUST have `listByResourceGroup` and `listBySubscription`. - -**Case 2 — Add Resource Operations (For ARM service only)** -Collect: target resource, operation type (CRUD or custom), operation name (custom actions), request/response models (custom actions). - -Defaults: never async → GET, LIST, HEAD. Default async → PUT, DELETE. Default sync → PATCH. Always ask user → POST/action. - -> Use `createOrReplace` templates (not `createOrUpdate`). Use `ArmCustomPatch` for PATCH. -> For POST async operation, make sure use ARM combined headers. ` LroHeaders = ArmCombinedLroHeaders`. - -### Step 2.3: Confirm - -Display collected information and wait for user confirmation: - -``` -Case: [Name] -Target Version: [version] -Requested Changes: [summary] -Defaults: [defaults guidelines] -``` diff --git a/.github/azure-typespec-author/references/validation.md b/.github/azure-typespec-author/references/validation.md deleted file mode 100644 index f1e665f8418..00000000000 --- a/.github/azure-typespec-author/references/validation.md +++ /dev/null @@ -1,36 +0,0 @@ -# Validation - -After applying changes (Step 4), run through all sub-steps below in order. - -| Sub-step | Action | When | -| -------- | ---------------------------------- | -------------------------- | -| 5.1 | TypeSpec Validation (error checks) | Always | -| 5.2 | `tsp compile .` (generate swagger) | Always | -| 5.3 | Example Verification | API Version Evolution only | - -> Steps 5.1 and 5.2 serve different purposes. Step 5.1 validates for errors/warnings. Step 5.2 compiles and generates the OpenAPI `.json` output files. Both must be executed. - -### Step 5.1: TypeSpec Validation - -Invoke `azure-sdk-mcp:azsdk_run_typespec_validation` with the TypeSpec project root path. - -- **Pass** → proceed to Step 5.2. -- **Fail** → fix with minimal, scoped changes, then re-run. Repeat until resolved. - -> Never skip this step, even for trivial changes. - -### Step 5.2: Compile successfully - -> This step is separate from Step 5.1. Validation alone does not produce output files — you must also run `tsp compile .` to generate the OpenAPI swagger. - -Run `tsp compile .` from the TypeSpec project root path. After compilation succeeds, verify that the swagger `.json` file has been generated under `{TypeSpec project root}/{version-status}/{target-version}/` (e.g. `preview/2025-01-01-preview/widget.json`). Fix any compile errors if they occur. - -### Step 5.3: Example Verification - -> Applies only for API Version Evolution tasks - -Verify that the example folder set up in Step 3 (copied from the latest version's `examples/` into `{TypeSpec project root}/{version-status}/{target-version}/examples/`) exists and contains example files. - -1. **Folder exists** — confirm `{TypeSpec project root}/{version-status}/{target-version}/examples/` was created. If missing, copy all `.json` files from the latest version's `examples/` folder. -2. **Files exist** — confirm the folder contains at least one `.json` example file. If empty, copy examples from the latest version's `examples/` folder. -3. **api-version updated** — each example file must use the correct `api-version` value matching the target version (e.g. `2024-02-01-preview`, not the source version). From 388116149cd766adba0b5f2f9c059a923e96fa5f Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:32:31 +0800 Subject: [PATCH 39/98] Revert 001001.eval.yaml timeout to 1800 --- .../azure-typespec-author/evaluate/evals/001001.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml index 8af211d8bc5..a510caf336c 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: "30m" # Seconds per trial + timeout: 1800 # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From d787db774da6d95c6ab8a07704bc08a414e0ce16 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:32:33 +0800 Subject: [PATCH 40/98] Revert 001002.eval.yaml timeout to 1800 --- .../azure-typespec-author/evaluate/evals/001002.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml index 5b9e3b212a1..bf3f33da140 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: "30m" # Seconds per trial + timeout: 1800 # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From 145be2b6b346e6577f5c259c23a322fc04f4a92a Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:32:35 +0800 Subject: [PATCH 41/98] Revert 001003.eval.yaml timeout to 1800 --- .../azure-typespec-author/evaluate/evals/001003.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml index 136758abf69..ad8104eb915 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: "30m" # Seconds per trial + timeout: 1800 # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From 1f2f97db6bd1b89139842604900ad588eab0726e Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:32:37 +0800 Subject: [PATCH 42/98] Revert 001004.eval.yaml timeout to 1800 --- .../azure-typespec-author/evaluate/evals/001004.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml index cdfe6e59b84..ca0c056c1b9 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: "30m" # Seconds per trial + timeout: 1800 # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From 6779354417533c4f2960196ded9fee050889e86e Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:32:39 +0800 Subject: [PATCH 43/98] Revert 001005.eval.yaml timeout to 1800 --- .../azure-typespec-author/evaluate/evals/001005.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml index 1333d2e4db3..13404f6121e 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: "30m" # Seconds per trial + timeout: 1800 # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From cddb272ed9df728ec8228c3c1799758562b2eeb1 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:34:13 +0800 Subject: [PATCH 44/98] Revert 001001.eval.yaml to match main (PR #15516) --- .../skills/azure-typespec-author/evaluate/evals/001001.eval.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml index a510caf336c..b81d05f1586 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml @@ -70,4 +70,3 @@ scoring: skill-invocation: 1 prompt: 1 threshold: 1.0 - From 2a44e1186815260a4e7a8b24e94d47a051574aff Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:34:17 +0800 Subject: [PATCH 45/98] Revert 001002.eval.yaml to match main (PR #15516) --- .../skills/azure-typespec-author/evaluate/evals/001002.eval.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml index bf3f33da140..a7ab314a0b3 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml @@ -75,4 +75,3 @@ scoring: prompt: 1 file-matches: 4 threshold: 1.0 - From fa5060ed0305622da234f692d7efa9dfd32e427f Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:34:19 +0800 Subject: [PATCH 46/98] Revert 001003.eval.yaml to match main (PR #15516) --- .../skills/azure-typespec-author/evaluate/evals/001003.eval.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml index ad8104eb915..5a170070fc0 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml @@ -71,4 +71,3 @@ scoring: tool-calls: 1 skill-invocation: 1 threshold: 1.0 - From cbfd60554b2e8ebd293323ca8be2049e8dbb2ebb Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:34:22 +0800 Subject: [PATCH 47/98] Revert 001004.eval.yaml to match main (PR #15516) --- .../skills/azure-typespec-author/evaluate/evals/001004.eval.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml index ca0c056c1b9..0940cca560d 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml @@ -67,4 +67,3 @@ scoring: tool-calls: 1 skill-invocation: 1 threshold: 1.0 - From f59c46be2d1be9abba7df8583a7347c7b76e514c Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:34:25 +0800 Subject: [PATCH 48/98] Revert 001005.eval.yaml to match main (PR #15516) --- .../evaluate/evals/001005.eval.yaml | 47 +++++++++---------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml index 13404f6121e..a07a68a97f4 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml @@ -23,51 +23,51 @@ stimuli: max_tokens: 5000 environment: files: - - src: ../fixtures/001005-version-add-preview-after-preview/employee.tsp + - src: ../fixtures/001005-version-add-preview-after-preview\employee.tsp dest: employee.tsp - - src: ../fixtures/001005-version-add-preview-after-preview/main.tsp + - src: ../fixtures/001005-version-add-preview-after-preview\main.tsp dest: main.tsp - - src: ../fixtures/001005-version-add-preview-after-preview/shared.tsp + - src: ../fixtures/001005-version-add-preview-after-preview\shared.tsp dest: shared.tsp - - src: ../fixtures/001005-version-add-preview-after-preview/tspconfig.yaml + - src: ../fixtures/001005-version-add-preview-after-preview\tspconfig.yaml dest: tspconfig.yaml - - src: ../fixtures/001005-version-add-preview-after-preview/package.json + - src: ../fixtures/001005-version-add-preview-after-preview\package.json dest: package.json - - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_CreateOrUpdate_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Delete_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Get_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_ListByResourceGroup_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_ListBySubscription_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Update_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Operations_List_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Operations_List_MinimumSet_Gen.json dest: examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json dest: examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListBySubscription_MinimumSet_Gen.json dest: examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Operations_List_MaximumSet_Gen.json dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Operations_List_MinimumSet_Gen.json dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json graders: - type: tool-calls @@ -122,4 +122,3 @@ scoring: tool-calls: 1 skill-invocation: 1 threshold: 1.0 - From f4357316dbf26dcd13acf121905606593772715a Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:37:03 +0800 Subject: [PATCH 49/98] Pipeline-side normalize bare timeout to duration string for vally --- .../azure-typespec-author-benchmark.yml | 296 ++++++++++++------ 1 file changed, 208 insertions(+), 88 deletions(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index 182ecf9f894..aa8928c7a41 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -1,127 +1,247 @@ -# NOTE: Please refer to https://aka.ms/azsdk/engsys/ci-yaml before editing this file. -trigger: none +# NOTE: Please refer to https://aka.ms/azsdk/ +engsys/ci-yaml before editing this file. +trig +ger: none pr: none parameters: -- name: PythonVersion +- name: Pytho +nVersion type: string default: '3.10' -extends: - template: /eng/pipelines/templates/stages/1es-redirect.yml +ex +tends: + template: /eng/pipelines/templates/s +tages/1es-redirect.yml parameters: - Use1ESOfficial: true + Use1 +ESOfficial: true stages: - - stage: EvalTypeSpecAuthor - displayName: Azure TypeSpec Author Skill Evaluation - variables: - - template: /eng/pipelines/templates/variables/globals.yml - - template: /eng/pipelines/templates/variables/image.yml - - group: Azure SDK QA Bot Dev Variables - - group: AzSDK_Eval_Variable_group + - stage: E +valTypeSpecAuthor + displayName: Azure +TypeSpec Author Skill Evaluation + vari +ables: + - template: /eng/pipelines/t +emplates/variables/globals.yml + - te +mplate: /eng/pipelines/templates/variables/im +age.yml + - group: Azure SDK QA Bot D +ev Variables + - group: AzSDK_Eval_Va +riable_group pool: - name: $(LINUXPOOL) + name: $( +LINUXPOOL) image: $(LINUXVMIMAGE) - os: linux + + os: linux jobs: - - job: RunEvals - displayName: Run Vally Evaluations - timeoutInMinutes: 120 + - +job: RunEvals + displayName: Run Va +lly Evaluations + timeoutInMinutes: + 120 steps: - - checkout: self + - check +out: self fetchDepth: 0 - # Install Go and build/start the QA bot backend + + # Install Go and build/start the QA + bot backend - script: | - echo "Downloading Go 1.24.0..." - curl -LO https://go.dev/dl/go1.24.0.linux-amd64.tar.gz - echo "Removing existing Go installation..." - sudo rm -rf /usr/local/go - echo "Extracting Go 1.24.0..." - sudo tar -C /usr/local -xzf go1.24.0.linux-amd64.tar.gz - echo "Setting environment variables..." - echo "##vso[task.setvariable variable=GOROOT]/usr/local/go" - echo "##vso[task.prependpath]/usr/local/go/bin" - displayName: Install Go + + echo "Downloading Go 1.24.0..." + + curl -LO https://go.dev/dl/g +o1.24.0.linux-amd64.tar.gz + +echo "Removing existing Go installation..." + + sudo rm -rf /usr/local/go + + echo "Extracting Go 1.24.0... +" + sudo tar -C /usr/local -x +zf go1.24.0.linux-amd64.tar.gz + + echo "Setting environment variables..." + + echo "##vso[task.setvariable + variable=GOROOT]/usr/local/go" + + echo "##vso[task.prependpath]/usr/local/ +go/bin" + displayName: Install +Go - script: go version - displayName: Check Go version + + displayName: Check Go version - - task: AzureCLI@2 - displayName: Start QA bot backend service - inputs: - azureSubscription: 'azuresdkqabot-dev' - scriptType: bash - scriptLocation: inlineScript - workingDirectory: $(Build.SourcesDirectory)/tools/sdk-ai-bots/azure-sdk-qa-bot-backend - inlineScript: | - export GOPROXY=https://proxy.golang.org,direct - go build -o qa-bot-service - chmod +x qa-bot-service - nohup ./qa-bot-service > qa-bot-service.log 2>&1 & - SERVICE_PID=$! - echo "Service started with PID: $SERVICE_PID" - sleep 20 - echo "=== Service log ===" - cat qa-bot-service.log || true - echo "===================" - if ! kill -0 $SERVICE_PID 2>/dev/null; then - echo "ERROR: Service process has exited unexpectedly" - exit 1 - fi - if ! lsof -ti:8088 > /dev/null 2>&1; then - echo "ERROR: No process listening on port 8088" + + - task: AzureCLI@2 + +displayName: Start QA bot backend service + + inputs: + azureS +ubscription: 'azuresdkqabot-dev' + + scriptType: bash + scri +ptLocation: inlineScript + wo +rkingDirectory: $(Build.SourcesDirectory)/too +ls/sdk-ai-bots/azure-sdk-qa-bot-backend + + inlineScript: | + + export GOPROXY=https://proxy.golang.org,d +irect + go build -o qa-bot- +service + chmod +x qa-bot-s +ervice + nohup ./qa-bot-ser +vice > qa-bot-service.log 2>&1 & + + SERVICE_PID=$! + ec +ho "Service started with PID: $SERVICE_PID" + + sleep 20 + + echo "=== Service log ===" + + cat qa-bot-service.log || true + + echo "===================" + + if ! kill -0 $SERVICE_PID 2>/dev +/null; then + echo "ERROR +: Service process has exited unexpectedly" + + exit 1 + + fi + if ! lsof -ti:8088 > + /dev/null 2>&1; then + e +cho "ERROR: No process listening on port 8088 +" exit 1 - fi - echo "Service is running on port 8088" + + fi + echo "Service is + running on port 8088" env: - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - AZURE_APPCONFIG_ENDPOINT: $(AZURE_APPCONFIG_ENDPOINT) + + SYSTEM_ACCESSTOKEN: $(System +.AccessToken) + AZURE_APPCONF +IG_ENDPOINT: $(AZURE_APPCONFIG_ENDPOINT) - # Install .NET SDK for azsdk-cli MCP server + + # Install .NET SDK for azsdk-cli M +CP server - task: UseDotNet@2 - displayName: Install .NET 8.0 SDK + + displayName: Install .NET 8.0 +SDK inputs: - version: '8.x' + + version: '8.x' + + # Install Node +.js, Vally CLI, and Copilot SDK + + # Use the internal Azure Artifacts npm mirro +r (with auth) because + # the 1ES + managed pool blocks direct egress to registr +y.npmjs.org. + - task: NodeTool@0 - # Install Node.js, Vally CLI, and Copilot SDK - # Use the internal Azure Artifacts npm mirror (with auth) because - # the 1ES managed pool blocks direct egress to registry.npmjs.org. - - task: NodeTool@0 displayName: Use Node.js 22 + inputs: - versionSpec: '22.x' + ver +sionSpec: '22.x' - - template: /eng/common/pipelines/templates/steps/create-authenticated-npmrc.yml - parameters: - npmrcPath: $(Build.SourcesDirectory)/.npmrc - registryUrl: https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-tools/npm/registry/ + - template: / +eng/common/pipelines/templates/steps/create-a +uthenticated-npmrc.yml + parame +ters: + npmrcPath: $(Build.So +urcesDirectory)/.npmrc + regi +stryUrl: https://pkgs.dev.azure.com/azure-sdk +/public/_packaging/azure-sdk-tools/npm/regist +ry/ - - script: npm install --global @microsoft/vally-cli --userconfig $(Build.SourcesDirectory)/.npmrc - displayName: Install Vally CLI + - script: npm install --gl +obal @microsoft/vally-cli --userconfig $(Buil +d.SourcesDirectory)/.npmrc + di +splayName: Install Vally CLI - - script: npm install --global @github/copilot-sdk --userconfig $(Build.SourcesDirectory)/.npmrc - displayName: Install Copilot SDK + - + script: npm install --global @github/copilot +-sdk --userconfig $(Build.SourcesDirectory)/. +npmrc + displayName: Install Co +pilot SDK # Run evaluations - # The vally config (.vally.yaml) lives in the skill's evaluate/ - # directory; cd there so vally discovers evals/*.eval.yaml. + + # The vally config (.vally.yaml) +lives in the skill's evaluate/ + +# directory; cd there so vally discovers eval +s/*.eval.yaml. - script: | - cd .github/skills/azure-typespec-author/evaluate - mkdir -p results - vally eval --suite all --output-dir results - displayName: Run evaluations - continueOnError: true + + cd .github/skills/azure-typespe +c-author/evaluate + mkdir -p +results + vally eval --suite +all --output-dir results + disp +layName: Run evaluations + cont +inueOnError: true env: - GITHUB_TOKEN: $(azuresdk-copilot-github-pat) + + GITHUB_TOKEN: $(azuresdk-copilot- +github-pat) templateContext: - outputs: - - output: pipelineArtifact - path: $(Build.SourcesDirectory)/.github/skills/azure-typespec-author/evaluate/results - artifact: eval-results-$(Build.BuildId) - displayName: Upload eval results + + outputs: + - output: + pipelineArtifact + path: $(B +uild.SourcesDirectory)/.github/skills/azure-t +ypespec-author/evaluate/results + + artifact: eval-results-$(Build.BuildId) + + displayName: Upload eval re +sults condition: always() + + + + From 72d95875a2107f2f629b83613ba7db880198e8e4 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:38:34 +0800 Subject: [PATCH 50/98] Rewrite pipeline yml cleanly (LF, no mid-word CRLFs); add timeout normalization --- .../azure-typespec-author-benchmark.yml | 307 ++++++------------ 1 file changed, 95 insertions(+), 212 deletions(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index aa8928c7a41..5c5e32627cb 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -1,247 +1,130 @@ -# NOTE: Please refer to https://aka.ms/azsdk/ -engsys/ci-yaml before editing this file. -trig -ger: none +# NOTE: Please refer to https://aka.ms/azsdk/engsys/ci-yaml before editing this file. +trigger: none pr: none parameters: -- name: Pytho -nVersion +- name: PythonVersion type: string default: '3.10' -ex -tends: - template: /eng/pipelines/templates/s -tages/1es-redirect.yml +extends: + template: /eng/pipelines/templates/stages/1es-redirect.yml parameters: - Use1 -ESOfficial: true + Use1ESOfficial: true stages: - - stage: E -valTypeSpecAuthor - displayName: Azure -TypeSpec Author Skill Evaluation - vari -ables: - - template: /eng/pipelines/t -emplates/variables/globals.yml - - te -mplate: /eng/pipelines/templates/variables/im -age.yml - - group: Azure SDK QA Bot D -ev Variables - - group: AzSDK_Eval_Va -riable_group + - stage: EvalTypeSpecAuthor + displayName: Azure TypeSpec Author Skill Evaluation + variables: + - template: /eng/pipelines/templates/variables/globals.yml + - template: /eng/pipelines/templates/variables/image.yml + - group: Azure SDK QA Bot Dev Variables + - group: AzSDK_Eval_Variable_group pool: - name: $( -LINUXPOOL) + name: $(LINUXPOOL) image: $(LINUXVMIMAGE) - - os: linux + os: linux jobs: - - -job: RunEvals - displayName: Run Va -lly Evaluations - timeoutInMinutes: - 120 + - job: RunEvals + displayName: Run Vally Evaluations + timeoutInMinutes: 120 steps: - - check -out: self + - checkout: self fetchDepth: 0 - - # Install Go and build/start the QA - bot backend + # Install Go and build/start the QA bot backend - script: | - - echo "Downloading Go 1.24.0..." - - curl -LO https://go.dev/dl/g -o1.24.0.linux-amd64.tar.gz - -echo "Removing existing Go installation..." - - sudo rm -rf /usr/local/go - - echo "Extracting Go 1.24.0... -" - sudo tar -C /usr/local -x -zf go1.24.0.linux-amd64.tar.gz - - echo "Setting environment variables..." - - echo "##vso[task.setvariable - variable=GOROOT]/usr/local/go" - - echo "##vso[task.prependpath]/usr/local/ -go/bin" - displayName: Install -Go + echo "Downloading Go 1.24.0..." + curl -LO https://go.dev/dl/go1.24.0.linux-amd64.tar.gz + echo "Removing existing Go installation..." + sudo rm -rf /usr/local/go + echo "Extracting Go 1.24.0..." + sudo tar -C /usr/local -xzf go1.24.0.linux-amd64.tar.gz + echo "Setting environment variables..." + echo "##vso[task.setvariable variable=GOROOT]/usr/local/go" + echo "##vso[task.prependpath]/usr/local/go/bin" + displayName: Install Go - script: go version - - displayName: Check Go version + displayName: Check Go version - - - task: AzureCLI@2 - -displayName: Start QA bot backend service - - inputs: - azureS -ubscription: 'azuresdkqabot-dev' - - scriptType: bash - scri -ptLocation: inlineScript - wo -rkingDirectory: $(Build.SourcesDirectory)/too -ls/sdk-ai-bots/azure-sdk-qa-bot-backend - - inlineScript: | - - export GOPROXY=https://proxy.golang.org,d -irect - go build -o qa-bot- -service - chmod +x qa-bot-s -ervice - nohup ./qa-bot-ser -vice > qa-bot-service.log 2>&1 & - - SERVICE_PID=$! - ec -ho "Service started with PID: $SERVICE_PID" - - sleep 20 - - echo "=== Service log ===" - - cat qa-bot-service.log || true - - echo "===================" - - if ! kill -0 $SERVICE_PID 2>/dev -/null; then - echo "ERROR -: Service process has exited unexpectedly" - - exit 1 - - fi - if ! lsof -ti:8088 > - /dev/null 2>&1; then - e -cho "ERROR: No process listening on port 8088 -" + - task: AzureCLI@2 + displayName: Start QA bot backend service + inputs: + azureSubscription: 'azuresdkqabot-dev' + scriptType: bash + scriptLocation: inlineScript + workingDirectory: $(Build.SourcesDirectory)/tools/sdk-ai-bots/azure-sdk-qa-bot-backend + inlineScript: | + export GOPROXY=https://proxy.golang.org,direct + go build -o qa-bot-service + chmod +x qa-bot-service + nohup ./qa-bot-service > qa-bot-service.log 2>&1 & + SERVICE_PID=$! + echo "Service started with PID: $SERVICE_PID" + sleep 20 + echo "=== Service log ===" + cat qa-bot-service.log || true + echo "===================" + if ! kill -0 $SERVICE_PID 2>/dev/null; then + echo "ERROR: Service process has exited unexpectedly" + exit 1 + fi + if ! lsof -ti:8088 > /dev/null 2>&1; then + echo "ERROR: No process listening on port 8088" exit 1 - - fi - echo "Service is - running on port 8088" + fi + echo "Service is running on port 8088" env: - - SYSTEM_ACCESSTOKEN: $(System -.AccessToken) - AZURE_APPCONF -IG_ENDPOINT: $(AZURE_APPCONFIG_ENDPOINT) + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + AZURE_APPCONFIG_ENDPOINT: $(AZURE_APPCONFIG_ENDPOINT) - - # Install .NET SDK for azsdk-cli M -CP server + # Install .NET SDK for azsdk-cli MCP server - task: UseDotNet@2 - - displayName: Install .NET 8.0 -SDK + displayName: Install .NET 8.0 SDK inputs: - - version: '8.x' - - # Install Node -.js, Vally CLI, and Copilot SDK - - # Use the internal Azure Artifacts npm mirro -r (with auth) because - # the 1ES - managed pool blocks direct egress to registr -y.npmjs.org. - - task: NodeTool@0 + version: '8.x' + # Install Node.js, Vally CLI, and Copilot SDK. + # Use the internal Azure Artifacts npm mirror (with auth) because + # the 1ES managed pool blocks direct egress to registry.npmjs.org. + - task: NodeTool@0 displayName: Use Node.js 22 - inputs: - ver -sionSpec: '22.x' + versionSpec: '22.x' - - template: / -eng/common/pipelines/templates/steps/create-a -uthenticated-npmrc.yml - parame -ters: - npmrcPath: $(Build.So -urcesDirectory)/.npmrc - regi -stryUrl: https://pkgs.dev.azure.com/azure-sdk -/public/_packaging/azure-sdk-tools/npm/regist -ry/ + - template: /eng/common/pipelines/templates/steps/create-authenticated-npmrc.yml + parameters: + npmrcPath: $(Build.SourcesDirectory)/.npmrc + registryUrl: https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-tools/npm/registry/ - - script: npm install --gl -obal @microsoft/vally-cli --userconfig $(Buil -d.SourcesDirectory)/.npmrc - di -splayName: Install Vally CLI + - script: npm install --global @microsoft/vally-cli --userconfig $(Build.SourcesDirectory)/.npmrc + displayName: Install Vally CLI - - - script: npm install --global @github/copilot --sdk --userconfig $(Build.SourcesDirectory)/. -npmrc - displayName: Install Co -pilot SDK + - script: npm install --global @github/copilot-sdk --userconfig $(Build.SourcesDirectory)/.npmrc + displayName: Install Copilot SDK # Run evaluations - - # The vally config (.vally.yaml) -lives in the skill's evaluate/ - -# directory; cd there so vally discovers eval -s/*.eval.yaml. + # The vally config (.vally.yaml) lives in the skill's evaluate/ + # directory; cd there so vally discovers evals/*.eval.yaml. + # Vally requires imeout to be a duration string (e.g. "30m"), + # but the source eval files use bare integer seconds. Rewrite + # at runtime so the source stays untouched. - script: | - - cd .github/skills/azure-typespe -c-author/evaluate - mkdir -p -results - vally eval --suite -all --output-dir results - disp -layName: Run evaluations - cont -inueOnError: true + cd .github/skills/azure-typespec-author/evaluate + mkdir -p results + for f in evals/*.eval.yaml; do + sed -i -E 's/^([[:space:]]*timeout:[[:space:]]*)([0-9]+)[[:space:]]*$/\1"\2s"/' "$f" + done + vally eval --suite all --output-dir results + displayName: Run evaluations + continueOnError: true env: - - GITHUB_TOKEN: $(azuresdk-copilot- -github-pat) + GITHUB_TOKEN: $(azuresdk-copilot-github-pat) templateContext: - - outputs: - - output: - pipelineArtifact - path: $(B -uild.SourcesDirectory)/.github/skills/azure-t -ypespec-author/evaluate/results - - artifact: eval-results-$(Build.BuildId) - - displayName: Upload eval re -sults - condition: always() - - - - - - - + outputs: + - output: pipelineArtifact + path: $(Build.SourcesDirectory)/.github/skills/azure-typespec-author/evaluate/results + artifact: eval-results-$(Build.BuildId) + displayName: Upload eval results + condition: always() \ No newline at end of file From 22cf3c8ab8b0e7a6c5ca6600ee089bc678a449d0 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:49:06 +0800 Subject: [PATCH 51/98] Fix sed regex to handle inline comments after timeout --- eng/pipelines/azure-typespec-author-benchmark.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index 5c5e32627cb..a6ac5051f9c 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -113,7 +113,7 @@ extends: cd .github/skills/azure-typespec-author/evaluate mkdir -p results for f in evals/*.eval.yaml; do - sed -i -E 's/^([[:space:]]*timeout:[[:space:]]*)([0-9]+)[[:space:]]*$/\1"\2s"/' "$f" + sed -i -E 's/^([[:space:]]*timeout:[[:space:]]+)([0-9]+)([[:space:]]*(#.*)?)$/\1"\2s"\3/' "$f" done vally eval --suite all --output-dir results displayName: Run evaluations From 737b3e9c59bdb4118b03fcc8ea71ad3d0068aa64 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:55:17 +0800 Subject: [PATCH 52/98] Set timeout to '1800s' in 001001.eval.yaml --- .../azure-typespec-author/evaluate/evals/001001.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml index b81d05f1586..2a1beac2ea3 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From ae287d279824c26fed7fbd410733222d350d8447 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:55:20 +0800 Subject: [PATCH 53/98] Set timeout to '1800s' in 001002.eval.yaml --- .../azure-typespec-author/evaluate/evals/001002.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml index a7ab314a0b3..3d47e529dd4 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From 0aa60629b9986b3f0d7922a0d9d4f0d4f233afbb Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:55:24 +0800 Subject: [PATCH 54/98] Set timeout to '1800s' in 001003.eval.yaml --- .../azure-typespec-author/evaluate/evals/001003.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml index 5a170070fc0..9e06b099cbf 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From ddea51ab0ee82beae204a02ed93864d1bc87aa28 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:55:28 +0800 Subject: [PATCH 55/98] Set timeout to '1800s' in 001004.eval.yaml --- .../azure-typespec-author/evaluate/evals/001004.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml index 0940cca560d..4874602b986 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From a29165e441fd6f32d83181888b7be0dbf80528d3 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:55:31 +0800 Subject: [PATCH 56/98] Set timeout to '1800s' in 001005.eval.yaml --- .../azure-typespec-author/evaluate/evals/001005.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml index a07a68a97f4..1cfbc574abf 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From b5949b65b5341b793cc8ce92768bea1cabccce48 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:55:35 +0800 Subject: [PATCH 57/98] Set timeout to '1800s' in 001006.eval.yaml --- .../azure-typespec-author/evaluate/evals/001006.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001006.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001006.eval.yaml index 13e796fc3ea..aba7eeb716c 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001006.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001006.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From 0384381c3dc425c2c5f271db91e1a58c3116c018 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:55:38 +0800 Subject: [PATCH 58/98] Set timeout to '1800s' in 001007.eval.yaml --- .../azure-typespec-author/evaluate/evals/001007.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001007.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001007.eval.yaml index 87c42bc2b1e..ffbbbfb90ca 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001007.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001007.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From 2d73b249f5a17f6b6fc91e9d93ebf949082fccdb Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:55:41 +0800 Subject: [PATCH 59/98] Set timeout to '1800s' in 001008.eval.yaml --- .../azure-typespec-author/evaluate/evals/001008.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001008.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001008.eval.yaml index a7900d3f387..a7aeb213485 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001008.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001008.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From c1cd20fe0f96de0b0524d4edf070cbbe1be33f29 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:55:45 +0800 Subject: [PATCH 60/98] Set timeout to '1800s' in 001009.eval.yaml --- .../azure-typespec-author/evaluate/evals/001009.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001009.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001009.eval.yaml index a8d6b64e0ac..0ccd82f3c1a 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001009.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001009.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From 3a309f43471582f82db91b2a6e86a2c76eecade1 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:55:49 +0800 Subject: [PATCH 61/98] Set timeout to '1800s' in 001010.eval.yaml --- .../azure-typespec-author/evaluate/evals/001010.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001010.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001010.eval.yaml index 078f85448d4..57168a7b0ef 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001010.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001010.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From ef9b1200f87af36e5fe373688aff7bef391e0b2d Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:55:52 +0800 Subject: [PATCH 62/98] Set timeout to '1800s' in 001011.eval.yaml --- .../azure-typespec-author/evaluate/evals/001011.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001011.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001011.eval.yaml index 05512728bd2..8dfe979d751 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001011.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001011.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From e62f76fbda9d0aeb498fe73f68efb1c2ce61bf8f Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:55:56 +0800 Subject: [PATCH 63/98] Set timeout to '1800s' in 001012.eval.yaml --- .../azure-typespec-author/evaluate/evals/001012.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001012.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001012.eval.yaml index 223f339b0c1..9e84c197926 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001012.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001012.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From 29a1a991f4f29160f94ceee5373e21fa31e3e586 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:55:59 +0800 Subject: [PATCH 64/98] Set timeout to '1800s' in 001013.eval.yaml --- .../azure-typespec-author/evaluate/evals/001013.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001013.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001013.eval.yaml index ccefd24795b..01881caa3cf 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001013.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001013.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From 6a11d44b63a3e3f8ec7ba8c68c75da1296c628f4 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:56:04 +0800 Subject: [PATCH 65/98] Set timeout to '1800s' in 002001.eval.yaml --- .../azure-typespec-author/evaluate/evals/002001.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/002001.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/002001.eval.yaml index 3104bd51d32..39b8b2bd510 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/002001.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/002001.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From 834e55847c1f2bf5002caa5662042e276eec57f2 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:56:07 +0800 Subject: [PATCH 66/98] Set timeout to '1800s' in 002002.eval.yaml --- .../azure-typespec-author/evaluate/evals/002002.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/002002.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/002002.eval.yaml index bc2347f6392..f2a0cc73e6c 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/002002.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/002002.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From b2bfb0ea72096a0cc5ffacf0fd54ba2dafa5a616 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:56:11 +0800 Subject: [PATCH 67/98] Set timeout to '1800s' in 002003.eval.yaml --- .../azure-typespec-author/evaluate/evals/002003.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/002003.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/002003.eval.yaml index d5b2e7d6ba8..f7a031aa6df 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/002003.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/002003.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From 55c8ab7d476125ffa9a96791c2e90ba34601e91e Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:56:14 +0800 Subject: [PATCH 68/98] Set timeout to '1800s' in 002004.eval.yaml --- .../azure-typespec-author/evaluate/evals/002004.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/002004.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/002004.eval.yaml index 34d569946f8..7235f71a581 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/002004.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/002004.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From ecc5b1cd5b9a476bbb7b678d8afafb282a083fb4 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:56:18 +0800 Subject: [PATCH 69/98] Set timeout to '1800s' in 002005.eval.yaml --- .../azure-typespec-author/evaluate/evals/002005.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/002005.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/002005.eval.yaml index 0d62311c28b..ec80bdbaa06 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/002005.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/002005.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From 8ce669ab32f2be9be6c5fde608592e912face7dc Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:56:21 +0800 Subject: [PATCH 70/98] Set timeout to '1800s' in 002006.eval.yaml --- .../azure-typespec-author/evaluate/evals/002006.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/002006.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/002006.eval.yaml index d5014ddbe0f..2ce681788ad 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/002006.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/002006.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From e783244736cfafbae6dd0e4ba47a491e46b601a3 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:56:24 +0800 Subject: [PATCH 71/98] Set timeout to '1800s' in 002007.eval.yaml --- .../azure-typespec-author/evaluate/evals/002007.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/002007.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/002007.eval.yaml index bb239bb5e4b..e8d63f442af 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/002007.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/002007.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From 5fac5e11ce698d1aca3836ace40b9d2af0a75097 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:56:28 +0800 Subject: [PATCH 72/98] Set timeout to '1800s' in 002008.eval.yaml --- .../azure-typespec-author/evaluate/evals/002008.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/002008.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/002008.eval.yaml index 9f17bc7a107..19470a26ac9 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/002008.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/002008.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From 97afda41a1ed929cf0a0943350dd2b553801bea4 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:56:31 +0800 Subject: [PATCH 73/98] Set timeout to '1800s' in 002009.eval.yaml --- .../azure-typespec-author/evaluate/evals/002009.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/002009.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/002009.eval.yaml index 6d92881c639..998809a4b44 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/002009.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/002009.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From d6e10cc098b3b8176890c828e69296437a6ebddd Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:56:35 +0800 Subject: [PATCH 74/98] Set timeout to '1800s' in 002010.eval.yaml --- .../azure-typespec-author/evaluate/evals/002010.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/002010.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/002010.eval.yaml index ebed4a60f67..d0da9d57842 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/002010.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/002010.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From f6d1225c78c81f44a6a0989cb32165d0eb101b7b Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:56:38 +0800 Subject: [PATCH 75/98] Set timeout to '1800s' in 003001.eval.yaml --- .../azure-typespec-author/evaluate/evals/003001.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/003001.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/003001.eval.yaml index 464d49b6d2a..f4e988804c1 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/003001.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/003001.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From 3147320e49afba8475c9e2dcd259c766b882d719 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:56:42 +0800 Subject: [PATCH 76/98] Set timeout to '1800s' in 003002.eval.yaml --- .../azure-typespec-author/evaluate/evals/003002.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/003002.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/003002.eval.yaml index f9c6e3db279..04633a4f0e9 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/003002.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/003002.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From 4f6d14be49b24c8a164628d839e095ed35d15af8 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:56:45 +0800 Subject: [PATCH 77/98] Set timeout to '1800s' in 004001.eval.yaml --- .../azure-typespec-author/evaluate/evals/004001.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/004001.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/004001.eval.yaml index a30a48400ce..92146c3516b 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/004001.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/004001.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From 11d213df877908b55faf8641b13363a4fa233e87 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:56:49 +0800 Subject: [PATCH 78/98] Set timeout to '1800s' in 004002.eval.yaml --- .../azure-typespec-author/evaluate/evals/004002.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/004002.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/004002.eval.yaml index 38c8cfebecf..7f0e4554d7b 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/004002.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/004002.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From 67aa27bae979b8b9e8cd265c43f7c36b391a874f Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:56:52 +0800 Subject: [PATCH 79/98] Set timeout to '1800s' in 004003.eval.yaml --- .../azure-typespec-author/evaluate/evals/004003.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/004003.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/004003.eval.yaml index a1e94e44a3f..007860ff950 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/004003.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/004003.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From 759a2112fcdb51a0768a253b3a299ad6da050f83 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 16:56:56 +0800 Subject: [PATCH 80/98] Set timeout to '1800s' in 005001.eval.yaml --- .../azure-typespec-author/evaluate/evals/005001.eval.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/005001.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/005001.eval.yaml index a9c30d6b466..500463a240b 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/005001.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/005001.eval.yaml @@ -9,7 +9,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 # Trials per stimulus - timeout: 1800 # Seconds per trial + timeout: "1800s" # Seconds per trial model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution executor: copilot-sdk # Which executor to use From 659499bea3dff92df0c9604334e14a85b84c8f0b Mon Sep 17 00:00:00 2001 From: Copilot <223556219+Copilot@users.noreply.github.com> Date: Wed, 6 May 2026 16:55:37 +0800 Subject: [PATCH 81/98] Add SkillBranch parameter to azure-typespec-author benchmark pipeline Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../azure-typespec-author-benchmark.yml | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index a6ac5051f9c..bbca7b4399f 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -6,6 +6,10 @@ parameters: - name: PythonVersion type: string default: '3.10' +- name: SkillBranch + displayName: Branch containing the azure-typespec-author skill code to evaluate (leave empty to use the branch this pipeline was triggered from) + type: string + default: '' extends: template: /eng/pipelines/templates/stages/1es-redirect.yml @@ -31,6 +35,25 @@ extends: - checkout: self fetchDepth: 0 + # Optionally check out a specific branch that contains the + # azure-typespec-author skill code to evaluate. When the + # SkillBranch parameter is empty we keep the branch that + # triggered the pipeline. + - script: | + set -e + BRANCH="${{ parameters.SkillBranch }}" + if [ -z "$BRANCH" ]; then + echo "SkillBranch parameter not provided; using the source branch checked out by the pipeline." + git rev-parse --abbrev-ref HEAD + git rev-parse HEAD + exit 0 + fi + echo "Checking out skill branch: $BRANCH" + git fetch origin "$BRANCH" + git checkout "$BRANCH" + git rev-parse HEAD + displayName: Checkout skill branch + # Install Go and build/start the QA bot backend - script: | echo "Downloading Go 1.24.0..." From 8305edafc8564c3cd30822c90c45b034f57516a3 Mon Sep 17 00:00:00 2001 From: Copilot <223556219+Copilot@users.noreply.github.com> Date: Wed, 6 May 2026 17:05:52 +0800 Subject: [PATCH 82/98] Revert skill .md changes; default SkillBranch to remove-task-type-classification Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/skills/azure-typespec-author/SKILL.md | 102 ++++++++++++------ .../references/agentic-search.md | 15 +-- .../analyze-project-and-classify-task.md | 62 +++++++++++ .../references/analyze-project.md | 31 ------ .../references/api-version-evolution.md | 31 ++++++ .../references/authoring-plan.md | 25 ----- .../references/general-authoring-intake.md | 42 ++++++++ .../references/intake.md | 60 ----------- .../references/reference-document-links.md | 10 -- .../references/validation.md | 39 ++++--- .../azure-typespec-author-benchmark.yml | 2 +- 11 files changed, 236 insertions(+), 183 deletions(-) create mode 100644 .github/skills/azure-typespec-author/references/analyze-project-and-classify-task.md delete mode 100644 .github/skills/azure-typespec-author/references/analyze-project.md create mode 100644 .github/skills/azure-typespec-author/references/api-version-evolution.md delete mode 100644 .github/skills/azure-typespec-author/references/authoring-plan.md create mode 100644 .github/skills/azure-typespec-author/references/general-authoring-intake.md delete mode 100644 .github/skills/azure-typespec-author/references/intake.md delete mode 100644 .github/skills/azure-typespec-author/references/reference-document-links.md diff --git a/.github/skills/azure-typespec-author/SKILL.md b/.github/skills/azure-typespec-author/SKILL.md index 3629019d05c..4d758549117 100644 --- a/.github/skills/azure-typespec-author/SKILL.md +++ b/.github/skills/azure-typespec-author/SKILL.md @@ -19,16 +19,6 @@ compatibility: **Prerequisite:** `azure-sdk-mcp` server must be running. -# When to invoke the azure-typespec-author skill - -The `azure-typespec-author` skill **must** be invoked immediately in all modes (including plan mode) for any task that involves creating and modifying TypeSpec (`.tsp`) files except for `client.tsp` under the specification directory in this repository. This includes but is not limited to: - -- Adding, bumping, or promoting API versions (preview, stable) -- Adding or modifying resources, operations, models, properties, or decorators -- Changing visibility, constraints, breaking changes, LRO patterns, or suppressions -- Defining or updating operationId, spread models, or extension resources -- Converting Swagger to TypeSpec (post-conversion edits) - ## Constraints - **Always follow the full workflow** — even seemingly simple changes (e.g. adding a default value) can require complex versioning decorator changes. Never skip steps. @@ -38,54 +28,96 @@ The `azure-typespec-author` skill **must** be invoked immediately in all modes ( - **Always cite references** — provide links that justify the approach. - **Follow the authoring plan exactly** — code changes in Step 4 MUST follow the authoring plan generated in Step 3. Do not deviate by referring to existing code patterns in the TypeSpec project; the authoring plan is the single source of truth for what to change. +--- + ## Workflow -> Analyze → Intake → Plan → Apply → Validate → Output reference links +> Classify → Intake → Plan → Apply → Validate + +### Progress Checklist + +Copy and update as you progress: -- [ ] Step 1 — Analyze project -- [ ] Step 2 — Intake -- [ ] Step 3 — Build authoring plan -- [ ] Step 4 — Apply changes -- [ ] Step 5 — Validate -- [ ] Step 6 — Output reference links +- [ ] Step 1: Analyzed project & classified as: \_\_\_ +- [ ] Step 2: Collected intake inputs +- [ ] Step 3: Retrieved authoring plan +- [ ] Step 4: Applied changes +- [ ] Step 5: Validated with TypeSpec validation and `tsp compile .` -### Step 1: Analyze Project +### Step 1: Analyze & Classify -See [analyze-project.md](references/analyze-project.md). +Follow [analyze project & classify task](references/analyze-project-and-classify-task.md). + +Classify as exactly one: + +| Task Type | When | `azsdk_typespec_generate_authoring_plan` | +| ------------------------- | --------------------------------------------------------------------------------- | ---------------------------------------- | +| **API Version Evolution** | Adding a new preview or stable API version to an existing ARM service. (ARM only) | **MUST NOT** call | +| **General Authoring** | Any other `.tsp` change (resources, operations, models, properties, etc.) | **MUST** call | + +State your classification explicitly before proceeding. + +--- ### Step 2: Intake -See [intake.md](references/intake.md). +Collect inputs needed for the change. Branch by task type: + +- **API Version Evolution** → Follow [API version evolution reference — Step 2](references/api-version-evolution.md#step-2-intake). +- **General Authoring** → Follow [intake guide](references/general-authoring-intake.md). -### Step 3: Build Authoring Plan +--- -See [authoring-plan.md](references/authoring-plan.md). +### Step 3: Retrieve Authoring Plan + +Check your classification from Step 1, then branch: + +- **API Version Evolution** → Follow [API version evolution reference — Step 3](references/api-version-evolution.md#step-3-retrieve-authoring-plan). **MUST NOT** call `azsdk_typespec_generate_authoring_plan`. +- **General Authoring** → **MUST** invoke `azure-sdk-mcp:azsdk_typespec_generate_authoring_plan` with: + + | Parameter | Value | + | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | `request` | User request (verbatim) | + | `additionalInformation` | All content gathered from Steps 1–2 (intake analysis, user answers, relevant `.tsp` code read from the project), **including any case-specific Defaults noted in Step 2.2** | + | `typeSpecProjectRootPath` | TypeSpec project root path | + + Do not proceed without an authoring plan from this tool. + +--- ### Step 4: Apply Changes -Make minimal `.tsp` edits following the plan from Step 3. Confirm uncertainties with the user first. +Confirm uncertainties with the user, then make minimal `.tsp` edits. -### Step 5: Validate +- **API Version Evolution** → Apply the plan from Step 3. +- **General Authoring** → Apply the authoring plan from Step 3. -See [validation.md](references/validation.md). Run 5.1 (TypeSpec validation) and 5.2 (`tsp compile .`) always; 5.3 (example verification) for API version evolution only. +--- + +### Step 5: Validate -### Step 6: Output Reference Links +See [validation guide](references/validation.md) for sub-steps. You must run TypeSpec validation (5.1), `tsp compile .` (5.2), and example verification (5.3, API Version Evolution only). -Output all referenced document URLs from Step 3. This gives the user direct links to the documentation that informed the changes. +--- ## Reference Files -| File | Purpose | -| --------------------------------------------------------------------- | ------------------------------------------- | -| [analyze-project.md](references/analyze-project.md) | Step 1: project analysis | -| [intake.md](references/intake.md) | Step 2: general + case-specific intake | -| [authoring-plan.md](references/authoring-plan.md) | Step 3: build authoring plan (Option A + B) | -| [agentic-search.md](references/agentic-search.md) | Procedure: fetch URLs → extract guidance | -| [reference-document-links.md](references/reference-document-links.md) | Catalog of external guide URLs | -| [validation.md](references/validation.md) | Step 5: validate → compile → verify | +| File | Purpose | +| --------------------------------------------------------------------------------------- | ----------------------------------------- | +| [analyze-project-and-classify-task.md](references/analyze-project-and-classify-task.md) | Step 1: project analysis + classification | +| [api-version-evolution.md](references/api-version-evolution.md) | Steps 2–4 for API Version Evolution tasks | +| [general-authoring-intake.md](references/general-authoring-intake.md) | Step 2 for General Authoring tasks | +| [agentic-search.md](references/agentic-search.md) | Procedure for fetching external docs | +| [validation.md](references/validation.md) | Step 5: validation sub-steps | ## Examples - "Add a new preview API version 2026-01-01-preview for widget resource manager" +- "Bump to stable version 2026-01-01 for Microsoft.Widget" - "Add an ARM resource named Asset with CRUD operations" - "Add a new property to the Widget model" + +## Troubleshooting + +- **TypeSpec validation fails** — display all errors, provide fix suggestions, re-run validation. +- **API Version Evolution** — use the versioning guide URLs in the [version evolution reference](references/api-version-evolution.md); do not call the authoring plan tool. diff --git a/.github/skills/azure-typespec-author/references/agentic-search.md b/.github/skills/azure-typespec-author/references/agentic-search.md index 06321e3e97c..e9bcf0f37b6 100644 --- a/.github/skills/azure-typespec-author/references/agentic-search.md +++ b/.github/skills/azure-typespec-author/references/agentic-search.md @@ -1,14 +1,15 @@ # Agentic Search +Procedure for fetching external documentation and extracting actionable guidance. + ## Input -- **Step 1 result** — project analysis output from [analyze-project.md](analyze-project.md): service type, existing API versions, latest version, intent, target resource/interface, and constraints. -- **User request** — the user's stated goal for this session. +A set of document URLs to fetch (provided by the caller). ## Procedure -1. **Select URLs** — read [reference-document-links.md](reference-document-links.md). Select only the URLs relevant to the user's request and Step 1 result. If unsure, select all. -2. **Fetch** — `web_fetch` each selected URL. Extract content as markdown. -3. **Search** — find content matching a query derived from the user's request and Step 1 result. Choose the most effective local search tool available. -4. **Iterate** — if initial results are insufficient, refine the query or fetch additional pages/URLs until the information satisfies the query. -5. **Return** — provide the extracted guidance to the caller. +1. **Fetch documents** — use `web_fetch` to download each URL. Extract the page content as markdown. +2. **Search content** — read the downloaded content and identify instructions, code examples, and patterns relevant to the current task. +3. **Build authoring plan** — synthesize the extracted content into a concrete authoring plan grounded in the fetched material. + +> Do not proceed without an authoring plan grounded in the fetched reference material. diff --git a/.github/skills/azure-typespec-author/references/analyze-project-and-classify-task.md b/.github/skills/azure-typespec-author/references/analyze-project-and-classify-task.md new file mode 100644 index 00000000000..bf09a8eebae --- /dev/null +++ b/.github/skills/azure-typespec-author/references/analyze-project-and-classify-task.md @@ -0,0 +1,62 @@ +# Analyze Project & Classify Task + +## Part 1 — Analyze Project + +Collect the inputs below from the TypeSpec project. Ask **up to 6 concise questions** for any that are missing. + +| # | Input | Example | +| --- | --------------------------- | ---------------------------------------------------------------- | +| 1 | TypeSpec project root | `/specification/widget/resource-manager/Microsoft.Widget/Widget` | +| 2 | Path to `tspconfig.yaml` | `/tspconfig.yaml` | +| 3 | Service type | ARM / data-plane | +| 4 | Existing API versions | `2024-01-01 (stable)`, `2024-06-01-preview` | +| 5 | Latest API version | Most recent entry in the `Versions` enum | +| 6 | Current working API version | The version being added or modified this session | +| 7 | Intent | add / modify / fix | +| 8 | Target resource/interface | Resource or operation name (if known) | +| 9 | Constraints | Breaking-change limits, naming rules, emitter targets, etc. | + +## Part 2 — Classify Task + +> **CRITICAL:** Classify into exactly one task type below and state your classification **before** proceeding to Step 2. + +### Definitions + +| Type | What it means | Tool Restriction | +| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| **API Version Evolution** | Adding a new preview or stable API version to an existing ARM service. Data-plane API version evolution is not fully supported yet. | **MUST NOT** call `azsdk_typespec_generate_authoring_plan`. Uses web-fetched docs only. | +| **General Authoring** | Any other TypeSpec authoring task that modifies `.tsp` files (resources, operations, models, properties, etc.) | **MUST** call `azsdk_typespec_generate_authoring_plan` in Step 3. | + +### How to Classify + +**API Version Evolution** — any request whose **primary intent** is to introduce a new API version string. +Keyword patterns: + +- _"add a new … API version"_, _"new preview version"_, _"new stable version"_ +- _"bump API version"_, _"introduce version"_, _"add … preview"_, _"add … stable"_ + +**General Authoring** — everything else that modifies `.tsp` files **without** introducing a new API version. + +### Example Prompts + +| Type | Examples | +| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **API Version Evolution** | "Add a new preview API version 2026-01-01-preview for widget resource manager", "Add preview version 2025-06-01-preview", "Bump to stable version 2026-01-01 for Microsoft.Widget", "Introduce a new preview API version for Foo" | +| **General Authoring** | "Add an ARM resource named Asset with CRUD operations", "Add a new property to the Widget model" | + +## Output + +Display the results before proceeding: + +``` +TypeSpec project root: /path/to/project +tspconfig.yaml: /path/to/project/tspconfig.yaml +Service Type: ARM +API Versions: 2024-01-01 (stable), 2024-06-01-preview (preview) +Latest Version: 2024-06-01-preview +Working Version: [TBD] +Intent: [add/modify/fix] +Target: [resource/operation if known] +Constraints: [if any] +Task Type: [API Version Evolution | General Authoring] +``` diff --git a/.github/skills/azure-typespec-author/references/analyze-project.md b/.github/skills/azure-typespec-author/references/analyze-project.md deleted file mode 100644 index 10b5a9ecde4..00000000000 --- a/.github/skills/azure-typespec-author/references/analyze-project.md +++ /dev/null @@ -1,31 +0,0 @@ -# Analyze Project - -Collect the inputs below from the TypeSpec project. Ask **up to 6 concise questions** for any that are missing. - -| # | Input | Example | -| --- | --------------------------- | ---------------------------------------------------------------- | -| 1 | TypeSpec project root | `/specification/widget/resource-manager/Microsoft.Widget/Widget` | -| 2 | Path to `tspconfig.yaml` | `/tspconfig.yaml` | -| 3 | Service type | ARM / data-plane | -| 4 | Existing API versions | `2024-01-01 (stable)`, `2024-06-01-preview` | -| 5 | Latest API version | Most recent entry in the `Versions` enum | -| 6 | Current working API version | The version being added or modified this session | -| 7 | Intent | add / modify / fix | -| 8 | Target resource/interface | Resource or operation name (if known) | -| 9 | Constraints | Breaking-change limits, naming rules, emitter targets, etc. | - -## Output - -Display the results before proceeding to Step 2: - -``` -TypeSpec project root: /path/to/project -tspconfig.yaml: /path/to/project/tspconfig.yaml -Service Type: ARM/Dataplane -API Versions: 2024-01-01 (stable), 2024-06-01-preview (preview) -Latest Version: 2024-06-01-preview -Working Version: [TBD] -Intent: [add/modify/fix] -Target: [resource/operation if known] -Constraints: [if any] -``` diff --git a/.github/skills/azure-typespec-author/references/api-version-evolution.md b/.github/skills/azure-typespec-author/references/api-version-evolution.md new file mode 100644 index 00000000000..f6c345f0d3b --- /dev/null +++ b/.github/skills/azure-typespec-author/references/api-version-evolution.md @@ -0,0 +1,31 @@ +# API Version Evolution — Reference + +**MUST NOT** call `azsdk_typespec_generate_authoring_plan` for API Version Evolution tasks. + +--- + +## Step 2: Intake + +Search using [agentic search](agentic-search.md) in below documents to determine information needed from user. + +- MUST collect information from user rather than making assumptions. +- MUST use a user friendly way to collect information. + e.g. you MUST List features from latest version and let user select which to carry over vs exclude, rather than assume user wants to carry over all features. + + | Doc | Guide URL | + | ------------------------ | --------------------------------------------------------------------------------------------- | + | Preview version overview | `https://azure.github.io/typespec-azure/docs/howtos/versioning/01-preview-version` | + | preview > preview | `https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/02-preview-after-preview/` | + | preview > stable | `https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/03-stable-after-preview/` | + | stable > preview | `https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/04-preview-after-stable/` | + | stable > stable | `https://azure.github.io/typespec-azure/docs/howtos/versioning/arm/05-stable-after-stable/` | + +--- + +## Step 3: Retrieve Authoring Plan + +1. Build an authoring plan from the fetched guide. Follow its rules for carried-over features and excluded features. Note there should be only one preview version and the preview version should be decorated with `@previewVersion`. + +2. Set up example folder: Copy all `.json` files from the latest version's `examples/` folder into new version's `examples/` folder. Create folder if necessary and update example content if necessary, e.g. api-version should be updated. + +3. update readme.md. diff --git a/.github/skills/azure-typespec-author/references/authoring-plan.md b/.github/skills/azure-typespec-author/references/authoring-plan.md deleted file mode 100644 index ffad8361602..00000000000 --- a/.github/skills/azure-typespec-author/references/authoring-plan.md +++ /dev/null @@ -1,25 +0,0 @@ -# Build Authoring Plan - -> Prerequisite: Steps 1 (Analyze Project) and 2 (Intake) must be complete. - -## 3.1 General (All Cases) - -Use **both** tools to build an authoring plan, if the retrieved results have conflict, rely on agentic search. - -1. **MCP Tool** — call `azsdk_typespec_generate_authoring_plan` with: - - `request`: user request (verbatim) - - `additionalInformation`: all context from Steps 1–2 - - `typeSpecProjectRootPath`: project root path - -2. **Agentic Search** — run [agentic search](agentic-search.md) with URLs from [reference-document-links.md](reference-document-links.md) and a query from the user's request. Synthesize extracted content into a concrete plan. - ---- - -## 3.2 Case-Specific Authoring Plan - -### Case 3 — API Version Evolution - -> **Must** use Agentic Search (option 2 above) to build the plan — do not call the MCP tool. - -1. Copy `.json` files from latest version's `examples/` into new version's `examples/`. Update `api-version` in each file. Delete old version's example folder if old version is no longer existed. -2. Update `readme.md`. diff --git a/.github/skills/azure-typespec-author/references/general-authoring-intake.md b/.github/skills/azure-typespec-author/references/general-authoring-intake.md new file mode 100644 index 00000000000..390d29449f4 --- /dev/null +++ b/.github/skills/azure-typespec-author/references/general-authoring-intake.md @@ -0,0 +1,42 @@ +# Intake — General Authoring + +> Step 1 (Analyze Project) must be complete. Do not re-collect those inputs. + +### Step 2.1: Identify the Case + +| Case | Name | Description | Service Type | +| ---- | ----------------------- | ----------------------------------------- | ------------ | +| 1 | Add Resource Type | Define a new ARM resource with operations | ARM | +| 2 | Add Resource Operations | Add CRUD or custom actions on a resource | ARM | + +- **Match found** → collect case-specific inputs (Step 2.2). +- **No match** → skip to Step 3 using Step 1 analysis and the user's request. + +### Step 2.2: Collect Inputs + +**Case 1 — Add Resource Type (For ARM service only)** +Collect: target API version, resource name (PascalCase), hierarchy (top-level or nested + parent), properties (name, type, required/optional). + +Defaults: top-level → `TrackedResource`, child → `ProxyResource`. Operations: `createOrReplace` (PUT/async), `get`, `update/patch`, `delete` (async), list by parent. Top-level adds list by subscription. Use `createOrReplace` (not `createOrUpdate`), + +> MUST use `ArmCustomPatch` for PATCH `update/patch`. +> Top-level tracked resources MUST have `listByResourceGroup` and `listBySubscription`. + +**Case 2 — Add Resource Operations (For ARM service only)** +Collect: target resource, operation type (CRUD or custom), operation name (custom actions), request/response models (custom actions). + +Defaults: never async → GET, LIST, HEAD. Default async → PUT, DELETE. Default sync → PATCH. Always ask user → POST/action. + +> Use `createOrReplace` templates (not `createOrUpdate`). Use `ArmCustomPatch` for PATCH. +> For POST async operation, make sure use ARM combined headers. ` LroHeaders = ArmCombinedLroHeaders`. + +### Step 2.3: Confirm + +Display collected information and wait for user confirmation: + +``` +Case: [Name] +Target Version: [version] +Requested Changes: [summary] +Defaults: [defaults guidelines] +``` diff --git a/.github/skills/azure-typespec-author/references/intake.md b/.github/skills/azure-typespec-author/references/intake.md deleted file mode 100644 index 49afba988ba..00000000000 --- a/.github/skills/azure-typespec-author/references/intake.md +++ /dev/null @@ -1,60 +0,0 @@ -# Intake - -> Prerequisite: Step 1 (Analyze Project) must be complete. - -## 2.1 General Intake (All Cases) - -1. Run [agentic search](agentic-search.md) using the Step 1 result and the user's request. -2. Identify the case from the table below and gather more information if case matches. If no case matches, skip Step 2.2. - -| Case | Name | Description | Service Type | -| ---- | ----------------------- | ----------------------------------------------------- | ------------ | -| 1 | Add Resource Type | Define a new ARM resource with operations | ARM | -| 2 | Add Resource Operations | Add CRUD or custom actions on an existing resource | ARM | -| 3 | API Version Evolution | Add, bump, or promote an API version (preview/stable) | ARM | - ---- - -## 2.2 Case-Specific Intake - -### Case 1 — Add Resource Type (ARM) - -Collect: target API version, resource name (PascalCase), hierarchy (top-level or nested + parent), properties (name, type, required/optional). - -Defaults: top-level → `TrackedResource`, child → `ProxyResource`. Operations: `createOrReplace` (PUT/async), `get`, `update/patch`, `delete` (async), list by parent. Top-level adds list by subscription. - -> Use `createOrReplace` (not `createOrUpdate`). Use `ArmCustomPatch` for PATCH. -> Top-level tracked resources MUST have `listByResourceGroup` and `listBySubscription`. - -### Case 2 — Add Resource Operations (ARM) - -Collect: target resource, operation type (CRUD or custom), operation name (custom actions), request/response models (custom actions). - -Defaults: never async → GET, LIST, HEAD. Default async → PUT, DELETE. Default sync → PATCH. Always ask user → POST/action. - -> Use `createOrReplace` (not `createOrUpdate`). Use `ArmCustomPatch` for PATCH. -> For async POST, use ARM combined headers: `LroHeaders = ArmCombinedLroHeaders`. - -### Case 3 — API Version Evolution (ARM) - -Collect from user: - -1. **Target version** (e.g. `2026-01-01-preview` or `2026-01-01`) -2. **Features to exclude, Do not assume the user wants to carry over all features** — follow this procedure exactly: - 1. Read the latest version's `.tsp` files and enumerate all resources, operations, models, and properties. - 2. Present the list to the user as a numbered checklist. - 3. Ask: _"All features will be carried over to the new version. Are there any you want to exclude? List by number, or say 'none'."_ - 4. Wait for the user's response before proceeding. - ---- - -## 2.3 Confirm - -Display and wait for user confirmation: - -``` -Case: [Name] -Target Version: [version] -Changes: [summary] -Defaults: [applied defaults] -``` diff --git a/.github/skills/azure-typespec-author/references/reference-document-links.md b/.github/skills/azure-typespec-author/references/reference-document-links.md deleted file mode 100644 index a5af2ea6a88..00000000000 --- a/.github/skills/azure-typespec-author/references/reference-document-links.md +++ /dev/null @@ -1,10 +0,0 @@ -# Reference Document Links - -## API Version Evolution - -- [About versioning](https://azure.github.io/typespec-azure/docs/howtos/versioning/01-about-versioning/): Overview of API versioning in TypeSpec Azure. -- [preview → preview](https://azure.github.io/typespec-azure/docs/howtos/versioning/02-preview-after-preview/): How to add a new preview version after an existing preview version. -- [preview → stable](https://azure.github.io/typespec-azure/docs/howtos/versioning/03-stable-after-preview/): How to promote a preview version to stable. -- [stable → preview](https://azure.github.io/typespec-azure/docs/howtos/versioning/04-preview-after-stable/): How to add a new preview version after a stable version. -- [stable → stable](https://azure.github.io/typespec-azure/docs/howtos/versioning/05-stable-after-stable/): How to add a new stable version after an existing stable version. -- [Evolving APIs using the Versioning Library](https://azure.github.io/typespec-azure/docs/howtos/versioning/06-evolving-apis/): Guidance for applying versioning decorators when APIs evolve. diff --git a/.github/skills/azure-typespec-author/references/validation.md b/.github/skills/azure-typespec-author/references/validation.md index 750baa5bd56..f1e665f8418 100644 --- a/.github/skills/azure-typespec-author/references/validation.md +++ b/.github/skills/azure-typespec-author/references/validation.md @@ -1,25 +1,36 @@ # Validation -Run all sub-steps in order after applying changes. +After applying changes (Step 4), run through all sub-steps below in order. -| Sub-step | Action | When | -| -------- | ------------------------------- | -------------------------- | -| 5.1 | `azsdk_run_typespec_validation` | Always | -| 5.2 | `tsp compile .` | Always | -| 5.3 | Example verification | API version evolution only | +| Sub-step | Action | When | +| -------- | ---------------------------------- | -------------------------- | +| 5.1 | TypeSpec Validation (error checks) | Always | +| 5.2 | `tsp compile .` (generate swagger) | Always | +| 5.3 | Example Verification | API Version Evolution only | -### 5.1: TypeSpec Validation +> Steps 5.1 and 5.2 serve different purposes. Step 5.1 validates for errors/warnings. Step 5.2 compiles and generates the OpenAPI `.json` output files. Both must be executed. -Invoke `azsdk_run_typespec_validation` with the project root. On failure → fix → re-run. Limit to 3 retry attempts; if still failing after 3 retries, stop and report the remaining errors to the user. +### Step 5.1: TypeSpec Validation -### 5.2: Compile +Invoke `azure-sdk-mcp:azsdk_run_typespec_validation` with the TypeSpec project root path. -Run `tsp compile .` from the project root. Verify `.json` output under the directory specified by the `@azure-tools/typespec-autorest` entry in the project's tspconfig.yaml. Fix compile errors if any. +- **Pass** → proceed to Step 5.2. +- **Fail** → fix with minimal, scoped changes, then re-run. Repeat until resolved. -> 5.1 checks for errors/warnings; 5.2 generates the OpenAPI output. Both are required. +> Never skip this step, even for trivial changes. -### 5.3: Example Verification +### Step 5.2: Compile successfully -Verify `{project-root}/{version-status}/{target-version}/examples/` exists with `.json` files using the correct `api-version`. If missing, copy from the previous version's examples and update `api-version`. Skip example verification for XML-based specs, as the tooling does not support examples for XML specifications. +> This step is separate from Step 5.1. Validation alone does not produce output files — you must also run `tsp compile .` to generate the OpenAPI swagger. -Verify that any example folder for an API version that no longer exists in the `Versions` enum has been deleted. For each folder under `{project-root}/{version-status}/`, check that the folder name matches an entry in the `Versions` enum. If a folder exists for a removed version, delete it. +Run `tsp compile .` from the TypeSpec project root path. After compilation succeeds, verify that the swagger `.json` file has been generated under `{TypeSpec project root}/{version-status}/{target-version}/` (e.g. `preview/2025-01-01-preview/widget.json`). Fix any compile errors if they occur. + +### Step 5.3: Example Verification + +> Applies only for API Version Evolution tasks + +Verify that the example folder set up in Step 3 (copied from the latest version's `examples/` into `{TypeSpec project root}/{version-status}/{target-version}/examples/`) exists and contains example files. + +1. **Folder exists** — confirm `{TypeSpec project root}/{version-status}/{target-version}/examples/` was created. If missing, copy all `.json` files from the latest version's `examples/` folder. +2. **Files exist** — confirm the folder contains at least one `.json` example file. If empty, copy examples from the latest version's `examples/` folder. +3. **api-version updated** — each example file must use the correct `api-version` value matching the target version (e.g. `2024-02-01-preview`, not the source version). diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index bbca7b4399f..4da0c8cbe9d 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -9,7 +9,7 @@ parameters: - name: SkillBranch displayName: Branch containing the azure-typespec-author skill code to evaluate (leave empty to use the branch this pipeline was triggered from) type: string - default: '' + default: 'remove-task-type-classification' extends: template: /eng/pipelines/templates/stages/1es-redirect.yml From 09a23e390d91cce9f0548a34a58136a171f397ca Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 17:06:45 +0800 Subject: [PATCH 83/98] Set MCP server timeout to '30m' (was bare int 300000) --- .github/skills/azure-typespec-author/evaluate/.vally.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/skills/azure-typespec-author/evaluate/.vally.yaml b/.github/skills/azure-typespec-author/evaluate/.vally.yaml index de8e9e1a5a6..27be45b493d 100644 --- a/.github/skills/azure-typespec-author/evaluate/.vally.yaml +++ b/.github/skills/azure-typespec-author/evaluate/.vally.yaml @@ -14,7 +14,7 @@ environments: type: stdio command: dotnet args: ["run", "--project", "../../../../tools/azsdk-cli/Azure.Sdk.Tools.Cli", "--", "start"] - timeout: 300000 + timeout: "30m" env: AZSDKTOOLS_AGENT_TESTING: "true" AZSDKTOOLS_COLLECT_TELEMETRY: "false" @@ -25,7 +25,7 @@ environments: type: stdio command: dotnet args: ["run", "--project", "../../../../tools/azsdk-cli/Azure.Sdk.Tools.Cli", "--", "start"] - timeout: 300000 + timeout: "30m" env: AZSDKTOOLS_AGENT_TESTING: "false" AZSDKTOOLS_COLLECT_TELEMETRY: "false" From 06094769872b660ce4129b795bf4f0acdda447cd Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 17:17:11 +0800 Subject: [PATCH 84/98] Use trigger branch by default for SkillBranch (was hardcoded to 'remove-task-type-classification') --- .../azure-typespec-author-benchmark.yml | 23 ------------------- 1 file changed, 23 deletions(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index 4da0c8cbe9d..a6ac5051f9c 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -6,10 +6,6 @@ parameters: - name: PythonVersion type: string default: '3.10' -- name: SkillBranch - displayName: Branch containing the azure-typespec-author skill code to evaluate (leave empty to use the branch this pipeline was triggered from) - type: string - default: 'remove-task-type-classification' extends: template: /eng/pipelines/templates/stages/1es-redirect.yml @@ -35,25 +31,6 @@ extends: - checkout: self fetchDepth: 0 - # Optionally check out a specific branch that contains the - # azure-typespec-author skill code to evaluate. When the - # SkillBranch parameter is empty we keep the branch that - # triggered the pipeline. - - script: | - set -e - BRANCH="${{ parameters.SkillBranch }}" - if [ -z "$BRANCH" ]; then - echo "SkillBranch parameter not provided; using the source branch checked out by the pipeline." - git rev-parse --abbrev-ref HEAD - git rev-parse HEAD - exit 0 - fi - echo "Checking out skill branch: $BRANCH" - git fetch origin "$BRANCH" - git checkout "$BRANCH" - git rev-parse HEAD - displayName: Checkout skill branch - # Install Go and build/start the QA bot backend - script: | echo "Downloading Go 1.24.0..." From 9a44da62964d95b1ad7f59512e26daba6810ac6a Mon Sep 17 00:00:00 2001 From: Copilot <223556219+Copilot@users.noreply.github.com> Date: Wed, 6 May 2026 17:21:23 +0800 Subject: [PATCH 85/98] Re-add SkillBranch param; overlay only skill source (preserve evaluate/) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../azure-typespec-author-benchmark.yml | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index a6ac5051f9c..8ec34abac8d 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -6,6 +6,10 @@ parameters: - name: PythonVersion type: string default: '3.10' +- name: SkillBranch + displayName: Branch containing the azure-typespec-author skill source (SKILL.md + references/) to evaluate. Leave empty to use the branch this pipeline was triggered from. + type: string + default: '' extends: template: /eng/pipelines/templates/stages/1es-redirect.yml @@ -31,6 +35,31 @@ extends: - checkout: self fetchDepth: 0 + # Optionally overlay the azure-typespec-author skill source + # (SKILL.md + references/) from a different branch so we can + # evaluate skill changes that live on another branch while + # keeping the evaluate/ directory and pipeline config from + # the branch this pipeline was triggered from. + - script: | + set -e + BRANCH="${{ parameters.SkillBranch }}" + if [ -z "$BRANCH" ]; then + echo "SkillBranch parameter not provided; using the source branch checked out by the pipeline." + git rev-parse --abbrev-ref HEAD + git rev-parse HEAD + exit 0 + fi + echo "Overlaying azure-typespec-author skill source from branch: $BRANCH" + git fetch origin "$BRANCH" + rm -rf .github/skills/azure-typespec-author/SKILL.md \ + .github/skills/azure-typespec-author/references + git checkout "origin/$BRANCH" -- \ + .github/skills/azure-typespec-author/SKILL.md \ + .github/skills/azure-typespec-author/references + echo "Skill source overlaid from origin/$BRANCH ($(git rev-parse origin/$BRANCH))" + ls -R .github/skills/azure-typespec-author + displayName: Checkout skill branch + # Install Go and build/start the QA bot backend - script: | echo "Downloading Go 1.24.0..." From d3c0d7a0b2f7f068fd492eef68c15e5063dc8bd0 Mon Sep 17 00:00:00 2001 From: Copilot <223556219+Copilot@users.noreply.github.com> Date: Wed, 6 May 2026 17:32:27 +0800 Subject: [PATCH 86/98] Make SkillBranch a dropdown of selectable branches Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- eng/pipelines/azure-typespec-author-benchmark.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index 8ec34abac8d..d65254cc454 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -7,9 +7,12 @@ parameters: type: string default: '3.10' - name: SkillBranch - displayName: Branch containing the azure-typespec-author skill source (SKILL.md + references/) to evaluate. Leave empty to use the branch this pipeline was triggered from. + displayName: Branch containing the azure-typespec-author skill source (SKILL.md + references/) to evaluate. type: string - default: '' + default: 'remove-task-type-classification' + values: + - main + - remove-task-type-classification extends: template: /eng/pipelines/templates/stages/1es-redirect.yml From 492b2c19a4fc0a0966233272bdce75e460d30d6f Mon Sep 17 00:00:00 2001 From: Copilot <223556219+Copilot@users.noreply.github.com> Date: Wed, 6 May 2026 17:37:54 +0800 Subject: [PATCH 87/98] Revert "Make SkillBranch a dropdown of selectable branches" This reverts commit d3c0d7a0b2f7f068fd492eef68c15e5063dc8bd0. --- eng/pipelines/azure-typespec-author-benchmark.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index d65254cc454..8ec34abac8d 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -7,12 +7,9 @@ parameters: type: string default: '3.10' - name: SkillBranch - displayName: Branch containing the azure-typespec-author skill source (SKILL.md + references/) to evaluate. + displayName: Branch containing the azure-typespec-author skill source (SKILL.md + references/) to evaluate. Leave empty to use the branch this pipeline was triggered from. type: string - default: 'remove-task-type-classification' - values: - - main - - remove-task-type-classification + default: '' extends: template: /eng/pipelines/templates/stages/1es-redirect.yml From 886c45939e7fa4801cedadce4c57cc0d0ad5a56a Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 18:28:43 +0800 Subject: [PATCH 88/98] Reduce timeout from 30 minutes to 10 minutes --- .github/skills/azure-typespec-author/evaluate/.vally.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/skills/azure-typespec-author/evaluate/.vally.yaml b/.github/skills/azure-typespec-author/evaluate/.vally.yaml index 27be45b493d..c44bdfcab93 100644 --- a/.github/skills/azure-typespec-author/evaluate/.vally.yaml +++ b/.github/skills/azure-typespec-author/evaluate/.vally.yaml @@ -25,7 +25,7 @@ environments: type: stdio command: dotnet args: ["run", "--project", "../../../../tools/azsdk-cli/Azure.Sdk.Tools.Cli", "--", "start"] - timeout: "30m" + timeout: "10m" env: AZSDKTOOLS_AGENT_TESTING: "false" AZSDKTOOLS_COLLECT_TELEMETRY: "false" @@ -44,4 +44,4 @@ suites: warning: evals: ["evals/005001.eval.yaml"] all: - evals: ["evals/*.eval.yaml"] \ No newline at end of file + evals: ["evals/*.eval.yaml"] From 526bf22ec51a52fa2024be40f69cae8780183799 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 18:29:27 +0800 Subject: [PATCH 89/98] Update .vally.yaml --- .github/skills/azure-typespec-author/evaluate/.vally.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/skills/azure-typespec-author/evaluate/.vally.yaml b/.github/skills/azure-typespec-author/evaluate/.vally.yaml index c44bdfcab93..72a3435ae00 100644 --- a/.github/skills/azure-typespec-author/evaluate/.vally.yaml +++ b/.github/skills/azure-typespec-author/evaluate/.vally.yaml @@ -14,7 +14,7 @@ environments: type: stdio command: dotnet args: ["run", "--project", "../../../../tools/azsdk-cli/Azure.Sdk.Tools.Cli", "--", "start"] - timeout: "30m" + timeout: "10m" env: AZSDKTOOLS_AGENT_TESTING: "true" AZSDKTOOLS_COLLECT_TELEMETRY: "false" From 5247d1d3f1f4b08258aaee6fbb4fe0f888a6cfa4 Mon Sep 17 00:00:00 2001 From: Haoling Dong <87355844+haolingdong-msft@users.noreply.github.com> Date: Wed, 6 May 2026 18:30:10 +0800 Subject: [PATCH 90/98] Add verbose flag to vally eval command --- eng/pipelines/azure-typespec-author-benchmark.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index 8ec34abac8d..e2480bdde49 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -144,7 +144,7 @@ extends: for f in evals/*.eval.yaml; do sed -i -E 's/^([[:space:]]*timeout:[[:space:]]+)([0-9]+)([[:space:]]*(#.*)?)$/\1"\2s"\3/' "$f" done - vally eval --suite all --output-dir results + vally eval --suite all --output-dir results --verbose displayName: Run evaluations continueOnError: true env: @@ -156,4 +156,4 @@ extends: path: $(Build.SourcesDirectory)/.github/skills/azure-typespec-author/evaluate/results artifact: eval-results-$(Build.BuildId) displayName: Upload eval results - condition: always() \ No newline at end of file + condition: always() From 5639d950fb439ff11280469fee39253250929a0d Mon Sep 17 00:00:00 2001 From: Haoling Dong Date: Wed, 6 May 2026 20:12:01 +0800 Subject: [PATCH 91/98] Pre-build MCP server, auth NuGet, install typespec, smoke test Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../azure-typespec-author-benchmark.yml | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index e2480bdde49..3a91c0acc55 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -113,6 +113,24 @@ extends: inputs: version: '8.x' + # Authenticate to NuGet so the azsdk-cli MCP server can restore + # packages from the internal Azure Artifacts feed (the 1ES pool + # blocks direct egress to nuget.org). + - task: NuGetAuthenticate@1 + displayName: Authenticate NuGet + + # Pre-build the azsdk-cli (the MCP server). vally launches it + # via `dotnet run` (defaults to Debug, no -c flag), but doing + # the restore + build here surfaces any failure as a clear + # pipeline error instead of a silent MCP server startup + # failure during evaluations. + - script: | + set -e + dotnet restore tools/azsdk-cli/Azure.Sdk.Tools.Cli/Azure.Sdk.Tools.Cli.csproj + dotnet build tools/azsdk-cli/Azure.Sdk.Tools.Cli/Azure.Sdk.Tools.Cli.csproj \ + --no-restore --nologo + displayName: Build azsdk-cli (MCP server) + # Install Node.js, Vally CLI, and Copilot SDK. # Use the internal Azure Artifacts npm mirror (with auth) because # the 1ES managed pool blocks direct egress to registry.npmjs.org. @@ -132,6 +150,44 @@ extends: - script: npm install --global @github/copilot-sdk --userconfig $(Build.SourcesDirectory)/.npmrc displayName: Install Copilot SDK + # Pre-install TypeSpec compiler globally from the internal npm + # mirror so `azsdk_run_typespec_validation` (and any direct + # `npx tsp`/`npm install` the agent attempts) succeeds without + # network access to registry.npmjs.org. + - script: | + set -e + npm install --global @typespec/compiler --userconfig $(Build.SourcesDirectory)/.npmrc + echo "tsp version:" + tsp --version || true + displayName: Install TypeSpec compiler + + # Smoke test: spin up the MCP server and verify it advertises the + # tools the eval graders require. Fails fast if the MCP server + # can't start or doesn't expose the expected tools. + - script: | + set -e + cd $(Build.SourcesDirectory)/tools/azsdk-cli/Azure.Sdk.Tools.Cli + REQ='{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"smoke","version":"1.0"}}} + {"jsonrpc":"2.0","method":"notifications/initialized"} + {"jsonrpc":"2.0","id":2,"method":"tools/list"}' + echo "Starting MCP server smoke test..." + printf '%s\n' "$REQ" | timeout 60 dotnet run --no-build -- start > /tmp/mcp-smoke.log 2>&1 || true + echo "--- MCP smoke output (head) ---" + head -200 /tmp/mcp-smoke.log || true + echo "--- Tools advertised ---" + if grep -q 'azsdk_typespec_generate_authoring_plan' /tmp/mcp-smoke.log \ + && grep -q 'azsdk_run_typespec_validation' /tmp/mcp-smoke.log; then + echo "OK: required MCP tools are advertised" + else + echo "ERROR: MCP server did not advertise the required tools" + exit 1 + fi + displayName: MCP server smoke test + env: + AZSDKTOOLS_AGENT_TESTING: "true" + AZSDKTOOLS_COLLECT_TELEMETRY: "false" + AZURE_SDK_KB_ENDPOINT: "http://localhost:8088" + # Run evaluations # The vally config (.vally.yaml) lives in the skill's evaluate/ # directory; cd there so vally discovers evals/*.eval.yaml. From fc7889c3eb10644d1c6b170f73133e81ae300193 Mon Sep 17 00:00:00 2001 From: Haoling Dong Date: Wed, 6 May 2026 20:19:40 +0800 Subject: [PATCH 92/98] Install .NET SDK from global.json (9.0.x) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- eng/pipelines/azure-typespec-author-benchmark.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index 3a91c0acc55..204176738ba 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -107,7 +107,13 @@ extends: SYSTEM_ACCESSTOKEN: $(System.AccessToken) AZURE_APPCONFIG_ENDPOINT: $(AZURE_APPCONFIG_ENDPOINT) - # Install .NET SDK for azsdk-cli MCP server + # Install .NET SDK for azsdk-cli MCP server. + # Use the version pinned in global.json so the build/restore works. + - task: UseDotNet@2 + displayName: Install .NET SDK (global.json) + inputs: + useGlobalJson: true + workingDirectory: $(Build.SourcesDirectory) - task: UseDotNet@2 displayName: Install .NET 8.0 SDK inputs: From 8c60517a945b539c567826e5895de3ea31ad05e5 Mon Sep 17 00:00:00 2001 From: Haoling Dong Date: Wed, 6 May 2026 20:40:36 +0800 Subject: [PATCH 93/98] Make MCP smoke test informational (list tools, dont fail) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../azure-typespec-author-benchmark.yml | 31 +++++++------------ 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index 204176738ba..501867a70f7 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -167,28 +167,19 @@ extends: tsp --version || true displayName: Install TypeSpec compiler - # Smoke test: spin up the MCP server and verify it advertises the - # tools the eval graders require. Fails fast if the MCP server - # can't start or doesn't expose the expected tools. + # Smoke test (informational only): try to start MCP server and + # capture any startup errors. We don't fail the pipeline here + # because reliably driving an MCP stdio JSON-RPC handshake from + # a shell is fragile; vally/copilot-sdk drives the protocol + # properly during the eval step. - script: | - set -e cd $(Build.SourcesDirectory)/tools/azsdk-cli/Azure.Sdk.Tools.Cli - REQ='{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"smoke","version":"1.0"}}} - {"jsonrpc":"2.0","method":"notifications/initialized"} - {"jsonrpc":"2.0","id":2,"method":"tools/list"}' - echo "Starting MCP server smoke test..." - printf '%s\n' "$REQ" | timeout 60 dotnet run --no-build -- start > /tmp/mcp-smoke.log 2>&1 || true - echo "--- MCP smoke output (head) ---" - head -200 /tmp/mcp-smoke.log || true - echo "--- Tools advertised ---" - if grep -q 'azsdk_typespec_generate_authoring_plan' /tmp/mcp-smoke.log \ - && grep -q 'azsdk_run_typespec_validation' /tmp/mcp-smoke.log; then - echo "OK: required MCP tools are advertised" - else - echo "ERROR: MCP server did not advertise the required tools" - exit 1 - fi - displayName: MCP server smoke test + echo "--- CLI commands ---" + dotnet run --no-build -- --help 2>&1 | head -40 || true + echo "--- list registered MCP tools ---" + dotnet run --no-build -- list 2>&1 | head -200 || true + displayName: MCP server smoke test (informational) + continueOnError: true env: AZSDKTOOLS_AGENT_TESTING: "true" AZSDKTOOLS_COLLECT_TELEMETRY: "false" From 45f176ffc64acd96875eeefccc09201ef4907b6a Mon Sep 17 00:00:00 2001 From: JoyerJin <116236375+JoyerJin@users.noreply.github.com> Date: Thu, 7 May 2026 11:36:13 +0800 Subject: [PATCH 94/98] install vally 0.4.0 --- eng/pipelines/azure-typespec-author-benchmark.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index 501867a70f7..347ee62b94a 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -150,7 +150,7 @@ extends: npmrcPath: $(Build.SourcesDirectory)/.npmrc registryUrl: https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-tools/npm/registry/ - - script: npm install --global @microsoft/vally-cli --userconfig $(Build.SourcesDirectory)/.npmrc + - script: npm install --global @microsoft/vally-cli@0.4.0 --userconfig $(Build.SourcesDirectory)/.npmrc displayName: Install Vally CLI - script: npm install --global @github/copilot-sdk --userconfig $(Build.SourcesDirectory)/.npmrc From 1aa72b3aaa08d090f7fac5a91b416772a5ef005f Mon Sep 17 00:00:00 2001 From: JoyerJin <116236375+JoyerJin@users.noreply.github.com> Date: Thu, 7 May 2026 12:08:03 +0800 Subject: [PATCH 95/98] edit fixture path for 005-008 --- .../evaluate/evals/001005.eval.yaml | 46 ++++++++-------- .../evaluate/evals/001006.eval.yaml | 46 ++++++++-------- .../evaluate/evals/001007.eval.yaml | 52 +++++++++---------- .../evaluate/evals/001008.eval.yaml | 52 +++++++++---------- 4 files changed, 98 insertions(+), 98 deletions(-) diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml index 1cfbc574abf..a0936d46d95 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml @@ -23,51 +23,51 @@ stimuli: max_tokens: 5000 environment: files: - - src: ../fixtures/001005-version-add-preview-after-preview\employee.tsp + - src: ../fixtures/001005-version-add-preview-after-preview/employee.tsp dest: employee.tsp - - src: ../fixtures/001005-version-add-preview-after-preview\main.tsp + - src: ../fixtures/001005-version-add-preview-after-preview/main.tsp dest: main.tsp - - src: ../fixtures/001005-version-add-preview-after-preview\shared.tsp + - src: ../fixtures/001005-version-add-preview-after-preview/shared.tsp dest: shared.tsp - - src: ../fixtures/001005-version-add-preview-after-preview\tspconfig.yaml + - src: ../fixtures/001005-version-add-preview-after-preview/tspconfig.yaml dest: tspconfig.yaml - - src: ../fixtures/001005-version-add-preview-after-preview\package.json + - src: ../fixtures/001005-version-add-preview-after-preview/package.json dest: package.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2024-10-01-preview\Operations_List_MinimumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json dest: examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json dest: examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_ListBySubscription_MinimumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json dest: examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001005-version-add-preview-after-preview\examples\2021-10-01\Operations_List_MinimumSet_Gen.json + - src: ../fixtures/001005-version-add-preview-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json graders: - type: tool-calls diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001006.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001006.eval.yaml index aba7eeb716c..009bbf88669 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001006.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001006.eval.yaml @@ -23,51 +23,51 @@ stimuli: max_tokens: 5000 environment: files: - - src: ../fixtures/001006-version-add-preview-after-stable\employee.tsp + - src: ../fixtures/001006-version-add-preview-after-stable/employee.tsp dest: employee.tsp - - src: ../fixtures/001006-version-add-preview-after-stable\main.tsp + - src: ../fixtures/001006-version-add-preview-after-stable/main.tsp dest: main.tsp - - src: ../fixtures/001006-version-add-preview-after-stable\shared.tsp + - src: ../fixtures/001006-version-add-preview-after-stable/shared.tsp dest: shared.tsp - - src: ../fixtures/001006-version-add-preview-after-stable\tspconfig.yaml + - src: ../fixtures/001006-version-add-preview-after-stable/tspconfig.yaml dest: tspconfig.yaml - - src: ../fixtures/001006-version-add-preview-after-stable\package.json + - src: ../fixtures/001006-version-add-preview-after-stable/package.json dest: package.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Operations_List_MaximumSet_Gen.json dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2021-10-01\Operations_List_MinimumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable/examples/2021-10-01/Operations_List_MinimumSet_Gen.json dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json dest: examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json dest: examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Get_MaximumSet_Gen.json dest: examples/2024-10-01/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json dest: examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json dest: examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json dest: examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_ListBySubscription_MinimumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json dest: examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Employees_Update_MaximumSet_Gen.json dest: examples/2024-10-01/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Operations_List_MaximumSet_Gen.json dest: examples/2024-10-01/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001006-version-add-preview-after-stable\examples\2024-10-01\Operations_List_MinimumSet_Gen.json + - src: ../fixtures/001006-version-add-preview-after-stable/examples/2024-10-01/Operations_List_MinimumSet_Gen.json dest: examples/2024-10-01/Operations_List_MinimumSet_Gen.json graders: - type: tool-calls diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001007.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001007.eval.yaml index ffbbbfb90ca..6a6bc00c0f9 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001007.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001007.eval.yaml @@ -23,57 +23,57 @@ stimuli: max_tokens: 5000 environment: files: - - src: ../fixtures/001007-version-add-stable-after-preview\employee.tsp + - src: ../fixtures/001007-version-add-stable-after-preview/employee.tsp dest: employee.tsp - - src: ../fixtures/001007-version-add-stable-after-preview\main.tsp + - src: ../fixtures/001007-version-add-stable-after-preview/main.tsp dest: main.tsp - - src: ../fixtures/001007-version-add-stable-after-preview\shared.tsp + - src: ../fixtures/001007-version-add-stable-after-preview/shared.tsp dest: shared.tsp - - src: ../fixtures/001007-version-add-stable-after-preview\tspconfig.yaml + - src: ../fixtures/001007-version-add-stable-after-preview/tspconfig.yaml dest: tspconfig.yaml - - src: ../fixtures/001007-version-add-stable-after-preview\package.json + - src: ../fixtures/001007-version-add-stable-after-preview/package.json dest: package.json - - src: ../fixtures/001007-version-add-stable-after-preview\readme.md + - src: ../fixtures/001007-version-add-stable-after-preview/readme.md dest: readme.md - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json dest: examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_ListBySubscription_MinimumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json dest: examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Operations_List_MaximumSet_Gen.json dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2021-10-01\Operations_List_MinimumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview/examples/2021-10-01/Operations_List_MinimumSet_Gen.json dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_ListByResourceGroup_MinimumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json dest: examples/2024-10-01-preview/Employees_ListByResourceGroup_MinimumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_ListBySubscription_MinimumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json dest: examples/2024-10-01-preview/Employees_ListBySubscription_MinimumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json dest: examples/2024-10-01-preview/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001007-version-add-stable-after-preview\examples\2024-10-01-preview\Operations_List_MinimumSet_Gen.json + - src: ../fixtures/001007-version-add-stable-after-preview/examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json dest: examples/2024-10-01-preview/Operations_List_MinimumSet_Gen.json graders: - type: tool-calls diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001008.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001008.eval.yaml index a7aeb213485..dcdb2333742 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001008.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001008.eval.yaml @@ -23,57 +23,57 @@ stimuli: max_tokens: 5000 environment: files: - - src: ../fixtures/001008-version-add-stable-after-stable\employee.tsp + - src: ../fixtures/001008-version-add-stable-after-stable/employee.tsp dest: employee.tsp - - src: ../fixtures/001008-version-add-stable-after-stable\main.tsp + - src: ../fixtures/001008-version-add-stable-after-stable/main.tsp dest: main.tsp - - src: ../fixtures/001008-version-add-stable-after-stable\shared.tsp + - src: ../fixtures/001008-version-add-stable-after-stable/shared.tsp dest: shared.tsp - - src: ../fixtures/001008-version-add-stable-after-stable\tspconfig.yaml + - src: ../fixtures/001008-version-add-stable-after-stable/tspconfig.yaml dest: tspconfig.yaml - - src: ../fixtures/001008-version-add-stable-after-stable\package.json + - src: ../fixtures/001008-version-add-stable-after-stable/package.json dest: package.json - - src: ../fixtures/001008-version-add-stable-after-stable\readme.md + - src: ../fixtures/001008-version-add-stable-after-stable/readme.md dest: readme.md - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Get_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json dest: examples/2021-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_ListBySubscription_MinimumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json dest: examples/2021-10-01/Employees_ListBySubscription_MinimumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Employees_Update_MaximumSet_Gen.json dest: examples/2021-10-01/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Operations_List_MaximumSet_Gen.json dest: examples/2021-10-01/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2021-10-01\Operations_List_MinimumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable/examples/2021-10-01/Operations_List_MinimumSet_Gen.json dest: examples/2021-10-01/Operations_List_MinimumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_CreateOrUpdate_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json dest: examples/2024-10-01/Employees_CreateOrUpdate_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_Delete_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json dest: examples/2024-10-01/Employees_Delete_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_Get_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Get_MaximumSet_Gen.json dest: examples/2024-10-01/Employees_Get_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_ListByResourceGroup_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json dest: examples/2024-10-01/Employees_ListByResourceGroup_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_ListByResourceGroup_MinimumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json dest: examples/2024-10-01/Employees_ListByResourceGroup_MinimumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_ListBySubscription_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json dest: examples/2024-10-01/Employees_ListBySubscription_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_ListBySubscription_MinimumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json dest: examples/2024-10-01/Employees_ListBySubscription_MinimumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Employees_Update_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Employees_Update_MaximumSet_Gen.json dest: examples/2024-10-01/Employees_Update_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Operations_List_MaximumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Operations_List_MaximumSet_Gen.json dest: examples/2024-10-01/Operations_List_MaximumSet_Gen.json - - src: ../fixtures/001008-version-add-stable-after-stable\examples\2024-10-01\Operations_List_MinimumSet_Gen.json + - src: ../fixtures/001008-version-add-stable-after-stable/examples/2024-10-01/Operations_List_MinimumSet_Gen.json dest: examples/2024-10-01/Operations_List_MinimumSet_Gen.json graders: - type: tool-calls From f186bb8fe58f12ce44728cc680a472bce1d704cc Mon Sep 17 00:00:00 2001 From: JoyerJin <116236375+JoyerJin@users.noreply.github.com> Date: Thu, 7 May 2026 16:15:30 +0800 Subject: [PATCH 96/98] change timeout and add testing with workers running --- .../azure-typespec-author/evaluate/.vally.yaml | 2 +- .../evaluate/evals/001001.eval.yaml | 8 ++++---- .../evaluate/evals/001002.eval.yaml | 8 ++++---- .../evaluate/evals/001003.eval.yaml | 8 ++++---- .../evaluate/evals/001004.eval.yaml | 8 ++++---- .../evaluate/evals/001005.eval.yaml | 9 +++++---- .../evaluate/evals/001006.eval.yaml | 9 +++++---- .../evaluate/evals/001007.eval.yaml | 9 +++++---- .../evaluate/evals/001008.eval.yaml | 9 +++++---- .../evaluate/evals/001009.eval.yaml | 8 ++++---- .../evaluate/evals/001010.eval.yaml | 8 ++++---- .../evaluate/evals/001011.eval.yaml | 8 ++++---- .../evaluate/evals/001012.eval.yaml | 8 ++++---- .../evaluate/evals/001013.eval.yaml | 8 ++++---- .../evaluate/evals/002001.eval.yaml | 8 ++++---- .../evaluate/evals/002002.eval.yaml | 8 ++++---- .../evaluate/evals/002003.eval.yaml | 8 ++++---- .../evaluate/evals/002004.eval.yaml | 8 ++++---- .../evaluate/evals/002005.eval.yaml | 8 ++++---- .../evaluate/evals/002006.eval.yaml | 8 ++++---- .../evaluate/evals/002007.eval.yaml | 8 ++++---- .../evaluate/evals/002008.eval.yaml | 8 ++++---- .../evaluate/evals/002009.eval.yaml | 8 ++++---- .../evaluate/evals/002010.eval.yaml | 8 ++++---- .../evaluate/evals/003001.eval.yaml | 8 ++++---- .../evaluate/evals/003002.eval.yaml | 8 ++++---- .../evaluate/evals/004001.eval.yaml | 8 ++++---- .../evaluate/evals/004002.eval.yaml | 8 ++++---- .../evaluate/evals/004003.eval.yaml | 8 ++++---- .../evaluate/evals/005001.eval.yaml | 8 ++++---- .../azure-typespec-author/evaluate/evals/eval.yaml | 2 +- eng/pipelines/azure-typespec-author-benchmark.yml | 14 ++++++++++++++ 32 files changed, 136 insertions(+), 118 deletions(-) diff --git a/.github/skills/azure-typespec-author/evaluate/.vally.yaml b/.github/skills/azure-typespec-author/evaluate/.vally.yaml index 72a3435ae00..aac362f065f 100644 --- a/.github/skills/azure-typespec-author/evaluate/.vally.yaml +++ b/.github/skills/azure-typespec-author/evaluate/.vally.yaml @@ -16,7 +16,7 @@ environments: args: ["run", "--project", "../../../../tools/azsdk-cli/Azure.Sdk.Tools.Cli", "--", "start"] timeout: "10m" env: - AZSDKTOOLS_AGENT_TESTING: "true" + AZSDKTOOLS_AGENT_TESTING: "false" AZSDKTOOLS_COLLECT_TELEMETRY: "false" AZURE_SDK_KB_ENDPOINT: "http://localhost:8088" azsdk-mcp-remote-kb: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml index 2a1beac2ea3..00e66ba8f1b 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001001.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml index 3d47e529dd4..b2642759cc3 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001002.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml index 9e06b099cbf..18c60e02666 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001003.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml index 4874602b986..d2fb436654f 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001004.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml index a0936d46d95..afcaeacf921 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001005.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: @@ -74,6 +74,7 @@ stimuli: config: required: - edit + - web_fetch - azure-sdk-mcp-azsdk_run_typespec_validation - type: skill-invocation config: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001006.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001006.eval.yaml index 009bbf88669..ce8fb183df9 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001006.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001006.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: @@ -74,6 +74,7 @@ stimuli: config: required: - edit + - web_fetch - azure-sdk-mcp-azsdk_run_typespec_validation - type: skill-invocation config: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001007.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001007.eval.yaml index 6a6bc00c0f9..b474e77add5 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001007.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001007.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: @@ -80,6 +80,7 @@ stimuli: config: required: - edit + - web_fetch - azure-sdk-mcp-azsdk_run_typespec_validation - type: skill-invocation config: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001008.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001008.eval.yaml index dcdb2333742..2a931ad453b 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001008.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001008.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: @@ -80,6 +80,7 @@ stimuli: config: required: - edit + - web_fetch - azure-sdk-mcp-azsdk_run_typespec_validation - type: skill-invocation config: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001009.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001009.eval.yaml index 0ccd82f3c1a..4f300d120bf 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001009.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001009.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001010.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001010.eval.yaml index 57168a7b0ef..f07692373b6 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001010.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001010.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001011.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001011.eval.yaml index 8dfe979d751..e658dbe3275 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001011.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001011.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001012.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001012.eval.yaml index 9e84c197926..f1110c53445 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001012.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001012.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/001013.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/001013.eval.yaml index 01881caa3cf..e7ff82bfda2 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/001013.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/001013.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/002001.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/002001.eval.yaml index 39b8b2bd510..4e82c8460ad 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/002001.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/002001.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/002002.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/002002.eval.yaml index f2a0cc73e6c..a0ab2ea4910 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/002002.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/002002.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/002003.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/002003.eval.yaml index f7a031aa6df..ae679640d74 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/002003.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/002003.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/002004.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/002004.eval.yaml index 7235f71a581..654a6326b8c 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/002004.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/002004.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/002005.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/002005.eval.yaml index ec80bdbaa06..4b99638ff29 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/002005.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/002005.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/002006.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/002006.eval.yaml index 2ce681788ad..4f506cfdbf1 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/002006.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/002006.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/002007.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/002007.eval.yaml index e8d63f442af..52ada2b010d 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/002007.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/002007.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/002008.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/002008.eval.yaml index 19470a26ac9..17652dc75b8 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/002008.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/002008.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/002009.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/002009.eval.yaml index 998809a4b44..f934d9e717a 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/002009.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/002009.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/002010.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/002010.eval.yaml index d0da9d57842..34cc8ec3d1d 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/002010.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/002010.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/003001.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/003001.eval.yaml index f4e988804c1..b58615b1015 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/003001.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/003001.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/003002.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/003002.eval.yaml index 04633a4f0e9..1a5553f9e7e 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/003002.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/003002.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/004001.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/004001.eval.yaml index 92146c3516b..3ebe320c61e 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/004001.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/004001.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/004002.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/004002.eval.yaml index 7f0e4554d7b..6766ddef802 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/004002.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/004002.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/004003.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/004003.eval.yaml index 007860ff950..6475a92884f 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/004003.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/004003.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/005001.eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/005001.eval.yaml index 500463a240b..e3cb5fdcb17 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/005001.eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/005001.eval.yaml @@ -8,10 +8,10 @@ environment: azsdk-mcp # Execution configuration config: - runs: 1 # Trials per stimulus - timeout: "1800s" # Seconds per trial - model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution - executor: copilot-sdk # Which executor to use + runs: 1 # Trials per stimulus + timeout: "660s" # Seconds per trial + model: claude-opus-4.6 #gpt-4o #claude-sonnet-4.6 # Model for agent execution + executor: copilot-sdk # Which executor to use # Test cases stimuli: diff --git a/.github/skills/azure-typespec-author/evaluate/evals/eval.yaml b/.github/skills/azure-typespec-author/evaluate/evals/eval.yaml index b02a0868e0a..3d9ba95824b 100644 --- a/.github/skills/azure-typespec-author/evaluate/evals/eval.yaml +++ b/.github/skills/azure-typespec-author/evaluate/evals/eval.yaml @@ -13,7 +13,7 @@ environment: azsdk-mcp # Execution configuration config: runs: 1 - timeout: 1800 + timeout: 1200 model: claude-opus-4.6 executor: copilot-sdk # Cases are intentionally sorted by case id. diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index 347ee62b94a..2ff266b72a5 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -202,6 +202,15 @@ extends: continueOnError: true env: GITHUB_TOKEN: $(azuresdk-copilot-github-pat) + + - script: | + cd .github/skills/azure-typespec-author/evaluate + mkdir -p results-2 + vally eval --eval-spec eval.yaml --output-dir results-2 --workers 3 --verbose + displayName: Run evaluations + continueOnError: true + env: + GITHUB_TOKEN: $(azuresdk-copilot-github-pat) templateContext: outputs: @@ -210,3 +219,8 @@ extends: artifact: eval-results-$(Build.BuildId) displayName: Upload eval results condition: always() + - output: pipelineArtifact + path: $(Build.SourcesDirectory)/.github/skills/azure-typespec-author/evaluate/results-2 + artifact: eval-results2-$(Build.BuildId) + displayName: Upload eval results 2 + condition: always() From 0decb7c120bdcb9ea94b32d21a440b048f21df37 Mon Sep 17 00:00:00 2001 From: JoyerJin <116236375+JoyerJin@users.noreply.github.com> Date: Thu, 7 May 2026 18:20:21 +0800 Subject: [PATCH 97/98] Update display name for evaluation step in pipeline --- eng/pipelines/azure-typespec-author-benchmark.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index 2ff266b72a5..42910b1e0bf 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -207,8 +207,7 @@ extends: cd .github/skills/azure-typespec-author/evaluate mkdir -p results-2 vally eval --eval-spec eval.yaml --output-dir results-2 --workers 3 --verbose - displayName: Run evaluations - continueOnError: true + displayName: Run all evaluations env: GITHUB_TOKEN: $(azuresdk-copilot-github-pat) From 0eb2a552d1537d2854bcb35030c01dc94bb87b17 Mon Sep 17 00:00:00 2001 From: JoyerJin <116236375+JoyerJin@users.noreply.github.com> Date: Thu, 7 May 2026 18:30:37 +0800 Subject: [PATCH 98/98] Update second benchmark of pipeline for error handling Added continueOnError and condition to evaluation step. --- eng/pipelines/azure-typespec-author-benchmark.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/eng/pipelines/azure-typespec-author-benchmark.yml b/eng/pipelines/azure-typespec-author-benchmark.yml index 42910b1e0bf..f766bd53637 100644 --- a/eng/pipelines/azure-typespec-author-benchmark.yml +++ b/eng/pipelines/azure-typespec-author-benchmark.yml @@ -208,6 +208,8 @@ extends: mkdir -p results-2 vally eval --eval-spec eval.yaml --output-dir results-2 --workers 3 --verbose displayName: Run all evaluations + continueOnError: true + condition: succeededOrFailed() env: GITHUB_TOKEN: $(azuresdk-copilot-github-pat)