@dynamic-labs-wallet/browser 1.0.27 → 1.0.29

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.
package/index.cjs CHANGED
@@ -2760,7 +2760,7 @@ class DynamicWalletClient {
2760
2760
  };
2761
2761
  }
2762
2762
  }
2763
- async serverInitializeKeyGen({ chainName, clientKeygenIds, dynamicRequestId, thresholdSignatureScheme, bitcoinConfig, onError, onCeremonyComplete }) {
2763
+ async serverInitializeKeyGen({ chainName, clientKeygenIds, dynamicRequestId, thresholdSignatureScheme, bitcoinConfig, businessAccountId, onError, onCeremonyComplete }) {
2764
2764
  // Initialize keygen, create room, and create the wallet account on the server
2765
2765
  const data = await this.apiClient.createWalletAccount({
2766
2766
  chainName,
@@ -2768,6 +2768,7 @@ class DynamicWalletClient {
2768
2768
  dynamicRequestId,
2769
2769
  thresholdSignatureScheme,
2770
2770
  bitcoinConfig,
2771
+ businessAccountId,
2771
2772
  onError,
2772
2773
  onCeremonyComplete
2773
2774
  });
@@ -2992,7 +2993,7 @@ class DynamicWalletClient {
2992
2993
  shouldRetry: (error)=>!isNonRetryableCeremonyError(error)
2993
2994
  });
2994
2995
  }
2995
- async runKeyGenAttempt({ chainName, thresholdSignatureScheme, bitcoinConfig, onCeremonyComplete, traceContext, password, signedSessionId }) {
2996
+ async runKeyGenAttempt({ chainName, thresholdSignatureScheme, bitcoinConfig, businessAccountId, onCeremonyComplete, traceContext, password, signedSessionId }) {
2996
2997
  const dynamicRequestId = uuid.v4();
2997
2998
  try {
2998
2999
  this.assertPasswordRequired(password);
@@ -3022,6 +3023,7 @@ class DynamicWalletClient {
3022
3023
  dynamicRequestId,
3023
3024
  thresholdSignatureScheme,
3024
3025
  bitcoinConfig,
3026
+ businessAccountId,
3025
3027
  onCeremonyComplete
3026
3028
  });
3027
3029
  this.logger.info('[DynamicWaasWalletClient] Server key generation initialized', _extends({
@@ -3052,6 +3054,7 @@ class DynamicWalletClient {
3052
3054
  dynamicRequestId,
3053
3055
  thresholdSignatureScheme,
3054
3056
  bitcoinConfig,
3057
+ businessAccountId,
3055
3058
  onCeremonyComplete
3056
3059
  })
3057
3060
  });
@@ -3729,7 +3732,7 @@ class DynamicWalletClient {
3729
3732
  // would race ceremony_complete and the atomic swap could target the stale
3730
3733
  // row. refresh's API call returns on room_created (not the local MPC
3731
3734
  // result), so the gate await sits between the local MPC and the backup.
3732
- const ceremonyGate = this.createCeremonyTerminalGate((_accountAddress, _walletId, shareSetId, shareSetType)=>{
3735
+ const ceremonyGate = this.createCeremonyTerminalGate(({ shareSetId, shareSetType })=>{
3733
3736
  this.logger.info('[WaasRefresh] ceremony_complete received', {
3734
3737
  context: {
3735
3738
  walletId: wallet.walletId,
@@ -3932,7 +3935,7 @@ class DynamicWalletClient {
3932
3935
  existingClientKeyShares
3933
3936
  };
3934
3937
  }
3935
- async reshare({ chainName, accountAddress, oldThresholdSignatureScheme, newThresholdSignatureScheme, password = undefined, signedSessionId, cloudProviders = [], delegateToProjectEnvironment = false, mfaToken, elevatedAccessToken, revokeDelegation = false, googleDriveAccessToken }) {
3938
+ async reshare({ chainName, accountAddress, oldThresholdSignatureScheme, newThresholdSignatureScheme, password = undefined, signedSessionId, cloudProviders = [], delegateToProjectEnvironment = false, mfaToken, elevatedAccessToken, revokeDelegation = false, googleDriveAccessToken, googleDriveTokenSource }) {
3936
3939
  return WalletQueueManager.queueHeavyOperation(accountAddress, core.WalletOperation.RESHARE, ()=>this.internalReshare({
3937
3940
  chainName,
3938
3941
  accountAddress,
@@ -3945,9 +3948,231 @@ class DynamicWalletClient {
3945
3948
  mfaToken,
3946
3949
  elevatedAccessToken,
3947
3950
  revokeDelegation,
3948
- googleDriveAccessToken
3951
+ googleDriveAccessToken,
3952
+ googleDriveTokenSource
3949
3953
  }));
3950
3954
  }
3955
+ /** Reshare into a new 2/2 share set for the target signer; seed it to CKS
3956
+ * on their behalf via a single-use grant. Does not touch the caller's set. */ async reshareToNewSignerShareSet({ chainName, accountAddress, businessAccountId, signerType = 'endUser', targetSignerIdentity, password = undefined, signedSessionId }) {
3957
+ var _backup_keyShareIds;
3958
+ const dynamicRequestId = uuid.v4();
3959
+ const ceremonyStartTime = Date.now();
3960
+ // Log identifier shape only — value may be email/phone.
3961
+ const logContext = {
3962
+ dynamicRequestId,
3963
+ businessAccountId,
3964
+ chainName,
3965
+ accountAddress,
3966
+ signerType,
3967
+ identityMode: targetSignerIdentity.userId ? 'userId' : 'identifier',
3968
+ identifierType: targetSignerIdentity.identifierType
3969
+ };
3970
+ this.logger.info('[BusinessAccountAddSigner] start reshareToNewSignerShareSet', {
3971
+ context: logContext
3972
+ });
3973
+ const wallet = await this.getWallet({
3974
+ accountAddress,
3975
+ walletOperation: core.WalletOperation.REACH_ALL_PARTIES,
3976
+ password,
3977
+ signedSessionId
3978
+ });
3979
+ const walletId = wallet.walletId;
3980
+ const currentScheme = this.getWalletFromMap(accountAddress).thresholdSignatureScheme;
3981
+ const bitcoinConfig = this.getBitcoinConfigForChain(chainName, accountAddress);
3982
+ // Same-parties reshare — only the caller's share participates.
3983
+ const [existingClientShare] = await this.ensureClientShare(accountAddress);
3984
+ const existingClientKeygenId = await this.getExportId({
3985
+ chainName,
3986
+ clientKeyShare: existingClientShare,
3987
+ bitcoinConfig
3988
+ });
3989
+ // Gate matches internalRefresh/Reshare — SSE error rejects awaitTerminal.
3990
+ let newShareSetId;
3991
+ let resolvedTargetUserId;
3992
+ let clientKeyshareBackupGrant;
3993
+ const ceremonyGate = this.createCeremonyTerminalGate((payload)=>{
3994
+ newShareSetId = payload.shareSetId;
3995
+ resolvedTargetUserId = payload.targetUserId;
3996
+ clientKeyshareBackupGrant = payload.clientKeyshareBackupGrant;
3997
+ this.logger.info('[BusinessAccountAddSigner] ceremony_complete received', {
3998
+ context: _extends({}, logContext, {
3999
+ walletId,
4000
+ newShareSetId: payload.shareSetId,
4001
+ shareSetType: payload.shareSetType,
4002
+ hasTargetUserId: !!payload.targetUserId,
4003
+ hasClientKeyshareBackupGrant: !!payload.clientKeyshareBackupGrant
4004
+ })
4005
+ });
4006
+ });
4007
+ const data = await this.apiClient.addBusinessAccountSignerCeremony({
4008
+ businessAccountId,
4009
+ walletId,
4010
+ clientKeygenIds: [
4011
+ existingClientKeygenId
4012
+ ],
4013
+ oldThresholdSignatureScheme: currentScheme,
4014
+ signerType,
4015
+ userId: targetSignerIdentity.userId,
4016
+ identifier: targetSignerIdentity.identifier,
4017
+ identifierType: targetSignerIdentity.identifierType,
4018
+ dynamicRequestId,
4019
+ onError: ceremonyGate.onError,
4020
+ onCeremonyComplete: ceremonyGate.onCeremonyComplete
4021
+ });
4022
+ const { roomId, serverKeygenIds, newServerKeygenIds = [] } = data;
4023
+ const newMpcConfig = core.MPC_CONFIG[core.ThresholdSignatureScheme.TWO_OF_TWO];
4024
+ const allPartyKeygenIds = [
4025
+ existingClientKeygenId,
4026
+ ...serverKeygenIds,
4027
+ ...newServerKeygenIds
4028
+ ];
4029
+ const mpcSigner = getMPCSigner({
4030
+ chainName,
4031
+ baseRelayUrl: this.baseMPCRelayApiUrl,
4032
+ bitcoinConfig
4033
+ });
4034
+ const newSignerClientShare = await mpcSigner.reshareRemainingParty(roomId, newMpcConfig.threshold, existingClientShare, allPartyKeygenIds);
4035
+ try {
4036
+ await ceremonyGate.awaitTerminal();
4037
+ } catch (streamError) {
4038
+ this.logger.error('[BusinessAccountAddSigner] ceremony stream error', {
4039
+ context: _extends({}, logContext, {
4040
+ walletId,
4041
+ roomId,
4042
+ error: streamError instanceof Error ? streamError.message : String(streamError),
4043
+ failure_reason: 'ceremony_stream_error'
4044
+ })
4045
+ });
4046
+ throw streamError;
4047
+ }
4048
+ if (!newShareSetId) {
4049
+ this.logger.error('[BusinessAccountAddSigner] ceremony_complete missing shareSetId', {
4050
+ context: _extends({}, logContext, {
4051
+ walletId,
4052
+ roomId,
4053
+ failure_reason: 'ceremony_complete_missing_share_set_id'
4054
+ })
4055
+ });
4056
+ throw new Error('addSigner reshare did not return a shareSetId');
4057
+ }
4058
+ // Target has no password yet — encryptKeyShare falls back to the env-default key.
4059
+ const encrypted = await this.encryptKeyShare({
4060
+ keyShare: newSignerClientShare
4061
+ });
4062
+ // Server contract: targetUserId is always set on successful ceremony_complete.
4063
+ if (!resolvedTargetUserId) {
4064
+ this.logger.error('[BusinessAccountAddSigner] no target userId resolved for on-behalf backup', {
4065
+ context: _extends({}, logContext, {
4066
+ walletId,
4067
+ newShareSetId,
4068
+ failure_reason: 'no_target_user_id_resolved'
4069
+ })
4070
+ });
4071
+ throw new Error('addSigner ceremony did not resolve a target userId for the on-behalf backup');
4072
+ }
4073
+ const targetUserId = resolvedTargetUserId;
4074
+ this.logger.info('[BusinessAccountAddSigner] backupOnBehalfOfAddedSigner -> client-keyshare-service', {
4075
+ context: _extends({}, logContext, {
4076
+ walletId,
4077
+ newShareSetId,
4078
+ hasClientKeyshareBackupGrant: !!clientKeyshareBackupGrant
4079
+ })
4080
+ });
4081
+ // Grant is primary auth; signedSession is belt-and-suspenders. Refresh-on-400
4082
+ // handles nonce reuse; transient 429/5xx retry via alsoRetry. 401/403 = grant
4083
+ // rejected (single-use, not replayable) → caller must re-run addSigner.
4084
+ let backup;
4085
+ try {
4086
+ let resolvedSignedSessionId = signedSessionId;
4087
+ backup = await retryPromise(()=>this.apiClient.backupOnBehalfOfAddedSigner({
4088
+ walletId,
4089
+ targetUserId,
4090
+ encryptedAccountCredentials: [
4091
+ encrypted
4092
+ ],
4093
+ passwordEncrypted: false,
4094
+ encryptionVersion: ENCRYPTION_VERSION_CURRENT,
4095
+ clientKeyshareBackupGrant,
4096
+ signedSessionId: resolvedSignedSessionId,
4097
+ dynamicRequestId
4098
+ }), {
4099
+ operationName: 'backupOnBehalfOfAddedSigner',
4100
+ shouldRetry: this.signedSession.refreshShouldRetry({
4101
+ onRefreshed: (id)=>{
4102
+ resolvedSignedSessionId = id;
4103
+ },
4104
+ operationName: 'backupOnBehalfOfAddedSigner',
4105
+ logContext: _extends({}, logContext, {
4106
+ walletId,
4107
+ dynamicRequestId
4108
+ }),
4109
+ alsoRetry: (status)=>status === undefined || status === 429 || status !== undefined && status >= 500
4110
+ })
4111
+ });
4112
+ } catch (err) {
4113
+ var _err_response;
4114
+ const status = err == null ? void 0 : (_err_response = err.response) == null ? void 0 : _err_response.status;
4115
+ if (clientKeyshareBackupGrant && (status === 401 || status === 403)) {
4116
+ this.logger.error('[BusinessAccountAddSigner] client_keyshare_backup_grant_exhausted', {
4117
+ context: _extends({}, logContext, {
4118
+ walletId,
4119
+ newShareSetId,
4120
+ status,
4121
+ failure_reason: 'grant_exhausted'
4122
+ })
4123
+ });
4124
+ }
4125
+ throw err;
4126
+ }
4127
+ const externalKeyShareId = (_backup_keyShareIds = backup.keyShareIds) == null ? void 0 : _backup_keyShareIds[0];
4128
+ if (!externalKeyShareId) {
4129
+ this.logger.error('[BusinessAccountAddSigner] on-behalf backup returned no keyShareId', {
4130
+ context: _extends({}, logContext, {
4131
+ walletId,
4132
+ newShareSetId,
4133
+ failure_reason: 'cks_write_no_keyshare_id'
4134
+ })
4135
+ });
4136
+ throw new Error('on-behalf backup did not return a keyShareId');
4137
+ }
4138
+ this.logger.info('[BusinessAccountAddSigner] on-behalf backup stored', {
4139
+ context: _extends({}, logContext, {
4140
+ walletId,
4141
+ newShareSetId,
4142
+ externalKeyShareId
4143
+ })
4144
+ });
4145
+ // Activate the share-set ↔ keyShareId mapping on redcoast.
4146
+ await retryPromise(()=>this.apiClient.markKeySharesAsBackedUp({
4147
+ walletId,
4148
+ shareSetId: newShareSetId,
4149
+ locations: [
4150
+ {
4151
+ location: core.BackupLocation.DYNAMIC,
4152
+ externalKeyShareId
4153
+ }
4154
+ ],
4155
+ dynamicRequestId,
4156
+ businessAccountId
4157
+ }), {
4158
+ operationName: 'addSigner.markKeySharesAsBackedUp',
4159
+ shouldRetry: (error)=>{
4160
+ const status = getHttpStatus(error);
4161
+ return status === undefined || status === 429 || status !== undefined && status >= 500;
4162
+ }
4163
+ });
4164
+ this.logger.info('[BusinessAccountAddSigner] done — share set activated', {
4165
+ context: _extends({}, logContext, {
4166
+ walletId,
4167
+ newShareSetId,
4168
+ externalKeyShareId,
4169
+ ceremony_duration_ms: Date.now() - ceremonyStartTime
4170
+ })
4171
+ });
4172
+ return {
4173
+ shareSetId: newShareSetId
4174
+ };
4175
+ }
3951
4176
  // Surfaces server-side bugs in the ceremony_complete payload without
3952
4177
  // breaking the operation. The two cases:
3953
4178
  //
@@ -4001,7 +4226,10 @@ class DynamicWalletClient {
4001
4226
  // The reject handle is wired synchronously (Promise executors run inline)
4002
4227
  // before the API call starts, so an immediate onError can never be dropped.
4003
4228
  // The lost branch's rejection is swallowed so it never surfaces as unhandled.
4004
- createCeremonyTerminalGate(onCeremonyComplete) {
4229
+ /**
4230
+ * Ceremony-complete payload — typed object so addSigner-only fields are
4231
+ * namespaced and `clientKeyshareBackupGrant` never sits in a positional slot.
4232
+ */ createCeremonyTerminalGate(onCeremonyComplete) {
4005
4233
  let resolveComplete;
4006
4234
  const completePromise = new Promise((resolve)=>{
4007
4235
  resolveComplete = resolve;
@@ -4015,9 +4243,19 @@ class DynamicWalletClient {
4015
4243
  let fired = false;
4016
4244
  return {
4017
4245
  onError: rejectOnError,
4018
- onCeremonyComplete: (accountAddress, walletId, shareSetId, shareSetType)=>{
4246
+ // Positional shape preserved at the wire boundary — eventStream/utils
4247
+ // invokes this with positional args. Translates to the typed object
4248
+ // for the caller-supplied cb.
4249
+ onCeremonyComplete: (accountAddress, walletId, shareSetId, shareSetType, targetUserId, clientKeyshareBackupGrant)=>{
4019
4250
  fired = true;
4020
- onCeremonyComplete == null ? void 0 : onCeremonyComplete(accountAddress, walletId, shareSetId, shareSetType);
4251
+ onCeremonyComplete == null ? void 0 : onCeremonyComplete({
4252
+ accountAddress,
4253
+ walletId,
4254
+ shareSetId,
4255
+ shareSetType,
4256
+ targetUserId,
4257
+ clientKeyshareBackupGrant
4258
+ });
4021
4259
  resolveComplete();
4022
4260
  },
4023
4261
  awaitTerminal: ()=>Promise.race([
@@ -4189,7 +4427,7 @@ class DynamicWalletClient {
4189
4427
  clientKeySharesBackupInfo: updatedBackupInfo
4190
4428
  } : {}));
4191
4429
  }
4192
- async internalReshare({ chainName, accountAddress, oldThresholdSignatureScheme, newThresholdSignatureScheme, password = undefined, signedSessionId, cloudProviders = [], delegateToProjectEnvironment = false, mfaToken, elevatedAccessToken, revokeDelegation = false, googleDriveAccessToken }) {
4430
+ async internalReshare({ chainName, accountAddress, oldThresholdSignatureScheme, newThresholdSignatureScheme, password = undefined, signedSessionId, cloudProviders = [], delegateToProjectEnvironment = false, mfaToken, elevatedAccessToken, revokeDelegation = false, googleDriveAccessToken, googleDriveTokenSource }) {
4193
4431
  const dynamicRequestId = uuid.v4();
4194
4432
  // Password validation - wrapped in try-catch for consistent error handling
4195
4433
  // This path should NOT wipe key shares on failure (shares remain valid)
@@ -4265,7 +4503,7 @@ class DynamicWalletClient {
4265
4503
  // walletMap.shareSetId rotation lands before storeEncryptedBackupByWallet
4266
4504
  // reads it; without it, backup would race ceremony_complete and the atomic
4267
4505
  // swap could target the stale row.
4268
- const ceremonyGate = this.createCeremonyTerminalGate((_accountAddress, _walletId, shareSetId, shareSetType)=>{
4506
+ const ceremonyGate = this.createCeremonyTerminalGate(({ shareSetId, shareSetType })=>{
4269
4507
  this.logger.info('[WaasReshare] ceremony_complete received', {
4270
4508
  context: {
4271
4509
  walletId: wallet.walletId,
@@ -4445,7 +4683,8 @@ class DynamicWalletClient {
4445
4683
  password,
4446
4684
  signedSessionId,
4447
4685
  distribution,
4448
- googleDriveAccessToken
4686
+ googleDriveAccessToken,
4687
+ googleDriveTokenSource
4449
4688
  })
4450
4689
  });
4451
4690
  // Store client key shares to storage (localStorage or secureStorage)
@@ -4986,21 +5225,10 @@ class DynamicWalletClient {
4986
5225
  accountAddress,
4987
5226
  shareCount: expectedShares.length
4988
5227
  });
4989
- // The preceding `/backup` upload consumed the caller's signed-session nonce, so
4990
- // the verify fetch needs a freshly-minted one — only possible over the reverse
4991
- // channel. Without one, skip the check (with a warning) rather than abort an
4992
- // otherwise-successful backup.
4993
- if (!this.getSignedSessionIdCallback) {
4994
- this.logger.warn('[keyshare-recovery-verify] skipped: no reverse channel to mint a fresh nonce for the verify fetch', {
4995
- walletId,
4996
- accountAddress
4997
- });
4998
- return;
4999
- }
5000
5228
  let data;
5001
5229
  try {
5002
- // Fresh session (the backup consumed the caller's), inside the try so a flaky
5003
- // reverse channel is treated as transient below, not a backup-abort.
5230
+ // Mint a fresh session (the backup consumed the caller's). A missing reverse
5231
+ // channel is skipped below; any other failure rethrows.
5004
5232
  const verifySignedSessionId = await this.signedSession.resolve();
5005
5233
  data = await this.recoverEncryptedSharesWithNonceRetry({
5006
5234
  walletId,
@@ -5013,13 +5241,18 @@ class DynamicWalletClient {
5013
5241
  context: 'verify-backup-recoverable'
5014
5242
  });
5015
5243
  } catch (error) {
5016
- // Mint or fetch failed (transient) not proof the backup is bad; rethrow as-is.
5017
- this.logger.warn('[keyshare-recovery-verify] could not run verify fetch, rethrowing', {
5244
+ // Only a missing reverse channel (no callback, or the host registered no
5245
+ // getSignedSessionId handler) is a benign "can't run" — skip without aborting a
5246
+ // successful backup. Anything else (fetch / transient) is rethrown.
5247
+ const message = error instanceof Error && error.message || '';
5248
+ const noReverseChannel = !this.getSignedSessionIdCallback || message.includes('No handlers were registered') || message.includes('no callback is configured');
5249
+ if (!noReverseChannel) throw error;
5250
+ this.logger.warn('[keyshare-recovery-verify] no reverse channel for verify nonce, skipping', {
5018
5251
  walletId,
5019
5252
  accountAddress,
5020
5253
  errorName: error instanceof Error ? error.name : undefined
5021
5254
  });
5022
- throw error;
5255
+ return;
5023
5256
  }
5024
5257
  try {
5025
5258
  var _data_keyShares;
@@ -5341,7 +5574,7 @@ class DynamicWalletClient {
5341
5574
  ]);
5342
5575
  }));
5343
5576
  }
5344
- async backupToCloudProvider({ provider, shares, accountAddress, password, chainName, bitcoinConfig, isPasswordEncrypted, preEncryptedShares, googleDriveAccessToken }) {
5577
+ async backupToCloudProvider({ provider, shares, accountAddress, password, chainName, bitcoinConfig, isPasswordEncrypted, preEncryptedShares, googleDriveAccessToken, googleDriveTokenSource }) {
5345
5578
  const encryptedCloudShares = preEncryptedShares != null ? preEncryptedShares : await Promise.all(shares.map((keyShare)=>this.encryptKeyShare({
5346
5579
  keyShare,
5347
5580
  password
@@ -5357,11 +5590,13 @@ class DynamicWalletClient {
5357
5590
  clientKeyShare: shares[0],
5358
5591
  bitcoinConfig
5359
5592
  });
5360
- return {
5593
+ return _extends({
5361
5594
  location: provider,
5362
5595
  passwordEncrypted: isPasswordEncrypted,
5363
5596
  keygenId
5364
- };
5597
+ }, provider === core.BackupLocation.GOOGLE_DRIVE && googleDriveTokenSource ? {
5598
+ tokenSource: googleDriveTokenSource
5599
+ } : {});
5365
5600
  }
5366
5601
  async publishDelegatedShare({ walletId, shareSetId, delegatedShare, signedSessionId, dynamicRequestId, chainName, bitcoinConfig, isPasswordEncrypted }) {
5367
5602
  var _publicKey_key, _publicKey_key1, _publicKey_key2;
@@ -5408,7 +5643,7 @@ class DynamicWalletClient {
5408
5643
  }
5409
5644
  return location;
5410
5645
  }
5411
- async backupSharesWithDistribution({ accountAddress, password, signedSessionId, distribution, preserveDelegatedLocation = false, passwordUpdateBatchId, googleDriveAccessToken }) {
5646
+ async backupSharesWithDistribution({ accountAddress, password, signedSessionId, distribution, preserveDelegatedLocation = false, passwordUpdateBatchId, googleDriveAccessToken, googleDriveTokenSource, businessAccountId }) {
5412
5647
  const dynamicRequestId = uuid.v4();
5413
5648
  // Get wallet data early for logging context (also used in catch block)
5414
5649
  const walletData = this.getWalletFromMap(accountAddress);
@@ -5552,7 +5787,8 @@ class DynamicWalletClient {
5552
5787
  bitcoinConfig,
5553
5788
  isPasswordEncrypted,
5554
5789
  preEncryptedShares: encrypted,
5555
- googleDriveAccessToken
5790
+ googleDriveAccessToken,
5791
+ googleDriveTokenSource
5556
5792
  }));
5557
5793
  }
5558
5794
  // When this ceremony minted a separate `delegated` share set (FF=on
@@ -5625,7 +5861,8 @@ class DynamicWalletClient {
5625
5861
  shareSetId: targetShareSetId,
5626
5862
  locations,
5627
5863
  dynamicRequestId,
5628
- passwordUpdateBatchId
5864
+ passwordUpdateBatchId,
5865
+ businessAccountId
5629
5866
  }), {
5630
5867
  operationName: BACKUP_OPERATION.MarkBackedUp,
5631
5868
  shouldRetry: (error)=>{
@@ -5816,7 +6053,7 @@ class DynamicWalletClient {
5816
6053
  * @param params.signedSessionId - Optional signed session ID for authentication
5817
6054
  * @param params.backupToGoogleDrive - Whether to backup to Google Drive (defaults to false)
5818
6055
  * @returns Promise with backup metadata including share locations and IDs
5819
- */ async storeEncryptedBackupByWallet({ accountAddress, clientKeyShares = undefined, password = undefined, signedSessionId, cloudProviders = [], delegatedKeyshare = undefined, passwordUpdateBatchId, googleDriveAccessToken }) {
6056
+ */ async storeEncryptedBackupByWallet({ accountAddress, clientKeyShares = undefined, password = undefined, signedSessionId, cloudProviders = [], delegatedKeyshare = undefined, passwordUpdateBatchId, googleDriveAccessToken, googleDriveTokenSource, businessAccountId }) {
5820
6057
  var _backupData_locationsWithKeyShares, _backupData_locationsWithKeyShares1;
5821
6058
  const hasProvidedShares = clientKeyShares !== undefined;
5822
6059
  const keySharesToBackup = clientKeyShares != null ? clientKeyShares : await this.getClientKeySharesFromStorage({
@@ -5889,7 +6126,9 @@ class DynamicWalletClient {
5889
6126
  distribution,
5890
6127
  preserveDelegatedLocation,
5891
6128
  passwordUpdateBatchId,
5892
- googleDriveAccessToken
6129
+ googleDriveAccessToken,
6130
+ googleDriveTokenSource,
6131
+ businessAccountId
5893
6132
  });
5894
6133
  var _backupData_locationsWithKeyShares_map, _backupData_locationsWithKeyShares_map1;
5895
6134
  return _extends({}, backupData, {
@@ -6425,7 +6664,7 @@ class DynamicWalletClient {
6425
6664
  * Internal helper method that handles the complete flow for ensuring wallet key shares are backed up to a cloud provider.
6426
6665
  * - For 2-of-2 wallets: Automatically reshares to 2-of-3 threshold, then distributes shares (1 to backend, 1 to cloud)
6427
6666
  * - For 2-of-3 wallets: Call storeEncryptedBackupByWallet to backup for backend and cloud
6428
- */ async backupKeySharesToCloudProvider({ accountAddress, password, signedSessionId, backupLocation, googleDriveAccessToken }) {
6667
+ */ async backupKeySharesToCloudProvider({ accountAddress, password, signedSessionId, backupLocation, googleDriveAccessToken, googleDriveTokenSource }) {
6429
6668
  try {
6430
6669
  await this.getWallet({
6431
6670
  accountAddress,
@@ -6447,7 +6686,8 @@ class DynamicWalletClient {
6447
6686
  cloudProviders: [
6448
6687
  backupLocation
6449
6688
  ],
6450
- googleDriveAccessToken
6689
+ googleDriveAccessToken,
6690
+ googleDriveTokenSource
6451
6691
  });
6452
6692
  } else {
6453
6693
  await this.storeEncryptedBackupByWallet({
@@ -6457,7 +6697,8 @@ class DynamicWalletClient {
6457
6697
  cloudProviders: [
6458
6698
  backupLocation
6459
6699
  ],
6460
- googleDriveAccessToken
6700
+ googleDriveAccessToken,
6701
+ googleDriveTokenSource
6461
6702
  });
6462
6703
  }
6463
6704
  } catch (error) {
@@ -6506,7 +6747,10 @@ class DynamicWalletClient {
6506
6747
  backupLocation: core.BackupLocation.GOOGLE_DRIVE,
6507
6748
  // Forward the resolved token so the downstream upload path doesn't
6508
6749
  // re-fetch it via fetchGoogleDriveAccessToken.
6509
- googleDriveAccessToken: resolvedAccessToken
6750
+ googleDriveAccessToken: resolvedAccessToken,
6751
+ // Persist which token source backed up the Google Drive location for
6752
+ // audit (enum only — never the token value).
6753
+ googleDriveTokenSource: tokenSource
6510
6754
  });
6511
6755
  success = true;
6512
6756
  } finally{
@@ -7682,6 +7926,12 @@ class DynamicWalletClient {
7682
7926
  logger: this.logger,
7683
7927
  onUnauthorized: internalOptions == null ? void 0 : internalOptions.onUnauthorized
7684
7928
  });
7929
+ // `reshare` left unbound until the signer-reshare flavor (reshare into a new
7930
+ // signer's pending share set) exists; addSigner is stubbed until then.
7931
+ this.businessAccounts = new core.BusinessAccountClient({
7932
+ apiClient: this.apiClient,
7933
+ logger: this.logger
7934
+ });
7685
7935
  this.debug = Boolean(debug);
7686
7936
  this.featureFlags = featureFlags || {};
7687
7937
  // setup storage for walletMap metadata (used regardless of secureStorage)
@@ -7708,11 +7958,15 @@ class DynamicWalletClient {
7708
7958
  durationMs: Date.now() - forwardMPCConnectStartedAt
7709
7959
  });
7710
7960
  }).catch((error)=>{
7711
- this.logger.error('Error connecting to ForwardMPC enclave optimistically', {
7961
+ const errorInfo = core.classifyForwardMpcError(error);
7962
+ // A rate-limited upgrade falls back to relay → warn, not error, so the
7963
+ // recovered case doesn't pollute error triage.
7964
+ const level = errorInfo.errorType === 'RATE_LIMITED' ? 'warn' : 'error';
7965
+ this.logger[level]('Error connecting to ForwardMPC enclave optimistically', _extends({}, errorInfo, {
7712
7966
  error,
7713
7967
  environmentId: this.environmentId,
7714
7968
  durationMs: Date.now() - forwardMPCConnectStartedAt
7715
- });
7969
+ }));
7716
7970
  });
7717
7971
  }
7718
7972
  }
package/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import { BitcoinAddressType, MPC_RELAY_PROD_API_URL, getMPCChainConfig, BackupLocation, ENCRYPTED_SHARES_STORAGE_SUFFIX, Logger, WalletApiError, handleAxiosError, WalletOperation, parseNamespacedVersion, WalletReadyState, FEATURE_FLAGS, ThresholdSignatureScheme, getClientThreshold, MPC_CONFIG, classifyForwardMpcError, getTSSConfig, serializeMessageForForwardMPC, isEvmCompatibleChain, getReshareConfig, getRequiredExternalKeyShareId, verifiedCredentialNameToChainEnum, AuthMode, NoopLogger, DynamicApiClient, getEnvironmentFromUrl, IFRAME_DOMAIN_MAP } from '@dynamic-labs-wallet/core';
1
+ import { BitcoinAddressType, MPC_RELAY_PROD_API_URL, getMPCChainConfig, BackupLocation, ENCRYPTED_SHARES_STORAGE_SUFFIX, Logger, WalletApiError, handleAxiosError, WalletOperation, parseNamespacedVersion, WalletReadyState, FEATURE_FLAGS, ThresholdSignatureScheme, getClientThreshold, MPC_CONFIG, classifyForwardMpcError, getTSSConfig, serializeMessageForForwardMPC, isEvmCompatibleChain, getReshareConfig, getRequiredExternalKeyShareId, verifiedCredentialNameToChainEnum, AuthMode, NoopLogger, DynamicApiClient, BusinessAccountClient, getEnvironmentFromUrl, IFRAME_DOMAIN_MAP } from '@dynamic-labs-wallet/core';
2
2
  export * from '@dynamic-labs-wallet/core';
3
3
  export { Logger } from '@dynamic-labs-wallet/core';
4
4
  import { EdBls12377, BIP340, ExportableEd25519, Ecdsa, MessageHash, EcdsaSignature, EcdsaKeygenResult, ExportableEd25519KeygenResult, BIP340KeygenResult } from '#internal/web';
@@ -2761,7 +2761,7 @@ class DynamicWalletClient {
2761
2761
  };
2762
2762
  }
2763
2763
  }
2764
- async serverInitializeKeyGen({ chainName, clientKeygenIds, dynamicRequestId, thresholdSignatureScheme, bitcoinConfig, onError, onCeremonyComplete }) {
2764
+ async serverInitializeKeyGen({ chainName, clientKeygenIds, dynamicRequestId, thresholdSignatureScheme, bitcoinConfig, businessAccountId, onError, onCeremonyComplete }) {
2765
2765
  // Initialize keygen, create room, and create the wallet account on the server
2766
2766
  const data = await this.apiClient.createWalletAccount({
2767
2767
  chainName,
@@ -2769,6 +2769,7 @@ class DynamicWalletClient {
2769
2769
  dynamicRequestId,
2770
2770
  thresholdSignatureScheme,
2771
2771
  bitcoinConfig,
2772
+ businessAccountId,
2772
2773
  onError,
2773
2774
  onCeremonyComplete
2774
2775
  });
@@ -2993,7 +2994,7 @@ class DynamicWalletClient {
2993
2994
  shouldRetry: (error)=>!isNonRetryableCeremonyError(error)
2994
2995
  });
2995
2996
  }
2996
- async runKeyGenAttempt({ chainName, thresholdSignatureScheme, bitcoinConfig, onCeremonyComplete, traceContext, password, signedSessionId }) {
2997
+ async runKeyGenAttempt({ chainName, thresholdSignatureScheme, bitcoinConfig, businessAccountId, onCeremonyComplete, traceContext, password, signedSessionId }) {
2997
2998
  const dynamicRequestId = v4();
2998
2999
  try {
2999
3000
  this.assertPasswordRequired(password);
@@ -3023,6 +3024,7 @@ class DynamicWalletClient {
3023
3024
  dynamicRequestId,
3024
3025
  thresholdSignatureScheme,
3025
3026
  bitcoinConfig,
3027
+ businessAccountId,
3026
3028
  onCeremonyComplete
3027
3029
  });
3028
3030
  this.logger.info('[DynamicWaasWalletClient] Server key generation initialized', _extends({
@@ -3053,6 +3055,7 @@ class DynamicWalletClient {
3053
3055
  dynamicRequestId,
3054
3056
  thresholdSignatureScheme,
3055
3057
  bitcoinConfig,
3058
+ businessAccountId,
3056
3059
  onCeremonyComplete
3057
3060
  })
3058
3061
  });
@@ -3730,7 +3733,7 @@ class DynamicWalletClient {
3730
3733
  // would race ceremony_complete and the atomic swap could target the stale
3731
3734
  // row. refresh's API call returns on room_created (not the local MPC
3732
3735
  // result), so the gate await sits between the local MPC and the backup.
3733
- const ceremonyGate = this.createCeremonyTerminalGate((_accountAddress, _walletId, shareSetId, shareSetType)=>{
3736
+ const ceremonyGate = this.createCeremonyTerminalGate(({ shareSetId, shareSetType })=>{
3734
3737
  this.logger.info('[WaasRefresh] ceremony_complete received', {
3735
3738
  context: {
3736
3739
  walletId: wallet.walletId,
@@ -3933,7 +3936,7 @@ class DynamicWalletClient {
3933
3936
  existingClientKeyShares
3934
3937
  };
3935
3938
  }
3936
- async reshare({ chainName, accountAddress, oldThresholdSignatureScheme, newThresholdSignatureScheme, password = undefined, signedSessionId, cloudProviders = [], delegateToProjectEnvironment = false, mfaToken, elevatedAccessToken, revokeDelegation = false, googleDriveAccessToken }) {
3939
+ async reshare({ chainName, accountAddress, oldThresholdSignatureScheme, newThresholdSignatureScheme, password = undefined, signedSessionId, cloudProviders = [], delegateToProjectEnvironment = false, mfaToken, elevatedAccessToken, revokeDelegation = false, googleDriveAccessToken, googleDriveTokenSource }) {
3937
3940
  return WalletQueueManager.queueHeavyOperation(accountAddress, WalletOperation.RESHARE, ()=>this.internalReshare({
3938
3941
  chainName,
3939
3942
  accountAddress,
@@ -3946,9 +3949,231 @@ class DynamicWalletClient {
3946
3949
  mfaToken,
3947
3950
  elevatedAccessToken,
3948
3951
  revokeDelegation,
3949
- googleDriveAccessToken
3952
+ googleDriveAccessToken,
3953
+ googleDriveTokenSource
3950
3954
  }));
3951
3955
  }
3956
+ /** Reshare into a new 2/2 share set for the target signer; seed it to CKS
3957
+ * on their behalf via a single-use grant. Does not touch the caller's set. */ async reshareToNewSignerShareSet({ chainName, accountAddress, businessAccountId, signerType = 'endUser', targetSignerIdentity, password = undefined, signedSessionId }) {
3958
+ var _backup_keyShareIds;
3959
+ const dynamicRequestId = v4();
3960
+ const ceremonyStartTime = Date.now();
3961
+ // Log identifier shape only — value may be email/phone.
3962
+ const logContext = {
3963
+ dynamicRequestId,
3964
+ businessAccountId,
3965
+ chainName,
3966
+ accountAddress,
3967
+ signerType,
3968
+ identityMode: targetSignerIdentity.userId ? 'userId' : 'identifier',
3969
+ identifierType: targetSignerIdentity.identifierType
3970
+ };
3971
+ this.logger.info('[BusinessAccountAddSigner] start reshareToNewSignerShareSet', {
3972
+ context: logContext
3973
+ });
3974
+ const wallet = await this.getWallet({
3975
+ accountAddress,
3976
+ walletOperation: WalletOperation.REACH_ALL_PARTIES,
3977
+ password,
3978
+ signedSessionId
3979
+ });
3980
+ const walletId = wallet.walletId;
3981
+ const currentScheme = this.getWalletFromMap(accountAddress).thresholdSignatureScheme;
3982
+ const bitcoinConfig = this.getBitcoinConfigForChain(chainName, accountAddress);
3983
+ // Same-parties reshare — only the caller's share participates.
3984
+ const [existingClientShare] = await this.ensureClientShare(accountAddress);
3985
+ const existingClientKeygenId = await this.getExportId({
3986
+ chainName,
3987
+ clientKeyShare: existingClientShare,
3988
+ bitcoinConfig
3989
+ });
3990
+ // Gate matches internalRefresh/Reshare — SSE error rejects awaitTerminal.
3991
+ let newShareSetId;
3992
+ let resolvedTargetUserId;
3993
+ let clientKeyshareBackupGrant;
3994
+ const ceremonyGate = this.createCeremonyTerminalGate((payload)=>{
3995
+ newShareSetId = payload.shareSetId;
3996
+ resolvedTargetUserId = payload.targetUserId;
3997
+ clientKeyshareBackupGrant = payload.clientKeyshareBackupGrant;
3998
+ this.logger.info('[BusinessAccountAddSigner] ceremony_complete received', {
3999
+ context: _extends({}, logContext, {
4000
+ walletId,
4001
+ newShareSetId: payload.shareSetId,
4002
+ shareSetType: payload.shareSetType,
4003
+ hasTargetUserId: !!payload.targetUserId,
4004
+ hasClientKeyshareBackupGrant: !!payload.clientKeyshareBackupGrant
4005
+ })
4006
+ });
4007
+ });
4008
+ const data = await this.apiClient.addBusinessAccountSignerCeremony({
4009
+ businessAccountId,
4010
+ walletId,
4011
+ clientKeygenIds: [
4012
+ existingClientKeygenId
4013
+ ],
4014
+ oldThresholdSignatureScheme: currentScheme,
4015
+ signerType,
4016
+ userId: targetSignerIdentity.userId,
4017
+ identifier: targetSignerIdentity.identifier,
4018
+ identifierType: targetSignerIdentity.identifierType,
4019
+ dynamicRequestId,
4020
+ onError: ceremonyGate.onError,
4021
+ onCeremonyComplete: ceremonyGate.onCeremonyComplete
4022
+ });
4023
+ const { roomId, serverKeygenIds, newServerKeygenIds = [] } = data;
4024
+ const newMpcConfig = MPC_CONFIG[ThresholdSignatureScheme.TWO_OF_TWO];
4025
+ const allPartyKeygenIds = [
4026
+ existingClientKeygenId,
4027
+ ...serverKeygenIds,
4028
+ ...newServerKeygenIds
4029
+ ];
4030
+ const mpcSigner = getMPCSigner({
4031
+ chainName,
4032
+ baseRelayUrl: this.baseMPCRelayApiUrl,
4033
+ bitcoinConfig
4034
+ });
4035
+ const newSignerClientShare = await mpcSigner.reshareRemainingParty(roomId, newMpcConfig.threshold, existingClientShare, allPartyKeygenIds);
4036
+ try {
4037
+ await ceremonyGate.awaitTerminal();
4038
+ } catch (streamError) {
4039
+ this.logger.error('[BusinessAccountAddSigner] ceremony stream error', {
4040
+ context: _extends({}, logContext, {
4041
+ walletId,
4042
+ roomId,
4043
+ error: streamError instanceof Error ? streamError.message : String(streamError),
4044
+ failure_reason: 'ceremony_stream_error'
4045
+ })
4046
+ });
4047
+ throw streamError;
4048
+ }
4049
+ if (!newShareSetId) {
4050
+ this.logger.error('[BusinessAccountAddSigner] ceremony_complete missing shareSetId', {
4051
+ context: _extends({}, logContext, {
4052
+ walletId,
4053
+ roomId,
4054
+ failure_reason: 'ceremony_complete_missing_share_set_id'
4055
+ })
4056
+ });
4057
+ throw new Error('addSigner reshare did not return a shareSetId');
4058
+ }
4059
+ // Target has no password yet — encryptKeyShare falls back to the env-default key.
4060
+ const encrypted = await this.encryptKeyShare({
4061
+ keyShare: newSignerClientShare
4062
+ });
4063
+ // Server contract: targetUserId is always set on successful ceremony_complete.
4064
+ if (!resolvedTargetUserId) {
4065
+ this.logger.error('[BusinessAccountAddSigner] no target userId resolved for on-behalf backup', {
4066
+ context: _extends({}, logContext, {
4067
+ walletId,
4068
+ newShareSetId,
4069
+ failure_reason: 'no_target_user_id_resolved'
4070
+ })
4071
+ });
4072
+ throw new Error('addSigner ceremony did not resolve a target userId for the on-behalf backup');
4073
+ }
4074
+ const targetUserId = resolvedTargetUserId;
4075
+ this.logger.info('[BusinessAccountAddSigner] backupOnBehalfOfAddedSigner -> client-keyshare-service', {
4076
+ context: _extends({}, logContext, {
4077
+ walletId,
4078
+ newShareSetId,
4079
+ hasClientKeyshareBackupGrant: !!clientKeyshareBackupGrant
4080
+ })
4081
+ });
4082
+ // Grant is primary auth; signedSession is belt-and-suspenders. Refresh-on-400
4083
+ // handles nonce reuse; transient 429/5xx retry via alsoRetry. 401/403 = grant
4084
+ // rejected (single-use, not replayable) → caller must re-run addSigner.
4085
+ let backup;
4086
+ try {
4087
+ let resolvedSignedSessionId = signedSessionId;
4088
+ backup = await retryPromise(()=>this.apiClient.backupOnBehalfOfAddedSigner({
4089
+ walletId,
4090
+ targetUserId,
4091
+ encryptedAccountCredentials: [
4092
+ encrypted
4093
+ ],
4094
+ passwordEncrypted: false,
4095
+ encryptionVersion: ENCRYPTION_VERSION_CURRENT,
4096
+ clientKeyshareBackupGrant,
4097
+ signedSessionId: resolvedSignedSessionId,
4098
+ dynamicRequestId
4099
+ }), {
4100
+ operationName: 'backupOnBehalfOfAddedSigner',
4101
+ shouldRetry: this.signedSession.refreshShouldRetry({
4102
+ onRefreshed: (id)=>{
4103
+ resolvedSignedSessionId = id;
4104
+ },
4105
+ operationName: 'backupOnBehalfOfAddedSigner',
4106
+ logContext: _extends({}, logContext, {
4107
+ walletId,
4108
+ dynamicRequestId
4109
+ }),
4110
+ alsoRetry: (status)=>status === undefined || status === 429 || status !== undefined && status >= 500
4111
+ })
4112
+ });
4113
+ } catch (err) {
4114
+ var _err_response;
4115
+ const status = err == null ? void 0 : (_err_response = err.response) == null ? void 0 : _err_response.status;
4116
+ if (clientKeyshareBackupGrant && (status === 401 || status === 403)) {
4117
+ this.logger.error('[BusinessAccountAddSigner] client_keyshare_backup_grant_exhausted', {
4118
+ context: _extends({}, logContext, {
4119
+ walletId,
4120
+ newShareSetId,
4121
+ status,
4122
+ failure_reason: 'grant_exhausted'
4123
+ })
4124
+ });
4125
+ }
4126
+ throw err;
4127
+ }
4128
+ const externalKeyShareId = (_backup_keyShareIds = backup.keyShareIds) == null ? void 0 : _backup_keyShareIds[0];
4129
+ if (!externalKeyShareId) {
4130
+ this.logger.error('[BusinessAccountAddSigner] on-behalf backup returned no keyShareId', {
4131
+ context: _extends({}, logContext, {
4132
+ walletId,
4133
+ newShareSetId,
4134
+ failure_reason: 'cks_write_no_keyshare_id'
4135
+ })
4136
+ });
4137
+ throw new Error('on-behalf backup did not return a keyShareId');
4138
+ }
4139
+ this.logger.info('[BusinessAccountAddSigner] on-behalf backup stored', {
4140
+ context: _extends({}, logContext, {
4141
+ walletId,
4142
+ newShareSetId,
4143
+ externalKeyShareId
4144
+ })
4145
+ });
4146
+ // Activate the share-set ↔ keyShareId mapping on redcoast.
4147
+ await retryPromise(()=>this.apiClient.markKeySharesAsBackedUp({
4148
+ walletId,
4149
+ shareSetId: newShareSetId,
4150
+ locations: [
4151
+ {
4152
+ location: BackupLocation.DYNAMIC,
4153
+ externalKeyShareId
4154
+ }
4155
+ ],
4156
+ dynamicRequestId,
4157
+ businessAccountId
4158
+ }), {
4159
+ operationName: 'addSigner.markKeySharesAsBackedUp',
4160
+ shouldRetry: (error)=>{
4161
+ const status = getHttpStatus(error);
4162
+ return status === undefined || status === 429 || status !== undefined && status >= 500;
4163
+ }
4164
+ });
4165
+ this.logger.info('[BusinessAccountAddSigner] done — share set activated', {
4166
+ context: _extends({}, logContext, {
4167
+ walletId,
4168
+ newShareSetId,
4169
+ externalKeyShareId,
4170
+ ceremony_duration_ms: Date.now() - ceremonyStartTime
4171
+ })
4172
+ });
4173
+ return {
4174
+ shareSetId: newShareSetId
4175
+ };
4176
+ }
3952
4177
  // Surfaces server-side bugs in the ceremony_complete payload without
3953
4178
  // breaking the operation. The two cases:
3954
4179
  //
@@ -4002,7 +4227,10 @@ class DynamicWalletClient {
4002
4227
  // The reject handle is wired synchronously (Promise executors run inline)
4003
4228
  // before the API call starts, so an immediate onError can never be dropped.
4004
4229
  // The lost branch's rejection is swallowed so it never surfaces as unhandled.
4005
- createCeremonyTerminalGate(onCeremonyComplete) {
4230
+ /**
4231
+ * Ceremony-complete payload — typed object so addSigner-only fields are
4232
+ * namespaced and `clientKeyshareBackupGrant` never sits in a positional slot.
4233
+ */ createCeremonyTerminalGate(onCeremonyComplete) {
4006
4234
  let resolveComplete;
4007
4235
  const completePromise = new Promise((resolve)=>{
4008
4236
  resolveComplete = resolve;
@@ -4016,9 +4244,19 @@ class DynamicWalletClient {
4016
4244
  let fired = false;
4017
4245
  return {
4018
4246
  onError: rejectOnError,
4019
- onCeremonyComplete: (accountAddress, walletId, shareSetId, shareSetType)=>{
4247
+ // Positional shape preserved at the wire boundary — eventStream/utils
4248
+ // invokes this with positional args. Translates to the typed object
4249
+ // for the caller-supplied cb.
4250
+ onCeremonyComplete: (accountAddress, walletId, shareSetId, shareSetType, targetUserId, clientKeyshareBackupGrant)=>{
4020
4251
  fired = true;
4021
- onCeremonyComplete == null ? void 0 : onCeremonyComplete(accountAddress, walletId, shareSetId, shareSetType);
4252
+ onCeremonyComplete == null ? void 0 : onCeremonyComplete({
4253
+ accountAddress,
4254
+ walletId,
4255
+ shareSetId,
4256
+ shareSetType,
4257
+ targetUserId,
4258
+ clientKeyshareBackupGrant
4259
+ });
4022
4260
  resolveComplete();
4023
4261
  },
4024
4262
  awaitTerminal: ()=>Promise.race([
@@ -4190,7 +4428,7 @@ class DynamicWalletClient {
4190
4428
  clientKeySharesBackupInfo: updatedBackupInfo
4191
4429
  } : {}));
4192
4430
  }
4193
- async internalReshare({ chainName, accountAddress, oldThresholdSignatureScheme, newThresholdSignatureScheme, password = undefined, signedSessionId, cloudProviders = [], delegateToProjectEnvironment = false, mfaToken, elevatedAccessToken, revokeDelegation = false, googleDriveAccessToken }) {
4431
+ async internalReshare({ chainName, accountAddress, oldThresholdSignatureScheme, newThresholdSignatureScheme, password = undefined, signedSessionId, cloudProviders = [], delegateToProjectEnvironment = false, mfaToken, elevatedAccessToken, revokeDelegation = false, googleDriveAccessToken, googleDriveTokenSource }) {
4194
4432
  const dynamicRequestId = v4();
4195
4433
  // Password validation - wrapped in try-catch for consistent error handling
4196
4434
  // This path should NOT wipe key shares on failure (shares remain valid)
@@ -4266,7 +4504,7 @@ class DynamicWalletClient {
4266
4504
  // walletMap.shareSetId rotation lands before storeEncryptedBackupByWallet
4267
4505
  // reads it; without it, backup would race ceremony_complete and the atomic
4268
4506
  // swap could target the stale row.
4269
- const ceremonyGate = this.createCeremonyTerminalGate((_accountAddress, _walletId, shareSetId, shareSetType)=>{
4507
+ const ceremonyGate = this.createCeremonyTerminalGate(({ shareSetId, shareSetType })=>{
4270
4508
  this.logger.info('[WaasReshare] ceremony_complete received', {
4271
4509
  context: {
4272
4510
  walletId: wallet.walletId,
@@ -4446,7 +4684,8 @@ class DynamicWalletClient {
4446
4684
  password,
4447
4685
  signedSessionId,
4448
4686
  distribution,
4449
- googleDriveAccessToken
4687
+ googleDriveAccessToken,
4688
+ googleDriveTokenSource
4450
4689
  })
4451
4690
  });
4452
4691
  // Store client key shares to storage (localStorage or secureStorage)
@@ -4987,21 +5226,10 @@ class DynamicWalletClient {
4987
5226
  accountAddress,
4988
5227
  shareCount: expectedShares.length
4989
5228
  });
4990
- // The preceding `/backup` upload consumed the caller's signed-session nonce, so
4991
- // the verify fetch needs a freshly-minted one — only possible over the reverse
4992
- // channel. Without one, skip the check (with a warning) rather than abort an
4993
- // otherwise-successful backup.
4994
- if (!this.getSignedSessionIdCallback) {
4995
- this.logger.warn('[keyshare-recovery-verify] skipped: no reverse channel to mint a fresh nonce for the verify fetch', {
4996
- walletId,
4997
- accountAddress
4998
- });
4999
- return;
5000
- }
5001
5229
  let data;
5002
5230
  try {
5003
- // Fresh session (the backup consumed the caller's), inside the try so a flaky
5004
- // reverse channel is treated as transient below, not a backup-abort.
5231
+ // Mint a fresh session (the backup consumed the caller's). A missing reverse
5232
+ // channel is skipped below; any other failure rethrows.
5005
5233
  const verifySignedSessionId = await this.signedSession.resolve();
5006
5234
  data = await this.recoverEncryptedSharesWithNonceRetry({
5007
5235
  walletId,
@@ -5014,13 +5242,18 @@ class DynamicWalletClient {
5014
5242
  context: 'verify-backup-recoverable'
5015
5243
  });
5016
5244
  } catch (error) {
5017
- // Mint or fetch failed (transient) not proof the backup is bad; rethrow as-is.
5018
- this.logger.warn('[keyshare-recovery-verify] could not run verify fetch, rethrowing', {
5245
+ // Only a missing reverse channel (no callback, or the host registered no
5246
+ // getSignedSessionId handler) is a benign "can't run" — skip without aborting a
5247
+ // successful backup. Anything else (fetch / transient) is rethrown.
5248
+ const message = error instanceof Error && error.message || '';
5249
+ const noReverseChannel = !this.getSignedSessionIdCallback || message.includes('No handlers were registered') || message.includes('no callback is configured');
5250
+ if (!noReverseChannel) throw error;
5251
+ this.logger.warn('[keyshare-recovery-verify] no reverse channel for verify nonce, skipping', {
5019
5252
  walletId,
5020
5253
  accountAddress,
5021
5254
  errorName: error instanceof Error ? error.name : undefined
5022
5255
  });
5023
- throw error;
5256
+ return;
5024
5257
  }
5025
5258
  try {
5026
5259
  var _data_keyShares;
@@ -5342,7 +5575,7 @@ class DynamicWalletClient {
5342
5575
  ]);
5343
5576
  }));
5344
5577
  }
5345
- async backupToCloudProvider({ provider, shares, accountAddress, password, chainName, bitcoinConfig, isPasswordEncrypted, preEncryptedShares, googleDriveAccessToken }) {
5578
+ async backupToCloudProvider({ provider, shares, accountAddress, password, chainName, bitcoinConfig, isPasswordEncrypted, preEncryptedShares, googleDriveAccessToken, googleDriveTokenSource }) {
5346
5579
  const encryptedCloudShares = preEncryptedShares != null ? preEncryptedShares : await Promise.all(shares.map((keyShare)=>this.encryptKeyShare({
5347
5580
  keyShare,
5348
5581
  password
@@ -5358,11 +5591,13 @@ class DynamicWalletClient {
5358
5591
  clientKeyShare: shares[0],
5359
5592
  bitcoinConfig
5360
5593
  });
5361
- return {
5594
+ return _extends({
5362
5595
  location: provider,
5363
5596
  passwordEncrypted: isPasswordEncrypted,
5364
5597
  keygenId
5365
- };
5598
+ }, provider === BackupLocation.GOOGLE_DRIVE && googleDriveTokenSource ? {
5599
+ tokenSource: googleDriveTokenSource
5600
+ } : {});
5366
5601
  }
5367
5602
  async publishDelegatedShare({ walletId, shareSetId, delegatedShare, signedSessionId, dynamicRequestId, chainName, bitcoinConfig, isPasswordEncrypted }) {
5368
5603
  var _publicKey_key, _publicKey_key1, _publicKey_key2;
@@ -5409,7 +5644,7 @@ class DynamicWalletClient {
5409
5644
  }
5410
5645
  return location;
5411
5646
  }
5412
- async backupSharesWithDistribution({ accountAddress, password, signedSessionId, distribution, preserveDelegatedLocation = false, passwordUpdateBatchId, googleDriveAccessToken }) {
5647
+ async backupSharesWithDistribution({ accountAddress, password, signedSessionId, distribution, preserveDelegatedLocation = false, passwordUpdateBatchId, googleDriveAccessToken, googleDriveTokenSource, businessAccountId }) {
5413
5648
  const dynamicRequestId = v4();
5414
5649
  // Get wallet data early for logging context (also used in catch block)
5415
5650
  const walletData = this.getWalletFromMap(accountAddress);
@@ -5553,7 +5788,8 @@ class DynamicWalletClient {
5553
5788
  bitcoinConfig,
5554
5789
  isPasswordEncrypted,
5555
5790
  preEncryptedShares: encrypted,
5556
- googleDriveAccessToken
5791
+ googleDriveAccessToken,
5792
+ googleDriveTokenSource
5557
5793
  }));
5558
5794
  }
5559
5795
  // When this ceremony minted a separate `delegated` share set (FF=on
@@ -5626,7 +5862,8 @@ class DynamicWalletClient {
5626
5862
  shareSetId: targetShareSetId,
5627
5863
  locations,
5628
5864
  dynamicRequestId,
5629
- passwordUpdateBatchId
5865
+ passwordUpdateBatchId,
5866
+ businessAccountId
5630
5867
  }), {
5631
5868
  operationName: BACKUP_OPERATION.MarkBackedUp,
5632
5869
  shouldRetry: (error)=>{
@@ -5817,7 +6054,7 @@ class DynamicWalletClient {
5817
6054
  * @param params.signedSessionId - Optional signed session ID for authentication
5818
6055
  * @param params.backupToGoogleDrive - Whether to backup to Google Drive (defaults to false)
5819
6056
  * @returns Promise with backup metadata including share locations and IDs
5820
- */ async storeEncryptedBackupByWallet({ accountAddress, clientKeyShares = undefined, password = undefined, signedSessionId, cloudProviders = [], delegatedKeyshare = undefined, passwordUpdateBatchId, googleDriveAccessToken }) {
6057
+ */ async storeEncryptedBackupByWallet({ accountAddress, clientKeyShares = undefined, password = undefined, signedSessionId, cloudProviders = [], delegatedKeyshare = undefined, passwordUpdateBatchId, googleDriveAccessToken, googleDriveTokenSource, businessAccountId }) {
5821
6058
  var _backupData_locationsWithKeyShares, _backupData_locationsWithKeyShares1;
5822
6059
  const hasProvidedShares = clientKeyShares !== undefined;
5823
6060
  const keySharesToBackup = clientKeyShares != null ? clientKeyShares : await this.getClientKeySharesFromStorage({
@@ -5890,7 +6127,9 @@ class DynamicWalletClient {
5890
6127
  distribution,
5891
6128
  preserveDelegatedLocation,
5892
6129
  passwordUpdateBatchId,
5893
- googleDriveAccessToken
6130
+ googleDriveAccessToken,
6131
+ googleDriveTokenSource,
6132
+ businessAccountId
5894
6133
  });
5895
6134
  var _backupData_locationsWithKeyShares_map, _backupData_locationsWithKeyShares_map1;
5896
6135
  return _extends({}, backupData, {
@@ -6426,7 +6665,7 @@ class DynamicWalletClient {
6426
6665
  * Internal helper method that handles the complete flow for ensuring wallet key shares are backed up to a cloud provider.
6427
6666
  * - For 2-of-2 wallets: Automatically reshares to 2-of-3 threshold, then distributes shares (1 to backend, 1 to cloud)
6428
6667
  * - For 2-of-3 wallets: Call storeEncryptedBackupByWallet to backup for backend and cloud
6429
- */ async backupKeySharesToCloudProvider({ accountAddress, password, signedSessionId, backupLocation, googleDriveAccessToken }) {
6668
+ */ async backupKeySharesToCloudProvider({ accountAddress, password, signedSessionId, backupLocation, googleDriveAccessToken, googleDriveTokenSource }) {
6430
6669
  try {
6431
6670
  await this.getWallet({
6432
6671
  accountAddress,
@@ -6448,7 +6687,8 @@ class DynamicWalletClient {
6448
6687
  cloudProviders: [
6449
6688
  backupLocation
6450
6689
  ],
6451
- googleDriveAccessToken
6690
+ googleDriveAccessToken,
6691
+ googleDriveTokenSource
6452
6692
  });
6453
6693
  } else {
6454
6694
  await this.storeEncryptedBackupByWallet({
@@ -6458,7 +6698,8 @@ class DynamicWalletClient {
6458
6698
  cloudProviders: [
6459
6699
  backupLocation
6460
6700
  ],
6461
- googleDriveAccessToken
6701
+ googleDriveAccessToken,
6702
+ googleDriveTokenSource
6462
6703
  });
6463
6704
  }
6464
6705
  } catch (error) {
@@ -6507,7 +6748,10 @@ class DynamicWalletClient {
6507
6748
  backupLocation: BackupLocation.GOOGLE_DRIVE,
6508
6749
  // Forward the resolved token so the downstream upload path doesn't
6509
6750
  // re-fetch it via fetchGoogleDriveAccessToken.
6510
- googleDriveAccessToken: resolvedAccessToken
6751
+ googleDriveAccessToken: resolvedAccessToken,
6752
+ // Persist which token source backed up the Google Drive location for
6753
+ // audit (enum only — never the token value).
6754
+ googleDriveTokenSource: tokenSource
6511
6755
  });
6512
6756
  success = true;
6513
6757
  } finally{
@@ -7683,6 +7927,12 @@ class DynamicWalletClient {
7683
7927
  logger: this.logger,
7684
7928
  onUnauthorized: internalOptions == null ? void 0 : internalOptions.onUnauthorized
7685
7929
  });
7930
+ // `reshare` left unbound until the signer-reshare flavor (reshare into a new
7931
+ // signer's pending share set) exists; addSigner is stubbed until then.
7932
+ this.businessAccounts = new BusinessAccountClient({
7933
+ apiClient: this.apiClient,
7934
+ logger: this.logger
7935
+ });
7686
7936
  this.debug = Boolean(debug);
7687
7937
  this.featureFlags = featureFlags || {};
7688
7938
  // setup storage for walletMap metadata (used regardless of secureStorage)
@@ -7709,11 +7959,15 @@ class DynamicWalletClient {
7709
7959
  durationMs: Date.now() - forwardMPCConnectStartedAt
7710
7960
  });
7711
7961
  }).catch((error)=>{
7712
- this.logger.error('Error connecting to ForwardMPC enclave optimistically', {
7962
+ const errorInfo = classifyForwardMpcError(error);
7963
+ // A rate-limited upgrade falls back to relay → warn, not error, so the
7964
+ // recovered case doesn't pollute error triage.
7965
+ const level = errorInfo.errorType === 'RATE_LIMITED' ? 'warn' : 'error';
7966
+ this.logger[level]('Error connecting to ForwardMPC enclave optimistically', _extends({}, errorInfo, {
7713
7967
  error,
7714
7968
  environmentId: this.environmentId,
7715
7969
  durationMs: Date.now() - forwardMPCConnectStartedAt
7716
- });
7970
+ }));
7717
7971
  });
7718
7972
  }
7719
7973
  }
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@dynamic-labs-wallet/browser",
3
- "version": "1.0.27",
3
+ "version": "1.0.29",
4
4
  "license": "Licensed under the Dynamic Labs, Inc. Terms Of Service (https://www.dynamic.xyz/terms-conditions)",
5
5
  "type": "module",
6
6
  "dependencies": {
7
- "@dynamic-labs-wallet/core": "1.0.27",
8
- "@dynamic-labs-wallet/forward-mpc-client": "0.10.1",
9
- "@dynamic-labs-wallet/primitives": "1.0.27",
7
+ "@dynamic-labs-wallet/core": "1.0.29",
8
+ "@dynamic-labs-wallet/forward-mpc-client": "0.12.0",
9
+ "@dynamic-labs-wallet/primitives": "1.0.29",
10
10
  "@dynamic-labs/sdk-api-core": "^0.0.984",
11
11
  "argon2id": "1.0.1",
12
12
  "axios": "1.16.0",
package/src/client.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { EcdsaSignature, MessageHash, type EcdsaPublicKey } from '#internal/web';
2
- import { AuthMode, BackupLocation, DynamicApiClient, ThresholdSignatureScheme, WalletOperation, type BackupLocationWithExternalKeyShareId, type BitcoinConfig, type DynamicWalletClientProps, type FeatureFlags, type GetWalletResponse, type ILogger, type InitializeResult, type KeyShareBackupInfo, type SecureStorageAdapter, type ShareSet, type ShareSetType, type TraceContext, type WalletRecoveryState, type CreateWaasSDKContainer } from '@dynamic-labs-wallet/core';
2
+ import { AuthMode, BackupLocation, DynamicApiClient, BusinessAccountClient, type TargetSignerIdentity, type BusinessAccountSignerType, ThresholdSignatureScheme, WalletOperation, type BackupLocationWithExternalKeyShareId, type BitcoinConfig, type DynamicWalletClientProps, type FeatureFlags, type GetWalletResponse, type ILogger, type InitializeResult, type KeyShareBackupInfo, type SecureStorageAdapter, type ShareSet, type ShareSetType, type TraceContext, type WalletRecoveryState, type CreateWaasSDKContainer } from '@dynamic-labs-wallet/core';
3
3
  import { RoomTypeEnum, type SignMessageContext } from '@dynamic-labs/sdk-api-core';
4
4
  import type { DerivationInputFingerprint } from './backup/encryption/types.js';
5
5
  import type { ClientInitKeygenResult, ClientKeyShare, MPCSigner } from './mpc/types.js';
@@ -35,6 +35,8 @@ export declare class DynamicWalletClient {
35
35
  protected initializePromise: Promise<InitializeResult> | null;
36
36
  protected logger: ILogger;
37
37
  protected apiClient: DynamicApiClient;
38
+ /** Business-account orchestration (create/list/get + member/signer ops). */
39
+ readonly businessAccounts: BusinessAccountClient;
38
40
  protected walletMap: Record<string, WalletProperties>;
39
41
  protected storage: SupportedStorage;
40
42
  protected memoryStorage: {
@@ -131,12 +133,13 @@ export declare class DynamicWalletClient {
131
133
  * Client initialization logic
132
134
  */
133
135
  protected _initialize(traceContext?: TraceContext): Promise<InitializeResult>;
134
- serverInitializeKeyGen({ chainName, clientKeygenIds, dynamicRequestId, thresholdSignatureScheme, bitcoinConfig, onError, onCeremonyComplete, }: {
136
+ serverInitializeKeyGen({ chainName, clientKeygenIds, dynamicRequestId, thresholdSignatureScheme, bitcoinConfig, businessAccountId, onError, onCeremonyComplete, }: {
135
137
  chainName: string;
136
138
  clientKeygenIds: string[];
137
139
  dynamicRequestId: string;
138
140
  thresholdSignatureScheme: ThresholdSignatureScheme;
139
141
  bitcoinConfig?: BitcoinConfig;
142
+ businessAccountId?: string;
140
143
  onError?: (error: Error) => void;
141
144
  onCeremonyComplete?: (accountAddress: string, walletId: string, shareSetId?: string) => void;
142
145
  }): Promise<import("@dynamic-labs-wallet/core").KeygenCompleteResponse>;
@@ -209,6 +212,7 @@ export declare class DynamicWalletClient {
209
212
  chainName: string;
210
213
  thresholdSignatureScheme: ThresholdSignatureScheme;
211
214
  bitcoinConfig?: BitcoinConfig;
215
+ businessAccountId?: string;
212
216
  onError?: (error: Error) => void;
213
217
  onCeremonyComplete?: (accountAddress: string, walletId: string) => void;
214
218
  traceContext?: TraceContext;
@@ -365,7 +369,7 @@ export declare class DynamicWalletClient {
365
369
  existingClientKeygenIds: string[];
366
370
  existingClientKeyShares: ClientKeyShare[];
367
371
  }>;
368
- reshare({ chainName, accountAddress, oldThresholdSignatureScheme, newThresholdSignatureScheme, password, signedSessionId, cloudProviders, delegateToProjectEnvironment, mfaToken, elevatedAccessToken, revokeDelegation, googleDriveAccessToken, }: {
372
+ reshare({ chainName, accountAddress, oldThresholdSignatureScheme, newThresholdSignatureScheme, password, signedSessionId, cloudProviders, delegateToProjectEnvironment, mfaToken, elevatedAccessToken, revokeDelegation, googleDriveAccessToken, googleDriveTokenSource, }: {
369
373
  chainName: string;
370
374
  accountAddress: string;
371
375
  oldThresholdSignatureScheme: ThresholdSignatureScheme;
@@ -378,8 +382,26 @@ export declare class DynamicWalletClient {
378
382
  elevatedAccessToken?: string;
379
383
  revokeDelegation?: boolean;
380
384
  googleDriveAccessToken?: string;
385
+ googleDriveTokenSource?: 'external' | 'stored_oauth';
381
386
  }): Promise<void>;
387
+ /** Reshare into a new 2/2 share set for the target signer; seed it to CKS
388
+ * on their behalf via a single-use grant. Does not touch the caller's set. */
389
+ reshareToNewSignerShareSet({ chainName, accountAddress, businessAccountId, signerType, targetSignerIdentity, password, signedSessionId, }: {
390
+ chainName: string;
391
+ accountAddress: string;
392
+ businessAccountId: string;
393
+ signerType?: BusinessAccountSignerType;
394
+ targetSignerIdentity: TargetSignerIdentity;
395
+ password?: string;
396
+ signedSessionId: string;
397
+ }): Promise<{
398
+ shareSetId: string;
399
+ }>;
382
400
  private logOnMalformedCeremonyPayload;
401
+ /**
402
+ * Ceremony-complete payload — typed object so addSigner-only fields are
403
+ * namespaced and `clientKeyshareBackupGrant` never sits in a positional slot.
404
+ */
383
405
  private createCeremonyTerminalGate;
384
406
  private runBackupWithRotationRollback;
385
407
  private rotateRootUserShareSetIdIfChanged;
@@ -535,7 +557,7 @@ export declare class DynamicWalletClient {
535
557
  private backupToCloudProvider;
536
558
  private publishDelegatedShare;
537
559
  private createPreservedDelegatedLocation;
538
- backupSharesWithDistribution({ accountAddress, password, signedSessionId, distribution, preserveDelegatedLocation, passwordUpdateBatchId, googleDriveAccessToken, }: {
560
+ backupSharesWithDistribution({ accountAddress, password, signedSessionId, distribution, preserveDelegatedLocation, passwordUpdateBatchId, googleDriveAccessToken, googleDriveTokenSource, businessAccountId, }: {
539
561
  accountAddress: string;
540
562
  password?: string;
541
563
  signedSessionId?: string;
@@ -543,6 +565,8 @@ export declare class DynamicWalletClient {
543
565
  preserveDelegatedLocation?: boolean;
544
566
  passwordUpdateBatchId?: string;
545
567
  googleDriveAccessToken?: string;
568
+ googleDriveTokenSource?: 'external' | 'stored_oauth';
569
+ businessAccountId?: string;
546
570
  }): Promise<{
547
571
  message: string;
548
572
  walletId: string;
@@ -586,7 +610,7 @@ export declare class DynamicWalletClient {
586
610
  * @param params.backupToGoogleDrive - Whether to backup to Google Drive (defaults to false)
587
611
  * @returns Promise with backup metadata including share locations and IDs
588
612
  */
589
- storeEncryptedBackupByWallet({ accountAddress, clientKeyShares, password, signedSessionId, cloudProviders, delegatedKeyshare, passwordUpdateBatchId, googleDriveAccessToken, }: {
613
+ storeEncryptedBackupByWallet({ accountAddress, clientKeyShares, password, signedSessionId, cloudProviders, delegatedKeyshare, passwordUpdateBatchId, googleDriveAccessToken, googleDriveTokenSource, businessAccountId, }: {
590
614
  accountAddress: string;
591
615
  clientKeyShares?: ClientKeyShare[];
592
616
  password?: string;
@@ -595,6 +619,8 @@ export declare class DynamicWalletClient {
595
619
  delegatedKeyshare?: ClientKeyShare;
596
620
  passwordUpdateBatchId?: string;
597
621
  googleDriveAccessToken?: string;
622
+ googleDriveTokenSource?: 'external' | 'stored_oauth';
623
+ businessAccountId?: string;
598
624
  }): Promise<{
599
625
  keyShareIds: string[];
600
626
  keygenIds: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../packages/src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../packages/src/client.ts"],"names":[],"mappings":"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"}