@parity/product-deploy 0.11.0 → 0.12.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/bin/bulletin-bootstrap +23 -1
  2. package/dist/auth-config.js +3 -3
  3. package/dist/bug-report.js +4 -4
  4. package/dist/{chunk-JWMHCW74.js → chunk-2NF6QIDF.js} +1 -1
  5. package/dist/{chunk-53BU4X2R.js → chunk-52F2ETEG.js} +12 -2
  6. package/dist/{chunk-O4I37F5K.js → chunk-5BE5PQH6.js} +55 -12
  7. package/dist/{chunk-7RYEYWYO.js → chunk-BH7DJ5IW.js} +1 -1
  8. package/dist/{chunk-SES7CGNY.js → chunk-BXW5MBBY.js} +1 -1
  9. package/dist/{chunk-HLXRVFKL.js → chunk-FVPRBTHT.js} +38 -1
  10. package/dist/{chunk-TE2YKRYY.js → chunk-GGXK4DDN.js} +2 -2
  11. package/dist/{chunk-UUJFLJKY.js → chunk-OOGXTHVQ.js} +158 -61
  12. package/dist/{chunk-QDHLTSEO.js → chunk-PXEFWMJP.js} +2 -2
  13. package/dist/{chunk-7E33R3OQ.js → chunk-VIZ6GBQE.js} +1 -1
  14. package/dist/{chunk-HTZGBUZA.js → chunk-W2OSH4GD.js} +3 -3
  15. package/dist/{chunk-MRQPJLPS.js → chunk-XVQICFTB.js} +22 -1
  16. package/dist/chunk-probe.d.ts +43 -1
  17. package/dist/chunk-probe.js +11 -5
  18. package/dist/commands/login.js +11 -11
  19. package/dist/commands/logout.js +4 -4
  20. package/dist/commands/transfer.js +4 -4
  21. package/dist/commands/whoami.js +3 -3
  22. package/dist/deploy-actors.js +6 -6
  23. package/dist/deploy.d.ts +45 -1
  24. package/dist/deploy.js +17 -11
  25. package/dist/dotns.d.ts +33 -1
  26. package/dist/dotns.js +14 -4
  27. package/dist/index.d.ts +1 -1
  28. package/dist/index.js +18 -12
  29. package/dist/manifest/publish.js +12 -12
  30. package/dist/memory-report.js +2 -2
  31. package/dist/merkle.js +11 -11
  32. package/dist/personhood/bootstrap.js +4 -4
  33. package/dist/personhood/people-client.js +4 -4
  34. package/dist/personhood/reprove.js +19 -2
  35. package/dist/pool.d.ts +11 -1
  36. package/dist/pool.js +9 -1
  37. package/dist/run-state.js +1 -1
  38. package/dist/sss-allowance-cache.js +4 -4
  39. package/dist/storage-signer.d.ts +28 -3
  40. package/dist/storage-signer.js +13 -11
  41. package/dist/telemetry.js +2 -2
  42. package/dist/version-check.js +3 -3
  43. package/package.json +1 -1
  44. package/tools/release-retry-wrapper.mjs +6 -0
@@ -2,17 +2,17 @@ import {
2
2
  MainnetDefaultWorkerError,
3
3
  resolveDeployActors,
4
4
  resolveStorageSigner
5
- } from "./chunk-QDHLTSEO.js";
5
+ } from "./chunk-PXEFWMJP.js";
6
6
  import "./chunk-JQKKMUCT.js";
7
7
  import "./chunk-5FLTDWWP.js";
8
8
  import "./chunk-RIRDBSBG.js";
9
- import "./chunk-JWMHCW74.js";
9
+ import "./chunk-2NF6QIDF.js";
10
10
  import "./chunk-TSPERKUS.js";
11
- import "./chunk-O4I37F5K.js";
11
+ import "./chunk-5BE5PQH6.js";
12
12
  import "./chunk-SI2ZUOYD.js";
13
- import "./chunk-MRQPJLPS.js";
14
- import "./chunk-53BU4X2R.js";
15
- import "./chunk-SES7CGNY.js";
13
+ import "./chunk-XVQICFTB.js";
14
+ import "./chunk-52F2ETEG.js";
15
+ import "./chunk-BXW5MBBY.js";
16
16
  import "./chunk-JSYQ3JQS.js";
17
17
  import "./chunk-ZOC4GITL.js";
