@seams/wallet-server 0.10.0 → 0.10.2

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 (29) hide show
  1. package/artifact-manifest.json +11 -11
  2. package/cloudflare-router-ab/build/deriver-a/build-stamp.json +1 -1
  3. package/cloudflare-router-ab/build/deriver-b/build-stamp.json +1 -1
  4. package/cloudflare-router-ab/build/router/build-stamp.json +1 -1
  5. package/cloudflare-router-ab/build/signing-worker/build-stamp.json +1 -1
  6. package/cloudflare-router-ab/build/tenant-root-control-plane/build-stamp.json +1 -1
  7. package/dist/esm/cloud-host.js +2 -2
  8. package/dist/esm/hosted-wallet-gateway.js +18 -1
  9. package/dist/esm/router/cloudflare/d1/auth/d1RouterApiAuthService.js +10 -1
  10. package/dist/esm/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.js +4 -4
  11. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.js +28 -18
  12. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationRead.js +12 -5
  13. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationService.js +42 -11
  14. package/dist/esm/router/cloudflare/d1/registration/d1WalletRegistrationSetupExecution.js +27 -11
  15. package/dist/esm/router/cloudflare/d1/wallet/d1WalletAddSignerService.js +1 -1
  16. package/dist/esm/router/cloudflare.js +18 -6
  17. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js +5 -1
  18. package/dist/esm/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRuntime.js +15 -3
  19. package/dist/esm/router/domains/walletRegistration/walletRegistrationRoutes.js +1 -1
  20. package/dist/esm/router/express.js +1 -1
  21. package/dist/esm/threshold/session/signingSessionSeal/crypto/shamir3PassWasm.js +19 -1
  22. package/dist/types/wallet-server/src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.d.ts +2 -1
  23. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationCommitStore.d.ts +7 -3
  24. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationRead.d.ts +5 -1
  25. package/dist/types/wallet-server/src/router/cloudflare/d1/registration/d1WalletRegistrationService.d.ts +6 -0
  26. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistration.d.ts +10 -1
  27. package/dist/types/wallet-server/src/router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.d.ts +3 -1
  28. package/dist/types/wallet-server/src/threshold/session/signingSessionSeal/crypto/shamir3PassWasm.d.ts +6 -0
  29. package/package.json +1 -1
@@ -2,17 +2,17 @@
2
2
  "schemaVersion": "seams_wallet_server_artifact_manifest_v1",
3
3
  "package": {
4
4
  "name": "@seams/wallet-server",
5
- "version": "0.10.0"
5
+ "version": "0.10.2"
6
6
  },
