Skip to content

Add provisioning core and Key Vault packages - #39825

Open
Qiaoqiao Zhang (qiaozha) wants to merge 1 commit into
mainfrom
add-provisioning-keyvault
Open

Add provisioning core and Key Vault packages#39825
Qiaoqiao Zhang (qiaozha) wants to merge 1 commit into
mainfrom
add-provisioning-keyvault

Conversation

@qiaozha

@qiaozha Qiaoqiao Zhang (qiaozha) commented Sep 2, 2026

Copy link
Copy Markdown
Member

Adds the first Azure Provisioning packages to the JavaScript SDK repository.

Summary

  • add @azure/provisioning-core under sdk/core/provisioning-core
  • generate @azure/provisioning-keyvault from Key Vault TypeSpec API 2026-03-01-preview
  • use azure-rest-api-specs commit 53c0f6efe9872c971e8c365e3b0d41a6bd6efd3d and provisioning emitter commit 790002004471dd1b221efdad6c0e5d4ffb0e68e7
  • add ESM, CommonJS, and browser builds, API reports, node/browser test configuration, package metadata, and lockfile entries
  • register both packages in the existing core and Key Vault management CI pipelines

Manual delta tracking

Changes beyond copying core and running the Key Vault generator are consolidated by owner below.

Emitter-owned

  • GET-only Key Vault resources were made existing-only: Azure/js-provisioning-lib#460
  • generated model types were added to the root public entrypoint to eliminate forgotten exports: Azure/js-provisioning-lib#461
  • Azure SDK package scaffolding, formatting, headers, TSDoc/lint compatibility, build targets, API extraction, and test setup: Azure/js-provisioning-lib#462

Core-owned

  • ResourceGroup.managedBy is retained in authored state: Azure/js-provisioning-lib#463
  • serialization-AST dependency ownership and supporting public API exports: Azure/js-provisioning-lib#464
  • core source synchronization, SDK lint fixes, headers, and formatting: Azure/js-provisioning-lib#465
  • class-based core README examples: Azure/js-provisioning-lib#466

Azure SDK repository-owned

  • package metadata, changelogs, licenses, README files, lockfile importers, API reports, and core/Key Vault CI artifact registration are onboarding changes implemented by this PR
  • Key Vault is excluded from the data-plane pipeline and included in the management pipeline
  • generated browser API diff whitespace cleanup is tracked by Remove trailing whitespace from generated browser API diffs #39826

Validation

  • pnpm turbo build --filter=@azure/provisioning-keyvault... --token 1
  • TypeScript project builds for both packages, including browser test projects
  • node unit tests for both packages
  • package lint and format checks for both packages
  • package version checks confirm 1.0.0-beta.1 is unpublished
  • API Extractor reports contain no forgotten exports

Notes

  • Local Playwright browser execution could not launch because the host image is missing libnspr4.so; browser tests are configured and typecheck successfully for CI.
  • dev-tool check passes 13 of 14 checks for each package; its release check throws parsePnpmPackResult - check.check is not a function after package validation.

Copilot AI balanced review requested due to automatic review settings September 2, 2026 03:27
@github-actions github-actions Bot added Azure.Core KeyVault Mgmt This issue is related to a management-plane library. labels Sep 2, 2026
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).
10 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Security vulnerabilities, invalid Bicep helpers, resource identity defects, and insufficient coverage must be addressed before approval.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Warning

  • Copilot's review of this pull request may be incomplete because some of the changed files are excluded by your Copilot content exclusion settings. See Excluding content from Copilot for details.
Pull request overview

Adds the foundational Azure Provisioning authoring library and generated Key Vault provisioning package, including multi-runtime builds and CI integration.

Changes:

  • Introduces provisioning primitives, expressions, resources, naming, shapes, and registries.
  • Adds Key Vault resources generated from API version 2026-03-01-preview.
  • Configures packaging, API reports, tests, documentation, and CI.
