bulletin-deploy 0.19.3 → 0.19.4

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 (69) hide show
  1. package/assets/environments.json +5 -5
  2. package/bin/bulletin-deploy +10 -1
  3. package/dist/auth/index.js +7 -7
  4. package/dist/auth/vendor/index.js +2 -2
  5. package/dist/auth-config.js +5 -5
  6. package/dist/bug-report.js +5 -4
  7. package/dist/chain-health.js +4 -3
  8. package/dist/{chunk-PSYA6E5M.js → chunk-2P4EZOFF.js} +1 -1
  9. package/dist/{chunk-NA3SXVY6.js → chunk-3NR3T7US.js} +22 -12
  10. package/dist/{chunk-6FQJLLEF.js → chunk-6J4WRFRL.js} +1 -1
  11. package/dist/{chunk-LPTKBQII.js → chunk-7DDOVCV5.js} +1 -1
  12. package/dist/{chunk-I5PNPQZO.js → chunk-ANX3RZAS.js} +38 -10
  13. package/dist/{chunk-IP6ABIIC.js → chunk-BFK5UCUJ.js} +29 -4
  14. package/dist/{chunk-H4OZ6PTA.js → chunk-C437RTTU.js} +8 -8
  15. package/dist/{chunk-VBIFKNUS.js → chunk-CCIBF55X.js} +1 -1
  16. package/dist/{chunk-IW3X2MJF.js → chunk-D3YME2EG.js} +30 -1
  17. package/dist/{chunk-6MSHWNJT.js → chunk-D6BE3RAU.js} +138 -54
  18. package/dist/{chunk-3MAIF2SF.js → chunk-F24S4EV5.js} +49 -7
  19. package/dist/{chunk-WPC2PUCV.js → chunk-H44LXDQJ.js} +43 -8
  20. package/dist/{chunk-5FLTDWWP.js → chunk-H44NO63C.js} +1 -1
  21. package/dist/{chunk-3ACNAWUD.js → chunk-JTH3ISLR.js} +3 -3
  22. package/dist/{chunk-NKDGBZBP.js → chunk-O56KLG7Z.js} +2 -2
  23. package/dist/{chunk-KTKFHROI.js → chunk-OONQPYHM.js} +4 -4
  24. package/dist/{chunk-SNFGJOR2.js → chunk-R3BXRRKE.js} +1 -1
  25. package/dist/{chunk-ZOC4GITL.js → chunk-SH2LG52Z.js} +5 -1
  26. package/dist/{chunk-ABMNC34K.js → chunk-U2QO5G35.js} +2 -2
  27. package/dist/{chunk-QU5GJF6U.js → chunk-UFP2XWZ4.js} +3 -3
  28. package/dist/chunk-ZG3HAH5A.js +18 -0
  29. package/dist/{chunk-RJDHC56V.js → chunk-ZZIOS4RG.js} +53 -16
  30. package/dist/chunk-probe.js +4 -3
  31. package/dist/commands/login.js +24 -23
  32. package/dist/commands/logout.js +7 -7
  33. package/dist/commands/transfer.js +7 -6
  34. package/dist/commands/whoami.js +5 -5
  35. package/dist/deploy-actors.js +10 -9
  36. package/dist/deploy.d.ts +45 -18
  37. package/dist/deploy.js +30 -20
  38. package/dist/dotns.d.ts +56 -2
  39. package/dist/dotns.js +9 -6
  40. package/dist/environments.d.ts +7 -1
  41. package/dist/environments.js +2 -2
  42. package/dist/errors.d.ts +5 -1
  43. package/dist/errors.js +7 -3
  44. package/dist/incremental-stats.d.ts +14 -0
  45. package/dist/incremental-stats.js +1 -1
  46. package/dist/index.d.ts +1 -0
  47. package/dist/index.js +23 -22
  48. package/dist/manifest/config-load.js +3 -3
  49. package/dist/manifest/publish.d.ts +1 -0
  50. package/dist/manifest/publish.js +23 -22
  51. package/dist/manifest/schema.js +1 -1
  52. package/dist/manifest-embed.js +2 -2
  53. package/dist/manifest-fetch.js +2 -2
  54. package/dist/manifest-roundtrip.js +2 -2
  55. package/dist/manifest.d.ts +14 -1
  56. package/dist/manifest.js +5 -1
  57. package/dist/memory-report.js +3 -2
  58. package/dist/merkle.js +20 -19
  59. package/dist/mnemonic.d.ts +35 -0
  60. package/dist/mnemonic.js +8 -0
  61. package/dist/personhood/bootstrap.js +7 -6
  62. package/dist/personhood/people-client.js +7 -6
  63. package/dist/run-state.js +1 -1
  64. package/dist/sss-allowance-cache.js +6 -6
  65. package/dist/storage-signer.js +20 -19
  66. package/dist/telemetry.d.ts +2 -1
  67. package/dist/telemetry.js +5 -2
  68. package/dist/version-check.js +4 -3
  69. package/package.json +4 -4
package/dist/dotns.d.ts CHANGED
@@ -187,7 +187,7 @@ interface DotnsPreflightResult {
187
187
  transferred: bigint;
188
188
  };
189
189
  }
190
- declare const MINIMUM_REGISTER_STORAGE_DEPOSIT = 2000000000000n;
190
+ declare const MINIMUM_REGISTER_STORAGE_DEPOSIT = 50000000000n;
191
191
  declare function registerDepositWei(userStatus: number, startingPriceWei: bigint): bigint;
192
192
  declare function bufferedWeiToNative(weiValue: bigint, nativeToEthRatio: bigint): bigint;
193
193
  declare function weiToNative(feeWei: bigint, nativeToEthRatio: bigint): bigint;
