@empire-builder-kit/nx 1.0.0-rc.32 → 1.0.0-rc.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/package.json +3 -3
  2. package/src/aws-authority/stage-authority.js +4 -0
  3. package/src/aws-authority/stage-authority.js.map +1 -1
  4. package/src/developer-agent/model.d.ts +1 -1
  5. package/src/developer-agent/operation-registry.js +25 -3
  6. package/src/developer-agent/operation-registry.js.map +1 -1
  7. package/src/developer-agent/planning.js +9 -4
  8. package/src/developer-agent/planning.js.map +1 -1
  9. package/src/developer-agent/validation.js +5 -1
  10. package/src/developer-agent/validation.js.map +1 -1
  11. package/src/executors/deployment-plan/deployment-plan.js +3 -0
  12. package/src/executors/deployment-plan/deployment-plan.js.map +1 -1
  13. package/src/executors/foundation-profile-preflight/production-database-safeguard.d.ts +1 -0
  14. package/src/executors/foundation-profile-preflight/production-database-safeguard.js +4 -2
  15. package/src/executors/foundation-profile-preflight/production-database-safeguard.js.map +1 -1
  16. package/src/executors/github-bootstrap/github-bootstrap.js +1 -0
  17. package/src/executors/github-bootstrap/github-bootstrap.js.map +1 -1
  18. package/src/executors/local-deploy/local-deploy.d.ts +21 -3
  19. package/src/executors/local-deploy/local-deploy.js +201 -1
  20. package/src/executors/local-deploy/local-deploy.js.map +1 -1
  21. package/src/executors/local-deploy/schema.json +21 -0
  22. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.d.ts +13 -0
  23. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js +323 -137
  24. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js.map +1 -1
  25. package/src/executors/router-waf-rehearsal/schema.json +5 -0
  26. package/src/executors/secret-initialize/secret-initialize.d.ts +2 -0
  27. package/src/executors/secret-initialize/secret-initialize.js +57 -3
  28. package/src/executors/secret-initialize/secret-initialize.js.map +1 -1
  29. package/src/executors/sst-lifecycle/run-sst-command.d.ts +2 -0
  30. package/src/executors/sst-lifecycle/run-sst-command.js +4 -0
  31. package/src/executors/sst-lifecycle/run-sst-command.js.map +1 -1
  32. package/src/foundation/index.d.ts +1 -0
  33. package/src/foundation/index.js +8 -0
  34. package/src/foundation/index.js.map +1 -1
  35. package/src/foundation/private-smoke-access.d.ts +23 -0
  36. package/src/foundation/private-smoke-access.js +127 -0
  37. package/src/foundation/private-smoke-access.js.map +1 -0
  38. package/src/foundation/private-smoke-admission.d.ts +43 -0
  39. package/src/foundation/private-smoke-admission.js +158 -0
  40. package/src/foundation/private-smoke-admission.js.map +1 -0
  41. package/src/foundation/private-smoke-control-plane.d.ts +18 -0
  42. package/src/foundation/private-smoke-control-plane.js +173 -0
  43. package/src/foundation/private-smoke-control-plane.js.map +1 -0
  44. package/src/generators/preset/dependency-overrides.d.ts +8 -0
  45. package/src/generators/preset/dependency-overrides.js +55 -0
  46. package/src/generators/preset/dependency-overrides.js.map +1 -0
  47. package/src/generators/preset/tool-versions.d.ts +2 -0
  48. package/src/generators/preset/tool-versions.js +3 -1
  49. package/src/generators/preset/tool-versions.js.map +1 -1
  50. package/src/generators/preset/workspace-files-developer-agent.js +19 -6
  51. package/src/generators/preset/workspace-files-developer-agent.js.map +1 -1
  52. package/src/generators/preset/workspace-files-thin-deploy.d.ts +16 -1
  53. package/src/generators/preset/workspace-files-thin-deploy.js +946 -26
  54. package/src/generators/preset/workspace-files-thin-deploy.js.map +1 -1
  55. package/src/generators/preset/workspace-files-thin-docs.d.ts +2 -0
  56. package/src/generators/preset/workspace-files-thin-docs.js +66 -6
  57. package/src/generators/preset/workspace-files-thin-docs.js.map +1 -1
  58. package/src/generators/preset/workspace-files.d.ts +8 -1
  59. package/src/generators/preset/workspace-files.js +97 -21
  60. package/src/generators/preset/workspace-files.js.map +1 -1
  61. package/src/generators/repository-policy/repository-policy.js +1 -0
  62. package/src/generators/repository-policy/repository-policy.js.map +1 -1
  63. package/src/generators/repository-policy/schema.d.ts +2 -0
  64. package/src/generators/repository-policy/schema.json +27 -7
  65. package/src/generators/slice/built-in-plan-background-work-files.d.ts +2 -0
  66. package/src/generators/slice/built-in-plan-background-work-files.js +89 -0
  67. package/src/generators/slice/built-in-plan-background-work-files.js.map +1 -0
  68. package/src/generators/slice/built-in-plan-database-lifecycle-files.js +20 -4
  69. package/src/generators/slice/built-in-plan-database-lifecycle-files.js.map +1 -1
  70. package/src/generators/slice/built-in-plan-infrastructure-files.js +22 -9
  71. package/src/generators/slice/built-in-plan-infrastructure-files.js.map +1 -1
  72. package/src/generators/slice/built-in-plan-operations-files.js +8 -10
  73. package/src/generators/slice/built-in-plan-operations-files.js.map +1 -1
  74. package/src/generators/slice/built-in-plan.js +3 -0
  75. package/src/generators/slice/built-in-plan.js.map +1 -1
  76. package/src/generators/upgrade/upgrade.d.ts +12 -0
  77. package/src/generators/upgrade/upgrade.js +84 -9
  78. package/src/generators/upgrade/upgrade.js.map +1 -1
  79. package/src/generators/workload/workload.js +1 -1
  80. package/src/git-policy/action-pins.d.ts +5 -0
  81. package/src/git-policy/action-pins.js +5 -0
  82. package/src/git-policy/action-pins.js.map +1 -1
  83. package/src/git-policy/github-bootstrap.d.ts +10 -2
  84. package/src/git-policy/github-bootstrap.js +129 -34
  85. package/src/git-policy/github-bootstrap.js.map +1 -1
  86. package/src/git-policy/routing.d.ts +5 -1
  87. package/src/git-policy/routing.js +50 -0
  88. package/src/git-policy/routing.js.map +1 -1
  89. package/src/performance/model.d.ts +1 -1
  90. package/src/repository-policy/capacity-migration.d.ts +3 -0
  91. package/src/repository-policy/capacity-migration.js +21 -0
  92. package/src/repository-policy/capacity-migration.js.map +1 -0
  93. package/src/repository-policy/foundation-profile.js +10 -0
  94. package/src/repository-policy/foundation-profile.js.map +1 -1
  95. package/src/repository-policy/policy.d.ts +13 -2
  96. package/src/repository-policy/policy.js +47 -2
  97. package/src/repository-policy/policy.js.map +1 -1
  98. package/src/schemas/repository-policy-v1.json +56 -17
  99. package/src/supply-chain/generated-container-release-command.js +281 -74
  100. package/src/supply-chain/generated-container-release-command.js.map +1 -1
  101. package/src/supply-chain/generated-files.js +21 -11
  102. package/src/supply-chain/generated-files.js.map +1 -1
  103. package/src/supply-chain/generated-scanner-command.js +1 -1
  104. package/src/supply-chain/scanner.js +3 -0
  105. package/src/supply-chain/scanner.js.map +1 -1
  106. package/src/workspace-deployment/affected-lifecycle.d.ts +53 -0
  107. package/src/workspace-deployment/affected-lifecycle.js +84 -0
  108. package/src/workspace-deployment/affected-lifecycle.js.map +1 -0
  109. package/src/workspace-deployment/index.d.ts +1 -0
  110. package/src/workspace-deployment/index.js +1 -0
  111. package/src/workspace-deployment/index.js.map +1 -1
