Add agentBaseType support.#4620
Conversation
commit: |
⚡ Benchmark Results
Full details – comparing
|
| Metric | Baseline | Current | Change |
|---|---|---|---|
| total | 🔴 655.5ms | 🔴 689.2ms | +5.1% 🔴 |
| loader | 🟢 196.8ms | 🟡 244.6ms | +24.3% 🔴 |
| resolver | 🟢 18.9ms | 🟢 18.3ms | -3.4% |
| checker | 🟡 210.4ms | 🟡 201.2ms | -4.4% |
| validation | 🟢 43.7ms | 🟢 41.3ms | -5.6% 🟢 |
| ↳ validation/@azure-tools/typespec-azure-core | 🟢 7.2ms | 🟢 6.9ms | -4.2% |
| ↳ validation/@typespec/http | 🟢 5.7ms | 🟢 5.7ms | -0.0% |
| ↳ validation/@typespec/rest | 🟢 0.6ms | 🟢 0.5ms | -4.2% |
| ↳ validation/@typespec/versioning | 🔴 28.5ms | 🔴 26.3ms | -7.8% 🟢 |
| ↳ validation/compiler | 🟢 1.5ms | 🟢 1.4ms | -6.3% |
| linter | 🟢 146.6ms | 🟢 138.5ms | -5.5% 🟢 |
| ↳ linter/@azure-tools/typespec-azure-core/auth-required | 🟢 0.0ms | 🟢 0.0ms | -9.1% |
| ↳ linter/@azure-tools/typespec-azure-core/bad-record-type | 🟢 0.2ms | 🟢 0.2ms | +0.4% |
| ↳ linter/@azure-tools/typespec-azure-core/byos | 🟢 6.2ms | 🟢 6.0ms | -3.4% |
| ↳ linter/@azure-tools/typespec-azure-core/casing-style | 🟢 0.7ms | 🟢 0.7ms | -3.9% |
| ↳ linter/@azure-tools/typespec-azure-core/composition-over-inheritance | 🟢 0.1ms | 🟢 0.1ms | -9.2% |
| ↳ linter/@azure-tools/typespec-azure-core/documentation-required | 🟢 0.9ms | 🟢 0.8ms | -9.6% |
| ↳ linter/@azure-tools/typespec-azure-core/friendly-name | 🟢 0.6ms | 🟢 0.6ms | -3.6% |
| ↳ linter/@azure-tools/typespec-azure-core/key-visibility-required | 🟢 0.2ms | 🟢 0.2ms | -8.1% |
| ↳ linter/@azure-tools/typespec-azure-core/known-encoding | 🟢 0.3ms | 🟢 0.3ms | -4.5% |
| ↳ linter/@azure-tools/typespec-azure-core/long-running-polling-operation-required | 🟢 0.3ms | 🟢 0.3ms | -6.7% |
| ↳ linter/@azure-tools/typespec-azure-core/no-case-mismatch | 🟢 0.3ms | 🟢 0.2ms | -11.8% |
| ↳ linter/@azure-tools/typespec-azure-core/no-closed-literal-union | 🟢 0.3ms | 🟢 0.2ms | -12.0% |
| ↳ linter/@azure-tools/typespec-azure-core/no-enum | 🟢 0.0ms | 🟢 0.0ms | -5.2% |
| ↳ linter/@azure-tools/typespec-azure-core/no-error-status-codes | 🟢 0.1ms | 🟢 0.1ms | -2.1% |
| ↳ linter/@azure-tools/typespec-azure-core/no-explicit-routes-resource-ops | 🟢 0.1ms | 🟢 0.1ms | -5.3% |
| ↳ linter/@azure-tools/typespec-azure-core/no-format | 🟢 0.6ms | 🟢 0.6ms | +1.1% |
| ↳ linter/@azure-tools/typespec-azure-core/no-generic-numeric | 🟢 0.4ms | 🟢 0.4ms | -8.0% |
| ↳ linter/@azure-tools/typespec-azure-core/no-header-explode | 🔴 21.4ms | 🔴 20.7ms | -3.1% |
| ↳ linter/@azure-tools/typespec-azure-core/no-legacy-usage | 🟢 1.1ms | 🟢 1.1ms | -2.4% |
| ↳ linter/@azure-tools/typespec-azure-core/no-multiple-discriminator | 🟢 0.1ms | 🟢 0.1ms | -6.9% |
| ↳ linter/@azure-tools/typespec-azure-core/no-nullable | 🟢 0.3ms | 🟢 0.2ms | -10.8% |
| ↳ linter/@azure-tools/typespec-azure-core/no-offsetdatetime | 🟢 1.2ms | 🟢 1.2ms | -1.9% |
| ↳ linter/@azure-tools/typespec-azure-core/no-openapi | 🟢 2.1ms | 🟢 1.9ms | -8.6% |
| ↳ linter/@azure-tools/typespec-azure-core/no-private-usage | 🟢 1.9ms | 🟢 1.8ms | -6.1% |
| ↳ linter/@azure-tools/typespec-azure-core/no-query-explode | 🔴 21.0ms | 🔴 20.9ms | -0.2% |
| ↳ linter/@azure-tools/typespec-azure-core/no-response-body | 🔴 25.4ms | 🔴 24.2ms | -4.8% |
| ↳ linter/@azure-tools/typespec-azure-core/no-rest-library-interfaces | 🟢 0.0ms | 🟢 0.0ms | -18.8% |
| ↳ linter/@azure-tools/typespec-azure-core/no-route-parameter-name-mismatch | 🟢 5.5ms | 🟢 5.3ms | -3.3% |
| ↳ linter/@azure-tools/typespec-azure-core/no-rpc-path-params | 🟢 0.2ms | 🟢 0.2ms | -9.4% |
| ↳ linter/@azure-tools/typespec-azure-core/no-string-discriminator | 🟢 0.0ms | 🟢 0.0ms | -7.7% |
| ↳ linter/@azure-tools/typespec-azure-core/no-unknown | 🟢 0.2ms | 🟢 0.2ms | -2.1% |
| ↳ linter/@azure-tools/typespec-azure-core/no-unnamed-union | 🟢 0.4ms | 🟢 0.3ms | -8.2% |
| ↳ linter/@azure-tools/typespec-azure-core/operation-missing-api-version | 🟢 0.2ms | 🟢 0.2ms | -11.3% |
| ↳ linter/@azure-tools/typespec-azure-core/request-body-problem | 🟢 0.3ms | 🟢 0.3ms | -4.2% |
| ↳ linter/@azure-tools/typespec-azure-core/require-versioned | 🟢 0.0ms | 🟢 0.0ms | -24.6% |
| ↳ linter/@azure-tools/typespec-azure-core/response-schema-problem | 🔴 25.3ms | 🔴 22.8ms | -10.1% 🟢 |
| ↳ linter/@azure-tools/typespec-azure-core/rpc-operation-request-body | 🟢 0.3ms | 🟢 0.3ms | -6.8% |
| ↳ linter/@azure-tools/typespec-azure-core/spread-discriminated-model | 🟢 0.3ms | 🟢 0.3ms | -6.1% |
| ↳ linter/@azure-tools/typespec-azure-core/use-standard-names | 🟢 6.1ms | 🟢 5.4ms | -11.9% |
| ↳ linter/@azure-tools/typespec-azure-core/use-standard-operations | 🟢 0.1ms | 🟢 0.1ms | -12.3% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-common-types-version | 🟢 4.5ms | 🟢 4.0ms | -9.2% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-custom-resource-no-key | 🟢 0.1ms | 🟢 0.1ms | +1.9% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage | 🟢 0.1ms | 🟢 0.1ms | -8.7% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes | 🟢 6.0ms | 🟢 5.3ms | -11.6% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-no-path-casing-conflicts | 🟢 4.9ms | 🟢 4.3ms | -13.6% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-no-record | 🟢 0.4ms | 🟢 0.4ms | -2.7% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes | 🟢 0.5ms | 🟢 0.5ms | -9.2% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes | 🟢 0.0ms | 🟢 0.0ms | -8.3% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-action-no-segment | 🟢 0.2ms | 🟢 0.2ms | -6.2% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-duplicate-property | 🟢 0.1ms | 🟢 0.1ms | -0.8% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator | 🟢 0.0ms | 🟢 0.0ms | -24.3% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-action-verb | 🟢 0.1ms | 🟢 0.1ms | -17.3% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property | 🟢 0.1ms | 🟢 0.1ms | -2.1% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-version-format | 🟢 0.0ms | 🟢 0.0ms | -10.9% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-key-invalid-chars | 🟢 0.3ms | 🟢 0.3ms | -0.2% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-name-pattern | 🟢 0.0ms | 🟢 0.0ms | -20.8% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-operation | 🟢 0.2ms | 🟢 0.2ms | -3.3% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-operation-response | 🟢 5.0ms | 🟢 4.7ms | -5.5% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-patch | 🟢 0.3ms | 🟢 0.3ms | -7.9% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-path-segment-invalid-chars | 🟢 0.2ms | 🟢 0.2ms | -7.1% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state | 🟢 0.1ms | 🟢 0.1ms | -4.0% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/beyond-nesting-levels | 🟢 0.1ms | 🟢 0.1ms | -9.2% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/empty-updateable-properties | 🟢 0.1ms | 🟢 0.1ms | +2.6% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/improper-subscription-list-operation | 🟢 0.0ms | 🟢 0.0ms | -18.4% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/lro-location-header | 🟡 15.1ms | 🟡 15.1ms | +0.0% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/missing-operations-endpoint | 🟢 0.0ms | 🟢 0.0ms | +1.3% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers | 🟢 0.3ms | 🟢 0.3ms | -1.4% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/no-empty-model | 🟢 0.1ms | 🟢 0.1ms | -9.8% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/no-override-props | 🟢 0.1ms | 🟢 0.1ms | -13.6% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/no-resource-delete-operation | 🟢 0.2ms | 🟢 0.2ms | -0.3% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/no-response-body | 🔴 22.8ms | 🔴 22.0ms | -3.3% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/patch-envelope | 🟢 0.1ms | 🟢 0.1ms | -6.0% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/resource-name | 🟢 0.2ms | 🟢 0.1ms | -2.3% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/secret-prop | 🟢 2.3ms | 🟢 2.1ms | -8.1% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/unsupported-type | 🟢 0.4ms | 🟢 0.4ms | +6.3% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/version-progression | 🟢 0.0ms | 🟢 0.0ms | -9.9% |
| ↳ linter/@azure-tools/typespec-client-generator-core/property-name-conflict | 🟢 1.1ms | 🟢 1.1ms | -5.3% |
| ↳ linter/@azure-tools/typespec-client-generator-core/require-client-suffix | 🟢 0.2ms | 🟢 0.2ms | -16.1% |
| emit | 🔴 6.32s | 🔴 6.00s | -5.1% 🟢 |
| ↳ emit/@azure-tools/typespec-autorest | 🟡 209.6ms | 🟢 167.0ms | -20.3% 🟢 |
| ↳ emit/@azure-tools/typespec-python | 🔴 4.62s | 🔴 4.40s | -4.8% |
| ↳ emit/@typespec/http-client-js | 🔴 1.22s | 🔴 1.26s | +3.4% |
| ↳ emit/@typespec/openapi3 | 🟢 161.7ms | 🟢 149.7ms | -7.4% 🟢 |
| ↳ emit/@typespec/openapi3/compute | 🟢 141.7ms | 🟢 133.3ms | -6.0% 🟢 |
| ↳ emit/@typespec/openapi3/write | 🟢 20.3ms | 🟢 16.6ms | -18.3% 🟢 |
Averaged across 3 specs (azure-arm-resource-manager, azure-core-dataplane, azure-full).
Threshold: changes > ±5% are highlighted.
🟢 Fast · 🟡 Moderate (stages >200ms, rules >10ms) · 🔴 Slow (stages >400ms, rules >20ms)
markcowl
left a comment
There was a problem hiding this comment.
We should target the final PR at the release/june-2026 branch for hotfix release.
I think we want to consider whether we want this in CommonTypes, or whether we want an Azure.ResourceManager.BaseTypes namespace that we could version separately (and release as an experimental export). I would suggest doing this for now, regardless.
Will sned you my pr later this evening and will try to merge any additional info from this one into mine before we meet on Friday
…spec-azure into vayada/agentBaseType
Resolves the core submodule gitlink conflict: the branch had rewound core to 212a9eda while upstream advanced it to 5b8f8dc4. Adopt the upstream pointer since the agent base types work does not touch core. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update the generated base-types/data-types.md to reflect the ResponseStatus open union, the extracted ConversationReference model, and the ResponseStatus references on Response.status and ResponseOutputItem.status. Keeps generated docs in sync so the changed-files CI check passes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This change introduces AgentBaseType as a shared contract for RPs implementing Agent resource types, providing a unified and consistent schema definition.
The model adheres to the canonical definition described in the ARM API contracts:
https://msazure.visualstudio.com/One/_git/AzureUX-ARMWiki?path=/src/api_contracts/agentBaseTypeV4.md&version=GBevanhi/agentBaseType
Design decisions: