@seams/wallet-server 0.10.1 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/THIRD_PARTY_NOTICES.md +33 -1812
  2. package/artifact-manifest.json +30 -30
  3. package/cloudflare-router-ab/build/deriver-a/build-stamp.json +1 -1
  4. package/cloudflare-router-ab/build/deriver-a/index.js +2 -2
  5. package/cloudflare-router-ab/build/deriver-a/index_bg.wasm +0 -0
  6. package/cloudflare-router-ab/build/deriver-b/build-stamp.json +1 -1
  7. package/cloudflare-router-ab/build/deriver-b/index.js +2 -2
  8. package/cloudflare-router-ab/build/deriver-b/index_bg.wasm +0 -0
  9. package/cloudflare-router-ab/build/local-tools/darwin-arm64/router_ab_local_init +0 -0
  10. package/cloudflare-router-ab/build/local-tools/darwin-x64/router_ab_local_init +0 -0
  11. package/cloudflare-router-ab/build/local-tools/linux-x64/router_ab_local_init +0 -0
  12. package/cloudflare-router-ab/build/router/build-stamp.json +1 -1
  13. package/cloudflare-router-ab/build/router/index.js +2 -2
  14. package/cloudflare-router-ab/build/router/index_bg.wasm +0 -0
  15. package/cloudflare-router-ab/build/signing-worker/build-stamp.json +1 -1
  16. package/cloudflare-router-ab/build/signing-worker/index.js +2 -2
  17. package/cloudflare-router-ab/build/signing-worker/index_bg.wasm +0 -0
  18. package/cloudflare-router-ab/build/tenant-root-control-plane/build-stamp.json +1 -1
  19. package/cloudflare-router-ab/build/tenant-root-control-plane/index.js +2 -2
  20. package/cloudflare-router-ab/build/tenant-root-control-plane/index_bg.wasm +0 -0
  21. package/dist/esm/cloud-host.js +8 -7
  22. package/dist/esm/hosted-wallet-gateway.js +19 -2
  23. package/dist/esm/index.js +1 -2
  24. package/dist/esm/localHostedWalletGatewayHandler.js +17 -11
  25. package/dist/esm/localIntendedYaoFault.js +34 -3
  26. package/dist/esm/localIntendedYaoRecoveryFault.js +19 -16
  27. package/dist/esm/localIntendedYaoSigningFault.js +31 -16
  28. package/dist/esm/router/auth/routerApiKeyAuth.js +1 -13
  29. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +13 -4
  30. package/dist/esm/router/cloudflare/d1/deviceLinking/d1LinkedDeviceOwnerAuthorizationProvider.js +1 -1
  31. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.js +4 -4
  32. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecords.js +1 -1
  33. package/dist/esm/router/cloudflare/d1/emailOtp/d1EmailOtpRecoveryService.js +1 -1
  34. package/dist/esm/router/cloudflare/d1/emailOtp/d1GoogleEmailOtpSessionResolver.js +1 -1
  35. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.js +19 -0
  36. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyRecords.js +5 -5
  37. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.js +5 -2
  38. package/dist/esm/router/cloudflare/d1/registration/d1RegistrationSetupSupport.js +7 -1
  39. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +56 -21
  40. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationRead.js +15 -5
  41. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +87 -34
  42. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.js +23 -7
  43. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.js +1 -1
  44. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerService.js +3 -3
  45. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAuthMethodService.js +3 -3
  46. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnAuthService.js +1 -1
  47. package/dist/esm/router/cloudflare/d1/webauthn/d1WebAuthnRecords.js +1 -1
  48. package/dist/esm/router/cloudflare-adaptor.js +2 -2
  49. package/dist/esm/router/cloudflare.js +2495 -2444
  50. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js +1 -1
  51. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js +5 -1
  52. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRuntime.js +15 -3
  53. package/dist/esm/router/domains/walletRegistration/walletRegistrationRoutes.js +39 -32
  54. package/dist/esm/router/framework/registrationSetupDispatch.js +11 -3
  55. package/dist/esm/router/framework/routeResponses.js +1 -5
  56. package/dist/esm/router/transport/fetch/routes/deviceLinkingOwnerAuthorization.js +1 -1
  57. package/dist/esm/router/transport/fetch/routes/passkeyCustody.js +2 -2
  58. package/dist/esm/router/transport/fetch/routes/thresholdEd25519.js +51 -24
  59. package/dist/esm/shared-ts/src/utils/validation.js +5 -1
  60. package/dist/esm/threshold/session/signingSessionSeal/crypto/shamir3PassWasm.js +19 -1
  61. package/dist/esm/threshold/session/signingSessionSeal/index.js +1 -2
  62. package/dist/esm/wasm/evm_crypto/pkg/evm_crypto_bg.wasm +0 -0
  63. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
  64. package/dist/esm/wasm/shamir3pass_runtime/pkg/shamir3pass_runtime_bg.wasm +0 -0
  65. package/dist/types/wallet-server/src/cloud-host.d.ts +1 -0
  66. package/dist/types/wallet-server/src/localHostedWalletGatewayHandler.d.ts +1 -1
  67. package/dist/types/wallet-server/src/localIntendedYaoFault.d.ts +13 -3
  68. package/dist/types/wallet-server/src/localIntendedYaoRecoveryFault.d.ts +4 -2
  69. package/dist/types/wallet-server/src/localIntendedYaoSigningFault.d.ts +4 -2
  70. package/dist/types/wallet-server/src/router/auth/routerApiKeyAuth.d.ts +0 -8
  71. package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.d.ts +2 -1
  72. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyRecordStore.d.ts +2 -0
  73. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationCeremonyStore.d.ts +1 -0
  74. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1RegistrationSetupSupport.d.ts +2 -0
  75. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.d.ts +27 -3
  76. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationRead.d.ts +20 -1
  77. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationService.d.ts +6 -0
  78. package/dist/types/wallet-server/src/router/cloudflare-adaptor.d.ts +1 -1
  79. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.d.ts +10 -1
  80. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.d.ts +3 -1
  81. package/dist/types/wallet-server/src/router/domains/walletRegistration/walletRegistrationInputs.d.ts +2 -0
  82. package/dist/types/wallet-server/src/router/framework/routeResponses.d.ts +0 -2
  83. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/crypto/shamir3PassWasm.d.ts +6 -0
  84. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/index.d.ts +1 -2
  85. package/package.json +2 -9
  86. package/src/README.md +5 -3
  87. package/dist/esm/router/express-adaptor.js +0 -84
  88. package/dist/esm/router/express.js +0 -26400
  89. package/dist/esm/router/node/nodeHostedWalletGateway.js +0 -64
  90. package/dist/esm/router/node/nodeHostedWalletGatewayCheck.js +0 -163
  91. package/dist/esm/router/node/nodeHostedWalletGatewayMain.js +0 -120
  92. package/dist/esm/router/node/nodeHttp.js +0 -79
  93. package/dist/esm/router/node/nodeSqlite.js +0 -43
  94. package/dist/esm/router/node/signerSqlMigrations.js +0 -48
  95. package/dist/esm/storage/syncSqlite.js +0 -79
  96. package/dist/esm/threshold/session/signingSessionSeal/transport/express.js +0 -75
  97. package/dist/types/wallet-server/src/router/express-adaptor.d.ts +0 -22
  98. package/dist/types/wallet-server/src/router/node/nodeHostedWalletGateway.d.ts +0 -34
  99. package/dist/types/wallet-server/src/router/node/nodeHostedWalletGatewayCheck.d.ts +0 -21
  100. package/dist/types/wallet-server/src/router/node/nodeHostedWalletGatewayMain.d.ts +0 -2
  101. package/dist/types/wallet-server/src/router/node/nodeHttp.d.ts +0 -13
  102. package/dist/types/wallet-server/src/router/node/nodeSqlite.d.ts +0 -22
  103. package/dist/types/wallet-server/src/router/node/signerSqlMigrations.d.ts +0 -20
  104. package/dist/types/wallet-server/src/storage/syncSqlite.d.ts +0 -28
  105. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/transport/express.d.ts +0 -12
@@ -20,33 +20,34 @@ import { buildActiveWalletAuthorityV1, buildWalletSignerActivationSetV1, compute
20
20
  import { ROUTER_AB_ED25519_NORMAL_SIGNING_STATE_KIND } from "../../../../shared-ts/src/utils/signingSessionSeal.js";
21
21
  import { normalizeThresholdEd25519ParticipantIds } from "../../../../shared-ts/src/threshold/participants.js";
22
22
  import { nearEd25519SigningKeyIdFromString, registrationEd25519AuthorityScopeFromAuthority, walletIdFromString } from "../../../../shared-ts/src/utils/registrationIds.js";
23
- import { walletCustodyCeremonyCommitPayloadFromWire } from "../../../../shared-ts/src/passkey-custody/ceremonyCommitPayload.js";
24
- import "../../../../shared-ts/src/passkey-custody/index.js";
23
+ import { admitRegistrationReservationHome, cancelRegistrationHome } from "../../../domains/walletRegistration/walletRegistrationReservation.js";
25
24
  import { parseImplicitNearAccountId, parseNamedNearAccountId } from "../../../../shared-ts/src/utils/near.js";
26
25
  import { registrationNearEd25519BranchKey } from "../../../../shared-ts/src/utils/registrationSignerPlan.js";
26
+ import { buildStoredWalletRegistrationEvmFamilyEcdsaFinalizedBranch, buildStoredWalletRegistrationNearEd25519YaoAuthorizedBranch, findStoredWalletRegistrationEvmFamilyEcdsaBranch, findStoredWalletRegistrationNearEd25519YaoBranch, replaceStoredWalletRegistrationSignerBranch, storedRegistrationAuthoritiesMatch, verifiedRegistrationCeremonyAuthority } from "../../../../core/RegistrationCeremonyStore.js";
27
27
  import { registrationIntentGrantFromString } from "../../../../shared-ts/src/utils/registrationIntent.js";
28
+ import { walletCustodyCeremonyCommitPayloadFromWire } from "../../../../shared-ts/src/passkey-custody/ceremonyCommitPayload.js";
29
+ import "../../../../shared-ts/src/passkey-custody/index.js";
30
+ import { parseEcdsaDerivationPublicIdentity, thresholdEd25519AuthorityScopeFromWalletAuthAuthority } from "../../../../core/ThresholdService/validation.js";
28
31
  import { createRouterAbTraceContextV1 } from "../../../../shared-ts/src/utils/routerAbTraceContext.js";
32
+ import { routerAbEcdsaStrictRegistrationRequestBindingJson } from "../../../domains/ecdsa/routerAbEcdsaStrictRegistration.js";
33
+ import { buildD1EcdsaWalletKeysFromBootstrap, buildD1WalletEcdsaSignerRecords, buildD1WalletRecord, parseWalletIdForIntent, thresholdEcdsaChainTargetsEqual } from "./d1RegistrationCeremonyRecords.js";
34
+ import { createD1RegistrationRouteTimingRecorder, errorMessage, finishD1RegistrationRouteTiming, recordRegistrationPromiseTiming, recordRegistrationServerTiming, registrationSignerBranchesFromPlan, startD1RegistrationRouteTiming } from "./d1RegistrationSetupSupport.js";
29
35
  import { buildTenantRootIdentityFromAuthenticatedDeploymentV1 } from "../../../../shared-ts/src/tenant-root/tenantRootIdentity.js";
30
36
  import { DEFAULT_WALLET_SESSION_TTL_MS } from "../../../../shared-ts/src/threshold/sessionPolicy.js";
31
- import { parseEcdsaDerivationPublicIdentity, thresholdEd25519AuthorityScopeFromWalletAuthAuthority } from "../../../../core/ThresholdService/validation.js";
32
37
  import { walletAuthAuthorityFromRegistrationAuthority, walletRegistrationFinalizeAuthMethodFromAuthority } from "../wallet/d1WalletAuthMethodBoundary.js";
33
38
  import { buildRouterAbEd25519YaoRegistrationCapabilityRecordV1 } from "../../../domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.js";
34
39
  import { buildRouterAbEd25519YaoProductAdmissionRequestV1, projectRouterAbEd25519YaoExactWalletSession } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js";
35
40
  import { routerAbEd25519YaoRegistrationExecutionTimingEntriesV1 } from "../../../domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationRequestScopedCloudflare.js";
36
41
  import { runRouterAbEd25519YaoRegistrationSideEffectV2, throwIfRouterAbEd25519YaoRetryableSideEffectFailureV1 } from "../../../domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js";
37
42
  import { buildYaoEd25519WalletSignerRecord, ed25519NearPublicKeyFromBytes, implicitNearAccountIdFromEd25519PublicKeyBytes } from "../ed25519Yao/d1Ed25519YaoWalletSigner.js";
38
- import { buildStoredWalletRegistrationEvmFamilyEcdsaFinalizedBranch, buildStoredWalletRegistrationNearEd25519YaoAuthorizedBranch, findStoredWalletRegistrationEvmFamilyEcdsaBranch, findStoredWalletRegistrationNearEd25519YaoBranch, replaceStoredWalletRegistrationSignerBranch, storedRegistrationAuthoritiesMatch, verifiedRegistrationCeremonyAuthority } from "../../../../core/RegistrationCeremonyStore.js";
39
- import { routerAbEcdsaStrictRegistrationRequestBindingJson } from "../../../domains/ecdsa/routerAbEcdsaStrictRegistration.js";
40
- import { buildD1EcdsaWalletKeysFromBootstrap, buildD1WalletEcdsaSignerRecords, buildD1WalletRecord, parseWalletIdForIntent, thresholdEcdsaChainTargetsEqual } from "./d1RegistrationCeremonyRecords.js";
41
43
  import { deriveThresholdEcdsaKeyHandle } from "../../../../shared-ts/src/utils/thresholdEcdsaKeyHandle.js";
42
- import { admitRegistrationReservationHome, cancelRegistrationHome } from "../../../domains/walletRegistration/walletRegistrationReservation.js";
44
+ import { isTransientD1Error, retryTransientD1 } from "../../../../storage/d1Retry.js";
43
45
  import { listThresholdEcdsaKeyIdentityTargetsForUser } from "../../../../core/authService/thresholdEcdsaKeyInventory.js";
44
46
  import { routerAbEd25519YaoLifecycleDecisionLookupV1, routerAbEd25519YaoLifecycleDecisionV1 } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoLifecycleDecision.js";
45
47
  import { reserveRegistrationCustody } from "../../../domains/passkeyCustody/registrationCustodyOutcome.js";
46
48
  import { resolveTenantRootIdentityV1 } from "../../../domains/tenantRoot/tenantRootIdentityResolution.js";
47
49
  import { walletRegistrationOperationPreparedFromCeremony } from "./d1WalletRegistrationPreparation.js";
48
50
  import { computeWalletRegistrationSetupDigestB64u, parseWalletRegistrationSetupClaims, verifySignedWalletRegistrationSetup, verifyWalletRegistrationSetupClaims } from "../../../domains/walletRegistration/walletRegistrationSetupPayload.js";
49
- import { createD1RegistrationRouteTimingRecorder, errorMessage, finishD1RegistrationRouteTiming, recordRegistrationPromiseTiming, recordRegistrationServerTiming, registrationSignerBranchesFromPlan, startD1RegistrationRouteTiming } from "./d1RegistrationSetupSupport.js";
50
51
  import { projectWalletRegistrationSessionCommitReceiptV2, registrationCommitActivation, registrationReplayAuthMethodFields, replayedRegistrationCommit, unissuedRegistrationCommit } from "./walletRegistrationSessionCommitReceipt.js";
51
52
  import { assertDirectWalletSessionOwnerProof, buildRegistrationOwnerProof, issueDirectRegistrationEstablishedEcdsaSession, issueDirectRegistrationEstablishedEd25519Session, projectCurrentNearRegistrationSession, replayDirectRegistrationEstablishedEcdsaSession, replayDirectRegistrationEstablishedEd25519Session, walletSessionPrincipalId } from "./walletRegistrationEstablishedSessionIssuer.js";
52
53
  import { commitWalletRegistration } from "./d1WalletRegistrationInitialSession.js";
@@ -1646,7 +1647,24 @@ var CloudflareD1WalletRegistrationService = class {
1646
1647
  };
1647
1648
  }
1648
1649
  }
1650
+ /**
1651
+ * Respond replays exactly, so a transient D1 fault runs it again, as a client
1652
+ * retry would. A fault that outlasts the retries reports `storage_unavailable`
1653
+ * without the driver's text.
1654
+ */
1649
1655
  async respondWalletRegistration(input, traceContext, timingSink, waitUntil) {
1656
+ try {
1657
+ return await retryTransientD1(() => this.respondWalletRegistrationAttempt(input, traceContext, timingSink, waitUntil));
1658
+ } catch (error) {
1659
+ if (!isTransientD1Error(error)) throw error;
1660
+ return {
1661
+ ok: false,
1662
+ code: "storage_unavailable",
1663
+ message: "Wallet registration storage is unavailable"
1664
+ };
1665
+ }
1666
+ }
1667
+ async respondWalletRegistrationAttempt(input, traceContext, timingSink, waitUntil) {
1650
1668
  const serverTiming = timingSink ?? [];
1651
1669
  const totalStartedAtMs = Date.now();
1652
1670
  const mark = (name, startedAtMs) => {
@@ -1948,6 +1966,7 @@ var CloudflareD1WalletRegistrationService = class {
1948
1966
  ed25519: ed25519Admission.deferred
1949
1967
  });
1950
1968
  } catch (error) {
1969
+ if (isTransientD1Error(error)) throw error;
1951
1970
  return {
1952
1971
  ok: false,
1953
1972
  code: "internal",
@@ -2132,7 +2151,10 @@ var CloudflareD1WalletRegistrationService = class {
2132
2151
  ed25519: args.input.ed25519,
2133
2152
  emailOtpEnrollment: args.input.emailOtpEnrollment,
2134
2153
  walletCustodyCommit: args.input.walletCustodyCommit
2135
- }, effectivePrepared, source, args.serverTiming, initialSessionPlan, args.lifecycleDecision, args.heldPasskeyClaim);
2154
+ }, effectivePrepared, source, args.serverTiming, initialSessionPlan, args.lifecycleDecision, args.heldPasskeyClaim, {
2155
+ kind: "snapshot",
2156
+ authority: args.readYaoAdmission()
2157
+ }, args.readFounding());
2136
2158
  if (!execution.ok) return unissuedRegistrationCommit(throwIfRouterAbEd25519YaoRetryableSideEffectFailureV1(execution));
2137
2159
  const finalized = execution.finalized;
