bulletin-deploy 0.18.4 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +1 -1
  2. package/dist/auth-config.js +4 -4
  3. package/dist/bug-report.js +4 -4
  4. package/dist/chain-health.js +3 -3
  5. package/dist/{chunk-K23BCUAG.js → chunk-6H3GBTBA.js} +21 -16
  6. package/dist/{chunk-GZ4O5DIU.js → chunk-A7MFUE2N.js} +1 -1
  7. package/dist/chunk-DMNLTQGA.js +64 -0
  8. package/dist/{chunk-WCGCM45C.js → chunk-G2Z4U4OQ.js} +11 -44
  9. package/dist/{chunk-TTUXQMD3.js → chunk-G664B5Y4.js} +1 -1
  10. package/dist/{chunk-CVQ7DJHG.js → chunk-I5PNPQZO.js} +64 -3
  11. package/dist/{chunk-5HFXRNCQ.js → chunk-IQUS43B7.js} +1 -1
  12. package/dist/{chunk-4NIOCONP.js → chunk-J6N3W3KJ.js} +1 -1
  13. package/dist/{chunk-STXAFUTQ.js → chunk-JZTZWMP7.js} +4 -1
  14. package/dist/{chunk-7I3MTGOR.js → chunk-K5SP4OUC.js} +19 -1
  15. package/dist/{chunk-MJCXPKBL.js → chunk-K6OAMQQU.js} +62 -14
  16. package/dist/{chunk-JGIPHFBT.js → chunk-KXQVZWDW.js} +2 -2
  17. package/dist/{chunk-WEVSXHII.js → chunk-NKDGBZBP.js} +1 -1
  18. package/dist/{chunk-HDGD5FYX.js → chunk-NYNAUG4V.js} +13 -4
  19. package/dist/{chunk-A55GRHCX.js → chunk-R7HIFZDM.js} +3 -3
  20. package/dist/{chunk-E7PNP2NP.js → chunk-RBI2B5SW.js} +3 -3
  21. package/dist/{chunk-5MS64TTR.js → chunk-SVVPNIGN.js} +2 -2
  22. package/dist/{chunk-RXV677CJ.js → chunk-YTRNJMI4.js} +7 -36
  23. package/dist/chunk-probe.js +3 -3
  24. package/dist/commands/login.js +13 -13
  25. package/dist/commands/logout.js +5 -5
  26. package/dist/commands/transfer.js +6 -6
  27. package/dist/commands/whoami.js +4 -4
  28. package/dist/deploy-actors.js +8 -8
  29. package/dist/deploy.d.ts +1 -1
  30. package/dist/deploy.js +13 -13
  31. package/dist/dotns-protocol.d.ts +32 -1
  32. package/dist/dotns-protocol.js +5 -1
  33. package/dist/dotns.d.ts +12 -3
  34. package/dist/dotns.js +8 -6
  35. package/dist/environments.d.ts +5 -2
  36. package/dist/environments.js +3 -1
  37. package/dist/index.d.ts +1 -1
  38. package/dist/index.js +21 -20
  39. package/dist/manifest/byte-budget.js +2 -1
  40. package/dist/manifest/compose.d.ts +20 -0
  41. package/dist/manifest/compose.js +8 -0
  42. package/dist/manifest/config-load.js +2 -2
  43. package/dist/manifest/publish.js +18 -17
  44. package/dist/manifest/schema.js +1 -1
  45. package/dist/manifest/types.d.ts +29 -1
  46. package/dist/memory-report.js +2 -2
  47. package/dist/merkle.js +13 -13
  48. package/dist/personhood/bootstrap.js +7 -7
  49. package/dist/personhood/people-client.js +6 -6
  50. package/dist/run-state.js +1 -1
  51. package/dist/sss-allowance-cache.js +5 -5
  52. package/dist/storage-signer.js +13 -13
  53. package/dist/telemetry.d.ts +1 -1
  54. package/dist/telemetry.js +2 -2
  55. package/dist/version-check.js +3 -3
  56. package/docs/product-manifest.md +76 -0
  57. package/package.json +3 -3
@@ -22,6 +22,37 @@ interface DotnsAbiProfileInfo {
22
22
  discriminator: string;
23
23
  }
24
24
  declare const DOTNS_ABI_PROFILES: Record<DotnsAbiProfile, DotnsAbiProfileInfo>;
25
+ /**
26
+ * Newest DotNS release whose ABI has been diffed against what this client
27
+ * calls. Every release from v0.6.0 through this one is the `v0.6.0` profile:
28
+ * PopRules is byte-identical across them and the registration tuple is
29
+ * unchanged, and the two differences that do exist (the `persist` field on
30
+ * setSubnodeOwner, then its controller-only gate) have their own probes.
31
+ *
32
+ * Raise it only after re-running that diff. A new generation needing its own
33
+ * profile also needs a release range here — this mapping is keyed by release,
34
+ * so adding to DotnsAbiProfile alone will not fail the build the way
35
+ * DOTNS_ABI_PROFILES and classifyLabelStatus do.
36
+ */
37
+ declare const HIGHEST_VERIFIED_DOTNS_RELEASE = "0.8.0";
38
+ /** A usable `protocolVersion()` answer. */
39
+ interface DeclaredProtocolVersion {
40
+ raw: string;
41
+ profile: DotnsAbiProfile;
42
+ aboveVerifiedCeiling: boolean;
43
+ }
44
+ /**
45
+ * Classify DotnsProtocolRegistry.protocolVersion(), added in DotNS v0.8.0
46
+ * (#1462). `null` means the probes have to decide instead: no such function
47
+ * below v0.8.0, an empty string until an owner declares one, or junk.
48
+ *
49
+ * Junk is reachable — setProtocolVersion only requires a leading digit and
50
+ * `[a-zA-Z0-9.-]`, leaving full semver validation to the tooling, so "0.8",
51
+ * "9abc" and "0.8.0.1" all store. The pre-release suffix is dropped because a
52
+ * deploy declares the rc tag before the owner re-declares the final one
53
+ * (dotns RELEASE_ARTIFACTS.md) and both are the same ABI.
54
+ */
55
+ declare function classifyDeclaredProtocolVersion(raw: string | null | undefined): DeclaredProtocolVersion | null;
25
56
  /** Inputs to classifyProtocolVersion — the live dry-run results from connect(). */