@@ -204,6 +204,55 @@ type DotnsSuccessAction = Exclude<DotnsPreflightResult["plannedAction"], "abort"
204
204
  * so the floor can eventually come from measurement rather than the fixed 200 PAS.
205
205
  */
206
206
  declare function storageDepositLimitFor(estimate: bigint, floor?: bigint): bigint;
207
+ /**
208
+ * The weight ceiling to declare on a Revive call, given the dry run's
209
+ * measured gasRequired. #1522: weight_limit used to be declared at exactly
210
+ * the dry-run estimate, with no margin — unlike storage_deposit_limit
211
+ * (storageDepositLimitFor, above), buffered 20% since #1518. A dry run
212
+ * measures the chain as it was; a write elsewhere between the estimate and
213
+ * inclusion (proof_size moves on ANY write to the same trie, not just this
214
+ * call's own) can push the real requirement above the declared limit and
215
+ * trap the call — see #1522's S9 incident for a measured replay.
216
+ *
217
+ * Same 20% factor as storageDepositLimitFor, applied to BOTH components:
218
+ * S9 shows ref_time and proof_size drifting independently, and buffering
219
+ * only one was not enough to clear the replay.
220
+ *
221
+ * Deliberately NO floor, unlike storageDepositLimitFor: the single-call path
222
+ * (dryRunReviveCall) always measures the exact call about to be submitted —
223
+ * no commit()-stands-in-for-register()-reveal substitution gap to floor
224
+ * against there. (submitBatchedContractCalls, below, only dry-runs the HEAD
225
+ * call and reuses that estimate for every sibling in the batch — pre-
226
+ * existing behavior this fix doesn't change, and its own gap to note if
227
+ * that ever needs tightening.) Over-buffering also isn't free insurance the
228
+ * way storage headroom is — pallet-revive declares a Revive.call's
229
+ * pre-dispatch weight from the declared gas_limit, so a large enough
230
+ * weight_limit gets the tx rejected outright with `Invalid/ExhaustsResources`
231
+ * before it reaches a block (verified live against paseo-next-v2).
232
+ *
233
+ * The buffer is not literally free, though: pallet-revive withholds the fee
234
+ * up front at the DECLARED weight before dispatch and refunds only the
235
+ * unused portion afterward (Substrate's standard weight-refund mechanism) —
236
+ * so the signer must briefly hold slightly more than the call's actual fee.
237
+ * Block 842020 (the S9 incident's own trapped extrinsic) shows the scale:
238
+ * Balances.Withdraw charged 170,935,081 plancks up front on A's stale,
239
+ * UNBUFFERED declaration, and Balances.Deposit refunded only 476,674 back
240
+ * (A's call trapped near its limit, so almost nothing was unused). A 20%
241
+ * buffer's extra up-front hold on a register-sized call is therefore on the
242
+ * order of 0.003-0.004 PAS — well under FEE_FLOOR_REGISTER's existing 0.1
243
+ * PAS margin. What it does NOT do is meaningfully raise the FINAL charged
244
+ * fee: two real, finalized commit() calls declaring 1.2x vs. 5x the
245
+ * measured weight cost 22,371,211 and 22,421,211 plancks respectively (0.22%
246
+ * apart) once refunded — confirming the pre-dispatch hold differs far more
247
+ * than the post-refund charge does.
248
+ */
249
+ declare function weightLimitFor(gasRequired: {
250
+ referenceTime: bigint;
251
+ proofSize: bigint;
252
+ }): {
253
+ ref_time: bigint;
254
+ proof_size: bigint;
255
+ };
207
256
  declare function feeFloorFor(plannedAction: DotnsSuccessAction, storageDeposit?: bigint, rentPriceNative?: bigint, transferFeeNative?: bigint): bigint;
208
257
  declare const RPC_ENDPOINTS: string[];