2138
2160
  if (finalized.kind !== "near_ed25519") {
@@ -2335,22 +2357,29 @@ var CloudflareD1WalletRegistrationService = class {
2335
2357
  };
2336
2358
  const admissionStartedAtMs = Date.now();
2337
2359
  const operationKey = `near-provisioning:${input.registrationCeremonyId}:${input.idempotencyKey}`;
2338
- const initial = await this.registrationRead.readFinalization({
2339
- ceremonyId: verified.claims.registrationCeremonyId,
2340
- walletId: walletIdFromString(verified.claims.walletId)
2341
- }, operationKey);
2342
- recordRegistrationServerTiming(serverTiming, "near_finalize_initial_read", admissionStartedAtMs);
2360
+ const [initial, requestFingerprintBytes] = await Promise.all([recordRegistrationPromiseTiming({
2361
+ sink: serverTiming,
2362
+ name: "near_finalize_initial_read",
2363
+ startedAtMs: admissionStartedAtMs,
2364
+ promise: this.registrationRead.readFinalization({
2365
+ ceremonyId: verified.claims.registrationCeremonyId,
2366
+ walletId: walletIdFromString(verified.claims.walletId)
2367
+ }, operationKey)
2368
+ }), recordRegistrationPromiseTiming({
2369
+ sink: serverTiming,
2370
+ name: "near_finalize_fingerprint",
2371
+ startedAtMs: Date.now(),
2372
+ promise: sha256BytesUtf8(alphabetizeStringify({
2373
+ version: "wallet_registration_near_provisioning_digest_v1",
2374
+ registrationCeremonyId: input.registrationCeremonyId,
2375
+ setupDigestB64u: verified.claims.setupDigestB64u,
2376
+ idempotencyKey: input.idempotencyKey,
2377
+ ed25519: input.ed25519,
2378
+ emailOtpEnrollment: input.emailOtpEnrollment
2379
+ }))
2380
+ })]);
2343
2381
  if (!initial.ok) return initial;
2344
- const fingerprintStartedAtMs = Date.now();
2345
- const requestFingerprint = base64UrlEncode(await sha256BytesUtf8(alphabetizeStringify({
2346
- version: "wallet_registration_near_provisioning_digest_v1",
2347
- registrationCeremonyId: input.registrationCeremonyId,
2348
- setupDigestB64u: verified.claims.setupDigestB64u,
2349
- idempotencyKey: input.idempotencyKey,
2350
- ed25519: input.ed25519,
2351
- emailOtpEnrollment: input.emailOtpEnrollment
2352
- })));
2353
- recordRegistrationServerTiming(serverTiming, "near_finalize_fingerprint", fingerprintStartedAtMs);
2382
+ const requestFingerprint = base64UrlEncode(requestFingerprintBytes);
2354
2383
  const sideEffectStartedAtMs = Date.now();
2355
2384
  let preparedCeremony = null;
2356
2385
  const run = await runRouterAbEd25519YaoRegistrationSideEffectV2(this.registrationRead.operations, {
@@ -2380,7 +2409,9 @@ var CloudflareD1WalletRegistrationService = class {
2380
2409
  authoritySource: verified.source,
2381
2410
  preparedCeremony: () => preparedCeremony,
2382
2411
  lifecycleDecision: initial.decision,
2383
- heldPasskeyClaim: initial.heldPasskeyClaim
2412
+ heldPasskeyClaim: initial.heldPasskeyClaim,
2413
+ readYaoAdmission: initial.readYaoAdmission,
2414
+ readFounding: initial.readFounding
2384
2415
  }),
2385
2416
  projectReceipt: (execution) => projectWalletRegistrationSessionCommitReceiptV2({
2386
2417
  operation: "near_provisioning",
@@ -2530,6 +2561,7 @@ var CloudflareD1WalletRegistrationService = class {
2530
2561
  const ceremony = input.ceremony;
2531
2562
  const stored = storedRespondEd25519DeferredWork(ceremony.signerState);
2532
2563
  let authority;
2564
+ const authorityStartedAtMs = Date.now();
2533
2565
  if (stored) {
2534
2566
  const replayAuthority = await this.verifyRespondReplayAuthority({
2535
2567
  ceremony,
@@ -2563,6 +2595,7 @@ var CloudflareD1WalletRegistrationService = class {
2563
2595
  };
2564
2596
  authority = verified.authority;
2565
2597
  }
2598
+ recordRegistrationServerTiming(input.serverTiming, "respond_authority_verify", authorityStartedAtMs);
2566
2599
  if (authority.walletId !== ceremony.intent.walletId) return {
2567
2600
  ok: false,
2568
2601
  code: "scope_mismatch",
@@ -2574,12 +2607,14 @@ var CloudflareD1WalletRegistrationService = class {
2574
2607
  code: "not_configured",
2575
2608
  message: "Ed25519 Yao registration is unavailable"
2576
2609
  };
2610
+ const requestStartedAtMs = Date.now();
2577
2611
  const admissionRequest = stored ? stored.admissionRequest : await buildRespondEd25519AdmissionRequest({
2578
2612
  ceremony,
2579
2613
  branch: input.branch,
2580
2614
  authority,
2581
2615
  signingWorkerId: runtime.signingWorkerId
2582
2616
  });
2617
+ recordRegistrationServerTiming(input.serverTiming, "yao_admission_request", requestStartedAtMs);
2583
2618
  const verifiedAuthority = authority;
2584
2619
  const branchKey = input.branch.branchKey;
2585
2620
  const ceremonyStore = this.getRegistrationCeremonyIntentStore();
@@ -2597,6 +2632,7 @@ var CloudflareD1WalletRegistrationService = class {
2597
2632
  })]
2598
2633
  }
2599
2634
  });
2635
+ const bindStartedAtMs = Date.now();
2600
2636
  const admitted = await runtime.bindAndAdmitVerifiedRegistration({
2601
2637
  kind: "verified_registration_intent",
2602
2638
  ownershipGeneration: input.ownershipGeneration,
@@ -2608,15 +2644,26 @@ var CloudflareD1WalletRegistrationService = class {
2608
2644
  expected: input.snapshot,
2609
2645
  next: authorizedCeremony(bound)
2610
2646
  }), input.startedDispatchRoot, requireRegistrationEd25519YaoMint(ceremony).sessionId);
2647
+ recordRegistrationServerTiming(input.serverTiming, "yao_admission_bind", bindStartedAtMs);
2611
2648
  if (!admitted.ok) return {
2612
2649
  ok: false,
2613
2650
  code: admitted.code,
2614
2651
  message: admitted.message
2615
2652
  };
2616
- if (!stored && admitted.companionWrite === "not_committed") await ceremonyStore.commitEcdsaClaim({
2617
- expected: input.snapshot,
2618
- next: authorizedCeremony(admitted.admissionRequest)
2619
- });
2653
+ if (!stored && admitted.companionWrite === "not_committed") {
2654
+ const next = authorizedCeremony(admitted.admissionRequest);
2655
+ const commitStartedAtMs = Date.now();
2656
+ try {
2657
+ await ceremonyStore.commitEcdsaClaim({
2658
+ expected: input.snapshot,
2659
+ next
2660
+ });
2661
+ } catch (error) {
2662
+ const committed = await ceremonyStore.getCeremony(ceremony.registrationCeremonyId);
2663
+ if (!committed || alphabetizeStringify(committed) !== alphabetizeStringify(next)) throw error;
2664
+ }
2665
+ recordRegistrationServerTiming(input.serverTiming, "respond_ceremony_commit", commitStartedAtMs);
2666
+ }
2620
2667
  if (!stored && input.waitUntil && verifiedAuthority.kind === "passkey") input.waitUntil(this.walletRegistrationCommitStore.claimPasskeyAhead({
2621
2668
  registrationCeremonyId: ceremony.registrationCeremonyId,
2622
2669
  authority: verifiedAuthority,
@@ -2870,7 +2917,7 @@ var CloudflareD1WalletRegistrationService = class {
2870
2917
  }, prepared, {
2871
2918
  kind: "stored_ceremony",
2872
2919
  ceremony: activatedCeremony
2873
- }, [], { kind: "separate" }, null);
2920
+ }, [], { kind: "separate" }, null, null, { kind: "stored" }, null);
2874
2921
  if (!execution.ok) return unissuedRegistrationCommit(throwIfRouterAbEd25519YaoRetryableSideEffectFailureV1(execution));
2875
2922
  const commit = execution.finalized;
2876
2923
  if (commit.kind !== "evm_family_ecdsa") {
@@ -3206,7 +3253,7 @@ var CloudflareD1WalletRegistrationService = class {
3206
3253
  };
3207
3254
  }
3208
3255
  }
3209
- async executeWalletRegistrationFinalize(request, prepared, source, serverTiming, initialSessionPlan, lifecycleDecision, heldPasskeyClaim = null) {
3256
+ async executeWalletRegistrationFinalize(request, prepared, source, serverTiming, initialSessionPlan, lifecycleDecision, heldPasskeyClaim, yaoAdmission, founding) {
3210
3257
  const finalizeTiming = createD1RegistrationRouteTimingRecorder("wallets_register_finalize");
3211
3258
  const totalTiming = startD1RegistrationRouteTiming("registerFinalizeTotalMs");
3212
3259
  let startedCustody = null;
@@ -3440,12 +3487,15 @@ var CloudflareD1WalletRegistrationService = class {
3440
3487
  sessionId: activationReference.session_id
3441
3488
  },
3442
3489
  consumerBinding: requestFingerprint
3443
- })
3490
+ }, yaoAdmission)
3444
3491
  }), recordRegistrationPromiseTiming({
3445
3492
  sink: serverTiming,
3446
3493
  name: "near_finalize_authority_reserve",
3447
3494
  startedAtMs: Date.now(),
3448
- promise: this.walletRegistrationCommitStore.reserveAuthority(ceremonyAuthority, heldPasskeyClaim)
3495
+ promise: this.walletRegistrationCommitStore.reserveAuthority(ceremonyAuthority, heldPasskeyClaim, founding ?? {
3496
+ kind: "read",
3497
+ ids: prepared
3498
+ })
3449
3499
  })]);
3450
3500
  if (activationConsumption.status === "rejected") throw activationConsumption.reason;
3451
3501
  if (authorityReservation.status === "rejected") throw authorityReservation.reason;
@@ -3574,7 +3624,10 @@ var CloudflareD1WalletRegistrationService = class {
3574
3624
  } else {
3575
3625
  custodyReservation = reserveCustody();
3576
3626
  startedCustody = custodyReservation;
3577
- commitWallet = await this.walletRegistrationCommitStore.reserveAuthority(ceremonyAuthority);
3627
+ commitWallet = await this.walletRegistrationCommitStore.reserveAuthority(ceremonyAuthority, null, {
3628
+ kind: "read",
3629
+ ids: prepared
3630
+ });
3578
3631
  }