26
57
  interface DotnsProtocolProbe {
27
58
  /**
@@ -445,4 +476,4 @@ declare const PROTOCOL_PROBE_LABEL = "probelabel";
445
476
  declare function withTenPercentBuffer(priceWei: bigint): bigint;
446
477
  declare function getAdapter(profile: DotnsAbiProfile): DotnsProtocolAdapter;
447
478
 
448
- export { DOTNS_ABI_PROFILES, type DotnsAbiProfile, type DotnsAbiProfileInfo, type DotnsDepositCall, type DotnsPricingInput, type DotnsProtocolAdapter, type DotnsProtocolClassification, type DotnsProtocolProbe, type DotnsRegistrationBase, OLD_CONTROLLER_ABI, OLD_POP_RULES_ABI, POP_CONTROLLER_PROBE_ABI, PROTOCOL_PROBE_LABEL, V0_5_8_RC1_CONTROLLER_ABI, V0_5_8_RC1_POP_RULES_ABI, classifyProtocolVersion, getAdapter, withTenPercentBuffer };
479
+ export { DOTNS_ABI_PROFILES, type DeclaredProtocolVersion, type DotnsAbiProfile, type DotnsAbiProfileInfo, type DotnsDepositCall, type DotnsPricingInput, type DotnsProtocolAdapter, type DotnsProtocolClassification, type DotnsProtocolProbe, type DotnsRegistrationBase, HIGHEST_VERIFIED_DOTNS_RELEASE, OLD_CONTROLLER_ABI, OLD_POP_RULES_ABI, POP_CONTROLLER_PROBE_ABI, PROTOCOL_PROBE_LABEL, V0_5_8_RC1_CONTROLLER_ABI, V0_5_8_RC1_POP_RULES_ABI, classifyDeclaredProtocolVersion, classifyProtocolVersion, getAdapter, withTenPercentBuffer };
@@ -1,23 +1,27 @@
1
1
  import {
2
2
  DOTNS_ABI_PROFILES,
3
+ HIGHEST_VERIFIED_DOTNS_RELEASE,
3
4
  OLD_CONTROLLER_ABI,
4
5
  OLD_POP_RULES_ABI,
5
6
  POP_CONTROLLER_PROBE_ABI,
6
7
  PROTOCOL_PROBE_LABEL,
7
8
  V0_5_8_RC1_CONTROLLER_ABI,
8
9
  V0_5_8_RC1_POP_RULES_ABI,
10
+ classifyDeclaredProtocolVersion,
9
11
  classifyProtocolVersion,
10
12
  getAdapter,
11
13
  withTenPercentBuffer
12
- } from "./chunk-7I3MTGOR.js";
14
+ } from "./chunk-K5SP4OUC.js";
13
15
  export {
14
16
  DOTNS_ABI_PROFILES,
17
+ HIGHEST_VERIFIED_DOTNS_RELEASE,
15
18
  OLD_CONTROLLER_ABI,
16
19
  OLD_POP_RULES_ABI,
17
20
  POP_CONTROLLER_PROBE_ABI,
18
21
  PROTOCOL_PROBE_LABEL,
19
22
  V0_5_8_RC1_CONTROLLER_ABI,
20
23
  V0_5_8_RC1_POP_RULES_ABI,
24
+ classifyDeclaredProtocolVersion,
21
25
  classifyProtocolVersion,
22
26
  getAdapter,
23
27
  withTenPercentBuffer
package/dist/dotns.d.ts CHANGED
@@ -29,7 +29,8 @@ interface DotNSConnectOptions {
29
29
  nativeToEthRatio?: bigint;
30
30
  contracts?: Record<string, string>;
31
31
  /** Optional environment ID (e.g. "paseo-next-v2"). Used in shell command examples in error messages. */
32
- environmentId?: string;
32
+ environmentId?: string; /** Per-contract origin phrases from describeContractSources, named in address errors. */
33
+ contractSources?: Record<string, string>;
33
34
  /**
34
35
  * #1095: the resolved env's environments.json `network` field
35
36
  * ("testnet" | "mainnet"). When set, this is AUTHORITATIVE for isTestnet()
@@ -493,6 +494,7 @@ declare function classifyDotnsLabel(label: string, tld?: string, profile?: Dotns
493
494
  };
494
495
  declare function canRegister(requiredStatus: number, userStatus: number): boolean;
495
496
  declare function shortNamesClosedReason(label: string, baseLength: number, tld: string, environmentId: string | null | undefined): string;
497
+ declare function soulboundTransferReason(label: string, tld: string): string;
496
498
  declare function parseDomainName(input: string, tld?: string): ParsedDomainName;
497
499
  declare function parseProofOfPersonhoodStatus(status: string): number;
498
500
  declare function popStatusName(status: number): string;
@@ -636,6 +638,7 @@ declare class DotNS {
636
638
  private _isPhoneSigner;
637
639
  private _localMnemonic;
638
640
  private _contracts;
641
+ private _contractSources;
639
642
  private _nativeToEthRatio;
640
643
  private _environmentId;
641
644
  private _network;
@@ -763,7 +766,8 @@ declare class DotNS {
763
766
  } | null>;
764
767
  private submitTransfer;
765
768
  /**
766
- * Low-level dry-run read against DotnsProtocolRegistry (tld() / tldNode()).
769
+ * Low-level dry-run read against DotnsProtocolRegistry (tld() / tldNode() /
770
+ * protocolVersion()).
767
771
  * Deliberately does NOT reuse contractCall/contractCallNullable: both of
768
772
  * those throw on a revert or on empty data, which would make "contract
769
773
  * doesn't support this function yet" indistinguishable from "the RPC call
@@ -838,6 +842,7 @@ declare class DotNS {
838
842
  * address.
839
843
  */
840
844
  private detectProtocolVersion;
845
+ private contractSourceHint;
841
846
  contractCall(contractAddress: string, contractAbi: readonly any[], functionName: string, args?: any[]): Promise<any>;
842
847
  /**
843
848
  * Like contractCall, but returns null when the chain replies with empty data
@@ -946,6 +951,10 @@ declare class DotNS {
946
951
  * `authorised`.
947
952
  */
948
953
  checkNodeAuthorization(node: string, account: string): Promise<AuthorizationResult>;
954
+ /** False when the registrar gave no usable answer, including one too old to
955
+ * have the function at all: let the chain refuse rather than guess. A read
956
+ * that never completed propagates, so a network blip is not "not soulbound". */
957
+ private readIsSoulbound;
949
958
  /** Live transfer-fee quote. transferFloor is a pure PopRules view — it
950
959
  * classifies the label and reads both tiers, so it works BEFORE the name is
951
960
  * registered (unlike quoteTransferFee, which reverts on an unregistered token). */
@@ -1131,4 +1140,4 @@ declare class DotNS {
1131
1140
  }
1132
1141
  declare const dotns: DotNS;
1133
1142
 
1134
- 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, stripTldSuffix, stripTrailingDigits, validateDomainLabel, verifyEffectWithGrace, verifyNonceAdvanced, weiToNative, withRetry };
1143
+ 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, stripTldSuffix, stripTrailingDigits, validateDomainLabel, verifyEffectWithGrace, verifyNonceAdvanced, weiToNative, withRetry };
package/dist/dotns.js CHANGED
@@ -81,6 +81,7 @@ import {
81
81
  shouldRegateBeforeResign,
82
82
  shouldRetryTxAttempt,
83
83
  shouldSkipTextWrite,
84
+ soulboundTransferReason,
84
85
  stripTldSuffix,
85
86
  stripTrailingDigits,
86
87
  validateDomainLabel,
@@ -88,15 +89,15 @@ import {
88
89
  verifyNonceAdvanced,
89
90
  weiToNative,
90
91
  withRetry
91
- } from "./chunk-MJCXPKBL.js";
92
+ } from "./chunk-K6OAMQQU.js";
92
93
  import "./chunk-SI2ZUOYD.js";