7
7
  "workers": {
8
8
  "router": {
9
9
  "entry": "cloudflare-router-ab/build/router/worker/shim.mjs",
10
- "fingerprint": "30a977906ffe17f0c8154fc58cad84e5df227730bdf50dfd1bea27271c27d635",
10
+ "fingerprint": "989063cee259faabe08200e0bf5f76d35a71c34daf29ea1a6a6ca192ef939cd2",
11
11
  "files": [
12
12
  {
13
13
  "path": "cloudflare-router-ab/build/router/build-stamp.json",
14
14
  "bytes": 119,
15
- "sha256": "36fb737144714076d0a980aedb84ef4d47f5ca98246e90fddf43c29140aced2b"
15
+ "sha256": "d15f86ee176768903392a2c8376d89a608822049829358d14c776a1cf4683c25"
16
16
  },
17
17
  {
18
18
  "path": "cloudflare-router-ab/build/router/index.js",
@@ -38,12 +38,12 @@
38
38
  },
39
39
  "deriver-a": {
40
40
  "entry": "cloudflare-router-ab/build/deriver-a/worker/shim.mjs",
41
- "fingerprint": "60717e64cecd5d8532c510ef1f5e60c382daa41aee184b91ec0cfb65da94d1fe",
41
+ "fingerprint": "76bf099ffbf26c88a2751c8699976c7b3164aef3fa08051c18d1b100a6bf65f5",
42
42
  "files": [
43
43
  {
44
44
  "path": "cloudflare-router-ab/build/deriver-a/build-stamp.json",
45
45
  "bytes": 122,
46
- "sha256": "ae63051a87200abb4b866eb33d9932a79d362e3112397e5a0b4fcbaf464ecfb5"
46
+ "sha256": "c10b587d92e396f13efeff774ec1f80089a9d6d199d269a8feca5aee6463afff"
47
47
  },
48
48
  {
49
49
  "path": "cloudflare-router-ab/build/deriver-a/index.js",
@@ -69,12 +69,12 @@
69
69
  },
70
70
  "deriver-b": {
71
71
  "entry": "cloudflare-router-ab/build/deriver-b/worker/shim.mjs",
72
- "fingerprint": "b41ef1b3a57563b3ec0a0507dac488beee635693fdca299badd8a7ddaf050448",
72
+ "fingerprint": "b3d8248972d3b050cc01413a04295cc4547f68574a9379bfa84896e5dd9ccff6",
73
73
  "files": [
74
74
  {
75
75
  "path": "cloudflare-router-ab/build/deriver-b/build-stamp.json",
76
76
  "bytes": 122,
77
- "sha256": "305fde47592fd7a9321129053c55722fdecd8025c96962052cc430b2862d7d6e"
77
+ "sha256": "50b14a68d07e464ebef4fb2b6fac8859923c12a2e2bbb8f354b4266c2920665f"
78
78
  },
79
79
  {
80
80
  "path": "cloudflare-router-ab/build/deriver-b/index.js",
@@ -100,12 +100,12 @@
100
100
  },
101
101
  "signing-worker": {
102
102
  "entry": "cloudflare-router-ab/build/signing-worker/worker/shim.mjs",
103
- "fingerprint": "7bca2a3c2aa5208b57ba168af1c0066d5e09bf3d0b206a4b72da33b3e9f6a6a7",
103
+ "fingerprint": "b5630eef3471bdd71dd875f3789a5b5c33e97e12f1092e4c1ed6bf0042bf14bd",
104
104
  "files": [
105
105
  {
106
106
  "path": "cloudflare-router-ab/build/signing-worker/build-stamp.json",
107
107
  "bytes": 127,
108
- "sha256": "ac4932d897470893a453e385e3aef19759a4b18e069407fb5293a900c9101c36"
108
+ "sha256": "edbefd37808ffbf912edb8207c8f3f8ec7da1a2bc3497fcf975df96e09de21b7"
109
109
  },
110
110
  {
111
111
  "path": "cloudflare-router-ab/build/signing-worker/index.js",
@@ -131,12 +131,12 @@
131
131
  },
132
132
  "tenant-root-control-plane": {
133
133
  "entry": "cloudflare-router-ab/build/tenant-root-control-plane/worker/shim.mjs",
134
- "fingerprint": "7cfb93d1efe8ab85f51418f1cddad2604a52f607c0301e85ccf4a28f8a8de04f",
134
+ "fingerprint": "0a2430ee51235d20fe054f155fa263353f5b23d6bd2e085054dffe709484e6dc",
135
135
  "files": [
136
136
  {
137
137
  "path": "cloudflare-router-ab/build/tenant-root-control-plane/build-stamp.json",
138
138
  "bytes": 139,
139
- "sha256": "0909a15f5d630a44d584483a7ddc062f46fb002c4ac87ad609625178a0748c2b"
139
+ "sha256": "3aaf79915d746c2dbfe9f4e17df8c9bafac7cfb18be3c6de2e481b78bf2eb988"
140
140
  },
141
141
  {
142
142
  "path": "cloudflare-router-ab/build/tenant-root-control-plane/index.js",
@@ -1 +1 @@
1
- {"profile":"release","wallet_objects":true,"features":"strict-worker-deriver-a-entrypoint","started_at_ms":1791900498698}
1
+ {"profile":"release","wallet_objects":true,"features":"strict-worker-deriver-a-entrypoint","started_at_ms":1791976433414}
@@ -1 +1 @@
1
- {"profile":"release","wallet_objects":true,"features":"strict-worker-deriver-b-entrypoint","started_at_ms":1791900730423}
1
+ {"profile":"release","wallet_objects":true,"features":"strict-worker-deriver-b-entrypoint","started_at_ms":1791976670146}
@@ -1 +1 @@
1
- {"profile":"release","wallet_objects":true,"features":"strict-worker-router-entrypoint","started_at_ms":1791900949130}
1
+ {"profile":"release","wallet_objects":true,"features":"strict-worker-router-entrypoint","started_at_ms":1791976887847}
@@ -1 +1 @@
1
- {"profile":"release","wallet_objects":true,"features":"strict-worker-signing-worker-entrypoint","started_at_ms":1791900184666}
1
+ {"profile":"release","wallet_objects":true,"features":"strict-worker-signing-worker-entrypoint","started_at_ms":1791976112394}
@@ -1 +1 @@
1
- {"profile":"release","wallet_objects":false,"features":"strict-worker-tenant-root-control-plane-entrypoint","started_at_ms":1791901158819}
1
+ {"profile":"release","wallet_objects":false,"features":"strict-worker-tenant-root-control-plane-entrypoint","started_at_ms":1791977099544}
@@ -89,7 +89,7 @@ import { CloudflareDurableObjectVersionedJsonRecordStore, CloudflareVersionedJso
89
89
  import { CloudflareD1VersionedJsonRecordStore, CloudflareD1VersionedJsonRecordStoreError, createCloudflareD1VersionedJsonRecordStore } from "./router/cloudflare/d1/versionedJson/d1VersionedJsonRecordStore.js";
90
90
  import { createRouterAbEd25519YaoCeremonyStateStoreV1, encodeRouterAbEd25519YaoProductRegistrationStateV1, parseRouterAbEd25519YaoCeremonyKeyV1, parseRouterAbEd25519YaoProductRegistrationStateJsonV1, resolveRouterAbEd25519YaoCeremonyKeyFromRequestV1 } from "./router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPersistence.js";
91
91
  import { mergeRouterAbEd25519YaoProductRegistrationStatePartitionV1, partitionRouterAbEd25519YaoProductRegistrationStateV1 } from "./router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitioning.js";
92
- import { ROUTER_AB_ED25519_YAO_SHARED_STATE_RECORD_KEY_V1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1, encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordJsonV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordV1, routerAbEd25519YaoAdmittedRegistrationAuthorityV1, routerAbEd25519YaoPartitionedStateAfterStoredCommitV1, sameRouterAbEd25519YaoSharedStateCanonicalEncodingV1 } from "./router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js";
92
+ import { ROUTER_AB_ED25519_YAO_SHARED_STATE_RECORD_KEY_V1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1, encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordJsonV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordV1, parseRouterAbEd25519YaoRegistrationAdmissionReadV1, routerAbEd25519YaoAdmittedRegistrationAuthorityV1, routerAbEd25519YaoPartitionedStateAfterStoredCommitV1, sameRouterAbEd25519YaoSharedStateCanonicalEncodingV1 } from "./router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js";
93
93
  import { createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreFromD1V1 } from "./router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.js";
94
94
  import { runRouterAbEd25519YaoProductRegistrationRequestScopedV1 } from "./router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRunner.js";
95
95
  import { runRouterAbEd25519YaoRegistrationTwoPhaseV1 } from "./router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationTwoPhaseRunner.js";
@@ -131,4 +131,4 @@ import { handleRouterAbEd25519YaoRecoveryRequestScopedCloudflareV1 } from "./rou
131
131
  import { RouterAbEd25519YaoRecoveryWalletSessionAuthorizationAdapter } from "./router/domains/ed25519Yao/recovery/routerAbEd25519YaoRecoveryWalletSessionAuthorization.js";
132
132
  import { keccak256Bytes } from "./shared-ts/src/utils/keccak.js";
133
133
  import { decodeEvmBlockHeader, decodeEvmTransactionByHash, decodeEvmTransactionCall, decodeEvmTransactionReceipt, parseRpcHexQuantity } from "./shared-ts/src/utils/evmRpcResults.js";
134
- export { API_CREDENTIAL_ROUTE_SCOPES, API_CREDENTIAL_TYPES, ActionType, 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, CloudflareD1GoogleEmailOtpRegistrationAttemptStore, CloudflareD1OidcJwksCache, CloudflareD1RouterAbEd25519YaoCapabilityPersistence, CloudflareD1RouterAbNormalSigningAdmissionStore, CloudflareD1VaultProxyStore, CloudflareD1VersionedJsonRecordStore, CloudflareD1VersionedJsonRecordStoreError, CloudflareD1WebAuthnAuthService, CloudflareD1WebAuthnStore, CloudflareDurableObjectVersionedJsonRecordStore, CloudflareOrdinaryInactiveSignerMaterialDeactivationWorkerV1, CloudflareOrdinaryInactiveSignerMaterialReservationWorkerV1, CloudflareVersionedJsonRecordStoreError, CrossSiteSessionCookieAdapter, D1IdentityStore, D1LinkedDeviceAuthorityInstallServiceV1, D1LinkedDeviceEd25519ExportRootStoreV1, D1LinkedDeviceRequestProofNonceStoreV1, D1LinkedDeviceSessionStoreV1, D1LinkedDeviceSourceContributionPreparationPlannerV1, D1LinkedDeviceTargetAuthenticatorStoreV1, D1LinkedDeviceTargetCredentialProviderV1, D1LinkedDeviceTargetPlannerV1, D1WalletAuthMethodStore, D1WalletObjectAddresses, D1WalletStore, D1_BATCH_CAS_GUARD_SQL, DEFAULT_SESSION_COOKIE_NAME, DEFAULT_WALLET_CONSOLE_SIGNED_DELEGATE_ROUTE_V1, DEFAULT_WALLET_CONSOLE_SPONSORED_EVM_CALL_ROUTE_V1, DEFAULT_WALLET_SESSION_REMAINING_USES, DEFAULT_WALLET_SESSION_TTL_MS, ED25519_SIGNER_ACTIVATION_ID_PATH, InMemoryRouterAbEd25519YaoExportService, InMemoryRouterAbEd25519YaoExportStateV1, InMemoryRouterAbEd25519YaoRegistrationIntentAuthorizationAdapter, InMemoryRouterAbEd25519YaoRegistrationService, InMemoryRouterAbNormalSigningAdmissionStore, LINKED_DEVICE_OWNER_AUTHORIZATION_PATH_V1, LinkedDeviceRetiredTargetRegistrationShapeErrorV1, LinkedDeviceSourceFamilyUnavailableErrorV1, LinkedDeviceWebAuthnRegistrationVerifierV1, MAX_WALLET_SESSION_REMAINING_USES, MAX_WALLET_SESSION_TTL_MS, PUBLIC_PROOF_TYPES, ROUTER_AB_ECDSA_DERIVATION_PRIVATE_SIGNING_PATHS, ROUTER_AB_ED25519_PRIVATE_SIGNING_PATHS, ROUTER_AB_ED25519_YAO_CAPABILITY_REPLACEMENT_TABLE_V1, ROUTER_AB_ED25519_YAO_EXPORT_ADMISSION_PATH_V1, ROUTER_AB_ED25519_YAO_EXPORT_EXECUTE_PATH_V1, ROUTER_AB_ED25519_YAO_RECOVERY_ACTIVATE_PATH_V1, ROUTER_AB_ED25519_YAO_RECOVERY_ADMISSION_PATH_V1, ROUTER_AB_ED25519_YAO_RECOVERY_EXECUTE_PATH_V1, ROUTER_AB_ED25519_YAO_RECOVERY_STATUS_PATH_V1, ROUTER_AB_ED25519_YAO_REGISTRATION_ADMISSION_PATH_V1, ROUTER_AB_ED25519_YAO_REGISTRATION_EXECUTE_PATH_V1, ROUTER_AB_ED25519_YAO_SHARED_STATE_RECORD_KEY_V1, ROUTER_AB_ED25519_YAO_WARM_RECOVERY_BOOTSTRAP_PATH_V1, ROUTER_AB_MPC_ROUTER_ORIGIN, ROUTER_AB_PUBLIC_KEYSET_PATH, ROUTER_AB_PUBLIC_KEYSET_VERSION_V2, ROUTER_AB_PUBLIC_KEYSET_WELL_KNOWN_PATH, ROUTER_AB_SIGNING_WORKER_ORIGIN, ROUTER_AB_TRACE_ID_HEADER_V1, ROUTER_API_CREDENTIAL_SCOPES, ROUTE_SERVICE_KEYS, RouterAbEcdsaPresignRuntime, RouterAbEd25519YaoExportOwnerProofAuthorizationAdapter, RouterAbEd25519YaoHttpRegistrationBackend, RouterAbEd25519YaoRecoveryWalletSessionAuthorizationAdapter, SESSION_CAS_GUARD_SQL, SessionService, StaticCloudflareTenantStorageRouteResolver, UnavailableOrdinaryInactiveSignerMaterialDeactivationWorkerV1, UnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, WALLET_AUTH_METHOD_D1_STORE, WALLET_AUTH_METHOD_STORE_D1_SCHEMA_SQL, WALLET_AUTH_METHOD_STORE_D1_SCHEMA_V2_SQL, 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, WALLET_STORE_D1_SCHEMA_SQL, WalletHomeCustodyBinding, WalletLifecycleLocator, WalletObjectAddressSnapshot, WalletPlacementRoutes, abusePrincipalKey, addSecp256k1PublicKeys33, admitD1EstablishedWalletHome, admitRouterAbEcdsaReusableWalletSessionOperation, applyRouteMetering, assertUniqueRouterApiRouteDefinitions, authenticateDeviceLinkingOwnerWalletSessionRequestV1, authenticateRouterAbEcdsaOperationStepUp, authenticateRouterAbWalletOperationStepUp, authenticateRouterAbWalletOperationStepUpIdentity, authorizeRouterAbEcdsaDerivationNormalSigningRoute, authorizeRouterAbEd25519NormalSigningRoute, base64UrlDecode, base64UrlEncode, bindWalletAuthMethodIdentity, bindWalletAuthMethodIdentityV2, buildCorsOrigins, buildRouterAbEcdsaDerivationPrivateSigningWorkerBody, buildRouterAbEcdsaOwnerOperationStepUpPreparation, buildRouterAbEd25519OwnerOperationStepUpPreparation, buildRouterAbEd25519PrivateSigningWorkerBody, buildRouterAbEd25519YaoAddSignerAdmissionRequestV1, buildRouterAbEd25519YaoProductAdmissionRequestV1, buildTenantRootIdentityFromAuthenticatedDeploymentV1, buildVerifiedLinkInputV1, buildVerifiedTargetFactorV1, buildWalletEcdsaSignerRecord, claimRouterAbEcdsaOperationStepUp, coerceLogger, coerceRouterLogger, completeRouterAbEcdsaOperation, computeEip1559TxHash, computeLinkedDeviceSessionClaimDigestV1, computeRouterAbEd25519NormalSigningAdmissionMaterial, computeVerifiedTargetFactorVerificationDigestV1, createCloudflareD1RouterAbNormalSigningAdmissionStore, createCloudflareD1RouterApiAuthService, createCloudflareD1VersionedJsonRecordStore, createCloudflareDurableObjectVersionedJsonRecordStore, createCloudflareLinkedDeviceEd25519SourcePreservingRouterEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialReservationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialReservationServiceV1, createCloudflareRouter, createCloudflareTenantStorageRoute, createCloudflareWalletGatewayRouterV1, createD1LinkedDeviceOwnerAuthorizationMetadataSourceV1, createD1LinkedDeviceOwnerAuthorizationProviderV1, createD1LinkedDeviceOwnerSourceChildReaderV1, createD1LinkedDeviceRouteServiceV1, createD1LinkedDeviceSessionServiceV1, createD1LinkedDeviceSourceContributionPreparationPlannerV1, createD1LinkedDeviceVerifiedLinkSourceReaderV1, createDeviceLinkingOwnerRequestAuthenticatorV1, createEd25519SessionAdapter, createInMemoryRouterAbNormalSigningAdmissionAdapter, createInMemoryRouterAbNormalSigningAdmissionStore, createInMemoryRouterApiRuntimeSnapshotConsumer, createRouterAbEcdsaEd25519CeremonyTokenIssuer, createRouterAbEcdsaStrictPostRegistrationPort, createRouterAbEcdsaStrictRegistrationPort, createRouterAbEd25519YaoCeremonyStateStoreV1, createRouterAbEd25519YaoExportModule, createRouterAbEd25519YaoHttpRegistrationBackendFromEnv, createRouterAbEd25519YaoMaterialActivationRefV1, createRouterAbEd25519YaoProductRegistrationCompositionFromPortsV1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreFromD1V1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1, createRouterAbEd25519YaoProductRegistrationRequestScopedRuntimeV1, createRouterAbEd25519YaoProductRegistrationRuntimeV1, createRouterAbEd25519YaoProductRegistrationStateFromPartsV1, createRouterAbEd25519YaoProductRegistrationStateV1, createRouterAbEd25519YaoRegistrationModule, createRouterAbNormalSigningAdmissionAdapter, createRouterAbServiceBindingFetch, createRouterApiModule, createRouterApiRouteDefinitions, createSelfHostedCloudflareSigningRouter, createSelfHostedCloudflareSigningWorker, createSignerD1DoStorageTarget, createSigningSessionSealOptions, createStaticCloudflareTenantStorageRouteResolver, createStaticCloudflareTenantStorageRouteResolverFromBindings, createStaticWalletConsoleBindingV1, createUnavailableOrdinaryInactiveSignerMaterialDeactivationPortV1, createUnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, createWalletConsoleOpsClient, createWalletConsoleRelayProxyExtensionV1, createWalletControlClientBindings, createWalletRegistrationContextResolver, createWalletRuntimeOpsHandler, d1ChangedRows, d1Integer, d1Number, decideRouterAbEcdsaOwnerOperationAuthorization, decideRouterAbEd25519OwnerOperationAuthorization, decodeEvmBlockHeader, decodeEvmTransactionByHash, decodeEvmTransactionCall, decodeEvmTransactionReceipt, decodeJsonRpcEnvelope, decodeWalletConsoleTenantRootActiveLineageRequestV1, decodeWalletConsoleTenantRootActiveLineageResponseV1, defineRoute, defineRouteExtension, deriveJwtExpiresAtIso, deriveRecoveryCodeLocatorV1FromBytes, digestOpaqueValue, encodeEip1559SignedTxFromSignature65, encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1, encodeRouterAbEd25519YaoProductRegistrationStateV1, encodeSessionJsonSegment, encodeTenantRootIdentityV1, enforceDelegatePolicy, enforceRoutePolicy, ensureEvmCryptoWasm, ensureLeadingSlash, ensureWalletAuthMethodStoreD1Schema, ensureWalletStoreD1Schema, evaluateRouterAbNormalSigningAdmission, executeRouterAbEd25519YaoAdmittedRegistrationV1, executeSignedDelegateWithRelayer, extractBearerCredential, extractRouterApiEnvironmentId, findRouteDefinitionById, findRouteDefinitionForRequest, formatD1ExecStatement, getRouterApiRouteExtensionDefinitions, getRouterApiRouteExtensionRoutes, getRouterApiRouteExtensionsForTransport, handleRouterAbEcdsaDerivationNormalSigningRouteCore, handleRouterAbEd25519YaoExportRequestScopedCloudflareV1, handleRouterAbEd25519YaoRecoveryRequestScopedCloudflareV1, handleRouterAbEd25519YaoRegistrationRequestScopedCloudflareV1, handleStaticWalletConsoleRequestV1, handleWalletControlRequest, headersToRecord, isD1DatabaseLike, isObject, isPlainObject, json, jsonFailure, keccak256Bytes, linkedDeviceSignerManifestsEqualV1, linkedDeviceX25519RecipientPublicKeyB64uV1, loadCloudflareSignerWasmModule, matchesRouteDefinitionRequest, mergeRouterAbEd25519YaoProductRegistrationStatePartitionV1, mintRouterAbEd25519YaoRegistrationIdentityV1, normalizeBoundedPositiveInteger, normalizeCorsOrigin, normalizeD1RouterApiAuthOptions, normalizeHashToBytes, normalizeLinkedDevicePasskeyTargetConfigurationV1, normalizeLogger, normalizeLowercaseString, normalizeSessionString, normalizeSessionTtlSeconds, normalizeSourceIp, normalizeTrimmedString, normalizeWalletAuthMethod, normalizeWalletAuthMethodV2, parseBooleanFlag, parseBooleanJwtClaim, parseCacheControlMaxAgeSec, parseCsvList, parseD1JsonArrayColumn, parseD1JsonColumn, parseD1JsonObjectColumn, parseD1LinkedDeviceSessionRowV1, parseD1LinkedDeviceSessionTranscriptRowV1, parseGoogleEmailOtpRegistrationAttemptRecord, parseGoogleEmailOtpRegistrationOfferCandidates, parseGoogleJwks, parseGoogleLoginVerifyRequest, parseInstalledEcdsaCustodySnapshotV1, parseJwtAud, parseLinkedDeviceSessionRecordV1, parseOrgId, parseRecoveryCodeLocatorV1, parseRouterAbEcdsaEd25519PrivateJwk, parseRouterAbEcdsaPresignRuntimeConfig, parseRouterAbEcdsaStrictRegistrationTopology, parseRouterAbEd25519NormalSigningScopeV2, parseRouterAbEd25519OperationStepUpScope, parseRouterAbEd25519YaoActivationKeysetFromEnvV1, parseRouterAbEd25519YaoCeremonyKeyV1, parseRouterAbEd25519YaoExportAdmissionEnvelopeV1, parseRouterAbEd25519YaoExportExecuteEnvelopeV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordJsonV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordV1, parseRouterAbEd25519YaoProductRegistrationStateJsonV1, parseRouterAbEd25519YaoProductRegistrationStateV1, parseRouterAbEd25519YaoRegistrationRouterAnswerV1, parseRouterAbEd25519YaoTenantRootWireV1, parseRouterAbOperationStepUpOperation, parseRouterAbPublicKeysetV2, parseRpcHexQuantity, parseRs256JwtForVerification, parseSessionJwt, parseSigningSessionSealRootConfig, parseStaticWalletConsoleBindingConfigV1, parseStoredRouterAbEcdsaPendingActivationV1, parseWalletEd25519SignerRecord, parseWalletId, parseWalletRecoveryOperationId, parseWalletRegistrationContextResponse, parseWalletRegistrationSetupRequest, parseWalletRegistrationSetupReservation, parseWalletRuntimeExecuteSignedDelegateRequest, parseWalletRuntimeExecuteSignedDelegateResponse, parseWalletRuntimeExecuteSignedDelegateResult, parseWalletRuntimeRelayerAccount, parseWalletRuntimeWalletIdentitiesResult, parseWalletRuntimeWalletIdentityRequest, parseWebAuthnRpId, parseWebAuthnSyncChallengeRecord, partitionRouterAbEd25519YaoProductRegistrationStateV1, postRouterAbSigningWorkerJson, prepareD1TenantStatement, prepareD1WalletAuthMethodInsertStatement, prepareD1WalletAuthMethodPutStatement, prepareD1WalletAuthMethodV2PutStatement, prepareD1WalletPutSignerStatement, prepareD1WalletPutSubjectStatement, prepareD1WebAuthnAuthenticatorInsertStatement, prepareD1WebAuthnAuthenticatorPutStatement, projectRouterAbEd25519YaoExactWalletSession, proposeWalletRegistrationSetup, publishableKeyRoutePrincipal, queryD1All, queryD1One, randomTenantRootCreationGrantBytesV1, readD1LinkedDeviceEcdsaSourceV1, readD1LinkedDeviceEd25519SourceV1, readEnvironmentCsv, readEnvironmentString, readJson, registrationPreparationIdFromString, requireD1RouterApiAuthScopeString, requireEnvironmentString, requireNormalizedSessionString, requireRuntimePolicyScope, resolveFreshRouterAbEcdsaMaterialActivation, resolvePublishableKeyApiCredentialAuth, resolveRequestOriginRateLimitKeyFromExpressRequest, resolveRequestOriginRateLimitKeyFromFetchHeaders, resolveRouterAbEd25519YaoCeremonyKeyFromRequestV1, resolveRuntimeTenantRootLineage, resolveSecretKeyApiCredentialAuth, resolveSourceIpFromExpressRequest, resolveSourceIpFromFetchHeaders, resolveWalletRegistrationContext, routeError, routeJson, routerAbEcdsaAtomicAuthorizationConfigured, routerAbEcdsaOperationInProgressResult, routerAbEcdsaOwnerOperationFailureResult, routerAbEcdsaRecordedResponse, routerAbEcdsaReplayHttpResponse, routerAbEcdsaReplayResult, routerAbEcdsaReplayUnavailableResult, routerAbEcdsaStrictRegistrationFactsBindingJson, routerAbEcdsaStrictRegistrationRequestBindingJson, routerAbEcdsaStrictRegistrationRequestMatchesFacts, routerAbEd25519OwnerOperationFailureResult, routerAbEd25519YaoAdmittedRegistrationAuthorityV1, routerAbEd25519YaoPartitionedStateAfterStoredCommitV1, routerAbEd25519YaoPersistedCapabilityMatchesLookupV1, routerAbEd25519YaoRegistrationExecutionTimingEntriesV1, routerAbEd25519YaoRegistrationSigningRootIdV1, routerAbEd25519YaoTenantRootWireV1, runRouterAbEd25519YaoProductRegistrationRequestScopedV1, runRouterAbEd25519YaoRegistrationSideEffectV1, runRouterAbEd25519YaoRegistrationTwoPhaseV1, runRouterAbPrewarmScheduledV1, runtimePolicyScopeKey, sameRouterAbEd25519YaoSharedStateCanonicalEncodingV1, secp256k1PrivateKey32ToPublicKey33, secp256k1PublicKey33ToEthereumAddress, secureRandomBase36, secureRandomBase64Url, selectWalletEd25519Signer, sendExpressRouteResponse, sessionJwtTimeClaims, sha256Bytes, sha256BytesSync, signSecp256k1Recoverable, signTenantRootCreationGrantV1, tenantRootIdentityDigestB64uV1, tenantStorageRouteBackendFamily, tenantStorageRouteDiagnostic, toFetchRouteResponse, normalizeOptionalTrimmedString as toOptionalTrimmedString, toResponse, toSessionArrayBufferCopy, unavailableRegistrationContext, validateDelegateExpiryAndNonce, validateGoogleIdTokenClaims, validateRuntimeSnapshotExpectation, validateSecp256k1PublicKey33, verifyGoogleOidcToken, verifyRs256JwtSignature, verifySecp256k1Bip340SignatureAgainstPublicKey33, verifySecp256k1RecoverableSignatureAgainstPublicKey33, walletAuthMethodId, walletAuthMethodV2Id, walletConsoleApiWalletGetRouteDefinitionV1, walletConsoleApiWalletListRouteDefinitionV1, walletConsoleApiWalletSearchRouteDefinitionV1, walletConsoleRelayRouteDefinitionsV1, walletConsoleSignedDelegateRouteDefinitionV1, walletConsoleSponsoredEvmCallRouteDefinitionV1, walletObjectIdentity, walletRegistrationContext, walletRegistrationSetupRequestDigest, webAuthnCredentialIdB64uFromCredential, withCors };
134
+ export { API_CREDENTIAL_ROUTE_SCOPES, API_CREDENTIAL_TYPES, ActionType, 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, CloudflareD1GoogleEmailOtpRegistrationAttemptStore, CloudflareD1OidcJwksCache, CloudflareD1RouterAbEd25519YaoCapabilityPersistence, CloudflareD1RouterAbNormalSigningAdmissionStore, CloudflareD1VaultProxyStore, CloudflareD1VersionedJsonRecordStore, CloudflareD1VersionedJsonRecordStoreError, CloudflareD1WebAuthnAuthService, CloudflareD1WebAuthnStore, CloudflareDurableObjectVersionedJsonRecordStore, CloudflareOrdinaryInactiveSignerMaterialDeactivationWorkerV1, CloudflareOrdinaryInactiveSignerMaterialReservationWorkerV1, CloudflareVersionedJsonRecordStoreError, CrossSiteSessionCookieAdapter, D1IdentityStore, D1LinkedDeviceAuthorityInstallServiceV1, D1LinkedDeviceEd25519ExportRootStoreV1, D1LinkedDeviceRequestProofNonceStoreV1, D1LinkedDeviceSessionStoreV1, D1LinkedDeviceSourceContributionPreparationPlannerV1, D1LinkedDeviceTargetAuthenticatorStoreV1, D1LinkedDeviceTargetCredentialProviderV1, D1LinkedDeviceTargetPlannerV1, D1WalletAuthMethodStore, D1WalletObjectAddresses, D1WalletStore, D1_BATCH_CAS_GUARD_SQL, DEFAULT_SESSION_COOKIE_NAME, DEFAULT_WALLET_CONSOLE_SIGNED_DELEGATE_ROUTE_V1, DEFAULT_WALLET_CONSOLE_SPONSORED_EVM_CALL_ROUTE_V1, DEFAULT_WALLET_SESSION_REMAINING_USES, DEFAULT_WALLET_SESSION_TTL_MS, ED25519_SIGNER_ACTIVATION_ID_PATH, InMemoryRouterAbEd25519YaoExportService, InMemoryRouterAbEd25519YaoExportStateV1, InMemoryRouterAbEd25519YaoRegistrationIntentAuthorizationAdapter, InMemoryRouterAbEd25519YaoRegistrationService, InMemoryRouterAbNormalSigningAdmissionStore, LINKED_DEVICE_OWNER_AUTHORIZATION_PATH_V1, LinkedDeviceRetiredTargetRegistrationShapeErrorV1, LinkedDeviceSourceFamilyUnavailableErrorV1, LinkedDeviceWebAuthnRegistrationVerifierV1, MAX_WALLET_SESSION_REMAINING_USES, MAX_WALLET_SESSION_TTL_MS, PUBLIC_PROOF_TYPES, ROUTER_AB_ECDSA_DERIVATION_PRIVATE_SIGNING_PATHS, ROUTER_AB_ED25519_PRIVATE_SIGNING_PATHS, ROUTER_AB_ED25519_YAO_CAPABILITY_REPLACEMENT_TABLE_V1, ROUTER_AB_ED25519_YAO_EXPORT_ADMISSION_PATH_V1, ROUTER_AB_ED25519_YAO_EXPORT_EXECUTE_PATH_V1, ROUTER_AB_ED25519_YAO_RECOVERY_ACTIVATE_PATH_V1, ROUTER_AB_ED25519_YAO_RECOVERY_ADMISSION_PATH_V1, ROUTER_AB_ED25519_YAO_RECOVERY_EXECUTE_PATH_V1, ROUTER_AB_ED25519_YAO_RECOVERY_STATUS_PATH_V1, ROUTER_AB_ED25519_YAO_REGISTRATION_ADMISSION_PATH_V1, ROUTER_AB_ED25519_YAO_REGISTRATION_EXECUTE_PATH_V1, ROUTER_AB_ED25519_YAO_SHARED_STATE_RECORD_KEY_V1, ROUTER_AB_ED25519_YAO_WARM_RECOVERY_BOOTSTRAP_PATH_V1, ROUTER_AB_MPC_ROUTER_ORIGIN, ROUTER_AB_PUBLIC_KEYSET_PATH, ROUTER_AB_PUBLIC_KEYSET_VERSION_V2, ROUTER_AB_PUBLIC_KEYSET_WELL_KNOWN_PATH, ROUTER_AB_SIGNING_WORKER_ORIGIN, ROUTER_AB_TRACE_ID_HEADER_V1, ROUTER_API_CREDENTIAL_SCOPES, ROUTE_SERVICE_KEYS, RouterAbEcdsaPresignRuntime, RouterAbEd25519YaoExportOwnerProofAuthorizationAdapter, RouterAbEd25519YaoHttpRegistrationBackend, RouterAbEd25519YaoRecoveryWalletSessionAuthorizationAdapter, SESSION_CAS_GUARD_SQL, SessionService, StaticCloudflareTenantStorageRouteResolver, UnavailableOrdinaryInactiveSignerMaterialDeactivationWorkerV1, UnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, WALLET_AUTH_METHOD_D1_STORE, WALLET_AUTH_METHOD_STORE_D1_SCHEMA_SQL, WALLET_AUTH_METHOD_STORE_D1_SCHEMA_V2_SQL, 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, WALLET_STORE_D1_SCHEMA_SQL, WalletHomeCustodyBinding, WalletLifecycleLocator, WalletObjectAddressSnapshot, WalletPlacementRoutes, abusePrincipalKey, addSecp256k1PublicKeys33, admitD1EstablishedWalletHome, admitRouterAbEcdsaReusableWalletSessionOperation, applyRouteMetering, assertUniqueRouterApiRouteDefinitions, authenticateDeviceLinkingOwnerWalletSessionRequestV1, authenticateRouterAbEcdsaOperationStepUp, authenticateRouterAbWalletOperationStepUp, authenticateRouterAbWalletOperationStepUpIdentity, authorizeRouterAbEcdsaDerivationNormalSigningRoute, authorizeRouterAbEd25519NormalSigningRoute, base64UrlDecode, base64UrlEncode, bindWalletAuthMethodIdentity, bindWalletAuthMethodIdentityV2, buildCorsOrigins, buildRouterAbEcdsaDerivationPrivateSigningWorkerBody, buildRouterAbEcdsaOwnerOperationStepUpPreparation, buildRouterAbEd25519OwnerOperationStepUpPreparation, buildRouterAbEd25519PrivateSigningWorkerBody, buildRouterAbEd25519YaoAddSignerAdmissionRequestV1, buildRouterAbEd25519YaoProductAdmissionRequestV1, buildTenantRootIdentityFromAuthenticatedDeploymentV1, buildVerifiedLinkInputV1, buildVerifiedTargetFactorV1, buildWalletEcdsaSignerRecord, claimRouterAbEcdsaOperationStepUp, coerceLogger, coerceRouterLogger, completeRouterAbEcdsaOperation, computeEip1559TxHash, computeLinkedDeviceSessionClaimDigestV1, computeRouterAbEd25519NormalSigningAdmissionMaterial, computeVerifiedTargetFactorVerificationDigestV1, createCloudflareD1RouterAbNormalSigningAdmissionStore, createCloudflareD1RouterApiAuthService, createCloudflareD1VersionedJsonRecordStore, createCloudflareDurableObjectVersionedJsonRecordStore, createCloudflareLinkedDeviceEd25519SourcePreservingRouterEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialReservationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialReservationServiceV1, createCloudflareRouter, createCloudflareTenantStorageRoute, createCloudflareWalletGatewayRouterV1, createD1LinkedDeviceOwnerAuthorizationMetadataSourceV1, createD1LinkedDeviceOwnerAuthorizationProviderV1, createD1LinkedDeviceOwnerSourceChildReaderV1, createD1LinkedDeviceRouteServiceV1, createD1LinkedDeviceSessionServiceV1, createD1LinkedDeviceSourceContributionPreparationPlannerV1, createD1LinkedDeviceVerifiedLinkSourceReaderV1, createDeviceLinkingOwnerRequestAuthenticatorV1, createEd25519SessionAdapter, createInMemoryRouterAbNormalSigningAdmissionAdapter, createInMemoryRouterAbNormalSigningAdmissionStore, createInMemoryRouterApiRuntimeSnapshotConsumer, createRouterAbEcdsaEd25519CeremonyTokenIssuer, createRouterAbEcdsaStrictPostRegistrationPort, createRouterAbEcdsaStrictRegistrationPort, createRouterAbEd25519YaoCeremonyStateStoreV1, createRouterAbEd25519YaoExportModule, createRouterAbEd25519YaoHttpRegistrationBackendFromEnv, createRouterAbEd25519YaoMaterialActivationRefV1, createRouterAbEd25519YaoProductRegistrationCompositionFromPortsV1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreFromD1V1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1, createRouterAbEd25519YaoProductRegistrationRequestScopedRuntimeV1, createRouterAbEd25519YaoProductRegistrationRuntimeV1, createRouterAbEd25519YaoProductRegistrationStateFromPartsV1, createRouterAbEd25519YaoProductRegistrationStateV1, createRouterAbEd25519YaoRegistrationModule, createRouterAbNormalSigningAdmissionAdapter, createRouterAbServiceBindingFetch, createRouterApiModule, createRouterApiRouteDefinitions, createSelfHostedCloudflareSigningRouter, createSelfHostedCloudflareSigningWorker, createSignerD1DoStorageTarget, createSigningSessionSealOptions, createStaticCloudflareTenantStorageRouteResolver, createStaticCloudflareTenantStorageRouteResolverFromBindings, createStaticWalletConsoleBindingV1, createUnavailableOrdinaryInactiveSignerMaterialDeactivationPortV1, createUnavailableOrdinaryInactiveSignerMaterialReservationWorkerV1, createWalletConsoleOpsClient, createWalletConsoleRelayProxyExtensionV1, createWalletControlClientBindings, createWalletRegistrationContextResolver, createWalletRuntimeOpsHandler, d1ChangedRows, d1Integer, d1Number, decideRouterAbEcdsaOwnerOperationAuthorization, decideRouterAbEd25519OwnerOperationAuthorization, decodeEvmBlockHeader, decodeEvmTransactionByHash, decodeEvmTransactionCall, decodeEvmTransactionReceipt, decodeJsonRpcEnvelope, decodeWalletConsoleTenantRootActiveLineageRequestV1, decodeWalletConsoleTenantRootActiveLineageResponseV1, defineRoute, defineRouteExtension, deriveJwtExpiresAtIso, deriveRecoveryCodeLocatorV1FromBytes, digestOpaqueValue, encodeEip1559SignedTxFromSignature65, encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1, encodeRouterAbEd25519YaoProductRegistrationStateV1, encodeSessionJsonSegment, encodeTenantRootIdentityV1, enforceDelegatePolicy, enforceRoutePolicy, ensureEvmCryptoWasm, ensureLeadingSlash, ensureWalletAuthMethodStoreD1Schema, ensureWalletStoreD1Schema, evaluateRouterAbNormalSigningAdmission, executeRouterAbEd25519YaoAdmittedRegistrationV1, executeSignedDelegateWithRelayer, extractBearerCredential, extractRouterApiEnvironmentId, findRouteDefinitionById, findRouteDefinitionForRequest, formatD1ExecStatement, getRouterApiRouteExtensionDefinitions, getRouterApiRouteExtensionRoutes, getRouterApiRouteExtensionsForTransport, handleRouterAbEcdsaDerivationNormalSigningRouteCore, handleRouterAbEd25519YaoExportRequestScopedCloudflareV1, handleRouterAbEd25519YaoRecoveryRequestScopedCloudflareV1, handleRouterAbEd25519YaoRegistrationRequestScopedCloudflareV1, handleStaticWalletConsoleRequestV1, handleWalletControlRequest, headersToRecord, isD1DatabaseLike, isObject, isPlainObject, json, jsonFailure, keccak256Bytes, linkedDeviceSignerManifestsEqualV1, linkedDeviceX25519RecipientPublicKeyB64uV1, loadCloudflareSignerWasmModule, matchesRouteDefinitionRequest, mergeRouterAbEd25519YaoProductRegistrationStatePartitionV1, mintRouterAbEd25519YaoRegistrationIdentityV1, normalizeBoundedPositiveInteger, normalizeCorsOrigin, normalizeD1RouterApiAuthOptions, normalizeHashToBytes, normalizeLinkedDevicePasskeyTargetConfigurationV1, normalizeLogger, normalizeLowercaseString, normalizeSessionString, normalizeSessionTtlSeconds, normalizeSourceIp, normalizeTrimmedString, normalizeWalletAuthMethod, normalizeWalletAuthMethodV2, parseBooleanFlag, parseBooleanJwtClaim, parseCacheControlMaxAgeSec, parseCsvList, parseD1JsonArrayColumn, parseD1JsonColumn, parseD1JsonObjectColumn, parseD1LinkedDeviceSessionRowV1, parseD1LinkedDeviceSessionTranscriptRowV1, parseGoogleEmailOtpRegistrationAttemptRecord, parseGoogleEmailOtpRegistrationOfferCandidates, parseGoogleJwks, parseGoogleLoginVerifyRequest, parseInstalledEcdsaCustodySnapshotV1, parseJwtAud, parseLinkedDeviceSessionRecordV1, parseOrgId, parseRecoveryCodeLocatorV1, parseRouterAbEcdsaEd25519PrivateJwk, parseRouterAbEcdsaPresignRuntimeConfig, parseRouterAbEcdsaStrictRegistrationTopology, parseRouterAbEd25519NormalSigningScopeV2, parseRouterAbEd25519OperationStepUpScope, parseRouterAbEd25519YaoActivationKeysetFromEnvV1, parseRouterAbEd25519YaoCeremonyKeyV1, parseRouterAbEd25519YaoExportAdmissionEnvelopeV1, parseRouterAbEd25519YaoExportExecuteEnvelopeV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordJsonV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordV1, parseRouterAbEd25519YaoProductRegistrationStateJsonV1, parseRouterAbEd25519YaoProductRegistrationStateV1, parseRouterAbEd25519YaoRegistrationAdmissionReadV1, parseRouterAbEd25519YaoRegistrationRouterAnswerV1, parseRouterAbEd25519YaoTenantRootWireV1, parseRouterAbOperationStepUpOperation, parseRouterAbPublicKeysetV2, parseRpcHexQuantity, parseRs256JwtForVerification, parseSessionJwt, parseSigningSessionSealRootConfig, parseStaticWalletConsoleBindingConfigV1, parseStoredRouterAbEcdsaPendingActivationV1, parseWalletEd25519SignerRecord, parseWalletId, parseWalletRecoveryOperationId, parseWalletRegistrationContextResponse, parseWalletRegistrationSetupRequest, parseWalletRegistrationSetupReservation, parseWalletRuntimeExecuteSignedDelegateRequest, parseWalletRuntimeExecuteSignedDelegateResponse, parseWalletRuntimeExecuteSignedDelegateResult, parseWalletRuntimeRelayerAccount, parseWalletRuntimeWalletIdentitiesResult, parseWalletRuntimeWalletIdentityRequest, parseWebAuthnRpId, parseWebAuthnSyncChallengeRecord, partitionRouterAbEd25519YaoProductRegistrationStateV1, postRouterAbSigningWorkerJson, prepareD1TenantStatement, prepareD1WalletAuthMethodInsertStatement, prepareD1WalletAuthMethodPutStatement, prepareD1WalletAuthMethodV2PutStatement, prepareD1WalletPutSignerStatement, prepareD1WalletPutSubjectStatement, prepareD1WebAuthnAuthenticatorInsertStatement, prepareD1WebAuthnAuthenticatorPutStatement, projectRouterAbEd25519YaoExactWalletSession, proposeWalletRegistrationSetup, publishableKeyRoutePrincipal, queryD1All, queryD1One, randomTenantRootCreationGrantBytesV1, readD1LinkedDeviceEcdsaSourceV1, readD1LinkedDeviceEd25519SourceV1, readEnvironmentCsv, readEnvironmentString, readJson, registrationPreparationIdFromString, requireD1RouterApiAuthScopeString, requireEnvironmentString, requireNormalizedSessionString, requireRuntimePolicyScope, resolveFreshRouterAbEcdsaMaterialActivation, resolvePublishableKeyApiCredentialAuth, resolveRequestOriginRateLimitKeyFromExpressRequest, resolveRequestOriginRateLimitKeyFromFetchHeaders, resolveRouterAbEd25519YaoCeremonyKeyFromRequestV1, resolveRuntimeTenantRootLineage, resolveSecretKeyApiCredentialAuth, resolveSourceIpFromExpressRequest, resolveSourceIpFromFetchHeaders, resolveWalletRegistrationContext, routeError, routeJson, routerAbEcdsaAtomicAuthorizationConfigured, routerAbEcdsaOperationInProgressResult, routerAbEcdsaOwnerOperationFailureResult, routerAbEcdsaRecordedResponse, routerAbEcdsaReplayHttpResponse, routerAbEcdsaReplayResult, routerAbEcdsaReplayUnavailableResult, routerAbEcdsaStrictRegistrationFactsBindingJson, routerAbEcdsaStrictRegistrationRequestBindingJson, routerAbEcdsaStrictRegistrationRequestMatchesFacts, routerAbEd25519OwnerOperationFailureResult, routerAbEd25519YaoAdmittedRegistrationAuthorityV1, routerAbEd25519YaoPartitionedStateAfterStoredCommitV1, routerAbEd25519YaoPersistedCapabilityMatchesLookupV1, routerAbEd25519YaoRegistrationExecutionTimingEntriesV1, routerAbEd25519YaoRegistrationSigningRootIdV1, routerAbEd25519YaoTenantRootWireV1, runRouterAbEd25519YaoProductRegistrationRequestScopedV1, runRouterAbEd25519YaoRegistrationSideEffectV1, runRouterAbEd25519YaoRegistrationTwoPhaseV1, runRouterAbPrewarmScheduledV1, runtimePolicyScopeKey, sameRouterAbEd25519YaoSharedStateCanonicalEncodingV1, secp256k1PrivateKey32ToPublicKey33, secp256k1PublicKey33ToEthereumAddress, secureRandomBase36, secureRandomBase64Url, selectWalletEd25519Signer, sendExpressRouteResponse, sessionJwtTimeClaims, sha256Bytes, sha256BytesSync, signSecp256k1Recoverable, signTenantRootCreationGrantV1, tenantRootIdentityDigestB64uV1, tenantStorageRouteBackendFamily, tenantStorageRouteDiagnostic, toFetchRouteResponse, normalizeOptionalTrimmedString as toOptionalTrimmedString, toResponse, toSessionArrayBufferCopy, unavailableRegistrationContext, validateDelegateExpiryAndNonce, validateGoogleIdTokenClaims, validateRuntimeSnapshotExpectation, validateSecp256k1PublicKey33, verifyGoogleOidcToken, verifyRs256JwtSignature, verifySecp256k1Bip340SignatureAgainstPublicKey33, verifySecp256k1RecoverableSignatureAgainstPublicKey33, walletAuthMethodId, walletAuthMethodV2Id, walletConsoleApiWalletGetRouteDefinitionV1, walletConsoleApiWalletListRouteDefinitionV1, walletConsoleApiWalletSearchRouteDefinitionV1, walletConsoleRelayRouteDefinitionsV1, walletConsoleSignedDelegateRouteDefinitionV1, walletConsoleSponsoredEvmCallRouteDefinitionV1, walletObjectIdentity, walletRegistrationContext, walletRegistrationSetupRequestDigest, webAuthnCredentialIdB64uFromCredential, withCors };
@@ -30,6 +30,7 @@ import { handleRouterAbEd25519YaoRegistrationRequestScopedCloudflareV1 } from ".
30
30
  import { createRouterAbEd25519YaoProductRegistrationRequestScopedRuntimeV1 } from "./router/domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationRequestScopedRuntime.js";
31
31
  import { createCloudflareLinkedDeviceEd25519SourcePreservingRouterEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialActivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationEndpointV1, createCloudflareOrdinaryInactiveSignerMaterialReservationEndpointV1 } from "./router/cloudflare/signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.js";
32
32
  import { CloudflareD1RouterAbEd25519YaoCapabilityPersistence } from "./router/cloudflare/d1/ed25519Yao/d1Ed25519YaoCapabilityPersistence.js";
33
+ import { warmSigningSessionSealRuntime } from "./threshold/session/signingSessionSeal/crypto/shamir3PassWasm.js";
33
34
  import { createSigningSessionSealOptions } from "./threshold/session/signingSessionSeal/options.js";
34
35
  import { createRouterAbEcdsaEd25519CeremonyTokenIssuer, createRouterAbEcdsaStrictPostRegistrationPort, createRouterAbEcdsaStrictRegistrationPort, parseRouterAbEcdsaEd25519PrivateJwk, parseRouterAbEcdsaStrictRegistrationTopology } from "./router/domains/ecdsa/routerAbEcdsaStrictRegistration.js";
35
36
  import { D1LinkedDeviceTargetCredentialProviderV1 } from "./router/cloudflare/d1/deviceLinking/d1LinkedDeviceTargetCredentialProvider.js";
@@ -512,9 +513,25 @@ async function handleSplitGatewayRequest(request, env, ctx, dependencies = {}) {
512
513
  if (operation !== null) {
513
514
  const response = await handlePartitionedD1Operation(env, request, operation, createStagingTenantRootCustodyLineage(createWalletConsoleOpsClient(env.WALLET_CONSOLE)), dependencies);
514
515
  withCors(response.headers, { corsOrigins: readEnvironmentCsv(env.RELAY_CORS_ORIGINS) }, request);
516
+ warmSigningSessionSealAfterReply(env, ctx);
515
517
  return response;
516
518
  }
517
- return await (await createSplitGatewayRouterHandler(env, dependencies, ctx))(request, env, ctx);
519
+ const response = await (await createSplitGatewayRouterHandler(env, dependencies, ctx))(request, env, ctx);
520
+ warmSigningSessionSealAfterReply(env, ctx);
521
+ return response;
522
+ }
523
+ let signingSessionSealWarmUp = null;
524
+ /**
525
+ * Once per isolate, after its first reply. A finalization seldom reaches the
526
+ * isolate that served an earlier request of the same registration, so the
527
+ * warm-up runs after whichever request reaches an isolate first.
528
+ */
529
+ function warmSigningSessionSealAfterReply(env, ctx) {
530
+ if (signingSessionSealWarmUp || !stagingSigningSessionSealOptions(env)) return;
531
+ signingSessionSealWarmUp = warmSigningSessionSealRuntime().catch((error) => {
532
+ console.warn("[signing-session-seal] warm-up failed", error);
533
+ });
534
+ ctx.waitUntil(signingSessionSealWarmUp);
518
535
  }
519
536
  function requireStagingRouterAbPublicKeyset(env) {
520
537
  const parsed = parseJsonValue(requireEnvironmentString(env, "ROUTER_AB_PUBLIC_KEYSET_JSON"));
@@ -15,6 +15,7 @@ import { sha256BytesPortable, toRecordValue } from "./d1RouterApiAuthBoundary.js
15
15
  import { verifyD1LinkedDeviceFreshRevokeProofV1 } from "../wallet/d1WalletAuthMethodBoundary.js";
16
16
  import { D1LinkedDeviceAuthorityInstallServiceV1 } from "../deviceLinking/d1LinkedDeviceAuthorityInstallService.js";
17
17
  import { D1WalletAuthorityStore } from "../wallet/d1WalletAuthorityStore.js";
18
+ import { createD1Ed25519YaoLifecycleRecords } from "../ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.js";
18
19
  import { parseRouterAbEd25519YaoRegistrationSideEffectRecordV2 } from "../../../domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.js";
19
20
  import { createCloudflareOrdinaryInactiveSignerMaterialActivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialDeactivationPortV1, createCloudflareOrdinaryInactiveSignerMaterialReservationServiceV1 } from "../../signingLanes/cloudflareOrdinaryInactiveSignerMaterialReservation.js";
20
21
  import { normalizeD1RouterApiAuthOptions } from "./d1RouterApiAuthConfig.js";
@@ -846,7 +847,15 @@ function createCloudflareD1RouterApiAuthAssembly(input) {
846
847
  tenantRootCustodyLineage: options.tenantRootCustodyLineage,
847
848
  getWalletStore,
848
849
  activateSideEffects: walletRegistrationActivateSideEffectStore(options),
849
- registrationRead: new D1WalletRegistrationRead(options.database, options.registrationAuthority ?? null, walletRegistrationNearProvisioningSideEffectStore(options), getRegistrationCeremonyIntentStore, yaoLifecycleDecisions, walletRegistrationCommitStore),
850
+ registrationRead: new D1WalletRegistrationRead(options.database, options.registrationAuthority ?? null, walletRegistrationNearProvisioningSideEffectStore(options), getRegistrationCeremonyIntentStore, yaoLifecycleDecisions, createD1Ed25519YaoLifecycleRecords({
851
+ database: options.database,
852
+ scope: {
853
+ namespace: options.namespace,
854
+ orgId: options.orgId,
855
+ projectId: options.projectId,
856
+ envId: options.envId
857
+ }
858
+ }), walletRegistrationCommitStore),
850
859
  walletRegistrationCommitStore,
851
860
  walletCustodyCommitStore,
852
861
  walletAuthMethods,
@@ -4,7 +4,7 @@ import { D1WalletCeremonyActivity, ceremonySettled } from "./d1WalletCeremonyAct
4
4
  import { collectChangedStateWallets, lifecycleWriteFenceStatements } from "./d1Ed25519YaoStateWriteFence.js";
5
5
  //#region src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.ts
6
6
  function createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreFromD1V1(options) {
7
- return createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1(new D1LifecycleRecords(options, createLifecycleRecords(options)));
7
+ return createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1(new D1LifecycleRecords(options, createD1Ed25519YaoLifecycleRecords(options)));
8
8
  }
9
9
  var D1LifecycleRecords = class {
10
10
  constructor(options, records) {
@@ -64,7 +64,7 @@ function readPartition(value) {
64
64
  return record;
65
65
  }
66
66
  async function evictWalletEd25519CapabilityCache(options, walletId) {
67
- const records = createLifecycleRecords(options);
67
+ const records = createD1Ed25519YaoLifecycleRecords(options);
68
68
  const key = ROUTER_AB_ED25519_YAO_SHARED_STATE_RECORD_KEY_V1;
69
69
  const current = await records.read(key);
70
70
  if (current.kind !== "present") return;
@@ -98,7 +98,7 @@ async function evictWalletEd25519CapabilityCache(options, walletId) {
98
98
  expectedVersion: current.version
99
99
  }])).kind !== "stored") throw new Error("Capability cache changed during cleanup");
100
100
  }
101
- function createLifecycleRecords(options) {
101
+ function createD1Ed25519YaoLifecycleRecords(options) {
102
102
  return createCloudflareD1VersionedJsonRecordStore({
103
103
  ...options,
104
104
  encode: identityVersionedJsonObject,
@@ -106,6 +106,6 @@ function createLifecycleRecords(options) {
106
106
  });
107
107
  }
108
108
  //#endregion
109
- export { createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreFromD1V1, evictWalletEd25519CapabilityCache };
109
+ export { createD1Ed25519YaoLifecycleRecords, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreFromD1V1, evictWalletEd25519CapabilityCache };
110
110
 
111
111
  //# sourceMappingURL=d1Ed25519YaoProductRegistrationPartitionedStateStore.js.map
@@ -123,32 +123,41 @@ function canExtendFoundingAuthorityWithEd25519(existing, next) {
123
123
  const nextEcdsa = next.signerActivations.ecdsa;
124
124
  return existing.signerActivations.keyFamilies.length === 1 && existing.signerActivations.keyFamilies[0] === "ecdsa_secp256k1" && next.signerActivations.keyFamilies.length === 2 && next.signerActivations.keyFamilies[0] === "ed25519" && next.signerActivations.keyFamilies[1] === "ecdsa_secp256k1" && existingEcdsa !== void 0 && nextEcdsa !== void 0 && sameWalletEcdsaSignerActivationV1(existingEcdsa, nextEcdsa) && foundingAuthorityIdentityMatches(existing, next) && next.updatedAtMs >= existing.updatedAtMs;
125
125
  }
126
- async function prepareFoundingStatements(input) {
127
- if (!input.foundingAuthority) return [];
128
- const foundingAuthMethod = requireFoundingAuthMethod(input.foundingAuthMethod);
129
- const authorityRead = input.database.prepare(`SELECT record_json
126
+ async function readStoredFoundingRecords(database, scope, ids) {
127
+ const authorityRead = database.prepare(`SELECT record_json
130
128
  FROM wallet_authorities
131
129
  WHERE namespace = ?
132
130
  AND org_id = ?
133
131
  AND project_id = ?
134
132
  AND env_id = ?
135
133
  AND authority_id = ?
136
- LIMIT 1`).bind(input.scope.namespace, input.scope.orgId, input.scope.projectId, input.scope.envId, String(input.foundingAuthority.authorityId));
137
- const authMethodRead = input.database.prepare(`SELECT record_json
134
+ LIMIT 1`).bind(scope.namespace, scope.orgId, scope.projectId, scope.envId, String(ids.walletAuthorityId));
135
+ const authMethodRead = database.prepare(`SELECT record_json
138
136
  FROM wallet_auth_methods
139
137
  WHERE namespace = ?
140
138
  AND org_id = ?
141
139
  AND project_id = ?
142
140
  AND env_id = ?
143
141
  AND wallet_auth_method_id = ?
144
- LIMIT 1`).bind(input.scope.namespace, input.scope.orgId, input.scope.projectId, input.scope.envId, String(foundingAuthMethod.walletAuthMethodId));
145
- const results = await input.database.batch([authorityRead, authMethodRead]);
142
+ LIMIT 1`).bind(scope.namespace, scope.orgId, scope.projectId, scope.envId, String(ids.walletAuthMethodId));
143
+ const results = await database.batch([authorityRead, authMethodRead]);
146
144
  assertBatchSucceeded({
147
145
  expectedStatementCount: 2,
148
146
  results
149
147
  });
150
- const authorityRow = results[0]?.results?.[0] ?? null;
151
- const authMethodRow = results[1]?.results?.[0] ?? null;
148
+ return {
149
+ walletAuthorityId: ids.walletAuthorityId,
150
+ walletAuthMethodId: ids.walletAuthMethodId,
151
+ authorityRow: results[0]?.results?.[0] ?? null,
152
+ authMethodRow: results[1]?.results?.[0] ?? null
153
+ };
154
+ }
155
+ function prepareFoundingStatements(input) {
156
+ if (!input.foundingAuthority) return [];
157
+ const foundingAuthMethod = requireFoundingAuthMethod(input.foundingAuthMethod);
158
+ const { stored } = input;
159
+ if (!stored || String(stored.walletAuthorityId) !== String(input.foundingAuthority.authorityId) || String(stored.walletAuthMethodId) !== String(foundingAuthMethod.walletAuthMethodId)) throw new Error("A founding commit requires the records that its reservation read");
160
+ const { authorityRow, authMethodRow } = stored;
152
161
  let persistedAuthority = null;
153
162
  if (authorityRow) {
154
163
  const parsedAuthority = parseWalletAuthorityV1(parseD1JsonColumn(authorityRow.record_json));
@@ -210,13 +219,13 @@ var CloudflareD1WalletRegistrationCommitStore = class {
210
219
  this.database = input.database;
211
220
  this.scope = normalizeScope(input);
212
221
  }
213
- async reserveAuthority(authority, held = null) {
214
- if (authority.kind === "passkey" && !heldClaimCovers(held, authority)) await reservePasskeyCredential(this.credentialClaims, {
222
+ async reserveAuthority(authority, held, founding) {
223
+ const [, stored] = await Promise.all([authority.kind === "passkey" && !heldClaimCovers(held, authority) ? reservePasskeyCredential(this.credentialClaims, {
215
224
  walletId: authority.walletId,
216
225
  rpId: authority.rpId,
217
226
  credentialIdB64u: authority.credentialIdB64u
218
- });
219
- return this.commit.bind(this, authority);
227
+ }) : void 0, founding ? readStoredFoundingRecords(this.database, this.scope, founding) : null]);
228
+ return this.commit.bind(this, authority, stored);
220
229
  }
221
230
  async claimPasskeyAhead(input) {
222
231
  const { authority } = input;
@@ -259,7 +268,7 @@ var CloudflareD1WalletRegistrationCommitStore = class {
259
268
  AND env_id = ?4
260
269
  AND registration_ceremony_id = ?5`).bind(this.scope.namespace, this.scope.orgId, this.scope.projectId, this.scope.envId, registrationCeremonyId).run();
261
270
  }
262
- async commit(authority, input, executeBatch) {
271
+ async commit(authority, stored, input, executeBatch) {
263
272
  assertCommitWalletIdentity(input, authority);
264
273
  const fenced = [];
265
274
  const ed25519Signer = input.walletSigners.find(isEd25519Signer);
@@ -283,7 +292,7 @@ var CloudflareD1WalletRegistrationCommitStore = class {
283
292
  scope: this.scope
284
293
  }, new Set([capabilityWallet.value, input.wallet.walletId])));
285
294
  }
286
- const prepared = await prepareWalletWrite(this.database, this.scope, authority, input);
295
+ const prepared = prepareWalletWrite(this.database, this.scope, authority, input, stored);
287
296
  const statements = [...fenced, ...prepared.statements];
288
297
  const results = executeBatch ? await executeBatch(statements) : await this.database.batch(statements);
289
298
  assertBatchSucceeded({
@@ -292,12 +301,13 @@ var CloudflareD1WalletRegistrationCommitStore = class {
292
301
  });
293
302
  }
294
303
  };
295
- async function prepareWalletWrite(database, scope, authority, input) {
296
- const foundingStatements = await prepareFoundingStatements({
304
+ function prepareWalletWrite(database, scope, authority, input, stored) {
305
+ const foundingStatements = prepareFoundingStatements({
297
306
  database,
298
307
  scope,
299
308
  foundingAuthority: input.foundingAuthority,
300
309
  foundingAuthMethod: input.foundingAuthMethod,
310
+ stored,
301
311
  now: input.now
302
312
  });
303
313
  const statements = [prepareD1WalletPutSubjectStatement({
@@ -1,12 +1,14 @@
1
+ import { parseRouterAbEd25519YaoRegistrationAdmissionReadV1 } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore.js";
1
2
  //#region src/router/cloudflare/d1/registration/d1WalletRegistrationRead.ts
2
3
  /** Read admission and immutable finalization state from one D1 snapshot. */
3
4
  var D1WalletRegistrationRead = class {
4
- constructor(database, authority, operations, getCeremonies, decisions, passkeyClaims) {
5
+ constructor(database, authority, operations, getCeremonies, decisions, yaoRecords, passkeyClaims) {
5
6
  this.database = database;
6
7
  this.authority = authority;
7
8
  this.operations = operations;
8
9
  this.getCeremonies = getCeremonies;
9
10
  this.decisions = decisions;
11
+ this.yaoRecords = yaoRecords;
10
12
  this.passkeyClaims = passkeyClaims;
11
13
  }
12
14
  async readRespond(home) {
@@ -39,10 +41,11 @@ var D1WalletRegistrationRead = class {
39
41
  this.operations.prepareRead(operationKey),
40
42
  ceremonies.prepareCeremonyRead(home.ceremonyId),
41
43
  this.decisions.prepareRead(home.ceremonyId),
42
- this.passkeyClaims.prepareHeldPasskeyClaimRead(home.ceremonyId)
44
+ this.passkeyClaims.prepareHeldPasskeyClaimRead(home.ceremonyId),
45
+ this.yaoRecords.prepareRead(home.ceremonyId)
43
46
  ]);
44
- const [homeRead, operationRead, ceremonyRead, decisionRead, passkeyClaimRead] = results;
45
- if (results.length !== 5 || !homeRead || !operationRead || !ceremonyRead || !decisionRead || !passkeyClaimRead) throw new Error("Registration finalization D1 batch returned incomplete results");
47
+ const [homeRead, operationRead, ceremonyRead, decisionRead, passkeyClaimRead, yaoRead] = results;
48
+ if (results.length !== 6 || !homeRead || !operationRead || !ceremonyRead || !decisionRead || !passkeyClaimRead || !yaoRead) throw new Error("Registration finalization D1 batch returned incomplete results");
46
49
  const admission = await this.authority.admitHomeRead(home, homeRead);
47
50
  if (!admission.ok) return admission;
48
51
  if (!ceremonyRead.success) throw new Error("Registration ceremony D1 read failed");
@@ -51,9 +54,13 @@ var D1WalletRegistrationRead = class {
51
54
  operation: this.operations.parseReadResult(operationRead),
52
55
  decision: this.decisions.parseRead(home.ceremonyId, decisionRead),
53
56
  heldPasskeyClaim: this.passkeyClaims.parseHeldPasskeyClaimRead(passkeyClaimRead),
54
- readCeremony: ceremonies.parseCeremonyRead.bind(ceremonies, home.ceremonyId, ceremonyRead)
57
+ readCeremony: ceremonies.parseCeremonyRead.bind(ceremonies, home.ceremonyId, ceremonyRead),
58
+ readYaoAdmission: this.parseYaoAdmission.bind(this, home.ceremonyId, yaoRead)
55
59
  };
56
60
  }
61
+ parseYaoAdmission(ceremonyId, result) {
62
+ return parseRouterAbEd25519YaoRegistrationAdmissionReadV1(ceremonyId, this.yaoRecords.parseReadResult(result));
63
+ }
57
64
  };
58
65
  //#endregion
59
66
  export { D1WalletRegistrationRead };
@@ -39,6 +39,7 @@ import { buildStoredWalletRegistrationEvmFamilyEcdsaFinalizedBranch, buildStored
39
39
  import { routerAbEcdsaStrictRegistrationRequestBindingJson } from "../../../domains/ecdsa/routerAbEcdsaStrictRegistration.js";
40
40
  import { buildD1EcdsaWalletKeysFromBootstrap, buildD1WalletEcdsaSignerRecords, buildD1WalletRecord, parseWalletIdForIntent, thresholdEcdsaChainTargetsEqual } from "./d1RegistrationCeremonyRecords.js";
41
41
  import { deriveThresholdEcdsaKeyHandle } from "../../../../shared-ts/src/utils/thresholdEcdsaKeyHandle.js";
42
+ import { isTransientD1Error, retryTransientD1 } from "../../../../storage/d1Retry.js";
42
43
  import { admitRegistrationReservationHome, cancelRegistrationHome } from "../../../domains/walletRegistration/walletRegistrationReservation.js";
43
44
  import { listThresholdEcdsaKeyIdentityTargetsForUser } from "../../../../core/authService/thresholdEcdsaKeyInventory.js";
44
45
  import { routerAbEd25519YaoLifecycleDecisionLookupV1, routerAbEd25519YaoLifecycleDecisionV1 } from "../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoLifecycleDecision.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
+ });
2136
2158
  if (!execution.ok) return unissuedRegistrationCommit(throwIfRouterAbEd25519YaoRetryableSideEffectFailureV1(execution));
2137
2159
  const finalized = execution.finalized;
2138
2160
  if (finalized.kind !== "near_ed25519") {
@@ -2380,7 +2402,8 @@ var CloudflareD1WalletRegistrationService = class {
2380
2402
  authoritySource: verified.source,
2381
2403
  preparedCeremony: () => preparedCeremony,
2382
2404
  lifecycleDecision: initial.decision,
2383
- heldPasskeyClaim: initial.heldPasskeyClaim
2405
+ heldPasskeyClaim: initial.heldPasskeyClaim,
2406
+ readYaoAdmission: initial.readYaoAdmission
2384
2407
  }),
2385
2408
  projectReceipt: (execution) => projectWalletRegistrationSessionCommitReceiptV2({
2386
2409
  operation: "near_provisioning",
@@ -2613,10 +2636,18 @@ var CloudflareD1WalletRegistrationService = class {
2613
2636
  code: admitted.code,
2614
2637
  message: admitted.message
2615
2638
  };
2616
- if (!stored && admitted.companionWrite === "not_committed") await ceremonyStore.commitEcdsaClaim({
2617
- expected: input.snapshot,
2618
- next: authorizedCeremony(admitted.admissionRequest)
2619
- });
2639
+ if (!stored && admitted.companionWrite === "not_committed") {
2640
+ const next = authorizedCeremony(admitted.admissionRequest);
2641
+ try {
2642
+ await ceremonyStore.commitEcdsaClaim({
2643
+ expected: input.snapshot,
2644
+ next
2645
+ });
2646
+ } catch (error) {
2647
+ const committed = await ceremonyStore.getCeremony(ceremony.registrationCeremonyId);
2648
+ if (!committed || alphabetizeStringify(committed) !== alphabetizeStringify(next)) throw error;
2649
+ }
2650
+ }
2620
2651
  if (!stored && input.waitUntil && verifiedAuthority.kind === "passkey") input.waitUntil(this.walletRegistrationCommitStore.claimPasskeyAhead({
2621
2652
  registrationCeremonyId: ceremony.registrationCeremonyId,
2622
2653
  authority: verifiedAuthority,
@@ -2870,7 +2901,7 @@ var CloudflareD1WalletRegistrationService = class {
2870
2901
  }, prepared, {
2871
2902
  kind: "stored_ceremony",
2872
2903
  ceremony: activatedCeremony
2873
- }, [], { kind: "separate" }, null);
2904
+ }, [], { kind: "separate" }, null, null, { kind: "stored" });
2874
2905
  if (!execution.ok) return unissuedRegistrationCommit(throwIfRouterAbEd25519YaoRetryableSideEffectFailureV1(execution));
2875
2906
  const commit = execution.finalized;
2876
2907
  if (commit.kind !== "evm_family_ecdsa") {
@@ -3206,7 +3237,7 @@ var CloudflareD1WalletRegistrationService = class {
3206
3237
  };
3207
3238
  }
3208
3239
  }
3209
- async executeWalletRegistrationFinalize(request, prepared, source, serverTiming, initialSessionPlan, lifecycleDecision, heldPasskeyClaim = null) {
3240
+ async executeWalletRegistrationFinalize(request, prepared, source, serverTiming, initialSessionPlan, lifecycleDecision, heldPasskeyClaim, yaoAdmission) {
3210
3241
  const finalizeTiming = createD1RegistrationRouteTimingRecorder("wallets_register_finalize");
3211
3242
  const totalTiming = startD1RegistrationRouteTiming("registerFinalizeTotalMs");
3212
3243
  let startedCustody = null;
@@ -3440,12 +3471,12 @@ var CloudflareD1WalletRegistrationService = class {
3440
3471
  sessionId: activationReference.session_id
3441
3472
  },
3442
3473
  consumerBinding: requestFingerprint
3443
- })
3474
+ }, yaoAdmission)
3444
3475
  }), recordRegistrationPromiseTiming({
3445
3476
  sink: serverTiming,
3446
3477
  name: "near_finalize_authority_reserve",
3447
3478
  startedAtMs: Date.now(),
3448
- promise: this.walletRegistrationCommitStore.reserveAuthority(ceremonyAuthority, heldPasskeyClaim)
3479
+ promise: this.walletRegistrationCommitStore.reserveAuthority(ceremonyAuthority, heldPasskeyClaim, prepared)
3449
3480
  })]);
3450
3481
  if (activationConsumption.status === "rejected") throw activationConsumption.reason;
3451
3482
  if (authorityReservation.status === "rejected") throw authorityReservation.reason;
@@ -3574,7 +3605,7 @@ var CloudflareD1WalletRegistrationService = class {
3574
3605
  } else {
3575
3606
  custodyReservation = reserveCustody();
3576
3607
  startedCustody = custodyReservation;
3577
- commitWallet = await this.walletRegistrationCommitStore.reserveAuthority(ceremonyAuthority);
3608
+ commitWallet = await this.walletRegistrationCommitStore.reserveAuthority(ceremonyAuthority, null, prepared);
3578
3609
  }
3579
3610
  if (yaoDecisionFound?.kind === "decided_otherwise") return {
3580
3611
  ok: false,
@@ -176,25 +176,41 @@ async function describeSetupEd25519Admission(ed25519Yao, ceremony, branch) {
176
176
  const signingRootId = normalizeOptionalTrimmedString(ceremony.signingRootId);
177
177
  const signingRootVersion = normalizeOptionalTrimmedString(ceremony.signingRootVersion);
178
178
  if (authMethod.kind !== "passkey" || !ed25519Yao || !mint || !signingRootId || !signingRootVersion) return { status: "after_proof" };
179
- const admissionRequest = await buildRouterAbEd25519YaoProductAdmissionRequestV1({
180
- registrationCeremonyId: ceremony.registrationCeremonyId,
181
- walletId: ceremony.intent.walletId,
179
+ return await describedEd25519Admission({
180
+ ed25519Yao,
181
+ ceremony,
182
+ branch,
183
+ rpId: authMethod.rpId,
184
+ mint,
182
185
  signingRootId,
183
- signingRootVersion,
186
+ signingRootVersion
187
+ }).catch(withholdEd25519AdmissionDescription) ?? { status: "after_proof" };
188
+ }
189
+ /**
190
+ * Every step that can fail is inside this one promise, so the caller's single
191
+ * catch covers the request as well as the receipt. A wallet id that cannot
192
+ * hold the branch's signing key fails here, and respond reports it as before.
193
+ */
194
+ async function describedEd25519Admission(input) {
195
+ const admissionRequest = await buildRouterAbEd25519YaoProductAdmissionRequestV1({
196
+ registrationCeremonyId: input.ceremony.registrationCeremonyId,
197
+ walletId: input.ceremony.intent.walletId,
198
+ signingRootId: input.signingRootId,
199
+ signingRootVersion: input.signingRootVersion,
184
200
  authorityScope: {
185
201
  kind: "passkey",
186
- rpId: authMethod.rpId
202
+ rpId: input.rpId
187
203
  },
188
- branch,
189
- signingWorkerId: ed25519Yao.signingWorkerId,
190
- materialActivation: mint.materialActivation
204
+ branch: input.branch,
205
+ signingWorkerId: input.ed25519Yao.signingWorkerId,
206
+ materialActivation: input.mint.materialActivation
191
207
  });
192
- const described = await ed25519Yao.describeRegistrationAdmission(admissionRequest, mint.sessionId).catch(withholdEd25519AdmissionDescription);
193
- return described?.ok ? {
208
+ const described = await input.ed25519Yao.describeRegistrationAdmission(admissionRequest, input.mint.sessionId);
209
+ return described.ok ? {
194
210
  status: "described",
195
211
  admissionRequest,
196
212
  admissionReceipt: described.value
197
- } : { status: "after_proof" };
213
+ } : null;
198
214
  }
199
215
  function withholdEd25519AdmissionDescription() {
200
216
  return null;
@@ -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,
@@ -14013,7 +14013,7 @@ async function handleRouterApiWalletRegistrationRespond(input) {
14013
14013
  verifier: session,
14014
14014
  ...registrationUserAgentFromHeaders(input.headers) ? { userAgent: registrationUserAgentFromHeaders(input.headers) } : {}
14015
14015
  }, traceContext.value ?? void 0, serverTiming, input.waitUntil);
14016
- return routeJson(result.ok ? 200 : 400, result, { headers: ecdsaGatewayServerTimingHeaders(serverTiming) });
14016
+ return routeJson(result.ok ? 200 : result.code === "storage_unavailable" ? 503 : 400, result, { headers: ecdsaGatewayServerTimingHeaders(serverTiming) });
14017
14017
  }
14018
14018
  async function handleRouterApiWalletRegistrationNearAdmission(input) {
14019
14019
  const traceContext = parseRegistrationTraceContext(input.headers);
@@ -41109,7 +41109,7 @@ function lifecycleWriteFenceStatements(options, wallets) {
41109
41109
  //#endregion
41110
41110
  //#region src/router/cloudflare/d1/ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore.ts
41111
41111
  function createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreFromD1V1(options) {
41112
- return createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1(new D1LifecycleRecords(options, createLifecycleRecords(options)));
41112
+ return createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1(new D1LifecycleRecords(options, createD1Ed25519YaoLifecycleRecords(options)));
41113
41113
  }
41114
41114
  var D1LifecycleRecords = class {
41115
41115
  constructor(options, records) {
@@ -41168,7 +41168,7 @@ function readPartition(value) {
41168
41168
  if (!record) throw new Error("Lifecycle mutation contains an invalid partition record");
41169
41169
  return record;
41170
41170
  }
41171
- function createLifecycleRecords(options) {
41171
+ function createD1Ed25519YaoLifecycleRecords(options) {
41172
41172
  return createCloudflareD1VersionedJsonRecordStore({
41173
41173
  ...options,
41174
41174
  encode: identityVersionedJsonObject,
@@ -41811,10 +41811,19 @@ var RouterAbEd25519YaoProductRegistrationRequestScopedRuntime = class {
41811
41811
  * Gateway's ceremony record, and the result is derived from the Router's
41812
41812
  * recorded answer: no active-root lookup is needed.
41813
41813
  */
41814
- async consumeActivated(input) {
41814
+ async consumeActivated(input, admission) {
41815
41815
  const lifecycleId = input.reference.lifecycleId;
41816
- const authority = routerAbEd25519YaoAdmittedRegistrationAuthorityV1((await this.input.store.loadRegistration(lifecycleId)).state, lifecycleId);
41817
- if (!authority) return {
41816
+ let authority;
41817
+ switch (admission.kind) {
41818
+ case "stored":
41819
+ authority = routerAbEd25519YaoAdmittedRegistrationAuthorityV1((await this.input.store.loadRegistration(lifecycleId)).state, lifecycleId);
41820
+ break;
41821
+ case "snapshot":
41822
+ authority = admission.authority;
41823
+ break;
41824
+ default: return assertNeverConsumptionAdmission(admission);
41825
+ }
41826
+ if (!authority || authority.admissionRequest.scope.lifecycle_id !== lifecycleId) return {
41818
41827
  ok: false,
41819
41828
  code: "unknown_registration",
41820
41829
  message: "registration lifecycle was not found"
@@ -41963,6 +41972,9 @@ async function bindAndAdmitVerifiedRegistration(input) {
41963
41972
  };
41964
41973
  }
41965
41974
  function ignoreUnobservedDispatchRoot() {}
41975
+ function assertNeverConsumptionAdmission(admission) {
41976
+ throw new Error(`Unknown registration admission source: ${String(admission)}`);
41977
+ }
41966
41978
  //#endregion
41967
41979
  //#region src/router/domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationSideEffectBoundary.ts
41968
41980
  const SIDE_EFFECT_CLAIM_FIELDS = [
@@ -38,6 +38,10 @@ function routerAbEd25519YaoAdmittedRegistrationAuthorityV1(state, lifecycleId) {
38
38
  dispatchRoot: state.registration.dispatchRoots.get(lifecycleId)
39
39
  });
40
40
  }
41
+ /** Parse an exact ceremony read for consumption; the Router owns its mutable claim. */
42
+ function parseRouterAbEd25519YaoRegistrationAdmissionReadV1(lifecycleId, result) {
43
+ return routerAbEd25519YaoAdmittedRegistrationAuthorityV1(readCeremonyRecord(decodePartitionReadResult(result), requireLifecycleId(lifecycleId)).value, lifecycleId);
44
+ }
41
45
  function encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1(record) {
42
46
  const lifecycleId = record.kind === SHARED_RECORD_KIND ? "shared" : record.lifecycleId;
43
47
  const state = createRouterAbEd25519YaoProductRegistrationStateV1();
@@ -344,6 +348,6 @@ function isVersionedJsonValue(input) {
344
348
  return isVersionedJsonObject(input);
345
349
  }
346
350
  //#endregion
347
- export { ROUTER_AB_ED25519_YAO_SHARED_STATE_RECORD_KEY_V1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1, encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordJsonV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordV1, routerAbEd25519YaoAdmittedRegistrationAuthorityV1, routerAbEd25519YaoPartitionedStateAfterStoredCommitV1, sameRouterAbEd25519YaoSharedStateCanonicalEncodingV1 };
351
+ export { ROUTER_AB_ED25519_YAO_SHARED_STATE_RECORD_KEY_V1, createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1, encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordJsonV1, parseRouterAbEd25519YaoProductRegistrationPartitionRecordV1, parseRouterAbEd25519YaoRegistrationAdmissionReadV1, routerAbEd25519YaoAdmittedRegistrationAuthorityV1, routerAbEd25519YaoPartitionedStateAfterStoredCommitV1, sameRouterAbEd25519YaoSharedStateCanonicalEncodingV1 };
348
352
 
349
353
  //# sourceMappingURL=routerAbEd25519YaoProductRegistrationPartitionedStateStore.js.map
@@ -78,10 +78,19 @@ var RouterAbEd25519YaoProductRegistrationRequestScopedRuntime = class {
78
78
  * Gateway's ceremony record, and the result is derived from the Router's
79
79
  * recorded answer: no active-root lookup is needed.
80
80
  */
81
- async consumeActivated(input) {
81
+ async consumeActivated(input, admission) {
82
82
  const lifecycleId = input.reference.lifecycleId;
83
- const authority = routerAbEd25519YaoAdmittedRegistrationAuthorityV1((await this.input.store.loadRegistration(lifecycleId)).state, lifecycleId);
84
- if (!authority) return {
83
+ let authority;
84
+ switch (admission.kind) {
85
+ case "stored":
86
+ authority = routerAbEd25519YaoAdmittedRegistrationAuthorityV1((await this.input.store.loadRegistration(lifecycleId)).state, lifecycleId);
87
+ break;
88
+ case "snapshot":
89
+ authority = admission.authority;
90
+ break;
91
+ default: return assertNeverConsumptionAdmission(admission);
92
+ }
93
+ if (!authority || authority.admissionRequest.scope.lifecycle_id !== lifecycleId) return {
85
94
  ok: false,
86
95
  code: "unknown_registration",
87
96
  message: "registration lifecycle was not found"
@@ -230,6 +239,9 @@ async function bindAndAdmitVerifiedRegistration(input) {
230
239
  };
231
240
  }
232
241
  function ignoreUnobservedDispatchRoot() {}
242
+ function assertNeverConsumptionAdmission(admission) {
243
+ throw new Error(`Unknown registration admission source: ${String(admission)}`);
244
+ }
233
245
  //#endregion
234
246
  export { createRouterAbEd25519YaoProductRegistrationRequestScopedRuntimeV1 };
235
247
 
@@ -1659,7 +1659,7 @@ async function handleRouterApiWalletRegistrationRespond(input) {
1659
1659
  verifier: session,
1660
1660
  ...registrationUserAgentFromHeaders(input.headers) ? { userAgent: registrationUserAgentFromHeaders(input.headers) } : {}
1661
1661
  }, traceContext.value ?? void 0, serverTiming, input.waitUntil);
1662
- return routeJson(result.ok ? 200 : 400, result, { headers: ecdsaGatewayServerTimingHeaders(serverTiming) });
1662
+ return routeJson(result.ok ? 200 : result.code === "storage_unavailable" ? 503 : 400, result, { headers: ecdsaGatewayServerTimingHeaders(serverTiming) });
1663
1663
  }
1664
1664
  async function handleRouterApiWalletRegistrationNearAdmission(input) {
1665
1665
  const traceContext = parseRegistrationTraceContext(input.headers);
@@ -9331,7 +9331,7 @@ async function handleRouterApiWalletRegistrationRespond(input) {
9331
9331
  verifier: session,
9332
9332
  ...registrationUserAgentFromHeaders(input.headers) ? { userAgent: registrationUserAgentFromHeaders(input.headers) } : {}
9333
9333
  }, traceContext.value ?? void 0, serverTiming, input.waitUntil);
9334
- return routeJson(result.ok ? 200 : 400, result, { headers: ecdsaGatewayServerTimingHeaders(serverTiming) });
9334
+ return routeJson(result.ok ? 200 : result.code === "storage_unavailable" ? 503 : 400, result, { headers: ecdsaGatewayServerTimingHeaders(serverTiming) });
9335
9335
  }
9336
9336
  async function handleRouterApiWalletRegistrationNearAdmission(input) {
9337
9337
  const traceContext = parseRegistrationTraceContext(input.headers);
@@ -1,3 +1,4 @@
1
+ import { SIGNING_SESSION_SEAL_GROUP_ID } from "../../../../shared-ts/src/utils/signingSessionSeal.js";
1
2
  import { __wbg_init, init_shamir3pass_runtime, shamir3pass_add_lock, shamir3pass_derive_lock_key_handle, shamir3pass_destroy_lock_key_handle, shamir3pass_remove_lock } from "../../../../wasm/shamir3pass_runtime/pkg/shamir3pass_runtime.js";
2
3
  //#region src/threshold/session/signingSessionSeal/crypto/shamir3PassWasm.ts
3
4
  const SHAMIR3PASS_WASM_PATH_CANDIDATES = [
@@ -59,6 +60,23 @@ async function ensureSigningSessionSealShamir3PassWasm() {
59
60
  if (!initialization) initialization = isNodeEnvironment() ? initializeNodeRuntime() : initializeWorkerRuntime();
60
61
  await initialization;
61
62
  }
63
+ /** The group element 2, the smallest value the lock operations accept. */
64
+ const WARM_UP_ELEMENT_B64U = "Ag";
65
+ const WARM_UP_CONTEXT = new TextEncoder().encode("seams/signing-session-seal/warm-up/v1");
66
+ /**
67
+ * Starts the module and runs one lock round under a key derived from zero
68
+ * bytes, so the first seal in this isolate runs warm code. It uses no secret,
69
+ * and its result is discarded.
70
+ */
71
+ async function warmSigningSessionSealRuntime() {
72
+ await ensureSigningSessionSealShamir3PassWasm();
73
+ const handle = shamir3pass_derive_lock_key_handle(SIGNING_SESSION_SEAL_GROUP_ID, new Uint8Array(32), WARM_UP_CONTEXT.slice());
74
+ try {
75
+ shamir3pass_remove_lock(handle, shamir3pass_add_lock(handle, WARM_UP_ELEMENT_B64U));
76
+ } finally {
77
+ shamir3pass_destroy_lock_key_handle(handle);
78
+ }
79
+ }
62
80
  async function deriveSigningSessionSealLockKeyHandle(input) {
63
81
  await ensureSigningSessionSealShamir3PassWasm();
64
82
  const rootSecret32 = input.rootSecret32.slice();
@@ -82,6 +100,6 @@ function destroySigningSessionSealLockKeyHandle(handle) {
82
100
  return shamir3pass_destroy_lock_key_handle(handle);
83
101
  }
84
102
  //#endregion
85
- export { addSigningSessionSealLock, deriveSigningSessionSealLockKeyHandle, destroySigningSessionSealLockKeyHandle, removeSigningSessionSealLock };
103
+ export { addSigningSessionSealLock, deriveSigningSessionSealLockKeyHandle, destroySigningSessionSealLockKeyHandle, removeSigningSessionSealLock, warmSigningSessionSealRuntime };
86
104
 
87
105
  //# sourceMappingURL=shamir3PassWasm.js.map
@@ -1,7 +1,8 @@
1
- import { type CloudflareD1VersionedJsonRecordStoreOptions } from '../versionedJson/d1VersionedJsonRecordStore';
1
+ import { type CloudflareD1VersionedJsonRecordStore, type CloudflareD1VersionedJsonRecordStoreOptions } from '../versionedJson/d1VersionedJsonRecordStore';
2
2
  import type { VersionedJsonObject } from '../../../framework/versionedJsonRecordStore';
3
3
  import { type RouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1 } from '../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoProductRegistrationPartitionedStateStore';
4
4
  export type RouterAbEd25519YaoProductRegistrationPartitionedStateD1OptionsV1 = Omit<CloudflareD1VersionedJsonRecordStoreOptions<VersionedJsonObject>, 'encode' | 'parse'>;
5
5
  export declare function createRouterAbEd25519YaoProductRegistrationPartitionedStateStoreFromD1V1(options: RouterAbEd25519YaoProductRegistrationPartitionedStateD1OptionsV1): RouterAbEd25519YaoProductRegistrationPartitionedStateStoreV1;
6
6
  export declare function evictWalletEd25519CapabilityCache(options: RouterAbEd25519YaoProductRegistrationPartitionedStateD1OptionsV1, walletId: string): Promise<void>;
7
+ export declare function createD1Ed25519YaoLifecycleRecords(options: RouterAbEd25519YaoProductRegistrationPartitionedStateD1OptionsV1): CloudflareD1VersionedJsonRecordStore<VersionedJsonObject>;
7
8
  //# sourceMappingURL=d1Ed25519YaoProductRegistrationPartitionedStateStore.d.ts.map
@@ -5,6 +5,7 @@ import { type RegistrationAuthority } from '../../../../../../shared-ts/src/util
5
5
  import type { WalletRecord, WalletSignerRecord } from '../../../../core/WalletStore';
6
6
  import type { D1DatabaseLike, D1PreparedStatementLike, D1ResultLike } from '../../../../storage/tenantRoute';
7
7
  import type { D1EmailOtpRegistrationCommitPlan } from '../emailOtp/d1EmailOtpRegistrationEnrollmentFinalizer';
8
+ import type { D1WalletRegistrationOperationPreparedV1 } from './d1WalletRegistrationPreparation';
8
9
  export type D1RegistrationCommitBatch = (statements: readonly D1PreparedStatementLike[]) => Promise<readonly D1ResultLike[]>;
9
10
  type ReservedWalletRegistrationCommit = (input: D1WalletRegistrationCommitInput, executeBatch?: D1RegistrationCommitBatch) => Promise<void>;
10
11
  type D1WalletRegistrationCommitBase = {
@@ -40,9 +41,11 @@ export type HeldRegistrationPasskeyClaim = {
40
41
  export interface D1WalletRegistrationCommitStore {
41
42
  /**
42
43
  * Claims the authority's passkey through shared authority, unless `held`
43
- * records that the same claim was already granted for this ceremony.
44
+ * records that the same claim was already granted for this ceremony. With
45
+ * `founding`, it also reads that authority and auth method as stored, beside
46
+ * the claim, so the commit writes them without a read of its own.
44
47
  */
45
- reserveAuthority(authority: RegistrationAuthority, held?: HeldRegistrationPasskeyClaim | null): Promise<ReservedWalletRegistrationCommit>;
48
+ reserveAuthority(authority: RegistrationAuthority, held: HeldRegistrationPasskeyClaim | null, founding: FoundingRecordIds | null): Promise<ReservedWalletRegistrationCommit>;
46
49
  /**
47
50
  * Claims a verified passkey before finalization and records a granted
48
51
  * claim. A refusal records nothing, so finalization claims again and
@@ -58,6 +61,7 @@ export interface D1WalletRegistrationCommitStore {
58
61
  /** Removes the record of a finalized ceremony. Shared authority keeps the claim. */
59
62
  deleteHeldPasskeyClaim(registrationCeremonyId: string): Promise<void>;
60
63
  }
64
+ type FoundingRecordIds = Pick<D1WalletRegistrationOperationPreparedV1, 'walletAuthorityId' | 'walletAuthMethodId'>;
61
65
  export declare class CloudflareD1WalletRegistrationCommitStore implements D1WalletRegistrationCommitStore {
62
66
  private readonly database;
63
67
  private readonly scope;
@@ -70,7 +74,7 @@ export declare class CloudflareD1WalletRegistrationCommitStore implements D1Wall
70
74
  readonly projectId: string;
71
75
  readonly envId: string;
72
76
  });
73
- reserveAuthority(authority: RegistrationAuthority, held?: HeldRegistrationPasskeyClaim | null): Promise<ReservedWalletRegistrationCommit>;
77
+ reserveAuthority(authority: RegistrationAuthority, held: HeldRegistrationPasskeyClaim | null, founding: FoundingRecordIds | null): Promise<ReservedWalletRegistrationCommit>;
74
78
  claimPasskeyAhead(input: {
75
79
  readonly registrationCeremonyId: string;
76
80
  readonly authority: RegistrationAuthority;
@@ -1,3 +1,4 @@
1
+ import type { createD1Ed25519YaoLifecycleRecords } from '../ed25519Yao/d1Ed25519YaoProductRegistrationPartitionedStateStore';
1
2
  import type { D1DatabaseLike } from '../../../../storage/tenantRoute';
2
3
  import type { WalletRegistrationHomeAuthority } from '../../../domains/walletRegistration/walletRegistrationReservation';
3
4
  import type { CloudflareD1RegistrationCeremonyIntentStore } from './d1RegistrationCeremonyStore';
@@ -13,8 +14,9 @@ export declare class D1WalletRegistrationRead {
13
14
  readonly operations: D1WalletOperationStore<D1WalletRegistrationNearProvisioningSideEffectRecord>;
14
15
  private readonly getCeremonies;
15
16
  private readonly decisions;
17
+ private readonly yaoRecords;
16
18
  private readonly passkeyClaims;
17
- constructor(database: D1DatabaseLike, authority: D1WalletExecutionAuthority | null, operations: D1WalletOperationStore<D1WalletRegistrationNearProvisioningSideEffectRecord>, getCeremonies: () => CloudflareD1RegistrationCeremonyIntentStore, decisions: CloudflareD1Ed25519YaoLifecycleDecisionStoreV1, passkeyClaims: Pick<D1WalletRegistrationCommitStore, 'prepareHeldPasskeyClaimRead' | 'parseHeldPasskeyClaimRead'>);
19
+ constructor(database: D1DatabaseLike, authority: D1WalletExecutionAuthority | null, operations: D1WalletOperationStore<D1WalletRegistrationNearProvisioningSideEffectRecord>, getCeremonies: () => CloudflareD1RegistrationCeremonyIntentStore, decisions: CloudflareD1Ed25519YaoLifecycleDecisionStoreV1, yaoRecords: ReturnType<typeof createD1Ed25519YaoLifecycleRecords>, passkeyClaims: Pick<D1WalletRegistrationCommitStore, 'prepareHeldPasskeyClaimRead' | 'parseHeldPasskeyClaimRead'>);
18
20
  readRespond(home: Parameters<WalletRegistrationHomeAuthority['admitHome']>[0]): Promise<{
19
21
  readonly ok: false;
20
22
  readonly code: string;
@@ -41,6 +43,8 @@ export declare class D1WalletRegistrationRead {
41
43
  decision: import("../../../domains/ed25519Yao/capabilityLifecycle/routerAbEd25519YaoLifecycleDecision").RouterAbEd25519YaoLifecycleDecisionV1 | null;
42
44
  heldPasskeyClaim: import("./d1WalletRegistrationCommitStore").HeldRegistrationPasskeyClaim | null;
43
45
  readCeremony: () => Promise<import("../../../../core/RegistrationCeremonyStore").StoredWalletRegistrationCeremony | null>;
46
+ readYaoAdmission: () => import("../../../domains/ed25519Yao/registration/routerAbEd25519YaoRegistrationExecutionRecord").RouterAbEd25519YaoRegistrationExecutionAuthorityV1 | null;
44
47
  }>;
48
+ private parseYaoAdmission;
45
49
  }
46
50
  //# sourceMappingURL=d1WalletRegistrationRead.d.ts.map
@@ -260,7 +260,13 @@ export declare class CloudflareD1WalletRegistrationService {
260
260
  provisionEd25519YaoWalletSession(request: RouterAbEd25519YaoVerifiedWalletUnlockRequestV1): Promise<RouterAbEd25519YaoVerifiedWalletUnlockResponseV1>;
261
261
  setupWalletRegistration(input: WalletRegistrationSetupInput): Promise<WalletRegistrationSetupResponseV2>;
262
262
  authorizeWalletRegistrationNearAdmission(input: WalletRegistrationNearAdmissionInput): Promise<WalletRegistrationNearAdmissionResponseV2>;
263
+ /**
264
+ * Respond replays exactly, so a transient D1 fault runs it again, as a client
265
+ * retry would. A fault that outlasts the retries reports `storage_unavailable`
266
+ * without the driver's text.
267
+ */
263
268
  respondWalletRegistration(input: WalletRegistrationRespondInput, traceContext?: RouterAbTraceContextV1, timingSink?: Array<readonly [string, number]>, waitUntil?: (promise: Promise<unknown>) => void): Promise<WalletRegistrationRespondResponseV2>;
269
+ private respondWalletRegistrationAttempt;
264
270
  /** For callers that must read the context before finalize tombstones it. */
265
271
  private registrationOwnerProofWithContext;
266
272
  authorizeNearRegistrationContinuation(input: {
@@ -1,3 +1,4 @@
1
+ import type { RouterAbEd25519YaoRegistrationExecutionAuthorityV1 } from '../registration/routerAbEd25519YaoRegistrationExecutionRecord';
1
2
  import { type AddSignerIntentV1, type WalletId } from '../../../../../../shared-ts/src/utils/registrationIntent';
2
3
  import { type RegistrationEd25519AuthorityScope } from '../../../../../../shared-ts/src/utils/registrationIds';
3
4
  import { type RegistrationNearEd25519SignerPlan } from '../../../../../../shared-ts/src/utils/registrationSignerPlan';
@@ -58,6 +59,14 @@ export type RouterAbEd25519YaoWalletSessionMintInputV1 = (RouterAbEd25519YaoWall
58
59
  readonly expiresAtMs: number;
59
60
  readonly remainingUses: number;
60
61
  });
62
+ /** Admission is immutable. A finalization batch may supply it before consumption. */
63
+ export type RouterAbEd25519YaoConsumptionAdmissionV1 = {
64
+ readonly kind: 'stored';
65
+ readonly authority?: never;
66
+ } | {
67
+ readonly kind: 'snapshot';
68
+ readonly authority: RouterAbEd25519YaoRegistrationExecutionAuthorityV1 | null;
69
+ };
61
70
  export type RouterAbEd25519YaoProductRegistrationRuntimeV1 = RouterAbEd25519YaoPersistedActiveCapabilityInstallerV1 & RouterAbEd25519YaoActiveCapabilityResolverV1 & RouterAbEd25519YaoActiveCapabilityRehydratorV1 & {
62
71
  readonly kind: 'router_ab_ed25519_yao_product_registration_runtime_v1';
63
72
  readonly signingWorkerId: string;
@@ -87,7 +96,7 @@ export type RouterAbEd25519YaoProductRegistrationRuntimeV1 = RouterAbEd25519YaoP
87
96
  readonly trace: RouterAbTraceContextV1;
88
97
  }): Promise<RouterAbEd25519YaoTimedRegistrationExecutionResultV1>;
89
98
  bindVerifiedIntent(input: RouterAbEd25519YaoVerifiedActivationIntentV1): Promise<RouterAbEd25519YaoRegistrationIntentBindingResult>;
90
- consumeActivated(request: RouterAbEd25519YaoActivationConsumptionRequestV1): Promise<RouterAbEd25519YaoActivationConsumptionResultV1>;
99
+ consumeActivated(request: RouterAbEd25519YaoActivationConsumptionRequestV1, admission: RouterAbEd25519YaoConsumptionAdmissionV1): Promise<RouterAbEd25519YaoActivationConsumptionResultV1>;
91
100
  };
92
101
  /** A tenant-root read in flight, with the signing root ID that it was started for. */
93
102
  export type RouterAbEd25519YaoStartedDispatchRootV1 = {
@@ -118,7 +118,9 @@ export declare function createRouterAbEd25519YaoProductRegistrationPartitionedSt
118
118
  * The admitted authority a registration execute is checked against, from a
119
119
  * loaded ceremony state, or `null` when the lifecycle is not admitted.
120
120
  */
121
- export declare function routerAbEd25519YaoAdmittedRegistrationAuthorityV1(state: RouterAbEd25519YaoRegistrationCeremonySnapshotV1['state'], lifecycleId: string): RouterAbEd25519YaoRegistrationExecutionAuthorityV1 | null;
121
+ export declare function routerAbEd25519YaoAdmittedRegistrationAuthorityV1(state: Pick<RouterAbEd25519YaoProductRegistrationCeremonyStateV1, 'registration' | 'authorization'>, lifecycleId: string): RouterAbEd25519YaoRegistrationExecutionAuthorityV1 | null;
122
+ /** Parse an exact ceremony read for consumption; the Router owns its mutable claim. */
123
+ export declare function parseRouterAbEd25519YaoRegistrationAdmissionReadV1(lifecycleId: string, result: VersionedJsonRecordReadResult<VersionedJsonObject>): RouterAbEd25519YaoRegistrationExecutionAuthorityV1 | null;
122
124
  export declare function encodeRouterAbEd25519YaoProductRegistrationPartitionRecordV1(record: RouterAbEd25519YaoProductRegistrationPartitionRecordV1): VersionedJsonObject;
123
125
  export declare function sameRouterAbEd25519YaoSharedStateCanonicalEncodingV1(left: RouterAbEd25519YaoSharedStateCanonicalEncodingV1, right: RouterAbEd25519YaoSharedStateCanonicalEncodingV1): boolean;
124
126
  export declare function parseRouterAbEd25519YaoProductRegistrationPartitionRecordV1(input: unknown): RouterAbEd25519YaoProductRegistrationPartitionRecordV1 | null;
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Starts the module and runs one lock round under a key derived from zero
3
+ * bytes, so the first seal in this isolate runs warm code. It uses no secret,
4
+ * and its result is discarded.
5
+ */
6
+ export declare function warmSigningSessionSealRuntime(): Promise<void>;
1
7
  export declare function deriveSigningSessionSealLockKeyHandle(input: {
2
8
  readonly groupId: string;
3
9
  readonly rootSecret32: Uint8Array;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seams/wallet-server",
3
- "version": "0.10.0",
3
+ "version": "0.10.2",
4
4
  "type": "module",
5
5
  "description": "Seams server TypeScript SDK for NEAR and EVM-family wallets",
6
6
  "main": "./dist/esm/index.js",