209
258
  declare const CONTRACTS: {
@@ -446,6 +495,9 @@ declare function formatContractDryRunFailure(gasEstimate: {
446
495
  encodedData: string;
447
496
  args?: unknown[];
448
497
  contracts?: Record<string, string>;
498
+ /** #1518: the storage-deposit floor actually declared on this call, so the bare-revert
499
+ * diagnostic below can name the real configured amount instead of a stale hardcoded one. */
500
+ registerStorageDeposit?: bigint;
449
501
  }): string;
450
502
  declare function __formatContractDryRunFailureForTest(gasEstimate: Parameters<typeof formatContractDryRunFailure>[0], context: Parameters<typeof formatContractDryRunFailure>[1]): string;
451
503
  declare function convertWeiToNative(weiValue: bigint): bigint;
@@ -517,7 +569,9 @@ declare class ReviveClientWrapper {
517
569
  };
518
570
  client: any;
519
571
  mappedAccounts: Set<string>;
572
+ private _storageDepositFloor;
520
573
  constructor(client: any);
574
+ setStorageDepositFloor(floor: bigint): void;
521
575
  getEvmAddress(substrateAddress: string): Promise<string>;
522
576
  performDryRunCall(originSubstrateAddress: string, contractAddress: string, value: bigint, encodedData: string): Promise<any>;
523
577
  estimateGasForCall(originSubstrateAddress: string, contractAddress: string, value: bigint, encodedData: string): Promise<any>;
@@ -1151,4 +1205,4 @@ declare class DotNS {
1151
1205
  }
1152
1206
  declare const dotns: DotNS;
1153
1207
 
1154
- export { ATTR_TX_RESOLUTION_KIND, type AliasAccountClassification, type AliasAccountState, type AuthorizationResult, CONNECTION_TIMEOUT_MS, CONTENTHASH_VERIFY_ATTEMPTS, CONTRACTS, ContractDryRunRevertError, DECIMALS, DEFAULT_DOTNS_PROFILE, DEFAULT_MNEMONIC, DEFAULT_TLD, DOTNS_BEST_BLOCK_GRACE_MS, DOTNS_NONCE_CONTENTION_MAX_ATTEMPTS, DOTNS_TX_MAX_ATTEMPTS, type DomainLabelAlternative, DotNS, type DotNSConnectOptions, type DotnsPreflightResult, type DotnsSuccessAction, KNOWN_TLDS, MINIMUM_REGISTER_STORAGE_DEPOSIT, NATIVE_TO_ETH_RATIO, NONCE_ADVANCE_VERIFY_RETRIES, NONCE_ADVANCE_VERIFY_RETRY_INTERVAL_MS, OPERATION_TIMEOUT_MS, type OwnershipResult, PHONE_APPROVAL_MS, PHONE_SILENCE_MAX_REARMS, type ParsedDomainName, type PhoneSignatureStep, PhoneSilenceNonRetryableError, type PriceValidationResult, ProofOfPersonhoodStatus, REVIVE_ADDRESS_ATTEMPTS, RPC_ENDPOINTS, type Registrability, type RegistryDryRunResult, ReviveClientWrapper, TX_CHAIN_TIME_BUDGET_MS, TX_KIND_BEST_BLOCK, TX_KIND_HASH, TX_KIND_NONCE_ADVANCED, TX_KIND_SKIPPED, TX_NO_PROGRESS_MS, TX_TIMEOUT_MS, TX_WALL_CLOCK_CEILING_MS, type TxResolution, VERIFY_EFFECT_CHAIN_SECONDS, WS_HEARTBEAT_TIMEOUT_MS, WatcherSilentNoEventError, __formatContractDryRunFailureForTest, assertNotZeroRecipient, bufferedWeiToNative, buildLabelAlternatives, canRegister, checkTldNodeConsistency, classifyAliasAccountRow, classifyDotnsLabel, classifyRegistrability, classifyTxRetryDecision, classifyWatcherSilentFastFail, computeDomainNode, computeDomainTokenId, computeSubnodeIds, convertToHexString, convertWeiToNative, countTrailingDigits, decideRegistrabilityOutcome, dotns, dotnsRetryBackoffMs, feeFloorFor, fetchNonce, fmtPas, formatDispatchError, formatPersonhoodRemediation, formatPopShortfallReason, formatUnregistrableReason, isCommitmentMature, isCommitmentTimingBarerevert, isNonceContentionAmbiguous, makeRetryStatusFilter, nonceContentionBackoffMs, normalizeOnChainTld, parseDomainName, parseProofOfPersonhoodStatus, pickVerifyEndpoint, popStatusName, reacquireNonceOnContention, registerDepositWei, resolveTldFromRegistryResult, sanitizeDomainLabel, shortNamesClosedReason, shouldRegateBeforeResign, shouldRetryTxAttempt, shouldSkipTextWrite, soulboundTransferReason, storageDepositLimitFor, stripTldSuffix, stripTrailingDigits, validateDomainLabel, verifyEffectWithGrace, verifyNonceAdvanced, weiToNative, withRetry };
1208
+ export { ATTR_TX_RESOLUTION_KIND, type AliasAccountClassification, type AliasAccountState, type AuthorizationResult, CONNECTION_TIMEOUT_MS, CONTENTHASH_VERIFY_ATTEMPTS, CONTRACTS, ContractDryRunRevertError, DECIMALS, DEFAULT_DOTNS_PROFILE, DEFAULT_MNEMONIC, DEFAULT_TLD, DOTNS_BEST_BLOCK_GRACE_MS, DOTNS_NONCE_CONTENTION_MAX_ATTEMPTS, DOTNS_TX_MAX_ATTEMPTS, type DomainLabelAlternative, DotNS, type DotNSConnectOptions, type DotnsPreflightResult, type DotnsSuccessAction, KNOWN_TLDS, MINIMUM_REGISTER_STORAGE_DEPOSIT, NATIVE_TO_ETH_RATIO, NONCE_ADVANCE_VERIFY_RETRIES, NONCE_ADVANCE_VERIFY_RETRY_INTERVAL_MS, OPERATION_TIMEOUT_MS, type OwnershipResult, PHONE_APPROVAL_MS, PHONE_SILENCE_MAX_REARMS, type ParsedDomainName, type PhoneSignatureStep, PhoneSilenceNonRetryableError, type PriceValidationResult, ProofOfPersonhoodStatus, REVIVE_ADDRESS_ATTEMPTS, RPC_ENDPOINTS, type Registrability, type RegistryDryRunResult, ReviveClientWrapper, TX_CHAIN_TIME_BUDGET_MS, TX_KIND_BEST_BLOCK, TX_KIND_HASH, TX_KIND_NONCE_ADVANCED, TX_KIND_SKIPPED, TX_NO_PROGRESS_MS, TX_TIMEOUT_MS, TX_WALL_CLOCK_CEILING_MS, type TxResolution, VERIFY_EFFECT_CHAIN_SECONDS, WS_HEARTBEAT_TIMEOUT_MS, WatcherSilentNoEventError, __formatContractDryRunFailureForTest, assertNotZeroRecipient, bufferedWeiToNative, buildLabelAlternatives, canRegister, checkTldNodeConsistency, classifyAliasAccountRow, classifyDotnsLabel, classifyRegistrability, classifyTxRetryDecision, classifyWatcherSilentFastFail, computeDomainNode, computeDomainTokenId, computeSubnodeIds, convertToHexString, convertWeiToNative, countTrailingDigits, decideRegistrabilityOutcome, dotns, dotnsRetryBackoffMs, feeFloorFor, fetchNonce, fmtPas, formatDispatchError, formatPersonhoodRemediation, formatPopShortfallReason, formatUnregistrableReason, isCommitmentMature, isCommitmentTimingBarerevert, isNonceContentionAmbiguous, makeRetryStatusFilter, nonceContentionBackoffMs, normalizeOnChainTld, parseDomainName, parseProofOfPersonhoodStatus, pickVerifyEndpoint, popStatusName, reacquireNonceOnContention, registerDepositWei, resolveTldFromRegistryResult, sanitizeDomainLabel, shortNamesClosedReason, shouldRegateBeforeResign, shouldRetryTxAttempt, shouldSkipTextWrite, soulboundTransferReason, storageDepositLimitFor, stripTldSuffix, stripTrailingDigits, validateDomainLabel, verifyEffectWithGrace, verifyNonceAdvanced, weiToNative, weightLimitFor, withRetry };
package/dist/dotns.js CHANGED
@@ -89,15 +89,17 @@ import {
89
89
  verifyEffectWithGrace,
90
90
  verifyNonceAdvanced,
91
91
  weiToNative,
92
+ weightLimitFor,
92
93
  withRetry
93
- } from "./chunk-RJDHC56V.js";
94
+ } from "./chunk-ZZIOS4RG.js";
94
95
  import "./chunk-SI2ZUOYD.js";
