@xyo-network/xl1-cli-lib 1.20.17 → 1.20.19

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":"configMiddleware.d.ts","sourceRoot":"","sources":["../../src/configMiddleware.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAOlD,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,CA6C/H"}
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"}
@@ -14,7 +14,9 @@ async function configMiddleware(argv, setConfiguration) {
14
14
  const parsedConfigFile = await tryParseConfig({
15
15
  configPath
16
16
  });
17
+ const rootMnemonicFromFile = typeof parsedConfigFile.mnemonic === "string" ? parsedConfigFile.mnemonic : void 0;
17
18
  const parsedConfigArgs = ConfigZod.safeParse(argv).data ?? {};
19
+ const rootMnemonicFromArgs = typeof argv.mnemonic === "string" ? argv.mnemonic : void 0;
18
20
  const parseResult = ConfigZod.safeParse(deepMerge(parsedConfigFile, parsedConfigArgs));
19
21
  if (!parseResult.success) {
20
22
  throw parseResult.error;
@@ -29,9 +31,14 @@ async function configMiddleware(argv, setConfiguration) {
29
31
  if (!validatedConfigResult.success) {
30
32
  throw validatedConfigResult.error;
31
33
  }
32
- setConfiguration(validatedConfigResult.data);
34
+ const rootMnemonic = rootMnemonicFromArgs ?? rootMnemonicFromFile;
35
+ const finalConfig = rootMnemonic ? {
36
+ ...validatedConfigResult.data,
37
+ mnemonic: rootMnemonic
38
+ } : validatedConfigResult.data;
39
+ setConfiguration(finalConfig);
33
40
  if (argv["dump-config"]) {
34
- console.log(JSON.stringify(validatedConfigResult.data, null, 2));
41
+ console.log(JSON.stringify(finalConfig, null, 2));
35
42
  process.exit(0);
36
43
  }
37
44
  } catch (err) {
@@ -41,7 +48,9 @@ async function configMiddleware(argv, setConfiguration) {
41
48
  console.error(`Error parsing configuration: ${err}`);
42
49
  }
43
50
  console.error(`Stack: ${err instanceof Error ? err.stack : "N/A"}`);
44
- throw new Error("Invalid configuration");
51
+ throw new Error("Invalid configuration", {
52
+ cause: err
53
+ });
45
54
  }
46
55
  }
47
56
  __name(configMiddleware, "configMiddleware");
@@ -65,8 +74,10 @@ var initLogger = /* @__PURE__ */ __name((config2) => {
65
74
  }, "initLogger");
66
75
 
67
76
  // src/runCLI.ts
77
+ import { stdin as input, stdout as output } from "process";
78
+ import { createInterface } from "readline/promises";
68
79
  import { isDefined as isDefined2 } from "@xylabs/sdk-js";
69
- import { contextFromConfigWithoutLocator, locatorsFromConfig, Orchestrator } from "@xyo-network/chain-orchestration";
80
+ import { contextFromConfigWithoutLocator, formatWalletReport, initializeResolvedWalletReport, locatorsFromConfig, Orchestrator } from "@xyo-network/chain-orchestration";
70
81
  import { ActorConfigZod, ConfigZod as ConfigZod2 } from "@xyo-network/xl1-sdk";
71
82
  import yargs from "yargs";
72
83
  import { hideBin } from "yargs/helpers";
@@ -300,7 +311,8 @@ __name(getActorsFromConfig, "getActorsFromConfig");
300
311
  function getDefaultActors() {
301
312
  return [
302
313
  "api",
303
- "producer"
314
+ "producer",
315
+ "validator"
304
316
  ];
305
317
  }
306
318
  __name(getDefaultActors, "getDefaultActors");
@@ -372,7 +384,7 @@ function startCommand(getConfiguration2, getLocatorsFromConfig2) {
372
384
  type: "array",
373
385
  string: true,
374
386
  choices: KNOWN_ACTORS,
375
- description: "List of actors to start (e.g. --actors api producer mempool). Defaults to api, producer, and mempool if enabled."
387
+ description: "List of actors to start (e.g. --actors api producer validator). Defaults to api, producer, and validator."
376
388
  });