File summaries
File Description
sdk/core/ci.yml Registers provisioning core in CI.
sdk/core/provisioning-core/CHANGELOG.md Adds initial release history.
sdk/core/provisioning-core/LICENSE Adds package license.
sdk/core/provisioning-core/README.md Documents core usage.
sdk/core/provisioning-core/api-extractor.json Configures API extraction.
sdk/core/provisioning-core/eslint.config.mjs Configures linting.
sdk/core/provisioning-core/package.json Defines package metadata and scripts.
sdk/core/provisioning-core/tsconfig.json Aggregates TypeScript projects.
sdk/core/provisioning-core/vitest.browser.config.ts Configures browser tests.
sdk/core/provisioning-core/vitest.config.ts Configures Node tests.
sdk/core/provisioning-core/warp.config.yml Defines runtime builds.
sdk/core/provisioning-core/config/tsconfig.lint.json Configures lint type checking.
sdk/core/provisioning-core/config/tsconfig.src.browser.json Configures browser compilation.
sdk/core/provisioning-core/config/tsconfig.src.cjs.json Configures CommonJS compilation.
sdk/core/provisioning-core/config/tsconfig.src.esm.json Configures ESM compilation.
sdk/core/provisioning-core/config/tsconfig.test.browser.json Configures browser test types.
sdk/core/provisioning-core/config/tsconfig.test.node.json Configures Node test types.
sdk/core/provisioning-core/review/provisioning-core-browser.api.diff.md Records browser API differences.
sdk/core/provisioning-core/review/provisioning-core-node.api.md Records the Node API surface.
sdk/core/provisioning-core/src/bicep.ts Defines Bicep type primitives.
sdk/core/provisioning-core/src/constructs/built-in-resources/resource-group.ts Implements resource groups.
sdk/core/provisioning-core/src/constructs/output.ts Implements deployment outputs.
sdk/core/provisioning-core/src/constructs/parameter.ts Implements deployment parameters.
sdk/core/provisioning-core/src/constructs/provisioning-component.ts Implements the component tree.
sdk/core/provisioning-core/src/constructs/resource/child-resource-collection.ts Implements child collections.
sdk/core/provisioning-core/src/constructs/resource/resource-proxy.ts Implements resource proxies.
sdk/core/provisioning-core/src/constructs/resource/resource-query.ts Implements resource queries.
sdk/core/provisioning-core/src/constructs/resource/resource-registry.ts Registers resource constructors.
sdk/core/provisioning-core/src/constructs/resource/resource-type-registry.ts Resolves versioned resource types.
sdk/core/provisioning-core/src/constructs/resource/resource-utils.ts Adds resource type guards.
sdk/core/provisioning-core/src/constructs/resource/resource.ts Implements resources and loops.
sdk/core/provisioning-core/src/constructs/stack.ts Implements deployment stacks.
sdk/core/provisioning-core/src/constructs/variable.ts Implements deployment variables.
sdk/core/provisioning-core/src/deployment-context/deployment-context.ts Defines inherited deployment context.
sdk/core/provisioning-core/src/expression/ast-nodes.ts Defines expression AST nodes.
sdk/core/provisioning-core/src/expression/expressions.ts Implements expression proxies.
sdk/core/provisioning-core/src/fn.ts Adds Bicep expression helpers.
sdk/core/provisioning-core/src/host.ts Defines host abstraction.
sdk/core/provisioning-core/src/index.ts Exposes the public API.
sdk/core/provisioning-core/src/naming/naming-policy.ts Implements automatic naming.
sdk/core/provisioning-core/src/naming/naming-rules.ts Defines naming constraints.
sdk/core/provisioning-core/src/shape/shape-registry.ts Registers model shapes.
sdk/core/provisioning-core/src/shape/shape.ts Implements shape navigation.
sdk/core/provisioning-core/src/types.ts Adds shared type aliases.
sdk/core/provisioning-core/src/util.ts Adds validation utilities.
sdk/core/provisioning-core/test/core.spec.ts Adds core smoke tests.
sdk/keyvault/ci.yml Routes provisioning changes away from data-plane CI.
sdk/keyvault/ci.mgmt.yml Registers Key Vault provisioning CI.
sdk/keyvault/provisioning-keyvault/CHANGELOG.md Adds initial release history.
sdk/keyvault/provisioning-keyvault/LICENSE Adds package license.
sdk/keyvault/provisioning-keyvault/README.md Documents Key Vault usage.
sdk/keyvault/provisioning-keyvault/api-extractor.json Configures API extraction.
sdk/keyvault/provisioning-keyvault/eslint.config.mjs Configures linting.
sdk/keyvault/provisioning-keyvault/package.json Defines package metadata and scripts.
sdk/keyvault/provisioning-keyvault/provision.config.json Configures provisioning generation.
sdk/keyvault/provisioning-keyvault/tsconfig.json Aggregates TypeScript projects.
sdk/keyvault/provisioning-keyvault/vitest.browser.config.ts Configures browser tests.
sdk/keyvault/provisioning-keyvault/vitest.config.ts Configures Node tests.
sdk/keyvault/provisioning-keyvault/warp.config.yml Defines runtime builds.
sdk/keyvault/provisioning-keyvault/config/tsconfig.lint.json Configures lint type checking.
sdk/keyvault/provisioning-keyvault/config/tsconfig.src.browser.json Configures browser compilation.
sdk/keyvault/provisioning-keyvault/config/tsconfig.src.cjs.json Configures CommonJS compilation.
sdk/keyvault/provisioning-keyvault/config/tsconfig.src.esm.json Configures ESM compilation.
sdk/keyvault/provisioning-keyvault/config/tsconfig.test.browser.json Configures browser test types.
sdk/keyvault/provisioning-keyvault/config/tsconfig.test.node.json Configures Node test types.
sdk/keyvault/provisioning-keyvault/review/provisioning-keyvault-browser.api.diff.md Records browser API differences.
sdk/keyvault/provisioning-keyvault/review/provisioning-keyvault-node.api.md Records the Node API surface.
sdk/keyvault/provisioning-keyvault/review/provisioning-keyvault-types-browser.api.diff.md Records types subpath differences.
sdk/keyvault/provisioning-keyvault/review/provisioning-keyvault-types-node.api.md Records types subpath API.
sdk/keyvault/provisioning-keyvault/schema/schema.json Stores generated resource schema.
sdk/keyvault/provisioning-keyvault/src/deleted-managed-hsm.ts Adds deleted HSM references.
sdk/keyvault/provisioning-keyvault/src/deleted-vault.ts Adds deleted vault references.
sdk/keyvault/provisioning-keyvault/src/index.ts Exposes Key Vault APIs.
sdk/keyvault/provisioning-keyvault/src/key-vault.ts Implements vault resources.
sdk/keyvault/provisioning-keyvault/src/managed-hsm.ts Implements managed HSM resources.
sdk/keyvault/provisioning-keyvault/src/types.ts Defines generated model types.
sdk/keyvault/provisioning-keyvault/test/public-entrypoints.spec.ts Adds public-entrypoint smoke coverage.
pnpm-lock.yaml Excluded from review by policy.
Review details