96
+ import "./chunk-ZG3HAH5A.js";
95
97
  import "./chunk-FWJQAIVO.js";
96
- import "./chunk-NA3SXVY6.js";
97
- import "./chunk-ZOC4GITL.js";
98
- import "./chunk-VBIFKNUS.js";
99
- import "./chunk-IP6ABIIC.js";
100
- import "./chunk-KTKFHROI.js";
98
+ import "./chunk-3NR3T7US.js";
99
+ import "./chunk-CCIBF55X.js";
100
+ import "./chunk-BFK5UCUJ.js";
101
+ import "./chunk-OONQPYHM.js";
102
+ import "./chunk-SH2LG52Z.js";
101
103
  import "./chunk-K5SP4OUC.js";
102
104
  export {
103
105
  ATTR_TX_RESOLUTION_KIND,
@@ -190,5 +192,6 @@ export {
190
192
  verifyEffectWithGrace,
191
193
  verifyNonceAdvanced,
192
194
  weiToNative,
195
+ weightLimitFor,
193
196
  withRetry
194
197
  };
@@ -66,6 +66,12 @@ interface LoadResult {
66
66
  source: EnvironmentsSource;
67
67
  /** Set when source is "file": the path that was read. */
68
68
  userFilePath?: string;
69
+ /**
70
+ * Set when source is "file": per environment id, the contract keys that file
71
+ * actually declared. The merge is key-by-key, so every other key in the
72
+ * resolved map still came from the shipped config.
73
+ */
74
+ userFileContractKeys?: Record<string, string[]>;
69
75
  }
70
76
  interface LoadOptions {
71
77
  bundledPath?: string;
@@ -111,7 +117,7 @@ declare function isValidContractAddress(addr: unknown): boolean;
111
117
  * @param envId The environment ID, used in the error message.
112
118
  */
113
119
  declare function validateContractAddresses(contracts: Record<string, string>, envId: string, sources?: Record<string, string>): void;
114
- declare function describeContractSources(envContracts: Record<string, string>, cliContracts: Record<string, string> | undefined, source: string | undefined, userFilePath: string | undefined, envId: string | undefined): Record<string, string>;
120
+ declare function describeContractSources(envContracts: Record<string, string>, cliContracts: Record<string, string> | undefined, source: string | undefined, userFilePath: string | undefined, envId: string | undefined, userFileKeys: readonly string[] | undefined): Record<string, string>;
115
121
  /**
116
122
  * Deep-merges a user-supplied partial EnvironmentsDoc over a base doc.
117
123
  *
@@ -10,8 +10,8 @@ import {
10
10
  loadEnvironments,
11
11
  resolveEndpoints,
12
12
  validateContractAddresses
13
- } from "./chunk-NA3SXVY6.js";
14
- import "./chunk-ZOC4GITL.js";
13
+ } from "./chunk-3NR3T7US.js";
14
+ import "./chunk-SH2LG52Z.js";
15
15
  export {
16
16
  DEFAULT_ENV_ID,
17
17
  deepMergeEnvironments,
package/dist/errors.d.ts CHANGED
@@ -2,5 +2,9 @@ declare class NonRetryableError extends Error {
2
2
  constructor(message: string);
3
3
  }
4
4
  declare const EXIT_CODE_NO_RETRY = 78;
5
+ /** How describeContractSources names an address that came from a config we
6
+ * ship. Shared so the classifier cannot drift from the wording it matches. */
7
+ declare const SHIPPED_CONFIG_ORIGIN = "assets/environments.json shipped with bulletin-deploy";
8
+ declare const FALLBACK_CONFIG_ORIGIN = "the built-in fallback for";
5
9
 
6
- export { EXIT_CODE_NO_RETRY, NonRetryableError };
10
+ export { EXIT_CODE_NO_RETRY, FALLBACK_CONFIG_ORIGIN, NonRetryableError, SHIPPED_CONFIG_ORIGIN };
package/dist/errors.js CHANGED
@@ -1,8 +1,12 @@
1
1
  import {
2
2
  EXIT_CODE_NO_RETRY,
3
- NonRetryableError
4
- } from "./chunk-ZOC4GITL.js";
3
+ FALLBACK_CONFIG_ORIGIN,
4
+ NonRetryableError,
5
+ SHIPPED_CONFIG_ORIGIN
6
+ } from "./chunk-SH2LG52Z.js";
5
7
  export {
6
8
  EXIT_CODE_NO_RETRY,
7
- NonRetryableError
9
+ FALLBACK_CONFIG_ORIGIN,
10
+ NonRetryableError,
11
+ SHIPPED_CONFIG_ORIGIN
8
12
  };
@@ -10,6 +10,13 @@ interface IncrementalStats {
10
10
  filesTotal: number;
11
11
  filesStable: number;
12
12
  filesVolatile: number;
13
+ filesStablePacked: number;
14
+ heuristicAgreeStable: number;
15
+ heuristicAgreeVolatile: number;
16
+ heuristicFalseVolatile: number;
17
+ heuristicFalseStable: number;
18
+ buildMarkers: string[];
19
+ unhashedStableSample: string[];
13
20
  probedTotal: number;
14
21
  probePresent: number;
15
22
  probeAbsent: number;
@@ -44,6 +51,13 @@ interface ComputeStatsInput {
44
51
  filesTotal: number;
45
52
  filesStable: number;
46
53
  filesVolatile: number;
54
+ filesStablePacked?: number;
55
+ heuristicAgreeStable?: number;
56
+ heuristicAgreeVolatile?: number;
57
+ heuristicFalseVolatile?: number;
58
+ heuristicFalseStable?: number;
59
+ buildMarkers?: string[];
60
+ unhashedStableSample?: string[];
47
61
  probeResults: ChunkProbeResult[];
48
62
  prevChunks: Record<string, ManifestChunkEntry>;
49
63
  retentionPeriodBlocks: number;
@@ -2,7 +2,7 @@ import {
2
2
  computeStats,
3
3
  renderSummary,
4
4
  telemetryAttributes
5
- } from "./chunk-IW3X2MJF.js";
5
+ } from "./chunk-D3YME2EG.js";
6
6
  export {
7
7
  computeStats,
8
8
  renderSummary,
package/dist/index.d.ts CHANGED
@@ -21,6 +21,7 @@ import 'multiformats/cid';
21
21
  import './dotns-protocol.js';
22
22
  import 'polkadot-api';
23
23
  import './errors.js';
24
+ import './mnemonic.js';
24
25
  import './personhood/bootstrap.js';
25
26
  import './personhood/bind-personal-id.js';
26
27
  import './personhood/claim-pgas.js';
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  publishManifest,
8
8
  verifyEmbeddedAppManifests,
9
9
  writeEmbeddedAppManifests
10
- } from "./chunk-H4OZ6PTA.js";
10
+ } from "./chunk-C437RTTU.js";
11
11
  import {
12
12
  DEFAULT_TEXT_RECORD_BUDGET_BYTES,
13
13
  PLACEHOLDER_CID,
@@ -20,33 +20,33 @@ import {
20
20
  formatConfigLoadError,
21
21
  loadProductConfig,
22
22
  tryLoadProductConfig
23
- } from "./chunk-NKDGBZBP.js";
23
+ } from "./chunk-O56KLG7Z.js";
24
24
  import {
25
25
  validateExecutableManifest,
26
26
  validateProductConfig,
27
27
  validateRootManifest
28
- } from "./chunk-I5PNPQZO.js";
28
+ } from "./chunk-ANX3RZAS.js";
29
29
  import {
30
30
  deploy,
31
31
  merkleizeJS,
32
32
  merkleizeWithStableOrder
33
- } from "./chunk-6MSHWNJT.js";
33
+ } from "./chunk-D6BE3RAU.js";
34
+ import "./chunk-6J4WRFRL.js";
35
+ import "./chunk-GRPLHUYC.js";
34
36
  import "./chunk-HNJWIY55.js";