377
389
  }, "builder"),
378
390
  handler: /* @__PURE__ */ __name(async (argv) => {
@@ -444,11 +456,28 @@ var optionsFromGlobalZodRegistry = /* @__PURE__ */ __name(() => {
444
456
 
445
457
  // src/runCLI.ts
446
458
  var configuration;
447
- var version = isDefined2("1.20.17") ? "1.20.17" : "unknown";
459
+ var version = isDefined2("1.20.19") ? "1.20.19" : "unknown";
448
460
  function getConfiguration() {
449
461
  return configuration;
450
462
  }
451
463
  __name(getConfiguration, "getConfiguration");
464
+ async function pauseForInsecureGenesisWalletIfNeeded(report, logger) {
465
+ if (!report.insecureGenesisRewardAccounts) return;
466
+ if (!input.isTTY || !output.isTTY) {
467
+ logger.warn("Insecure genesis reward wallet is active. Interactive confirmation skipped because this session is not a TTY.");
468
+ return;
469
+ }
470
+ const rl = createInterface({
471
+ input,
472
+ output
473
+ });
474
+ try {
475
+ await rl.question("Insecure genesis reward wallet is active. Hit RETURN to continue.");
476
+ } finally {
477
+ rl.close();
478
+ }
479
+ }
480
+ __name(pauseForInsecureGenesisWalletIfNeeded, "pauseForInsecureGenesisWalletIfNeeded");
452
481
  async function getLocatorsFromConfig(actors, configuration2) {
453
482
  const actorConfigs = [];
454
483
  for (const actorName of actors) {
@@ -470,6 +499,9 @@ async function getLocatorsFromConfig(actors, configuration2) {
470
499
  const orchestrator = await Orchestrator.create({
471
500
  logger
472
501
  });
502
+ const walletReport = await initializeResolvedWalletReport(actors, configuration2);
503
+ logger.info(formatWalletReport(walletReport));
504
+ await pauseForInsecureGenesisWalletIfNeeded(walletReport, logger);
473
505
  const context = await contextFromConfigWithoutLocator(config2, logger, "xl1-cli", version);
474
506
  const locators = await locatorsFromConfig(context, config2);
475
507
  process.on("SIGINT", () => {
@@ -513,6 +545,10 @@ $0 <command> [options]`).parserConfiguration({
513
545
  description: "Path to a config file to use instead of the default search.",
514
546
  alias: "c"
515
547
  },
548
+ "mnemonic": {
549
+ type: "string",
550
+ description: "Shared root mnemonic used by actors that do not define their own mnemonic."
551
+ },
516
552
  "dump-config": {
517
553
  type: "boolean",
518
554
  description: "Just process the configuration and print the resolved config to stdout, then exit.",
@@ -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' })\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 }) // Config file\n const parsedConfigArgs = ConfigZod.safeParse(argv).data ?? {} // Command-line arguments & ENV VARs\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 setConfiguration(validatedConfigResult.data)\n\n // Check if user wants to dump config and exit\n if (argv['dump-config']) {\n console.log(JSON.stringify(validatedConfigResult.data, 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')\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 { isDefined } from '@xylabs/sdk-js'\nimport {\n contextFromConfigWithoutLocator, 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 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 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 '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']\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 mempool). Defaults to api, producer, and mempool if enabled.',\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 @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","parsedConfigArgs","ConfigZod","safeParse","data","parseResult","success","error","mergedConfig","validatedMergedConfigResult","resolvedConfig","resolveConfig","validatedConfigResult","console","log","JSON","stringify","process","exit","err","isZodError","message","Error","stack","Base","ConsoleLogger","isDefined","LogLevel","SilentLogger","initLogger","config","logger","log","silent","SilentLogger","level","isDefined","logLevel","parsed","LogLevel","toLowerCase","ConsoleLogger","Base","defaultLogger","isDefined","contextFromConfigWithoutLocator","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","getLocatorsFromConfig","actors","actorConfigs","actorName","existingConfig","find","actor","name","push","actorConfig","ActorConfigZod","loose","parse","config","ConfigZod","logger","initLogger","orchestrator","Orchestrator","create","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/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 +1 @@
1
- {"version":3,"file":"runCLI.d.ts","sourceRoot":"","sources":["../../src/runCLI.ts"],"names":[],"mappings":"AA4EA,wBAAsB,MAAM,kBAiD3B"}
1
+ {"version":3,"file":"runCLI.d.ts","sourceRoot":"","sources":["../../src/runCLI.ts"],"names":[],"mappings":"AAiGA,wBAAsB,MAAM,kBAqD3B"}
package/dist/node/xl1.mjs CHANGED
@@ -5,8 +5,10 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
5
5
  import { config } from "dotenv";
6
6
 
7
7
  // src/runCLI.ts
8
+ import { stdin as input, stdout as output } from "process";
9
+ import { createInterface } from "readline/promises";
8
10
  import { isDefined as isDefined2 } from "@xylabs/sdk-js";
9
- import { contextFromConfigWithoutLocator, locatorsFromConfig, Orchestrator } from "@xyo-network/chain-orchestration";
11
+ import { contextFromConfigWithoutLocator, formatWalletReport, initializeResolvedWalletReport, locatorsFromConfig, Orchestrator } from "@xyo-network/chain-orchestration";
10
12
  import { ActorConfigZod, ConfigZod as ConfigZod2 } from "@xyo-network/xl1-sdk";
11
13
  import yargs from "yargs";
12
14
  import { hideBin } from "yargs/helpers";
@@ -240,7 +242,8 @@ __name(getActorsFromConfig, "getActorsFromConfig");
240
242
  function getDefaultActors() {
241
243
  return [
242
244
  "api",
243
- "producer"
245
+ "producer",
246
+ "validator"
244
247
  ];
245
248
  }
246
249
  __name(getDefaultActors, "getDefaultActors");
@@ -312,7 +315,7 @@ function startCommand(getConfiguration2, getLocatorsFromConfig2) {
312
315
  type: "array",
313
316
  string: true,
314
317
  choices: KNOWN_ACTORS,
315
- description: "List of actors to start (e.g. --actors api producer mempool). Defaults to api, producer, and mempool if enabled."
318
+ description: "List of actors to start (e.g. --actors api producer validator). Defaults to api, producer, and validator."
316
319
  });
317
320
  }, "builder"),
318
321
  handler: /* @__PURE__ */ __name(async (argv) => {
@@ -358,7 +361,9 @@ async function configMiddleware(argv, setConfiguration) {
358
361
  const parsedConfigFile = await tryParseConfig({
359
362
  configPath
360
363
  });
364
+ const rootMnemonicFromFile = typeof parsedConfigFile.mnemonic === "string" ? parsedConfigFile.mnemonic : void 0;
361
365
  const parsedConfigArgs = ConfigZod.safeParse(argv).data ?? {};
366
+ const rootMnemonicFromArgs = typeof argv.mnemonic === "string" ? argv.mnemonic : void 0;
362
367
  const parseResult = ConfigZod.safeParse(deepMerge(parsedConfigFile, parsedConfigArgs));
363
368
  if (!parseResult.success) {
364
369
  throw parseResult.error;
@@ -373,9 +378,14 @@ async function configMiddleware(argv, setConfiguration) {
373
378
  if (!validatedConfigResult.success) {
374
379
  throw validatedConfigResult.error;
375
380
  }
376
- setConfiguration(validatedConfigResult.data);
381
+ const rootMnemonic = rootMnemonicFromArgs ?? rootMnemonicFromFile;
382
+ const finalConfig = rootMnemonic ? {
383
+ ...validatedConfigResult.data,
384
+ mnemonic: rootMnemonic
385
+ } : validatedConfigResult.data;
386
+ setConfiguration(finalConfig);
377
387
  if (argv["dump-config"]) {
378
- console.log(JSON.stringify(validatedConfigResult.data, null, 2));
388
+ console.log(JSON.stringify(finalConfig, null, 2));
379
389
  process.exit(0);
380
390
  }
381
391
  } catch (err) {
@@ -385,7 +395,9 @@ async function configMiddleware(argv, setConfiguration) {
385
395
  console.error(`Error parsing configuration: ${err}`);
386
396
  }
387
397
  console.error(`Stack: ${err instanceof Error ? err.stack : "N/A"}`);
388
- throw new Error("Invalid configuration");
398
+ throw new Error("Invalid configuration", {
399
+ cause: err
400
+ });
389
401
  }
390
402
  }
391
403
  __name(configMiddleware, "configMiddleware");
@@ -447,11 +459,28 @@ var optionsFromGlobalZodRegistry = /* @__PURE__ */ __name(() => {
447
459
 
448
460
  // src/runCLI.ts
449
461
  var configuration;
450
- var version = isDefined2("1.20.17") ? "1.20.17" : "unknown";
462
+ var version = isDefined2("1.20.19") ? "1.20.19" : "unknown";
451
463
  function getConfiguration() {
452
464
  return configuration;
453
465
  }
454
466
  __name(getConfiguration, "getConfiguration");
467
+ async function pauseForInsecureGenesisWalletIfNeeded(report, logger) {
468
+ if (!report.insecureGenesisRewardAccounts) return;
469
+ if (!input.isTTY || !output.isTTY) {
470
+ logger.warn("Insecure genesis reward wallet is active. Interactive confirmation skipped because this session is not a TTY.");
471
+ return;
472
+ }
473
+ const rl = createInterface({
474
+ input,
475
+ output
476
+ });
477
+ try {
478
+ await rl.question("Insecure genesis reward wallet is active. Hit RETURN to continue.");
479
+ } finally {
480
+ rl.close();
481
+ }
482
+ }
483
+ __name(pauseForInsecureGenesisWalletIfNeeded, "pauseForInsecureGenesisWalletIfNeeded");
455
484
  async function getLocatorsFromConfig(actors, configuration2) {
456
485
  const actorConfigs = [];
457
486
  for (const actorName of actors) {
@@ -473,6 +502,9 @@ async function getLocatorsFromConfig(actors, configuration2) {
473
502
  const orchestrator = await Orchestrator.create({
474
503
  logger
475
504
  });
505
+ const walletReport = await initializeResolvedWalletReport(actors, configuration2);
506
+ logger.info(formatWalletReport(walletReport));
507
+ await pauseForInsecureGenesisWalletIfNeeded(walletReport, logger);
476
508
  const context = await contextFromConfigWithoutLocator(config2, logger, "xl1-cli", version);
477
509
  const locators = await locatorsFromConfig(context, config2);
478
510
  process.on("SIGINT", () => {
@@ -516,6 +548,10 @@ $0 <command> [options]`).parserConfiguration({
516
548
  description: "Path to a config file to use instead of the default search.",
517
549
  alias: "c"
518
550
  },
551
+ "mnemonic": {
552
+ type: "string",
553
+ description: "Shared root mnemonic used by actors that do not define their own mnemonic."
554
+ },
519
555
  "dump-config": {
520
556
  type: "boolean",
521
557
  description: "Just process the configuration and print the resolved config to stdout, then exit.",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/start.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/configMiddleware.ts","../../src/images.ts","../../src/initLogger.ts","../../src/optionsFromGlobalZodRegistry.ts","../../src/xl1.ts"],"sourcesContent":["import { config } from 'dotenv'\n\nimport { runCLI } from './runCLI.ts'\n\nexport const start = async () => {\n config({ quiet: true })\n await runCLI()\n}\n","import { isDefined } from '@xylabs/sdk-js'\nimport {\n contextFromConfigWithoutLocator, 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 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 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 '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']\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 mempool). Defaults to api, producer, and mempool if enabled.',\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","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' })\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 }) // Config file\n const parsedConfigArgs = ConfigZod.safeParse(argv).data ?? {} // Command-line arguments & ENV VARs\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 setConfiguration(validatedConfigResult.data)\n\n // Check if user wants to dump config and exit\n if (argv['dump-config']) {\n console.log(JSON.stringify(validatedConfigResult.data, 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')\n }\n}\n","/* eslint-disable @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 { 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 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 { start } from './start.ts'\n\nstart().catch((err) => {\n // If we're in development mode, log the stack trace to the console\n if (process.env.NODE_ENV === 'development') console.error('An error occurred during startup:', err)\n // eslint-disable-next-line unicorn/no-process-exit\n process.exit(1)\n})\n"],"mappings":"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","names":["config","isDefined","contextFromConfigWithoutLocator","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","createDeepMerge","tryParseConfig","ConfigZod","isZodError","resolveConfig","deepMerge","createDeepMerge","arrayStrategy","configMiddleware","argv","setConfiguration","configPath","config","parsedConfigFile","tryParseConfig","parsedConfigArgs","ConfigZod","safeParse","data","parseResult","success","error","mergedConfig","validatedMergedConfigResult","resolvedConfig","resolveConfig","validatedConfigResult","console","log","JSON","stringify","process","exit","err","isZodError","message","Error","stack","XL1LogoColorizedAscii","Base","ConsoleLogger","isDefined","LogLevel","SilentLogger","initLogger","config","logger","log","silent","SilentLogger","level","isDefined","logLevel","parsed","LogLevel","toLowerCase","ConsoleLogger","Base","defaultLogger","isUsageMeta","globalRegistry","usageMetaToOptions","meta","optionsFromGlobalZodRegistry","opts","schema","Object","values","globalRegistry","_map","isUsageMeta","hidden","title","configuration","version","isDefined","__VERSION__","getConfiguration","getLocatorsFromConfig","actors","actorConfigs","actorName","existingConfig","find","actor","name","push","actorConfig","ActorConfigZod","loose","parse","config","ConfigZod","logger","initLogger","orchestrator","Orchestrator","create","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","start","config","quiet","runCLI","start","catch","err","process","env","NODE_ENV","console","error","exit"]}
1
+ {"version":3,"sources":["../../src/start.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/configMiddleware.ts","../../src/images.ts","../../src/initLogger.ts","../../src/optionsFromGlobalZodRegistry.ts","../../src/xl1.ts"],"sourcesContent":["import { config } from 'dotenv'\n\nimport { runCLI } from './runCLI.ts'\n\nexport const start = async () => {\n config({ quiet: true })\n await runCLI()\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","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","/* 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 { 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 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 { start } from './start.ts'\n\nstart().catch((err) => {\n // If we're in development mode, log the stack trace to the console\n if (process.env.NODE_ENV === 'development') console.error('An error occurred during startup:', err)\n // eslint-disable-next-line unicorn/no-process-exit\n process.exit(1)\n})\n"],"mappings":"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","names":["config","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","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","XL1LogoColorizedAscii","Base","ConsoleLogger","isDefined","LogLevel","SilentLogger","initLogger","config","logger","log","silent","SilentLogger","level","isDefined","logLevel","parsed","LogLevel","toLowerCase","ConsoleLogger","Base","defaultLogger","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","start","config","quiet","runCLI","start","catch","err","process","env","NODE_ENV","console","error","exit"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/xl1-cli-lib",
3
- "version": "1.20.17",
3
+ "version": "1.20.19",
4
4
  "description": "XYO Layer One CLI Library",
5
5
  "homepage": "https://xylabs.com",
6
6
  "bugs": {
@@ -23,13 +23,13 @@
23
23
  ".": {
24
24
  "node": {
25
25
  "types": "./dist/node/index.d.ts",
26
- "import": "./dist/node/index.mjs"
27
- }
26
+ "default": "./dist/node/index.mjs"
27
+ },
28
+ "default": "./dist/node/index.mjs"
28
29
  },
29
30
  "./package.json": "./package.json",
30
31
  "./README.md": "./README.md"
31
32
  },
32
- "module": "./dist/node/index.mjs",
33
33
  "files": [
34
34
  "dist",
35
35
  "!**/*.bench.*",
@@ -38,22 +38,21 @@
38
38
  "README.md"
39
39
  ],
40
40
  "dependencies": {
41
- "@xyo-network/xl1-sdk": "~1.26.20",
42
- "dotenv": "~17.4.1",
41
+ "@xyo-network/xl1-sdk": "~1.26.31",
42
+ "dotenv": "~17.4.2",
43
43
  "yargs": "~18.0.0",
44
- "@xyo-network/chain-api": "~1.20.17",
45
- "@xyo-network/chain-orchestration": "~1.20.17"
44
+ "@xyo-network/chain-orchestration": "~1.20.19",
45
+ "@xyo-network/chain-api": "~1.20.19"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@opentelemetry/api": "^1.9.0",
49
- "@types/node": "^25.5.2",
49
+ "@types/node": "^25.6.0",
50
50
  "@types/yargs": "^17.0.35",
51
51
  "@xylabs/express": "^5.0.95",
52
52
  "@xylabs/mongo": "^5.0.95",
53
53
  "@xylabs/sdk-js": "~5.0.95",
54
- "@xylabs/ts-scripts-common": "~7.9.6",
55
- "@xylabs/ts-scripts-pnpm": "~7.9.6",
56
- "@xylabs/tsconfig": "~7.9.6",
54
+ "@xylabs/toolchain": "~7.10.7",
55
+ "@xylabs/tsconfig": "~7.10.7",
57
56
  "@xyo-network/account": "~5.3.30",
58
57
  "@xyo-network/account-model": "~5.3",
59
58
  "@xyo-network/api-models": "~5.3.30",
@@ -109,19 +108,19 @@
109
108
  "axios": "^1.15.0",
110
109
  "esbuild": ">=0.18",
111
110
  "ethers": "^6.16.0",
112
- "lmdb": "~3.5.3",
111
+ "lmdb": "~3.5.4",
113
112
  "mongodb": "~7.1.1",
114
113
  "pako": "~2.1.0",
115
114
  "typescript": "~5.9.3",
116
115
  "vite": "^8.0.8",
117
116
  "vitest": "^4.1.4",
118
117
  "zod": "~4.3.6",
119
- "@xyo-network/chain-reward-redemption": "~1.20.17",
120
- "@xyo-network/chain-mempool": "~1.20.17",
121
- "@xyo-network/chain-telemetry": "~1.20.17",
122
- "@xyo-network/chain-bridge": "~1.20.17",
123
- "@xyo-network/chain-services": "~1.20.17",
124
- "@xyo-network/chain-producer": "~1.20.17"
118
+ "@xyo-network/chain-mempool": "~1.20.19",
119
+ "@xyo-network/chain-bridge": "~1.20.19",
120
+ "@xyo-network/chain-producer": "~1.20.19",
121
+ "@xyo-network/chain-reward-redemption": "~1.20.19",
122
+ "@xyo-network/chain-services": "~1.20.19",
123
+ "@xyo-network/chain-telemetry": "~1.20.19"
125
124
  },
126
125
  "peerDependencies": {
127
126
  "@xylabs/express": "^5.0.95",
@@ -138,6 +137,12 @@
138
137
  "@xyo-network/boundwitness-validator": "~5.3",
139
138
  "@xyo-network/bridge-abstract": "~5.3.30",
140
139
  "@xyo-network/bridge-model": "~5.3.30",
140
+ "@xyo-network/chain-bridge": "~1.20",
141
+ "@xyo-network/chain-mempool": "~1.20",
142
+ "@xyo-network/chain-producer": "~1.20",
143
+ "@xyo-network/chain-reward-redemption": "~1.20",
144
+ "@xyo-network/chain-services": "~1.20",
145
+ "@xyo-network/chain-telemetry": "~1.20",
141
146
  "@xyo-network/config-payload-plugin": "~5.3.30",
142
147
  "@xyo-network/data": "~5.3.30",
143
148
  "@xyo-network/diviner-boundwitness-memory": "~5.3.30",
@@ -172,13 +177,7 @@
172
177
  "@xyo-network/witness-adhoc": "~5.3.30",
173
178
  "@xyo-network/witness-model": "~5.3.30",
174
179
  "pako": "~2.1.0",
175
- "zod": "~4.3.6",
176
- "@xyo-network/chain-bridge": "~1.20.17",
177
- "@xyo-network/chain-producer": "~1.20.17",
178
- "@xyo-network/chain-telemetry": "~1.20.17",
179
- "@xyo-network/chain-mempool": "~1.20.17",
180
- "@xyo-network/chain-services": "~1.20.17",
181
- "@xyo-network/chain-reward-redemption": "~1.20.17"
180
+ "zod": "~4.3.6"
182
181
  },
183
182
  "engines": {
184
183
  "node": ">=24"