Files excluded by content exclusion policy (1)

  • pnpm-lock.yaml
  • Files reviewed: 76/78 changed files
  • Comments generated: 24
  • Review effort level: Balanced

Comment on lines +272 to +287
for (let index = 0; index < path.length - 1; index += 1) {
const segment = String(path[index]);
const nextSegment = path[index + 1];
const existing = current[segment];

if (typeof existing === "object" && existing !== null) {
current = existing as Record<string, unknown>;
continue;
}

const container = (typeof nextSegment === "number" ? [] : {}) as Record<string, unknown>;
current[segment] = container;
current = container;
}

current[String(path[path.length - 1])] = value;
currentResource?: Resource,
): Record<string, unknown> {
const entries = Object.entries(obj);
const result: Record<string, unknown> = {};
Comment on lines +447 to +449
export function keys(obj: ExpressionOrValue<object>): Expression<string[]> {
return createFunctionCallExpression<string[]>("keys", [obj]);
}
Comment on lines +451 to +453
export function objectValues(obj: ExpressionOrValue<object>): Expression<unknown[]> {
return createFunctionCallExpression<unknown[]>("values", [obj]);
}
Comment on lines +71 to +74
constructor(
context: ProvisioningComponent,
props: ExistingResourceProps & { existing: true },
options?: ResourceOptions,
Comment on lines +59 to +61
* const stack = new Stack("my-app");
* const rg = new ResourceGroup(stack, "eastus");
* const vault = new KeyVault(rg, { tenantId: "..." });
type InputRecord,
} from "./expression/expressions.js";
export type { PropertySegment } from "./types.js";
export * as fn from "./fn.js";

### Features Added

- Initial preview of Azure Key Vault provisioning resources generated from the `2026-03-01-preview` TypeSpec contract.

## Getting started

```ts
Comment on lines +43 to +47
"files": [
"dist/",
"LICENSE",
"README.md"
],
@github-actions github-actions Bot added mgmt-review-added Management SDK review completed and removed mgmt-review-in-progress Management SDK review is in progress labels Sep 2, 2026

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the tooling (package.json/CHANGELOG.md version alignment, api-versions) and public API surface (review/provisioning-core-node.api.md, review/provisioning-keyvault-node.api.md) for the new @azure/provisioning-core and @azure/provisioning-keyvault packages. No issues found: both packages consistently use 1.0.0-beta.1 in package.json and CHANGELOG.md (no alpha versions), the Key Vault package is generated from the 2026-03-01-preview TypeSpec contract, and the API reports show no _N/AutoGenerated suffixes, no problematic unknown/void usage, and no forgotten-export warnings. The API surface and tooling look good.

📊 Structured Report
{"agent":"mgmt-reviewer","pr":39825,"summary":"clean","findings":[]}

Benchmarked by Management Release Assistant

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Azure.Core KeyVault Mgmt This issue is related to a management-plane library. mgmt-review-added Management SDK review completed

Projects

Status: Untriaged

Development

Successfully merging this pull request may close these issues.

3 participants