93
94
  import "./chunk-AYAVRPAP.js";
94
- import "./chunk-HDGD5FYX.js";
95
+ import "./chunk-NYNAUG4V.js";
95
96
  import "./chunk-ZOC4GITL.js";
96
- import "./chunk-5HFXRNCQ.js";
97
- import "./chunk-STXAFUTQ.js";
98
- import "./chunk-E7PNP2NP.js";
99
- import "./chunk-7I3MTGOR.js";
97
+ import "./chunk-IQUS43B7.js";
98
+ import "./chunk-JZTZWMP7.js";
99
+ import "./chunk-RBI2B5SW.js";
100
+ import "./chunk-K5SP4OUC.js";
100
101
  export {
101
102
  ATTR_TX_RESOLUTION_KIND,
102
103
  CONNECTION_TIMEOUT_MS,
@@ -180,6 +181,7 @@ export {
180
181
  shouldRegateBeforeResign,
181
182
  shouldRetryTxAttempt,
182
183
  shouldSkipTextWrite,
184
+ soulboundTransferReason,
183
185
  stripTldSuffix,
184
186
  stripTrailingDigits,
185
187
  validateDomainLabel,
@@ -64,6 +64,8 @@ type EnvironmentsSource = "bundled" | "hardcoded-fallback" | "file";
64
64
  interface LoadResult {
65
65
  doc: EnvironmentsDoc;
66
66
  source: EnvironmentsSource;
67
+ /** Set when source is "file": the path that was read. */
68
+ userFilePath?: string;
67
69
  }
68
70
  interface LoadOptions {
69
71
  bundledPath?: string;
@@ -108,7 +110,8 @@ declare function isValidContractAddress(addr: unknown): boolean;
108
110
  * @param contracts The `contracts` record from an environment entry.
109
111
  * @param envId The environment ID, used in the error message.
110
112
  */
111
- declare function validateContractAddresses(contracts: Record<string, string>, envId: string): void;
113
+ 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>;
112
115
  /**
113
116
  * Deep-merges a user-supplied partial EnvironmentsDoc over a base doc.
114
117
  *
@@ -133,4 +136,4 @@ interface EnvironmentListing {
133
136
  declare function listEnvironments(doc: EnvironmentsDoc): EnvironmentListing[];
134
137
  declare function formatEnvironmentTable(rows: EnvironmentListing[]): string;
135
138
 
136
- export { type Chain, type ChainEndpoint, DEFAULT_ENV_ID, type Environment, type EnvironmentListing, type EnvironmentsDoc, type EnvironmentsSource, type LoadOptions, type LoadResult, type PopSelfServeConfig, type ResolvedEndpoints, deepMergeEnvironments, defaultBundledPath, formatEnvironmentTable, getPopSelfServeConfig, isValidContractAddress, listEnvironments, loadEnvironments, resolveEndpoints, validateContractAddresses };
139
+ export { type Chain, type ChainEndpoint, DEFAULT_ENV_ID, type Environment, type EnvironmentListing, type EnvironmentsDoc, type EnvironmentsSource, type LoadOptions, type LoadResult, type PopSelfServeConfig, type ResolvedEndpoints, deepMergeEnvironments, defaultBundledPath, describeContractSources, formatEnvironmentTable, getPopSelfServeConfig, isValidContractAddress, listEnvironments, loadEnvironments, resolveEndpoints, validateContractAddresses };
@@ -2,6 +2,7 @@ import {
2
2
  DEFAULT_ENV_ID,
3
3
  deepMergeEnvironments,
4
4
  defaultBundledPath,
5
+ describeContractSources,
5
6
  formatEnvironmentTable,
6
7
  getPopSelfServeConfig,
7
8
  isValidContractAddress,
@@ -9,12 +10,13 @@ import {
9
10
  loadEnvironments,
10
11
  resolveEndpoints,
11
12
  validateContractAddresses
12
- } from "./chunk-HDGD5FYX.js";
13
+ } from "./chunk-NYNAUG4V.js";
13
14
  import "./chunk-ZOC4GITL.js";
14
15
  export {
15
16
  DEFAULT_ENV_ID,
16
17
  deepMergeEnvironments,
17
18
  defaultBundledPath,
19
+ describeContractSources,
18
20
  formatEnvironmentTable,
19
21
  getPopSelfServeConfig,
20
22
  isValidContractAddress,
package/dist/index.d.ts CHANGED
@@ -10,7 +10,7 @@ export { ComputeStatsInput, IncrementalStats, computeStats, renderSummary, telem
10
10
  export { Chain, ChainEndpoint, DEFAULT_ENV_ID, Environment, EnvironmentListing, EnvironmentsDoc, EnvironmentsSource, LoadOptions, LoadResult, ResolvedEndpoints, deepMergeEnvironments, defaultBundledPath, formatEnvironmentTable, isValidContractAddress, listEnvironments, loadEnvironments, resolveEndpoints, validateContractAddresses } from './environments.js';
11
11
  export { RunState, RunStatus, VERSION, loadRunState, probablyOomRssMb, resolveStateDir, shouldShowOomHint, shouldSkipStaleWarning, stateFilePath, writeRunState } from './run-state.js';
12
12
  import { ProductConfig } from './manifest/types.js';
13
- export { AppExecutableConfig, AppExecutableConfigV1, AppExecutableConfigV2, AppManifest, AppManifestV1, AppManifestV2, AppVersion, AudioRequirement, DeviceInputRequirement, ExecutableConfig, ExecutableKind, ExecutableManifest, FundingExecutableConfig, FundingManifest, FundingMode, GraphicsRequirement, Icon, IconConfig, IconFormat, PolkaVmAppManifestV2, PolkaVmRuntime, RootManifest, WebAppManifestV2, WebRuntime, WidgetDimensions, WidgetExecutableConfig, WidgetManifest, WorkerExecutableConfig, WorkerIncludes, WorkerManifest, defineConfig } from './manifest/types.js';
13
+ export { AppExecutableConfig, AppExecutableConfigV1, AppExecutableConfigV2, AppManifest, AppManifestV1, AppManifestV2, AppVersion, AudioRequirement, DeviceInputRequirement, ExecutableConfig, ExecutableKind, ExecutableManifest, FundingExecutableConfig, FundingManifest, FundingMode, Granted, GraphicsRequirement, Icon, IconConfig, IconFormat, PolkaVmAppManifestV2, PolkaVmRuntime, RootManifest, WebAppManifestV2, WebRuntime, WidgetDimensions, WidgetExecutableConfig, WidgetManifest, WorkerExecutableConfig, WorkerIncludes, WorkerManifest, defineConfig } from './manifest/types.js';
14
14
  export { ValidationErr, ValidationOk, ValidationResult, validateExecutableManifest, validateProductConfig, validateRootManifest } from './manifest/schema.js';
15
15
  export { BudgetCheck, DEFAULT_TEXT_RECORD_BUDGET_BYTES, PLACEHOLDER_CID, PessimisticSizeReport, assertWithinBudget, getTextRecordBudgetBytes, pessimisticSizePreflight } from './manifest/byte-budget.js';
16
16
  import { LoadProductConfigOptions, LoadedProductConfig } from './manifest/config-load.js';
package/dist/index.js CHANGED
@@ -1,38 +1,39 @@
1
+ import {
2
+ defineConfig
3
+ } from "./chunk-GZD2UFLR.js";
1
4
  import {
2
5
  checkProductConfigFilesExist,
3
6
  preflightProductConfig,
4
7
  publishManifest,
5
8
  verifyEmbeddedAppManifests,
6
9
  writeEmbeddedAppManifests
7
- } from "./chunk-WCGCM45C.js";
10
+ } from "./chunk-G2Z4U4OQ.js";
8
11
  import {
9
12
  DEFAULT_TEXT_RECORD_BUDGET_BYTES,
10
13
  PLACEHOLDER_CID,
11
14
  assertWithinBudget,
12
15
  getTextRecordBudgetBytes,
13
16
  pessimisticSizePreflight
14
- } from "./chunk-RXV677CJ.js";
17
+ } from "./chunk-YTRNJMI4.js";
18
+ import "./chunk-DMNLTQGA.js";
15
19
  import {
16
20
  formatConfigLoadError,
17
21
  loadProductConfig,
18
22
  tryLoadProductConfig
19
- } from "./chunk-WEVSXHII.js";
23
+ } from "./chunk-NKDGBZBP.js";
20
24
  import {
21
25
  validateExecutableManifest,
22
26
  validateProductConfig,
23
27
  validateRootManifest
24
- } from "./chunk-CVQ7DJHG.js";
25
- import {
26
- defineConfig
27
- } from "./chunk-GZD2UFLR.js";
28
+ } from "./chunk-I5PNPQZO.js";
28
29
  import {
29
30
  deploy,
30
31
  merkleizeJS,
31
32
  merkleizeWithStableOrder
32
- } from "./chunk-K23BCUAG.js";
33
+ } from "./chunk-6H3GBTBA.js";
33
34
  import "./chunk-HNJWIY55.js";
34
35
  import "./chunk-M5AKL3FL.js";
35
- import "./chunk-GZ4O5DIU.js";
36
+ import "./chunk-A7MFUE2N.js";
36
37
  import "./chunk-GRPLHUYC.js";
37
38
  import {
38
39
  computeStats,
@@ -55,13 +56,13 @@ import {
55
56
  isVolatilePath,
56
57
  parseManifest
57
58
  } from "./chunk-WPC2PUCV.js";
58
- import "./chunk-A55GRHCX.js";
59
- import "./chunk-TTUXQMD3.js";
59
+ import "./chunk-R7HIFZDM.js";
60
+ import "./chunk-G664B5Y4.js";
60
61
  import {
61
62
  probeChunks
62
- } from "./chunk-4NIOCONP.js";
63
+ } from "./chunk-J6N3W3KJ.js";
63
64
  import "./chunk-C2TS5MER.js";
64
- import "./chunk-JGIPHFBT.js";
65
+ import "./chunk-KXQVZWDW.js";
65
66
  import "./chunk-JQKKMUCT.js";
66
67
  import "./chunk-5FLTDWWP.js";
67
68
  import "./chunk-RIRDBSBG.js";
@@ -70,7 +71,7 @@ import {
70
71
  DotNS,
71
72
  parseDomainName,
72
73
  sanitizeDomainLabel
73
- } from "./chunk-MJCXPKBL.js";
74
+ } from "./chunk-K6OAMQQU.js";
74
75
  import "./chunk-SI2ZUOYD.js";
75
76
  import {
76
77
  BULLETIN_BLOCKS_PER_DAY,
@@ -86,7 +87,7 @@ import {
86
87
  poolAccountDerivationPath,
87
88
  selectAccount
88
89
  } from "./chunk-AYAVRPAP.js";
89
- import "./chunk-5MS64TTR.js";
90
+ import "./chunk-SVVPNIGN.js";
90
91
  import "./chunk-TSPERKUS.js";
91
92
  import {
92
93
  DEFAULT_ENV_ID,
@@ -98,10 +99,10 @@ import {
98
99
  loadEnvironments,
99
100
  resolveEndpoints,
100
101
  validateContractAddresses
101
- } from "./chunk-HDGD5FYX.js";
102
+ } from "./chunk-NYNAUG4V.js";
102
103
  import "./chunk-ZOC4GITL.js";
103
- import "./chunk-5HFXRNCQ.js";
104
- import "./chunk-STXAFUTQ.js";
104
+ import "./chunk-IQUS43B7.js";
105
+ import "./chunk-JZTZWMP7.js";
105
106
  import {
106
107
  VERSION,
107
108
  loadRunState,
@@ -111,8 +112,8 @@ import {
111
112
  shouldSkipStaleWarning,
112
113
  stateFilePath,
113
114
  writeRunState
114
- } from "./chunk-E7PNP2NP.js";
115
- import "./chunk-7I3MTGOR.js";
115
+ } from "./chunk-RBI2B5SW.js";
116
+ import "./chunk-K5SP4OUC.js";
116
117
  export {
117
118
  BULLETIN_BLOCKS_PER_DAY,
118
119
  DEFAULT_ENV_ID,
@@ -4,7 +4,8 @@ import {
4
4
  assertWithinBudget,
5
5
  getTextRecordBudgetBytes,
6
6
  pessimisticSizePreflight
7
- } from "../chunk-RXV677CJ.js";
7
+ } from "../chunk-YTRNJMI4.js";
8
+ import "../chunk-DMNLTQGA.js";
8
9
  export {
9
10
  DEFAULT_TEXT_RECORD_BUDGET_BYTES,
10
11
  PLACEHOLDER_CID,
@@ -0,0 +1,20 @@
1
+ import { ExecutableConfig, ExecutableManifest, ProductConfig, RootManifest } from './types.js';
2
+
3
+ /**
4
+ * Shared product-manifest composers.
5
+ *
6
+ * `composeRoot` and `composeExecutable` build the exact wire shape written as
7
+ * dotNS text records (RFC paritytech/triangle-js-sdks #0001). They are used
8
+ * from two call sites that must stay byte-identical: the real publish path
9
+ * ([`publishManifest`](./publish.ts), which passes the real icon/executable
10
+ * CIDs) and the pre-upload size preflight ([`pessimisticSizePreflight`](./byte-budget.ts),
11
+ * which substitutes `PLACEHOLDER_CID` for the root icon before the real CID
12
+ * is known). Kept here, in a module neither of those two imports from each
13
+ * other, so publish.ts (which already imports byte-budget.ts) can't form an
14
+ * import cycle with it.
15
+ */
16
+
17
+ declare function composeRoot(config: ProductConfig, iconCid: string): RootManifest;
18
+ declare function composeExecutable(exec: ExecutableConfig): ExecutableManifest;
19
+
20
+ export { composeExecutable, composeRoot };
@@ -0,0 +1,8 @@
1
+ import {
2
+ composeExecutable,
3
+ composeRoot
4
+ } from "../chunk-DMNLTQGA.js";
5
+ export {
6
+ composeExecutable,
7
+ composeRoot
8
+ };
@@ -2,8 +2,8 @@ import {
2
2
  formatConfigLoadError,
3
3
  loadProductConfig,
4
4
  tryLoadProductConfig
5
- } from "../chunk-WEVSXHII.js";
6
- import "../chunk-CVQ7DJHG.js";
5
+ } from "../chunk-NKDGBZBP.js";
6
+ import "../chunk-I5PNPQZO.js";
7
7
  import "../chunk-ZOC4GITL.js";
8
8
  export {
9
9
  formatConfigLoadError,
@@ -3,38 +3,39 @@ import {
3
3
  manifestSignerOptions,
4
4
  publishManifest,
5
5
  registerOrEnsureResolver
6
- } from "../chunk-WCGCM45C.js";
7
- import "../chunk-RXV677CJ.js";
8
- import "../chunk-WEVSXHII.js";
9
- import "../chunk-CVQ7DJHG.js";
10
- import "../chunk-K23BCUAG.js";
6
+ } from "../chunk-G2Z4U4OQ.js";
7
+ import "../chunk-YTRNJMI4.js";
8
+ import "../chunk-DMNLTQGA.js";
9
+ import "../chunk-NKDGBZBP.js";
10
+ import "../chunk-I5PNPQZO.js";
11
+ import "../chunk-6H3GBTBA.js";
11
12
  import "../chunk-HNJWIY55.js";
12
13
  import "../chunk-M5AKL3FL.js";
13
- import "../chunk-GZ4O5DIU.js";
14
+ import "../chunk-A7MFUE2N.js";
14
15
  import "../chunk-GRPLHUYC.js";
15
16
  import "../chunk-IW3X2MJF.js";
16
17
  import "../chunk-LPTKBQII.js";
17
18
  import "../chunk-3MAIF2SF.js";
18
19
  import "../chunk-WPC2PUCV.js";
19
- import "../chunk-A55GRHCX.js";
20
- import "../chunk-TTUXQMD3.js";
21
- import "../chunk-4NIOCONP.js";
20
+ import "../chunk-R7HIFZDM.js";
21
+ import "../chunk-G664B5Y4.js";
22
+ import "../chunk-J6N3W3KJ.js";
22
23
  import "../chunk-C2TS5MER.js";
23
- import "../chunk-JGIPHFBT.js";
24
+ import "../chunk-KXQVZWDW.js";
24
25
  import "../chunk-JQKKMUCT.js";
25
26
  import "../chunk-5FLTDWWP.js";
26
27
  import "../chunk-RIRDBSBG.js";
27
- import "../chunk-MJCXPKBL.js";
28
+ import "../chunk-K6OAMQQU.js";
28
29
  import "../chunk-SI2ZUOYD.js";
29
30
  import "../chunk-AYAVRPAP.js";
30
- import "../chunk-5MS64TTR.js";
31
+ import "../chunk-SVVPNIGN.js";
31
32
  import "../chunk-TSPERKUS.js";
32
- import "../chunk-HDGD5FYX.js";
33
+ import "../chunk-NYNAUG4V.js";
33
34
  import "../chunk-ZOC4GITL.js";
34
- import "../chunk-5HFXRNCQ.js";
35
- import "../chunk-STXAFUTQ.js";
36
- import "../chunk-E7PNP2NP.js";
37
- import "../chunk-7I3MTGOR.js";
35
+ import "../chunk-IQUS43B7.js";
36
+ import "../chunk-JZTZWMP7.js";
37
+ import "../chunk-RBI2B5SW.js";
38
+ import "../chunk-K5SP4OUC.js";
38
39
  export {
39
40
  domainMatchesEnvTld,
40
41
  manifestSignerOptions,
@@ -2,7 +2,7 @@ import {
2
2
  validateExecutableManifest,
3
3
  validateProductConfig,
4
4
  validateRootManifest
5
- } from "../chunk-CVQ7DJHG.js";
5
+ } from "../chunk-I5PNPQZO.js";
6
6
  export {
7
7
  validateExecutableManifest,
8
8
  validateProductConfig,
@@ -14,11 +14,33 @@ interface Icon {
14
14
  cid: string;
15
15
  format: IconFormat;
16
16
  }
17
+ /**
18
+ * A grant one product's manifest issues to another product, naming what the
19
+ * grantee may do *to* the grantor when the Host mediates a cross-product
20
+ * interaction. See `RootManifest.trustedProducts` and the RFC's "Trusted
21
+ * products" section (paritytech/host-rust-core `docs/rfcs/product-manifest.md`):
22
+ * `"all"` is a superset wildcard covering every mediated interaction, present
23
+ * and future; `"storage"` covers read-only access to the grantor's
24
+ * host-local storage; `"context"` covers acting as the grantor's account —
25
+ * reading its identity and signing under its keys. A Host ignores any value
26
+ * it does not recognise rather than failing validation over it.
27
+ */
28
+ type Granted = "all" | "storage" | "context";
17
29
  interface RootManifest {
18
30
  $v: 1;
19
31
  displayName: string;
20
32
  description: string;
21
33
  icon: Icon;
34
+ /**
35
+ * Pre-approved cross-product grants, keyed by the OTHER product's bare
36
+ * label (lowercase, no TLD suffix — e.g. `"wallet"`, never `"wallet.dot"`;
37
+ * the Host appends the TLD of the network it resolves against). Each entry
38
+ * says what that product may do *to this one*; it says nothing about the
39
+ * reverse direction. Absent, `{}`, and an empty grant array all mean "no
40
+ * grants" — the Host prompts for consent as usual. See the RFC's "Trusted
41
+ * products" section for full semantics.
42
+ */
43
+ trustedProducts?: Record<string, Granted[]>;
22
44
  }
23
45
  interface CommonExecutableFieldsV1 {
24
46
  $v: 1;
@@ -136,6 +158,12 @@ interface ProductConfig {
136
158
  description: string;
137
159
  icon: IconConfig;
138
160
  executables: ExecutableConfig[];
161
+ /**
162
+ * What this product's `RootManifest.trustedProducts` should carry once
163
+ * published — same shape, same rules. See `Granted` and
164
+ * `RootManifest.trustedProducts` above.
165
+ */
166
+ trustedProducts?: Record<string, Granted[]>;
139
167
  }
140
168
  /**
141
169
  * Identity helper that lets `bulletin-deploy.config.ts` authors get IntelliSense on the discriminated `ExecutableConfig` union.
@@ -146,4 +174,4 @@ interface ProductConfig {
146
174
  */
147
175
  declare function defineConfig<T extends ProductConfig>(config: T): T;
148
176
 
149
- export { type AppExecutableConfig, type AppExecutableConfigV1, type AppExecutableConfigV2, type AppManifest, type AppManifestV1, type AppManifestV2, type AppVersion, type AudioRequirement, type DeviceInputRequirement, type ExecutableConfig, type ExecutableKind, type ExecutableManifest, type FundingExecutableConfig, type FundingManifest, type FundingMode, type GraphicsRequirement, type Icon, type IconConfig, type IconFormat, type PolkaVmAppManifestV2, type PolkaVmRuntime, type ProductConfig, type RootManifest, type WebAppManifestV2, type WebRuntime, type WidgetDimensions, type WidgetExecutableConfig, type WidgetManifest, type WorkerExecutableConfig, type WorkerIncludes, type WorkerManifest, defineConfig };
177
+ export { type AppExecutableConfig, type AppExecutableConfigV1, type AppExecutableConfigV2, type AppManifest, type AppManifestV1, type AppManifestV2, type AppVersion, type AudioRequirement, type DeviceInputRequirement, type ExecutableConfig, type ExecutableKind, type ExecutableManifest, type FundingExecutableConfig, type FundingManifest, type FundingMode, type Granted, type GraphicsRequirement, type Icon, type IconConfig, type IconFormat, type PolkaVmAppManifestV2, type PolkaVmRuntime, type ProductConfig, type RootManifest, type WebAppManifestV2, type WebRuntime, type WidgetDimensions, type WidgetExecutableConfig, type WidgetManifest, type WorkerExecutableConfig, type WorkerIncludes, type WorkerManifest, defineConfig };
@@ -5,8 +5,8 @@ import {
5
5
  maybeWriteMemoryReport,
6
6
  safeHeap,
7
7
  sampleFromBytes
8
- } from "./chunk-STXAFUTQ.js";
9
- import "./chunk-E7PNP2NP.js";
8
+ } from "./chunk-JZTZWMP7.js";
9
+ import "./chunk-RBI2B5SW.js";
10
10
  export {
11
11
  DEFAULT_THRESHOLD_MB,
12
12
  buildMemoryReport,
package/dist/merkle.js CHANGED
@@ -6,34 +6,34 @@ import {
6
6
  merkleizeKuboBackend,
7
7
  merkleizeWithStableOrder,
8
8
  rebuildOrderedCarFromBytes
9
- } from "./chunk-K23BCUAG.js";
9
+ } from "./chunk-6H3GBTBA.js";
10
10
  import "./chunk-HNJWIY55.js";
11
11
  import "./chunk-M5AKL3FL.js";
12
- import "./chunk-GZ4O5DIU.js";
12
+ import "./chunk-A7MFUE2N.js";
13
13
  import "./chunk-GRPLHUYC.js";
14
14
  import "./chunk-IW3X2MJF.js";
15
15
  import "./chunk-LPTKBQII.js";
16
16
  import "./chunk-3MAIF2SF.js";
17
17
  import "./chunk-WPC2PUCV.js";
18
- import "./chunk-A55GRHCX.js";
19
- import "./chunk-TTUXQMD3.js";
20
- import "./chunk-4NIOCONP.js";
18
+ import "./chunk-R7HIFZDM.js";
19
+ import "./chunk-G664B5Y4.js";
20
+ import "./chunk-J6N3W3KJ.js";
21
21
  import "./chunk-C2TS5MER.js";
22
- import "./chunk-JGIPHFBT.js";
22
+ import "./chunk-KXQVZWDW.js";
23
23
  import "./chunk-JQKKMUCT.js";
24
24
  import "./chunk-5FLTDWWP.js";
25
25
  import "./chunk-RIRDBSBG.js";
26
- import "./chunk-MJCXPKBL.js";
26
+ import "./chunk-K6OAMQQU.js";
27
27
  import "./chunk-SI2ZUOYD.js";
28
28
  import "./chunk-AYAVRPAP.js";
29
- import "./chunk-5MS64TTR.js";
29
+ import "./chunk-SVVPNIGN.js";
30
30
  import "./chunk-TSPERKUS.js";
31
- import "./chunk-HDGD5FYX.js";
31
+ import "./chunk-NYNAUG4V.js";
32
32
  import "./chunk-ZOC4GITL.js";
33
- import "./chunk-5HFXRNCQ.js";
34
- import "./chunk-STXAFUTQ.js";
35
- import "./chunk-E7PNP2NP.js";
36
- import "./chunk-7I3MTGOR.js";
33
+ import "./chunk-IQUS43B7.js";
34
+ import "./chunk-JZTZWMP7.js";
35
+ import "./chunk-RBI2B5SW.js";
36
+ import "./chunk-K5SP4OUC.js";
37
37
  export {
38
38
  buildOrderedCar,
39
39
  merkleizeBackend,
@@ -2,6 +2,7 @@ import {
2
2
  deriveMemberEntropy,
3
3
  deriveMemberKey
4
4
  } from "../chunk-AFBOKCCQ.js";
5
+ import "../chunk-UPWEOGLQ.js";
5
6
  import {
6
7
  makeOneShotBuildRingProof
7
8
  } from "../chunk-DSCPTDCZ.js";
@@ -21,10 +22,9 @@ import {
21
22
  import {
22
23
  bytesToHex
23
24
  } from "../chunk-ZYVGHDMU.js";
24
- import "../chunk-UPWEOGLQ.js";
25
25
  import {
26
26
  WS_HEARTBEAT_TIMEOUT_MS
27
- } from "../chunk-MJCXPKBL.js";
27
+ } from "../chunk-K6OAMQQU.js";
28
28
  import {
29
29
  DOTNS_CONTEXT_BYTES,
30
30
  PEOPLE_MEMBER_IDENTIFIER_HEX,
@@ -33,12 +33,12 @@ import {
33
33
  import "../chunk-AYAVRPAP.js";
34
34
  import {
35
35
  loadEnvironments
36
- } from "../chunk-HDGD5FYX.js";
36
+ } from "../chunk-NYNAUG4V.js";
37
37
  import "../chunk-ZOC4GITL.js";
38
- import "../chunk-5HFXRNCQ.js";
39
- import "../chunk-STXAFUTQ.js";
40
- import "../chunk-E7PNP2NP.js";
41
- import "../chunk-7I3MTGOR.js";
38
+ import "../chunk-IQUS43B7.js";
39
+ import "../chunk-JZTZWMP7.js";
40
+ import "../chunk-RBI2B5SW.js";
41
+ import "../chunk-K5SP4OUC.js";
42
42
 
43
43
  // src/personhood/bootstrap.ts
44
44
  import { createClient } from "polkadot-api";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  WS_HEARTBEAT_TIMEOUT_MS
3
- } from "../chunk-MJCXPKBL.js";
3
+ } from "../chunk-K6OAMQQU.js";
4
4
  import "../chunk-SI2ZUOYD.js";
5
5
  import "../chunk-AYAVRPAP.js";
6
6
  import {
7
7
  loadEnvironments
8
- } from "../chunk-HDGD5FYX.js";
8
+ } from "../chunk-NYNAUG4V.js";
9
9
  import "../chunk-ZOC4GITL.js";
10
- import "../chunk-5HFXRNCQ.js";
11
- import "../chunk-STXAFUTQ.js";
12
- import "../chunk-E7PNP2NP.js";
13
- import "../chunk-7I3MTGOR.js";
10
+ import "../chunk-IQUS43B7.js";
11
+ import "../chunk-JZTZWMP7.js";
12
+ import "../chunk-RBI2B5SW.js";
13
+ import "../chunk-K5SP4OUC.js";
14
14
 
15
15
  // src/personhood/people-client.ts
16
16
  import { createClient } from "polkadot-api";