35
37
  import "./chunk-M5AKL3FL.js";
36
- import "./chunk-6FQJLLEF.js";
37
- import "./chunk-GRPLHUYC.js";
38
38
  import {
39
39
  computeStats,
40
40
  renderSummary,
41
41
  telemetryAttributes
42
- } from "./chunk-IW3X2MJF.js";
42
+ } from "./chunk-D3YME2EG.js";
43
43
  import {
44
44
  finaliseEmbeddedManifest,
45
45
  writeEmbeddedManifestPlaceholder
46
- } from "./chunk-LPTKBQII.js";
46
+ } from "./chunk-7DDOVCV5.js";
47
47
  import {
48
48
  fetchPreviousManifest
49
- } from "./chunk-3MAIF2SF.js";
49
+ } from "./chunk-F24S4EV5.js";
50
50
  import {
51
51
  MANIFEST_DIR,
52
52
  MANIFEST_FILENAME,
@@ -55,24 +55,25 @@ import {
55
55
  classifyFile,
56
56
  isVolatilePath,
57
57
  parseManifest
58
- } from "./chunk-WPC2PUCV.js";
59
- import "./chunk-QU5GJF6U.js";
60
- import "./chunk-SNFGJOR2.js";
58
+ } from "./chunk-H44LXDQJ.js";
59
+ import "./chunk-UFP2XWZ4.js";
60
+ import "./chunk-R3BXRRKE.js";
61
61
  import {
62
62
  probeChunks
63
- } from "./chunk-PSYA6E5M.js";
63
+ } from "./chunk-2P4EZOFF.js";
64
64
  import "./chunk-C2TS5MER.js";
65
- import "./chunk-3ACNAWUD.js";
65
+ import "./chunk-JTH3ISLR.js";
66
66
  import "./chunk-JQKKMUCT.js";
67
- import "./chunk-5FLTDWWP.js";
68
67
  import "./chunk-RIRDBSBG.js";