3579
3632
  if (yaoDecisionFound?.kind === "decided_otherwise") return {
3580
3633
  ok: false,
@@ -1,37 +1,53 @@
1
1
  import { normalizeOptionalTrimmedString } from "../../../../shared-ts/src/utils/normalize.js";
2
2
  import { deriveSigningRootId } from "../../../../shared-ts/src/threshold/signingRootScope.js";
3
3
  import { registrationPreparationIdFromString } from "../../../../core/types.js";
4
- import { buildRouterAbEd25519YaoProductAdmissionRequestV1, mintRouterAbEd25519YaoRegistrationIdentityV1 } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js";
5
4
  import { buildStoredWalletRegistrationEvmFamilyEcdsaPreparedBranch, findStoredWalletRegistrationEvmFamilyEcdsaBranch } from "../../../../core/RegistrationCeremonyStore.js";
6
5
  import { routerAbEcdsaStrictRegistrationFactsBindingJson } from "../../../domains/ecdsa/routerAbEcdsaStrictRegistration.js";
7
6
  import { buildRegistrationIntent, inferRuntimePolicyScopeFromSigningRoot } from "./d1RegistrationCeremonyRecords.js";
7
+ import { errorMessage, recordRegistrationPromiseTiming, recordRegistrationServerTiming, registrationIntentSignerBranches, registrationPreparedContextEcdsaChainTargets, registrationSignerBranchesFromPlan, resolveRegistrationPreparedContextFromPlan } from "./d1RegistrationSetupSupport.js";
8
+ import { buildRouterAbEd25519YaoProductAdmissionRequestV1, mintRouterAbEd25519YaoRegistrationIdentityV1 } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js";
8
9
  import { isTransientD1Error } from "../../../../storage/d1Retry.js";
9
- import { errorMessage, registrationIntentSignerBranches, registrationPreparedContextEcdsaChainTargets, registrationSignerBranchesFromPlan, resolveRegistrationPreparedContextFromPlan } from "./d1RegistrationSetupSupport.js";
10
10
  import { buildWalletRegistrationSetupSignature, normalizeWalletRegistrationSetupRequest, walletRegistrationSetupError, walletRegistrationSetupExpiresAtMs, walletRegistrationSetupIntentDigest } from "./d1WalletRegistrationSetup.js";
11
11
  import { buildD1EvmFamilyEcdsaRegistrationPrepare } from "./d1EvmFamilyEcdsaRegistrationBranch.js";
12
12
  //#region src/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.ts
13
13
  async function executeD1WalletRegistrationSetup(input, dependencies) {
14
+ const serverTiming = input.serverTiming ?? [];
14
15
  try {
15
16
  const normalized = normalizeWalletRegistrationSetupRequest(input.request);
16
17
  if (!normalized.ok) return walletRegistrationSetupError(normalized.code, normalized.message);
17
18
  if (!dependencies.reservation) return walletRegistrationSetupError("registration_authority_unavailable", "Registration reservation authority is required");
19
+ const reserveStartedAtMs = Date.now();
18
20
  const admitted = await dependencies.reservation.reserve(input);
21
+ recordRegistrationServerTiming(serverTiming, "setup_reserve", reserveStartedAtMs);
19
22
  if (!admitted.ok) return admitted;
20
23
  const reservation = admitted.reservation;
21
24
  const wallet = { walletId: reservation.walletId };
22
25
  if (input.request.wallet?.kind === "provided" && input.request.wallet.walletId !== wallet.walletId) return walletRegistrationSetupError("reservation_conflict", "Registration reservation changed the requested wallet");
23
26
  const expiresAtMs = walletRegistrationSetupExpiresAtMs(reservation.reservedAtMs);
24
27
  if (Date.now() >= expiresAtMs) return walletRegistrationSetupError("registration_expired", "Registration setup has expired");
25
- const [startup, setup] = await Promise.allSettled([dependencies.startRegistrationWallets?.({
26
- kind: "objects",
27
- walletId: wallet.walletId,
28
- ownershipGeneration: admitted.ownershipGeneration
29
- }), completeReservedRegistrationSetup(input, dependencies, admitted, normalized, expiresAtMs)]);
28
+ const parallelStartedAtMs = Date.now();
29
+ const [startup, setup] = await Promise.allSettled([recordRegistrationPromiseTiming({
30
+ sink: serverTiming,
31
+ name: "setup_wallet_objects",
32
+ startedAtMs: parallelStartedAtMs,
33
+ promise: dependencies.startRegistrationWallets?.({
34
+ kind: "objects",
35
+ walletId: wallet.walletId,
36
+ ownershipGeneration: admitted.ownershipGeneration
37
+ })
38
+ }), recordRegistrationPromiseTiming({
39
+ sink: serverTiming,
40
+ name: "setup_ceremony",
41
+ startedAtMs: parallelStartedAtMs,
42
+ promise: completeReservedRegistrationSetup(input, dependencies, admitted, normalized, expiresAtMs)
43
+ })]);
30
44
  if (setup.status === "rejected") throw setup.reason;
31
45
  if (!setup.value.ok) return setup.value;
32
46
  if (startup.status === "rejected") throw startup.reason;
33
47
  if (dependencies.startRegistrationWallets) try {
48
+ const pairStartedAtMs = Date.now();
34
49
  const preparation = await describeCommittedSetupPair(setup.value, dependencies);
50
+ recordRegistrationServerTiming(serverTiming, "setup_pair_describe", pairStartedAtMs);
35
51
  if (preparation.status === "described") await dependencies.startRegistrationWallets({
36
52
  kind: "pair",
37
53
  walletId: wallet.walletId,
@@ -2,8 +2,8 @@ import { isPlainObject } from "../../../../shared-ts/src/utils/validation.js";
2
2
  import { base64UrlEncode } from "../../../../shared-ts/src/utils/base64.js";
3
3
  import { alphabetizeStringify, sha256BytesUtf8 } from "../../../../shared-ts/src/utils/digests.js";
4
4
  import "../../../../shared-ts/src/utils/encoders.js";
5
- import { parseRouterAbEd25519YaoRegistrationSideEffectRecordV1 } from "../../../domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js";
6
5
  import { parseD1WalletAddSignerFinalizeTerminalResponse, parseWalletIdForIntent } from "../registration/d1RegistrationCeremonyRecords.js";
6
+ import { parseRouterAbEd25519YaoRegistrationSideEffectRecordV1 } from "../../../domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js";
7
7
  //#region src/router/cloudflare/d1/wallet/d1WalletAddSignerFinalizeRecord.ts
8
8
  function parseWalletAddSignerFinalizePrepared(raw) {
9
9
  if (!isPlainObject(raw)) return null;
@@ -13,14 +13,14 @@ import { buildRouterAbEcdsaDerivationPublicCapabilityV1, parseRouterAbEcdsaRegis
13
13
  import { buildWalletEcdsaSignerActivationV1, extendEd25519WalletAuthorityWithEcdsa, isActiveEd25519WalletAuthorityV1 } from "../../../../shared-ts/src/authorization/walletAuthority.js";
14
14
  import { registrationPreparationIdFromString } from "../../../../core/types.js";
15
15
  import { addSignerIntentGrantFromString, computeAddSignerIntentDigestB64u, sameAddSignerIntentV1 } from "../../../../shared-ts/src/utils/registrationIntent.js";
16
+ import { routerAbEcdsaStrictRegistrationRequestMatchesFacts } from "../../../domains/ecdsa/routerAbEcdsaStrictRegistration.js";
17
+ import { buildD1EcdsaWalletKeysFromBootstrap, buildD1WalletEcdsaSignerRecords, normalizeThresholdEcdsaChainTargets, parseD1AddSignerIntent, parseD1RuntimePolicyScope, parseD1StoredAddSignerAuth, parseD1StoredAddSignerIntent, parseD1StoredWalletAddSignerCeremony, parseWalletIdForIntent, positiveIntegerArraysEqual, runtimePolicyScopeMatches, thresholdEcdsaChainTargetsEqual } from "../registration/d1RegistrationCeremonyRecords.js";
16
18
  import { buildTenantRootIdentityFromAuthenticatedDeploymentV1 } from "../../../../shared-ts/src/tenant-root/tenantRootIdentity.js";
17
19
  import { WalletAuthorityCommitConflictError } from "./d1WalletAuthorityStore.js";
18
20
  import { buildRouterAbEd25519YaoRegistrationCapabilityRecordV1 } from "../../../domains/ed25519Yao/recovery/routerAbEd25519YaoRecovery.js";
19
21
  import { buildRouterAbEd25519YaoAddSignerAdmissionRequestV1, createRouterAbEd25519YaoMaterialActivationRefV1 } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.js";
20
22
  import { parseRouterAbEd25519YaoRegistrationSideEffectRecordV1, runRouterAbEd25519YaoRegistrationSideEffectV1, throwIfRouterAbEd25519YaoRetryableSideEffectFailureV1 } from "../../../domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js";
21
23
  import { buildYaoEd25519WalletSignerRecord, ed25519NearPublicKeyFromBytes, implicitNearAccountIdFromEd25519PublicKeyBytes } from "../ed25519Yao/d1Ed25519YaoWalletSigner.js";
22
- import { routerAbEcdsaStrictRegistrationRequestMatchesFacts } from "../../../domains/ecdsa/routerAbEcdsaStrictRegistration.js";
23
- import { buildD1EcdsaWalletKeysFromBootstrap, buildD1WalletEcdsaSignerRecords, normalizeThresholdEcdsaChainTargets, parseD1AddSignerIntent, parseD1RuntimePolicyScope, parseD1StoredAddSignerAuth, parseD1StoredAddSignerIntent, parseD1StoredWalletAddSignerCeremony, parseWalletIdForIntent, positiveIntegerArraysEqual, runtimePolicyScopeMatches, thresholdEcdsaChainTargetsEqual } from "../registration/d1RegistrationCeremonyRecords.js";
24
24
  import { buildD1WalletAddSignerFinalizePrepared, fingerprintD1WalletAddSignerFinalizePrepared, rejectUnexpectedWalletAddSignerFinalizePreparation, returnD1WalletAddSignerFinalizePrepared } from "./d1WalletAddSignerFinalizeRecord.js";
25
25
  import { routerAbEd25519YaoLifecycleDecisionLookupV1, routerAbEd25519YaoLifecycleDecisionV1 } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoLifecycleDecision.js";
26
26
  import { buildD1EvmFamilyEcdsaRegistrationPrepare } from "../registration/d1EvmFamilyEcdsaRegistrationBranch.js";
@@ -1255,7 +1255,7 @@ var CloudflareD1WalletAddSignerService = class {
1255
1255
  const consumed = await yaoRuntime.consumeActivated({
1256
1256
  reference: requestedActivationReference,
1257
1257
  consumerBinding: input.consumerBinding
1258
- });
1258
+ }, { kind: "stored" });
1259
1259
  if (!consumed.ok) return consumed;
1260
1260
  if (!sameRouterAbEd25519YaoRegistrationAdmissionRequestV1(consumed.activation.admissionRequest, currentState.admissionRequest)) return {
1261
1261
  ok: false,
@@ -13,15 +13,15 @@ import { deriveWebAuthnAuthenticatorDeviceInfo } from "../../../../shared-ts/src
13
13
  import { parseSessionOrigin } from "../../../../authorization/domain.js";
14
14
  import { secureRandomBase64Url } from "../../../../shared-ts/src/utils/secureRandomId.js";
15
15
  import { PASSKEY_PRF_FIRST_SALT_V1, PASSKEY_PRF_SECOND_SALT_V1 } from "../../../../shared-ts/src/utils/signingSessionSeal.js";
16
+ import { addAuthMethodIntentGrantFromString, computeAddAuthMethodIntentDigestB64u } from "../../../../shared-ts/src/utils/registrationIntent.js";
16
17
  import { parsePasskeyCustodyEnvelopeRecord } from "../../../../shared-ts/src/passkey-custody/custodyEnvelope.js";
17
18
  import "../../../../shared-ts/src/passkey-custody/index.js";
18
- import { addAuthMethodIntentGrantFromString, computeAddAuthMethodIntentDigestB64u } from "../../../../shared-ts/src/utils/registrationIntent.js";
19
+ import { toRecordValue } from "../auth/d1RouterApiAuthBoundary.js";
20
+ import { parseWalletIdForIntent } from "../registration/d1RegistrationCeremonyRecords.js";
19
21
  import { parseWebAuthnClientDataJsonBase64url, webAuthnOriginHostnameOrEmpty } from "../../../auth/webAuthnCredentialCodecs.js";
20
22
  import { EMAIL_OTP_CHANNEL, WALLET_EMAIL_OTP_ACTIONS, WALLET_EMAIL_OTP_UNLOCK_OPERATION } from "../../../../shared-ts/src/utils/emailOtpDomain.js";
21
23
  import { resolveWalletAuthMethodIdForAuthority } from "../../../../core/signingLanes/WalletExecutionLaneProjection.js";
22
- import { toRecordValue } from "../auth/d1RouterApiAuthBoundary.js";
23
24
  import { d1HostIsWithinWebAuthnRpId, resolveD1AddAuthMethodExistingAuth, resolveD1AddSignerExistingAuth, verifyD1LinkedDeviceFreshRevokeProofV1, walletAuthAuthorityFromRegistrationAuthority } from "./d1WalletAuthMethodBoundary.js";
24
- import { parseWalletIdForIntent } from "../registration/d1RegistrationCeremonyRecords.js";
25
25
  import { runtimePolicyScopeKey } from "../../../../core/EmailOtpRecords.js";
26
26
  import { expiredGoogleEmailOtpRegistrationAttemptRecord } from "../emailOtp/d1GoogleEmailOtpRegistrationRecords.js";
27
27
  import { admitAddWalletAuthMethod } from "../../../../shared-ts/src/utils/addWalletAuthMethod.js";
@@ -4,8 +4,8 @@ import { parseDigestB64u } from "../../../../shared-ts/src/utils/canonicalPrimit
4
4
  import { WalletLifecycleLocator } from "../../../../authorization/lifecycleRouting.js";
5
5
  import { secureRandomBase64Url } from "../../../../shared-ts/src/utils/secureRandomId.js";
6
6
  import { failedVerification, failure } from "../../../../shared-ts/src/utils/failure.js";
7
- import { decodeWebAuthnBase64UrlOrBase64, parseWebAuthnAuthenticationCredential, parseWebAuthnClientDataJsonBase64url, webAuthnCredentialIdB64uFromCredential, webAuthnOriginHostnameOrEmpty } from "../../../auth/webAuthnCredentialCodecs.js";
8
7
  import { nonNegativeSafeInteger, optionalNonNegativeInteger, parseD1BoundaryWalletId, parseD1BoundaryWalletIdResult, parseJsonObject } from "../auth/d1RouterApiAuthBoundary.js";
8
+ import { decodeWebAuthnBase64UrlOrBase64, parseWebAuthnAuthenticationCredential, parseWebAuthnClientDataJsonBase64url, webAuthnCredentialIdB64uFromCredential, webAuthnOriginHostnameOrEmpty } from "../../../auth/webAuthnCredentialCodecs.js";
9
9
  import { parseWebAuthnAuthenticatorRowDeviceInfo, webAuthnSyncWalletBindingFromCredentialBinding } from "./d1WebAuthnRecords.js";
10
10
  import { d1HostIsWithinWebAuthnRpId } from "../wallet/d1WalletAuthMethodBoundary.js";
11
11
  import { webAuthnAuthenticationFailure, webAuthnLoginEd25519, webAuthnSyncCredentialBinding } from "../../../../core/authService/webauthnVerificationOutcomes.js";
@@ -8,8 +8,8 @@ import { parseWalletAuthorityV1 } from "../../../../shared-ts/src/authorization/
8
8
  import { parseWebAuthnAuthenticatorDeviceInfoJson } from "../../../../shared-ts/src/utils/webauthnDeviceInfo.js";
9
9
  import { hasExactKeys } from "../../../../shared-ts/src/utils/exactKeys.js";
10
10
  import "../../../../shared-ts/src/passkey-custody/index.js";
11
- import { parseRecoveryCodeReservationId } from "../../../../shared-ts/src/wallet-recovery/recoveryCodeReservation.js";
12
11
  import { nonNegativeSafeInteger, optionalNonNegativeInteger, positiveInteger } from "../auth/d1RouterApiAuthBoundary.js";
12
+ import { parseRecoveryCodeReservationId } from "../../../../shared-ts/src/wallet-recovery/recoveryCodeReservation.js";
13
13
  //#region src/router/cloudflare/d1/webauthn/d1WebAuthnRecords.ts
14
14
  function parseWebAuthnAuthenticatorRowDeviceInfo(raw) {
15
15
  return parseWebAuthnAuthenticatorDeviceInfoJson(raw);
@@ -1,6 +1,6 @@
1
1
  import { ROUTER_AB_PUBLIC_KEYSET_PATH, ROUTER_AB_PUBLIC_KEYSET_VERSION_V2, ROUTER_AB_PUBLIC_KEYSET_WELL_KNOWN_PATH, parseRouterAbPublicKeysetV2 } from "../shared-ts/src/utils/routerAbPublicKeyset.js";
2
2
  import { defineRoute, matchesRouteDefinitionRequest } from "./framework/routeDefinitions.js";
3
- import { extractBearerCredential, extractRouterApiEnvironmentId, resolveSourceIpFromExpressRequest, resolveSourceIpFromFetchHeaders } from "./auth/routerApiKeyAuth.js";
3
+ import { extractBearerCredential, extractRouterApiEnvironmentId, resolveSourceIpFromFetchHeaders } from "./auth/routerApiKeyAuth.js";
4
4
  import { InMemoryRouterAbNormalSigningAdmissionStore, createInMemoryRouterAbNormalSigningAdmissionAdapter, createInMemoryRouterAbNormalSigningAdmissionStore, createRouterAbNormalSigningAdmissionAdapter } from "./domains/signingOperations/routerAbNormalSigningAdmissionCore.js";
5
5
  import { CloudflareD1RouterAbNormalSigningAdmissionStore, createCloudflareD1RouterAbNormalSigningAdmissionStore } from "./cloudflare/d1/signingAdmission/d1RouterAbNormalSigningAdmissionStore.js";
6
6
  import { getRouterApiRouteExtensionRoutes } from "./framework/routeExtensions.js";
@@ -41,4 +41,4 @@ import { handleRouterAbEd25519YaoRegistrationRequestScopedCloudflareV1 } from ".
41
41
  import { createRouterAbEd25519YaoProductRegistrationRequestScopedRuntimeV1 } from "./domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRuntime.js";
42
42
  import { runRouterAbEd25519YaoRegistrationSideEffectV1 } from "./domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js";
43
43
  import { CLOUDFLARE_ROUTER_ED25519_YAO_SOURCE_PRESERVING_EXECUTE_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_ACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_DEACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_RESERVE_INACTIVE_SOURCE_PRESERVING_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ED25519_YAO_ACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ED25519_YAO_DEACTIVATE_RESERVATION_PATH_V1, CloudflareOrdinaryInactiveSignerMaterialDeactivationWorkerV1, CloudflareOrdinaryInactiveSignerMaterialReservationWorkerV1, UnavailableOrdinaryInactiveSignerMaterialDeactivationWorkerV1, UnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, createCloudflareLinkedDeviceEd25519SourcePreservingRouterEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialReservationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialReservationServiceV1, createUnavailableOrdinaryInactiveSignerMaterialDeactivationPortV1, createUnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1 } from "./cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.js";
44
- export { CLOUDFLARE_ROUTER_ED25519_YAO_SOURCE_PRESERVING_EXECUTE_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_ACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_DEACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_RESERVE_INACTIVE_SOURCE_PRESERVING_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ED25519_YAO_ACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ED25519_YAO_DEACTIVATE_RESERVATION_PATH_V1, CloudflareD1AuthorizationStore, CloudflareD1RouterAbNormalSigningAdmissionStore, CloudflareD1VaultProxyStore, CloudflareD1VersionedJsonRecordStore, CloudflareD1VersionedJsonRecordStoreError, CloudflareD1WebAuthnAuthService, CloudflareD1WebAuthnStore, CloudflareDurableObjectVersionedJsonRecordStore, CloudflareOrdinaryInactiveSignerMaterialDeactivationWorkerV1, CloudflareOrdinaryInactiveSignerMaterialReservationWorkerV1, CloudflareVersionedJsonRecordStoreError, DEFAULT_WALLET_CONSOLE_SIGNED_DELEGATE_ROUTE_V1, DEFAULT_WALLET_CONSOLE_SPONSORED_EVM_CALL_ROUTE_V1, InMemoryRouterAbEd25519YaoRegistrationIntentAuthorizationAdapter, InMemoryRouterAbEd25519YaoRegistrationService, InMemoryRouterAbNormalSigningAdmissionStore, ROUTER_AB_ED25519_YAO_SHARED_STATE_RECORD_KEY_V1, ROUTER_AB_PUBLIC_KEYSET_PATH, ROUTER_AB_PUBLIC_KEYSET_VERSION_V2, ROUTER_AB_PUBLIC_KEYSET_WELL_KNOWN_PATH, RouterAbEd25519YaoHttpRegistrationBackend, StaticCloudflareTenantStorageRouteResolver, UnavailableOrdinaryInactiveSignerMaterialDeactivationWorkerV1, UnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, WALLET_CONSOLE_API_WALLET_DETAIL_PREFIX_V1, WALLET_CONSOLE_OPS_BASE_PATH_V1, WALLET_CONSOLE_OP_PATHS_V1, WALLET_CONSOLE_SERVICE_ORIGIN_V1, WALLET_CONSOLE_SIGNED_DELEGATE_ROUTE_ID_V1, WALLET_CONSOLE_SPONSORED_EVM_CALL_ROUTE_ID_V1, WALLET_CONTROL_AUTH_MARKER_V1, WALLET_CONTROL_BASE_PATH_V1, WALLET_CONTROL_SERVICE_ORIGIN_V1, WALLET_RUNTIME_OPS_BASE_PATH_V1, WALLET_RUNTIME_OP_PATHS_V1, WALLET_RUNTIME_SERVICE_ORIGIN_V1, buildRouterAbEd25519YaoProductAdmissionRequestV1, coerceRouterLogger, createCloudflareD1RouterAbNormalSigningAdmissionStore, createCloudflareD1VersionedJsonRecordStore, createCloudflareDurableObjectVersionedJsonRecordStore, createCloudflareLinkedDeviceEd25519SourcePreservingRouterEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialReservationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialReservationServiceV1, createCloudflareRouter, createCloudflareTenantStorageRoute, createCloudflareWalletGatewayRouterV1, createInMemoryRouterAbNormalSigningAdmissionAdapter, createInMemoryRouterAbNormalSigningAdmissionStore, createInMemoryRouterApiRuntimeSnapshotConsumer, createRouterAbEd25519YaoCeremonyStateStoreV1, createRouterAbEd25519YaoHttpRegistrationBackendFromEnv, createRouterAbEd25519YaoProductRegistrationCompositionFromPortsV1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreFromD1V1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1, createRouterAbEd25519YaoProductRegistrationRequestScopedRuntimeV1, createRouterAbEd25519YaoProductRegistrationRuntimeV1, createRouterAbEd25519YaoProductRegistrationStateV1, createRouterAbEd25519YaoRegistrationModule, createRouterAbNormalSigningAdmissionAdapter, createRouterApiModule, createSelfHostedCloudflareSigningRouter, createSelfHostedCloudflareSigningWorker, createSignerD1DoStorageTarget, createStaticCloudflareTenantStorageRouteResolver, createStaticCloudflareTenantStorageRouteResolverFromBindings, createStaticWalletConsoleBindingV1, createUnavailableOrdinaryInactiveSignerMaterialDeactivationPortV1, createUnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, createWalletConsoleOpsClient, createWalletConsoleRelayProxyExtensionV1, createWalletControlClientBindings, createWalletRuntimeOpsHandler, decodeWalletConsoleTenantRootActiveLineageRequestV1, decodeWalletConsoleTenantRootActiveLineageResponseV1, defineRoute, encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1, encodeRouterAbEd25519YaoProductRegistrationStateV1, extractBearerCredential, extractRouterApiEnvironmentId, getRouterApiRouteExtensionRoutes, handleRouterAbEd25519YaoRegistrationRequestScopedCloudflareV1, handleStaticWalletConsoleRequestV1, handleWalletControlRequest, matchesRouteDefinitionRequest, mergeRouterAbEd25519YaoProductRegistrationStatePartitionV1, parseRouterAbEd25519YaoCeremonyKeyV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordV1, parseRouterAbEd25519YaoProductRegistrationStateJsonV1, parseRouterAbPublicKeysetV2, parseStaticWalletConsoleBindingConfigV1, parseWalletRegistrationContextResponse, parseWalletRuntimeExecuteSignedDelegateRequest, parseWalletRuntimeExecuteSignedDelegateResponse, parseWalletRuntimeExecuteSignedDelegateResult, parseWalletRuntimeRelayerAccount, parseWalletRuntimeWalletIdentitiesResult, parseWalletRuntimeWalletIdentityRequest, partitionRouterAbEd25519YaoProductRegistrationStateV1, randomTenantRootCreationGrantBytesV1, readEnvironmentCsv, readEnvironmentString, requireEnvironmentString, resolveRouterAbEd25519YaoCeremonyKeyFromRequestV1, resolveRuntimeTenantRootLineage, resolveSourceIpFromExpressRequest, resolveSourceIpFromFetchHeaders, runRouterAbEd25519YaoProductRegistrationRequestScopedV1, runRouterAbEd25519YaoRegistrationSideEffectV1, runRouterAbEd25519YaoRegistrationTwoPhaseV1, runRouterAbPrewarmScheduledV1, signTenantRootCreationGrantV1, tenantRootIdentityDigestB64uV1, validateRuntimeSnapshotExpectation, walletConsoleApiWalletGetRouteDefinitionV1, walletConsoleApiWalletListRouteDefinitionV1, walletConsoleApiWalletSearchRouteDefinitionV1, walletConsoleRelayRouteDefinitionsV1, walletConsoleSignedDelegateRouteDefinitionV1, walletConsoleSponsoredEvmCallRouteDefinitionV1 };
44
+ export { CLOUDFLARE_ROUTER_ED25519_YAO_SOURCE_PRESERVING_EXECUTE_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_ACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_DEACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ECDSA_RESERVE_INACTIVE_SOURCE_PRESERVING_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ED25519_YAO_ACTIVATE_RESERVATION_PATH_V1, CLOUDFLARE_SIGNING_WORKER_ED25519_YAO_DEACTIVATE_RESERVATION_PATH_V1, CloudflareD1AuthorizationStore, CloudflareD1RouterAbNormalSigningAdmissionStore, CloudflareD1VaultProxyStore, CloudflareD1VersionedJsonRecordStore, CloudflareD1VersionedJsonRecordStoreError, CloudflareD1WebAuthnAuthService, CloudflareD1WebAuthnStore, CloudflareDurableObjectVersionedJsonRecordStore, CloudflareOrdinaryInactiveSignerMaterialDeactivationWorkerV1, CloudflareOrdinaryInactiveSignerMaterialReservationWorkerV1, CloudflareVersionedJsonRecordStoreError, DEFAULT_WALLET_CONSOLE_SIGNED_DELEGATE_ROUTE_V1, DEFAULT_WALLET_CONSOLE_SPONSORED_EVM_CALL_ROUTE_V1, InMemoryRouterAbEd25519YaoRegistrationIntentAuthorizationAdapter, InMemoryRouterAbEd25519YaoRegistrationService, InMemoryRouterAbNormalSigningAdmissionStore, ROUTER_AB_ED25519_YAO_SHARED_STATE_RECORD_KEY_V1, ROUTER_AB_PUBLIC_KEYSET_PATH, ROUTER_AB_PUBLIC_KEYSET_VERSION_V2, ROUTER_AB_PUBLIC_KEYSET_WELL_KNOWN_PATH, RouterAbEd25519YaoHttpRegistrationBackend, StaticCloudflareTenantStorageRouteResolver, UnavailableOrdinaryInactiveSignerMaterialDeactivationWorkerV1, UnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, WALLET_CONSOLE_API_WALLET_DETAIL_PREFIX_V1, WALLET_CONSOLE_OPS_BASE_PATH_V1, WALLET_CONSOLE_OP_PATHS_V1, WALLET_CONSOLE_SERVICE_ORIGIN_V1, WALLET_CONSOLE_SIGNED_DELEGATE_ROUTE_ID_V1, WALLET_CONSOLE_SPONSORED_EVM_CALL_ROUTE_ID_V1, WALLET_CONTROL_AUTH_MARKER_V1, WALLET_CONTROL_BASE_PATH_V1, WALLET_CONTROL_SERVICE_ORIGIN_V1, WALLET_RUNTIME_OPS_BASE_PATH_V1, WALLET_RUNTIME_OP_PATHS_V1, WALLET_RUNTIME_SERVICE_ORIGIN_V1, buildRouterAbEd25519YaoProductAdmissionRequestV1, coerceRouterLogger, createCloudflareD1RouterAbNormalSigningAdmissionStore, createCloudflareD1VersionedJsonRecordStore, createCloudflareDurableObjectVersionedJsonRecordStore, createCloudflareLinkedDeviceEd25519SourcePreservingRouterEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialReservationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialReservationServiceV1, createCloudflareRouter, createCloudflareTenantStorageRoute, createCloudflareWalletGatewayRouterV1, createInMemoryRouterAbNormalSigningAdmissionAdapter, createInMemoryRouterAbNormalSigningAdmissionStore, createInMemoryRouterApiRuntimeSnapshotConsumer, createRouterAbEd25519YaoCeremonyStateStoreV1, createRouterAbEd25519YaoHttpRegistrationBackendFromEnv, createRouterAbEd25519YaoProductRegistrationCompositionFromPortsV1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreFromD1V1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1, createRouterAbEd25519YaoProductRegistrationRequestScopedRuntimeV1, createRouterAbEd25519YaoProductRegistrationRuntimeV1, createRouterAbEd25519YaoProductRegistrationStateV1, createRouterAbEd25519YaoRegistrationModule, createRouterAbNormalSigningAdmissionAdapter, createRouterApiModule, createSelfHostedCloudflareSigningRouter, createSelfHostedCloudflareSigningWorker, createSignerD1DoStorageTarget, createStaticCloudflareTenantStorageRouteResolver, createStaticCloudflareTenantStorageRouteResolverFromBindings, createStaticWalletConsoleBindingV1, createUnavailableOrdinaryInactiveSignerMaterialDeactivationPortV1, createUnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, createWalletConsoleOpsClient, createWalletConsoleRelayProxyExtensionV1, createWalletControlClientBindings, createWalletRuntimeOpsHandler, decodeWalletConsoleTenantRootActiveLineageRequestV1, decodeWalletConsoleTenantRootActiveLineageResponseV1, defineRoute, encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1, encodeRouterAbEd25519YaoProductRegistrationStateV1, extractBearerCredential, extractRouterApiEnvironmentId, getRouterApiRouteExtensionRoutes, handleRouterAbEd25519YaoRegistrationRequestScopedCloudflareV1, handleStaticWalletConsoleRequestV1, handleWalletControlRequest, matchesRouteDefinitionRequest, mergeRouterAbEd25519YaoProductRegistrationStatePartitionV1, parseRouterAbEd25519YaoCeremonyKeyV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordV1, parseRouterAbEd25519YaoProductRegistrationStateJsonV1, parseRouterAbPublicKeysetV2, parseStaticWalletConsoleBindingConfigV1, parseWalletRegistrationContextResponse, parseWalletRuntimeExecuteSignedDelegateRequest, parseWalletRuntimeExecuteSignedDelegateResponse, parseWalletRuntimeExecuteSignedDelegateResult, parseWalletRuntimeRelayerAccount, parseWalletRuntimeWalletIdentitiesResult, parseWalletRuntimeWalletIdentityRequest, partitionRouterAbEd25519YaoProductRegistrationStateV1, randomTenantRootCreationGrantBytesV1, readEnvironmentCsv, readEnvironmentString, requireEnvironmentString, resolveRouterAbEd25519YaoCeremonyKeyFromRequestV1, resolveRuntimeTenantRootLineage, resolveSourceIpFromFetchHeaders, runRouterAbEd25519YaoProductRegistrationRequestScopedV1, runRouterAbEd25519YaoRegistrationSideEffectV1, runRouterAbEd25519YaoRegistrationTwoPhaseV1, runRouterAbPrewarmScheduledV1, signTenantRootCreationGrantV1, tenantRootIdentityDigestB64uV1, validateRuntimeSnapshotExpectation, walletConsoleApiWalletGetRouteDefinitionV1, walletConsoleApiWalletListRouteDefinitionV1, walletConsoleApiWalletSearchRouteDefinitionV1, walletConsoleRelayRouteDefinitionsV1, walletConsoleSignedDelegateRouteDefinitionV1, walletConsoleSponsoredEvmCallRouteDefinitionV1 };