@serve.zone/interfaces 27.2.0 → 27.3.1

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.
@@ -22,6 +22,9 @@ export const cloudlyLegacyDeploymentSettlementDomains = Object.freeze({
22
22
  stableOutcomeHmac: 'serve.zone/cloudly-legacy-deployment-settlement/stable-outcome-hmac-v1\0',
23
23
  scratchReceiptHmac: 'serve.zone/cloudly-legacy-deployment-settlement/scratch-receipt-hmac-v1\0',
24
24
  productionReceiptHmac: 'serve.zone/cloudly-legacy-deployment-settlement/production-receipt-hmac-v1\0',
25
+ productionExecutionAuthorizationHmac: 'serve.zone/cloudly-legacy-deployment-settlement/production-execution-authorization-hmac-v1\0',
26
+ productionReceiptV2Hmac: 'serve.zone/cloudly-legacy-deployment-settlement/production-receipt-hmac-v2\0',
27
+ resolutionHmac: 'serve.zone/cloudly-legacy-deployment-settlement/resolution-recovery-attestation-hmac-v1\0',
25
28
  });
26
29
  /** Safe error surface: code and schema path are finite and never contain values. */
27
30
  export class CloudlyLegacyDeploymentSettlementCodecError extends Error {
@@ -62,6 +65,38 @@ const authorityMetadataKeys = [
62
65
  'restoredDataSha256',
63
66
  'digestProofSha256',
64
67
  ];
68
+ const authorityMetadataOptionalKeys = [
69
+ 'executionProtocol',
70
+ 'sourceAuthority',
71
+ 'sourceAuthenticatedPlanSha256',
72
+ 'sourceRequestBundleSha256',
73
+ 'scratchReceiptSha256',
74
+ ];
75
+ const authorityMetadataCrossAuthorityKeys = [
76
+ 'schemaVersion',
77
+ 'operationId',
78
+ 'keyVersion',
79
+ 'settlementId',
80
+ 'maintenanceImageDigest',
81
+ 'sourceImageDigest',
82
+ 'targetImageDigest',
83
+ 'targetVersion',
84
+ 'targetManifestSha256',
85
+ 'targetConfigSha256',
86
+ 'backupId',
87
+ 'backupSnapshotIdSha256',
88
+ 'backupProofSha256',
89
+ 'runId',
90
+ 'rehearsalId',
91
+ 'scratchServiceId',
92
+ 'allocationId',
93
+ 'allocationGeneration',
94
+ 'allocationBindingSha256',
95
+ 'allocationReceiptSha256',
96
+ 'sourceDataSha256',
97
+ 'restoredDataSha256',
98
+ 'digestProofSha256',
99
+ ];
65
100
  const classificationKeys = [
66
101
  'image-recorded-not-current',
67
102
  'image-recorded-current-failed',
@@ -233,12 +268,12 @@ const finalize = (valueArg, maximumBytesArg, pathArg) => {
233
268
  }
234
269
  return deepFreezeValue(valueArg);
235
270
  };
236
- const encodeNormalized = (valueArg, pathArg) => (new Uint8Array(Buffer.from(canonicalize(valueArg, pathArg), 'utf8')));
271
+ const encodeNormalized = (valueArg, pathArg) => (Buffer.from(canonicalize(valueArg, pathArg), 'utf8'));
237
272
  const frame = (domainArg, payloadArg) => {
238
273
  const domain = Buffer.from(domainArg, 'utf8');
239
274
  const output = new Uint8Array(domain.byteLength + payloadArg.byteLength);
240
275
  output.set(domain, 0);
241
- output.set(new Uint8Array(payloadArg), domain.byteLength);
276
+ output.set(payloadArg, domain.byteLength);
242
277
  return output;
243
278
  };
244
279
  const digestBytes = (valueArg) => (plugins.crypto.createHash('sha256').update(new Uint8Array(valueArg)).digest('hex'));
@@ -258,7 +293,8 @@ const normalizeAuthorityReferenceInternal = (valueArg, pathArg) => {
258
293
  export const normalizeCloudlyLegacyDeploymentSettlementAuthorityReference = (valueArg) => finalize(normalizeAuthorityReferenceInternal(valueArg, 'authorityReference'), cloudlyLegacyDeploymentSettlementLimits.maximumAuthorityBytes, 'authorityReference');
259
294
  const normalizeAuthorityMetadataInternal = (valueArg, pathArg) => {
260
295
  const value = readRecord(valueArg, pathArg);
261
- assertExactKeys(value, authorityMetadataKeys, pathArg);
296
+ const optionalKeys = authorityMetadataOptionalKeys.filter((keyArg) => Object.hasOwn(value, keyArg));
297
+ assertExactKeys(value, [...authorityMetadataKeys, ...optionalKeys], pathArg);
262
298
  if (value.schemaVersion !== 1 || value.keyVersion !== 1) {
263
299
  fail('INVALID_VALUE', `${pathArg}.schemaVersion`);
264
300
  }
@@ -274,11 +310,35 @@ const normalizeAuthorityMetadataInternal = (valueArg, pathArg) => {
274
310
  if (sourceDataSha256 !== restoredDataSha256) {
275
311
  fail('CROSS_FIELD_MISMATCH', `${pathArg}.restoredDataSha256`);
276
312
  }
277
- return {
313
+ const predecessorKeys = authorityMetadataOptionalKeys.filter((keyArg) => (keyArg !== 'executionProtocol'));
314
+ const hasExecutionProtocol = Object.hasOwn(value, 'executionProtocol');
315
+ const predecessorKeyCount = predecessorKeys.filter((keyArg) => Object.hasOwn(value, keyArg)).length;
316
+ if (hasExecutionProtocol && value.executionProtocol !== 'fenced-attempt-v1') {
317
+ fail('INVALID_VALUE', `${pathArg}.executionProtocol`);
318
+ }
319
+ if (predecessorKeyCount !== 0 && predecessorKeyCount !== predecessorKeys.length) {
320
+ fail('INVALID_SCHEMA', `${pathArg}.sourceAuthority`);
321
+ }
322
+ if (predecessorKeyCount > 0 && !hasExecutionProtocol) {
323
+ fail('CROSS_FIELD_MISMATCH', `${pathArg}.executionProtocol`);
324
+ }
325
+ const operationId = readIdentifier(value.operationId, `${pathArg}.operationId`);
326
+ const authorityId = readIdentifier(value.authorityId, `${pathArg}.authorityId`);
327
+ const keyId = readIdentifier(value.keyId, `${pathArg}.keyId`);
328
+ const sourceAuthority = predecessorKeyCount === 0
329
+ ? undefined
330
+ : normalizeAuthorityReferenceInternal(value.sourceAuthority, `${pathArg}.sourceAuthority`);
331
+ if (sourceAuthority
332
+ && (sourceAuthority.operationId !== operationId
333
+ || sourceAuthority.authorityId === authorityId
334
+ || sourceAuthority.keyId === keyId)) {
335
+ fail('CROSS_FIELD_MISMATCH', `${pathArg}.sourceAuthority`);
336
+ }
337
+ const common = {
278
338
  schemaVersion: 1,
279
- operationId: readIdentifier(value.operationId, `${pathArg}.operationId`),
280
- authorityId: readIdentifier(value.authorityId, `${pathArg}.authorityId`),
281
- keyId: readIdentifier(value.keyId, `${pathArg}.keyId`),
339
+ operationId,
340
+ authorityId,
341
+ keyId,
282
342
  keyVersion: 1,
283
343
  settlementId: readIdentifier(value.settlementId, `${pathArg}.settlementId`),
284
344
  issuedAt,
@@ -303,6 +363,23 @@ const normalizeAuthorityMetadataInternal = (valueArg, pathArg) => {
303
363
  restoredDataSha256,
304
364
  digestProofSha256: readSha256(value.digestProofSha256, `${pathArg}.digestProofSha256`),
305
365
  };
366
+ if (!hasExecutionProtocol) {
367
+ return common;
368
+ }
369
+ if (!sourceAuthority) {
370
+ return {
371
+ ...common,
372
+ executionProtocol: 'fenced-attempt-v1',
373
+ };
374
+ }
375
+ return {
376
+ ...common,
377
+ executionProtocol: 'fenced-attempt-v1',
378
+ sourceAuthority,
379
+ sourceAuthenticatedPlanSha256: readSha256(value.sourceAuthenticatedPlanSha256, `${pathArg}.sourceAuthenticatedPlanSha256`),
380
+ sourceRequestBundleSha256: readSha256(value.sourceRequestBundleSha256, `${pathArg}.sourceRequestBundleSha256`),
381
+ scratchReceiptSha256: readSha256(value.scratchReceiptSha256, `${pathArg}.scratchReceiptSha256`),
382
+ };
306
383
  };
307
384
  export const normalizeCloudlyLegacyDeploymentSettlementAuthorityMetadata = (valueArg) => finalize(normalizeAuthorityMetadataInternal(valueArg, 'authorityMetadata'), cloudlyLegacyDeploymentSettlementLimits.maximumAuthorityBytes, 'authorityMetadata');
308
385
  export const encodeCloudlyLegacyDeploymentSettlementAuthorityMetadata = (valueArg) => encodeNormalized(normalizeCloudlyLegacyDeploymentSettlementAuthorityMetadata(valueArg), 'authorityMetadata');
@@ -327,6 +404,49 @@ export const normalizeCloudlyLegacyDeploymentSettlementAuthorityReferenceForMeta
327
404
  }
328
405
  return reference;
329
406
  };
407
+ const normalizeFencedSourceAuthorityMetadata = (metadataArg, pathArg) => {
408
+ const metadata = normalizeCloudlyLegacyDeploymentSettlementAuthorityMetadata(metadataArg);
409
+ if (metadata.executionProtocol !== 'fenced-attempt-v1'
410
+ || Object.hasOwn(metadata, 'sourceAuthority')) {
411
+ fail('CROSS_FIELD_MISMATCH', pathArg);
412
+ }
413
+ return metadata;
414
+ };
415
+ const normalizeProductionAuthorityMetadataPair = (productionMetadataArg, sourceMetadataArg) => {
416
+ const productionMetadata = normalizeCloudlyLegacyDeploymentSettlementAuthorityMetadata(productionMetadataArg);
417
+ const sourceMetadata = normalizeFencedSourceAuthorityMetadata(sourceMetadataArg, 'sourceAuthorityMetadata');
418
+ if (productionMetadata.executionProtocol !== 'fenced-attempt-v1'
419
+ || !Object.hasOwn(productionMetadata, 'sourceAuthority')) {
420
+ fail('CROSS_FIELD_MISMATCH', 'productionAuthorityMetadata');
421
+ }
422
+ const fencedSourceMetadata = sourceMetadata;
423
+ const fencedProductionMetadata = productionMetadata;
424
+ const sourceAuthority = createCloudlyLegacyDeploymentSettlementAuthorityReference(fencedSourceMetadata);
425
+ const productionAuthority = createCloudlyLegacyDeploymentSettlementAuthorityReference(fencedProductionMetadata);
426
+ const sourceContext = Object.fromEntries(authorityMetadataCrossAuthorityKeys.map((keyArg) => [
427
+ keyArg,
428
+ fencedSourceMetadata[keyArg],
429
+ ]));
430
+ const productionContext = Object.fromEntries(authorityMetadataCrossAuthorityKeys.map((keyArg) => [
431
+ keyArg,
432
+ fencedProductionMetadata[keyArg],
433
+ ]));
434
+ if (canonicalize(fencedProductionMetadata.sourceAuthority, 'productionMetadata.sourceAuthority')
435
+ !== canonicalize(sourceAuthority, 'sourceMetadata.authority')
436
+ || canonicalize(productionAuthority, 'productionMetadata.authority')
437
+ === canonicalize(sourceAuthority, 'sourceMetadata.authority')
438
+ || fencedProductionMetadata.authorityId === fencedSourceMetadata.authorityId
439
+ || fencedProductionMetadata.keyId === fencedSourceMetadata.keyId
440
+ || canonicalize(productionContext, 'productionMetadata.context')
441
+ !== canonicalize(sourceContext, 'sourceMetadata.context')) {
442
+ fail('CROSS_FIELD_MISMATCH', 'productionAuthorityMetadata.sourceAuthority');
443
+ }
444
+ return {
445
+ productionMetadata: fencedProductionMetadata,
446
+ sourceMetadata: fencedSourceMetadata,
447
+ };
448
+ };
449
+ export const normalizeCloudlyLegacyDeploymentSettlementProductionAuthorityMetadataForSourceAuthority = (productionMetadataArg, sourceMetadataArg) => (normalizeProductionAuthorityMetadataPair(productionMetadataArg, sourceMetadataArg).productionMetadata);
330
450
  export const normalizeCloudlyLegacyDeploymentSettlementAuthorityHandoffPlaintext = (valueArg) => {
331
451
  const value = readRecord(valueArg, 'authorityHandoffPlaintext');
332
452
  assertExactKeys(value, [
@@ -353,8 +473,13 @@ export const normalizeCloudlyLegacyDeploymentSettlementAuthorityHandoffPlaintext
353
473
  fail('INVALID_VALUE', 'authorityHandoffPlaintext.hmacKeyPlaintext');
354
474
  }
355
475
  const keyBytes = Buffer.from(keyValue, 'base64url');
356
- if (keyBytes.byteLength !== 32 || keyBytes.toString('base64url') !== keyValue) {
357
- fail('INVALID_VALUE', 'authorityHandoffPlaintext.hmacKeyPlaintext.value');
476
+ try {
477
+ if (keyBytes.byteLength !== 32 || keyBytes.toString('base64url') !== keyValue) {
478
+ fail('INVALID_VALUE', 'authorityHandoffPlaintext.hmacKeyPlaintext.value');
479
+ }
480
+ }
481
+ finally {
482
+ keyBytes.fill(0);
358
483
  }
359
484
  return finalize({
360
485
  schemaVersion: 1,
@@ -365,6 +490,55 @@ export const normalizeCloudlyLegacyDeploymentSettlementAuthorityHandoffPlaintext
365
490
  }, cloudlyLegacyDeploymentSettlementLimits.maximumAuthorityBytes, 'authorityHandoffPlaintext');
366
491
  };
367
492
  export const encodeCloudlyLegacyDeploymentSettlementAuthorityHandoffPlaintext = (valueArg) => encodeNormalized(normalizeCloudlyLegacyDeploymentSettlementAuthorityHandoffPlaintext(valueArg), 'authorityHandoffPlaintext');
493
+ /**
494
+ * Private in-process stdio handoff verification only. Do not persist or log the
495
+ * handoff or returned verifier; discard both as soon as the stdio exchange ends.
496
+ */
497
+ export const createCloudlyLegacyDeploymentSettlementStdioHandoffHmacVerifier = (handoffArg) => {
498
+ const handoff = normalizeCloudlyLegacyDeploymentSettlementAuthorityHandoffPlaintext(handoffArg);
499
+ const authorityCanonical = canonicalize(handoff.authorityReference, 'stdioHandoffHmacVerifier.authority');
500
+ const keyValue = handoff.hmacKeyPlaintext.value;
501
+ return (inputArg) => {
502
+ let keyBytes;
503
+ let suppliedMacBytes;
504
+ let expectedMacBytes;
505
+ try {
506
+ if (!(inputArg.hmacInput instanceof Uint8Array)
507
+ || canonicalize(inputArg.authority, 'stdioHandoffHmacVerifier.input.authority')
508
+ !== authorityCanonical
509
+ || !macPattern.test(inputArg.mac)) {
510
+ return false;
511
+ }
512
+ const domainBytes = Buffer.from(inputArg.domain, 'utf8');
513
+ const hmacInputBytes = Buffer.from(inputArg.hmacInput);
514
+ if (hmacInputBytes.byteLength < domainBytes.byteLength
515
+ || !hmacInputBytes.subarray(0, domainBytes.byteLength).equals(domainBytes)) {
516
+ return false;
517
+ }
518
+ keyBytes = Buffer.from(keyValue, 'base64url');
519
+ suppliedMacBytes = Buffer.from(inputArg.mac, 'base64url');
520
+ if (keyBytes.byteLength !== 32
521
+ || keyBytes.toString('base64url') !== keyValue
522
+ || suppliedMacBytes.byteLength !== 32
523
+ || suppliedMacBytes.toString('base64url') !== inputArg.mac) {
524
+ return false;
525
+ }
526
+ expectedMacBytes = plugins.crypto
527
+ .createHmac('sha256', keyBytes)
528
+ .update(hmacInputBytes)
529
+ .digest();
530
+ return plugins.crypto.timingSafeEqual(expectedMacBytes, suppliedMacBytes);
531
+ }
532
+ catch {
533
+ return false;
534
+ }
535
+ finally {
536
+ keyBytes?.fill(0);
537
+ suppliedMacBytes?.fill(0);
538
+ expectedMacBytes?.fill(0);
539
+ }
540
+ };
541
+ };
368
542
  const normalizeClassificationCounts = (valueArg, pathArg) => {
369
543
  const value = readRecord(valueArg, pathArg);
370
544
  assertExactKeys(value, classificationKeys, pathArg);
@@ -1375,5 +1549,1767 @@ export const normalizeCloudlyLegacyDeploymentSettlementProductionReceiptStructur
1375
1549
  }
1376
1550
  return receipt;
1377
1551
  };
1552
+ const requestBundleKeys = [
1553
+ 'schemaVersion',
1554
+ 'kind',
1555
+ 'authenticatedRehearsalBinding',
1556
+ 'authenticatedRequest',
1557
+ ];
1558
+ export const normalizeCloudlyLegacyDeploymentSettlementRequestBundle = (valueArg) => {
1559
+ const value = readRecord(valueArg, 'requestBundle');
1560
+ assertExactKeys(value, requestBundleKeys, 'requestBundle');
1561
+ if (value.schemaVersion !== 1
1562
+ || value.kind !== 'cloudly-legacy-deployment-settlement-request-bundle') {
1563
+ fail('INVALID_VALUE', 'requestBundle.kind');
1564
+ }
1565
+ const authenticatedRehearsalBinding = normalizeCloudlyLegacyDeploymentSettlementAuthenticatedRehearsalBindingStructure(value.authenticatedRehearsalBinding);
1566
+ const authenticatedRequest = normalizeCloudlyLegacyDeploymentSettlementAuthenticatedProductionRequestStructure(value.authenticatedRequest);
1567
+ if (canonicalize(authenticatedRehearsalBinding.authority, 'requestBundle.binding.authority')
1568
+ !== canonicalize(authenticatedRequest.authority, 'requestBundle.request.authority')
1569
+ || canonicalize(authenticatedRehearsalBinding.payload, 'requestBundle.binding.payload') !== canonicalize(authenticatedRequest.payload.rehearsalBinding, 'requestBundle.request.rehearsalBinding')
1570
+ || authenticatedRehearsalBinding.payloadSha256
1571
+ !== authenticatedRequest.payload.rehearsalBindingSha256) {
1572
+ fail('CROSS_FIELD_MISMATCH', 'requestBundle.authenticatedRehearsalBinding');
1573
+ }
1574
+ return finalize({
1575
+ schemaVersion: 1,
1576
+ kind: 'cloudly-legacy-deployment-settlement-request-bundle',
1577
+ authenticatedRehearsalBinding,
1578
+ authenticatedRequest,
1579
+ }, cloudlyLegacyDeploymentSettlementLimits.maximumAuthenticatedArtifactBytes * 2, 'requestBundle');
1580
+ };
1581
+ export const encodeCloudlyLegacyDeploymentSettlementRequestBundle = (valueArg) => encodeNormalized(normalizeCloudlyLegacyDeploymentSettlementRequestBundle(valueArg), 'requestBundle');
1582
+ export const digestCloudlyLegacyDeploymentSettlementRequestBundle = (valueArg) => digestBytes(encodeCloudlyLegacyDeploymentSettlementRequestBundle(valueArg));
1583
+ const executionAttemptIdentityKeys = [
1584
+ 'schemaVersion',
1585
+ 'kind',
1586
+ 'attemptId',
1587
+ 'purpose',
1588
+ 'operationId',
1589
+ 'settlementId',
1590
+ 'executionAuthority',
1591
+ 'sourceAuthority',
1592
+ 'authenticatedPlanSha256',
1593
+ 'requestBundleSha256',
1594
+ 'scratchReceiptSha256',
1595
+ ];
1596
+ const executionAttemptIdentitySeed = (valueArg) => ({
1597
+ schemaVersion: valueArg.schemaVersion,
1598
+ kind: valueArg.kind,
1599
+ purpose: valueArg.purpose,
1600
+ operationId: valueArg.operationId,
1601
+ settlementId: valueArg.settlementId,
1602
+ executionAuthority: valueArg.executionAuthority,
1603
+ sourceAuthority: valueArg.sourceAuthority,
1604
+ authenticatedPlanSha256: valueArg.authenticatedPlanSha256,
1605
+ requestBundleSha256: valueArg.requestBundleSha256,
1606
+ scratchReceiptSha256: valueArg.scratchReceiptSha256,
1607
+ });
1608
+ const createExecutionAttemptId = (valueArg) => `settlement-attempt-${digestBytes(encodeNormalized(executionAttemptIdentitySeed(valueArg), 'executionAttemptIdentity.seed')).slice(0, 40)}`;
1609
+ const normalizeExecutionAttemptIdentityInternal = (valueArg, pathArg) => {
1610
+ const value = readRecord(valueArg, pathArg);
1611
+ assertExactKeys(value, executionAttemptIdentityKeys, pathArg);
1612
+ if (value.schemaVersion !== 1
1613
+ || value.kind !== 'cloudly-legacy-deployment-settlement-execution-attempt-identity') {
1614
+ fail('INVALID_VALUE', `${pathArg}.kind`);
1615
+ }
1616
+ const purpose = readLiteral(value.purpose, ['scratch-rehearsal', 'production'], `${pathArg}.purpose`);
1617
+ const operationId = readIdentifier(value.operationId, `${pathArg}.operationId`);
1618
+ const executionAuthority = normalizeAuthorityReferenceInternal(value.executionAuthority, `${pathArg}.executionAuthority`);
1619
+ const sourceAuthority = normalizeAuthorityReferenceInternal(value.sourceAuthority, `${pathArg}.sourceAuthority`);
1620
+ const usesSameAuthority = canonicalize(executionAuthority, `${pathArg}.executionAuthority`)
1621
+ === canonicalize(sourceAuthority, `${pathArg}.sourceAuthority`);
1622
+ if (executionAuthority.operationId !== operationId
1623
+ || sourceAuthority.operationId !== operationId
1624
+ || (purpose === 'scratch-rehearsal') !== usesSameAuthority) {
1625
+ fail('CROSS_FIELD_MISMATCH', `${pathArg}.executionAuthority`);
1626
+ }
1627
+ const scratchReceiptSha256 = value.scratchReceiptSha256 === null
1628
+ ? null
1629
+ : readSha256(value.scratchReceiptSha256, `${pathArg}.scratchReceiptSha256`);
1630
+ if ((purpose === 'production') !== (scratchReceiptSha256 !== null)) {
1631
+ fail('CROSS_FIELD_MISMATCH', `${pathArg}.scratchReceiptSha256`);
1632
+ }
1633
+ const identityWithoutId = {
1634
+ schemaVersion: 1,
1635
+ kind: 'cloudly-legacy-deployment-settlement-execution-attempt-identity',
1636
+ purpose,
1637
+ operationId,
1638
+ settlementId: readIdentifier(value.settlementId, `${pathArg}.settlementId`),
1639
+ executionAuthority,
1640
+ sourceAuthority,
1641
+ authenticatedPlanSha256: readSha256(value.authenticatedPlanSha256, `${pathArg}.authenticatedPlanSha256`),
1642
+ requestBundleSha256: readSha256(value.requestBundleSha256, `${pathArg}.requestBundleSha256`),
1643
+ scratchReceiptSha256,
1644
+ };
1645
+ const attemptId = readIdentifier(value.attemptId, `${pathArg}.attemptId`);
1646
+ if (attemptId !== createExecutionAttemptId(identityWithoutId)) {
1647
+ fail('CROSS_FIELD_MISMATCH', `${pathArg}.attemptId`);
1648
+ }
1649
+ return { ...identityWithoutId, attemptId };
1650
+ };
1651
+ export function createCloudlyLegacyDeploymentSettlementExecutionAttemptIdentity(valueArg) {
1652
+ const seed = {
1653
+ schemaVersion: 1,
1654
+ kind: 'cloudly-legacy-deployment-settlement-execution-attempt-identity',
1655
+ purpose: valueArg.purpose,
1656
+ operationId: valueArg.operationId,
1657
+ settlementId: valueArg.settlementId,
1658
+ executionAuthority: valueArg.executionAuthority,
1659
+ sourceAuthority: valueArg.sourceAuthority,
1660
+ authenticatedPlanSha256: valueArg.authenticatedPlanSha256,
1661
+ requestBundleSha256: valueArg.requestBundleSha256,
1662
+ scratchReceiptSha256: valueArg.scratchReceiptSha256,
1663
+ };
1664
+ return normalizeCloudlyLegacyDeploymentSettlementExecutionAttemptIdentity({
1665
+ ...seed,
1666
+ attemptId: createExecutionAttemptId(seed),
1667
+ });
1668
+ }
1669
+ export const normalizeCloudlyLegacyDeploymentSettlementExecutionAttemptIdentity = (valueArg) => finalize(normalizeExecutionAttemptIdentityInternal(valueArg, 'executionAttemptIdentity'), cloudlyLegacyDeploymentSettlementLimits.maximumAuthorityBytes, 'executionAttemptIdentity');
1670
+ export const encodeCloudlyLegacyDeploymentSettlementExecutionAttemptIdentity = (valueArg) => encodeNormalized(normalizeCloudlyLegacyDeploymentSettlementExecutionAttemptIdentity(valueArg), 'executionAttemptIdentity');
1671
+ export const digestCloudlyLegacyDeploymentSettlementExecutionAttemptIdentity = (valueArg) => digestBytes(encodeCloudlyLegacyDeploymentSettlementExecutionAttemptIdentity(valueArg));
1672
+ const normalizeExecutionAttemptObservationInternal = (valueArg, pathArg) => {
1673
+ const value = readRecord(valueArg, pathArg);
1674
+ const state = readLiteral(value.state, ['prepared', 'committed', 'aborted'], `${pathArg}.state`);
1675
+ assertExactKeys(value, [
1676
+ 'schemaVersion',
1677
+ 'kind',
1678
+ 'identity',
1679
+ 'state',
1680
+ 'preparedAt',
1681
+ ...(state === 'committed' ? ['resolvedAt', 'receiptSchemaVersion', 'receiptSha256'] : []),
1682
+ ...(state === 'aborted' ? ['resolvedAt'] : []),
1683
+ ], pathArg);
1684
+ if (value.schemaVersion !== 1
1685
+ || value.kind !== 'cloudly-legacy-deployment-settlement-execution-attempt-observation') {
1686
+ fail('INVALID_VALUE', `${pathArg}.kind`);
1687
+ }
1688
+ const identity = normalizeExecutionAttemptIdentityInternal(value.identity, `${pathArg}.identity`);
1689
+ const preparedAt = readInteger(value.preparedAt, `${pathArg}.preparedAt`, 1);
1690
+ if (state === 'prepared') {
1691
+ return {
1692
+ schemaVersion: 1,
1693
+ kind: 'cloudly-legacy-deployment-settlement-execution-attempt-observation',
1694
+ identity,
1695
+ state,
1696
+ preparedAt,
1697
+ };
1698
+ }
1699
+ const resolvedAt = readInteger(value.resolvedAt, `${pathArg}.resolvedAt`, preparedAt);
1700
+ if (state === 'aborted') {
1701
+ return {
1702
+ schemaVersion: 1,
1703
+ kind: 'cloudly-legacy-deployment-settlement-execution-attempt-observation',
1704
+ identity,
1705
+ state,
1706
+ preparedAt,
1707
+ resolvedAt,
1708
+ };
1709
+ }
1710
+ if (value.receiptSchemaVersion !== 1 && value.receiptSchemaVersion !== 2) {
1711
+ fail('INVALID_VALUE', `${pathArg}.receiptSchemaVersion`);
1712
+ }
1713
+ const receiptSchemaVersion = value.receiptSchemaVersion;
1714
+ return {
1715
+ schemaVersion: 1,
1716
+ kind: 'cloudly-legacy-deployment-settlement-execution-attempt-observation',
1717
+ identity,
1718
+ state,
1719
+ preparedAt,
1720
+ resolvedAt,
1721
+ receiptSchemaVersion,
1722
+ receiptSha256: readSha256(value.receiptSha256, `${pathArg}.receiptSha256`),
1723
+ };
1724
+ };
1725
+ export const normalizeCloudlyLegacyDeploymentSettlementExecutionAttemptObservation = (valueArg) => finalize(normalizeExecutionAttemptObservationInternal(valueArg, 'executionAttemptObservation'), cloudlyLegacyDeploymentSettlementLimits.maximumAuthorityBytes, 'executionAttemptObservation');
1726
+ export const encodeCloudlyLegacyDeploymentSettlementExecutionAttemptObservation = (valueArg) => encodeNormalized(normalizeCloudlyLegacyDeploymentSettlementExecutionAttemptObservation(valueArg), 'executionAttemptObservation');
1727
+ export const digestCloudlyLegacyDeploymentSettlementExecutionAttemptObservation = (valueArg) => digestBytes(encodeCloudlyLegacyDeploymentSettlementExecutionAttemptObservation(valueArg));
1728
+ const productionExecutionAuthorizationPayloadKeys = [
1729
+ 'schemaVersion',
1730
+ 'kind',
1731
+ 'authority',
1732
+ 'sourceAuthority',
1733
+ 'executionAttempt',
1734
+ 'authenticatedPlanSha256',
1735
+ 'requestBundleSha256',
1736
+ 'scratchReceiptSha256',
1737
+ 'maintenanceImageDigest',
1738
+ 'operationId',
1739
+ 'settlementId',
1740
+ 'runId',
1741
+ 'rehearsalId',
1742
+ 'scratchServiceId',
1743
+ 'allocationId',
1744
+ 'allocationGeneration',
1745
+ 'allocationBindingSha256',
1746
+ 'allocationReceiptSha256',
1747
+ 'sourceImageDigest',
1748
+ 'targetImageDigest',
1749
+ 'requestedAt',
1750
+ 'approvedAt',
1751
+ ];
1752
+ const unsignedProductionExecutionAuthorizationKeys = [
1753
+ ...productionExecutionAuthorizationPayloadKeys,
1754
+ 'payloadSha256',
1755
+ ];
1756
+ const productionExecutionAuthorizationKeys = [
1757
+ ...unsignedProductionExecutionAuthorizationKeys,
1758
+ 'mac',
1759
+ ];
1760
+ const productionExecutionAuthorizationPayload = (valueArg) => Object.fromEntries(productionExecutionAuthorizationPayloadKeys.map((keyArg) => [
1761
+ keyArg,
1762
+ valueArg[keyArg],
1763
+ ]));
1764
+ const normalizeProductionExecutionAuthorizationPayloadInternal = (valueArg, pathArg) => {
1765
+ const value = readRecord(valueArg, pathArg);
1766
+ assertExactKeys(value, productionExecutionAuthorizationPayloadKeys, pathArg);
1767
+ if (value.schemaVersion !== 1
1768
+ || value.kind
1769
+ !== 'cloudly-legacy-deployment-settlement-production-execution-authorization') {
1770
+ fail('INVALID_VALUE', `${pathArg}.kind`);
1771
+ }
1772
+ const authority = normalizeAuthorityReferenceInternal(value.authority, `${pathArg}.authority`);
1773
+ const sourceAuthority = normalizeAuthorityReferenceInternal(value.sourceAuthority, `${pathArg}.sourceAuthority`);
1774
+ const executionAttempt = normalizeExecutionAttemptIdentityInternal(value.executionAttempt, `${pathArg}.executionAttempt`);
1775
+ const operationId = readIdentifier(value.operationId, `${pathArg}.operationId`);
1776
+ const settlementId = readIdentifier(value.settlementId, `${pathArg}.settlementId`);
1777
+ const authenticatedPlanSha256 = readSha256(value.authenticatedPlanSha256, `${pathArg}.authenticatedPlanSha256`);
1778
+ const requestBundleSha256 = readSha256(value.requestBundleSha256, `${pathArg}.requestBundleSha256`);
1779
+ const scratchReceiptSha256 = readSha256(value.scratchReceiptSha256, `${pathArg}.scratchReceiptSha256`);
1780
+ if (executionAttempt.purpose !== 'production'
1781
+ || executionAttempt.operationId !== operationId
1782
+ || executionAttempt.settlementId !== settlementId
1783
+ || authority.authorityId === sourceAuthority.authorityId
1784
+ || authority.keyId === sourceAuthority.keyId
1785
+ || canonicalize(authority, `${pathArg}.authority`)
1786
+ === canonicalize(sourceAuthority, `${pathArg}.sourceAuthority`)
1787
+ || canonicalize(executionAttempt.executionAuthority, `${pathArg}.attempt.executionAuthority`)
1788
+ !== canonicalize(authority, `${pathArg}.authority`)
1789
+ || canonicalize(executionAttempt.sourceAuthority, `${pathArg}.attempt.sourceAuthority`)
1790
+ !== canonicalize(sourceAuthority, `${pathArg}.sourceAuthority`)
1791
+ || executionAttempt.authenticatedPlanSha256 !== authenticatedPlanSha256
1792
+ || executionAttempt.requestBundleSha256 !== requestBundleSha256
1793
+ || executionAttempt.scratchReceiptSha256 !== scratchReceiptSha256) {
1794
+ fail('CROSS_FIELD_MISMATCH', `${pathArg}.executionAttempt`);
1795
+ }
1796
+ const requestedAt = readInteger(value.requestedAt, `${pathArg}.requestedAt`, 1);
1797
+ const approvedAt = readInteger(value.approvedAt, `${pathArg}.approvedAt`, requestedAt);
1798
+ return {
1799
+ schemaVersion: 1,
1800
+ kind: 'cloudly-legacy-deployment-settlement-production-execution-authorization',
1801
+ authority,
1802
+ sourceAuthority,
1803
+ executionAttempt: executionAttempt,
1804
+ authenticatedPlanSha256,
1805
+ requestBundleSha256,
1806
+ scratchReceiptSha256,
1807
+ maintenanceImageDigest: readOciDigest(value.maintenanceImageDigest, `${pathArg}.maintenanceImageDigest`),
1808
+ operationId,
1809
+ settlementId,
1810
+ runId: readIdentifier(value.runId, `${pathArg}.runId`),
1811
+ rehearsalId: readIdentifier(value.rehearsalId, `${pathArg}.rehearsalId`),
1812
+ scratchServiceId: readIdentifier(value.scratchServiceId, `${pathArg}.scratchServiceId`),
1813
+ allocationId: readIdentifier(value.allocationId, `${pathArg}.allocationId`),
1814
+ allocationGeneration: readInteger(value.allocationGeneration, `${pathArg}.allocationGeneration`, 1),
1815
+ allocationBindingSha256: readSha256(value.allocationBindingSha256, `${pathArg}.allocationBindingSha256`),
1816
+ allocationReceiptSha256: readSha256(value.allocationReceiptSha256, `${pathArg}.allocationReceiptSha256`),
1817
+ sourceImageDigest: readOciDigest(value.sourceImageDigest, `${pathArg}.sourceImageDigest`),
1818
+ targetImageDigest: readOciDigest(value.targetImageDigest, `${pathArg}.targetImageDigest`),
1819
+ requestedAt,
1820
+ approvedAt,
1821
+ };
1822
+ };
1823
+ const normalizeUnsignedProductionExecutionAuthorizationInternal = (valueArg, pathArg) => {
1824
+ const value = readRecord(valueArg, pathArg);
1825
+ assertExactKeys(value, unsignedProductionExecutionAuthorizationKeys, pathArg);
1826
+ const payloadInput = Object.fromEntries(productionExecutionAuthorizationPayloadKeys.map((keyArg) => [keyArg, value[keyArg]]));
1827
+ const payload = normalizeProductionExecutionAuthorizationPayloadInternal(payloadInput, `${pathArg}.payload`);
1828
+ const payloadSha256 = readSha256(value.payloadSha256, `${pathArg}.payloadSha256`);
1829
+ if (payloadSha256 !== digestBytes(encodeNormalized(productionExecutionAuthorizationPayload(payload), `${pathArg}.payload`))) {
1830
+ fail('CROSS_FIELD_MISMATCH', `${pathArg}.payloadSha256`);
1831
+ }
1832
+ return { ...payload, payloadSha256 };
1833
+ };
1834
+ export const normalizeCloudlyLegacyDeploymentSettlementProductionExecutionAuthorization = (valueArg) => {
1835
+ const value = readRecord(valueArg, 'productionExecutionAuthorization');
1836
+ assertExactKeys(value, productionExecutionAuthorizationKeys, 'productionExecutionAuthorization');
1837
+ const unsignedInput = Object.fromEntries(unsignedProductionExecutionAuthorizationKeys.map((keyArg) => [keyArg, value[keyArg]]));
1838
+ return finalize({
1839
+ ...normalizeUnsignedProductionExecutionAuthorizationInternal(unsignedInput, 'productionExecutionAuthorization.unsigned'),
1840
+ mac: readMac(value.mac, 'productionExecutionAuthorization.mac'),
1841
+ }, cloudlyLegacyDeploymentSettlementLimits.maximumReceiptBytes, 'productionExecutionAuthorization');
1842
+ };
1843
+ export const digestCloudlyLegacyDeploymentSettlementProductionExecutionAuthorizationPayload = (valueArg) => digestBytes(encodeNormalized(productionExecutionAuthorizationPayload(normalizeProductionExecutionAuthorizationPayloadInternal(valueArg, 'productionExecutionAuthorizationPayload')), 'productionExecutionAuthorizationPayload'));
1844
+ export const encodeCloudlyLegacyDeploymentSettlementProductionExecutionAuthorization = (valueArg) => encodeNormalized(normalizeCloudlyLegacyDeploymentSettlementProductionExecutionAuthorization(valueArg), 'productionExecutionAuthorization');
1845
+ export const digestCloudlyLegacyDeploymentSettlementProductionExecutionAuthorization = (valueArg) => digestBytes(encodeCloudlyLegacyDeploymentSettlementProductionExecutionAuthorization(valueArg));
1846
+ export const encodeCloudlyLegacyDeploymentSettlementProductionExecutionAuthorizationHmacInput = (valueArg) => frame(cloudlyLegacyDeploymentSettlementDomains.productionExecutionAuthorizationHmac, encodeNormalized(finalize(normalizeUnsignedProductionExecutionAuthorizationInternal(valueArg, 'unsignedProductionExecutionAuthorization'), cloudlyLegacyDeploymentSettlementLimits.maximumReceiptBytes, 'unsignedProductionExecutionAuthorization'), 'productionExecutionAuthorization.authenticated'));
1847
+ export const normalizeCloudlyLegacyDeploymentSettlementRequestBundleForAuthority = async (bundleArg, authenticatedPlanArg, metadataArg, verifierArg) => {
1848
+ const metadata = normalizeCloudlyLegacyDeploymentSettlementAuthorityMetadata(metadataArg);
1849
+ const plan = await normalizeAuthenticatedCloudlyLegacyDeploymentSettlementPlanForAuthority(authenticatedPlanArg, metadata, verifierArg);
1850
+ const bundle = normalizeCloudlyLegacyDeploymentSettlementRequestBundle(bundleArg);
1851
+ await normalizeAuthenticatedCloudlyLegacyDeploymentSettlementRehearsalBindingForAuthority(bundle.authenticatedRehearsalBinding, metadata, verifierArg);
1852
+ await normalizeAuthenticatedCloudlyLegacyDeploymentSettlementProductionRequestForAuthority(bundle.authenticatedRequest, metadata, verifierArg);
1853
+ if (canonicalize(plan.payload, 'requestBundle.plan')
1854
+ !== canonicalize(bundle.authenticatedRequest.payload.plan, 'requestBundle.request.plan')
1855
+ || plan.payloadSha256 !== bundle.authenticatedRequest.payload.planSha256) {
1856
+ fail('CROSS_FIELD_MISMATCH', 'requestBundle.authenticatedRequest.plan');
1857
+ }
1858
+ return bundle;
1859
+ };
1860
+ const assertProductionAuthorizationMetadata = (authorizationArg, productionMetadataArg, sourceMetadataArg) => {
1861
+ assertAuthorityReferenceMatchesMetadata(authorizationArg.authority, productionMetadataArg, 'productionExecutionAuthorization.authority');
1862
+ assertAuthorityReferenceMatchesMetadata(authorizationArg.sourceAuthority, sourceMetadataArg, 'productionExecutionAuthorization.sourceAuthority');
1863
+ if (canonicalize(productionMetadataArg.sourceAuthority, 'productionMetadata.sourceAuthority')
1864
+ !== canonicalize(authorizationArg.sourceAuthority, 'authorization.sourceAuthority')
1865
+ || productionMetadataArg.sourceAuthenticatedPlanSha256
1866
+ !== authorizationArg.authenticatedPlanSha256
1867
+ || productionMetadataArg.sourceRequestBundleSha256 !== authorizationArg.requestBundleSha256
1868
+ || productionMetadataArg.scratchReceiptSha256 !== authorizationArg.scratchReceiptSha256
1869
+ || authorizationArg.operationId !== productionMetadataArg.operationId
1870
+ || authorizationArg.operationId !== sourceMetadataArg.operationId
1871
+ || authorizationArg.settlementId !== productionMetadataArg.settlementId
1872
+ || authorizationArg.settlementId !== sourceMetadataArg.settlementId
1873
+ || authorizationArg.runId !== productionMetadataArg.runId
1874
+ || authorizationArg.runId !== sourceMetadataArg.runId
1875
+ || authorizationArg.rehearsalId !== productionMetadataArg.rehearsalId
1876
+ || authorizationArg.rehearsalId !== sourceMetadataArg.rehearsalId
1877
+ || authorizationArg.scratchServiceId !== productionMetadataArg.scratchServiceId
1878
+ || authorizationArg.scratchServiceId !== sourceMetadataArg.scratchServiceId
1879
+ || authorizationArg.allocationId !== productionMetadataArg.allocationId
1880
+ || authorizationArg.allocationId !== sourceMetadataArg.allocationId
1881
+ || authorizationArg.allocationGeneration !== productionMetadataArg.allocationGeneration
1882
+ || authorizationArg.allocationGeneration !== sourceMetadataArg.allocationGeneration
1883
+ || authorizationArg.allocationBindingSha256 !== productionMetadataArg.allocationBindingSha256
1884
+ || authorizationArg.allocationBindingSha256 !== sourceMetadataArg.allocationBindingSha256
1885
+ || authorizationArg.allocationReceiptSha256 !== productionMetadataArg.allocationReceiptSha256
1886
+ || authorizationArg.allocationReceiptSha256 !== sourceMetadataArg.allocationReceiptSha256
1887
+ || authorizationArg.maintenanceImageDigest !== productionMetadataArg.maintenanceImageDigest
1888
+ || authorizationArg.sourceImageDigest !== productionMetadataArg.sourceImageDigest
1889
+ || authorizationArg.sourceImageDigest !== sourceMetadataArg.sourceImageDigest
1890
+ || authorizationArg.targetImageDigest !== productionMetadataArg.targetImageDigest
1891
+ || authorizationArg.targetImageDigest !== sourceMetadataArg.targetImageDigest) {
1892
+ fail('CROSS_FIELD_MISMATCH', 'productionExecutionAuthorization.authorityMetadata');
1893
+ }
1894
+ assertAuthorityTimestamp(authorizationArg.requestedAt, productionMetadataArg, 'productionExecutionAuthorization.requestedAt');
1895
+ assertAuthorityTimestamp(authorizationArg.approvedAt, productionMetadataArg, 'productionExecutionAuthorization.approvedAt');
1896
+ };
1897
+ const assertProductionAuthorizationArtifacts = (authorizationArg, productionMetadataArg, sourceMetadataArg, authenticatedPlanArg, requestBundleArg, scratchReceiptArg) => {
1898
+ if (authorizationArg.authenticatedPlanSha256
1899
+ !== digestAuthenticatedCloudlyLegacyDeploymentSettlementPlan(authenticatedPlanArg)
1900
+ || authorizationArg.requestBundleSha256
1901
+ !== digestCloudlyLegacyDeploymentSettlementRequestBundle(requestBundleArg)
1902
+ || authorizationArg.scratchReceiptSha256
1903
+ !== digestCloudlyLegacyDeploymentSettlementScratchReceipt(scratchReceiptArg)
1904
+ || productionMetadataArg.issuedAt <= scratchReceiptArg.completedAt
1905
+ || authorizationArg.requestedAt <= scratchReceiptArg.completedAt
1906
+ || authorizationArg.requestedAt < productionMetadataArg.issuedAt
1907
+ || authorizationArg.approvedAt < authorizationArg.requestedAt) {
1908
+ fail('CROSS_FIELD_MISMATCH', 'productionExecutionAuthorization.sourceProof');
1909
+ }
1910
+ assertProductionAuthorizationMetadata(authorizationArg, productionMetadataArg, sourceMetadataArg);
1911
+ };
1912
+ export const normalizeCloudlyLegacyDeploymentSettlementProductionExecutionAuthorizationForAuthorities = async (authorizationArg, productionMetadataArg, sourceMetadataArg, authenticatedPlanArg, requestBundleArg, scratchReceiptArg, verifierArg) => {
1913
+ const { productionMetadata, sourceMetadata, } = normalizeProductionAuthorityMetadataPair(productionMetadataArg, sourceMetadataArg);
1914
+ const plan = await normalizeAuthenticatedCloudlyLegacyDeploymentSettlementPlanForAuthority(authenticatedPlanArg, sourceMetadata, verifierArg);
1915
+ const requestBundle = await normalizeCloudlyLegacyDeploymentSettlementRequestBundleForAuthority(requestBundleArg, plan, sourceMetadata, verifierArg);
1916
+ const scratchReceipt = await normalizeCloudlyLegacyDeploymentSettlementScratchReceiptForAuthority(scratchReceiptArg, sourceMetadata, requestBundle.authenticatedRequest, verifierArg);
1917
+ const authorization = normalizeCloudlyLegacyDeploymentSettlementProductionExecutionAuthorization(authorizationArg);
1918
+ assertProductionAuthorizationArtifacts(authorization, productionMetadata, sourceMetadata, plan, requestBundle, scratchReceipt);
1919
+ await requireConsumerVerifiedHmac(authorization.authority, cloudlyLegacyDeploymentSettlementDomains.productionExecutionAuthorizationHmac, encodeCloudlyLegacyDeploymentSettlementProductionExecutionAuthorizationHmacInput(withoutArtifactMac(authorization)), authorization.mac, verifierArg, 'productionExecutionAuthorization.mac');
1920
+ return authorization;
1921
+ };
1922
+ const productionReceiptV2PayloadKeys = [
1923
+ 'schemaVersion',
1924
+ 'kind',
1925
+ 'authority',
1926
+ 'sourceAuthority',
1927
+ 'executionAttempt',
1928
+ 'productionAuthorization',
1929
+ 'productionAuthorizationSha256',
1930
+ 'requestSha256',
1931
+ 'requestBundleSha256',
1932
+ 'scratchReceipt',
1933
+ 'scratchReceiptSha256',
1934
+ 'stableOutcome',
1935
+ 'stableOutcomeSha256',
1936
+ 'transactionCommitted',
1937
+ 'disposition',
1938
+ 'completedAt',
1939
+ ];
1940
+ const unsignedProductionReceiptV2Keys = [...productionReceiptV2PayloadKeys, 'payloadSha256'];
1941
+ const productionReceiptV2Keys = [...unsignedProductionReceiptV2Keys, 'mac'];
1942
+ const productionReceiptV2Payload = (valueArg) => Object.fromEntries(productionReceiptV2PayloadKeys.map((keyArg) => [
1943
+ keyArg,
1944
+ valueArg[keyArg],
1945
+ ]));
1946
+ const normalizeProductionReceiptV2PayloadInternal = (valueArg, pathArg) => {
1947
+ const value = readRecord(valueArg, pathArg);
1948
+ assertExactKeys(value, productionReceiptV2PayloadKeys, pathArg);
1949
+ if (value.schemaVersion !== 2
1950
+ || value.kind !== 'cloudly-legacy-deployment-settlement-production-receipt'
1951
+ || value.transactionCommitted !== true) {
1952
+ fail('INVALID_VALUE', `${pathArg}.kind`);
1953
+ }
1954
+ const authority = normalizeAuthorityReferenceInternal(value.authority, `${pathArg}.authority`);
1955
+ const sourceAuthority = normalizeAuthorityReferenceInternal(value.sourceAuthority, `${pathArg}.sourceAuthority`);
1956
+ const executionAttempt = normalizeExecutionAttemptIdentityInternal(value.executionAttempt, `${pathArg}.executionAttempt`);
1957
+ const productionAuthorization = normalizeCloudlyLegacyDeploymentSettlementProductionExecutionAuthorization(value.productionAuthorization);
1958
+ const productionAuthorizationSha256 = readSha256(value.productionAuthorizationSha256, `${pathArg}.productionAuthorizationSha256`);
1959
+ const requestBundleSha256 = readSha256(value.requestBundleSha256, `${pathArg}.requestBundleSha256`);
1960
+ const scratchReceipt = normalizeScratchReceiptInternal(value.scratchReceipt, `${pathArg}.scratchReceipt`);
1961
+ const scratchReceiptSha256 = readSha256(value.scratchReceiptSha256, `${pathArg}.scratchReceiptSha256`);
1962
+ const stableOutcome = normalizeStableOutcomeInternal(value.stableOutcome, `${pathArg}.stableOutcome`);
1963
+ const stableOutcomeSha256 = readSha256(value.stableOutcomeSha256, `${pathArg}.stableOutcomeSha256`);
1964
+ const requestSha256 = readSha256(value.requestSha256, `${pathArg}.requestSha256`);
1965
+ const disposition = readLiteral(value.disposition, ['applied', 'exact-replay', 'no-op'], `${pathArg}.disposition`);
1966
+ const dispositionMatchesScratch = disposition === scratchReceipt.disposition
1967
+ || (scratchReceipt.disposition === 'applied' && disposition === 'exact-replay');
1968
+ if (canonicalize(authority, `${pathArg}.authority`)
1969
+ !== canonicalize(productionAuthorization.authority, `${pathArg}.authorization.authority`)
1970
+ || canonicalize(sourceAuthority, `${pathArg}.sourceAuthority`)
1971
+ !== canonicalize(productionAuthorization.sourceAuthority, `${pathArg}.authorization.sourceAuthority`)
1972
+ || canonicalize(executionAttempt, `${pathArg}.executionAttempt`)
1973
+ !== canonicalize(productionAuthorization.executionAttempt, `${pathArg}.authorization.attempt`)
1974
+ || productionAuthorizationSha256
1975
+ !== digestCloudlyLegacyDeploymentSettlementProductionExecutionAuthorization(productionAuthorization)
1976
+ || requestBundleSha256 !== productionAuthorization.requestBundleSha256
1977
+ || scratchReceiptSha256 !== productionAuthorization.scratchReceiptSha256
1978
+ || scratchReceiptSha256
1979
+ !== digestCloudlyLegacyDeploymentSettlementScratchReceipt(scratchReceipt)
1980
+ || canonicalize(sourceAuthority, `${pathArg}.sourceAuthority`)
1981
+ !== canonicalize(scratchReceipt.authority, `${pathArg}.scratchReceipt.authority`)
1982
+ || requestSha256 !== scratchReceipt.requestSha256
1983
+ || !dispositionMatchesScratch
1984
+ || canonicalize(stableOutcome, `${pathArg}.stableOutcome`)
1985
+ !== canonicalize(scratchReceipt.stableOutcome, `${pathArg}.scratchReceipt.stableOutcome`)
1986
+ || stableOutcomeSha256 !== scratchReceipt.stableOutcomeSha256
1987
+ || stableOutcomeSha256
1988
+ !== digestCloudlyLegacyDeploymentSettlementStableOutcome(stableOutcome)) {
1989
+ fail('CROSS_FIELD_MISMATCH', `${pathArg}.productionAuthorization`);
1990
+ }
1991
+ return {
1992
+ schemaVersion: 2,
1993
+ kind: 'cloudly-legacy-deployment-settlement-production-receipt',
1994
+ authority,
1995
+ sourceAuthority,
1996
+ executionAttempt: executionAttempt,
1997
+ productionAuthorization,
1998
+ productionAuthorizationSha256,
1999
+ requestSha256,
2000
+ requestBundleSha256,
2001
+ scratchReceipt,
2002
+ scratchReceiptSha256,
2003
+ stableOutcome,
2004
+ stableOutcomeSha256,
2005
+ transactionCommitted: true,
2006
+ disposition,
2007
+ completedAt: readInteger(value.completedAt, `${pathArg}.completedAt`, productionAuthorization.approvedAt),
2008
+ };
2009
+ };
2010
+ const normalizeUnsignedProductionReceiptV2Internal = (valueArg, pathArg) => {
2011
+ const value = readRecord(valueArg, pathArg);
2012
+ assertExactKeys(value, unsignedProductionReceiptV2Keys, pathArg);
2013
+ const payloadInput = Object.fromEntries(productionReceiptV2PayloadKeys.map((keyArg) => [keyArg, value[keyArg]]));
2014
+ const payload = normalizeProductionReceiptV2PayloadInternal(payloadInput, `${pathArg}.payload`);
2015
+ const payloadSha256 = readSha256(value.payloadSha256, `${pathArg}.payloadSha256`);
2016
+ if (payloadSha256 !== digestBytes(encodeNormalized(productionReceiptV2Payload(payload), `${pathArg}.payload`))) {
2017
+ fail('CROSS_FIELD_MISMATCH', `${pathArg}.payloadSha256`);
2018
+ }
2019
+ return { ...payload, payloadSha256 };
2020
+ };
2021
+ export const digestCloudlyLegacyDeploymentSettlementProductionReceiptPayloadV2 = (valueArg) => digestBytes(encodeNormalized(productionReceiptV2Payload(normalizeProductionReceiptV2PayloadInternal(valueArg, 'productionReceiptPayloadV2')), 'productionReceiptPayloadV2'));
2022
+ export const normalizeCloudlyLegacyDeploymentSettlementProductionReceiptV2 = (valueArg) => {
2023
+ const value = readRecord(valueArg, 'productionReceiptV2');
2024
+ assertExactKeys(value, productionReceiptV2Keys, 'productionReceiptV2');
2025
+ const unsignedInput = Object.fromEntries(unsignedProductionReceiptV2Keys.map((keyArg) => [keyArg, value[keyArg]]));
2026
+ return finalize({
2027
+ ...normalizeUnsignedProductionReceiptV2Internal(unsignedInput, 'productionReceiptV2.unsigned'),
2028
+ mac: readMac(value.mac, 'productionReceiptV2.mac'),
2029
+ }, cloudlyLegacyDeploymentSettlementLimits.maximumReceiptBytes * 3, 'productionReceiptV2');
2030
+ };
2031
+ export const normalizeCloudlyLegacyDeploymentSettlementProductionReceiptAnyVersion = (valueArg) => {
2032
+ const value = readRecord(valueArg, 'productionReceipt');
2033
+ return value.schemaVersion === 2
2034
+ ? normalizeCloudlyLegacyDeploymentSettlementProductionReceiptV2(value)
2035
+ : normalizeCloudlyLegacyDeploymentSettlementProductionReceipt(value);
2036
+ };
2037
+ export const encodeCloudlyLegacyDeploymentSettlementProductionReceiptV2 = (valueArg) => encodeNormalized(normalizeCloudlyLegacyDeploymentSettlementProductionReceiptV2(valueArg), 'productionReceiptV2');
2038
+ export const digestCloudlyLegacyDeploymentSettlementProductionReceiptV2 = (valueArg) => digestBytes(encodeCloudlyLegacyDeploymentSettlementProductionReceiptV2(valueArg));
2039
+ export const encodeCloudlyLegacyDeploymentSettlementProductionReceiptV2HmacInput = (valueArg) => frame(cloudlyLegacyDeploymentSettlementDomains.productionReceiptV2Hmac, encodeNormalized(finalize(normalizeUnsignedProductionReceiptV2Internal(valueArg, 'unsignedProductionReceiptV2'), cloudlyLegacyDeploymentSettlementLimits.maximumReceiptBytes * 3, 'unsignedProductionReceiptV2'), 'productionReceiptV2.authenticated'));
2040
+ export const normalizeCloudlyLegacyDeploymentSettlementProductionReceiptV2ForAuthorities = async (receiptArg, productionMetadataArg, sourceMetadataArg, authenticatedPlanArg, requestBundleArg, verifierArg) => {
2041
+ const { productionMetadata, sourceMetadata, } = normalizeProductionAuthorityMetadataPair(productionMetadataArg, sourceMetadataArg);
2042
+ const receipt = normalizeCloudlyLegacyDeploymentSettlementProductionReceiptV2(receiptArg);
2043
+ const requestBundle = normalizeCloudlyLegacyDeploymentSettlementRequestBundle(requestBundleArg);
2044
+ await normalizeCloudlyLegacyDeploymentSettlementProductionExecutionAuthorizationForAuthorities(receipt.productionAuthorization, productionMetadata, sourceMetadata, authenticatedPlanArg, requestBundle, receipt.scratchReceipt, verifierArg);
2045
+ await normalizeCloudlyLegacyDeploymentSettlementScratchReceiptForAuthority(receipt.scratchReceipt, sourceMetadata, requestBundle.authenticatedRequest, verifierArg);
2046
+ assertAuthorityReferenceMatchesMetadata(receipt.authority, productionMetadata, 'productionReceiptV2.authority');
2047
+ assertAuthorityTimestamp(receipt.completedAt, productionMetadata, 'productionReceiptV2.completedAt');
2048
+ await requireConsumerVerifiedHmac(receipt.authority, cloudlyLegacyDeploymentSettlementDomains.productionReceiptV2Hmac, encodeCloudlyLegacyDeploymentSettlementProductionReceiptV2HmacInput(withoutArtifactMac(receipt)), receipt.mac, verifierArg, 'productionReceiptV2.mac');
2049
+ return receipt;
2050
+ };
2051
+ const normalizeCommittedResolutionReceipt = (valueArg, pathArg) => {
2052
+ const value = readRecord(valueArg, pathArg);
2053
+ if (value.kind === 'cloudly-legacy-deployment-settlement-scratch-receipt') {
2054
+ return normalizeCloudlyLegacyDeploymentSettlementScratchReceipt(value);
2055
+ }
2056
+ if (value.kind !== 'cloudly-legacy-deployment-settlement-production-receipt') {
2057
+ fail('INVALID_VALUE', `${pathArg}.kind`);
2058
+ }
2059
+ if (value.schemaVersion !== 2) {
2060
+ fail('INVALID_VALUE', `${pathArg}.schemaVersion`);
2061
+ }
2062
+ return normalizeCloudlyLegacyDeploymentSettlementProductionReceiptV2(value);
2063
+ };
2064
+ /** Structural only; this function does not authenticate receipt MACs. */
2065
+ export const normalizeCloudlyLegacyDeploymentSettlementResolutionBundle = (valueArg) => {
2066
+ const value = readRecord(valueArg, 'resolutionBundle');
2067
+ const outcome = readLiteral(value.outcome, ['committed', 'unapplied'], 'resolutionBundle.outcome');
2068
+ const mode = readLiteral(value.mode, [
2069
+ 'committed-schema1',
2070
+ 'committed-schema2',
2071
+ 'aborted-prepared',
2072
+ 'observed-aborted',
2073
+ 'absent-tombstone',
2074
+ 'legacy-no-op',
2075
+ ], 'resolutionBundle.mode');
2076
+ const committed = outcome === 'committed';
2077
+ assertExactKeys(value, [
2078
+ 'schemaVersion',
2079
+ 'kind',
2080
+ 'executionAttempt',
2081
+ 'observedAt',
2082
+ 'sourceAuthorityStatus',
2083
+ 'executionAuthorityStatus',
2084
+ 'outcome',
2085
+ 'mode',
2086
+ 'attemptObservation',
2087
+ ...(committed ? ['originalReceipt', 'originalReceiptSha256'] : []),
2088
+ ], 'resolutionBundle');
2089
+ if (value.schemaVersion !== 1
2090
+ || value.kind !== 'cloudly-legacy-deployment-settlement-resolution-bundle') {
2091
+ fail('INVALID_VALUE', 'resolutionBundle.kind');
2092
+ }
2093
+ const executionAttempt = normalizeExecutionAttemptIdentityInternal(value.executionAttempt, 'resolutionBundle.executionAttempt');
2094
+ const observedAt = readInteger(value.observedAt, 'resolutionBundle.observedAt', 1);
2095
+ const sourceAuthorityStatus = readLiteral(value.sourceAuthorityStatus, ['active', 'expired'], 'resolutionBundle.sourceAuthorityStatus');
2096
+ const executionAuthorityStatus = readLiteral(value.executionAuthorityStatus, ['active', 'expired'], 'resolutionBundle.executionAuthorityStatus');
2097
+ if (canonicalize(executionAttempt.sourceAuthority, 'resolutionBundle.sourceAuthority')
2098
+ === canonicalize(executionAttempt.executionAuthority, 'resolutionBundle.executionAuthority')
2099
+ && sourceAuthorityStatus !== executionAuthorityStatus) {
2100
+ fail('CROSS_FIELD_MISMATCH', 'resolutionBundle.executionAuthorityStatus');
2101
+ }
2102
+ if (committed) {
2103
+ if (mode !== 'committed-schema1' && mode !== 'committed-schema2') {
2104
+ fail('CROSS_FIELD_MISMATCH', 'resolutionBundle.mode');
2105
+ }
2106
+ const attemptObservation = normalizeExecutionAttemptObservationInternal(value.attemptObservation, 'resolutionBundle.attemptObservation');
2107
+ if (attemptObservation.state !== 'committed') {
2108
+ fail('CROSS_FIELD_MISMATCH', 'resolutionBundle.attemptObservation');
2109
+ }
2110
+ const committedObservation = attemptObservation;
2111
+ if (canonicalize(committedObservation.identity, 'resolutionBundle.observation.identity')
2112
+ !== canonicalize(executionAttempt, 'resolutionBundle.executionAttempt')) {
2113
+ fail('CROSS_FIELD_MISMATCH', 'resolutionBundle.attemptObservation');
2114
+ }
2115
+ const originalReceipt = normalizeCommittedResolutionReceipt(value.originalReceipt, 'resolutionBundle.originalReceipt');
2116
+ const receiptSchemaVersion = originalReceipt.schemaVersion;
2117
+ const originalReceiptSha256 = readSha256(value.originalReceiptSha256, 'resolutionBundle.originalReceiptSha256');
2118
+ const expectedReceiptSha256 = originalReceipt.kind
2119
+ === 'cloudly-legacy-deployment-settlement-scratch-receipt'
2120
+ ? digestCloudlyLegacyDeploymentSettlementScratchReceipt(originalReceipt)
2121
+ : originalReceipt.schemaVersion === 2
2122
+ ? digestCloudlyLegacyDeploymentSettlementProductionReceiptV2(originalReceipt)
2123
+ : digestCloudlyLegacyDeploymentSettlementProductionReceipt(originalReceipt);
2124
+ const receiptExecutionAuthority = originalReceipt.authority;
2125
+ const receiptSourceAuthority = originalReceipt.schemaVersion === 2
2126
+ ? originalReceipt.sourceAuthority
2127
+ : originalReceipt.authority;
2128
+ if ((mode === 'committed-schema1') !== (receiptSchemaVersion === 1)
2129
+ || committedObservation.receiptSchemaVersion !== receiptSchemaVersion
2130
+ || committedObservation.receiptSha256 !== originalReceiptSha256
2131
+ || originalReceiptSha256 !== expectedReceiptSha256
2132
+ || committedObservation.resolvedAt !== originalReceipt.completedAt
2133
+ || observedAt < committedObservation.resolvedAt
2134
+ || canonicalize(receiptExecutionAuthority, 'resolutionBundle.receipt.executionAuthority')
2135
+ !== canonicalize(executionAttempt.executionAuthority, 'resolutionBundle.executionAuthority')
2136
+ || canonicalize(receiptSourceAuthority, 'resolutionBundle.receipt.sourceAuthority')
2137
+ !== canonicalize(executionAttempt.sourceAuthority, 'resolutionBundle.sourceAuthority')
2138
+ || (originalReceipt.schemaVersion === 2
2139
+ && canonicalize(originalReceipt.executionAttempt, 'resolutionBundle.receipt.executionAttempt')
2140
+ !== canonicalize(executionAttempt, 'resolutionBundle.executionAttempt'))
2141
+ || (executionAttempt.purpose === 'scratch-rehearsal')
2142
+ !== (originalReceipt.kind
2143
+ === 'cloudly-legacy-deployment-settlement-scratch-receipt')) {
2144
+ fail('CROSS_FIELD_MISMATCH', 'resolutionBundle.originalReceipt');
2145
+ }
2146
+ let result;
2147
+ if (mode === 'committed-schema1'
2148
+ && originalReceipt.kind === 'cloudly-legacy-deployment-settlement-scratch-receipt') {
2149
+ const scratchAttempt = executionAttempt;
2150
+ result = {
2151
+ schemaVersion: 1,
2152
+ kind: 'cloudly-legacy-deployment-settlement-resolution-bundle',
2153
+ executionAttempt: scratchAttempt,
2154
+ observedAt,
2155
+ sourceAuthorityStatus,
2156
+ executionAuthorityStatus,
2157
+ outcome,
2158
+ mode,
2159
+ attemptObservation: {
2160
+ ...committedObservation,
2161
+ identity: scratchAttempt,
2162
+ receiptSchemaVersion: 1,
2163
+ },
2164
+ originalReceipt,
2165
+ originalReceiptSha256,
2166
+ };
2167
+ }
2168
+ else {
2169
+ const productionAttempt = executionAttempt;
2170
+ result = {
2171
+ schemaVersion: 1,
2172
+ kind: 'cloudly-legacy-deployment-settlement-resolution-bundle',
2173
+ executionAttempt: productionAttempt,
2174
+ observedAt,
2175
+ sourceAuthorityStatus,
2176
+ executionAuthorityStatus,
2177
+ outcome,
2178
+ mode: 'committed-schema2',
2179
+ attemptObservation: {
2180
+ ...committedObservation,
2181
+ identity: productionAttempt,
2182
+ receiptSchemaVersion: 2,
2183
+ },
2184
+ originalReceipt: originalReceipt,
2185
+ originalReceiptSha256,
2186
+ };
2187
+ }
2188
+ return finalize(result, cloudlyLegacyDeploymentSettlementLimits.maximumReceiptBytes * 4, 'resolutionBundle');
2189
+ }
2190
+ if (mode === 'committed-schema1' || mode === 'committed-schema2') {
2191
+ fail('CROSS_FIELD_MISMATCH', 'resolutionBundle.mode');
2192
+ }
2193
+ if (mode === 'aborted-prepared'
2194
+ || mode === 'observed-aborted'
2195
+ || mode === 'absent-tombstone') {
2196
+ const attemptObservation = normalizeExecutionAttemptObservationInternal(value.attemptObservation, 'resolutionBundle.attemptObservation');
2197
+ if (attemptObservation.state !== 'aborted') {
2198
+ fail('CROSS_FIELD_MISMATCH', 'resolutionBundle.attemptObservation');
2199
+ }
2200
+ const abortedObservation = attemptObservation;
2201
+ if (canonicalize(abortedObservation.identity, 'resolutionBundle.observation.identity')
2202
+ !== canonicalize(executionAttempt, 'resolutionBundle.executionAttempt')
2203
+ || observedAt < abortedObservation.resolvedAt) {
2204
+ fail('CROSS_FIELD_MISMATCH', 'resolutionBundle.attemptObservation');
2205
+ }
2206
+ if (mode === 'absent-tombstone') {
2207
+ const result = {
2208
+ schemaVersion: 1,
2209
+ kind: 'cloudly-legacy-deployment-settlement-resolution-bundle',
2210
+ executionAttempt,
2211
+ observedAt,
2212
+ sourceAuthorityStatus,
2213
+ executionAuthorityStatus,
2214
+ outcome,
2215
+ mode,
2216
+ attemptObservation: abortedObservation,
2217
+ };
2218
+ return finalize(result, cloudlyLegacyDeploymentSettlementLimits.maximumReceiptBytes, 'resolutionBundle');
2219
+ }
2220
+ const result = mode === 'aborted-prepared'
2221
+ ? {
2222
+ schemaVersion: 1,
2223
+ kind: 'cloudly-legacy-deployment-settlement-resolution-bundle',
2224
+ executionAttempt,
2225
+ observedAt,
2226
+ sourceAuthorityStatus,
2227
+ executionAuthorityStatus,
2228
+ outcome,
2229
+ mode,
2230
+ attemptObservation: abortedObservation,
2231
+ }
2232
+ : {
2233
+ schemaVersion: 1,
2234
+ kind: 'cloudly-legacy-deployment-settlement-resolution-bundle',
2235
+ executionAttempt,
2236
+ observedAt,
2237
+ sourceAuthorityStatus,
2238
+ executionAuthorityStatus,
2239
+ outcome,
2240
+ mode,
2241
+ attemptObservation: abortedObservation,
2242
+ };
2243
+ return finalize(result, cloudlyLegacyDeploymentSettlementLimits.maximumReceiptBytes, 'resolutionBundle');
2244
+ }
2245
+ if (value.attemptObservation !== null) {
2246
+ fail('CROSS_FIELD_MISMATCH', 'resolutionBundle.attemptObservation');
2247
+ }
2248
+ if (executionAttempt.purpose !== 'scratch-rehearsal') {
2249
+ fail('CROSS_FIELD_MISMATCH', 'resolutionBundle.executionAttempt');
2250
+ }
2251
+ const scratchExecutionAttempt = executionAttempt;
2252
+ const result = {
2253
+ schemaVersion: 1,
2254
+ kind: 'cloudly-legacy-deployment-settlement-resolution-bundle',
2255
+ executionAttempt: scratchExecutionAttempt,
2256
+ observedAt,
2257
+ sourceAuthorityStatus,
2258
+ executionAuthorityStatus,
2259
+ outcome,
2260
+ mode: 'legacy-no-op',
2261
+ attemptObservation: null,
2262
+ };
2263
+ return finalize(result, cloudlyLegacyDeploymentSettlementLimits.maximumReceiptBytes, 'resolutionBundle');
2264
+ };
2265
+ export const encodeCloudlyLegacyDeploymentSettlementResolutionBundle = (valueArg) => encodeNormalized(normalizeCloudlyLegacyDeploymentSettlementResolutionBundle(valueArg), 'resolutionBundle');
2266
+ export const digestCloudlyLegacyDeploymentSettlementResolutionBundle = (valueArg) => digestBytes(encodeCloudlyLegacyDeploymentSettlementResolutionBundle(valueArg));
2267
+ const unsignedAuthenticatedResolutionKeys = [
2268
+ 'schemaVersion',
2269
+ 'kind',
2270
+ 'authority',
2271
+ 'payload',
2272
+ 'payloadSha256',
2273
+ ];
2274
+ const authenticatedResolutionKeys = [...unsignedAuthenticatedResolutionKeys, 'mac'];
2275
+ const normalizeUnsignedAuthenticatedResolutionInternal = (valueArg, pathArg) => {
2276
+ const value = readRecord(valueArg, pathArg);
2277
+ assertExactKeys(value, unsignedAuthenticatedResolutionKeys, pathArg);
2278
+ if (value.schemaVersion !== 1
2279
+ || value.kind !== 'authenticated-cloudly-legacy-deployment-settlement-resolution') {
2280
+ fail('INVALID_VALUE', `${pathArg}.kind`);
2281
+ }
2282
+ const authority = normalizeAuthorityReferenceInternal(value.authority, `${pathArg}.authority`);
2283
+ const payload = normalizeCloudlyLegacyDeploymentSettlementResolutionBundle(value.payload);
2284
+ const payloadSha256 = readSha256(value.payloadSha256, `${pathArg}.payloadSha256`);
2285
+ if (canonicalize(authority, `${pathArg}.authority`)
2286
+ !== canonicalize(payload.executionAttempt.executionAuthority, `${pathArg}.payload.authority`)
2287
+ || payloadSha256 !== digestCloudlyLegacyDeploymentSettlementResolutionBundle(payload)) {
2288
+ fail('CROSS_FIELD_MISMATCH', `${pathArg}.payload`);
2289
+ }
2290
+ return {
2291
+ schemaVersion: 1,
2292
+ kind: 'authenticated-cloudly-legacy-deployment-settlement-resolution',
2293
+ authority,
2294
+ payload,
2295
+ payloadSha256,
2296
+ };
2297
+ };
2298
+ /** Structural only; this function does not authenticate the recovery-attestation MAC. */
2299
+ export const normalizeCloudlyLegacyDeploymentSettlementAuthenticatedResolutionStructure = (valueArg) => {
2300
+ const value = readRecord(valueArg, 'authenticatedResolution');
2301
+ assertExactKeys(value, authenticatedResolutionKeys, 'authenticatedResolution');
2302
+ return finalize({
2303
+ ...normalizeUnsignedAuthenticatedResolutionInternal(Object.fromEntries(unsignedAuthenticatedResolutionKeys.map((keyArg) => [
2304
+ keyArg,
2305
+ value[keyArg],
2306
+ ])), 'authenticatedResolution.unsigned'),
2307
+ mac: readMac(value.mac, 'authenticatedResolution.mac'),
2308
+ }, cloudlyLegacyDeploymentSettlementLimits.maximumReceiptBytes * 5, 'authenticatedResolution');
2309
+ };
2310
+ export const encodeAuthenticatedCloudlyLegacyDeploymentSettlementResolution = (valueArg) => encodeNormalized(normalizeCloudlyLegacyDeploymentSettlementAuthenticatedResolutionStructure(valueArg), 'authenticatedResolution');
2311
+ export const digestAuthenticatedCloudlyLegacyDeploymentSettlementResolution = (valueArg) => digestBytes(encodeAuthenticatedCloudlyLegacyDeploymentSettlementResolution(valueArg));
2312
+ export const encodeCloudlyLegacyDeploymentSettlementResolutionHmacInput = (valueArg) => frame(cloudlyLegacyDeploymentSettlementDomains.resolutionHmac, encodeNormalized(finalize(normalizeUnsignedAuthenticatedResolutionInternal(valueArg, 'unsignedAuthenticatedResolution'), cloudlyLegacyDeploymentSettlementLimits.maximumReceiptBytes * 5, 'unsignedAuthenticatedResolution'), 'authenticatedResolution.authenticated'));
2313
+ const normalizeExecutionAttemptAuthorityMetadata = (attemptArg, sourceMetadataArg, executionMetadataArg) => {
2314
+ const sourceMetadata = normalizeFencedSourceAuthorityMetadata(sourceMetadataArg, 'executionAttempt.sourceAuthorityMetadata');
2315
+ const executionMetadata = normalizeCloudlyLegacyDeploymentSettlementAuthorityMetadata(executionMetadataArg);
2316
+ assertAuthorityReferenceMatchesMetadata(attemptArg.sourceAuthority, sourceMetadata, 'executionAttempt.sourceAuthority');
2317
+ assertAuthorityReferenceMatchesMetadata(attemptArg.executionAuthority, executionMetadata, 'executionAttempt.executionAuthority');
2318
+ const splitProductionAuthority = canonicalize(attemptArg.sourceAuthority, 'executionAttempt.sourceAuthority') !== canonicalize(attemptArg.executionAuthority, 'executionAttempt.executionAuthority');
2319
+ if (attemptArg.purpose === 'scratch-rehearsal') {
2320
+ if (splitProductionAuthority) {
2321
+ fail('CROSS_FIELD_MISMATCH', 'executionAttempt.executionAuthority');
2322
+ }
2323
+ normalizeFencedSourceAuthorityMetadata(executionMetadata, 'executionAttempt.executionAuthorityMetadata');
2324
+ }
2325
+ else {
2326
+ if (!splitProductionAuthority) {
2327
+ fail('CROSS_FIELD_MISMATCH', 'executionAttempt.executionAuthority');
2328
+ }
2329
+ const productionMetadata = normalizeProductionAuthorityMetadataPair(executionMetadata, sourceMetadata).productionMetadata;
2330
+ if (productionMetadata.sourceAuthenticatedPlanSha256
2331
+ !== attemptArg.authenticatedPlanSha256
2332
+ || productionMetadata.sourceRequestBundleSha256 !== attemptArg.requestBundleSha256
2333
+ || productionMetadata.scratchReceiptSha256 !== attemptArg.scratchReceiptSha256) {
2334
+ fail('CROSS_FIELD_MISMATCH', 'executionAttempt.productionAuthorityMetadata');
2335
+ }
2336
+ }
2337
+ return { sourceMetadata, executionMetadata, splitProductionAuthority };
2338
+ };
2339
+ const authorityStatusAt = (observedAtArg, metadataArg, pathArg) => {
2340
+ if (observedAtArg < metadataArg.issuedAt) {
2341
+ fail('CROSS_FIELD_MISMATCH', pathArg);
2342
+ }
2343
+ return observedAtArg < metadataArg.expiresAt ? 'active' : 'expired';
2344
+ };
2345
+ const normalizeExecutionAttemptProofArtifacts = async (argsArg) => {
2346
+ const metadata = normalizeExecutionAttemptAuthorityMetadata(argsArg.executionAttempt, argsArg.sourceMetadata, argsArg.executionMetadata);
2347
+ const authenticatedPlan = await normalizeAuthenticatedCloudlyLegacyDeploymentSettlementPlanForAuthority(argsArg.authenticatedPlan, metadata.sourceMetadata, argsArg.verifier);
2348
+ const requestBundle = await normalizeCloudlyLegacyDeploymentSettlementRequestBundleForAuthority(argsArg.requestBundle, authenticatedPlan, metadata.sourceMetadata, argsArg.verifier);
2349
+ let scratchReceipt = null;
2350
+ let productionAuthorization = null;
2351
+ if (argsArg.executionAttempt.purpose === 'production') {
2352
+ if (argsArg.scratchReceipt === null) {
2353
+ fail('INVALID_SCHEMA', 'executionAttempt.scratchReceipt');
2354
+ }
2355
+ scratchReceipt = await normalizeCloudlyLegacyDeploymentSettlementScratchReceiptForAuthority(argsArg.scratchReceipt, metadata.sourceMetadata, requestBundle.authenticatedRequest, argsArg.verifier);
2356
+ if (metadata.splitProductionAuthority) {
2357
+ if (argsArg.productionAuthorization === null) {
2358
+ if (argsArg.requireProductionAuthorization) {
2359
+ fail('INVALID_SCHEMA', 'executionAttempt.productionAuthorization');
2360
+ }
2361
+ }
2362
+ else {
2363
+ productionAuthorization =
2364
+ await normalizeCloudlyLegacyDeploymentSettlementProductionExecutionAuthorizationForAuthorities(argsArg.productionAuthorization, metadata.executionMetadata, metadata.sourceMetadata, authenticatedPlan, requestBundle, scratchReceipt, argsArg.verifier);
2365
+ }
2366
+ }
2367
+ else if (argsArg.productionAuthorization !== null) {
2368
+ fail('INVALID_SCHEMA', 'executionAttempt.productionAuthorization');
2369
+ }
2370
+ }
2371
+ else if (argsArg.scratchReceipt !== null || argsArg.productionAuthorization !== null) {
2372
+ fail('INVALID_SCHEMA', 'executionAttempt.sourceProof');
2373
+ }
2374
+ const expectedScratchReceiptSha256 = scratchReceipt
2375
+ ? digestCloudlyLegacyDeploymentSettlementScratchReceipt(scratchReceipt)
2376
+ : null;
2377
+ if (argsArg.executionAttempt.authenticatedPlanSha256
2378
+ !== digestAuthenticatedCloudlyLegacyDeploymentSettlementPlan(authenticatedPlan)
2379
+ || argsArg.executionAttempt.requestBundleSha256
2380
+ !== digestCloudlyLegacyDeploymentSettlementRequestBundle(requestBundle)
2381
+ || argsArg.executionAttempt.scratchReceiptSha256 !== expectedScratchReceiptSha256) {
2382
+ fail('CROSS_FIELD_MISMATCH', 'executionAttempt.sourceProof');
2383
+ }
2384
+ return {
2385
+ ...metadata,
2386
+ authenticatedPlan,
2387
+ requestBundle,
2388
+ scratchReceipt,
2389
+ productionAuthorization,
2390
+ };
2391
+ };
2392
+ const normalizeAuthenticatedApplyResultForExecutionAuthority = async (resultArg, executionMetadataArg, requestArg, productionAuthorizationArg, verifierArg) => {
2393
+ const executionMetadata = normalizeCloudlyLegacyDeploymentSettlementAuthorityMetadata(executionMetadataArg);
2394
+ const request = normalizeCloudlyLegacyDeploymentSettlementAuthenticatedProductionRequestStructure(requestArg);
2395
+ const result = normalizeCloudlyLegacyDeploymentSettlementAuthenticatedApplyResultStructure(resultArg);
2396
+ assertAuthorityReferenceMatchesMetadata(result.authority, executionMetadata, 'applyResult.authority');
2397
+ assertSummaryMatchesProductionRequest(result.payload, request.payload, 'applyResult.payload');
2398
+ const resultAt = result.payload.status === 'completed'
2399
+ ? result.payload.completedAt
2400
+ : result.payload.rejectedAt;
2401
+ const resultAtPath = result.payload.status === 'completed'
2402
+ ? 'applyResult.payload.completedAt'
2403
+ : 'applyResult.payload.rejectedAt';
2404
+ if (canonicalize(result.authority, 'applyResult.authority')
2405
+ !== canonicalize(productionAuthorizationArg.authority, 'productionAuthorization.authority')
2406
+ || resultAt < request.payload.requestedAt
2407
+ || resultAt < productionAuthorizationArg.approvedAt) {
2408
+ fail('CROSS_FIELD_MISMATCH', resultAtPath);
2409
+ }
2410
+ assertAuthorityTimestamp(resultAt, executionMetadata, resultAtPath);
2411
+ await requireConsumerVerifiedHmac(result.authority, cloudlyLegacyDeploymentSettlementDomains.applyResultHmac, encodeCloudlyLegacyDeploymentSettlementApplyResultHmacInput(withoutArtifactMac(result)), result.mac, verifierArg, 'applyResult.mac');
2412
+ return result;
2413
+ };
2414
+ const normalizeAuthenticatedCheckResultForExecutionAuthority = async (resultArg, executionMetadataArg, requestArg, productionAuthorizationArg, verifierArg) => {
2415
+ const executionMetadata = normalizeCloudlyLegacyDeploymentSettlementAuthorityMetadata(executionMetadataArg);
2416
+ const request = normalizeCloudlyLegacyDeploymentSettlementAuthenticatedProductionRequestStructure(requestArg);
2417
+ const result = normalizeCloudlyLegacyDeploymentSettlementAuthenticatedCheckResultStructure(resultArg);
2418
+ assertAuthorityReferenceMatchesMetadata(result.authority, executionMetadata, 'checkResult.authority');
2419
+ assertSummaryMatchesProductionRequest(result.payload, request.payload, 'checkResult.payload');
2420
+ if (canonicalize(result.authority, 'checkResult.authority')
2421
+ !== canonicalize(productionAuthorizationArg.authority, 'productionAuthorization.authority')
2422
+ || result.payload.checkedAt < request.payload.requestedAt
2423
+ || result.payload.checkedAt < productionAuthorizationArg.approvedAt) {
2424
+ fail('CROSS_FIELD_MISMATCH', 'checkResult.payload.checkedAt');
2425
+ }
2426
+ assertAuthorityTimestamp(result.payload.checkedAt, executionMetadata, 'checkResult.checkedAt');
2427
+ await requireConsumerVerifiedHmac(result.authority, cloudlyLegacyDeploymentSettlementDomains.checkResultHmac, encodeCloudlyLegacyDeploymentSettlementCheckResultHmacInput(withoutArtifactMac(result)), result.mac, verifierArg, 'checkResult.mac');
2428
+ return result;
2429
+ };
2430
+ /** Artifact/status binding only; trust the authenticated recovery attestation instead. */
2431
+ export const normalizeCloudlyLegacyDeploymentSettlementResolutionBundleForAuthorities = async (bundleArg, sourceMetadataArg, executionMetadataArg, authenticatedPlanArg, requestBundleArg, scratchReceiptArg, productionAuthorizationArg, verifierArg) => {
2432
+ const bundle = normalizeCloudlyLegacyDeploymentSettlementResolutionBundle(bundleArg);
2433
+ const artifacts = await normalizeExecutionAttemptProofArtifacts({
2434
+ executionAttempt: bundle.executionAttempt,
2435
+ sourceMetadata: sourceMetadataArg,
2436
+ executionMetadata: executionMetadataArg,
2437
+ authenticatedPlan: authenticatedPlanArg,
2438
+ requestBundle: requestBundleArg,
2439
+ scratchReceipt: scratchReceiptArg,
2440
+ productionAuthorization: productionAuthorizationArg,
2441
+ requireProductionAuthorization: true,
2442
+ verifier: verifierArg,
2443
+ });
2444
+ if (bundle.sourceAuthorityStatus !== authorityStatusAt(bundle.observedAt, artifacts.sourceMetadata, 'resolutionBundle.sourceAuthorityStatus')) {
2445
+ fail('CROSS_FIELD_MISMATCH', 'resolutionBundle.sourceAuthorityStatus');
2446
+ }
2447
+ if (bundle.executionAuthorityStatus !== authorityStatusAt(bundle.observedAt, artifacts.executionMetadata, 'resolutionBundle.executionAuthorityStatus')) {
2448
+ fail('CROSS_FIELD_MISMATCH', 'resolutionBundle.executionAuthorityStatus');
2449
+ }
2450
+ if (bundle.executionAttempt.purpose === 'production') {
2451
+ const productionAuthorization = artifacts.productionAuthorization
2452
+ ?? fail('CROSS_FIELD_MISMATCH', 'resolutionBundle.productionAuthorization');
2453
+ const attemptObservation = bundle.attemptObservation
2454
+ ?? fail('CROSS_FIELD_MISMATCH', 'resolutionBundle.attemptObservation');
2455
+ if (attemptObservation.preparedAt < productionAuthorization.approvedAt
2456
+ || attemptObservation.resolvedAt < productionAuthorization.approvedAt
2457
+ || bundle.observedAt < productionAuthorization.approvedAt) {
2458
+ fail('CROSS_FIELD_MISMATCH', 'resolutionBundle.attemptObservation.preparedAt');
2459
+ }
2460
+ }
2461
+ if (bundle.outcome === 'committed') {
2462
+ const receipt = bundle.originalReceipt;
2463
+ if (receipt.kind === 'cloudly-legacy-deployment-settlement-scratch-receipt') {
2464
+ await normalizeCloudlyLegacyDeploymentSettlementScratchReceiptForAuthority(receipt, artifacts.sourceMetadata, artifacts.requestBundle.authenticatedRequest, verifierArg);
2465
+ }
2466
+ else if (receipt.schemaVersion === 2) {
2467
+ if (!artifacts.splitProductionAuthority || !artifacts.productionAuthorization) {
2468
+ fail('CROSS_FIELD_MISMATCH', 'resolutionBundle.originalReceipt.authority');
2469
+ }
2470
+ await normalizeCloudlyLegacyDeploymentSettlementProductionReceiptV2ForAuthorities(receipt, artifacts.executionMetadata, artifacts.sourceMetadata, artifacts.authenticatedPlan, artifacts.requestBundle, verifierArg);
2471
+ if (canonicalize(receipt.productionAuthorization, 'resolutionBundle.originalReceipt.productionAuthorization') !== canonicalize(artifacts.productionAuthorization, 'resolutionBundle.productionAuthorization')) {
2472
+ fail('CROSS_FIELD_MISMATCH', 'resolutionBundle.originalReceipt.productionAuthorization');
2473
+ }
2474
+ }
2475
+ else {
2476
+ if (artifacts.splitProductionAuthority) {
2477
+ fail('CROSS_FIELD_MISMATCH', 'resolutionBundle.originalReceipt.authority');
2478
+ }
2479
+ await normalizeCloudlyLegacyDeploymentSettlementProductionReceiptForAuthority(receipt, artifacts.sourceMetadata, artifacts.requestBundle.authenticatedRequest, verifierArg);
2480
+ }
2481
+ if (receipt.kind === 'cloudly-legacy-deployment-settlement-production-receipt'
2482
+ && artifacts.scratchReceipt
2483
+ && digestCloudlyLegacyDeploymentSettlementScratchReceipt(receipt.scratchReceipt)
2484
+ !== digestCloudlyLegacyDeploymentSettlementScratchReceipt(artifacts.scratchReceipt)) {
2485
+ fail('CROSS_FIELD_MISMATCH', 'resolutionBundle.originalReceipt.scratchReceipt');
2486
+ }
2487
+ }
2488
+ return bundle;
2489
+ };
2490
+ export const normalizeAuthenticatedCloudlyLegacyDeploymentSettlementResolutionForAuthorities = async (attestationArg, sourceMetadataArg, executionMetadataArg, authenticatedPlanArg, requestBundleArg, scratchReceiptArg, productionAuthorizationArg, verifierArg) => {
2491
+ const attestation = normalizeCloudlyLegacyDeploymentSettlementAuthenticatedResolutionStructure(attestationArg);
2492
+ const executionMetadata = normalizeCloudlyLegacyDeploymentSettlementAuthorityMetadata(executionMetadataArg);
2493
+ assertAuthorityReferenceMatchesMetadata(attestation.authority, executionMetadata, 'authenticatedResolution.authority');
2494
+ await requireConsumerVerifiedHmac(attestation.authority, cloudlyLegacyDeploymentSettlementDomains.resolutionHmac, encodeCloudlyLegacyDeploymentSettlementResolutionHmacInput(withoutArtifactMac(attestation)), attestation.mac, verifierArg, 'authenticatedResolution.mac');
2495
+ const payload = await normalizeCloudlyLegacyDeploymentSettlementResolutionBundleForAuthorities(attestation.payload, sourceMetadataArg, executionMetadata, authenticatedPlanArg, requestBundleArg, scratchReceiptArg, productionAuthorizationArg, verifierArg);
2496
+ if (canonicalize(attestation.payload, 'authenticatedResolution.payload')
2497
+ !== canonicalize(payload, 'authenticatedResolution.verifiedPayload')) {
2498
+ fail('CROSS_FIELD_MISMATCH', 'authenticatedResolution.payload');
2499
+ }
2500
+ return attestation;
2501
+ };
2502
+ const normalizeSettlementExecutionBundleCommon = (valueArg, pathArg, purposeArg) => {
2503
+ const value = readRecord(valueArg, pathArg);
2504
+ const hasReceipt = Object.hasOwn(value, 'receipt');
2505
+ assertExactKeys(value, [
2506
+ 'schemaVersion',
2507
+ 'kind',
2508
+ 'purpose',
2509
+ 'executionAttempt',
2510
+ 'authenticatedResult',
2511
+ ...(hasReceipt ? ['receipt'] : []),
2512
+ ], pathArg);
2513
+ if (value.kind !== 'cloudly-legacy-deployment-settlement-execution-bundle'
2514
+ || value.purpose !== purposeArg) {
2515
+ fail('INVALID_VALUE', `${pathArg}.kind`);
2516
+ }
2517
+ const executionAttempt = normalizeExecutionAttemptIdentityInternal(value.executionAttempt, `${pathArg}.executionAttempt`);
2518
+ const authenticatedResult = normalizeCloudlyLegacyDeploymentSettlementAuthenticatedApplyResultStructure(value.authenticatedResult);
2519
+ if (executionAttempt.purpose !== purposeArg
2520
+ || canonicalize(authenticatedResult.authority, `${pathArg}.result.authority`)
2521
+ !== canonicalize(executionAttempt.executionAuthority, `${pathArg}.attempt.authority`)
2522
+ || (authenticatedResult.payload.status === 'completed') !== hasReceipt) {
2523
+ fail('CROSS_FIELD_MISMATCH', `${pathArg}.authenticatedResult`);
2524
+ }
2525
+ return { value, executionAttempt, authenticatedResult, hasReceipt };
2526
+ };
2527
+ /** Structural only; this function does not authenticate result or receipt MACs. */
2528
+ export const normalizeCloudlyLegacyDeploymentSettlementScratchExecutionBundle = (valueArg) => {
2529
+ const normalized = normalizeSettlementExecutionBundleCommon(valueArg, 'scratchExecutionBundle', 'scratch-rehearsal');
2530
+ if (normalized.value.schemaVersion !== 1) {
2531
+ fail('INVALID_VALUE', 'scratchExecutionBundle.schemaVersion');
2532
+ }
2533
+ const receipt = normalized.hasReceipt
2534
+ ? normalizeCloudlyLegacyDeploymentSettlementScratchReceipt(normalized.value.receipt)
2535
+ : undefined;
2536
+ if (receipt
2537
+ && (canonicalize(receipt.authority, 'scratchExecutionBundle.receipt.authority')
2538
+ !== canonicalize(normalized.executionAttempt.executionAuthority, 'scratchExecutionBundle.attempt.authority')
2539
+ || normalized.authenticatedResult.payload.status !== 'completed'
2540
+ || normalized.authenticatedResult.payload.requestSha256 !== receipt.requestSha256
2541
+ || (normalized.authenticatedResult.payload.disposition !== receipt.disposition
2542
+ && !(receipt.disposition === 'applied'
2543
+ && normalized.authenticatedResult.payload.disposition === 'exact-replay')))) {
2544
+ fail('CROSS_FIELD_MISMATCH', 'scratchExecutionBundle.receipt');
2545
+ }
2546
+ const executionAttempt = normalized.executionAttempt;
2547
+ const result = receipt
2548
+ ? {
2549
+ schemaVersion: 1,
2550
+ kind: 'cloudly-legacy-deployment-settlement-execution-bundle',
2551
+ purpose: 'scratch-rehearsal',
2552
+ executionAttempt,
2553
+ authenticatedResult: normalized.authenticatedResult,
2554
+ receipt,
2555
+ }
2556
+ : {
2557
+ schemaVersion: 1,
2558
+ kind: 'cloudly-legacy-deployment-settlement-execution-bundle',
2559
+ purpose: 'scratch-rehearsal',
2560
+ executionAttempt,
2561
+ authenticatedResult: normalized.authenticatedResult,
2562
+ };
2563
+ return finalize(result, cloudlyLegacyDeploymentSettlementLimits.maximumReceiptBytes * 2, 'scratchExecutionBundle');
2564
+ };
2565
+ /** Structural only; this function does not authenticate result or receipt MACs. */
2566
+ export const normalizeCloudlyLegacyDeploymentSettlementProductionExecutionBundleV2 = (valueArg) => {
2567
+ const normalized = normalizeSettlementExecutionBundleCommon(valueArg, 'productionExecutionBundleV2', 'production');
2568
+ if (normalized.value.schemaVersion !== 2) {
2569
+ fail('INVALID_VALUE', 'productionExecutionBundleV2.schemaVersion');
2570
+ }
2571
+ const receipt = normalized.hasReceipt
2572
+ ? normalizeCloudlyLegacyDeploymentSettlementProductionReceiptV2(normalized.value.receipt)
2573
+ : undefined;
2574
+ if (receipt
2575
+ && (canonicalize(receipt.executionAttempt, 'productionExecutionBundleV2.receipt.attempt')
2576
+ !== canonicalize(normalized.executionAttempt, 'productionExecutionBundleV2.executionAttempt')
2577
+ || normalized.authenticatedResult.payload.status !== 'completed'
2578
+ || normalized.authenticatedResult.payload.requestSha256 !== receipt.requestSha256
2579
+ || (normalized.authenticatedResult.payload.disposition !== receipt.disposition
2580
+ && !(receipt.disposition === 'applied'
2581
+ && normalized.authenticatedResult.payload.disposition === 'exact-replay')))) {
2582
+ fail('CROSS_FIELD_MISMATCH', 'productionExecutionBundleV2.receipt');
2583
+ }
2584
+ const executionAttempt = normalized.executionAttempt;
2585
+ const result = receipt
2586
+ ? {
2587
+ schemaVersion: 2,
2588
+ kind: 'cloudly-legacy-deployment-settlement-execution-bundle',
2589
+ purpose: 'production',
2590
+ executionAttempt,
2591
+ authenticatedResult: normalized.authenticatedResult,
2592
+ receipt,
2593
+ }
2594
+ : {
2595
+ schemaVersion: 2,
2596
+ kind: 'cloudly-legacy-deployment-settlement-execution-bundle',
2597
+ purpose: 'production',
2598
+ executionAttempt,
2599
+ authenticatedResult: normalized.authenticatedResult,
2600
+ };
2601
+ return finalize(result, cloudlyLegacyDeploymentSettlementLimits.maximumReceiptBytes * 4, 'productionExecutionBundleV2');
2602
+ };
2603
+ export const encodeCloudlyLegacyDeploymentSettlementScratchExecutionBundle = (valueArg) => encodeNormalized(normalizeCloudlyLegacyDeploymentSettlementScratchExecutionBundle(valueArg), 'scratchExecutionBundle');
2604
+ export const encodeCloudlyLegacyDeploymentSettlementProductionExecutionBundleV2 = (valueArg) => encodeNormalized(normalizeCloudlyLegacyDeploymentSettlementProductionExecutionBundleV2(valueArg), 'productionExecutionBundleV2');
2605
+ export const normalizeCloudlyLegacyDeploymentSettlementScratchExecutionBundleForAuthority = async (bundleArg, sourceMetadataArg, authenticatedPlanArg, requestBundleArg, verifierArg) => {
2606
+ const bundle = normalizeCloudlyLegacyDeploymentSettlementScratchExecutionBundle(bundleArg);
2607
+ const artifacts = await normalizeExecutionAttemptProofArtifacts({
2608
+ executionAttempt: bundle.executionAttempt,
2609
+ sourceMetadata: sourceMetadataArg,
2610
+ executionMetadata: sourceMetadataArg,
2611
+ authenticatedPlan: authenticatedPlanArg,
2612
+ requestBundle: requestBundleArg,
2613
+ scratchReceipt: null,
2614
+ productionAuthorization: null,
2615
+ requireProductionAuthorization: false,
2616
+ verifier: verifierArg,
2617
+ });
2618
+ await normalizeAuthenticatedCloudlyLegacyDeploymentSettlementApplyResultForAuthority(bundle.authenticatedResult, artifacts.sourceMetadata, artifacts.requestBundle.authenticatedRequest, verifierArg);
2619
+ if (bundle.receipt) {
2620
+ await normalizeCloudlyLegacyDeploymentSettlementScratchReceiptForAuthority(bundle.receipt, artifacts.sourceMetadata, artifacts.requestBundle.authenticatedRequest, verifierArg);
2621
+ }
2622
+ return bundle;
2623
+ };
2624
+ export const normalizeCloudlyLegacyDeploymentSettlementProductionExecutionBundleV2ForAuthorities = async (bundleArg, productionAuthorizationArg, productionMetadataArg, sourceMetadataArg, authenticatedPlanArg, requestBundleArg, scratchReceiptArg, verifierArg) => {
2625
+ const bundle = normalizeCloudlyLegacyDeploymentSettlementProductionExecutionBundleV2(bundleArg);
2626
+ const artifacts = await normalizeExecutionAttemptProofArtifacts({
2627
+ executionAttempt: bundle.executionAttempt,
2628
+ sourceMetadata: sourceMetadataArg,
2629
+ executionMetadata: productionMetadataArg,
2630
+ authenticatedPlan: authenticatedPlanArg,
2631
+ requestBundle: requestBundleArg,
2632
+ scratchReceipt: scratchReceiptArg,
2633
+ productionAuthorization: productionAuthorizationArg,
2634
+ requireProductionAuthorization: true,
2635
+ verifier: verifierArg,
2636
+ });
2637
+ const productionAuthorization = artifacts.productionAuthorization
2638
+ ?? fail('CROSS_FIELD_MISMATCH', 'productionExecutionBundleV2.executionAuthority');
2639
+ if (!artifacts.splitProductionAuthority) {
2640
+ fail('CROSS_FIELD_MISMATCH', 'productionExecutionBundleV2.executionAuthority');
2641
+ }
2642
+ await normalizeAuthenticatedApplyResultForExecutionAuthority(bundle.authenticatedResult, artifacts.executionMetadata, artifacts.requestBundle.authenticatedRequest, productionAuthorization, verifierArg);
2643
+ if (bundle.receipt) {
2644
+ await normalizeCloudlyLegacyDeploymentSettlementProductionReceiptV2ForAuthorities(bundle.receipt, artifacts.executionMetadata, artifacts.sourceMetadata, artifacts.authenticatedPlan, artifacts.requestBundle, verifierArg);
2645
+ if (canonicalize(bundle.receipt.productionAuthorization, 'productionExecutionBundleV2.receipt.productionAuthorization') !== canonicalize(artifacts.productionAuthorization, 'productionExecutionBundleV2.productionAuthorization')) {
2646
+ fail('CROSS_FIELD_MISMATCH', 'productionExecutionBundleV2.productionAuthorization');
2647
+ }
2648
+ }
2649
+ return bundle;
2650
+ };
2651
+ export const cloudlyLegacyDeploymentSettlementStdioLimits = Object.freeze({
2652
+ maximumMongoDescriptorBytes: 16 * 1024,
2653
+ maximumPrivateArtifactAggregateBytes: 4 * 1024 * 1024,
2654
+ maximumRequestFrameBytes: 5 * 1024 * 1024,
2655
+ maximumResponseFrameBytes: 4 * 1024 * 1024,
2656
+ });
2657
+ export const cloudlyLegacyDeploymentSettlementStdioCommands = Object.freeze([
2658
+ 'settlement-plan',
2659
+ 'settlement-request',
2660
+ 'settlement-scratch-check',
2661
+ 'settlement-scratch-apply',
2662
+ 'settlement-scratch-resolve',
2663
+ 'settlement-production-authorize',
2664
+ 'settlement-production-check',
2665
+ 'settlement-production-apply',
2666
+ 'settlement-production-resolve',
2667
+ ]);
2668
+ export const cloudlyLegacyDeploymentSettlementStdioErrorMetadata = Object.freeze({
2669
+ INVALID_FRAME: Object.freeze({ retryable: false }),
2670
+ INVALID_REQUEST: Object.freeze({ retryable: false }),
2671
+ AUTHORITY_INVALID: Object.freeze({ retryable: false }),
2672
+ AUTHORITY_EXPIRED: Object.freeze({ retryable: true }),
2673
+ REQUEST_MISMATCH: Object.freeze({ retryable: false }),
2674
+ PLAN_MISMATCH: Object.freeze({ retryable: false }),
2675
+ SOURCE_STATE_MISMATCH: Object.freeze({ retryable: false }),
2676
+ FINAL_STATE_MISMATCH: Object.freeze({ retryable: true }),
2677
+ TRANSACTIONS_UNSUPPORTED: Object.freeze({ retryable: false }),
2678
+ OPERATION_DRIFT: Object.freeze({ retryable: false }),
2679
+ CLAIM_DRIFT: Object.freeze({ retryable: false }),
2680
+ CLASSIFICATION_MISMATCH: Object.freeze({ retryable: false }),
2681
+ ATTEMPT_CONFLICT: Object.freeze({ retryable: false }),
2682
+ ATTEMPT_NOT_FOUND: Object.freeze({ retryable: false }),
2683
+ INTERNAL_ERROR: Object.freeze({ retryable: true }),
2684
+ });
2685
+ const stdioRequestKeys = ['schemaVersion', 'kind', 'requestId', 'command', 'payload'];
2686
+ const stdioResponseSuccessKeys = [
2687
+ 'schemaVersion',
2688
+ 'kind',
2689
+ 'requestId',
2690
+ 'command',
2691
+ 'ok',
2692
+ 'payload',
2693
+ ];
2694
+ const stdioResponseErrorKeys = [
2695
+ 'schemaVersion',
2696
+ 'kind',
2697
+ 'requestId',
2698
+ 'command',
2699
+ 'ok',
2700
+ 'error',
2701
+ ];
2702
+ const normalizeSettlementMongoDescriptor = (valueArg, pathArg) => {
2703
+ const value = readRecord(valueArg, pathArg);
2704
+ assertExactKeys(value, ['mongoDbUrl', 'mongoDbName', 'mongoDbUser', 'mongoDbPass'], pathArg);
2705
+ for (const key of ['mongoDbUrl', 'mongoDbName', 'mongoDbUser', 'mongoDbPass']) {
2706
+ if (typeof value[key] !== 'string'
2707
+ || value[key].length === 0
2708
+ || Buffer.byteLength(value[key], 'utf8')
2709
+ > cloudlyLegacyDeploymentSettlementStdioLimits.maximumMongoDescriptorBytes
2710
+ || /[\u0000-\u0020\u007f]/u.test(value[key])) {
2711
+ fail('INVALID_VALUE', `${pathArg}.${key}`);
2712
+ }
2713
+ }
2714
+ const descriptor = value;
2715
+ let url;
2716
+ let mongoDbName;
2717
+ let mongoDbUser;
2718
+ let mongoDbPass;
2719
+ try {
2720
+ url = new URL(descriptor.mongoDbUrl);
2721
+ mongoDbName = decodeURIComponent(url.pathname.slice(1));
2722
+ mongoDbUser = decodeURIComponent(url.username);
2723
+ mongoDbPass = decodeURIComponent(url.password);
2724
+ }
2725
+ catch {
2726
+ return fail('INVALID_VALUE', `${pathArg}.mongoDbUrl`);
2727
+ }
2728
+ const queryKeys = [...new Set(url.searchParams.keys())].sort();
2729
+ if (url.protocol !== 'mongodb:'
2730
+ || !url.hostname
2731
+ || !url.port
2732
+ || url.hash !== ''
2733
+ || mongoDbName !== descriptor.mongoDbName
2734
+ || mongoDbUser !== descriptor.mongoDbUser
2735
+ || mongoDbPass !== descriptor.mongoDbPass
2736
+ || JSON.stringify(queryKeys) !== JSON.stringify(['authSource', 'directConnection'])
2737
+ || url.searchParams.getAll('authSource').length !== 1
2738
+ || url.searchParams.get('authSource') !== descriptor.mongoDbName
2739
+ || url.searchParams.getAll('directConnection').length !== 1
2740
+ || url.searchParams.get('directConnection') !== 'true') {
2741
+ fail('CROSS_FIELD_MISMATCH', pathArg);
2742
+ }
2743
+ const output = {
2744
+ mongoDbUrl: descriptor.mongoDbUrl,
2745
+ mongoDbName: descriptor.mongoDbName,
2746
+ mongoDbUser: descriptor.mongoDbUser,
2747
+ mongoDbPass: descriptor.mongoDbPass,
2748
+ };
2749
+ if (Buffer.byteLength(canonicalize(output, pathArg), 'utf8')
2750
+ > cloudlyLegacyDeploymentSettlementStdioLimits.maximumMongoDescriptorBytes) {
2751
+ fail('LIMIT_EXCEEDED', pathArg);
2752
+ }
2753
+ return output;
2754
+ };
2755
+ export const normalizeCloudlyLegacyDeploymentSettlementMongoDescriptor = (valueArg) => finalize(normalizeSettlementMongoDescriptor(valueArg, 'mongoDescriptor'), cloudlyLegacyDeploymentSettlementStdioLimits.maximumMongoDescriptorBytes, 'mongoDescriptor');
2756
+ const assertStdioArtifactAggregate = (valueArg, pathArg) => {
2757
+ if (Buffer.byteLength(canonicalize(valueArg, pathArg), 'utf8')
2758
+ > cloudlyLegacyDeploymentSettlementStdioLimits.maximumPrivateArtifactAggregateBytes) {
2759
+ fail('LIMIT_EXCEEDED', pathArg);
2760
+ }
2761
+ };
2762
+ const assertDistinctStdioHandoffKeyMaterial = (sourceHandoffArg, executionHandoffArg, pathArg) => {
2763
+ const sourceKey = Buffer.from(sourceHandoffArg.hmacKeyPlaintext.value, 'base64url');
2764
+ const executionKey = Buffer.from(executionHandoffArg.hmacKeyPlaintext.value, 'base64url');
2765
+ let equal = false;
2766
+ try {
2767
+ equal = plugins.crypto.timingSafeEqual(sourceKey, executionKey);
2768
+ }
2769
+ finally {
2770
+ sourceKey.fill(0);
2771
+ executionKey.fill(0);
2772
+ }
2773
+ if (equal) {
2774
+ fail('CROSS_FIELD_MISMATCH', pathArg);
2775
+ }
2776
+ };
2777
+ const assertExecutionAttemptMatchesStdioArtifacts = (argsArg) => {
2778
+ const sourceReference = argsArg.sourceHandoff.authorityReference;
2779
+ const executionReference = argsArg.executionHandoff.authorityReference;
2780
+ const sourceMetadata = normalizeFencedSourceAuthorityMetadata(argsArg.sourceHandoff.authorityMetadata, `${argsArg.path}.sourceAuthorityMetadata`);
2781
+ if (argsArg.purpose === 'production') {
2782
+ assertDistinctStdioHandoffKeyMaterial(argsArg.sourceHandoff, argsArg.executionHandoff, `${argsArg.path}.authorityKeySeparation`);
2783
+ normalizeProductionAuthorityMetadataPair(argsArg.executionHandoff.authorityMetadata, sourceMetadata);
2784
+ }
2785
+ else {
2786
+ normalizeFencedSourceAuthorityMetadata(argsArg.executionHandoff.authorityMetadata, `${argsArg.path}.executionAuthorityMetadata`);
2787
+ }
2788
+ normalizeCloudlyLegacyDeploymentSettlementPlanForAuthority(argsArg.authenticatedPlan.payload, sourceMetadata);
2789
+ normalizeCloudlyLegacyDeploymentSettlementProductionRequestForAuthority(argsArg.requestBundle.authenticatedRequest.payload, sourceMetadata);
2790
+ if (argsArg.scratchReceipt) {
2791
+ normalizeCloudlyLegacyDeploymentSettlementScratchReceiptStructureForRequest(argsArg.scratchReceipt, argsArg.requestBundle.authenticatedRequest);
2792
+ }
2793
+ if (canonicalize(argsArg.authenticatedPlan.authority, `${argsArg.path}.plan.authority`)
2794
+ !== canonicalize(sourceReference, `${argsArg.path}.sourceAuthority`)
2795
+ || canonicalize(argsArg.requestBundle.authenticatedRequest.authority, `${argsArg.path}.request.authority`) !== canonicalize(sourceReference, `${argsArg.path}.sourceAuthority`)
2796
+ || canonicalize(argsArg.requestBundle.authenticatedRehearsalBinding.authority, `${argsArg.path}.binding.authority`) !== canonicalize(sourceReference, `${argsArg.path}.sourceAuthority`)
2797
+ || canonicalize(argsArg.authenticatedPlan.payload, `${argsArg.path}.plan.payload`)
2798
+ !== canonicalize(argsArg.requestBundle.authenticatedRequest.payload.plan, `${argsArg.path}.request.plan`)
2799
+ || argsArg.authenticatedPlan.payloadSha256
2800
+ !== argsArg.requestBundle.authenticatedRequest.payload.planSha256
2801
+ || (argsArg.scratchReceipt !== undefined
2802
+ && (canonicalize(argsArg.scratchReceipt.authority, `${argsArg.path}.scratch.authority`)
2803
+ !== canonicalize(sourceReference, `${argsArg.path}.sourceAuthority`)
2804
+ || argsArg.scratchReceipt.requestSha256
2805
+ !== argsArg.requestBundle.authenticatedRequest.payloadSha256))) {
2806
+ fail('CROSS_FIELD_MISMATCH', `${argsArg.path}.sourceArtifacts`);
2807
+ }
2808
+ const scratchReceiptSha256 = argsArg.scratchReceipt
2809
+ ? digestCloudlyLegacyDeploymentSettlementScratchReceipt(argsArg.scratchReceipt)
2810
+ : null;
2811
+ if (argsArg.attempt.purpose !== argsArg.purpose
2812
+ || argsArg.attempt.operationId !== argsArg.executionHandoff.authorityMetadata.operationId
2813
+ || argsArg.attempt.settlementId !== argsArg.executionHandoff.authorityMetadata.settlementId
2814
+ || canonicalize(argsArg.attempt.sourceAuthority, `${argsArg.path}.attempt.sourceAuthority`)
2815
+ !== canonicalize(sourceReference, `${argsArg.path}.sourceAuthority`)
2816
+ || canonicalize(argsArg.attempt.executionAuthority, `${argsArg.path}.attempt.executionAuthority`)
2817
+ !== canonicalize(executionReference, `${argsArg.path}.executionAuthority`)
2818
+ || argsArg.attempt.authenticatedPlanSha256
2819
+ !== digestAuthenticatedCloudlyLegacyDeploymentSettlementPlan(argsArg.authenticatedPlan)
2820
+ || argsArg.attempt.requestBundleSha256
2821
+ !== digestCloudlyLegacyDeploymentSettlementRequestBundle(argsArg.requestBundle)
2822
+ || argsArg.attempt.scratchReceiptSha256 !== scratchReceiptSha256) {
2823
+ fail('CROSS_FIELD_MISMATCH', `${argsArg.path}.executionAttempt`);
2824
+ }
2825
+ if (argsArg.purpose === 'production') {
2826
+ const productionMetadata = argsArg.executionHandoff.authorityMetadata;
2827
+ if (!productionMetadata.sourceAuthority
2828
+ || canonicalize(productionMetadata.sourceAuthority, `${argsArg.path}.metadata.sourceAuthority`)
2829
+ !== canonicalize(sourceReference, `${argsArg.path}.sourceAuthority`)
2830
+ || productionMetadata.sourceAuthenticatedPlanSha256
2831
+ !== argsArg.attempt.authenticatedPlanSha256
2832
+ || productionMetadata.sourceRequestBundleSha256 !== argsArg.attempt.requestBundleSha256
2833
+ || productionMetadata.scratchReceiptSha256 !== scratchReceiptSha256) {
2834
+ fail('CROSS_FIELD_MISMATCH', `${argsArg.path}.productionAuthorityHandoff`);
2835
+ }
2836
+ }
2837
+ };
2838
+ const normalizeScratchStdioPayload = (valueArg, pathArg, resolveArg) => {
2839
+ const value = readRecord(valueArg, pathArg);
2840
+ assertExactKeys(value, [
2841
+ 'mongoDescriptor',
2842
+ 'authorityHandoff',
2843
+ 'authenticatedPlan',
2844
+ 'requestBundle',
2845
+ 'executionAttempt',
2846
+ ...(resolveArg ? ['observedAt'] : []),
2847
+ ], pathArg);
2848
+ const authorityHandoff = normalizeCloudlyLegacyDeploymentSettlementAuthorityHandoffPlaintext(value.authorityHandoff);
2849
+ const authenticatedPlan = normalizeCloudlyLegacyDeploymentSettlementAuthenticatedPlanStructure(value.authenticatedPlan);
2850
+ const requestBundle = normalizeCloudlyLegacyDeploymentSettlementRequestBundle(value.requestBundle);
2851
+ const executionAttempt = normalizeExecutionAttemptIdentityInternal(value.executionAttempt, `${pathArg}.executionAttempt`);
2852
+ assertExecutionAttemptMatchesStdioArtifacts({
2853
+ attempt: executionAttempt,
2854
+ purpose: 'scratch-rehearsal',
2855
+ sourceHandoff: authorityHandoff,
2856
+ executionHandoff: authorityHandoff,
2857
+ authenticatedPlan,
2858
+ requestBundle,
2859
+ path: pathArg,
2860
+ });
2861
+ const output = {
2862
+ mongoDescriptor: normalizeSettlementMongoDescriptor(value.mongoDescriptor, `${pathArg}.mongoDescriptor`),
2863
+ authorityHandoff,
2864
+ authenticatedPlan,
2865
+ requestBundle,
2866
+ executionAttempt: executionAttempt,
2867
+ ...(resolveArg
2868
+ ? { observedAt: readInteger(value.observedAt, `${pathArg}.observedAt`, 1) }
2869
+ : {}),
2870
+ };
2871
+ assertStdioArtifactAggregate(output, pathArg);
2872
+ return output;
2873
+ };
2874
+ const normalizeProductionStdioPayload = (valueArg, pathArg, resolveArg) => {
2875
+ const value = readRecord(valueArg, pathArg);
2876
+ assertExactKeys(value, [
2877
+ 'mongoDescriptor',
2878
+ 'sourceAuthorityHandoff',
2879
+ 'productionAuthorityHandoff',
2880
+ 'authenticatedPlan',
2881
+ 'requestBundle',
2882
+ 'scratchReceipt',
2883
+ 'productionAuthorization',
2884
+ 'executionAttempt',
2885
+ ...(resolveArg ? ['observedAt'] : []),
2886
+ ], pathArg);
2887
+ const sourceAuthorityHandoff = normalizeCloudlyLegacyDeploymentSettlementAuthorityHandoffPlaintext(value.sourceAuthorityHandoff);
2888
+ const productionAuthorityHandoff = normalizeCloudlyLegacyDeploymentSettlementAuthorityHandoffPlaintext(value.productionAuthorityHandoff);
2889
+ const authenticatedPlan = normalizeCloudlyLegacyDeploymentSettlementAuthenticatedPlanStructure(value.authenticatedPlan);
2890
+ const requestBundle = normalizeCloudlyLegacyDeploymentSettlementRequestBundle(value.requestBundle);
2891
+ const scratchReceipt = normalizeCloudlyLegacyDeploymentSettlementScratchReceipt(value.scratchReceipt);
2892
+ const productionAuthorization = normalizeCloudlyLegacyDeploymentSettlementProductionExecutionAuthorization(value.productionAuthorization);
2893
+ const executionAttempt = normalizeExecutionAttemptIdentityInternal(value.executionAttempt, `${pathArg}.executionAttempt`);
2894
+ assertExecutionAttemptMatchesStdioArtifacts({
2895
+ attempt: executionAttempt,
2896
+ purpose: 'production',
2897
+ sourceHandoff: sourceAuthorityHandoff,
2898
+ executionHandoff: productionAuthorityHandoff,
2899
+ authenticatedPlan,
2900
+ requestBundle,
2901
+ scratchReceipt,
2902
+ path: pathArg,
2903
+ });
2904
+ if (canonicalize(productionAuthorization.executionAttempt, `${pathArg}.authorization.attempt`)
2905
+ !== canonicalize(executionAttempt, `${pathArg}.executionAttempt`)) {
2906
+ fail('CROSS_FIELD_MISMATCH', `${pathArg}.productionAuthorization`);
2907
+ }
2908
+ const metadata = normalizeProductionAuthorityMetadataPair(productionAuthorityHandoff.authorityMetadata, sourceAuthorityHandoff.authorityMetadata);
2909
+ assertProductionAuthorizationArtifacts(productionAuthorization, metadata.productionMetadata, metadata.sourceMetadata, authenticatedPlan, requestBundle, scratchReceipt);
2910
+ const output = {
2911
+ mongoDescriptor: normalizeSettlementMongoDescriptor(value.mongoDescriptor, `${pathArg}.mongoDescriptor`),
2912
+ sourceAuthorityHandoff,
2913
+ productionAuthorityHandoff,
2914
+ authenticatedPlan,
2915
+ requestBundle,
2916
+ scratchReceipt,
2917
+ productionAuthorization,
2918
+ executionAttempt: executionAttempt,
2919
+ ...(resolveArg
2920
+ ? { observedAt: readInteger(value.observedAt, `${pathArg}.observedAt`, 1) }
2921
+ : {}),
2922
+ };
2923
+ assertStdioArtifactAggregate(output, pathArg);
2924
+ return output;
2925
+ };
2926
+ /** Structural only; use the authority-aware variant before trusting artifacts. */
2927
+ export const normalizeCloudlyLegacyDeploymentSettlementStdioRequest = (valueArg) => {
2928
+ const value = readRecord(valueArg, 'stdioRequest');
2929
+ assertExactKeys(value, stdioRequestKeys, 'stdioRequest');
2930
+ assertStdioArtifactAggregate(value.payload, 'stdioRequest.payload');
2931
+ if (value.schemaVersion !== 1
2932
+ || value.kind !== 'cloudly-legacy-deployment-settlement-stdio-request') {
2933
+ fail('INVALID_VALUE', 'stdioRequest.kind');
2934
+ }
2935
+ const requestId = readIdentifier(value.requestId, 'stdioRequest.requestId');
2936
+ const command = readLiteral(value.command, cloudlyLegacyDeploymentSettlementStdioCommands, 'stdioRequest.command');
2937
+ const payloadPath = 'stdioRequest.payload';
2938
+ let payload;
2939
+ if (command === 'settlement-plan') {
2940
+ const input = readRecord(value.payload, payloadPath);
2941
+ assertExactKeys(input, ['mongoDescriptor', 'authorityHandoff', 'effectiveAt'], payloadPath);
2942
+ const authorityHandoff = normalizeCloudlyLegacyDeploymentSettlementAuthorityHandoffPlaintext(input.authorityHandoff);
2943
+ const sourceMetadata = normalizeFencedSourceAuthorityMetadata(authorityHandoff.authorityMetadata, `${payloadPath}.authorityHandoff.authorityMetadata`);
2944
+ const effectiveAt = readInteger(input.effectiveAt, `${payloadPath}.effectiveAt`, 1);
2945
+ assertAuthorityTimestamp(effectiveAt, sourceMetadata, `${payloadPath}.effectiveAt`);
2946
+ payload = {
2947
+ mongoDescriptor: normalizeSettlementMongoDescriptor(input.mongoDescriptor, `${payloadPath}.mongoDescriptor`),
2948
+ authorityHandoff,
2949
+ effectiveAt,
2950
+ };
2951
+ }
2952
+ else if (command === 'settlement-request') {
2953
+ const input = readRecord(value.payload, payloadPath);
2954
+ assertExactKeys(input, ['authorityHandoff', 'authenticatedPlan', 'requestedAt'], payloadPath);
2955
+ const authorityHandoff = normalizeCloudlyLegacyDeploymentSettlementAuthorityHandoffPlaintext(input.authorityHandoff);
2956
+ const sourceMetadata = normalizeFencedSourceAuthorityMetadata(authorityHandoff.authorityMetadata, `${payloadPath}.authorityHandoff.authorityMetadata`);
2957
+ const authenticatedPlan = normalizeCloudlyLegacyDeploymentSettlementAuthenticatedPlanStructure(input.authenticatedPlan);
2958
+ assertAuthorityReferenceMatchesMetadata(authenticatedPlan.authority, sourceMetadata, `${payloadPath}.authenticatedPlan.authority`);
2959
+ normalizeCloudlyLegacyDeploymentSettlementPlanForAuthority(authenticatedPlan.payload, sourceMetadata);
2960
+ const requestedAt = readInteger(input.requestedAt, `${payloadPath}.requestedAt`, 1);
2961
+ assertAuthorityTimestamp(requestedAt, sourceMetadata, `${payloadPath}.requestedAt`);
2962
+ if (requestedAt < authenticatedPlan.payload.effectiveAt) {
2963
+ fail('CROSS_FIELD_MISMATCH', `${payloadPath}.requestedAt`);
2964
+ }
2965
+ payload = {
2966
+ authorityHandoff,
2967
+ authenticatedPlan,
2968
+ requestedAt,
2969
+ };
2970
+ }
2971
+ else if (command === 'settlement-scratch-check'
2972
+ || command === 'settlement-scratch-apply') {
2973
+ payload = normalizeScratchStdioPayload(value.payload, payloadPath, false);
2974
+ }
2975
+ else if (command === 'settlement-scratch-resolve') {
2976
+ payload = normalizeScratchStdioPayload(value.payload, payloadPath, true);
2977
+ }
2978
+ else if (command === 'settlement-production-authorize') {
2979
+ const input = readRecord(value.payload, payloadPath);
2980
+ assertExactKeys(input, [
2981
+ 'sourceAuthorityHandoff',
2982
+ 'productionAuthorityHandoff',
2983
+ 'authenticatedPlan',
2984
+ 'requestBundle',
2985
+ 'scratchReceipt',
2986
+ 'executionAttempt',
2987
+ 'requestedAt',
2988
+ 'approvedAt',
2989
+ ], payloadPath);
2990
+ const sourceAuthorityHandoff = normalizeCloudlyLegacyDeploymentSettlementAuthorityHandoffPlaintext(input.sourceAuthorityHandoff);
2991
+ const productionAuthorityHandoff = normalizeCloudlyLegacyDeploymentSettlementAuthorityHandoffPlaintext(input.productionAuthorityHandoff);
2992
+ const authenticatedPlan = normalizeCloudlyLegacyDeploymentSettlementAuthenticatedPlanStructure(input.authenticatedPlan);
2993
+ const requestBundle = normalizeCloudlyLegacyDeploymentSettlementRequestBundle(input.requestBundle);
2994
+ const scratchReceipt = normalizeCloudlyLegacyDeploymentSettlementScratchReceipt(input.scratchReceipt);
2995
+ const executionAttempt = normalizeExecutionAttemptIdentityInternal(input.executionAttempt, `${payloadPath}.executionAttempt`);
2996
+ assertExecutionAttemptMatchesStdioArtifacts({
2997
+ attempt: executionAttempt,
2998
+ purpose: 'production',
2999
+ sourceHandoff: sourceAuthorityHandoff,
3000
+ executionHandoff: productionAuthorityHandoff,
3001
+ authenticatedPlan,
3002
+ requestBundle,
3003
+ scratchReceipt,
3004
+ path: payloadPath,
3005
+ });
3006
+ const requestedAt = readInteger(input.requestedAt, `${payloadPath}.requestedAt`, 1);
3007
+ const metadata = normalizeProductionAuthorityMetadataPair(productionAuthorityHandoff.authorityMetadata, sourceAuthorityHandoff.authorityMetadata);
3008
+ const approvedAt = readInteger(input.approvedAt, `${payloadPath}.approvedAt`, requestedAt);
3009
+ assertAuthorityTimestamp(requestedAt, metadata.productionMetadata, `${payloadPath}.requestedAt`);
3010
+ assertAuthorityTimestamp(approvedAt, metadata.productionMetadata, `${payloadPath}.approvedAt`);
3011
+ if (metadata.productionMetadata.issuedAt <= scratchReceipt.completedAt
3012
+ || requestedAt <= scratchReceipt.completedAt) {
3013
+ fail('CROSS_FIELD_MISMATCH', `${payloadPath}.requestedAt`);
3014
+ }
3015
+ payload = {
3016
+ sourceAuthorityHandoff,
3017
+ productionAuthorityHandoff,
3018
+ authenticatedPlan,
3019
+ requestBundle,
3020
+ scratchReceipt,
3021
+ executionAttempt: executionAttempt,
3022
+ requestedAt,
3023
+ approvedAt,
3024
+ };
3025
+ }
3026
+ else if (command === 'settlement-production-resolve') {
3027
+ payload = normalizeProductionStdioPayload(value.payload, payloadPath, true);
3028
+ }
3029
+ else {
3030
+ payload = normalizeProductionStdioPayload(value.payload, payloadPath, false);
3031
+ }
3032
+ assertStdioArtifactAggregate(payload, payloadPath);
3033
+ return finalize({
3034
+ schemaVersion: 1,
3035
+ kind: 'cloudly-legacy-deployment-settlement-stdio-request',
3036
+ requestId,
3037
+ command,
3038
+ payload,
3039
+ }, cloudlyLegacyDeploymentSettlementStdioLimits.maximumRequestFrameBytes - 1, 'stdioRequest');
3040
+ };
3041
+ const createCloudlyLegacyDeploymentSettlementStdioRequestHmacVerifier = (requestArg) => {
3042
+ if (requestArg.command === 'settlement-plan'
3043
+ || requestArg.command === 'settlement-request'
3044
+ || requestArg.command === 'settlement-scratch-check'
3045
+ || requestArg.command === 'settlement-scratch-apply'
3046
+ || requestArg.command === 'settlement-scratch-resolve') {
3047
+ return createCloudlyLegacyDeploymentSettlementStdioHandoffHmacVerifier(requestArg.payload.authorityHandoff);
3048
+ }
3049
+ const sourceVerifier = createCloudlyLegacyDeploymentSettlementStdioHandoffHmacVerifier(requestArg.payload.sourceAuthorityHandoff);
3050
+ const executionVerifier = createCloudlyLegacyDeploymentSettlementStdioHandoffHmacVerifier(requestArg.payload.productionAuthorityHandoff);
3051
+ return async (inputArg) => (await sourceVerifier(inputArg) || await executionVerifier(inputArg));
3052
+ };
3053
+ export const normalizeCloudlyLegacyDeploymentSettlementStdioRequestForAuthorities = async (valueArg) => {
3054
+ const request = normalizeCloudlyLegacyDeploymentSettlementStdioRequest(valueArg);
3055
+ const verifier = createCloudlyLegacyDeploymentSettlementStdioRequestHmacVerifier(request);
3056
+ if (request.command === 'settlement-plan') {
3057
+ return request;
3058
+ }
3059
+ if (request.command === 'settlement-request') {
3060
+ await normalizeAuthenticatedCloudlyLegacyDeploymentSettlementPlanForAuthority(request.payload.authenticatedPlan, request.payload.authorityHandoff.authorityMetadata, verifier);
3061
+ return request;
3062
+ }
3063
+ if (request.command === 'settlement-scratch-check'
3064
+ || request.command === 'settlement-scratch-apply'
3065
+ || request.command === 'settlement-scratch-resolve') {
3066
+ await normalizeExecutionAttemptProofArtifacts({
3067
+ executionAttempt: request.payload.executionAttempt,
3068
+ sourceMetadata: request.payload.authorityHandoff.authorityMetadata,
3069
+ executionMetadata: request.payload.authorityHandoff.authorityMetadata,
3070
+ authenticatedPlan: request.payload.authenticatedPlan,
3071
+ requestBundle: request.payload.requestBundle,
3072
+ scratchReceipt: null,
3073
+ productionAuthorization: null,
3074
+ requireProductionAuthorization: false,
3075
+ verifier,
3076
+ });
3077
+ return request;
3078
+ }
3079
+ await normalizeExecutionAttemptProofArtifacts({
3080
+ executionAttempt: request.payload.executionAttempt,
3081
+ sourceMetadata: request.payload.sourceAuthorityHandoff.authorityMetadata,
3082
+ executionMetadata: request.payload.productionAuthorityHandoff.authorityMetadata,
3083
+ authenticatedPlan: request.payload.authenticatedPlan,
3084
+ requestBundle: request.payload.requestBundle,
3085
+ scratchReceipt: request.payload.scratchReceipt,
3086
+ productionAuthorization: request.command === 'settlement-production-authorize'
3087
+ ? null
3088
+ : request.payload.productionAuthorization,
3089
+ requireProductionAuthorization: request.command !== 'settlement-production-authorize',
3090
+ verifier,
3091
+ });
3092
+ return request;
3093
+ };
3094
+ const normalizeStdioSuccessPayload = (commandArg, valueArg) => {
3095
+ const path = 'stdioResponse.payload';
3096
+ const value = readRecord(valueArg, path);
3097
+ if (commandArg === 'settlement-plan') {
3098
+ assertExactKeys(value, ['authenticatedPlan'], path);
3099
+ return {
3100
+ authenticatedPlan: normalizeCloudlyLegacyDeploymentSettlementAuthenticatedPlanStructure(value.authenticatedPlan),
3101
+ };
3102
+ }
3103
+ if (commandArg === 'settlement-request') {
3104
+ assertExactKeys(value, ['requestBundle'], path);
3105
+ return { requestBundle: normalizeCloudlyLegacyDeploymentSettlementRequestBundle(value.requestBundle) };
3106
+ }
3107
+ if (commandArg === 'settlement-scratch-check'
3108
+ || commandArg === 'settlement-production-check') {
3109
+ assertExactKeys(value, ['authenticatedResult'], path);
3110
+ return {
3111
+ authenticatedResult: normalizeCloudlyLegacyDeploymentSettlementAuthenticatedCheckResultStructure(value.authenticatedResult),
3112
+ };
3113
+ }
3114
+ if (commandArg === 'settlement-scratch-apply') {
3115
+ assertExactKeys(value, ['executionBundle'], path);
3116
+ return {
3117
+ executionBundle: normalizeCloudlyLegacyDeploymentSettlementScratchExecutionBundle(value.executionBundle),
3118
+ };
3119
+ }
3120
+ if (commandArg === 'settlement-production-apply') {
3121
+ assertExactKeys(value, ['executionBundle'], path);
3122
+ return {
3123
+ executionBundle: normalizeCloudlyLegacyDeploymentSettlementProductionExecutionBundleV2(value.executionBundle),
3124
+ };
3125
+ }
3126
+ if (commandArg === 'settlement-production-authorize') {
3127
+ assertExactKeys(value, ['productionAuthorization'], path);
3128
+ return {
3129
+ productionAuthorization: normalizeCloudlyLegacyDeploymentSettlementProductionExecutionAuthorization(value.productionAuthorization),
3130
+ };
3131
+ }
3132
+ assertExactKeys(value, ['authenticatedResolution'], path);
3133
+ return {
3134
+ authenticatedResolution: normalizeCloudlyLegacyDeploymentSettlementAuthenticatedResolutionStructure(value.authenticatedResolution),
3135
+ };
3136
+ };
3137
+ const createCloudlyLegacyDeploymentSettlementStdioSafeError = (codeArg) => ({
3138
+ code: codeArg,
3139
+ retryable: cloudlyLegacyDeploymentSettlementStdioErrorMetadata[codeArg].retryable,
3140
+ });
3141
+ /** Structural only; use the request-authority-aware variant before trusting artifacts. */
3142
+ export const normalizeCloudlyLegacyDeploymentSettlementStdioResponse = (valueArg) => {
3143
+ const value = readRecord(valueArg, 'stdioResponse');
3144
+ if (typeof value.ok !== 'boolean')
3145
+ fail('INVALID_VALUE', 'stdioResponse.ok');
3146
+ assertExactKeys(value, value.ok ? stdioResponseSuccessKeys : stdioResponseErrorKeys, 'stdioResponse');
3147
+ if (value.schemaVersion !== 1
3148
+ || value.kind !== 'cloudly-legacy-deployment-settlement-stdio-response') {
3149
+ fail('INVALID_VALUE', 'stdioResponse.kind');
3150
+ }
3151
+ if (value.ok) {
3152
+ assertStdioArtifactAggregate(value.payload, 'stdioResponse.payload');
3153
+ }
3154
+ const requestId = readIdentifier(value.requestId, 'stdioResponse.requestId');
3155
+ const command = readLiteral(value.command, cloudlyLegacyDeploymentSettlementStdioCommands, 'stdioResponse.command');
3156
+ if (value.ok) {
3157
+ const payload = normalizeStdioSuccessPayload(command, value.payload);
3158
+ assertStdioArtifactAggregate(payload, 'stdioResponse.payload');
3159
+ return finalize({
3160
+ schemaVersion: 1,
3161
+ kind: 'cloudly-legacy-deployment-settlement-stdio-response',
3162
+ requestId,
3163
+ command,
3164
+ ok: true,
3165
+ payload,
3166
+ }, cloudlyLegacyDeploymentSettlementStdioLimits.maximumResponseFrameBytes - 1, 'stdioResponse');
3167
+ }
3168
+ const error = readRecord(value.error, 'stdioResponse.error');
3169
+ assertExactKeys(error, ['code', 'retryable'], 'stdioResponse.error');
3170
+ if (typeof error.code !== 'string'
3171
+ || !Object.hasOwn(cloudlyLegacyDeploymentSettlementStdioErrorMetadata, error.code)) {
3172
+ fail('INVALID_VALUE', 'stdioResponse.error.code');
3173
+ }
3174
+ const code = error.code;
3175
+ if (error.retryable !== cloudlyLegacyDeploymentSettlementStdioErrorMetadata[code].retryable) {
3176
+ fail('CROSS_FIELD_MISMATCH', 'stdioResponse.error.retryable');
3177
+ }
3178
+ return finalize({
3179
+ schemaVersion: 1,
3180
+ kind: 'cloudly-legacy-deployment-settlement-stdio-response',
3181
+ requestId,
3182
+ command,
3183
+ ok: false,
3184
+ error: createCloudlyLegacyDeploymentSettlementStdioSafeError(code),
3185
+ }, cloudlyLegacyDeploymentSettlementStdioLimits.maximumResponseFrameBytes - 1, 'stdioResponse');
3186
+ };
3187
+ export const normalizeCloudlyLegacyDeploymentSettlementStdioResponseForRequestAuthorities = async (responseArg, requestArg) => {
3188
+ const request = await normalizeCloudlyLegacyDeploymentSettlementStdioRequestForAuthorities(requestArg);
3189
+ const verifier = createCloudlyLegacyDeploymentSettlementStdioRequestHmacVerifier(request);
3190
+ const response = normalizeCloudlyLegacyDeploymentSettlementStdioResponse(responseArg);
3191
+ if (response.requestId !== request.requestId || response.command !== request.command) {
3192
+ fail('CROSS_FIELD_MISMATCH', 'stdioResponse.request');
3193
+ }
3194
+ if (!response.ok) {
3195
+ return response;
3196
+ }
3197
+ if (request.command === 'settlement-plan') {
3198
+ const success = response;
3199
+ const plan = await normalizeAuthenticatedCloudlyLegacyDeploymentSettlementPlanForAuthority(success.payload.authenticatedPlan, request.payload.authorityHandoff.authorityMetadata, verifier);
3200
+ if (plan.payload.effectiveAt !== request.payload.effectiveAt) {
3201
+ fail('CROSS_FIELD_MISMATCH', 'stdioResponse.payload.authenticatedPlan.effectiveAt');
3202
+ }
3203
+ return response;
3204
+ }
3205
+ if (request.command === 'settlement-request') {
3206
+ const success = response;
3207
+ const requestBundle = await normalizeCloudlyLegacyDeploymentSettlementRequestBundleForAuthority(success.payload.requestBundle, request.payload.authenticatedPlan, request.payload.authorityHandoff.authorityMetadata, verifier);
3208
+ if (requestBundle.authenticatedRequest.payload.requestedAt
3209
+ !== request.payload.requestedAt) {
3210
+ fail('CROSS_FIELD_MISMATCH', 'stdioResponse.payload.requestBundle.requestedAt');
3211
+ }
3212
+ return response;
3213
+ }
3214
+ if (request.command === 'settlement-scratch-check') {
3215
+ const success = response;
3216
+ await normalizeAuthenticatedCloudlyLegacyDeploymentSettlementCheckResultForAuthority(success.payload.authenticatedResult, request.payload.authorityHandoff.authorityMetadata, request.payload.requestBundle.authenticatedRequest, verifier);
3217
+ return response;
3218
+ }
3219
+ if (request.command === 'settlement-scratch-apply') {
3220
+ const success = response;
3221
+ await normalizeCloudlyLegacyDeploymentSettlementScratchExecutionBundleForAuthority(success.payload.executionBundle, request.payload.authorityHandoff.authorityMetadata, request.payload.authenticatedPlan, request.payload.requestBundle, verifier);
3222
+ return response;
3223
+ }
3224
+ if (request.command === 'settlement-scratch-resolve') {
3225
+ const success = response;
3226
+ const resolution = await normalizeAuthenticatedCloudlyLegacyDeploymentSettlementResolutionForAuthorities(success.payload.authenticatedResolution, request.payload.authorityHandoff.authorityMetadata, request.payload.authorityHandoff.authorityMetadata, request.payload.authenticatedPlan, request.payload.requestBundle, null, null, verifier);
3227
+ if (resolution.payload.observedAt !== request.payload.observedAt) {
3228
+ fail('CROSS_FIELD_MISMATCH', 'stdioResponse.payload.authenticatedResolution.observedAt');
3229
+ }
3230
+ return response;
3231
+ }
3232
+ if (request.command === 'settlement-production-authorize') {
3233
+ const success = response;
3234
+ const authorization = await normalizeCloudlyLegacyDeploymentSettlementProductionExecutionAuthorizationForAuthorities(success.payload.productionAuthorization, request.payload.productionAuthorityHandoff.authorityMetadata, request.payload.sourceAuthorityHandoff.authorityMetadata, request.payload.authenticatedPlan, request.payload.requestBundle, request.payload.scratchReceipt, verifier);
3235
+ if (authorization.requestedAt !== request.payload.requestedAt
3236
+ || authorization.approvedAt !== request.payload.approvedAt) {
3237
+ fail('CROSS_FIELD_MISMATCH', 'stdioResponse.payload.productionAuthorization.timestamp');
3238
+ }
3239
+ return response;
3240
+ }
3241
+ if (request.command === 'settlement-production-check') {
3242
+ const success = response;
3243
+ await normalizeAuthenticatedCheckResultForExecutionAuthority(success.payload.authenticatedResult, request.payload.productionAuthorityHandoff.authorityMetadata, request.payload.requestBundle.authenticatedRequest, request.payload.productionAuthorization, verifier);
3244
+ return response;
3245
+ }
3246
+ if (request.command === 'settlement-production-apply') {
3247
+ const success = response;
3248
+ await normalizeCloudlyLegacyDeploymentSettlementProductionExecutionBundleV2ForAuthorities(success.payload.executionBundle, request.payload.productionAuthorization, request.payload.productionAuthorityHandoff.authorityMetadata, request.payload.sourceAuthorityHandoff.authorityMetadata, request.payload.authenticatedPlan, request.payload.requestBundle, request.payload.scratchReceipt, verifier);
3249
+ return response;
3250
+ }
3251
+ const success = response;
3252
+ const resolution = await normalizeAuthenticatedCloudlyLegacyDeploymentSettlementResolutionForAuthorities(success.payload.authenticatedResolution, request.payload.sourceAuthorityHandoff.authorityMetadata, request.payload.productionAuthorityHandoff.authorityMetadata, request.payload.authenticatedPlan, request.payload.requestBundle, request.payload.scratchReceipt, request.payload.productionAuthorization, verifier);
3253
+ if (resolution.payload.observedAt !== request.payload.observedAt) {
3254
+ fail('CROSS_FIELD_MISMATCH', 'stdioResponse.payload.authenticatedResolution.observedAt');
3255
+ }
3256
+ return response;
3257
+ };
3258
+ const encodeStdioFrame = (valueArg, maximumBytesArg, pathArg) => {
3259
+ const payload = encodeNormalized(valueArg, pathArg);
3260
+ try {
3261
+ if (payload.byteLength + 1 > maximumBytesArg)
3262
+ fail('LIMIT_EXCEEDED', pathArg);
3263
+ const output = new Uint8Array(payload.byteLength + 1);
3264
+ output.set(payload);
3265
+ output[payload.byteLength] = 0x0a;
3266
+ return output;
3267
+ }
3268
+ finally {
3269
+ payload.fill(0);
3270
+ }
3271
+ };
3272
+ export const encodeCloudlyLegacyDeploymentSettlementStdioRequestFrame = (valueArg) => encodeStdioFrame(normalizeCloudlyLegacyDeploymentSettlementStdioRequest(valueArg), cloudlyLegacyDeploymentSettlementStdioLimits.maximumRequestFrameBytes, 'stdioRequest');
3273
+ export const encodeCloudlyLegacyDeploymentSettlementStdioResponseFrame = (valueArg) => encodeStdioFrame(normalizeCloudlyLegacyDeploymentSettlementStdioResponse(valueArg), cloudlyLegacyDeploymentSettlementStdioLimits.maximumResponseFrameBytes, 'stdioResponse');
3274
+ const decodeStdioFrame = (frameArg, maximumBytesArg, pathArg, normalizeArg, encodeArg) => {
3275
+ if (!(frameArg instanceof Uint8Array)
3276
+ || frameArg.byteLength < 3
3277
+ || frameArg.byteLength > maximumBytesArg
3278
+ || frameArg.at(-1) !== 0x0a
3279
+ || frameArg.subarray(0, -1).some((byteArg) => byteArg === 0x0a || byteArg === 0x0d)) {
3280
+ fail('INVALID_DATA', pathArg);
3281
+ }
3282
+ const payloadBytes = new Uint8Array(frameArg.subarray(0, -1));
3283
+ let canonicalFrame;
3284
+ try {
3285
+ let text;
3286
+ try {
3287
+ text = new TextDecoder('utf-8', { fatal: true }).decode(payloadBytes);
3288
+ }
3289
+ catch {
3290
+ return fail('INVALID_DATA', pathArg);
3291
+ }
3292
+ let value;
3293
+ try {
3294
+ value = JSON.parse(text);
3295
+ }
3296
+ catch {
3297
+ return fail('INVALID_DATA', pathArg);
3298
+ }
3299
+ const normalized = normalizeArg(value);
3300
+ canonicalFrame = encodeArg(normalized);
3301
+ if (canonicalFrame.byteLength !== frameArg.byteLength
3302
+ || canonicalFrame.some((byteArg, indexArg) => byteArg !== frameArg[indexArg])) {
3303
+ fail('INVALID_DATA', pathArg);
3304
+ }
3305
+ return normalized;
3306
+ }
3307
+ finally {
3308
+ payloadBytes.fill(0);
3309
+ canonicalFrame?.fill(0);
3310
+ }
3311
+ };
3312
+ export const decodeCloudlyLegacyDeploymentSettlementStdioRequestFrame = (frameArg) => decodeStdioFrame(frameArg, cloudlyLegacyDeploymentSettlementStdioLimits.maximumRequestFrameBytes, 'stdioRequestFrame', normalizeCloudlyLegacyDeploymentSettlementStdioRequest, encodeCloudlyLegacyDeploymentSettlementStdioRequestFrame);
3313
+ export const decodeCloudlyLegacyDeploymentSettlementStdioResponseFrame = (frameArg) => decodeStdioFrame(frameArg, cloudlyLegacyDeploymentSettlementStdioLimits.maximumResponseFrameBytes, 'stdioResponseFrame', normalizeCloudlyLegacyDeploymentSettlementStdioResponse, encodeCloudlyLegacyDeploymentSettlementStdioResponseFrame);
1378
3314
  export { cloudlyLegacyDeploymentSettlementGoldenVectors } from './runtime.cloudlylegacydeploymentsettlement.golden.js';
1379
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5jbG91ZGx5bGVnYWN5ZGVwbG95bWVudHNldHRsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9ydW50aW1lLmNsb3VkbHlsZWdhY3lkZXBsb3ltZW50c2V0dGxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsZUFBZSxHQUNoQixNQUFNLDRCQUE0QixDQUFDO0FBRXBDLE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDbkUsdUJBQXVCLEVBQUUsR0FBRztJQUM1QixzQkFBc0IsRUFBRSxJQUFJO0lBQzVCLGlCQUFpQixFQUFFLEdBQUc7SUFDdEIsZ0JBQWdCLEVBQUUsR0FBRyxHQUFHLElBQUk7SUFDNUIsc0JBQXNCLEVBQUUsRUFBRSxHQUFHLElBQUk7SUFDakMsbUJBQW1CLEVBQUUsR0FBRyxHQUFHLElBQUk7SUFDL0IscUJBQXFCLEVBQUUsRUFBRSxHQUFHLElBQUk7SUFDaEMsaUNBQWlDLEVBQUUsR0FBRyxHQUFHLElBQUk7SUFDN0MsMEJBQTBCLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSTtJQUMvQyxxQkFBcUIsRUFBRSxFQUFFO0NBQzFCLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHdDQUF3QyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDcEUsWUFBWSxFQUNWLG9FQUFvRTtJQUN0RSxvQkFBb0IsRUFDbEIsNkVBQTZFO0lBQy9FLFFBQVEsRUFDTixnRUFBZ0U7SUFDbEUscUJBQXFCLEVBQ25CLDhFQUE4RTtJQUNoRixlQUFlLEVBQ2Isd0VBQXdFO0lBQzFFLGVBQWUsRUFDYix3RUFBd0U7SUFDMUUsaUJBQWlCLEVBQ2YsMEVBQTBFO0lBQzVFLGtCQUFrQixFQUNoQiwyRUFBMkU7SUFDN0UscUJB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
3315
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5jbG91ZGx5bGVnYWN5ZGVwbG95bWVudHNldHRsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9ydW50aW1lLmNsb3VkbHlsZWdhY3lkZXBsb3ltZW50c2V0dGxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsZUFBZSxHQUNoQixNQUFNLDRCQUE0QixDQUFDO0FBRXBDLE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDbkUsdUJBQXVCLEVBQUUsR0FBRztJQUM1QixzQkFBc0IsRUFBRSxJQUFJO0lBQzVCLGlCQUFpQixFQUFFLEdBQUc7SUFDdEIsZ0JBQWdCLEVBQUUsR0FBRyxHQUFHLElBQUk7SUFDNUIsc0JBQXNCLEVBQUUsRUFBRSxHQUFHLElBQUk7SUFDakMsbUJBQW1CLEVBQUUsR0FBRyxHQUFHLElBQUk7SUFDL0IscUJBQXFCLEVBQUUsRUFBRSxHQUFHLElBQUk7SUFDaEMsaUNBQWlDLEVBQUUsR0FBRyxHQUFHLElBQUk7SUFDN0MsMEJBQTBCLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSTtJQUMvQyxxQkFBcUIsRUFBRSxFQUFFO0NBQzFCLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHdDQUF3QyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDcEUsWUFBWSxFQUNWLG9FQUFvRTtJQUN0RSxvQkFBb0IsRUFDbEIsNkVBQTZFO0lBQy9FLFFBQVEsRUFDTixnRUFBZ0U7SUFDbEUscUJBQXFCLEVBQ25CLDhFQUE4RTtJQUNoRixlQUFlLEVBQ2Isd0VBQXdFO0lBQzFFLGVBQWUsRUFDYix3RUFBd0U7SUFDMUUsaUJBQWlCLEVBQ2YsMEVBQTBFO0lBQzVFLGtCQUFrQixFQUNoQiwyRUFBMkU7SUFDN0UscUJB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