68
+ import "./chunk-H44NO63C.js";
69
69
  import {
70
70
  DEFAULT_MNEMONIC,
71
71
  DotNS,
72
72
  parseDomainName,
73
73
  sanitizeDomainLabel
74
- } from "./chunk-RJDHC56V.js";
74
+ } from "./chunk-ZZIOS4RG.js";
75
75
  import "./chunk-SI2ZUOYD.js";
76
+ import "./chunk-ZG3HAH5A.js";
76
77
  import {
77
78
  BULLETIN_BLOCKS_PER_DAY,
78
79
  DEPLOY_PATH_PREFIX,
@@ -87,7 +88,7 @@ import {
87
88
  poolAccountDerivationPath,
88
89
  selectAccount
89
90
  } from "./chunk-FWJQAIVO.js";
90
- import "./chunk-ABMNC34K.js";
91
+ import "./chunk-U2QO5G35.js";
91
92
  import "./chunk-TSPERKUS.js";
92
93
  import {
93
94
  DEFAULT_ENV_ID,
@@ -99,10 +100,9 @@ import {
99
100
  loadEnvironments,
100
101
  resolveEndpoints,
101
102
  validateContractAddresses
102
- } from "./chunk-NA3SXVY6.js";
103
- import "./chunk-ZOC4GITL.js";
104
- import "./chunk-VBIFKNUS.js";
105
- import "./chunk-IP6ABIIC.js";
103
+ } from "./chunk-3NR3T7US.js";
104
+ import "./chunk-CCIBF55X.js";
105
+ import "./chunk-BFK5UCUJ.js";
106
106
  import {
107
107
  VERSION,
108
108
  loadRunState,
@@ -112,7 +112,8 @@ import {
112
112
  shouldSkipStaleWarning,
113
113
  stateFilePath,
114
114
  writeRunState
115
- } from "./chunk-KTKFHROI.js";
115
+ } from "./chunk-OONQPYHM.js";
116
+ import "./chunk-SH2LG52Z.js";
116
117
  import "./chunk-K5SP4OUC.js";
117
118
  export {
118
119
  BULLETIN_BLOCKS_PER_DAY,
@@ -2,9 +2,9 @@ import {
2
2
  formatConfigLoadError,
3
3
  loadProductConfig,
4
4
  tryLoadProductConfig
5
- } from "../chunk-NKDGBZBP.js";
6
- import "../chunk-I5PNPQZO.js";
7
- import "../chunk-ZOC4GITL.js";
5
+ } from "../chunk-O56KLG7Z.js";
6
+ import "../chunk-ANX3RZAS.js";
7
+ import "../chunk-SH2LG52Z.js";
8
8
  export {
9
9
  formatConfigLoadError,
10
10
  loadProductConfig,
@@ -8,6 +8,7 @@ import '../manifest.js';
8
8
  import '../dotns-protocol.js';
9
9
  import '../environments.js';
10
10
  import '../errors.js';
11
+ import '../mnemonic.js';
11
12
  import '../personhood/bootstrap.js';
12
13
  import '../personhood/bind-personal-id.js';
13
14
  import '../personhood/claim-pgas.js';
@@ -3,38 +3,39 @@ import {
3
3
  manifestSignerOptions,
4
4
  publishManifest,
5
5
  registerOrEnsureResolver
6
- } from "../chunk-H4OZ6PTA.js";
6
+ } from "../chunk-C437RTTU.js";
7
7
  import "../chunk-YTRNJMI4.js";
8
8
  import "../chunk-DMNLTQGA.js";
9
- import "../chunk-NKDGBZBP.js";
10
- import "../chunk-I5PNPQZO.js";
11
- import "../chunk-6MSHWNJT.js";
9
+ import "../chunk-O56KLG7Z.js";
10
+ import "../chunk-ANX3RZAS.js";
11
+ import "../chunk-D6BE3RAU.js";
12
+ import "../chunk-6J4WRFRL.js";
13
+ import "../chunk-GRPLHUYC.js";
12
14
  import "../chunk-HNJWIY55.js";
13
15
  import "../chunk-M5AKL3FL.js";
14
- import "../chunk-6FQJLLEF.js";
15
- import "../chunk-GRPLHUYC.js";
16
- import "../chunk-IW3X2MJF.js";
17
- import "../chunk-LPTKBQII.js";
18
- import "../chunk-3MAIF2SF.js";
19
- import "../chunk-WPC2PUCV.js";
20
- import "../chunk-QU5GJF6U.js";
21
- import "../chunk-SNFGJOR2.js";
22
- import "../chunk-PSYA6E5M.js";
16
+ import "../chunk-D3YME2EG.js";
17
+ import "../chunk-7DDOVCV5.js";
18
+ import "../chunk-F24S4EV5.js";
19
+ import "../chunk-H44LXDQJ.js";
20
+ import "../chunk-UFP2XWZ4.js";
21
+ import "../chunk-R3BXRRKE.js";
22
+ import "../chunk-2P4EZOFF.js";
23
23
  import "../chunk-C2TS5MER.js";
24
- import "../chunk-3ACNAWUD.js";
24
+ import "../chunk-JTH3ISLR.js";
25
25
  import "../chunk-JQKKMUCT.js";
26
- import "../chunk-5FLTDWWP.js";
27
26
  import "../chunk-RIRDBSBG.js";
28
- import "../chunk-RJDHC56V.js";
27
+ import "../chunk-H44NO63C.js";
28
+ import "../chunk-ZZIOS4RG.js";
29
29
  import "../chunk-SI2ZUOYD.js";
30
+ import "../chunk-ZG3HAH5A.js";
30
31
  import "../chunk-FWJQAIVO.js";
31
- import "../chunk-ABMNC34K.js";
32
+ import "../chunk-U2QO5G35.js";
32
33
  import "../chunk-TSPERKUS.js";
33
- import "../chunk-NA3SXVY6.js";
34
- import "../chunk-ZOC4GITL.js";
35
- import "../chunk-VBIFKNUS.js";
36
- import "../chunk-IP6ABIIC.js";
37
- import "../chunk-KTKFHROI.js";
34
+ import "../chunk-3NR3T7US.js";
35
+ import "../chunk-CCIBF55X.js";
36
+ import "../chunk-BFK5UCUJ.js";
37
+ import "../chunk-OONQPYHM.js";
38
+ import "../chunk-SH2LG52Z.js";
38
39
  import "../chunk-K5SP4OUC.js";
39
40
  export {
40
41
  domainMatchesEnvTld,
@@ -2,7 +2,7 @@ import {
2
2
  validateExecutableManifest,
3
3
  validateProductConfig,
4
4
  validateRootManifest
5
- } from "../chunk-I5PNPQZO.js";
5
+ } from "../chunk-ANX3RZAS.js";
6
6
  export {
7
7
  validateExecutableManifest,
8
8
  validateProductConfig,
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  finaliseEmbeddedManifest,
3
3
  writeEmbeddedManifestPlaceholder
4
- } from "./chunk-LPTKBQII.js";
5
- import "./chunk-WPC2PUCV.js";
4
+ } from "./chunk-7DDOVCV5.js";
5
+ import "./chunk-H44LXDQJ.js";
6
6
  export {
7
7
  finaliseEmbeddedManifest,
8
8
  writeEmbeddedManifestPlaceholder
@@ -10,8 +10,8 @@ import {
10
10
  readPersistentLocalManifest,
11
11
  walkDagToManifest,
12
12
  writePersistentLocalManifest
13
- } from "./chunk-3MAIF2SF.js";
14
- import "./chunk-WPC2PUCV.js";
13
+ } from "./chunk-F24S4EV5.js";
14
+ import "./chunk-H44LXDQJ.js";
15
15
  export {
16
16
  CHAIN_TIER_TIMEOUT_MS,
17
17
  DEFAULT_TIMEOUT_MS,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  extractManifestFromCar
3
- } from "./chunk-3MAIF2SF.js";
4
- import "./chunk-WPC2PUCV.js";
3
+ } from "./chunk-F24S4EV5.js";
4
+ import "./chunk-H44LXDQJ.js";
5
5
 
