@xyo-network/xl1-cli-lib 1.20.21 → 1.20.23

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.
@@ -1 +1 @@
1
- {"version":3,"file":"apiCommand.d.ts","sourceRoot":"","sources":["../../../../src/commands/api/apiCommand.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAGxD,wBAAgB,UAAU,CAAC,gBAAgB,EAAE,MAAM,MAAM,EAAE,qBAAqB,EAAE,qBAAqB,GAAG,aAAa,CA0BtH"}
1
+ {"version":3,"file":"apiCommand.d.ts","sourceRoot":"","sources":["../../../../src/commands/api/apiCommand.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAG1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAExD,wBAAgB,UAAU,CAAC,gBAAgB,EAAE,MAAM,MAAM,EAAE,qBAAqB,EAAE,qBAAqB,GAAG,aAAa,CA0BtH"}
@@ -0,0 +1,2 @@
1
+ export * from './runFinalizer.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/finalizer/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { FinalizerConfig, OrchestratorInstance } from '@xyo-network/chain-orchestration';
2
+ import { FinalizerActor } from '@xyo-network/chain-orchestration';
3
+ import type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk';
4
+ export declare const getFinalizerActor: (config: FinalizerConfig, locator: ProviderFactoryLocatorInstance) => Promise<FinalizerActor>;
5
+ export declare const runFinalizer: (config: FinalizerConfig, orchestrator: OrchestratorInstance, locator: ProviderFactoryLocatorInstance) => Promise<void>;
6
+ //# sourceMappingURL=runFinalizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runFinalizer.d.ts","sourceRoot":"","sources":["../../../../src/commands/finalizer/runFinalizer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAC7F,OAAO,EAAE,cAAc,EAAmB,MAAM,kCAAkC,CAAA;AAClF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAA;AAE1E,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,eAAe,EACvB,SAAS,8BAA8B,4BASxC,CAAA;AAED,eAAO,MAAM,YAAY,GACvB,QAAQ,eAAe,EACvB,cAAc,oBAAoB,EAClC,SAAS,8BAA8B,kBAWxC,CAAA"}
@@ -1,10 +1,10 @@
1
1
  export * from './api/index.ts';
2
2
  export * from './bridge/index.ts';
3
+ export * from './finalizer/index.ts';
3
4
  export * from './mempool/index.ts';
4
5
  export * from './producer/index.ts';
5
6
  export * from './rewardRedemption/index.ts';
6
7
  export * from './start/index.ts';
7
8
  export * from './types.ts';
8
- export * from './validator/index.ts';
9
9
  export * from './withDeprecationWarning.ts';
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,sBAAsB,CAAA;AACpC,cAAc,6BAA6B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,6BAA6B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"startCommand.d.ts","sourceRoot":"","sources":["../../../../src/commands/start/startCommand.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAkC,MAAM,sBAAsB,CAAA;AAClF,OAAO,KAAK,EACgB,aAAa,EACxC,MAAM,OAAO,CAAA;AAKd,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AA0ExD,wBAAgB,YAAY,CAAC,gBAAgB,EAAE,MAAM,MAAM,EAAE,qBAAqB,EAAE,qBAAqB,GAAG,aAAa,CAgCxH"}
1
+ {"version":3,"file":"startCommand.d.ts","sourceRoot":"","sources":["../../../../src/commands/start/startCommand.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAkC,MAAM,sBAAsB,CAAA;AAClF,OAAO,KAAK,EACgB,aAAa,EACxC,MAAM,OAAO,CAAA;AAMd,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAyExD,wBAAgB,YAAY,CAAC,gBAAgB,EAAE,MAAM,MAAM,EAAE,qBAAqB,EAAE,qBAAqB,GAAG,aAAa,CAgCxH"}
@@ -1 +1 @@
1
- {"version":3,"file":"configMiddleware.d.ts","sourceRoot":"","sources":["../../src/configMiddleware.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAQlD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAiD/H"}
1
+ {"version":3,"file":"configMiddleware.d.ts","sourceRoot":"","sources":["../../src/configMiddleware.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAsDlD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B/H"}
@@ -2,52 +2,76 @@ var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
3
 
4
4
  // src/configMiddleware.ts
5
- import { createDeepMerge } from "@xylabs/sdk-js";
6
- import { tryParseConfig } from "@xyo-network/chain-orchestration";
5
+ import { createDeepMerge, isDefined } from "@xylabs/sdk-js";
6
+ import { ActorMnemonicNotAllowedError, assertNoActorMnemonics, ConfigFileNotFoundError, tryParseConfig } from "@xyo-network/chain-orchestration";
7
7
  import { ConfigZod, isZodError, resolveConfig } from "@xyo-network/xl1-sdk";
8
8
  var deepMerge = createDeepMerge({
9
9
  arrayStrategy: "concat"
10
10
  });
11
+ function coerceActorsArray(argv) {
12
+ const actors = argv.actors;
13
+ if (actors === void 0 || Array.isArray(actors)) return argv;
14
+ if (typeof actors !== "object" || actors === null) return argv;
15
+ const entries = Object.entries(actors);
16
+ const numericEntries = entries.map(([key, value]) => [
17
+ Number(key),
18
+ value
19
+ ]).filter(([key]) => Number.isInteger(key) && key >= 0);
20
+ if (numericEntries.length !== entries.length) return argv;
21
+ const asArray = [];
22
+ for (const [key, value] of numericEntries) asArray[key] = value;
23
+ return {
24
+ ...argv,
25
+ actors: asArray
26
+ };
27
+ }
28
+ __name(coerceActorsArray, "coerceActorsArray");
29
+ function safeParseOrThrow(input2) {
30
+ const result = ConfigZod.safeParse(input2);
31
+ if (!result.success) throw result.error;
32
+ return result.data;
33
+ }
34
+ __name(safeParseOrThrow, "safeParseOrThrow");
35
+ async function buildFinalConfig(argv) {
36
+ const configPath = argv.config;
37
+ const parsedConfigFile = await tryParseConfig({
38
+ configPath
39
+ });
40
+ const rootMnemonicFromFile = typeof parsedConfigFile.mnemonic === "string" ? parsedConfigFile.mnemonic : void 0;
41
+ const normalizedArgv = coerceActorsArray(argv);
42
+ const parsedConfigArgs = ConfigZod.safeParse(normalizedArgv).data ?? {};
43
+ const rootMnemonicFromArgs = typeof normalizedArgv.mnemonic === "string" ? normalizedArgv.mnemonic : void 0;
44
+ const mergedConfig = safeParseOrThrow(deepMerge(parsedConfigFile, parsedConfigArgs));
45
+ const validated = safeParseOrThrow(resolveConfig(safeParseOrThrow(mergedConfig)));
46
+ const rootMnemonic = rootMnemonicFromArgs ?? rootMnemonicFromFile;
47
+ return isDefined(rootMnemonic) ? {
48
+ ...validated,
49
+ mnemonic: rootMnemonic
50
+ } : validated;
51
+ }
52
+ __name(buildFinalConfig, "buildFinalConfig");
11
53
  async function configMiddleware(argv, setConfiguration) {
12
54
  try {
13
- const configPath = argv.config;
14
- const parsedConfigFile = await tryParseConfig({
15
- configPath
16
- });
17
- const rootMnemonicFromFile = typeof parsedConfigFile.mnemonic === "string" ? parsedConfigFile.mnemonic : void 0;
18
- const parsedConfigArgs = ConfigZod.safeParse(argv).data ?? {};
19
- const rootMnemonicFromArgs = typeof argv.mnemonic === "string" ? argv.mnemonic : void 0;
20
- const parseResult = ConfigZod.safeParse(deepMerge(parsedConfigFile, parsedConfigArgs));
21
- if (!parseResult.success) {
22
- throw parseResult.error;
23
- }
24
- const mergedConfig = parseResult.data;
25
- const validatedMergedConfigResult = ConfigZod.safeParse(mergedConfig);
26
- if (!validatedMergedConfigResult.success) {
27
- throw validatedMergedConfigResult.error;
28
- }
29
- const resolvedConfig = resolveConfig(validatedMergedConfigResult.data);
30
- const validatedConfigResult = ConfigZod.safeParse(resolvedConfig);
31
- if (!validatedConfigResult.success) {
32
- throw validatedConfigResult.error;
33
- }
34
- const rootMnemonic = rootMnemonicFromArgs ?? rootMnemonicFromFile;
35
- const finalConfig = rootMnemonic ? {
36
- ...validatedConfigResult.data,
37
- mnemonic: rootMnemonic
38
- } : validatedConfigResult.data;
55
+ const finalConfig = await buildFinalConfig(argv);
56
+ assertNoActorMnemonics(finalConfig);
39
57
  setConfiguration(finalConfig);
40
58
  if (argv["dump-config"]) {
41
59
  console.log(JSON.stringify(finalConfig, null, 2));
42
60
  process.exit(0);
43
61
  }
44
62
  } catch (err) {
45
- if (isZodError(err)) {
63
+ if (err instanceof ConfigFileNotFoundError) {
64
+ console.error(`${err.message}. Check the path passed to --config/-c and try again.`);
65
+ } else if (err instanceof ActorMnemonicNotAllowedError) {
66
+ console.error(err.message);
67
+ } else if (isZodError(err)) {
46
68
  console.error(`Zod error: ${err.message}`);
47
69
  } else {
48
70
  console.error(`Error parsing configuration: ${err}`);
49
71
  }
50
- console.error(`Stack: ${err instanceof Error ? err.stack : "N/A"}`);
72
+ if (!(err instanceof ConfigFileNotFoundError) && !(err instanceof ActorMnemonicNotAllowedError)) {
73
+ console.error(`Stack: ${err instanceof Error ? err.stack : "N/A"}`);
74
+ }
51
75
  throw new Error("Invalid configuration", {
52
76
  cause: err
53
77
  });
@@ -56,16 +80,16 @@ async function configMiddleware(argv, setConfiguration) {
56
80
  __name(configMiddleware, "configMiddleware");
57
81
 
58
82
  // src/initLogger.ts
59
- import { Base, ConsoleLogger, isDefined, LogLevel, SilentLogger } from "@xylabs/sdk-js";
83
+ import { Base, ConsoleLogger, isDefined as isDefined2, LogLevel, SilentLogger } from "@xylabs/sdk-js";
60
84
  var initLogger = /* @__PURE__ */ __name((config2) => {
61
85
  let logger;
62
86
  if (config2.log.silent) {
63
87
  logger = new SilentLogger();
64
88
  } else {
65
89
  let level;
66
- if (isDefined(config2.log.logLevel)) {
90
+ if (isDefined2(config2.log.logLevel)) {
67
91
  const parsed = LogLevel[config2.log.logLevel.toLowerCase()];
68
- if (isDefined(parsed)) level = parsed;
92
+ if (isDefined2(parsed)) level = parsed;
69
93
  }
70
94
  logger = new ConsoleLogger(level);
71
95
  }
@@ -76,8 +100,8 @@ var initLogger = /* @__PURE__ */ __name((config2) => {
76
100
  // src/runCLI.ts
77
101
  import { stdin as input, stdout as output } from "process";
78
102
  import { createInterface } from "readline/promises";
79
- import { isDefined as isDefined2 } from "@xylabs/sdk-js";
80
- import { contextFromConfigWithoutLocator, formatWalletReport, initializeResolvedWalletReport, locatorsFromConfig, Orchestrator } from "@xyo-network/chain-orchestration";
103
+ import { isDefined as isDefined3 } from "@xylabs/sdk-js";
104
+ import { contextFromConfigWithoutLocator, detectDerivationPathCollisions, formatWalletReport, initializeResolvedWalletReport, locatorsFromConfig, Orchestrator } from "@xyo-network/chain-orchestration";
81
105
  import { ActorConfigZod, ConfigZod as ConfigZod2 } from "@xyo-network/xl1-sdk";
82
106
  import yargs from "yargs";
83
107
  import { hideBin } from "yargs/helpers";
@@ -85,24 +109,24 @@ import { hideBin } from "yargs/helpers";
85
109
  // src/commands/api/apiCommand.ts
86
110
  import { getApiActor } from "@xyo-network/chain-api";
87
111
  import { getMempoolActor } from "@xyo-network/chain-mempool";
88
- import { ApiConfigZod, MempoolConfigZod, ValidatorConfigZod } from "@xyo-network/chain-orchestration";
112
+ import { ApiConfigZod, FinalizerConfigZod, MempoolConfigZod } from "@xyo-network/chain-orchestration";
89
113
 
90
- // src/commands/validator/runValidator.ts
114
+ // src/commands/finalizer/runFinalizer.ts
91
115
  import { exists } from "@xylabs/sdk-js";
92
- import { initActorWallet, ValidatorActor } from "@xyo-network/chain-orchestration";
93
- var getValidatorActor = /* @__PURE__ */ __name(async (config2, locator) => {
116
+ import { FinalizerActor, initActorWallet } from "@xyo-network/chain-orchestration";
117
+ var getFinalizerActor = /* @__PURE__ */ __name(async (config2, locator) => {
94
118
  const account = await initActorWallet({
95
119
  config: config2,
96
120
  logger: locator.context.logger,
97
121
  singletons: {},
98
122
  caches: {}
99
123
  });
100
- return await ValidatorActor.create({
124
+ return await FinalizerActor.create({
101
125
  account,
102
126
  config: config2,
103
127
  locator
104
128
  });
105
- }, "getValidatorActor");
129
+ }, "getFinalizerActor");
106
130
 
107
131
  // src/commands/api/apiCommand.ts
108
132
  function apiCommand(getConfiguration2, getLocatorsFromConfig2) {
@@ -115,12 +139,12 @@ function apiCommand(getConfiguration2, getLocatorsFromConfig2) {
115
139
  const { locators, orchestrator } = await getLocatorsFromConfig2([
116
140
  "api",
117
141
  "mempool",
118
- "validator"
142
+ "finalizer"
119
143
  ], configuration2);
120
144
  const actors = await Promise.all([
121
145
  getApiActor(ApiConfigZod.parse(locators["api"].context.config), locators["api"]),
122
146
  getMempoolActor(MempoolConfigZod.parse(locators["mempool"].context.config), locators["mempool"]),
123
- getValidatorActor(ValidatorConfigZod.parse(locators["validator"].context.config), locators["validator"])
147
+ getFinalizerActor(FinalizerConfigZod.parse(locators["finalizer"].context.config), locators["finalizer"])
124
148
  ]);
125
149
  for (const actor of actors) {
126
150
  await orchestrator.registerActor(actor);
@@ -270,7 +294,7 @@ __name(rewardRedemptionCommand, "rewardRedemptionCommand");
270
294
  // src/commands/start/startCommand.ts
271
295
  import { getApiActor as getApiActor2 } from "@xyo-network/chain-api";
272
296
  import { getMempoolActor as getMempoolActor2 } from "@xyo-network/chain-mempool";
273
- import { ApiConfigZod as ApiConfigZod2, BridgeConfigZod as BridgeConfigZod2, MempoolConfigZod as MempoolConfigZod3, ProducerConfigZod as ProducerConfigZod2, RewardRedemptionConfigZod as RewardRedemptionConfigZod2, ValidatorConfigZod as ValidatorConfigZod2 } from "@xyo-network/chain-orchestration";
297
+ import { ApiConfigZod as ApiConfigZod2, BridgeConfigZod as BridgeConfigZod2, FinalizerConfigZod as FinalizerConfigZod2, MempoolConfigZod as MempoolConfigZod3, ProducerConfigZod as ProducerConfigZod2, RewardRedemptionConfigZod as RewardRedemptionConfigZod2 } from "@xyo-network/chain-orchestration";
274
298
  import { runProducer as runProducer2 } from "@xyo-network/chain-producer";
275
299
 
276
300
  // src/waitForHostPort.ts
@@ -298,10 +322,10 @@ var waitForHostPort = /* @__PURE__ */ __name((host, port) => {
298
322
  var KNOWN_ACTORS = [
299
323
  "api",
300
324
  "bridge",
325
+ "finalizer",
301
326
  "mempool",
302
327
  "producer",
303
- "rewardRedemption",
304
- "validator"
328
+ "rewardRedemption"
305
329
  ];
306
330
  function getActorsFromConfig(configuration2) {
307
331
  const enabledActors = configuration2.actors.filter((actor) => actor.enabled !== false).map((actor) => actor.name);
@@ -312,7 +336,7 @@ function getDefaultActors() {
312
336
  return [
313
337
  "api",
314
338
  "producer",
315
- "validator"
339
+ "finalizer"
316
340
  ];
317
341
  }
318
342
  __name(getDefaultActors, "getDefaultActors");
@@ -353,9 +377,9 @@ async function startActor(name, locator, orchestrator) {
353
377
  await orchestrator.start();
354
378
  break;
355
379
  }
356
- case "validator": {
357
- const config2 = ValidatorConfigZod2.parse(locator.context.config);
358
- const actor = await getValidatorActor(config2, locator);
380
+ case "finalizer": {
381
+ const config2 = FinalizerConfigZod2.parse(locator.context.config);
382
+ const actor = await getFinalizerActor(config2, locator);
359
383
  await orchestrator.registerActor(actor);
360
384
  await orchestrator.start();
361
385
  break;
@@ -384,7 +408,7 @@ function startCommand(getConfiguration2, getLocatorsFromConfig2) {
384
408
  type: "array",
385
409
  string: true,
386
410
  choices: KNOWN_ACTORS,
387
- description: "List of actors to start (e.g. --actors api producer validator). Defaults to api, producer, and validator."
411
+ description: "List of actors to start (e.g. --actors api producer finalizer). Defaults to api, producer, and finalizer."
388
412
  });
389
413
  }, "builder"),
390
414
  handler: /* @__PURE__ */ __name(async (argv) => {
@@ -456,13 +480,12 @@ var optionsFromGlobalZodRegistry = /* @__PURE__ */ __name(() => {
456
480
 
457
481
  // src/runCLI.ts
458
482
  var configuration;
459
- var version = isDefined2("1.20.21") ? "1.20.21" : "unknown";
483
+ var version = isDefined3("1.20.23") ? "1.20.23" : "unknown";
460
484
  function getConfiguration() {
461
485
  return configuration;
462
486
  }
463
487
  __name(getConfiguration, "getConfiguration");
464
- async function pauseForInsecureGenesisWalletIfNeeded(report, logger) {
465
- if (!report.insecureGenesisRewardAccounts) return;
488
+ async function promptForInsecureGenesisConfirmation(logger) {
466
489
  if (!input.isTTY || !output.isTTY) {
467
490
  logger.warn("Insecure genesis reward wallet is active. Interactive confirmation skipped because this session is not a TTY.");
468
491
  return;
@@ -477,7 +500,7 @@ async function pauseForInsecureGenesisWalletIfNeeded(report, logger) {
477
500
  rl.close();
478
501
  }
479
502
  }
480
- __name(pauseForInsecureGenesisWalletIfNeeded, "pauseForInsecureGenesisWalletIfNeeded");
503
+ __name(promptForInsecureGenesisConfirmation, "promptForInsecureGenesisConfirmation");
481
504
  async function getLocatorsFromConfig(actors, configuration2) {
482
505
  const actorConfigs = [];
483
506
  for (const actorName of actors) {
@@ -499,11 +522,12 @@ async function getLocatorsFromConfig(actors, configuration2) {
499
522
  const orchestrator = await Orchestrator.create({
500
523
  logger
501
524
  });
525
+ const collision = detectDerivationPathCollisions(actors, configuration2);
526
+ if (collision) throw collision;
502
527
  const walletReport = await initializeResolvedWalletReport(actors, configuration2);
503
528
  logger.info(formatWalletReport(walletReport));
504
- await pauseForInsecureGenesisWalletIfNeeded(walletReport, logger);
505
529
  const context = await contextFromConfigWithoutLocator(config2, logger, "xl1-cli", version);
506
- const locators = await locatorsFromConfig(context, config2);
530
+ const locators = await locatorsFromConfig(context, config2, async () => await promptForInsecureGenesisConfirmation(logger));
507
531
  process.on("SIGINT", () => {
508
532
  void (async () => {
509
533
  try {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/configMiddleware.ts","../../src/initLogger.ts","../../src/runCLI.ts","../../src/commands/api/apiCommand.ts","../../src/commands/validator/runValidator.ts","../../src/commands/bridge/bridgeCommand.ts","../../src/commands/bridge/runBridge.ts","../../src/commands/mempool/mempoolCommand.ts","../../src/commands/producer/producerCommand.ts","../../src/commands/rewardRedemption/rewardRedemptionCommand.ts","../../src/commands/rewardRedemption/runRewardRedemptionApi.ts","../../src/commands/start/startCommand.ts","../../src/waitForHostPort.ts","../../src/commands/withDeprecationWarning.ts","../../src/images.ts","../../src/optionsFromGlobalZodRegistry.ts","../../src/start.ts"],"sourcesContent":["import { createDeepMerge } from '@xylabs/sdk-js'\nimport { tryParseConfig } from '@xyo-network/chain-orchestration'\nimport type { Config } from '@xyo-network/xl1-sdk'\nimport {\n ConfigZod, isZodError, resolveConfig,\n} from '@xyo-network/xl1-sdk'\n\nconst deepMerge = createDeepMerge({ arrayStrategy: 'concat' })\ntype ConfigWithMnemonic = Config & { mnemonic?: string }\n\nexport async function configMiddleware(argv: Record<string, unknown>, setConfiguration: (config: Config) => void): Promise<void> {\n try {\n // Parse the various config sources\n const configPath = argv.config as string | undefined\n const parsedConfigFile = await tryParseConfig({ configPath }) as ConfigWithMnemonic // Config file\n const rootMnemonicFromFile = typeof parsedConfigFile.mnemonic === 'string' ? parsedConfigFile.mnemonic : undefined\n const parsedConfigArgs = ConfigZod.safeParse(argv).data ?? {} // Command-line arguments & ENV VARs\n const rootMnemonicFromArgs = typeof argv.mnemonic === 'string' ? argv.mnemonic : undefined\n const parseResult = ConfigZod.safeParse(deepMerge(parsedConfigFile, parsedConfigArgs))\n if (!parseResult.success) {\n throw parseResult.error\n }\n // Deep merge with precedence\n // TODO: Would like precedence to be defaults < file < ENV < CLI Args\n // but there is currently no way to determine which are defaults vs\n // user-supplied CLI Args since we set the CLI args to the defaults\n // and receive a flattened object. We might need to manually invoke\n // the parser without the defaults to achieve this.\n // const mergedConfig = deepMerge(parsedConfigArgs, parsedConfigFile)\n const mergedConfig = parseResult.data\n const validatedMergedConfigResult = ConfigZod.safeParse(mergedConfig)\n if (!validatedMergedConfigResult.success) {\n throw validatedMergedConfigResult.error\n }\n const resolvedConfig = resolveConfig(validatedMergedConfigResult.data)\n // Validate the merged configuration\n const validatedConfigResult = ConfigZod.safeParse(resolvedConfig)\n if (!validatedConfigResult.success) {\n throw validatedConfigResult.error\n }\n const rootMnemonic = rootMnemonicFromArgs ?? rootMnemonicFromFile\n const finalConfig = rootMnemonic ? { ...validatedConfigResult.data, mnemonic: rootMnemonic } : validatedConfigResult.data\n setConfiguration(finalConfig as Config)\n\n // Check if user wants to dump config and exit\n if (argv['dump-config']) {\n console.log(JSON.stringify(finalConfig, null, 2))\n // eslint-disable-next-line unicorn/no-process-exit\n process.exit(0)\n }\n } catch (err) {\n if (isZodError(err)) {\n console.error(`Zod error: ${err.message}`)\n } else {\n console.error(`Error parsing configuration: ${err}`)\n }\n console.error(`Stack: ${err instanceof Error ? err.stack : 'N/A'}`)\n throw new Error('Invalid configuration', { cause: err })\n }\n}\n","import type { Logger, LogLevelValue } from '@xylabs/sdk-js'\nimport {\n Base,\n ConsoleLogger, isDefined,\n LogLevel, SilentLogger,\n} from '@xylabs/sdk-js'\nimport type { BaseConfig } from '@xyo-network/xl1-sdk'\n\nexport const initLogger = (config: BaseConfig): Logger => {\n let logger: Logger\n if (config.log.silent) {\n logger = new SilentLogger()\n } else {\n let level: LogLevelValue | undefined\n if (isDefined(config.log.logLevel)) {\n const parsed = LogLevel[config.log.logLevel.toLowerCase() as keyof typeof LogLevel]\n if (isDefined(parsed)) level = parsed\n }\n logger = new ConsoleLogger(level)\n }\n Base.defaultLogger = logger\n return logger\n}\n","import { stdin as input, stdout as output } from 'node:process'\nimport { createInterface } from 'node:readline/promises'\n\nimport { isDefined } from '@xylabs/sdk-js'\nimport {\n contextFromConfigWithoutLocator, formatWalletReport, initializeResolvedWalletReport,\n locatorsFromConfig, Orchestrator,\n} from '@xyo-network/chain-orchestration'\nimport type { ActorConfig, Config } from '@xyo-network/xl1-sdk'\nimport { ActorConfigZod, ConfigZod } from '@xyo-network/xl1-sdk'\nimport type { Argv } from 'yargs'\nimport yargs from 'yargs'\nimport { hideBin } from 'yargs/helpers'\n\nimport {\n apiCommand,\n bridgeCommand,\n mempoolCommand,\n producerCommand,\n rewardRedemptionCommand,\n startCommand,\n withDeprecationWarning,\n} from './commands/index.ts'\nimport { configMiddleware } from './configMiddleware.ts'\nimport { XL1LogoColorizedAscii } from './images.ts'\nimport { initLogger } from './initLogger.ts'\nimport { optionsFromGlobalZodRegistry } from './optionsFromGlobalZodRegistry.ts'\n\n/** Version string injected by Rollup at build time. */\ndeclare const __VERSION__: string\n\n/**\n * The configuration that will be used throughout the CLI.\n * This is materialized after parsing the command-line arguments,\n * environment variables, and defaults.\n */\nlet configuration: Config\n\nconst version = isDefined(__VERSION__) ? __VERSION__ : 'unknown'\n\nfunction getConfiguration(): Config {\n return configuration\n}\n\nasync function pauseForInsecureGenesisWalletIfNeeded(report: Awaited<ReturnType<typeof initializeResolvedWalletReport>>, logger: ReturnType<typeof initLogger>) {\n if (!report.insecureGenesisRewardAccounts) return\n if (!input.isTTY || !output.isTTY) {\n logger.warn('Insecure genesis reward wallet is active. Interactive confirmation skipped because this session is not a TTY.')\n return\n }\n const rl = createInterface({ input, output })\n try {\n await rl.question('Insecure genesis reward wallet is active. Hit RETURN to continue.')\n } finally {\n rl.close()\n }\n}\n\nasync function getLocatorsFromConfig(actors: string[], configuration: Config) {\n const actorConfigs: ActorConfig[] = []\n for (const actorName of actors) {\n const existingConfig = configuration.actors.find(actor => actor.name === actorName)\n if (existingConfig) {\n actorConfigs.push(existingConfig)\n } else {\n const actorConfig = ActorConfigZod.loose().parse({ name: actorName })\n actorConfigs.push(actorConfig)\n }\n }\n\n const config = ConfigZod.parse({ ...configuration, actors: actorConfigs })\n\n const logger = initLogger(configuration)\n const orchestrator = await Orchestrator.create({ logger })\n const walletReport = await initializeResolvedWalletReport(actors, configuration)\n logger.info(formatWalletReport(walletReport))\n await pauseForInsecureGenesisWalletIfNeeded(walletReport, logger)\n const context = await contextFromConfigWithoutLocator(config, logger, 'xl1-cli', version)\n const locators = await locatorsFromConfig(context, config)\n // Handle cancellation (Ctrl+C)\n process.on('SIGINT', () => {\n void (async () => {\n try {\n logger.log('\\nSIGINT received. Attempting graceful shutdown...')\n await orchestrator?.stop()\n logger.log('Orchestrator stopped, exiting now.')\n process.exit(0)\n } catch (err) {\n logger.error('Error stopping orchestrator:', err)\n process.exit(1)\n }\n })()\n })\n return { locators, orchestrator }\n}\n\n// Main entry point\nexport async function runCLI() {\n // Parse command-line arguments using Yargs\n const y = yargs(hideBin(process.argv)) as Argv<Config>\n const argv = y\n .usage(`\n🚀 XL1 Node CLI (${version})\n${XL1LogoColorizedAscii}\nRun various components of the XL1 ecosystem.\n\nUsage:\n$0 <command> [options]`)\n .parserConfiguration({\n 'dot-notation': true, // foo.bar → { foo: { bar } }\n 'parse-numbers': false, // Don't auto-parse numbers to allow strings like \"0x1\"\n 'populate--': true, // Populate -- with all options so we can detected user-supplied vs defaults\n })\n .env('XL1')\n .scriptName('xl1')\n .middleware(async (argv) => {\n await configMiddleware(argv, (config) => {\n configuration = config\n })\n })\n .options(optionsFromGlobalZodRegistry())\n .wrap(y.terminalWidth())\n .command(withDeprecationWarning(apiCommand(getConfiguration, getLocatorsFromConfig)))\n .command(withDeprecationWarning(bridgeCommand(getConfiguration, getLocatorsFromConfig)))\n .command(withDeprecationWarning(mempoolCommand(getConfiguration, getLocatorsFromConfig)))\n .command(withDeprecationWarning(producerCommand(getConfiguration, getLocatorsFromConfig)))\n .command(withDeprecationWarning(rewardRedemptionCommand(getConfiguration, getLocatorsFromConfig)))\n .command(startCommand(getConfiguration, getLocatorsFromConfig))\n .options({\n 'config': {\n type: 'string',\n description: 'Path to a config file to use instead of the default search.',\n alias: 'c',\n },\n 'mnemonic': {\n type: 'string',\n description: 'Shared root mnemonic used by actors that do not define their own mnemonic.',\n },\n 'dump-config': {\n type: 'boolean',\n description: 'Just process the configuration and print the resolved config to stdout, then exit.',\n default: false,\n },\n })\n .help()\n .alias('help', 'h')\n .version(version)\n .argv\n\n await argv\n}\n","import { getApiActor } from '@xyo-network/chain-api'\nimport { getMempoolActor } from '@xyo-network/chain-mempool'\nimport {\n ApiConfigZod, MempoolConfigZod,\n ValidatorConfigZod,\n} from '@xyo-network/chain-orchestration'\nimport type { Config } from '@xyo-network/xl1-sdk'\nimport type { CommandModule } from 'yargs'\n\nimport type { GetLocatorsFromConfig } from '../types.ts'\nimport { getValidatorActor } from '../validator/index.ts'\n\nexport function apiCommand(getConfiguration: () => Config, getLocatorsFromConfig: GetLocatorsFromConfig): CommandModule {\n return {\n command: 'api',\n deprecated: 'Use \"start api\" instead',\n describe: 'Run a XL1 API Node',\n handler: async () => {\n const configuration = getConfiguration()\n const { locators, orchestrator } = await getLocatorsFromConfig(['api', 'mempool', 'validator'], configuration)\n const actors = await Promise.all([getApiActor(\n ApiConfigZod.parse(locators['api'].context.config),\n locators['api'],\n ), getMempoolActor(\n MempoolConfigZod.parse(locators['mempool'].context.config),\n locators['mempool'],\n ), getValidatorActor(\n ValidatorConfigZod.parse(locators['validator'].context.config),\n locators['validator'],\n )])\n\n for (const actor of actors) {\n await orchestrator.registerActor(actor)\n }\n\n await orchestrator.start()\n },\n }\n}\n","import { exists } from '@xylabs/sdk-js'\nimport type { OrchestratorInstance, ValidatorConfig } from '@xyo-network/chain-orchestration'\nimport { initActorWallet, ValidatorActor } from '@xyo-network/chain-orchestration'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\n\nexport const getValidatorActor = async (\n config: ValidatorConfig,\n locator: ProviderFactoryLocatorInstance,\n) => {\n const account = await initActorWallet({\n config, logger: locator.context.logger, singletons: {}, caches: {},\n })\n // Create actors\n return await ValidatorActor.create({\n account, config, locator,\n })\n}\n\nexport const runValidator = async (\n config: ValidatorConfig,\n orchestrator: OrchestratorInstance,\n locator: ProviderFactoryLocatorInstance,\n) => {\n const validator = await getValidatorActor(config, locator)\n const actors = [validator].filter(exists)\n\n for (const actor of actors) {\n // Register the actor with the orchestrator\n await orchestrator.registerActor(actor)\n }\n // Start the orchestrator => automatically activates the actor\n await orchestrator.start()\n}\n","import { BridgeConfigZod } from '@xyo-network/chain-orchestration'\nimport type { Config } from '@xyo-network/xl1-sdk'\nimport type { CommandModule } from 'yargs'\n\nimport type { GetLocatorsFromConfig } from '../types.ts'\nimport { runBridge } from './runBridge.ts'\n\nexport function bridgeCommand(getConfiguration: () => Config, getLocatorsFromConfig: GetLocatorsFromConfig): CommandModule {\n return {\n command: 'bridge',\n deprecated: 'Use \"start bridge\" instead',\n describe: 'Run a XL1 Bridge Node',\n handler: async () => {\n const configuration = getConfiguration()\n const { locators, orchestrator } = await getLocatorsFromConfig(['bridge'], configuration)\n await runBridge(BridgeConfigZod.parse(locators['bridge'].context.config), orchestrator, locators['bridge'])\n },\n }\n}\n","import { exists } from '@xylabs/sdk-js'\nimport { BridgeActor } from '@xyo-network/chain-bridge'\nimport type { BridgeConfig, OrchestratorInstance } from '@xyo-network/chain-orchestration'\nimport { initActorWallet } from '@xyo-network/chain-orchestration'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\n\nexport const getBridgeActor = async (\n config: BridgeConfig,\n locator: ProviderFactoryLocatorInstance,\n) => {\n const account = await initActorWallet({\n config, logger: locator.context.logger, singletons: {}, caches: {},\n })\n // Create actors\n return await BridgeActor.create({\n account, config, locator,\n })\n}\n\nexport const runBridge = async (\n config: BridgeConfig,\n orchestrator: OrchestratorInstance,\n locator: ProviderFactoryLocatorInstance,\n) => {\n const bridge = await getBridgeActor(config, locator)\n const actors = [bridge].filter(exists)\n\n for (const actor of actors) {\n // Register the actor with the orchestrator\n await orchestrator.registerActor(actor)\n }\n // Start the orchestrator => automatically activates the actor\n await orchestrator.start()\n}\n","import { runMempool } from '@xyo-network/chain-mempool'\nimport { MempoolConfigZod } from '@xyo-network/chain-orchestration'\nimport type { Config } from '@xyo-network/xl1-sdk'\nimport type { CommandModule } from 'yargs'\n\nimport type { GetLocatorsFromConfig } from '../types.ts'\n\nexport function mempoolCommand(getConfiguration: () => Config, getLocatorsFromConfig: GetLocatorsFromConfig): CommandModule {\n return {\n command: 'mempool',\n deprecated: 'Use \"start mempool\" instead',\n describe: 'Run a XL1 Mempool Node',\n handler: async () => {\n const configuration = getConfiguration()\n const { locators, orchestrator } = await getLocatorsFromConfig(['mempool'], configuration)\n await runMempool(MempoolConfigZod.parse(locators['mempool'].context.config), orchestrator, locators['mempool'])\n },\n }\n}\n","import { ProducerConfigZod } from '@xyo-network/chain-orchestration'\nimport { runProducer } from '@xyo-network/chain-producer'\nimport type { Config } from '@xyo-network/xl1-sdk'\nimport type { CommandModule } from 'yargs'\n\nimport type { GetLocatorsFromConfig } from '../types.ts'\n\nexport function producerCommand(getConfiguration: () => Config, getLocatorsFromConfig: GetLocatorsFromConfig): CommandModule {\n return {\n command: 'producer',\n deprecated: 'Use \"start producer\" instead',\n describe: 'Run a XL1 Producer Node',\n handler: async () => {\n const configuration = getConfiguration()\n const { locators, orchestrator } = await getLocatorsFromConfig(['producer'], configuration)\n await runProducer(ProducerConfigZod.parse(locators['producer'].context.config), orchestrator, locators['producer'])\n },\n }\n}\n","import { RewardRedemptionConfigZod } from '@xyo-network/chain-orchestration'\nimport type { Config } from '@xyo-network/xl1-sdk'\nimport type { CommandModule } from 'yargs'\n\nimport type { GetLocatorsFromConfig } from '../types.ts'\nimport { runRewardRedemptionApi } from './runRewardRedemptionApi.ts'\n\nexport function rewardRedemptionCommand(getConfiguration: () => Config, getLocatorsFromConfig: GetLocatorsFromConfig): CommandModule {\n return {\n command: 'reward-redemption-api',\n deprecated: 'Use \"start rewardRedemption\" instead',\n describe: 'Run a XL1 Rewards Redemption API Node',\n handler: async () => {\n const configuration = getConfiguration()\n const { locators, orchestrator } = await getLocatorsFromConfig(['rewardRedemption'], configuration)\n await runRewardRedemptionApi(RewardRedemptionConfigZod.parse(locators['rewardRedemption'].context.config), orchestrator, locators['rewardRedemption'])\n },\n }\n}\n","import { exists } from '@xylabs/sdk-js'\nimport type {\n OrchestratorInstance,\n RewardRedemptionConfig,\n} from '@xyo-network/chain-orchestration'\nimport { initActorWallet } from '@xyo-network/chain-orchestration'\nimport { RewardRedemptionActor } from '@xyo-network/chain-reward-redemption'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\n\nexport async function getRewardRedemptionActor(\n config: RewardRedemptionConfig,\n locator: ProviderFactoryLocatorInstance,\n) {\n const account = await initActorWallet({\n config, logger: locator.context.logger, singletons: {}, caches: {},\n })\n return await RewardRedemptionActor.create({\n account, config, locator,\n })\n}\n\nexport async function runRewardRedemptionApi(\n config: RewardRedemptionConfig,\n orchestrator: OrchestratorInstance,\n locator: ProviderFactoryLocatorInstance,\n) {\n const rewardRedemption = await getRewardRedemptionActor(config, locator)\n const actors = [rewardRedemption].filter(exists)\n\n for (const actor of actors) {\n // Register the actor with the orchestrator\n await orchestrator.registerActor(actor)\n }\n // Start the orchestrator => automatically activates the actor\n await orchestrator.start()\n}\n","import { getApiActor } from '@xyo-network/chain-api'\nimport { getMempoolActor } from '@xyo-network/chain-mempool'\nimport type { OrchestratorInstance } from '@xyo-network/chain-orchestration'\nimport {\n ApiConfigZod,\n BridgeConfigZod,\n MempoolConfigZod,\n ProducerConfigZod,\n RewardRedemptionConfigZod,\n ValidatorConfigZod,\n} from '@xyo-network/chain-orchestration'\nimport { runProducer } from '@xyo-network/chain-producer'\nimport type { Config, ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\nimport type {\n ArgumentsCamelCase, Argv, CommandModule,\n} from 'yargs'\n\nimport { waitForHostPort } from '../../waitForHostPort.ts'\nimport { getBridgeActor } from '../bridge/index.ts'\nimport { getRewardRedemptionActor } from '../rewardRedemption/index.ts'\nimport type { GetLocatorsFromConfig } from '../types.ts'\nimport { getValidatorActor } from '../validator/index.ts'\n\ninterface StartArgs {\n actors?: string[]\n}\n\nconst KNOWN_ACTORS = ['api', 'bridge', 'mempool', 'producer', 'rewardRedemption', 'validator'] as const\n\nfunction getActorsFromConfig(configuration: Config): string[] | undefined {\n const enabledActors = configuration.actors\n .filter(actor => actor.enabled !== false)\n .map(actor => actor.name)\n return enabledActors.length > 0 ? enabledActors : undefined\n}\n\nfunction getDefaultActors(): string[] {\n return ['api', 'producer', 'validator']\n}\n\nasync function startActor(\n name: string,\n locator: ProviderFactoryLocatorInstance,\n orchestrator: OrchestratorInstance,\n): Promise<void> {\n switch (name) {\n case 'api': {\n const config = ApiConfigZod.parse(locator.context.config)\n const actor = await getApiActor(config, locator)\n await orchestrator.registerActor(actor)\n await orchestrator.start()\n await waitForHostPort(config.host, config.port)\n break\n }\n case 'bridge': {\n const config = BridgeConfigZod.parse(locator.context.config)\n const actor = await getBridgeActor(config, locator)\n await orchestrator.registerActor(actor)\n await orchestrator.start()\n break\n }\n case 'mempool': {\n const config = MempoolConfigZod.parse(locator.context.config)\n const actor = await getMempoolActor(config, locator)\n await orchestrator.registerActor(actor)\n await orchestrator.start()\n await waitForHostPort(config.host, config.port)\n break\n }\n case 'producer': {\n const config = ProducerConfigZod.parse(locator.context.config)\n await runProducer(config, orchestrator, locator)\n break\n }\n case 'rewardRedemption': {\n const config = RewardRedemptionConfigZod.parse(locator.context.config)\n const actor = await getRewardRedemptionActor(config, locator)\n await orchestrator.registerActor(actor)\n await orchestrator.start()\n break\n }\n case 'validator': {\n const config = ValidatorConfigZod.parse(locator.context.config)\n const actor = await getValidatorActor(config, locator)\n await orchestrator.registerActor(actor)\n await orchestrator.start()\n break\n }\n default: {\n throw new Error(`Unknown actor: ${name}`)\n }\n }\n}\n\nexport function startCommand(getConfiguration: () => Config, getLocatorsFromConfig: GetLocatorsFromConfig): CommandModule {\n return {\n command: ['start [actors..]', '$0'],\n describe: 'Run a full XL1 Node',\n builder: (yargs: Argv) => {\n return yargs\n .positional('actors', {\n type: 'string',\n array: true,\n choices: KNOWN_ACTORS,\n description: 'Actors to start (e.g. xl1 start api producer or xl1 start api,producer)',\n coerce: (values: string[]) => values.flatMap(v => v.split(',')),\n })\n .option('actors', {\n type: 'array',\n string: true,\n choices: KNOWN_ACTORS,\n description: 'List of actors to start (e.g. --actors api producer validator). Defaults to api, producer, and validator.',\n })\n },\n handler: async (argv: ArgumentsCamelCase<StartArgs>) => {\n const configuration = getConfiguration()\n const requestedActors = argv.actors !== undefined && argv.actors.length > 0\n ? argv.actors\n : getActorsFromConfig(configuration) ?? getDefaultActors()\n const { locators, orchestrator } = await getLocatorsFromConfig(requestedActors, configuration)\n\n for (const name of requestedActors) {\n await startActor(name, locators[name], orchestrator)\n }\n },\n }\n}\n","import net from 'node:net'\n\nexport const waitForHostPort = (host: string, port: number): Promise<void> => {\n return new Promise((resolve) => {\n const tryConnect = () => {\n const socket = new net.Socket()\n\n socket\n .setTimeout(1000)\n .once('error', () => {\n socket.destroy()\n setTimeout(tryConnect, 500) // retry after 500ms\n })\n .once('timeout', () => {\n socket.destroy()\n setTimeout(tryConnect, 500)\n })\n .connect(port, host, () => {\n socket.end()\n resolve()\n })\n }\n\n tryConnect()\n })\n}\n","import { delay } from '@xylabs/sdk-js'\nimport type { CommandModule } from 'yargs'\n\nexport function withDeprecationWarning(module: CommandModule): CommandModule {\n const { deprecated, handler } = module\n if (typeof deprecated === 'string') {\n return {\n ...module,\n handler: async (argv) => {\n console.warn(`[deprecated] ${deprecated}`)\n await delay(3000)\n return handler(argv)\n },\n }\n }\n return module\n}\n","/* eslint-disable no-irregular-whitespace, @stylistic/max-len */\nexport const XL1LogoColorizedAscii = `\u001b[38;2;128;128;128m                    \u001b[0m\u001b[38;2;118;111;144m_\u001b[0m\n\u001b[38;2;128;128;128m                   \u001b[0m\u001b[38;2;72;32;223m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\n\u001b[38;2;128;128;128m                   ╠╠\u001b[0m\u001b[38;2;103;85;170m_\u001b[0m\n\u001b[38;2;128;128;128m        \u001b[0m\u001b[38;2;79;121;152m╦\u001b[0m\u001b[38;2;82;121;151m╦\u001b[0m\u001b[38;2;112;125;136m_       \u001b[0m\u001b[38;2;88;59;196m[\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;73;34;221m▒       \u001b[0m\u001b[38;2;121;121;127m_\u001b[0m\u001b[38;2;100;101;128m╔\u001b[0m\u001b[38;2;93;94;127m╦\u001b[0m\n\u001b[38;2;128;128;128m        \u001b[0m\u001b[38;2;82;121;151m²\u001b[0m\u001b[38;2;44;116;170m╠\u001b[0m\u001b[38;2;44;116;171m▒\u001b[0m\u001b[38;2;51;117;167mD\u001b[0m\u001b[38;2;80;121;152m╦\u001b[0m\u001b[38;2;111;125;136m_    \u001b[0m\u001b[38;2;67;23;232m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠    \u001b[0m\u001b[38;2;120;121;128m_\u001b[0m\u001b[38;2;100;101;127m╔\u001b[0m\u001b[38;2;79;81;127mR\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;88;90;127m╙\u001b[0m\n\u001b[38;2;128;128;128m          \u001b[0m\u001b[38;2;55;117;165m╚\u001b[0m\u001b[38;2;44;116;171m▒\u001b[0m\u001b[38;2;44;116;171m▒▒\u001b[0m\u001b[38;2;50;116;167mD\u001b[0m\u001b[38;2;80;121;152m╦ \u001b[0m\u001b[38;2;106;90;165mj\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠\u001b[0m\u001b[38;2;89;61;194mH \u001b[0m\u001b[38;2;99;100;127m╔\u001b[0m\u001b[38;2;79;80;127mD\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;71;73;128m▒▒╠\u001b[0m\n\u001b[38;2;128;128;128m           \u001b[0m\u001b[38;2;83;121;150m²\u001b[0m\u001b[38;2;44;116;170m▒\u001b[0m\u001b[38;2;44;116;171m▒▒▒ \u001b[0m\u001b[38;2;76;38;217m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠ \u001b[0m\u001b[38;2;74;76;128m╠\u001b[0m\u001b[38;2;71;73;128m▒▒▒\u001b[0m\u001b[38;2;89;90;128m╙\u001b[0m\n\u001b[38;2;128;128;128m             \u001b[0m\u001b[38;2;90;118;148m\\`\u001b[0m\u001b[38;2;89;107;153m_\u001b[0m\u001b[38;2;93;97;154m,\u001b[0m\u001b[38;2;105;89;166m╓\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠\u001b[0m\u001b[38;2;95;72;183m╓\u001b[0m\u001b[38;2;106;96;152m_\u001b[0m\u001b[38;2;100;94;143m\\`\u001b[0m\u001b[38;2;101;100;133m\\`\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;122;118;137m_\u001b[0m\u001b[38;2;113;102;153m,\u001b[0m\u001b[38;2;108;94;161m╓\u001b[0m\u001b[38;2;104;86;169m╓\u001b[0m\u001b[38;2;98;77;178m╔\u001b[0m\u001b[38;2;93;67;188m╗\u001b[0m\u001b[38;2;88;59;196mφ\u001b[0m\u001b[38;2;83;51;204m@\u001b[0m\u001b[38;2;78;42;213mD\u001b[0m\u001b[38;2;72;32;223m▒\u001b[0m\u001b[38;2;68;24;231m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠\u001b[0m\u001b[38;2;71;30;225m▒\u001b[0m\u001b[38;2;77;40;215m▒\u001b[0m\u001b[38;2;82;49;206mK\u001b[0m\u001b[38;2;87;57;198mφ\u001b[0m\u001b[38;2;91;65;190m╗\u001b[0m\u001b[38;2;97;75;180m╦\u001b[0m\u001b[38;2;103;84;171m╖\u001b[0m\u001b[38;2;107;92;163m²\u001b[0m\u001b[38;2;112;101;154m_\u001b[0m\u001b[38;2;119;112;143m_\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;106;91;164m\\`\u001b[0m\u001b[38;2;94;70;185m^\u001b[0m\u001b[38;2;89;62;193m╙\u001b[0m\u001b[38;2;85;54;201m╙\u001b[0m\u001b[38;2;80;45;210m╚\u001b[0m\u001b[38;2;74;35;220m╝\u001b[0m\u001b[38;2;69;26;229m╠\u001b[0m\u001b[38;2;66;22;233m╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠\u001b[0m\u001b[38;2;73;33;222m╝\u001b[0m\u001b[38;2;79;43;212m╩\u001b[0m\u001b[38;2;84;52;203m╜\u001b[0m\u001b[38;2;88;60;195m╙\u001b[0m\u001b[38;2;93;68;187m^\u001b[0m\u001b[38;2;100;80;175m\\`\u001b[0m\n\u001b[38;2;128;128;128m             \u001b[0m\u001b[38;2;113;84;152m\\`\u001b[0m\u001b[38;2;103;79;169m'\u001b[0m\u001b[38;2;95;72;183m\"\u001b[0m\u001b[38;2;87;57;198m╙\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠\u001b[0m\u001b[38;2;80;46;209m╜\u001b[0m\u001b[38;2;94;70;185m^\u001b[0m\u001b[38;2;102;77;175m^\u001b[0m\u001b[38;2;112;81;162m\\`\u001b[0m\u001b[38;2;115;92;155m\\`\u001b[0m\n\u001b[38;2;128;128;128m           \u001b[0m\u001b[38;2;145;116;107m,\u001b[0m\u001b[38;2;199;82;45m╠\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒╠ \u001b[0m\u001b[38;2;70;28;227m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠ \u001b[0m\u001b[38;2;189;49;97må\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠\u001b[0m\u001b[38;2;155;92;114m,\u001b[0m\n\u001b[38;2;128;128;128m          \u001b[0m\u001b[38;2;175;98;73m╔\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒▒▒\u001b[0m\u001b[38;2;197;83;47m╩ \u001b[0m\u001b[38;2;98;76;179m[\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠\u001b[0m\u001b[38;2;81;48;207mH \u001b[0m\u001b[38;2;188;51;98m╚\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠╠\u001b[0m\u001b[38;2;183;57;100mH\u001b[0m\n\u001b[38;2;128;128;128m        \u001b[0m\u001b[38;2;146;116;106m,\u001b[0m\u001b[38;2;199;82;44m╠\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;196;84;48m╩\u001b[0m\u001b[38;2;168;102;81m^    \u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠    \u001b[0m\u001b[38;2;160;87;111m'\u001b[0m\u001b[38;2;187;52;98m╚\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠\u001b[0m\u001b[38;2;156;91;113m,\u001b[0m\n\u001b[38;2;128;128;128m        \u001b[0m\u001b[38;2;198;83;46m╩\u001b[0m\u001b[38;2;194;85;50m╩\u001b[0m\u001b[38;2;167;102;82m^       \u001b[0m\u001b[38;2;81;46;209m╚\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠       \u001b[0m\u001b[38;2;159;88;112m'\u001b[0m\u001b[38;2;186;53;98m╚\u001b[0m\u001b[38;2;197;40;93m╩\u001b[0m\n\u001b[38;2;128;128;128m                  \u001b[0m\u001b[38;2;110;97;158m'\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;94;69;186mH\u001b[0m\n\u001b[38;2;128;128;128m                   \u001b[0m\u001b[38;2;68;25;230m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\n\u001b[38;2;128;128;128m                   \u001b[0m\u001b[38;2;108;93;162m²\u001b[0m\u001b[38;2;99;79;176m^\u001b[0m`\n","import type { UsageMeta } from '@xyo-network/xl1-sdk'\nimport { isUsageMeta } from '@xyo-network/xl1-sdk'\nimport type { Options } from 'yargs'\nimport { globalRegistry } from 'zod'\n\nconst usageMetaToOptions = (meta: UsageMeta): Options => {\n return meta\n}\n\nexport const optionsFromGlobalZodRegistry = (): Record<string, Options> => {\n const opts: Record<string, Options> = {}\n for (const schema of Object.values(globalRegistry._map)) {\n if (isUsageMeta(schema)) {\n if (schema.hidden) continue // skip hidden options\n opts[schema.title] = usageMetaToOptions(schema)\n }\n }\n return opts\n}\n","import { config } from 'dotenv'\n\nimport { runCLI } from './runCLI.ts'\n\nexport const start = async () => {\n config({ quiet: true })\n await runCLI()\n}\n"],"mappings":"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","names":["createDeepMerge","tryParseConfig","ConfigZod","isZodError","resolveConfig","deepMerge","createDeepMerge","arrayStrategy","configMiddleware","argv","setConfiguration","configPath","config","parsedConfigFile","tryParseConfig","rootMnemonicFromFile","mnemonic","undefined","parsedConfigArgs","ConfigZod","safeParse","data","rootMnemonicFromArgs","parseResult","success","error","mergedConfig","validatedMergedConfigResult","resolvedConfig","resolveConfig","validatedConfigResult","rootMnemonic","finalConfig","console","log","JSON","stringify","process","exit","err","isZodError","message","Error","stack","cause","Base","ConsoleLogger","isDefined","LogLevel","SilentLogger","initLogger","config","logger","log","silent","SilentLogger","level","isDefined","logLevel","parsed","LogLevel","toLowerCase","ConsoleLogger","Base","defaultLogger","stdin","input","stdout","output","createInterface","isDefined","contextFromConfigWithoutLocator","formatWalletReport","initializeResolvedWalletReport","locatorsFromConfig","Orchestrator","ActorConfigZod","ConfigZod","yargs","hideBin","getApiActor","getMempoolActor","ApiConfigZod","MempoolConfigZod","ValidatorConfigZod","exists","initActorWallet","ValidatorActor","getValidatorActor","config","locator","account","initActorWallet","logger","context","singletons","caches","ValidatorActor","create","apiCommand","getConfiguration","getLocatorsFromConfig","command","deprecated","describe","handler","configuration","locators","orchestrator","actors","Promise","all","getApiActor","ApiConfigZod","parse","context","config","getMempoolActor","MempoolConfigZod","getValidatorActor","ValidatorConfigZod","actor","registerActor","start","BridgeConfigZod","exists","BridgeActor","initActorWallet","getBridgeActor","config","locator","account","initActorWallet","logger","context","singletons","caches","BridgeActor","create","runBridge","orchestrator","bridge","actors","filter","exists","actor","registerActor","start","bridgeCommand","getConfiguration","getLocatorsFromConfig","command","deprecated","describe","handler","configuration","locators","orchestrator","runBridge","BridgeConfigZod","parse","context","config","runMempool","MempoolConfigZod","mempoolCommand","getConfiguration","getLocatorsFromConfig","command","deprecated","describe","handler","configuration","locators","orchestrator","runMempool","MempoolConfigZod","parse","context","config","ProducerConfigZod","runProducer","producerCommand","getConfiguration","getLocatorsFromConfig","command","deprecated","describe","handler","configuration","locators","orchestrator","runProducer","ProducerConfigZod","parse","context","config","RewardRedemptionConfigZod","exists","initActorWallet","RewardRedemptionActor","getRewardRedemptionActor","config","locator","account","initActorWallet","logger","context","singletons","caches","RewardRedemptionActor","create","runRewardRedemptionApi","orchestrator","rewardRedemption","actors","filter","exists","actor","registerActor","start","rewardRedemptionCommand","getConfiguration","getLocatorsFromConfig","command","deprecated","describe","handler","configuration","locators","orchestrator","runRewardRedemptionApi","RewardRedemptionConfigZod","parse","context","config","getApiActor","getMempoolActor","ApiConfigZod","BridgeConfigZod","MempoolConfigZod","ProducerConfigZod","RewardRedemptionConfigZod","ValidatorConfigZod","runProducer","net","waitForHostPort","host","port","Promise","resolve","tryConnect","socket","net","Socket","setTimeout","once","destroy","connect","end","KNOWN_ACTORS","getActorsFromConfig","configuration","enabledActors","actors","filter","actor","enabled","map","name","length","undefined","getDefaultActors","startActor","locator","orchestrator","config","ApiConfigZod","parse","context","getApiActor","registerActor","start","waitForHostPort","host","port","BridgeConfigZod","getBridgeActor","MempoolConfigZod","getMempoolActor","ProducerConfigZod","runProducer","RewardRedemptionConfigZod","getRewardRedemptionActor","ValidatorConfigZod","getValidatorActor","Error","startCommand","getConfiguration","getLocatorsFromConfig","command","describe","builder","yargs","positional","type","array","choices","description","coerce","values","flatMap","v","split","option","string","handler","argv","requestedActors","locators","delay","withDeprecationWarning","module","deprecated","handler","argv","console","warn","delay","XL1LogoColorizedAscii","isUsageMeta","globalRegistry","usageMetaToOptions","meta","optionsFromGlobalZodRegistry","opts","schema","Object","values","globalRegistry","_map","isUsageMeta","hidden","title","configuration","version","isDefined","__VERSION__","getConfiguration","pauseForInsecureGenesisWalletIfNeeded","report","logger","insecureGenesisRewardAccounts","input","isTTY","output","warn","rl","createInterface","question","close","getLocatorsFromConfig","actors","actorConfigs","actorName","existingConfig","find","actor","name","push","actorConfig","ActorConfigZod","loose","parse","config","ConfigZod","initLogger","orchestrator","Orchestrator","create","walletReport","initializeResolvedWalletReport","info","formatWalletReport","context","contextFromConfigWithoutLocator","locators","locatorsFromConfig","process","on","log","stop","exit","err","error","runCLI","y","yargs","hideBin","argv","usage","XL1LogoColorizedAscii","parserConfiguration","env","scriptName","middleware","configMiddleware","options","optionsFromGlobalZodRegistry","wrap","terminalWidth","command","withDeprecationWarning","apiCommand","bridgeCommand","mempoolCommand","producerCommand","rewardRedemptionCommand","startCommand","type","description","alias","default","help","config","start","config","quiet","runCLI"]}
1
+ {"version":3,"sources":["../../src/configMiddleware.ts","../../src/initLogger.ts","../../src/runCLI.ts","../../src/commands/api/apiCommand.ts","../../src/commands/finalizer/runFinalizer.ts","../../src/commands/bridge/bridgeCommand.ts","../../src/commands/bridge/runBridge.ts","../../src/commands/mempool/mempoolCommand.ts","../../src/commands/producer/producerCommand.ts","../../src/commands/rewardRedemption/rewardRedemptionCommand.ts","../../src/commands/rewardRedemption/runRewardRedemptionApi.ts","../../src/commands/start/startCommand.ts","../../src/waitForHostPort.ts","../../src/commands/withDeprecationWarning.ts","../../src/images.ts","../../src/optionsFromGlobalZodRegistry.ts","../../src/start.ts"],"sourcesContent":["import { createDeepMerge, isDefined } from '@xylabs/sdk-js'\nimport {\n ActorMnemonicNotAllowedError,\n assertNoActorMnemonics,\n ConfigFileNotFoundError,\n tryParseConfig,\n} from '@xyo-network/chain-orchestration'\nimport type { Config } from '@xyo-network/xl1-sdk'\nimport {\n ConfigZod, isZodError, resolveConfig,\n} from '@xyo-network/xl1-sdk'\n\nconst deepMerge = createDeepMerge({ arrayStrategy: 'concat' })\ntype ConfigWithMnemonic = Config & { mnemonic?: string }\n\n/**\n * Yargs `.env()` with `dot-notation` turns `XL1_ACTORS__0__NAME=foo` into\n * `{ actors: { '0': { name: 'foo' } } }` — an object keyed by string indices\n * rather than an array. Normalize that back into an array so ConfigZod's\n * `actors` array schema accepts it.\n */\nfunction coerceActorsArray(argv: Record<string, unknown>): Record<string, unknown> {\n const actors = argv.actors\n if (actors === undefined || Array.isArray(actors)) return argv\n if (typeof actors !== 'object' || actors === null) return argv\n const entries = Object.entries(actors as Record<string, unknown>)\n const numericEntries = entries\n .map(([key, value]) => [Number(key), value] as const)\n .filter(([key]) => Number.isInteger(key) && key >= 0)\n if (numericEntries.length !== entries.length) return argv\n const asArray: unknown[] = []\n for (const [key, value] of numericEntries) asArray[key] = value\n return { ...argv, actors: asArray }\n}\n\nfunction safeParseOrThrow(input: unknown): Config {\n const result = ConfigZod.safeParse(input)\n if (!result.success) throw result.error\n return result.data as Config\n}\n\nasync function buildFinalConfig(argv: Record<string, unknown>): Promise<ConfigWithMnemonic> {\n // Parse the various config sources\n const configPath = argv.config as string | undefined\n const parsedConfigFile = await tryParseConfig({ configPath }) as ConfigWithMnemonic // Config file\n const rootMnemonicFromFile = typeof parsedConfigFile.mnemonic === 'string' ? parsedConfigFile.mnemonic : undefined\n const normalizedArgv = coerceActorsArray(argv)\n const parsedConfigArgs = ConfigZod.safeParse(normalizedArgv).data ?? {} // Command-line arguments & ENV VARs\n const rootMnemonicFromArgs = typeof normalizedArgv.mnemonic === 'string' ? normalizedArgv.mnemonic : undefined\n // Deep merge with precedence\n // TODO: Would like precedence to be defaults < file < ENV < CLI Args\n // but there is currently no way to determine which are defaults vs\n // user-supplied CLI Args since we set the CLI args to the defaults\n // and receive a flattened object. We might need to manually invoke\n // the parser without the defaults to achieve this.\n const mergedConfig = safeParseOrThrow(deepMerge(parsedConfigFile, parsedConfigArgs))\n const validated = safeParseOrThrow(resolveConfig(safeParseOrThrow(mergedConfig)))\n const rootMnemonic = rootMnemonicFromArgs ?? rootMnemonicFromFile\n return isDefined(rootMnemonic) ? { ...validated, mnemonic: rootMnemonic } : validated\n}\n\nexport async function configMiddleware(argv: Record<string, unknown>, setConfiguration: (config: Config) => void): Promise<void> {\n try {\n const finalConfig = await buildFinalConfig(argv)\n // Hard-fail if any actor was configured with its own mnemonic. Mnemonics\n // must live at the root; actors pick their wallet via accountPath.\n assertNoActorMnemonics(finalConfig)\n setConfiguration(finalConfig as Config)\n\n // Check if user wants to dump config and exit\n if (argv['dump-config']) {\n console.log(JSON.stringify(finalConfig, null, 2))\n // eslint-disable-next-line unicorn/no-process-exit\n process.exit(0)\n }\n } catch (err) {\n if (err instanceof ConfigFileNotFoundError) {\n console.error(`${err.message}. Check the path passed to --config/-c and try again.`)\n } else if (err instanceof ActorMnemonicNotAllowedError) {\n console.error(err.message)\n } else if (isZodError(err)) {\n console.error(`Zod error: ${err.message}`)\n } else {\n console.error(`Error parsing configuration: ${err}`)\n }\n if (!(err instanceof ConfigFileNotFoundError) && !(err instanceof ActorMnemonicNotAllowedError)) {\n console.error(`Stack: ${err instanceof Error ? err.stack : 'N/A'}`)\n }\n throw new Error('Invalid configuration', { cause: err })\n }\n}\n","import type { Logger, LogLevelValue } from '@xylabs/sdk-js'\nimport {\n Base,\n ConsoleLogger, isDefined,\n LogLevel, SilentLogger,\n} from '@xylabs/sdk-js'\nimport type { BaseConfig } from '@xyo-network/xl1-sdk'\n\nexport const initLogger = (config: BaseConfig): Logger => {\n let logger: Logger\n if (config.log.silent) {\n logger = new SilentLogger()\n } else {\n let level: LogLevelValue | undefined\n if (isDefined(config.log.logLevel)) {\n const parsed = LogLevel[config.log.logLevel.toLowerCase() as keyof typeof LogLevel]\n if (isDefined(parsed)) level = parsed\n }\n logger = new ConsoleLogger(level)\n }\n Base.defaultLogger = logger\n return logger\n}\n","import { stdin as input, stdout as output } from 'node:process'\nimport { createInterface } from 'node:readline/promises'\n\nimport { isDefined } from '@xylabs/sdk-js'\nimport {\n contextFromConfigWithoutLocator, detectDerivationPathCollisions, formatWalletReport, initializeResolvedWalletReport,\n locatorsFromConfig, Orchestrator,\n} from '@xyo-network/chain-orchestration'\nimport type { ActorConfig, Config } from '@xyo-network/xl1-sdk'\nimport { ActorConfigZod, ConfigZod } from '@xyo-network/xl1-sdk'\nimport type { Argv } from 'yargs'\nimport yargs from 'yargs'\nimport { hideBin } from 'yargs/helpers'\n\nimport {\n apiCommand,\n bridgeCommand,\n mempoolCommand,\n producerCommand,\n rewardRedemptionCommand,\n startCommand,\n withDeprecationWarning,\n} from './commands/index.ts'\nimport { configMiddleware } from './configMiddleware.ts'\nimport { XL1LogoColorizedAscii } from './images.ts'\nimport { initLogger } from './initLogger.ts'\nimport { optionsFromGlobalZodRegistry } from './optionsFromGlobalZodRegistry.ts'\n\n/** Version string injected by Rollup at build time. */\ndeclare const __VERSION__: string\n\n/**\n * The configuration that will be used throughout the CLI.\n * This is materialized after parsing the command-line arguments,\n * environment variables, and defaults.\n */\nlet configuration: Config\n\nconst version = isDefined(__VERSION__) ? __VERSION__ : 'unknown'\n\nfunction getConfiguration(): Config {\n return configuration\n}\n\nasync function promptForInsecureGenesisConfirmation(logger: ReturnType<typeof initLogger>) {\n if (!input.isTTY || !output.isTTY) {\n logger.warn('Insecure genesis reward wallet is active. Interactive confirmation skipped because this session is not a TTY.')\n return\n }\n const rl = createInterface({ input, output })\n try {\n await rl.question('Insecure genesis reward wallet is active. Hit RETURN to continue.')\n } finally {\n rl.close()\n }\n}\n\nasync function getLocatorsFromConfig(actors: string[], configuration: Config) {\n const actorConfigs: ActorConfig[] = []\n for (const actorName of actors) {\n const existingConfig = configuration.actors.find(actor => actor.name === actorName)\n if (existingConfig) {\n actorConfigs.push(existingConfig)\n } else {\n const actorConfig = ActorConfigZod.loose().parse({ name: actorName })\n actorConfigs.push(actorConfig)\n }\n }\n\n const config = ConfigZod.parse({ ...configuration, actors: actorConfigs })\n\n const logger = initLogger(configuration)\n const orchestrator = await Orchestrator.create({ logger })\n const collision = detectDerivationPathCollisions(actors, configuration)\n if (collision) throw collision\n const walletReport = await initializeResolvedWalletReport(actors, configuration)\n logger.info(formatWalletReport(walletReport))\n const context = await contextFromConfigWithoutLocator(config, logger, 'xl1-cli', version)\n const locators = await locatorsFromConfig(context, config, async () => await promptForInsecureGenesisConfirmation(logger))\n // Handle cancellation (Ctrl+C)\n process.on('SIGINT', () => {\n void (async () => {\n try {\n logger.log('\\nSIGINT received. Attempting graceful shutdown...')\n await orchestrator?.stop()\n logger.log('Orchestrator stopped, exiting now.')\n process.exit(0)\n } catch (err) {\n logger.error('Error stopping orchestrator:', err)\n process.exit(1)\n }\n })()\n })\n return { locators, orchestrator }\n}\n\n// Main entry point\nexport async function runCLI() {\n // Parse command-line arguments using Yargs\n const y = yargs(hideBin(process.argv)) as Argv<Config>\n const argv = y\n .usage(`\n🚀 XL1 Node CLI (${version})\n${XL1LogoColorizedAscii}\nRun various components of the XL1 ecosystem.\n\nUsage:\n$0 <command> [options]`)\n .parserConfiguration({\n 'dot-notation': true, // foo.bar → { foo: { bar } }\n 'parse-numbers': false, // Don't auto-parse numbers to allow strings like \"0x1\"\n 'populate--': true, // Populate -- with all options so we can detected user-supplied vs defaults\n })\n .env('XL1')\n .scriptName('xl1')\n .middleware(async (argv) => {\n await configMiddleware(argv, (config) => {\n configuration = config\n })\n })\n .options(optionsFromGlobalZodRegistry())\n .wrap(y.terminalWidth())\n .command(withDeprecationWarning(apiCommand(getConfiguration, getLocatorsFromConfig)))\n .command(withDeprecationWarning(bridgeCommand(getConfiguration, getLocatorsFromConfig)))\n .command(withDeprecationWarning(mempoolCommand(getConfiguration, getLocatorsFromConfig)))\n .command(withDeprecationWarning(producerCommand(getConfiguration, getLocatorsFromConfig)))\n .command(withDeprecationWarning(rewardRedemptionCommand(getConfiguration, getLocatorsFromConfig)))\n .command(startCommand(getConfiguration, getLocatorsFromConfig))\n .options({\n 'config': {\n type: 'string',\n description: 'Path to a config file to use instead of the default search.',\n alias: 'c',\n },\n 'mnemonic': {\n type: 'string',\n description: 'Shared root mnemonic used by actors that do not define their own mnemonic.',\n },\n 'dump-config': {\n type: 'boolean',\n description: 'Just process the configuration and print the resolved config to stdout, then exit.',\n default: false,\n },\n })\n .help()\n .alias('help', 'h')\n .version(version)\n .argv\n\n await argv\n}\n","import { getApiActor } from '@xyo-network/chain-api'\nimport { getMempoolActor } from '@xyo-network/chain-mempool'\nimport {\n ApiConfigZod, FinalizerConfigZod,\n MempoolConfigZod,\n} from '@xyo-network/chain-orchestration'\nimport type { Config } from '@xyo-network/xl1-sdk'\nimport type { CommandModule } from 'yargs'\n\nimport { getFinalizerActor } from '../finalizer/index.ts'\nimport type { GetLocatorsFromConfig } from '../types.ts'\n\nexport function apiCommand(getConfiguration: () => Config, getLocatorsFromConfig: GetLocatorsFromConfig): CommandModule {\n return {\n command: 'api',\n deprecated: 'Use \"start api\" instead',\n describe: 'Run a XL1 API Node',\n handler: async () => {\n const configuration = getConfiguration()\n const { locators, orchestrator } = await getLocatorsFromConfig(['api', 'mempool', 'finalizer'], configuration)\n const actors = await Promise.all([getApiActor(\n ApiConfigZod.parse(locators['api'].context.config),\n locators['api'],\n ), getMempoolActor(\n MempoolConfigZod.parse(locators['mempool'].context.config),\n locators['mempool'],\n ), getFinalizerActor(\n FinalizerConfigZod.parse(locators['finalizer'].context.config),\n locators['finalizer'],\n )])\n\n for (const actor of actors) {\n await orchestrator.registerActor(actor)\n }\n\n await orchestrator.start()\n },\n }\n}\n","import { exists } from '@xylabs/sdk-js'\nimport type { FinalizerConfig, OrchestratorInstance } from '@xyo-network/chain-orchestration'\nimport { FinalizerActor, initActorWallet } from '@xyo-network/chain-orchestration'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\n\nexport const getFinalizerActor = async (\n config: FinalizerConfig,\n locator: ProviderFactoryLocatorInstance,\n) => {\n const account = await initActorWallet({\n config, logger: locator.context.logger, singletons: {}, caches: {},\n })\n // Create actors\n return await FinalizerActor.create({\n account, config, locator,\n })\n}\n\nexport const runFinalizer = async (\n config: FinalizerConfig,\n orchestrator: OrchestratorInstance,\n locator: ProviderFactoryLocatorInstance,\n) => {\n const finalizer = await getFinalizerActor(config, locator)\n const actors = [finalizer].filter(exists)\n\n for (const actor of actors) {\n // Register the actor with the orchestrator\n await orchestrator.registerActor(actor)\n }\n // Start the orchestrator => automatically activates the actor\n await orchestrator.start()\n}\n","import { BridgeConfigZod } from '@xyo-network/chain-orchestration'\nimport type { Config } from '@xyo-network/xl1-sdk'\nimport type { CommandModule } from 'yargs'\n\nimport type { GetLocatorsFromConfig } from '../types.ts'\nimport { runBridge } from './runBridge.ts'\n\nexport function bridgeCommand(getConfiguration: () => Config, getLocatorsFromConfig: GetLocatorsFromConfig): CommandModule {\n return {\n command: 'bridge',\n deprecated: 'Use \"start bridge\" instead',\n describe: 'Run a XL1 Bridge Node',\n handler: async () => {\n const configuration = getConfiguration()\n const { locators, orchestrator } = await getLocatorsFromConfig(['bridge'], configuration)\n await runBridge(BridgeConfigZod.parse(locators['bridge'].context.config), orchestrator, locators['bridge'])\n },\n }\n}\n","import { exists } from '@xylabs/sdk-js'\nimport { BridgeActor } from '@xyo-network/chain-bridge'\nimport type { BridgeConfig, OrchestratorInstance } from '@xyo-network/chain-orchestration'\nimport { initActorWallet } from '@xyo-network/chain-orchestration'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\n\nexport const getBridgeActor = async (\n config: BridgeConfig,\n locator: ProviderFactoryLocatorInstance,\n) => {\n const account = await initActorWallet({\n config, logger: locator.context.logger, singletons: {}, caches: {},\n })\n // Create actors\n return await BridgeActor.create({\n account, config, locator,\n })\n}\n\nexport const runBridge = async (\n config: BridgeConfig,\n orchestrator: OrchestratorInstance,\n locator: ProviderFactoryLocatorInstance,\n) => {\n const bridge = await getBridgeActor(config, locator)\n const actors = [bridge].filter(exists)\n\n for (const actor of actors) {\n // Register the actor with the orchestrator\n await orchestrator.registerActor(actor)\n }\n // Start the orchestrator => automatically activates the actor\n await orchestrator.start()\n}\n","import { runMempool } from '@xyo-network/chain-mempool'\nimport { MempoolConfigZod } from '@xyo-network/chain-orchestration'\nimport type { Config } from '@xyo-network/xl1-sdk'\nimport type { CommandModule } from 'yargs'\n\nimport type { GetLocatorsFromConfig } from '../types.ts'\n\nexport function mempoolCommand(getConfiguration: () => Config, getLocatorsFromConfig: GetLocatorsFromConfig): CommandModule {\n return {\n command: 'mempool',\n deprecated: 'Use \"start mempool\" instead',\n describe: 'Run a XL1 Mempool Node',\n handler: async () => {\n const configuration = getConfiguration()\n const { locators, orchestrator } = await getLocatorsFromConfig(['mempool'], configuration)\n await runMempool(MempoolConfigZod.parse(locators['mempool'].context.config), orchestrator, locators['mempool'])\n },\n }\n}\n","import { ProducerConfigZod } from '@xyo-network/chain-orchestration'\nimport { runProducer } from '@xyo-network/chain-producer'\nimport type { Config } from '@xyo-network/xl1-sdk'\nimport type { CommandModule } from 'yargs'\n\nimport type { GetLocatorsFromConfig } from '../types.ts'\n\nexport function producerCommand(getConfiguration: () => Config, getLocatorsFromConfig: GetLocatorsFromConfig): CommandModule {\n return {\n command: 'producer',\n deprecated: 'Use \"start producer\" instead',\n describe: 'Run a XL1 Producer Node',\n handler: async () => {\n const configuration = getConfiguration()\n const { locators, orchestrator } = await getLocatorsFromConfig(['producer'], configuration)\n await runProducer(ProducerConfigZod.parse(locators['producer'].context.config), orchestrator, locators['producer'])\n },\n }\n}\n","import { RewardRedemptionConfigZod } from '@xyo-network/chain-orchestration'\nimport type { Config } from '@xyo-network/xl1-sdk'\nimport type { CommandModule } from 'yargs'\n\nimport type { GetLocatorsFromConfig } from '../types.ts'\nimport { runRewardRedemptionApi } from './runRewardRedemptionApi.ts'\n\nexport function rewardRedemptionCommand(getConfiguration: () => Config, getLocatorsFromConfig: GetLocatorsFromConfig): CommandModule {\n return {\n command: 'reward-redemption-api',\n deprecated: 'Use \"start rewardRedemption\" instead',\n describe: 'Run a XL1 Rewards Redemption API Node',\n handler: async () => {\n const configuration = getConfiguration()\n const { locators, orchestrator } = await getLocatorsFromConfig(['rewardRedemption'], configuration)\n await runRewardRedemptionApi(RewardRedemptionConfigZod.parse(locators['rewardRedemption'].context.config), orchestrator, locators['rewardRedemption'])\n },\n }\n}\n","import { exists } from '@xylabs/sdk-js'\nimport type {\n OrchestratorInstance,\n RewardRedemptionConfig,\n} from '@xyo-network/chain-orchestration'\nimport { initActorWallet } from '@xyo-network/chain-orchestration'\nimport { RewardRedemptionActor } from '@xyo-network/chain-reward-redemption'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\n\nexport async function getRewardRedemptionActor(\n config: RewardRedemptionConfig,\n locator: ProviderFactoryLocatorInstance,\n) {\n const account = await initActorWallet({\n config, logger: locator.context.logger, singletons: {}, caches: {},\n })\n return await RewardRedemptionActor.create({\n account, config, locator,\n })\n}\n\nexport async function runRewardRedemptionApi(\n config: RewardRedemptionConfig,\n orchestrator: OrchestratorInstance,\n locator: ProviderFactoryLocatorInstance,\n) {\n const rewardRedemption = await getRewardRedemptionActor(config, locator)\n const actors = [rewardRedemption].filter(exists)\n\n for (const actor of actors) {\n // Register the actor with the orchestrator\n await orchestrator.registerActor(actor)\n }\n // Start the orchestrator => automatically activates the actor\n await orchestrator.start()\n}\n","import { getApiActor } from '@xyo-network/chain-api'\nimport { getMempoolActor } from '@xyo-network/chain-mempool'\nimport type { OrchestratorInstance } from '@xyo-network/chain-orchestration'\nimport {\n ApiConfigZod,\n BridgeConfigZod,\n FinalizerConfigZod,\n MempoolConfigZod,\n ProducerConfigZod,\n RewardRedemptionConfigZod,\n} from '@xyo-network/chain-orchestration'\nimport { runProducer } from '@xyo-network/chain-producer'\nimport type { Config, ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\nimport type {\n ArgumentsCamelCase, Argv, CommandModule,\n} from 'yargs'\n\nimport { waitForHostPort } from '../../waitForHostPort.ts'\nimport { getBridgeActor } from '../bridge/index.ts'\nimport { getFinalizerActor } from '../finalizer/index.ts'\nimport { getRewardRedemptionActor } from '../rewardRedemption/index.ts'\nimport type { GetLocatorsFromConfig } from '../types.ts'\n\ninterface StartArgs {\n actors?: string[]\n}\n\nconst KNOWN_ACTORS = ['api', 'bridge', 'finalizer', 'mempool', 'producer', 'rewardRedemption'] as const\n\nfunction getActorsFromConfig(configuration: Config): string[] | undefined {\n const enabledActors = configuration.actors\n .filter(actor => actor.enabled !== false)\n .map(actor => actor.name)\n return enabledActors.length > 0 ? enabledActors : undefined\n}\n\nfunction getDefaultActors(): string[] {\n return ['api', 'producer', 'finalizer']\n}\n\nasync function startActor(\n name: string,\n locator: ProviderFactoryLocatorInstance,\n orchestrator: OrchestratorInstance,\n): Promise<void> {\n switch (name) {\n case 'api': {\n const config = ApiConfigZod.parse(locator.context.config)\n const actor = await getApiActor(config, locator)\n await orchestrator.registerActor(actor)\n await orchestrator.start()\n await waitForHostPort(config.host, config.port)\n break\n }\n case 'bridge': {\n const config = BridgeConfigZod.parse(locator.context.config)\n const actor = await getBridgeActor(config, locator)\n await orchestrator.registerActor(actor)\n await orchestrator.start()\n break\n }\n case 'mempool': {\n const config = MempoolConfigZod.parse(locator.context.config)\n const actor = await getMempoolActor(config, locator)\n await orchestrator.registerActor(actor)\n await orchestrator.start()\n await waitForHostPort(config.host, config.port)\n break\n }\n case 'producer': {\n const config = ProducerConfigZod.parse(locator.context.config)\n await runProducer(config, orchestrator, locator)\n break\n }\n case 'rewardRedemption': {\n const config = RewardRedemptionConfigZod.parse(locator.context.config)\n const actor = await getRewardRedemptionActor(config, locator)\n await orchestrator.registerActor(actor)\n await orchestrator.start()\n break\n }\n case 'finalizer': {\n const config = FinalizerConfigZod.parse(locator.context.config)\n const actor = await getFinalizerActor(config, locator)\n await orchestrator.registerActor(actor)\n await orchestrator.start()\n break\n }\n default: {\n throw new Error(`Unknown actor: ${name}`)\n }\n }\n}\n\nexport function startCommand(getConfiguration: () => Config, getLocatorsFromConfig: GetLocatorsFromConfig): CommandModule {\n return {\n command: ['start [actors..]', '$0'],\n describe: 'Run a full XL1 Node',\n builder: (yargs: Argv) => {\n return yargs\n .positional('actors', {\n type: 'string',\n array: true,\n choices: KNOWN_ACTORS,\n description: 'Actors to start (e.g. xl1 start api producer or xl1 start api,producer)',\n coerce: (values: string[]) => values.flatMap(v => v.split(',')),\n })\n .option('actors', {\n type: 'array',\n string: true,\n choices: KNOWN_ACTORS,\n description: 'List of actors to start (e.g. --actors api producer finalizer). Defaults to api, producer, and finalizer.',\n })\n },\n handler: async (argv: ArgumentsCamelCase<StartArgs>) => {\n const configuration = getConfiguration()\n const requestedActors = argv.actors !== undefined && argv.actors.length > 0\n ? argv.actors\n : getActorsFromConfig(configuration) ?? getDefaultActors()\n const { locators, orchestrator } = await getLocatorsFromConfig(requestedActors, configuration)\n\n for (const name of requestedActors) {\n await startActor(name, locators[name], orchestrator)\n }\n },\n }\n}\n","import net from 'node:net'\n\nexport const waitForHostPort = (host: string, port: number): Promise<void> => {\n return new Promise((resolve) => {\n const tryConnect = () => {\n const socket = new net.Socket()\n\n socket\n .setTimeout(1000)\n .once('error', () => {\n socket.destroy()\n setTimeout(tryConnect, 500) // retry after 500ms\n })\n .once('timeout', () => {\n socket.destroy()\n setTimeout(tryConnect, 500)\n })\n .connect(port, host, () => {\n socket.end()\n resolve()\n })\n }\n\n tryConnect()\n })\n}\n","import { delay } from '@xylabs/sdk-js'\nimport type { CommandModule } from 'yargs'\n\nexport function withDeprecationWarning(module: CommandModule): CommandModule {\n const { deprecated, handler } = module\n if (typeof deprecated === 'string') {\n return {\n ...module,\n handler: async (argv) => {\n console.warn(`[deprecated] ${deprecated}`)\n await delay(3000)\n return handler(argv)\n },\n }\n }\n return module\n}\n","/* eslint-disable no-irregular-whitespace, @stylistic/max-len */\nexport const XL1LogoColorizedAscii = `\u001b[38;2;128;128;128m                    \u001b[0m\u001b[38;2;118;111;144m_\u001b[0m\n\u001b[38;2;128;128;128m                   \u001b[0m\u001b[38;2;72;32;223m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\n\u001b[38;2;128;128;128m                   ╠╠\u001b[0m\u001b[38;2;103;85;170m_\u001b[0m\n\u001b[38;2;128;128;128m        \u001b[0m\u001b[38;2;79;121;152m╦\u001b[0m\u001b[38;2;82;121;151m╦\u001b[0m\u001b[38;2;112;125;136m_       \u001b[0m\u001b[38;2;88;59;196m[\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;73;34;221m▒       \u001b[0m\u001b[38;2;121;121;127m_\u001b[0m\u001b[38;2;100;101;128m╔\u001b[0m\u001b[38;2;93;94;127m╦\u001b[0m\n\u001b[38;2;128;128;128m        \u001b[0m\u001b[38;2;82;121;151m²\u001b[0m\u001b[38;2;44;116;170m╠\u001b[0m\u001b[38;2;44;116;171m▒\u001b[0m\u001b[38;2;51;117;167mD\u001b[0m\u001b[38;2;80;121;152m╦\u001b[0m\u001b[38;2;111;125;136m_    \u001b[0m\u001b[38;2;67;23;232m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠    \u001b[0m\u001b[38;2;120;121;128m_\u001b[0m\u001b[38;2;100;101;127m╔\u001b[0m\u001b[38;2;79;81;127mR\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;88;90;127m╙\u001b[0m\n\u001b[38;2;128;128;128m          \u001b[0m\u001b[38;2;55;117;165m╚\u001b[0m\u001b[38;2;44;116;171m▒\u001b[0m\u001b[38;2;44;116;171m▒▒\u001b[0m\u001b[38;2;50;116;167mD\u001b[0m\u001b[38;2;80;121;152m╦ \u001b[0m\u001b[38;2;106;90;165mj\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠\u001b[0m\u001b[38;2;89;61;194mH \u001b[0m\u001b[38;2;99;100;127m╔\u001b[0m\u001b[38;2;79;80;127mD\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;71;73;128m▒▒╠\u001b[0m\n\u001b[38;2;128;128;128m           \u001b[0m\u001b[38;2;83;121;150m²\u001b[0m\u001b[38;2;44;116;170m▒\u001b[0m\u001b[38;2;44;116;171m▒▒▒ \u001b[0m\u001b[38;2;76;38;217m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠ \u001b[0m\u001b[38;2;74;76;128m╠\u001b[0m\u001b[38;2;71;73;128m▒▒▒\u001b[0m\u001b[38;2;89;90;128m╙\u001b[0m\n\u001b[38;2;128;128;128m             \u001b[0m\u001b[38;2;90;118;148m\\`\u001b[0m\u001b[38;2;89;107;153m_\u001b[0m\u001b[38;2;93;97;154m,\u001b[0m\u001b[38;2;105;89;166m╓\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠\u001b[0m\u001b[38;2;95;72;183m╓\u001b[0m\u001b[38;2;106;96;152m_\u001b[0m\u001b[38;2;100;94;143m\\`\u001b[0m\u001b[38;2;101;100;133m\\`\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;122;118;137m_\u001b[0m\u001b[38;2;113;102;153m,\u001b[0m\u001b[38;2;108;94;161m╓\u001b[0m\u001b[38;2;104;86;169m╓\u001b[0m\u001b[38;2;98;77;178m╔\u001b[0m\u001b[38;2;93;67;188m╗\u001b[0m\u001b[38;2;88;59;196mφ\u001b[0m\u001b[38;2;83;51;204m@\u001b[0m\u001b[38;2;78;42;213mD\u001b[0m\u001b[38;2;72;32;223m▒\u001b[0m\u001b[38;2;68;24;231m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠\u001b[0m\u001b[38;2;71;30;225m▒\u001b[0m\u001b[38;2;77;40;215m▒\u001b[0m\u001b[38;2;82;49;206mK\u001b[0m\u001b[38;2;87;57;198mφ\u001b[0m\u001b[38;2;91;65;190m╗\u001b[0m\u001b[38;2;97;75;180m╦\u001b[0m\u001b[38;2;103;84;171m╖\u001b[0m\u001b[38;2;107;92;163m²\u001b[0m\u001b[38;2;112;101;154m_\u001b[0m\u001b[38;2;119;112;143m_\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;106;91;164m\\`\u001b[0m\u001b[38;2;94;70;185m^\u001b[0m\u001b[38;2;89;62;193m╙\u001b[0m\u001b[38;2;85;54;201m╙\u001b[0m\u001b[38;2;80;45;210m╚\u001b[0m\u001b[38;2;74;35;220m╝\u001b[0m\u001b[38;2;69;26;229m╠\u001b[0m\u001b[38;2;66;22;233m╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠\u001b[0m\u001b[38;2;73;33;222m╝\u001b[0m\u001b[38;2;79;43;212m╩\u001b[0m\u001b[38;2;84;52;203m╜\u001b[0m\u001b[38;2;88;60;195m╙\u001b[0m\u001b[38;2;93;68;187m^\u001b[0m\u001b[38;2;100;80;175m\\`\u001b[0m\n\u001b[38;2;128;128;128m             \u001b[0m\u001b[38;2;113;84;152m\\`\u001b[0m\u001b[38;2;103;79;169m'\u001b[0m\u001b[38;2;95;72;183m\"\u001b[0m\u001b[38;2;87;57;198m╙\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠\u001b[0m\u001b[38;2;80;46;209m╜\u001b[0m\u001b[38;2;94;70;185m^\u001b[0m\u001b[38;2;102;77;175m^\u001b[0m\u001b[38;2;112;81;162m\\`\u001b[0m\u001b[38;2;115;92;155m\\`\u001b[0m\n\u001b[38;2;128;128;128m           \u001b[0m\u001b[38;2;145;116;107m,\u001b[0m\u001b[38;2;199;82;45m╠\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒╠ \u001b[0m\u001b[38;2;70;28;227m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠ \u001b[0m\u001b[38;2;189;49;97må\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠\u001b[0m\u001b[38;2;155;92;114m,\u001b[0m\n\u001b[38;2;128;128;128m          \u001b[0m\u001b[38;2;175;98;73m╔\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒▒▒\u001b[0m\u001b[38;2;197;83;47m╩ \u001b[0m\u001b[38;2;98;76;179m[\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠\u001b[0m\u001b[38;2;81;48;207mH \u001b[0m\u001b[38;2;188;51;98m╚\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠╠\u001b[0m\u001b[38;2;183;57;100mH\u001b[0m\n\u001b[38;2;128;128;128m        \u001b[0m\u001b[38;2;146;116;106m,\u001b[0m\u001b[38;2;199;82;44m╠\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;196;84;48m╩\u001b[0m\u001b[38;2;168;102;81m^    \u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠    \u001b[0m\u001b[38;2;160;87;111m'\u001b[0m\u001b[38;2;187;52;98m╚\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠\u001b[0m\u001b[38;2;156;91;113m,\u001b[0m\n\u001b[38;2;128;128;128m        \u001b[0m\u001b[38;2;198;83;46m╩\u001b[0m\u001b[38;2;194;85;50m╩\u001b[0m\u001b[38;2;167;102;82m^       \u001b[0m\u001b[38;2;81;46;209m╚\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠       \u001b[0m\u001b[38;2;159;88;112m'\u001b[0m\u001b[38;2;186;53;98m╚\u001b[0m\u001b[38;2;197;40;93m╩\u001b[0m\n\u001b[38;2;128;128;128m                  \u001b[0m\u001b[38;2;110;97;158m'\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;94;69;186mH\u001b[0m\n\u001b[38;2;128;128;128m                   \u001b[0m\u001b[38;2;68;25;230m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\n\u001b[38;2;128;128;128m                   \u001b[0m\u001b[38;2;108;93;162m²\u001b[0m\u001b[38;2;99;79;176m^\u001b[0m`\n","import type { UsageMeta } from '@xyo-network/xl1-sdk'\nimport { isUsageMeta } from '@xyo-network/xl1-sdk'\nimport type { Options } from 'yargs'\nimport { globalRegistry } from 'zod'\n\nconst usageMetaToOptions = (meta: UsageMeta): Options => {\n return meta\n}\n\nexport const optionsFromGlobalZodRegistry = (): Record<string, Options> => {\n const opts: Record<string, Options> = {}\n for (const schema of Object.values(globalRegistry._map)) {\n if (isUsageMeta(schema)) {\n if (schema.hidden) continue // skip hidden options\n opts[schema.title] = usageMetaToOptions(schema)\n }\n }\n return opts\n}\n","import { config } from 'dotenv'\n\nimport { runCLI } from './runCLI.ts'\n\nexport const start = async () => {\n config({ quiet: true })\n await runCLI()\n}\n"],"mappings":"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","names":["createDeepMerge","isDefined","ActorMnemonicNotAllowedError","assertNoActorMnemonics","ConfigFileNotFoundError","tryParseConfig","ConfigZod","isZodError","resolveConfig","deepMerge","createDeepMerge","arrayStrategy","coerceActorsArray","argv","actors","undefined","Array","isArray","entries","Object","numericEntries","map","key","value","Number","filter","isInteger","length","asArray","safeParseOrThrow","input","result","ConfigZod","safeParse","success","error","data","buildFinalConfig","configPath","config","parsedConfigFile","tryParseConfig","rootMnemonicFromFile","mnemonic","normalizedArgv","parsedConfigArgs","rootMnemonicFromArgs","mergedConfig","validated","resolveConfig","rootMnemonic","isDefined","configMiddleware","setConfiguration","finalConfig","assertNoActorMnemonics","console","log","JSON","stringify","process","exit","err","ConfigFileNotFoundError","message","ActorMnemonicNotAllowedError","isZodError","Error","stack","cause","Base","ConsoleLogger","isDefined","LogLevel","SilentLogger","initLogger","config","logger","log","silent","SilentLogger","level","isDefined","logLevel","parsed","LogLevel","toLowerCase","ConsoleLogger","Base","defaultLogger","stdin","input","stdout","output","createInterface","isDefined","contextFromConfigWithoutLocator","detectDerivationPathCollisions","formatWalletReport","initializeResolvedWalletReport","locatorsFromConfig","Orchestrator","ActorConfigZod","ConfigZod","yargs","hideBin","getApiActor","getMempoolActor","ApiConfigZod","FinalizerConfigZod","MempoolConfigZod","exists","FinalizerActor","initActorWallet","getFinalizerActor","config","locator","account","initActorWallet","logger","context","singletons","caches","FinalizerActor","create","apiCommand","getConfiguration","getLocatorsFromConfig","command","deprecated","describe","handler","configuration","locators","orchestrator","actors","Promise","all","getApiActor","ApiConfigZod","parse","context","config","getMempoolActor","MempoolConfigZod","getFinalizerActor","FinalizerConfigZod","actor","registerActor","start","BridgeConfigZod","exists","BridgeActor","initActorWallet","getBridgeActor","config","locator","account","initActorWallet","logger","context","singletons","caches","BridgeActor","create","runBridge","orchestrator","bridge","actors","filter","exists","actor","registerActor","start","bridgeCommand","getConfiguration","getLocatorsFromConfig","command","deprecated","describe","handler","configuration","locators","orchestrator","runBridge","BridgeConfigZod","parse","context","config","runMempool","MempoolConfigZod","mempoolCommand","getConfiguration","getLocatorsFromConfig","command","deprecated","describe","handler","configuration","locators","orchestrator","runMempool","MempoolConfigZod","parse","context","config","ProducerConfigZod","runProducer","producerCommand","getConfiguration","getLocatorsFromConfig","command","deprecated","describe","handler","configuration","locators","orchestrator","runProducer","ProducerConfigZod","parse","context","config","RewardRedemptionConfigZod","exists","initActorWallet","RewardRedemptionActor","getRewardRedemptionActor","config","locator","account","initActorWallet","logger","context","singletons","caches","RewardRedemptionActor","create","runRewardRedemptionApi","orchestrator","rewardRedemption","actors","filter","exists","actor","registerActor","start","rewardRedemptionCommand","getConfiguration","getLocatorsFromConfig","command","deprecated","describe","handler","configuration","locators","orchestrator","runRewardRedemptionApi","RewardRedemptionConfigZod","parse","context","config","getApiActor","getMempoolActor","ApiConfigZod","BridgeConfigZod","FinalizerConfigZod","MempoolConfigZod","ProducerConfigZod","RewardRedemptionConfigZod","runProducer","net","waitForHostPort","host","port","Promise","resolve","tryConnect","socket","net","Socket","setTimeout","once","destroy","connect","end","KNOWN_ACTORS","getActorsFromConfig","configuration","enabledActors","actors","filter","actor","enabled","map","name","length","undefined","getDefaultActors","startActor","locator","orchestrator","config","ApiConfigZod","parse","context","getApiActor","registerActor","start","waitForHostPort","host","port","BridgeConfigZod","getBridgeActor","MempoolConfigZod","getMempoolActor","ProducerConfigZod","runProducer","RewardRedemptionConfigZod","getRewardRedemptionActor","FinalizerConfigZod","getFinalizerActor","Error","startCommand","getConfiguration","getLocatorsFromConfig","command","describe","builder","yargs","positional","type","array","choices","description","coerce","values","flatMap","v","split","option","string","handler","argv","requestedActors","locators","delay","withDeprecationWarning","module","deprecated","handler","argv","console","warn","delay","XL1LogoColorizedAscii","isUsageMeta","globalRegistry","usageMetaToOptions","meta","optionsFromGlobalZodRegistry","opts","schema","Object","values","globalRegistry","_map","isUsageMeta","hidden","title","configuration","version","isDefined","__VERSION__","getConfiguration","promptForInsecureGenesisConfirmation","logger","input","isTTY","output","warn","rl","createInterface","question","close","getLocatorsFromConfig","actors","actorConfigs","actorName","existingConfig","find","actor","name","push","actorConfig","ActorConfigZod","loose","parse","config","ConfigZod","initLogger","orchestrator","Orchestrator","create","collision","detectDerivationPathCollisions","walletReport","initializeResolvedWalletReport","info","formatWalletReport","context","contextFromConfigWithoutLocator","locators","locatorsFromConfig","process","on","log","stop","exit","err","error","runCLI","y","yargs","hideBin","argv","usage","XL1LogoColorizedAscii","parserConfiguration","env","scriptName","middleware","configMiddleware","options","optionsFromGlobalZodRegistry","wrap","terminalWidth","command","withDeprecationWarning","apiCommand","bridgeCommand","mempoolCommand","producerCommand","rewardRedemptionCommand","startCommand","type","description","alias","default","help","config","start","config","quiet","runCLI"]}