@@ -121,6 +121,7 @@ function renderContainerReleaseCommand(options = {}) {
121
121
  import { execFileSync, spawn, spawnSync } from 'node:child_process';
122
122
  import {
123
123
  chmodSync,
124
+ copyFileSync,
124
125
  existsSync,
125
126
  lstatSync,
126
127
  mkdirSync,
@@ -128,6 +129,7 @@ import {
128
129
  readFileSync,
129
130
  realpathSync,
130
131
  readdirSync,
132
+ renameSync,
131
133
  rmSync,
132
134
  unlinkSync,
133
135
  writeFileSync,
@@ -167,6 +169,39 @@ const AWS_REGION_NAME =
167
169
  /^(?=.{9,32}$)[a-z]{2}(?:-gov)?-[a-z]+(?:-[a-z]+)*-\\d$/;
168
170
  const MAX_TOOL_BYTES = 100 * 1024 * 1024;
169
171
  const MAX_OUTPUT_BYTES = 64 * 1024 * 1024;
172
+ // Optional absolute cache roots supplied by the workflow (runner-local, restored
173
+ // by the managed cache step). Absent or relative values disable the caches.
174
+ const optionalCacheRoot = (name) => {
175
+ const value = process.env[name]?.trim() ?? '';
176
+ return value !== '' && isAbsolute(value) && !value.includes('..') ? value : '';
177
+ };
178
+ const buildxLayerCache = (repositoryName, architecture) => {
179
+ const root = optionalCacheRoot('EBK_BUILDX_CACHE_DIR');
180
+ if (root === '') return { arguments: [], commit: () => {} };
181
+ const scope = repositoryName.replaceAll('/', '-') + '-' + architecture;
182
+ const current = join(root, scope);
183
+ const next = join(root, scope + '.next');
184
+ mkdirSync(root, { mode: 0o700, recursive: true });
185
+ rmSync(next, { force: true, recursive: true });
186
+ return {
187
+ arguments: [
188
+ ...(existsSync(current)
189
+ ? ['--cache-from', 'type=local,src=' + current]
190
+ : []),
191
+ '--cache-to',
192
+ 'type=local,dest=' + next + ',mode=max',
193
+ ],
194
+ commit: () => {
195
+ if (!existsSync(next)) return;
196
+ rmSync(current, { force: true, recursive: true });
197
+ renameSync(next, current);
198
+ },
199
+ };
200
+ };
201
+ const cachedReleaseToolArchive = (name, sha256) => {
202
+ const root = optionalCacheRoot('EBK_RELEASE_TOOL_CACHE_DIR');
203
+ return root === '' ? '' : join(root, name + '-' + sha256);
204
+ };
170
205
  const mode = process.argv[2];
171
206
  const requestedPlatform = process.argv[3];
172
207
  if (
@@ -1213,10 +1248,17 @@ const releaseContainerInputs = declaredContainers.map((declared, index) => {
1213
1248
  ? captured.digest
1214
1249
  : captured?.candidateDigest;
1215
1250
  const candidate = declared.candidate;
1216
- const materialDigest = digestCandidatePaths(
1217
- candidate.materialPaths,
1218
- 'OCI artifact candidate material',
1219
- );
1251
+ // Promotion copies reviewed staging images without rebuilding, so the build
1252
+ // material is never present in that job; the candidate evidence restored
1253
+ // from the exact release artifact already binds the material digest
1254
+ // (EBK-INT-2026-076).
1255
+ const materialDigest =
1256
+ mode === 'promote'
1257
+ ? candidateArtifactDigest
1258
+ : digestCandidatePaths(
1259
+ candidate.materialPaths,
1260
+ 'OCI artifact candidate material',
1261
+ );
1220
1262
  const buildRecipeDigest = digestCandidatePaths(
1221
1263
  candidate.recipePaths,
1222
1264
  'OCI artifact candidate recipe',
@@ -1493,6 +1535,114 @@ const exactImageByTag = (repositoryName, tag) => {
1493
1535
  }
1494
1536
  return response.imageDetails[0].imageDigest;
1495
1537
  };
1538
+ const exactImageByDigest = (repositoryName, imageDigest) => {
1539
+ const response = awsJson(
1540
+ [
1541
+ 'ecr',
1542
+ 'describe-images',
1543
+ '--registry-id',
1544
+ accountId,
1545
+ '--repository-name',
1546
+ repositoryName,
1547
+ '--image-ids',
1548
+ 'imageDigest=' + imageDigest,
1549
+ '--region',
1550
+ region,
1551
+ '--output',
1552
+ 'json',
1553
+ ],
1554
+ 'Exact ECR image digest lookup',
1555
+ );
1556
+ return (
1557
+ Array.isArray(response?.imageDetails) &&
1558
+ response.imageDetails.length === 1 &&
1559
+ response.imageDetails[0]?.registryId === accountId &&
1560
+ response.imageDetails[0]?.repositoryName === repositoryName &&
1561
+ response.imageDetails[0]?.imageDigest === imageDigest
1562
+ );
1563
+ };
1564
+ // An unchanged artifact (same candidate material, recipe, Dockerfile, platform,
1565
+ // and production closure) may reuse the image and SBOM retained by the newest
1566
+ // successful deployment on this branch instead of rebuilding. Declining reuse
1567
+ // is always safe: the full native build runs. The native run proof is always
1568
+ // re-executed against the reused image.
1569
+ const reusableBaselinePlatformRecord = (input, requestedPlatform, architecture, repositoryName, expectedClosure) => {
1570
+ const root = optionalCacheRoot('EBK_CONTAINER_BASELINE_ROOT');
1571
+ if (root === '' || process.env.EBK_OCI_REBUILD?.trim() === 'all') return undefined;
1572
+ const safeArtifact = input.declared.name.replace(/[^A-Za-z0-9._-]/g, '_');
1573
+ const recordPath = join(
1574
+ root,
1575
+ 'container-release',
1576
+ 'partials',
1577
+ stage,
1578
+ slice,
1579
+ architecture,
1580
+ safeArtifact + '.platform.json',
1581
+ );
1582
+ const decline = (reason) => {
1583
+ process.stderr.write(
1584
+ 'ebk-container-release-reuse ' +
1585
+ JSON.stringify({ artifact: input.declared.id, platform: requestedPlatform, reason, reused: false }) +
1586
+ '\\n',
1587
+ );
1588
+ return undefined;
1589
+ };
1590
+ if (!existsSync(recordPath) || lstatSync(recordPath).isSymbolicLink()) {
1591
+ return decline('no baseline platform record');
1592
+ }
1593
+ let record;
1594
+ try {
1595
+ record = validateContainerPlatformEvidence(JSON.parse(readFileSync(recordPath, 'utf8')));
1596
+ } catch (error) {
1597
+ return decline('baseline platform record is invalid: ' + String(error?.message ?? error));
1598
+ }
1599
+ if (
1600
+ record.accountId !== accountId ||
1601
+ record.region !== region ||
1602
+ record.stage !== stage ||
1603
+ record.slice !== slice ||
1604
+ record.artifactId !== input.declared.id ||
1605
+ record.artifactName !== input.declared.name ||
1606
+ record.platform !== requestedPlatform ||
1607
+ record.repositoryName !== repositoryName ||
1608
+ record.candidateArtifactDigest !== input.candidateArtifactDigest ||
1609
+ record.dockerfileDigest !== digestBytes(readFileSync(input.dockerfile)) ||
1610
+ record.productionClosureDigest !== expectedClosure.digest ||
1611
+ !IMAGE_DIGEST.test(record.imageDigest) ||
1612
+ record.imageReference !== registry + '/' + repositoryName + '@' + record.imageDigest
1613
+ ) {
1614
+ return decline('artifact inputs changed since the baseline');
1615
+ }
1616
+ const evidencePrefix = '.ebk/evidence/';
1617
+ const sbomPath = join(
1618
+ root,
1619
+ record.sbom.path.startsWith(evidencePrefix)
1620
+ ? record.sbom.path.slice(evidencePrefix.length)
1621
+ : record.sbom.path,
1622
+ );
1623
+ if (!existsSync(sbomPath) || lstatSync(sbomPath).isSymbolicLink()) {
1624
+ return decline('baseline SBOM is absent');
1625
+ }
1626
+ const sbomBytes = readFileSync(sbomPath);
1627
+ if (digestBytes(sbomBytes) !== record.sbom.sha256) {
1628
+ return decline('baseline SBOM bytes differ from the retained record');
1629
+ }
1630
+ if (!exactImageByDigest(repositoryName, record.imageDigest)) {
1631
+ return decline('baseline image is no longer in the registry');
1632
+ }
1633
+ process.stderr.write(
1634
+ 'ebk-container-release-reuse ' +
1635
+ JSON.stringify({
1636
+ artifact: input.declared.id,
1637
+ baselineCommit: record.sourceCommit,
1638
+ imageDigest: record.imageDigest,
1639
+ platform: requestedPlatform,
1640
+ reused: true,
1641
+ }) +
1642
+ '\\n',
1643
+ );
1644
+ return { imageDigest: record.imageDigest, sbomBytes };
1645
+ };
1496
1646
  const acquireSyft = async () => {
1497
1647
  const platformKey = process.platform + '-' + process.arch;
1498
1648
  const release = SYFT_RELEASES[platformKey];
@@ -1505,7 +1655,12 @@ const acquireSyft = async () => {
1505
1655
  const archive = supplied
1506
1656
  ? safePath(relative(repositoryRoot, resolve(repositoryRoot, supplied)), 'Supplied Syft archive')
1507
1657
  : join(temporary, 'syft-archive');
1508
- if (!supplied) {
1658
+ const cachedArchive = supplied ? '' : cachedReleaseToolArchive('syft', release.sha256);
1659
+ if (!supplied && cachedArchive && existsSync(cachedArchive)) {
1660
+ // Reuse the archive verified by an earlier invocation on this runner; the
1661
+ // digest check below still runs against the copied bytes.
1662
+ copyFileSync(cachedArchive, archive);
1663
+ } else if (!supplied) {
1509
1664
  const response = await fetch(release.source, {
1510
1665
  redirect: 'follow',
1511
1666
  signal: AbortSignal.timeout(120_000),
@@ -1530,6 +1685,10 @@ const acquireSyft = async () => {
1530
1685
  ) {
1531
1686
  throw new Error('Pinned Syft archive integrity does not match policy.');
1532
1687
  }
1688
+ if (cachedArchive && !existsSync(cachedArchive)) {
1689
+ mkdirSync(optionalCacheRoot('EBK_RELEASE_TOOL_CACHE_DIR'), { mode: 0o700, recursive: true });
1690
+ writeFileSync(cachedArchive, bytes, { mode: 0o600 });
1691
+ }
1533
1692
  const path = join(temporary, 'syft');
1534
1693
  if (release.archiveFormat === 'binary') {
1535
1694
  writeFileSync(path, bytes, { mode: 0o700 });
@@ -1574,7 +1733,10 @@ const acquireCrane = async () => {
1574
1733
  'Supplied Crane archive',
1575
1734
  )
1576
1735
  : join(temporary, 'crane-archive.tar.gz');
1577
- if (!supplied) {
1736
+ const cachedArchive = supplied ? '' : cachedReleaseToolArchive('crane', release.sha256);
1737
+ if (!supplied && cachedArchive && existsSync(cachedArchive)) {
1738
+ copyFileSync(cachedArchive, archive);
1739
+ } else if (!supplied) {
1578
1740
  const response = await fetch(release.source, {
1579
1741
  redirect: 'follow',
1580
1742
  signal: AbortSignal.timeout(120_000),
@@ -1599,6 +1761,10 @@ const acquireCrane = async () => {
1599
1761
  ) {
1600
1762
  throw new Error('Pinned Crane archive integrity does not match policy.');
1601
1763
  }
1764
+ if (cachedArchive && !existsSync(cachedArchive)) {
1765
+ mkdirSync(optionalCacheRoot('EBK_RELEASE_TOOL_CACHE_DIR'), { mode: 0o700, recursive: true });
1766
+ writeFileSync(cachedArchive, bytes, { mode: 0o600 });
1767
+ }
1602
1768
  execute('tar', ['-xzf', archive, '-C', temporary, 'crane'], 'Crane extraction');
1603
1769
  const path = join(temporary, 'crane');
1604
1770
  chmodSync(path, 0o700);
@@ -2516,14 +2682,29 @@ if (mode === 'platform') {
2516
2682
  let platformError;
2517
2683
  try {
2518
2684
  syft = await acquireSyft();
2519
- crane = stage === 'development' ? await acquireCrane() : undefined;
2685
+ crane =
2686
+ stage === 'development' || optionalCacheRoot('EBK_CONTAINER_BASELINE_ROOT') !== ''
2687
+ ? await acquireCrane()
2688
+ : undefined;
2520
2689
  recoverReleaseBuilders();
2690
+ // Artifacts that share a package, recipe, and Dockerfile (the migration and
2691
+ // retirement jobs) resolve one identical production closure.
2521
2692
  const expectedClosures = new Map();
2693
+ const closuresByRecipe = new Map();
2522
2694
  for (const input of containerInputs) {
2523
- expectedClosures.set(
2524
- input.declared.id,
2525
- await deriveExpectedProductionClosure(syft, input),
2526
- );
2695
+ const recipeKey =
2696
+ input.packageName +
2697
+ ':' +
2698
+ input.buildRecipeDigest +
2699
+ ':' +
2700
+ digestBytes(readFileSync(input.dockerfile));
2701
+ if (!closuresByRecipe.has(recipeKey)) {
2702
+ closuresByRecipe.set(
2703
+ recipeKey,
2704
+ await deriveExpectedProductionClosure(syft, input),
2705
+ );
2706
+ }
2707
+ expectedClosures.set(input.declared.id, closuresByRecipe.get(recipeKey));
2527
2708
  }
2528
2709
  requireReviewedCheckout();
2529
2710
  for (const input of containerInputs) requireCandidateAuthority(input);
@@ -2555,7 +2736,24 @@ if (mode === 'platform') {
2555
2736
  ({ platform }) => platform === requestedPlatform,
2556
2737
  )
2557
2738
  : undefined;
2558
- if (stage === 'development') {
2739
+ const reusable =
2740
+ stage === 'development'
2741
+ ? undefined
2742
+ : reusableBaselinePlatformRecord(
2743
+ input,
2744
+ requestedPlatform,
2745
+ architecture,
2746
+ repositoryName,
2747
+ expectedClosure,
2748
+ );
2749
+ if (reusable) {
2750
+ if (!crane) throw new Error('Unchanged artifact reuse requires the reviewed crane.');
2751
+ execute(
2752
+ crane.path,
2753
+ ['copy', registry + '/' + repositoryName + '@' + reusable.imageDigest, taggedReference],
2754
+ 'Unchanged artifact re-tag without rebuilding',
2755
+ );
2756
+ } else if (stage === 'development') {
2559
2757
  if (!crane || !developmentSourcePlatform) {
2560
2758
  throw new Error(
2561
2759
  'Development retirement source platform is absent.',
@@ -2567,41 +2765,46 @@ if (mode === 'platform') {
2567
2765
  'Exact staging retirement child promotion',
2568
2766
  );
2569
2767
  } else {
2768
+ // One BuildKit builder serves every artifact of this invocation so
2769
+ // shared layers (pnpm fetch, filtered install) are reused across the
2770
+ // Slice's images; the platform-mode finally block removes it.
2570
2771
  const platformBuilder = ensureReleaseBuilder();
2571
- try {
2572
- await executeObservedBuildx([
2573
- 'buildx',
2574
- 'build',
2575
- '--builder',
2576
- platformBuilder.name,
2577
- ...(packageRegistry
2578
- ? [
2579
- '--build-arg',
2580
- 'NPM_CONFIG_REGISTRY=' + packageRegistry,
2581
- ]
2582
- : []),
2583
- '--file',
2584
- relative(repositoryRoot, input.dockerfile),
2585
- '--label',
2586
- 'org.opencontainers.image.revision=' + sourceCommit,
2587
- '--label',
2588
- 'dev.empire-builder-kit.candidate-digest=' +
2589
- input.candidateArtifactDigest,
2590
- '--platform',
2591
- requestedPlatform,
2592
- '--provenance=false',
2593
- '--push',
2594
- '--sbom=false',
2595
- '--tag',
2596
- taggedReference,
2597
- relative(repositoryRoot, input.context) || '.',
2598
- ], 'Native container build and push');
2599
- } finally {
2600
- cleanupReleaseBuilder();
2601
- }
2772
+ const layerCache = buildxLayerCache(repositoryName, architecture);
2773
+ await executeObservedBuildx([
2774
+ 'buildx',
2775
+ 'build',
2776
+ '--builder',
2777
+ platformBuilder.name,
2778
+ ...(packageRegistry
2779
+ ? [
2780
+ '--build-arg',
2781
+ 'NPM_CONFIG_REGISTRY=' + packageRegistry,
2782
+ ]
2783
+ : []),
2784
+ ...layerCache.arguments,
2785
+ '--file',
2786
+ relative(repositoryRoot, input.dockerfile),
2787
+ '--label',
2788
+ 'org.opencontainers.image.revision=' + sourceCommit,
2789
+ '--label',
2790
+ 'dev.empire-builder-kit.candidate-digest=' +
2791
+ input.candidateArtifactDigest,
2792
+ '--platform',
2793
+ requestedPlatform,
2794
+ '--provenance=false',
2795
+ '--push',
2796
+ '--sbom=false',
2797
+ '--tag',
2798
+ taggedReference,
2799
+ relative(repositoryRoot, input.context) || '.',
2800
+ ], 'Native container build and push');
2801
+ layerCache.commit();
2602
2802
  }
2603
2803
  const imageDigest = exactImageByTag(repositoryName, tag);
2604
2804
  const imageReference = registry + '/' + repositoryName + '@' + imageDigest;
2805
+ if (reusable && reusable.imageDigest !== imageDigest) {
2806
+ throw new Error('Unchanged artifact re-tag differs from the baseline image.');
2807
+ }
2605
2808
  if (
2606
2809
  stage === 'development' &&
2607
2810
  developmentSourcePlatform?.imageDigest !== imageDigest
@@ -2677,39 +2880,43 @@ if (mode === 'platform') {
2677
2880
  resolve(repositoryRoot, relativeRunProofPath),
2678
2881
  serializedRunProof,
2679
2882
  );
2680
- const closureRaw = String(
2681
- execute(
2682
- syft.path,
2683
- ['scan', 'registry:' + imageReference, '--output', 'syft-json'],
2684
- 'Exact application npm closure inventory',
2685
- { env: { SYFT_CHECK_FOR_APP_UPDATE: 'false' } },
2686
- ),
2687
- );
2688
- let closureInventory;
2689
- try {
2690
- closureInventory = JSON.parse(closureRaw);
2691
- } catch {
2692
- throw new Error('Exact application npm closure inventory is invalid JSON.');
2693
- }
2694
- const observedClosure = npmClosureFor(closureInventory, {
2695
- applicationOnly: true,
2696
- });
2697
- if (
2698
- JSON.stringify(observedClosure) !==
2699
- JSON.stringify(expectedClosure.packages)
2700
- ) {
2701
- throw new Error(
2702
- 'Container application npm closure differs from the independently deployed production closure.',
2883
+ if (!reusable) {
2884
+ const closureRaw = String(
2885
+ execute(
2886
+ syft.path,
2887
+ ['scan', 'registry:' + imageReference, '--output', 'syft-json'],
2888
+ 'Exact application npm closure inventory',
2889
+ { env: { SYFT_CHECK_FOR_APP_UPDATE: 'false' } },
2890
+ ),
2703
2891
  );
2892
+ let closureInventory;
2893
+ try {
2894
+ closureInventory = JSON.parse(closureRaw);
2895
+ } catch {
2896
+ throw new Error('Exact application npm closure inventory is invalid JSON.');
2897
+ }
2898
+ const observedClosure = npmClosureFor(closureInventory, {
2899
+ applicationOnly: true,
2900
+ });
2901
+ if (
2902
+ JSON.stringify(observedClosure) !==
2903
+ JSON.stringify(expectedClosure.packages)
2904
+ ) {
2905
+ throw new Error(
2906
+ 'Container application npm closure differs from the independently deployed production closure.',
2907
+ );
2908
+ }
2704
2909
  }
2705
- const rawSbom = String(
2706
- execute(
2707
- syft.path,
2708
- ['scan', 'registry:' + imageReference, '--output', 'cyclonedx-json'],
2709
- 'Exact platform OCI SBOM',
2710
- { env: { SYFT_CHECK_FOR_APP_UPDATE: 'false' } },
2711
- ),
2712
- );
2910
+ const rawSbom = reusable
2911
+ ? reusable.sbomBytes.toString('utf8')
2912
+ : String(
2913
+ execute(
2914
+ syft.path,
2915
+ ['scan', 'registry:' + imageReference, '--output', 'cyclonedx-json'],
2916
+ 'Exact platform OCI SBOM',
2917
+ { env: { SYFT_CHECK_FOR_APP_UPDATE: 'false' } },
2918
+ ),
2919
+ );
2713
2920
  let sbom;
2714
2921
  try {
2715
2922
  sbom = parseCycloneDx(
@@ -1 +1 @@
1
- {"version":3,"file":"generated-container-release-command.js","sourceRoot":"","sources":["../../../../../packages/nx/src/supply-chain/generated-container-release-command.ts"],"names":[],"mappings":"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CAAC,SAAS,CAAC,0BAA0B,CAAC;;;;+BAIhD,IAAI,CAAC,SAAS,CAAC,IAAA,2CAA0B,GAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4zF1E,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"generated-container-release-command.js","sourceRoot":"","sources":["../../../../../packages/nx/src/supply-chain/generated-container-release-command.ts"],"names":[],"mappings":";;;AAwJA,sEAslGC;AA9uGD,6FAI8C;AAC9C,+EAAwF;AAE3E,QAAA,aAAa,GAAG,QAAiB,CAAC;AAE/C,MAAM,0BAA0B,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8B5C,CAAC;AAEF,MAAM,0BAA0B,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B5C,CAAC;AAQW,QAAA,cAAc,GACzB,MAAM,CAAC,MAAM,CAAC;IACZ,cAAc,EAAE;QACd,aAAa,EAAE,UAAU;QACzB,MAAM,EACJ,kEAAkE;QACpE,MAAM,EACJ,mHAAmH;KACtH;IACD,YAAY,EAAE;QACZ,aAAa,EAAE,UAAU;QACzB,MAAM,EACJ,kEAAkE;QACpE,MAAM,EACJ,oHAAoH;KACvH;IACD,aAAa,EAAE;QACb,aAAa,EAAE,UAAU;QACzB,MAAM,EACJ,kEAAkE;QACpE,MAAM,EACJ,kHAAkH;KACrH;IACD,WAAW,EAAE;QACX,aAAa,EAAE,UAAU;QACzB,MAAM,EACJ,kEAAkE;QACpE,MAAM,EACJ,mHAAmH;KACtH;CACF,CAAC,CAAC;AAEL,SAAS,iBAAiB,CACxB,QAAwD;IAExD,IACE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC3B,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,CACtB,CAAC,kCAAkC,CAAC,IAAI,CAAC,QAAQ,CAAC;YAClD,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC;YACvD,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACtC,CAAC,6FAA6F,CAAC,IAAI,CACjG,OAAO,CAAC,MAAM,CACf,CACJ,EACD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,sBAAsB,CAC7B,QAAgD;IAEhD,IACE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC3B,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,CACtB,CAAC,kCAAkC,CAAC,IAAI,CAAC,QAAQ,CAAC;YAClD,OAAO,CAAC,aAAa,KAAK,UAAU;YACpC,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACtC,CAAC,4JAA4J,CAAC,IAAI,CAChK,OAAO,CAAC,MAAM,CACf,CACJ,EACD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,iFAAiF,CAClF,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,2EAA2E;AAC3E,SAAgB,6BAA6B,CAC3C,UAMI,EAAE;IAEN,MAAM,eAAe,GACnB,OAAO,CAAC,eAAe,IAAI,qCAAqC,CAAC;IACnE,MAAM,QAAQ,GAAG,iBAAiB,CAChC,OAAO,CAAC,QAAQ,IAAI,4DAAuB,CAC5C,CAAC;IACF,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,iDAAY,CAAC;IACxD,MAAM,aAAa,GAAG,sBAAsB,CAC1C,OAAO,CAAC,aAAa,IAAI,sBAAc,CACxC,CAAC;IACF,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,qBAAa,CAAC;IAC3D,IACE,CAAC,iEAAiE,CAAC,IAAI,CACrE,eAAe,CAChB;QACD,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;QACpC,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,EACrC,CAAC;QACD,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;IACJ,CAAC;IAED,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAkCC,eAAe;;uBAEF,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;sCACZ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;wBACtC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;uCACb,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;qCAC/B,IAAI,CAAC,SAAS,CAAC,0BAA0B,CAAC;qCAC1C,IAAI,CAAC,SAAS,CAAC,0BAA0B,CAAC;;;;+BAIhD,IAAI,CAAC,SAAS,CAAC,IAAA,2CAA0B,GAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAygG1E,CAAC;AACF,CAAC"}
@@ -78,17 +78,16 @@ function frameworkActionPinInventory() {
78
78
  key,
79
79
  {
80
80
  ...pin,
81
- scope: key === 'nxSetShas'
82
- ? 'framework'
83
- : [
84
- 'checkout',
85
- 'downloadArtifact',
86
- 'pnpmSetup',
87
- 'setupNode',
88
- 'uploadArtifact',
89
- ].includes(key)
90
- ? 'both'
91
- : 'consumer',
81
+ scope: [
82
+ 'checkout',
83
+ 'downloadArtifact',
84
+ 'nxSetShas',
85
+ 'pnpmSetup',
86
+ 'setupNode',
87
+ 'uploadArtifact',
88
+ ].includes(key)
89
+ ? 'both'
90
+ : 'consumer',
92
91
  },
93
92
  ])),
94
93
  containers: {},
@@ -265,6 +264,17 @@ permissions, advisories, alternatives, removal path, and owning team in the
265
264
  pull request. Changes to \`allowBuilds\` require a matching exact-package record
266
265
  with owner, rationale, work item, and approval time.
267
266
 
267
+ Pin reviewed transitive fixes in the seeded
268
+ \`supply-chain/dependency-overrides.json\` file, using
269
+ \`{"schemaVersion":1,"overrides":{"package@range":"1.2.3"}}\`.
270
+ Parent selectors such as \`parent>dependency\` are supported. Values must be
271
+ exact npm versions; alternate registries, local paths, hooks, and ranges are
272
+ not admitted by this surface. Report and apply \`nx g @empire-builder-kit/nx:upgrade workspace\`
273
+ to generate the effective managed \`pnpm-workspace.yaml\`, then run
274
+ \`pnpm install\` to reconcile its lockfile and installed dependency state.
275
+ Review the lockfile and rerun affected checks. Never edit the managed YAML or
276
+ ownership hashes. Pins do not waive the existing supply-chain policies.
277
+
268
278
  The license lists are organization-owned policy, not legal conclusions.
269
279
  Unknown and changed licenses require review. Exceptions are exact-component,
270
280
  approved, expiring records with compensating controls and recheck triggers.
@@ -1 +1 @@
1
- {"version":3,"file":"generated-files.js","sourceRoot":"","sources":["../../../../../packages/nx/src/supply-chain/generated-files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generated-files.js","sourceRoot":"","sources":["../../../../../packages/nx/src/supply-chain/generated-files.ts"],"names":[],"mappings":"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"}
@@ -428,7 +428,7 @@ async function resolveOsvBinary() {
428
428
  }
429
429
  const target = options.osv
430
430
  ? insideWorkspace(options.osv)
431
- : insideWorkspace('.ebk/tools/' + release.name);
431
+ : insideWorkspace('.ebk/cache/tools/' + release.name);
432
432
  if (!options.osv && !existsSync(target)) {
433
433
  const response = await fetch(
434
434
  'https://github.com/google/osv-scanner/releases/download/v' +
@@ -277,6 +277,9 @@ function severity(value) {
277
277
  const candidate = (0, validation_js_1.isRecord)(value) && typeof value.severity === 'string'
278
278
  ? value.severity.toLowerCase()
279
279
  : '';
280
+ // GitHub's GraphQL/advisory data uses MODERATE for the REST medium tier.
281
+ if (candidate === 'moderate')
282
+ return 'medium';
280
283
  return ['critical', 'high', 'medium', 'low'].includes(candidate)
281
284
  ? candidate
282
285
  : 'unknown';