6
6
  // src/manifest-roundtrip.ts
7
7
  async function fetchManifestRoundtrip(cid, options) {
@@ -24,6 +24,19 @@ interface EmbeddedManifest {
24
24
  blocks: string[];
25
25
  chunks: Record<string, ManifestChunkEntry>;
26
26
  }
27
+ declare const CONTENT_HASH_RE: RegExp;
28
+ type FrameworkRules = {
29
+ /** Prefixes the bundler content-addresses wholesale — every file under them is stable. */
30
+ stablePrefixes?: readonly string[];
31
+ /** A hash shape accepted ONLY under the given prefix. */
32
+ scopedHashRe?: readonly {
33
+ prefix: string;
34
+ re: RegExp;
35
+ }[];
36
+ /** Basenames that stay volatile even inside a stablePrefix. */
37
+ volatileExact?: readonly string[];
38
+ };
39
+ declare const FRAMEWORK_RULES: Record<string, FrameworkRules>;
27
40
  declare function isVolatilePath(p: string): boolean;
28
41
  type ClassifyContext = {
29
42
  prevManifest?: EmbeddedManifest | null;
@@ -41,4 +54,4 @@ type ParseResult = {
41
54
  };
42
55
  declare function parseManifest(raw: string): ParseResult;
43
56
 
44
- export { type ClassifyContext, type EmbeddedManifest, type FileType, MANIFEST_DIR, MANIFEST_FILENAME, MANIFEST_PATH, MANIFEST_VERSION, type ManifestChunkEntry, type ManifestFileEntry, type ParseResult, classifyFile, classifyFileHeuristic, isVolatilePath, parseManifest };
57
+ export { CONTENT_HASH_RE, type ClassifyContext, type EmbeddedManifest, FRAMEWORK_RULES, type FileType, type FrameworkRules, MANIFEST_DIR, MANIFEST_FILENAME, MANIFEST_PATH, MANIFEST_VERSION, type ManifestChunkEntry, type ManifestFileEntry, type ParseResult, classifyFile, classifyFileHeuristic, isVolatilePath, parseManifest };
package/dist/manifest.js CHANGED
@@ -1,4 +1,6 @@
1
1
  import {
2
+ CONTENT_HASH_RE,
3
+ FRAMEWORK_RULES,
2
4
  MANIFEST_DIR,
3
5
  MANIFEST_FILENAME,
4
6
  MANIFEST_PATH,
@@ -7,8 +9,10 @@ import {
7
9
  classifyFileHeuristic,
8
10
  isVolatilePath,
9
11
  parseManifest
10
- } from "./chunk-WPC2PUCV.js";
12
+ } from "./chunk-H44LXDQJ.js";
11
13
  export {
14
+ CONTENT_HASH_RE,
15
+ FRAMEWORK_RULES,
12
16
  MANIFEST_DIR,
13
17
  MANIFEST_FILENAME,
14
18
  MANIFEST_PATH,
@@ -5,8 +5,9 @@ import {
5
5
  maybeWriteMemoryReport,
6
6
  safeHeap,
7
7
  sampleFromBytes
8
- } from "./chunk-IP6ABIIC.js";
9
- import "./chunk-KTKFHROI.js";
8
+ } from "./chunk-BFK5UCUJ.js";
9
+ import "./chunk-OONQPYHM.js";
10
+ import "./chunk-SH2LG52Z.js";
10
11
  export {
11
12
  DEFAULT_THRESHOLD_MB,
12
13
  buildMemoryReport,
package/dist/merkle.js CHANGED
@@ -6,33 +6,34 @@ import {
6
6
  merkleizeKuboBackend,
7
7
  merkleizeWithStableOrder,
8
8
  rebuildOrderedCarFromBytes
9
- } from "./chunk-6MSHWNJT.js";
9
+ } from "./chunk-D6BE3RAU.js";
10
+ import "./chunk-6J4WRFRL.js";
11
+ import "./chunk-GRPLHUYC.js";
10
12
  import "./chunk-HNJWIY55.js";
11
13
  import "./chunk-M5AKL3FL.js";
12
- import "./chunk-6FQJLLEF.js";
13
- import "./chunk-GRPLHUYC.js";
14
- import "./chunk-IW3X2MJF.js";
15
- import "./chunk-LPTKBQII.js";
16
- import "./chunk-3MAIF2SF.js";
17
- import "./chunk-WPC2PUCV.js";
18
- import "./chunk-QU5GJF6U.js";
19
- import "./chunk-SNFGJOR2.js";
20
- import "./chunk-PSYA6E5M.js";
14
+ import "./chunk-D3YME2EG.js";
15
+ import "./chunk-7DDOVCV5.js";
16
+ import "./chunk-F24S4EV5.js";
17
+ import "./chunk-H44LXDQJ.js";
18
+ import "./chunk-UFP2XWZ4.js";
19
+ import "./chunk-R3BXRRKE.js";
20
+ import "./chunk-2P4EZOFF.js";
21
21
  import "./chunk-C2TS5MER.js";
22
- import "./chunk-3ACNAWUD.js";
22
+ import "./chunk-JTH3ISLR.js";
23
23
  import "./chunk-JQKKMUCT.js";
24
- import "./chunk-5FLTDWWP.js";
25
24
  import "./chunk-RIRDBSBG.js";
26
- import "./chunk-RJDHC56V.js";
25
+ import "./chunk-H44NO63C.js";
26
+ import "./chunk-ZZIOS4RG.js";
27
27
  import "./chunk-SI2ZUOYD.js";
28
+ import "./chunk-ZG3HAH5A.js";
28
29
  import "./chunk-FWJQAIVO.js";
29
- import "./chunk-ABMNC34K.js";
30
+ import "./chunk-U2QO5G35.js";
30
31
  import "./chunk-TSPERKUS.js";
31
- import "./chunk-NA3SXVY6.js";
32
- import "./chunk-ZOC4GITL.js";
33
- import "./chunk-VBIFKNUS.js";
34
- import "./chunk-IP6ABIIC.js";
35
- import "./chunk-KTKFHROI.js";
32
+ import "./chunk-3NR3T7US.js";
33
+ import "./chunk-CCIBF55X.js";
34
+ import "./chunk-BFK5UCUJ.js";
35
+ import "./chunk-OONQPYHM.js";
36
+ import "./chunk-SH2LG52Z.js";
36
37
  import "./chunk-K5SP4OUC.js";
37
38
  export {
38
39
  buildOrderedCar,
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Resolve the mnemonic that should be used to sign, in precedence order:
3
+ * `--mnemonic` flag / caller-supplied value > `MNEMONIC` env var >
4
+ * `DOTNS_MNEMONIC` env var.
5
+ *
6
+ * `MNEMONIC` is the documented primary (README, `--help`, error messages
7
+ * all name it first); `DOTNS_MNEMONIC` is the DotNS-scoped legacy alias.
8
+ *
9
+ * Empty-string / whitespace-only values are treated as unset rather than as
10
+ * a valid (empty) mnemonic. Without this, a declared-but-blank env var (e.g.
11
+ * a GitHub Actions `MNEMONIC: ${{ secrets.X }}` step where the secret was
12
+ * never set, which resolves to `""`) would win over a real lower-precedence
13
+ * value, or fall all the way through to DotNS's own dev-key default —
14
+ * silently signing with the wrong key instead of falling back correctly.
15
+ */
16
+ declare function resolveEffectiveMnemonic(opts: {
17
+ flagMnemonic: string | undefined;
18
+ envMnemonic: string | undefined;
19
+ envDotnsMnemonic: string | undefined;
20
+ }): string | undefined;
21
+ /**
22
+ * Pure notice for when `MNEMONIC` and `DOTNS_MNEMONIC` are both set to
23
+ * different values, so the choice `resolveEffectiveMnemonic` makes between
24
+ * them is observable rather than silent (#1461). Returns `null` when there
25
+ * is nothing ambiguous to report (either is unset/blank, or they agree).
26
+ *
27
+ * Never includes either mnemonic's value — only the two env var names — so
28
+ * this is safe to print to stdout/stderr without leaking key material.
29
+ */
30
+ declare function mnemonicConflictNotice(opts: {
31
+ envMnemonic: string | undefined;
32
+ envDotnsMnemonic: string | undefined;
33
+ }): string | null;
34
+
35
+ export { mnemonicConflictNotice, resolveEffectiveMnemonic };
@@ -0,0 +1,8 @@
1
+ import {
2
+ mnemonicConflictNotice,
3
+ resolveEffectiveMnemonic
4
+ } from "./chunk-ZG3HAH5A.js";
5
+ export {
6
+ mnemonicConflictNotice,
7
+ resolveEffectiveMnemonic
8
+ };