18
18
  export {
package/dist/deploy.d.ts CHANGED
@@ -164,6 +164,50 @@ declare function formatTransferModeStorageSignerLine(workerAddress: string): str
164
164
  * Exported for unit testing.
165
165
  */
166
166
  declare function formatTransferModeDotnsLine(alreadyOwned: boolean, dotName: string, recipient: string): string;
167
+ /**
168
+ * Produce an actionable reason string for the pool-fallback warning + telemetry
169
+ * attribute. BulletinSlotAuthError carries a typed reason; other errors
170
+ * (WS/connection, still possible after withTransientRetry's bounded retries
171
+ * are exhausted — see storage-signer.ts) use their message. Extracted from
172
+ * selectStorageReconnect so it's unit-testable without a real WS connection
173
+ * (#1058: pool fallbacks must always carry an explicit, visible reason).
174
+ */
175
+ declare function describeSlotFallbackReason(e: unknown): string;
176
+ /**
177
+ * Reconcile-before-resubmit (#1051). Pure decision function — no chain I/O —
178
+ * so it's directly unit-testable. Decides whether a timed-out chunk tx
179
+ * should be treated as already included (skip the resubmit, avoid a
180
+ * duplicate content write) based on two independent signals:
181
+ * - nonce advance: the account's nonce moved past the chunk's assigned
182
+ * nonce. Only meaningful when `nonceHeuristicValid` — false after a pool
183
+ * account rotation, where the old nonce baseline belongs to a different
184
+ * account (#951).
185
+ * - CID presence at best-block: a direct probe of the chunk's own content
186
+ * hash, independent of account/nonce bookkeeping entirely. Catches
187
+ * inclusion the nonce heuristic can miss (e.g. the endpoint used for the
188
+ * nonce fetch is briefly behind a peer that already saw the tx land).
189
+ * Either signal alone is sufficient.
190
+ */
191
+ declare function reconcileTimedOutChunk(opts: {
192
+ originalNonce: number | undefined;
193
+ currentNonce: number;
194
+ nonceHeuristicValid: boolean;
195
+ cidPresentAtBest: boolean | null;
196
+ }): boolean;
197
+ /**
198
+ * Chain-liveness gate (#1051). Polls `getBestBlockNumber` every
199
+ * CHUNK_LIVENESS_POLL_MS until height advances past `lastHeight`, or until
200
+ * `timeoutMs` elapses. Returns the last-observed height either way — never
201
+ * throws. `lastHeight === null` (couldn't determine a baseline) returns
202
+ * immediately without waiting: there's nothing to compare against, so
203
+ * waiting would just delay a resubmit decision for no benefit. A `null`
204
+ * result from `getBestBlockNumber` mid-wait (RPC failure) also returns
205
+ * immediately — fail open toward resubmitting rather than hanging on a dead
206
+ * peer.
207
+ */
208
+ declare function waitForChainLiveness(client: any, lastHeight: number | null, timeoutMs: number, pollMs?: number): Promise<number | null>;
209
+ /** Test-only alias — exported for unit tests that inject a short timeout/poll. */
210
+ declare const __waitForChainLivenessForTest: typeof waitForChainLiveness;
167
211
  declare function storeFile(contentBytes: Uint8Array, { client: existingClient, unsafeApi: existingApi, signer: existingSigner, hashCode, }?: ExistingProvider & {
168
212
  hashCode?: number;
169
213
  }): Promise<string>;
@@ -474,4 +518,4 @@ declare function computePhoneSigningSteps(dotnsPreflight: {
474
518
  needsPopUpgrade: boolean;
475
519
  } | null, publishNeeded: boolean): string[];
476
520
 
477
- export { BLAKE2B_256_MULTIHASH_CODE, BULLETIN_ENDPOINTS, type BitswapErrorVariant, type BitswapProbeResult, CHUNK_MORTALITY_PERIOD, DEFAULT_BULLETIN_RPC, DEFAULT_POOL_SIZE, type DeployContent, type DeployOptions, type DeployResult, ENCRYPT_KEY_LEN, ENCRYPT_MAGIC, ENCRYPT_NONCE_LEN, ENCRYPT_PBKDF2_ITERATIONS, ENCRYPT_SALT_LEN, ENCRYPT_TAG_LEN, PhoneSignatureStep, SHA256_MULTIHASH_CODE, type SizeDecision, type StoreDirectoryOptions, WS_HEARTBEAT_TIMEOUT_MS, __assignDenseNoncesForTest, __selectStorageProviderModeForTest, applyManifestFetchAttributes, assertSubdomainOwnerMatchesSigner, browserUrlFor, buildFilesMap, checkDeploySize, chooseSignerInput, chunk, computePhoneSigningSteps, computeStorageCid, createCID, deploy, deriveRootSigner, detectFramework, encodeContenthash, encryptContent, estimateUploadBytes, formatStorageSignerLine, formatTransferModeDotnsLine, formatTransferModeStorageSignerLine, friendlyChainError, hasIPFS, interpretBitswapResult, isBenignTeardownError, isConnectionError, isPhoneSignerActive, makeBulletinStatusHandler, merkleize, probeP2pRetrieval, resolveDotnsConnectOptions, resolveReproducibleTimestamp, retryBudgetExhausted, setWsHaltCallback, shouldHandoverName, storeChunkedContent, storeDirectory, storeDirectoryV2, storeFile, unpublish };
521
+ export { BLAKE2B_256_MULTIHASH_CODE, BULLETIN_ENDPOINTS, type BitswapErrorVariant, type BitswapProbeResult, CHUNK_MORTALITY_PERIOD, DEFAULT_BULLETIN_RPC, DEFAULT_POOL_SIZE, type DeployContent, type DeployOptions, type DeployResult, ENCRYPT_KEY_LEN, ENCRYPT_MAGIC, ENCRYPT_NONCE_LEN, ENCRYPT_PBKDF2_ITERATIONS, ENCRYPT_SALT_LEN, ENCRYPT_TAG_LEN, PhoneSignatureStep, SHA256_MULTIHASH_CODE, type SizeDecision, type StoreDirectoryOptions, WS_HEARTBEAT_TIMEOUT_MS, __assignDenseNoncesForTest, __selectStorageProviderModeForTest, __waitForChainLivenessForTest, applyManifestFetchAttributes, assertSubdomainOwnerMatchesSigner, browserUrlFor, buildFilesMap, checkDeploySize, chooseSignerInput, chunk, computePhoneSigningSteps, computeStorageCid, createCID, deploy, deriveRootSigner, describeSlotFallbackReason, detectFramework, encodeContenthash, encryptContent, estimateUploadBytes, formatStorageSignerLine, formatTransferModeDotnsLine, formatTransferModeStorageSignerLine, friendlyChainError, hasIPFS, interpretBitswapResult, isBenignTeardownError, isConnectionError, isPhoneSignerActive, makeBulletinStatusHandler, merkleize, probeP2pRetrieval, reconcileTimedOutChunk, resolveDotnsConnectOptions, resolveReproducibleTimestamp, retryBudgetExhausted, setWsHaltCallback, shouldHandoverName, storeChunkedContent, storeDirectory, storeDirectoryV2, storeFile, unpublish };
package/dist/deploy.js CHANGED
@@ -14,6 +14,7 @@ import {
14
14
  WS_HEARTBEAT_TIMEOUT_MS,
15
15
  __assignDenseNoncesForTest,
16
16
  __selectStorageProviderModeForTest,
17
+ __waitForChainLivenessForTest,
17
18
  applyManifestFetchAttributes,
18
19
  assertSubdomainOwnerMatchesSigner,
19
20
  browserUrlFor,
@@ -26,6 +27,7 @@ import {
26
27
  createCID,
27
28
  deploy,
28
29
  deriveRootSigner,
30
+ describeSlotFallbackReason,
29
31
  detectFramework,
30
32
  encodeContenthash,
31
33
  encryptContent,
@@ -42,6 +44,7 @@ import {
42
44
  makeBulletinStatusHandler,
43
45
  merkleize,
44
46
  probeP2pRetrieval,
47
+ reconcileTimedOutChunk,
45
48
  resolveDotnsConnectOptions,
46
49
  resolveReproducibleTimestamp,
47
50
  retryBudgetExhausted,
@@ -52,29 +55,29 @@ import {
52
55
  storeDirectoryV2,
53
56
  storeFile,
54
57
  unpublish
55
- } from "./chunk-UUJFLJKY.js";
56
- import "./chunk-7RYEYWYO.js";
58
+ } from "./chunk-OOGXTHVQ.js";
59
+ import "./chunk-BH7DJ5IW.js";
57
60
  import "./chunk-GRPLHUYC.js";
58
61
  import "./chunk-HOTQDYHD.js";
59
62
  import "./chunk-IW3X2MJF.js";
60
63
  import "./chunk-KOSF5FDO.js";
61
64
  import "./chunk-J3NIXHZZ.js";
62
65
  import "./chunk-S7EM5VMW.js";
63
- import "./chunk-HTZGBUZA.js";
64
- import "./chunk-7E33R3OQ.js";
65
- import "./chunk-HLXRVFKL.js";
66
+ import "./chunk-W2OSH4GD.js";
67
+ import "./chunk-VIZ6GBQE.js";
68
+ import "./chunk-FVPRBTHT.js";
66
69
  import "./chunk-C2TS5MER.js";
67
- import "./chunk-QDHLTSEO.js";
70
+ import "./chunk-PXEFWMJP.js";
68
71
  import "./chunk-JQKKMUCT.js";
69
72
  import "./chunk-5FLTDWWP.js";
70
73
  import "./chunk-RIRDBSBG.js";
71
- import "./chunk-JWMHCW74.js";
74
+ import "./chunk-2NF6QIDF.js";
72
75
  import "./chunk-TSPERKUS.js";
73
- import "./chunk-O4I37F5K.js";
76
+ import "./chunk-5BE5PQH6.js";
74
77
  import "./chunk-SI2ZUOYD.js";
75
- import "./chunk-MRQPJLPS.js";
76
- import "./chunk-53BU4X2R.js";
77
- import "./chunk-SES7CGNY.js";
78
+ import "./chunk-XVQICFTB.js";
79
+ import "./chunk-52F2ETEG.js";
80
+ import "./chunk-BXW5MBBY.js";
78
81
  import "./chunk-JSYQ3JQS.js";
79
82
  import {
80
83
  EXIT_CODE_NO_RETRY,
@@ -98,6 +101,7 @@ export {
98
101
  WS_HEARTBEAT_TIMEOUT_MS,
99
102
  __assignDenseNoncesForTest,
100
103
  __selectStorageProviderModeForTest,
104
+ __waitForChainLivenessForTest,
101
105
  applyManifestFetchAttributes,
102
106
  assertSubdomainOwnerMatchesSigner,
103
107
  browserUrlFor,
@@ -110,6 +114,7 @@ export {
110
114
  createCID,
111
115
  deploy,
112
116
  deriveRootSigner,
117
+ describeSlotFallbackReason,
113
118
  detectFramework,
114
119
  encodeContenthash,
115
120
  encryptContent,
@@ -126,6 +131,7 @@ export {
126
131
  makeBulletinStatusHandler,
127
132
  merkleize,
128
133
  probeP2pRetrieval,
134
+ reconcileTimedOutChunk,
129
135
  resolveDotnsConnectOptions,
130
136
  resolveReproducibleTimestamp,
131
137
  retryBudgetExhausted,
package/dist/dotns.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { BootstrapResult } from './personhood/bootstrap.js';
2
2
  import { PopSelfServeConfig } from './environments.js';
3
+ import { NonRetryableError } from './errors.js';
3
4
  import { PolkadotSigner } from 'polkadot-api';
4
5
  import './personhood/bind-personal-id.js';
5
6
  import './personhood/claim-pgas.js';
@@ -148,8 +149,39 @@ declare const TX_WALL_CLOCK_CEILING_MS: number;
148
149
  declare const TX_NO_PROGRESS_MS: number;
149
150
  declare const WS_HEARTBEAT_TIMEOUT_MS: number;
150
151
  declare const DOTNS_TX_MAX_ATTEMPTS: number;
152
+ /**
153
+ * Thrown by signAndSubmitExtrinsic when the transaction watcher goes silent
154
+ * with NO prior event — i.e. the chain never received a "signed" / "broadcasted"
155
+ * event before the silence deadline. On the phone/session-signer path this
156
+ * typically means the user hasn't approved the request on their phone yet.
157
+ * Typed separately from a plain Error so signAndSubmitWithRetry can apply a
158
+ * different policy (fast-fail, #990) instead of the default retry — backported
159
+ * from polkadot-app-deploy, which already carried this fast-fail.
160
+ */
161
+ declare class WatcherSilentNoEventError extends Error {
162
+ constructor(silentMs: number);
163
+ }
151
164
  declare const VERIFY_EFFECT_CHAIN_SECONDS: number;
165
+ declare const NONCE_ADVANCE_VERIFY_RETRIES: number;
166
+ declare const NONCE_ADVANCE_VERIFY_RETRY_INTERVAL_MS: number;
167
+ declare function verifyEffectWithGrace(verifyEffect: () => Promise<boolean>, { retries, intervalMs }?: {
168
+ retries?: number;
169
+ intervalMs?: number;
170
+ }): Promise<boolean>;
152
171
  declare function classifyTxRetryDecision(err: unknown): "retry" | "abort";
172
+ /**
173
+ * Phone-signer no-event fast-fail (#990, backported from polkadot-app-deploy).
174
+ * WatcherSilentNoEventError means the watcher never saw a single prior event —
175
+ * the phone never approved the request — which is a materially different
176
+ * situation from a WS stall after signing. For a phone signer, retrying pays
177
+ * another ~90s of silence for no better odds (the phone still won't have
178
+ * approved); fail immediately with a clear, actionable message instead.
179
+ * Non-phone signers, or a WatcherSilentNoEventError instance not present (e.g.
180
+ * a plain "watcher silent" Error where a prior event DID arrive), fall through
181
+ * to the default classifyTxRetryDecision/retry path unchanged. Pure so the
182
+ * decision is unit-testable without driving a real retry loop.
183
+ */
184
+ declare function classifyWatcherSilentFastFail(err: unknown, isPhoneSigner: boolean | undefined): NonRetryableError | null;
153
185
  declare function dotnsRetryBackoffMs(attempt: number, rand?: () => number): number;
154
186
  /**
155
187
  * Whether a failed attempt should be retried: only when the error is
@@ -673,4 +705,4 @@ declare class DotNS {
673
705
  }
674
706
  declare const dotns: DotNS;
675
707
 
676
- export { ATTR_TX_RESOLUTION_KIND, type AliasAccountClassification, type AliasAccountState, CONNECTION_TIMEOUT_MS, CONTRACTS, ContractDryRunRevertError, DECIMALS, DEFAULT_MNEMONIC, DOTNS_TX_MAX_ATTEMPTS, DOT_NODE, DotNS, type DotNSConnectOptions, type DotnsPreflightResult, type DotnsSuccessAction, MINIMUM_REGISTER_STORAGE_DEPOSIT, NATIVE_TO_ETH_RATIO, OPERATION_TIMEOUT_MS, type OwnershipResult, PUBLISHER_ABI, type ParsedDomainName, type PhoneSignatureStep, type PriceValidationResult, ProofOfPersonhoodStatus, PublisherNotSupportedError, RPC_ENDPOINTS, TX_CHAIN_TIME_BUDGET_MS, TX_KIND_HASH, TX_KIND_NONCE_ADVANCED, TX_NO_PROGRESS_MS, TX_TIMEOUT_MS, TX_WALL_CLOCK_CEILING_MS, type TxResolution, VERIFY_EFFECT_CHAIN_SECONDS, WS_HEARTBEAT_TIMEOUT_MS, __formatContractDryRunFailureForTest, bufferedWeiToNative, canRegister, classifyAliasAccountRow, classifyDotnsLabel, classifyTxRetryDecision, computeDomainTokenId, convertToHexString, convertWeiToNative, countTrailingDigits, decodePublisherRevert, dotns, dotnsRetryBackoffMs, feeFloorFor, fetchNonce, fmtPas, formatDispatchError, formatPersonhoodRemediation, formatPopShortfallReason, isCommitmentMature, isCommitmentTimingBarerevert, makeRetryStatusFilter, parseDomainName, parseProofOfPersonhoodStatus, popStatusName, registerDepositWei, sanitizeDomainLabel, shouldRegateBeforeResign, shouldRetryTxAttempt, stripTrailingDigits, validateDomainLabel, verifyNonceAdvanced, weiToNative };
708
+ export { ATTR_TX_RESOLUTION_KIND, type AliasAccountClassification, type AliasAccountState, CONNECTION_TIMEOUT_MS, CONTRACTS, ContractDryRunRevertError, DECIMALS, DEFAULT_MNEMONIC, DOTNS_TX_MAX_ATTEMPTS, DOT_NODE, DotNS, type DotNSConnectOptions, type DotnsPreflightResult, type DotnsSuccessAction, MINIMUM_REGISTER_STORAGE_DEPOSIT, NATIVE_TO_ETH_RATIO, NONCE_ADVANCE_VERIFY_RETRIES, NONCE_ADVANCE_VERIFY_RETRY_INTERVAL_MS, OPERATION_TIMEOUT_MS, type OwnershipResult, PUBLISHER_ABI, type ParsedDomainName, type PhoneSignatureStep, type PriceValidationResult, ProofOfPersonhoodStatus, PublisherNotSupportedError, RPC_ENDPOINTS, TX_CHAIN_TIME_BUDGET_MS, TX_KIND_HASH, TX_KIND_NONCE_ADVANCED, TX_NO_PROGRESS_MS, TX_TIMEOUT_MS, TX_WALL_CLOCK_CEILING_MS, type TxResolution, VERIFY_EFFECT_CHAIN_SECONDS, WS_HEARTBEAT_TIMEOUT_MS, WatcherSilentNoEventError, __formatContractDryRunFailureForTest, bufferedWeiToNative, canRegister, classifyAliasAccountRow, classifyDotnsLabel, classifyTxRetryDecision, classifyWatcherSilentFastFail, computeDomainTokenId, convertToHexString, convertWeiToNative, countTrailingDigits, decodePublisherRevert, dotns, dotnsRetryBackoffMs, feeFloorFor, fetchNonce, fmtPas, formatDispatchError, formatPersonhoodRemediation, formatPopShortfallReason, isCommitmentMature, isCommitmentTimingBarerevert, makeRetryStatusFilter, parseDomainName, parseProofOfPersonhoodStatus, popStatusName, registerDepositWei, sanitizeDomainLabel, shouldRegateBeforeResign, shouldRetryTxAttempt, stripTrailingDigits, validateDomainLabel, verifyEffectWithGrace, verifyNonceAdvanced, weiToNative };
package/dist/dotns.js CHANGED
@@ -10,6 +10,8 @@ import {
10
10
  DotNS,
11
11
  MINIMUM_REGISTER_STORAGE_DEPOSIT,
12
12
  NATIVE_TO_ETH_RATIO,
13
+ NONCE_ADVANCE_VERIFY_RETRIES,
14
+ NONCE_ADVANCE_VERIFY_RETRY_INTERVAL_MS,
13
15
  OPERATION_TIMEOUT_MS,
14
16
  PUBLISHER_ABI,
15
17
  ProofOfPersonhoodStatus,
@@ -23,12 +25,14 @@ import {
23
25
  TX_WALL_CLOCK_CEILING_MS,
24
26
  VERIFY_EFFECT_CHAIN_SECONDS,
25
27
  WS_HEARTBEAT_TIMEOUT_MS,
28
+ WatcherSilentNoEventError,
26
29
  __formatContractDryRunFailureForTest,
27
30
  bufferedWeiToNative,
28
31
  canRegister,
29
32
  classifyAliasAccountRow,
30
33
  classifyDotnsLabel,
31
34
  classifyTxRetryDecision,
35
+ classifyWatcherSilentFastFail,
32
36
  computeDomainTokenId,
33
37
  convertToHexString,
34
38
  convertWeiToNative,
@@ -54,13 +58,14 @@ import {
54
58
  shouldRetryTxAttempt,
55
59
  stripTrailingDigits,
56
60
  validateDomainLabel,
61
+ verifyEffectWithGrace,
57
62
  verifyNonceAdvanced,
58
63
  weiToNative
59
- } from "./chunk-O4I37F5K.js";
64
+ } from "./chunk-5BE5PQH6.js";
60
65
  import "./chunk-SI2ZUOYD.js";
61
- import "./chunk-MRQPJLPS.js";
62
- import "./chunk-53BU4X2R.js";
63
- import "./chunk-SES7CGNY.js";
66
+ import "./chunk-XVQICFTB.js";
67
+ import "./chunk-52F2ETEG.js";
68
+ import "./chunk-BXW5MBBY.js";
64
69
  import "./chunk-JSYQ3JQS.js";
65
70
  import "./chunk-ZOC4GITL.js";
66
71
  export {
@@ -75,6 +80,8 @@ export {
75
80
  DotNS,
76
81
  MINIMUM_REGISTER_STORAGE_DEPOSIT,
77
82
  NATIVE_TO_ETH_RATIO,
83
+ NONCE_ADVANCE_VERIFY_RETRIES,
84
+ NONCE_ADVANCE_VERIFY_RETRY_INTERVAL_MS,
78
85
  OPERATION_TIMEOUT_MS,
79
86
  PUBLISHER_ABI,
80
87
  ProofOfPersonhoodStatus,
@@ -88,12 +95,14 @@ export {
88
95
  TX_WALL_CLOCK_CEILING_MS,
89
96
  VERIFY_EFFECT_CHAIN_SECONDS,
90
97
  WS_HEARTBEAT_TIMEOUT_MS,
98
+ WatcherSilentNoEventError,
91
99
  __formatContractDryRunFailureForTest,
92
100
  bufferedWeiToNative,
93
101
  canRegister,
94
102
  classifyAliasAccountRow,
95
103
  classifyDotnsLabel,
96
104
  classifyTxRetryDecision,
105
+ classifyWatcherSilentFastFail,
97
106
  computeDomainTokenId,
98
107
  convertToHexString,
99
108
  convertWeiToNative,
@@ -119,6 +128,7 @@ export {
119
128
  shouldRetryTxAttempt,
120
129
  stripTrailingDigits,
121
130
  validateDomainLabel,
131
+ verifyEffectWithGrace,
122
132
  verifyNonceAdvanced,
123
133
  weiToNative
124
134
  };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { DeployContent, DeployOptions, DeployResult, deploy } from './deploy.js';
2
- export { PoolAccount, PoolAuthorization, bootstrapPool, derivePoolAccounts, ensureAuthorized, fetchPoolAuthorizations, selectAccount } from './pool.js';
2
+ export { AutoReauthorizeEnv, BULLETIN_BLOCKS_PER_DAY, BootstrapPoolOptions, PoolAccount, PoolAuthorization, accountsNeedingReauthorization, bootstrapPool, derivePoolAccounts, ensureAuthorized, fetchPoolAuthorizations, isAutoReauthorizeAllowed, selectAccount } from './pool.js';
3
3
  export { DEFAULT_MNEMONIC, DotNS, DotNSConnectOptions, OwnershipResult, ParsedDomainName, PriceValidationResult, parseDomainName, sanitizeDomainLabel } from './dotns.js';
4
4
  export { MerkleizeResult, MerkleizeStableResult, merkleizeJS, merkleizeWithStableOrder } from './merkle.js';
5
5
  export { EmbeddedManifest, FileType, MANIFEST_DIR, MANIFEST_FILENAME, MANIFEST_PATH, MANIFEST_VERSION, ManifestFileEntry, ParseResult, classifyFile, isVolatilePath, parseManifest } from './manifest.js';
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-362JEZKM.js";
5
5
  import {
6
6
  publishManifest
7
- } from "./chunk-TE2YKRYY.js";
7
+ } from "./chunk-GGXK4DDN.js";
8
8
  import {
9
9
  DEFAULT_TEXT_RECORD_BUDGET_BYTES,
10
10
  PLACEHOLDER_CID,
@@ -24,8 +24,8 @@ import {
24
24
  deploy,
25
25
  merkleizeJS,
26
26
  merkleizeWithStableOrder
27
- } from "./chunk-UUJFLJKY.js";
28
- import "./chunk-7RYEYWYO.js";
27
+ } from "./chunk-OOGXTHVQ.js";
28
+ import "./chunk-BH7DJ5IW.js";
29
29
  import "./chunk-GRPLHUYC.js";
30
30
  import "./chunk-HOTQDYHD.js";
31
31
  import {
@@ -49,33 +49,36 @@ import {
49
49
  isVolatilePath,
50
50
  parseManifest
51
51
  } from "./chunk-S7EM5VMW.js";
52
- import "./chunk-HTZGBUZA.js";
53
- import "./chunk-7E33R3OQ.js";
52
+ import "./chunk-W2OSH4GD.js";
53
+ import "./chunk-VIZ6GBQE.js";
54
54
  import {
55
55
  probeChunks
56
- } from "./chunk-HLXRVFKL.js";
56
+ } from "./chunk-FVPRBTHT.js";
57
57
  import "./chunk-C2TS5MER.js";
58
- import "./chunk-QDHLTSEO.js";
58
+ import "./chunk-PXEFWMJP.js";
59
59
  import "./chunk-JQKKMUCT.js";
60
60
  import "./chunk-5FLTDWWP.js";
61
61
  import "./chunk-RIRDBSBG.js";
62
- import "./chunk-JWMHCW74.js";
62
+ import "./chunk-2NF6QIDF.js";
63
63
  import "./chunk-TSPERKUS.js";
64
64
  import {
65
65
  DEFAULT_MNEMONIC,
66
66
  DotNS,
67
67
  parseDomainName,
68
68
  sanitizeDomainLabel
69
- } from "./chunk-O4I37F5K.js";
69
+ } from "./chunk-5BE5PQH6.js";
70
70
  import "./chunk-SI2ZUOYD.js";
71
71
  import {
72
+ BULLETIN_BLOCKS_PER_DAY,
73
+ accountsNeedingReauthorization,
72
74
  bootstrapPool,
73
75
  derivePoolAccounts,
74
76
  ensureAuthorized,
75
77
  fetchPoolAuthorizations,
78
+ isAutoReauthorizeAllowed,
76
79
  selectAccount
77
- } from "./chunk-MRQPJLPS.js";
78
- import "./chunk-53BU4X2R.js";
80
+ } from "./chunk-XVQICFTB.js";
81
+ import "./chunk-52F2ETEG.js";
79
82
  import {
80
83
  VERSION,
81
84
  loadRunState,
@@ -85,7 +88,7 @@ import {
85
88
  shouldSkipStaleWarning,
86
89
  stateFilePath,
87
90
  writeRunState
88
- } from "./chunk-SES7CGNY.js";
91
+ } from "./chunk-BXW5MBBY.js";
89
92
  import {
90
93
  DEFAULT_ENV_ID,
91
94
  deepMergeEnvironments,
@@ -99,6 +102,7 @@ import {
99
102
  } from "./chunk-JSYQ3JQS.js";
100
103
  import "./chunk-ZOC4GITL.js";
101
104
  export {
105
+ BULLETIN_BLOCKS_PER_DAY,
102
106
  DEFAULT_ENV_ID,
103
107
  DEFAULT_MNEMONIC,
104
108
  DEFAULT_TEXT_RECORD_BUDGET_BYTES,
@@ -109,6 +113,7 @@ export {
109
113
  MANIFEST_VERSION,
110
114
  PLACEHOLDER_CID,
111
115
  VERSION,
116
+ accountsNeedingReauthorization,
112
117
  assertWithinBudget,
113
118
  bootstrapPool,
114
119
  classifyFile,
@@ -124,6 +129,7 @@ export {
124
129
  finaliseEmbeddedManifest,
125
130
  formatEnvironmentTable,
126
131
  getTextRecordBudgetBytes,
132
+ isAutoReauthorizeAllowed,
127
133
  isValidContractAddress,
128
134
  isVolatilePath,
129
135
  listEnvironments,
@@ -1,30 +1,30 @@
1
1
  import {
2
2
  publishManifest
3
- } from "../chunk-TE2YKRYY.js";
3
+ } from "../chunk-GGXK4DDN.js";
4
4
  import "../chunk-WIMRJK32.js";
5
- import "../chunk-UUJFLJKY.js";
6
- import "../chunk-7RYEYWYO.js";
5
+ import "../chunk-OOGXTHVQ.js";
6
+ import "../chunk-BH7DJ5IW.js";
7
7
  import "../chunk-GRPLHUYC.js";
8
8
  import "../chunk-HOTQDYHD.js";
9
9
  import "../chunk-IW3X2MJF.js";
10
10
  import "../chunk-KOSF5FDO.js";
11
11
  import "../chunk-J3NIXHZZ.js";
12
12
  import "../chunk-S7EM5VMW.js";
13
- import "../chunk-HTZGBUZA.js";
14
- import "../chunk-7E33R3OQ.js";
15
- import "../chunk-HLXRVFKL.js";
13
+ import "../chunk-W2OSH4GD.js";
14
+ import "../chunk-VIZ6GBQE.js";
15
+ import "../chunk-FVPRBTHT.js";
16
16
  import "../chunk-C2TS5MER.js";
17
- import "../chunk-QDHLTSEO.js";
17
+ import "../chunk-PXEFWMJP.js";
18
18
  import "../chunk-JQKKMUCT.js";
19
19
  import "../chunk-5FLTDWWP.js";
20
20
  import "../chunk-RIRDBSBG.js";
21
- import "../chunk-JWMHCW74.js";
21
+ import "../chunk-2NF6QIDF.js";
22
22
  import "../chunk-TSPERKUS.js";
23
- import "../chunk-O4I37F5K.js";
23
+ import "../chunk-5BE5PQH6.js";
24
24
  import "../chunk-SI2ZUOYD.js";
25
- import "../chunk-MRQPJLPS.js";
26
- import "../chunk-53BU4X2R.js";
27
- import "../chunk-SES7CGNY.js";
25
+ import "../chunk-XVQICFTB.js";
26
+ import "../chunk-52F2ETEG.js";
27
+ import "../chunk-BXW5MBBY.js";
28
28
  import "../chunk-JSYQ3JQS.js";
29
29
  import "../chunk-ZOC4GITL.js";
30
30
  export {
@@ -5,8 +5,8 @@ import {
5
5
  maybeWriteMemoryReport,
6
6
  safeHeap,
7
7
  sampleFromBytes
8
- } from "./chunk-53BU4X2R.js";
9
- import "./chunk-SES7CGNY.js";
8
+ } from "./chunk-52F2ETEG.js";
9
+ import "./chunk-BXW5MBBY.js";
10
10
  export {
11
11
  DEFAULT_THRESHOLD_MB,
12
12
  buildMemoryReport,
package/dist/merkle.js CHANGED
@@ -6,29 +6,29 @@ import {
6
6
  merkleizeKuboBackend,
7
7
  merkleizeWithStableOrder,
8
8
  rebuildOrderedCarFromBytes
9
- } from "./chunk-UUJFLJKY.js";
10
- import "./chunk-7RYEYWYO.js";
9
+ } from "./chunk-OOGXTHVQ.js";
10
+ import "./chunk-BH7DJ5IW.js";
11
11
  import "./chunk-GRPLHUYC.js";
12
12
  import "./chunk-HOTQDYHD.js";
13
13
  import "./chunk-IW3X2MJF.js";
14
14
  import "./chunk-KOSF5FDO.js";
15
15
  import "./chunk-J3NIXHZZ.js";
16
16
  import "./chunk-S7EM5VMW.js";
17
- import "./chunk-HTZGBUZA.js";
18
- import "./chunk-7E33R3OQ.js";
19
- import "./chunk-HLXRVFKL.js";
17
+ import "./chunk-W2OSH4GD.js";
18
+ import "./chunk-VIZ6GBQE.js";
19
+ import "./chunk-FVPRBTHT.js";
20
20
  import "./chunk-C2TS5MER.js";
21
- import "./chunk-QDHLTSEO.js";
21
+ import "./chunk-PXEFWMJP.js";
22
22
  import "./chunk-JQKKMUCT.js";
23
23
  import "./chunk-5FLTDWWP.js";
24
24
  import "./chunk-RIRDBSBG.js";
25
- import "./chunk-JWMHCW74.js";
25
+ import "./chunk-2NF6QIDF.js";
26
26
  import "./chunk-TSPERKUS.js";
27
- import "./chunk-O4I37F5K.js";
27
+ import "./chunk-5BE5PQH6.js";
28
28
  import "./chunk-SI2ZUOYD.js";
29
- import "./chunk-MRQPJLPS.js";
30
- import "./chunk-53BU4X2R.js";
31
- import "./chunk-SES7CGNY.js";
29
+ import "./chunk-XVQICFTB.js";
30
+ import "./chunk-52F2ETEG.js";
31
+ import "./chunk-BXW5MBBY.js";
32
32
  import "./chunk-JSYQ3JQS.js";
33
33
  import "./chunk-ZOC4GITL.js";
34
34
  export {
@@ -21,15 +21,15 @@ import {
21
21
  } from "../chunk-ZYVGHDMU.js";
22
22
  import {
23
23
  WS_HEARTBEAT_TIMEOUT_MS
24
- } from "../chunk-O4I37F5K.js";
24
+ } from "../chunk-5BE5PQH6.js";
25
25
  import {
26
26
  DOTNS_CONTEXT_BYTES,
27
27
  PEOPLE_MEMBER_IDENTIFIER_HEX,
28
28
  PGAS_ASSET_ID
29
29
  } from "../chunk-SI2ZUOYD.js";
30
- import "../chunk-MRQPJLPS.js";
31
- import "../chunk-53BU4X2R.js";
32
- import "../chunk-SES7CGNY.js";
30
+ import "../chunk-XVQICFTB.js";
31
+ import "../chunk-52F2ETEG.js";
32
+ import "../chunk-BXW5MBBY.js";
33
33
  import {
34
34
  loadEnvironments
35
35
  } from "../chunk-JSYQ3JQS.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  WS_HEARTBEAT_TIMEOUT_MS
3
- } from "../chunk-O4I37F5K.js";
3
+ } from "../chunk-5BE5PQH6.js";
4
4
  import "../chunk-SI2ZUOYD.js";
5
- import "../chunk-MRQPJLPS.js";
6
- import "../chunk-53BU4X2R.js";
7
- import "../chunk-SES7CGNY.js";
5
+ import "../chunk-XVQICFTB.js";
6
+ import "../chunk-52F2ETEG.js";
7
+ import "../chunk-BXW5MBBY.js";
8
8
  import {
9
9
  loadEnvironments
10
10
  } from "../chunk-JSYQ3JQS.js";
@@ -164,7 +164,11 @@ var reproveAliasToAccount = async ({
164
164
  if (ev.ok === false) {
165
165
  fail(
166
166
  new ReproveAliasError(
167
- "reprove_alias_account dispatched but failed in-block",
167
+ // Issue #1057: this used to be a bare, unqualified string —
168
+ // the real ModuleError (pallet + variant) was captured on
169
+ // `dispatchError` but never rendered, so a preview-specific
170
+ // revert looked identical to every other in-block failure.
171
+ `reprove_alias_account dispatched but failed in-block: ${formatDispatchError(ev.dispatchError)}`,
168
172
  {
169
173
  kind: narrowDispatchError(ev.dispatchError),
170
174
  dispatchError: ev.dispatchError
@@ -180,7 +184,7 @@ var reproveAliasToAccount = async ({
180
184
  if (ev.ok === false) {
181
185
  fail(
182
186
  new ReproveAliasError(
183
- "reprove_alias_account failed at finalization",
187
+ `reprove_alias_account failed at finalization: ${formatDispatchError(ev.dispatchError)}`,
184
188
  {
185
189
  kind: narrowDispatchError(ev.dispatchError),
186
190
  dispatchError: ev.dispatchError
@@ -204,6 +208,19 @@ var reproveAliasToAccount = async ({
204
208
  });
205
209
  return { blockHash, oldRevision: storedRevision, newRevision };
206
210
  };
211
+ var formatDispatchError = (dispatchError) => {
212
+ if (dispatchError === void 0 || dispatchError === null) return "dispatch error";
213
+ if (typeof dispatchError === "string") return dispatchError;
214
+ try {
215
+ const out = JSON.stringify(
216
+ dispatchError,
217
+ (_k, v) => typeof v === "bigint" ? v.toString() : v
218
+ );
219
+ return typeof out === "string" ? out : "dispatch error";
220
+ } catch {
221
+ return String(dispatchError);
222
+ }
223
+ };
207
224
  var narrowDispatchError = (dispatchError) => {
208
225
  if (typeof dispatchError === "object" && dispatchError !== null && "type" in dispatchError) {
209
226
  const d = dispatchError;
package/dist/pool.d.ts CHANGED
@@ -16,6 +16,14 @@ interface PoolAuthorization extends PoolAccount {
16
16
  declare function derivePoolAccounts(poolSize?: number, mnemonic?: string): PoolAccount[];
17
17
  declare function isAuthorizationSufficient(auth: any, currentBlock: number): boolean;
18
18
  declare function accountsNeedingAuthorization(auths: PoolAuthorization[], currentBlock: number): PoolAuthorization[];
19
+ declare const BULLETIN_BLOCK_TIME_SECS = 6;
20
+ declare const BULLETIN_BLOCKS_PER_DAY: number;
21
+ declare function accountsNeedingReauthorization(auths: PoolAuthorization[], currentBlock: number, bufferBlocks?: number): PoolAuthorization[];
22
+ interface AutoReauthorizeEnv {
23
+ network?: string;
24
+ bulletinAutoAuthorize?: boolean;
25
+ }
26
+ declare function isAutoReauthorizeAllowed(env: AutoReauthorizeEnv | null | undefined): boolean;
19
27
  interface SelectionResult {
20
28
  account: PoolAuthorization;
21
29
  eligibleCount: number;
@@ -31,7 +39,9 @@ declare function ensureAuthorized(api: any, address: string, label?: string, opt
31
39
  interface BootstrapPoolOptions {
32
40
  authorizerMnemonic?: string;
33
41
  bulletinAuthorizeV2?: boolean;
42
+ reauthBufferBlocks?: number;
43
+ allowAutoReauthorize?: boolean;
34
44
  }
35
45
  declare function bootstrapPool(bulletinRpc: string, poolSize?: number, mnemonic?: string, opts?: BootstrapPoolOptions): Promise<void>;
36
46
 
37
- export { type BootstrapPoolOptions, type PoolAccount, type PoolAuthorization, type SelectionResult, _resetTestnetCacheForTests, accountsNeedingAuthorization, bootstrapPool, derivePoolAccounts, detectTestnet, ensureAuthorized, fetchPoolAuthorizations, formatPasBalance, isAuthorizationSufficient, isTestnetSpecName, selectAccount };
47
+ export { type AutoReauthorizeEnv, BULLETIN_BLOCKS_PER_DAY, BULLETIN_BLOCK_TIME_SECS, type BootstrapPoolOptions, type PoolAccount, type PoolAuthorization, type SelectionResult, _resetTestnetCacheForTests, accountsNeedingAuthorization, accountsNeedingReauthorization, bootstrapPool, derivePoolAccounts, detectTestnet, ensureAuthorized, fetchPoolAuthorizations, formatPasBalance, isAuthorizationSufficient, isAutoReauthorizeAllowed, isTestnetSpecName, selectAccount };
package/dist/pool.js CHANGED
@@ -1,6 +1,9 @@
1
1
  import {
2
+ BULLETIN_BLOCKS_PER_DAY,
3
+ BULLETIN_BLOCK_TIME_SECS,
2
4
  _resetTestnetCacheForTests,
3
5
  accountsNeedingAuthorization,
6
+ accountsNeedingReauthorization,
4
7
  bootstrapPool,
5
8
  derivePoolAccounts,
6
9
  detectTestnet,
@@ -8,12 +11,16 @@ import {
8
11
  fetchPoolAuthorizations,
9
12
  formatPasBalance,
10
13
  isAuthorizationSufficient,
14
+ isAutoReauthorizeAllowed,
11
15
  isTestnetSpecName,
12
16
  selectAccount
13
- } from "./chunk-MRQPJLPS.js";
17
+ } from "./chunk-XVQICFTB.js";
14
18
  export {
19
+ BULLETIN_BLOCKS_PER_DAY,
20
+ BULLETIN_BLOCK_TIME_SECS,
15
21
  _resetTestnetCacheForTests,
16
22
  accountsNeedingAuthorization,
23
+ accountsNeedingReauthorization,
17
24
  bootstrapPool,
18
25
  derivePoolAccounts,
19
26
  detectTestnet,
@@ -21,6 +28,7 @@ export {
21
28
  fetchPoolAuthorizations,
22
29
  formatPasBalance,
23
30
  isAuthorizationSufficient,
31
+ isAutoReauthorizeAllowed,
24
32
  isTestnetSpecName,
25
33
  selectAccount
26
34
  };
package/dist/run-state.js CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  shouldSkipStaleWarning,
8
8
  stateFilePath,
9
9
  writeRunState
10
- } from "./chunk-SES7CGNY.js";
10
+ } from "./chunk-BXW5MBBY.js";
11
11
  export {
12
12
  VERSION,
13
13
  loadRunState,