@xyo-network/xl1-cli-lib 1.20.18 → 1.20.20
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.
- package/dist/node/configMiddleware.d.ts.map +1 -1
- package/dist/node/index.mjs +40 -6
- package/dist/node/index.mjs.map +1 -1
- package/dist/node/runCLI.d.ts.map +1 -1
- package/dist/node/xl1.mjs +40 -6
- package/dist/node/xl1.mjs.map +1 -1
- package/package.json +11 -11
|
@@ -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;
|
|
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"}
|
package/dist/node/index.mjs
CHANGED
|
@@ -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
|
-
|
|
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(
|
|
41
|
+
console.log(JSON.stringify(finalConfig, null, 2));
|
|
35
42
|
process.exit(0);
|
|
36
43
|
}
|
|
37
44
|
} catch (err) {
|
|
@@ -67,8 +74,10 @@ var initLogger = /* @__PURE__ */ __name((config2) => {
|
|
|
67
74
|
}, "initLogger");
|
|
68
75
|
|
|
69
76
|
// src/runCLI.ts
|
|
77
|
+
import { stdin as input, stdout as output } from "process";
|
|
78
|
+
import { createInterface } from "readline/promises";
|
|
70
79
|
import { isDefined as isDefined2 } from "@xylabs/sdk-js";
|
|
71
|
-
import { contextFromConfigWithoutLocator, locatorsFromConfig, Orchestrator } from "@xyo-network/chain-orchestration";
|
|
80
|
+
import { contextFromConfigWithoutLocator, formatWalletReport, initializeResolvedWalletReport, locatorsFromConfig, Orchestrator } from "@xyo-network/chain-orchestration";
|
|
72
81
|
import { ActorConfigZod, ConfigZod as ConfigZod2 } from "@xyo-network/xl1-sdk";
|
|
73
82
|
import yargs from "yargs";
|
|
74
83
|
import { hideBin } from "yargs/helpers";
|
|
@@ -302,7 +311,8 @@ __name(getActorsFromConfig, "getActorsFromConfig");
|
|
|
302
311
|
function getDefaultActors() {
|
|
303
312
|
return [
|
|
304
313
|
"api",
|
|
305
|
-
"producer"
|
|
314
|
+
"producer",
|
|
315
|
+
"validator"
|
|
306
316
|
];
|
|
307
317
|
}
|
|
308
318
|
__name(getDefaultActors, "getDefaultActors");
|
|
@@ -374,7 +384,7 @@ function startCommand(getConfiguration2, getLocatorsFromConfig2) {
|
|
|
374
384
|
type: "array",
|
|
375
385
|
string: true,
|
|
376
386
|
choices: KNOWN_ACTORS,
|
|
377
|
-
description: "List of actors to start (e.g. --actors api producer
|
|
387
|
+
description: "List of actors to start (e.g. --actors api producer validator). Defaults to api, producer, and validator."
|
|
378
388
|
});
|
|
379
389
|
}, "builder"),
|
|
380
390
|
handler: /* @__PURE__ */ __name(async (argv) => {
|
|
@@ -446,11 +456,28 @@ var optionsFromGlobalZodRegistry = /* @__PURE__ */ __name(() => {
|
|
|
446
456
|
|
|
447
457
|
// src/runCLI.ts
|
|
448
458
|
var configuration;
|
|
449
|
-
var version = isDefined2("1.20.
|
|
459
|
+
var version = isDefined2("1.20.20") ? "1.20.20" : "unknown";
|
|
450
460
|
function getConfiguration() {
|
|
451
461
|
return configuration;
|
|
452
462
|
}
|
|
453
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");
|
|
454
481
|
async function getLocatorsFromConfig(actors, configuration2) {
|
|
455
482
|
const actorConfigs = [];
|
|
456
483
|
for (const actorName of actors) {
|
|
@@ -472,6 +499,9 @@ async function getLocatorsFromConfig(actors, configuration2) {
|
|
|
472
499
|
const orchestrator = await Orchestrator.create({
|
|
473
500
|
logger
|
|
474
501
|
});
|
|
502
|
+
const walletReport = await initializeResolvedWalletReport(actors, configuration2);
|
|
503
|
+
logger.info(formatWalletReport(walletReport));
|
|
504
|
+
await pauseForInsecureGenesisWalletIfNeeded(walletReport, logger);
|
|
475
505
|
const context = await contextFromConfigWithoutLocator(config2, logger, "xl1-cli", version);
|
|
476
506
|
const locators = await locatorsFromConfig(context, config2);
|
|
477
507
|
process.on("SIGINT", () => {
|
|
@@ -515,6 +545,10 @@ $0 <command> [options]`).parserConfiguration({
|
|
|
515
545
|
description: "Path to a config file to use instead of the default search.",
|
|
516
546
|
alias: "c"
|
|
517
547
|
},
|
|
548
|
+
"mnemonic": {
|
|
549
|
+
type: "string",
|
|
550
|
+
description: "Shared root mnemonic used by actors that do not define their own mnemonic."
|
|
551
|
+
},
|
|
518
552
|
"dump-config": {
|
|
519
553
|
type: "boolean",
|
|
520
554
|
description: "Just process the configuration and print the resolved config to stdout, then exit.",
|
package/dist/node/index.mjs.map
CHANGED
|
@@ -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', { 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 { 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 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","parsedConfigArgs","ConfigZod","safeParse","data","parseResult","success","error","mergedConfig","validatedMergedConfigResult","resolvedConfig","resolveConfig","validatedConfigResult","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","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":";;;;AAAA,SAASA,uBAAuB;AAChC,SAASC,sBAAsB;AAE/B,SACEC,WAAWC,YAAYC,qBAClB;AAEP,IAAMC,YAAYC,gBAAgB;EAAEC,eAAe;AAAS,CAAA;AAG5D,eAAsBC,iBAAiBC,MAA+BC,kBAA0C;AAC9G,MAAI;AAEF,UAAMC,aAAaF,KAAKG;AACxB,UAAMC,mBAAmB,MAAMC,eAAe;MAAEH;IAAW,CAAA;AAC3D,UAAMI,uBAAuB,OAAOF,iBAAiBG,aAAa,WAAWH,iBAAiBG,WAAWC;AACzG,UAAMC,mBAAmBC,UAAUC,UAAUX,IAAAA,EAAMY,QAAQ,CAAC;AAC5D,UAAMC,uBAAuB,OAAOb,KAAKO,aAAa,WAAWP,KAAKO,WAAWC;AACjF,UAAMM,cAAcJ,UAAUC,UAAUf,UAAUQ,kBAAkBK,gBAAAA,CAAAA;AACpE,QAAI,CAACK,YAAYC,SAAS;AACxB,YAAMD,YAAYE;IACpB;AAQA,UAAMC,eAAeH,YAAYF;AACjC,UAAMM,8BAA8BR,UAAUC,UAAUM,YAAAA;AACxD,QAAI,CAACC,4BAA4BH,SAAS;AACxC,YAAMG,4BAA4BF;IACpC;AACA,UAAMG,iBAAiBC,cAAcF,4BAA4BN,IAAI;AAErE,UAAMS,wBAAwBX,UAAUC,UAAUQ,cAAAA;AAClD,QAAI,CAACE,sBAAsBN,SAAS;AAClC,YAAMM,sBAAsBL;IAC9B;AACA,UAAMM,eAAeT,wBAAwBP;AAC7C,UAAMiB,cAAcD,eAAe;MAAE,GAAGD,sBAAsBT;MAAML,UAAUe;IAAa,IAAID,sBAAsBT;AACrHX,qBAAiBsB,WAAAA;AAGjB,QAAIvB,KAAK,aAAA,GAAgB;AACvBwB,cAAQC,IAAIC,KAAKC,UAAUJ,aAAa,MAAM,CAAA,CAAA;AAE9CK,cAAQC,KAAK,CAAA;IACf;EACF,SAASC,KAAK;AACZ,QAAIC,WAAWD,GAAAA,GAAM;AACnBN,cAAQR,MAAM,cAAcc,IAAIE,OAAO,EAAE;IAC3C,OAAO;AACLR,cAAQR,MAAM,gCAAgCc,GAAAA,EAAK;IACrD;AACAN,YAAQR,MAAM,UAAUc,eAAeG,QAAQH,IAAII,QAAQ,KAAA,EAAO;AAClE,UAAM,IAAID,MAAM,yBAAyB;MAAEE,OAAOL;IAAI,CAAA;EACxD;AACF;AAjDsB/B;;;ACTtB,SACEqC,MACAC,eAAeC,WACfC,UAAUC,oBACL;AAGA,IAAMC,aAAa,wBAACC,YAAAA;AACzB,MAAIC;AACJ,MAAID,QAAOE,IAAIC,QAAQ;AACrBF,aAAS,IAAIG,aAAAA;EACf,OAAO;AACL,QAAIC;AACJ,QAAIC,UAAUN,QAAOE,IAAIK,QAAQ,GAAG;AAClC,YAAMC,SAASC,SAAST,QAAOE,IAAIK,SAASG,YAAW,CAAA;AACvD,UAAIJ,UAAUE,MAAAA,EAASH,SAAQG;IACjC;AACAP,aAAS,IAAIU,cAAcN,KAAAA;EAC7B;AACAO,OAAKC,gBAAgBZ;AACrB,SAAOA;AACT,GAd0B;;;ACR1B,SAASa,SAASC,OAAOC,UAAUC,cAAc;AACjD,SAASC,uBAAuB;AAEhC,SAASC,aAAAA,kBAAiB;AAC1B,SACEC,iCAAiCC,oBAAoBC,gCACrDC,oBAAoBC,oBACf;AAEP,SAASC,gBAAgBC,aAAAA,kBAAiB;AAE1C,OAAOC,WAAW;AAClB,SAASC,eAAe;;;ACZxB,SAASC,mBAAmB;AAC5B,SAASC,uBAAuB;AAChC,SACEC,cAAcC,kBACdC,0BACK;;;ACLP,SAASC,cAAc;AAEvB,SAASC,iBAAiBC,sBAAsB;AAGzC,IAAMC,oBAAoB,8BAC/BC,SACAC,YAAAA;AAEA,QAAMC,UAAU,MAAMC,gBAAgB;IACpCH,QAAAA;IAAQI,QAAQH,QAAQI,QAAQD;IAAQE,YAAY,CAAC;IAAGC,QAAQ,CAAC;EACnE,CAAA;AAEA,SAAO,MAAMC,eAAeC,OAAO;IACjCP;IAASF,QAAAA;IAAQC;EACnB,CAAA;AACF,GAXiC;;;ADO1B,SAASS,WAAWC,mBAAgCC,wBAA4C;AACrG,SAAO;IACLC,SAAS;IACTC,YAAY;IACZC,UAAU;IACVC,SAAS,mCAAA;AACP,YAAMC,iBAAgBN,kBAAAA;AACtB,YAAM,EAAEO,UAAUC,aAAY,IAAK,MAAMP,uBAAsB;QAAC;QAAO;QAAW;SAAcK,cAAAA;AAChG,YAAMG,SAAS,MAAMC,QAAQC,IAAI;QAACC,YAChCC,aAAaC,MAAMP,SAAS,KAAA,EAAOQ,QAAQC,MAAM,GACjDT,SAAS,KAAA,CAAM;QACdU,gBACDC,iBAAiBJ,MAAMP,SAAS,SAAA,EAAWQ,QAAQC,MAAM,GACzDT,SAAS,SAAA,CAAU;QAClBY,kBACDC,mBAAmBN,MAAMP,SAAS,WAAA,EAAaQ,QAAQC,MAAM,GAC7DT,SAAS,WAAA,CAAY;OACrB;AAEF,iBAAWc,SAASZ,QAAQ;AAC1B,cAAMD,aAAac,cAAcD,KAAAA;MACnC;AAEA,YAAMb,aAAae,MAAK;IAC1B,GAnBS;EAoBX;AACF;AA1BgBxB;;;AEZhB,SAASyB,uBAAuB;;;ACAhC,SAASC,UAAAA,eAAc;AACvB,SAASC,mBAAmB;AAE5B,SAASC,mBAAAA,wBAAuB;AAGzB,IAAMC,iBAAiB,8BAC5BC,SACAC,YAAAA;AAEA,QAAMC,UAAU,MAAMC,iBAAgB;IACpCH,QAAAA;IAAQI,QAAQH,QAAQI,QAAQD;IAAQE,YAAY,CAAC;IAAGC,QAAQ,CAAC;EACnE,CAAA;AAEA,SAAO,MAAMC,YAAYC,OAAO;IAC9BP;IAASF,QAAAA;IAAQC;EACnB,CAAA;AACF,GAX8B;AAavB,IAAMS,YAAY,8BACvBV,SACAW,cACAV,YAAAA;AAEA,QAAMW,SAAS,MAAMb,eAAeC,SAAQC,OAAAA;AAC5C,QAAMY,SAAS;IAACD;IAAQE,OAAOC,OAAAA;AAE/B,aAAWC,SAASH,QAAQ;AAE1B,UAAMF,aAAaM,cAAcD,KAAAA;EACnC;AAEA,QAAML,aAAaO,MAAK;AAC1B,GAdyB;;;ADZlB,SAASC,cAAcC,mBAAgCC,wBAA4C;AACxG,SAAO;IACLC,SAAS;IACTC,YAAY;IACZC,UAAU;IACVC,SAAS,mCAAA;AACP,YAAMC,iBAAgBN,kBAAAA;AACtB,YAAM,EAAEO,UAAUC,aAAY,IAAK,MAAMP,uBAAsB;QAAC;SAAWK,cAAAA;AAC3E,YAAMG,UAAUC,gBAAgBC,MAAMJ,SAAS,QAAA,EAAUK,QAAQC,MAAM,GAAGL,cAAcD,SAAS,QAAA,CAAS;IAC5G,GAJS;EAKX;AACF;AAXgBR;;;AEPhB,SAASe,kBAAkB;AAC3B,SAASC,oBAAAA,yBAAwB;AAM1B,SAASC,eAAeC,mBAAgCC,wBAA4C;AACzG,SAAO;IACLC,SAAS;IACTC,YAAY;IACZC,UAAU;IACVC,SAAS,mCAAA;AACP,YAAMC,iBAAgBN,kBAAAA;AACtB,YAAM,EAAEO,UAAUC,aAAY,IAAK,MAAMP,uBAAsB;QAAC;SAAYK,cAAAA;AAC5E,YAAMG,WAAWC,kBAAiBC,MAAMJ,SAAS,SAAA,EAAWK,QAAQC,MAAM,GAAGL,cAAcD,SAAS,SAAA,CAAU;IAChH,GAJS;EAKX;AACF;AAXgBR;;;ACPhB,SAASe,yBAAyB;AAClC,SAASC,mBAAmB;AAMrB,SAASC,gBAAgBC,mBAAgCC,wBAA4C;AAC1G,SAAO;IACLC,SAAS;IACTC,YAAY;IACZC,UAAU;IACVC,SAAS,mCAAA;AACP,YAAMC,iBAAgBN,kBAAAA;AACtB,YAAM,EAAEO,UAAUC,aAAY,IAAK,MAAMP,uBAAsB;QAAC;SAAaK,cAAAA;AAC7E,YAAMG,YAAYC,kBAAkBC,MAAMJ,SAAS,UAAA,EAAYK,QAAQC,MAAM,GAAGL,cAAcD,SAAS,UAAA,CAAW;IACpH,GAJS;EAKX;AACF;AAXgBR;;;ACPhB,SAASe,iCAAiC;;;ACA1C,SAASC,UAAAA,eAAc;AAKvB,SAASC,mBAAAA,wBAAuB;AAChC,SAASC,6BAA6B;AAGtC,eAAsBC,yBACpBC,SACAC,SAAuC;AAEvC,QAAMC,UAAU,MAAMC,iBAAgB;IACpCH,QAAAA;IAAQI,QAAQH,QAAQI,QAAQD;IAAQE,YAAY,CAAC;IAAGC,QAAQ,CAAC;EACnE,CAAA;AACA,SAAO,MAAMC,sBAAsBC,OAAO;IACxCP;IAASF,QAAAA;IAAQC;EACnB,CAAA;AACF;AAVsBF;AAYtB,eAAsBW,uBACpBV,SACAW,cACAV,SAAuC;AAEvC,QAAMW,mBAAmB,MAAMb,yBAAyBC,SAAQC,OAAAA;AAChE,QAAMY,SAAS;IAACD;IAAkBE,OAAOC,OAAAA;AAEzC,aAAWC,SAASH,QAAQ;AAE1B,UAAMF,aAAaM,cAAcD,KAAAA;EACnC;AAEA,QAAML,aAAaO,MAAK;AAC1B;AAdsBR;;;ADdf,SAASS,wBAAwBC,mBAAgCC,wBAA4C;AAClH,SAAO;IACLC,SAAS;IACTC,YAAY;IACZC,UAAU;IACVC,SAAS,mCAAA;AACP,YAAMC,iBAAgBN,kBAAAA;AACtB,YAAM,EAAEO,UAAUC,aAAY,IAAK,MAAMP,uBAAsB;QAAC;SAAqBK,cAAAA;AACrF,YAAMG,uBAAuBC,0BAA0BC,MAAMJ,SAAS,kBAAA,EAAoBK,QAAQC,MAAM,GAAGL,cAAcD,SAAS,kBAAA,CAAmB;IACvJ,GAJS;EAKX;AACF;AAXgBR;;;AEPhB,SAASe,eAAAA,oBAAmB;AAC5B,SAASC,mBAAAA,wBAAuB;AAEhC,SACEC,gBAAAA,eACAC,mBAAAA,kBACAC,oBAAAA,mBACAC,qBAAAA,oBACAC,6BAAAA,4BACAC,sBAAAA,2BACK;AACP,SAASC,eAAAA,oBAAmB;;;ACX5B,OAAOC,SAAS;AAET,IAAMC,kBAAkB,wBAACC,MAAcC,SAAAA;AAC5C,SAAO,IAAIC,QAAQ,CAACC,YAAAA;AAClB,UAAMC,aAAa,6BAAA;AACjB,YAAMC,SAAS,IAAIC,IAAIC,OAAM;AAE7BF,aACGG,WAAW,GAAA,EACXC,KAAK,SAAS,MAAA;AACbJ,eAAOK,QAAO;AACdF,mBAAWJ,YAAY,GAAA;MACzB,CAAA,EACCK,KAAK,WAAW,MAAA;AACfJ,eAAOK,QAAO;AACdF,mBAAWJ,YAAY,GAAA;MACzB,CAAA,EACCO,QAAQV,MAAMD,MAAM,MAAA;AACnBK,eAAOO,IAAG;AACVT,gBAAAA;MACF,CAAA;IACJ,GAjBmB;AAmBnBC,eAAAA;EACF,CAAA;AACF,GAvB+B;;;ADyB/B,IAAMS,eAAe;EAAC;EAAO;EAAU;EAAW;EAAY;EAAoB;;AAElF,SAASC,oBAAoBC,gBAAqB;AAChD,QAAMC,gBAAgBD,eAAcE,OACjCC,OAAOC,CAAAA,UAASA,MAAMC,YAAY,KAAA,EAClCC,IAAIF,CAAAA,UAASA,MAAMG,IAAI;AAC1B,SAAON,cAAcO,SAAS,IAAIP,gBAAgBQ;AACpD;AALSV;AAOT,SAASW,mBAAAA;AACP,SAAO;IAAC;IAAO;IAAY;;AAC7B;AAFSA;AAIT,eAAeC,WACbJ,MACAK,SACAC,cAAkC;AAElC,UAAQN,MAAAA;IACN,KAAK,OAAO;AACV,YAAMO,UAASC,cAAaC,MAAMJ,QAAQK,QAAQH,MAAM;AACxD,YAAMV,QAAQ,MAAMc,aAAYJ,SAAQF,OAAAA;AACxC,YAAMC,aAAaM,cAAcf,KAAAA;AACjC,YAAMS,aAAaO,MAAK;AACxB,YAAMC,gBAAgBP,QAAOQ,MAAMR,QAAOS,IAAI;AAC9C;IACF;IACA,KAAK,UAAU;AACb,YAAMT,UAASU,iBAAgBR,MAAMJ,QAAQK,QAAQH,MAAM;AAC3D,YAAMV,QAAQ,MAAMqB,eAAeX,SAAQF,OAAAA;AAC3C,YAAMC,aAAaM,cAAcf,KAAAA;AACjC,YAAMS,aAAaO,MAAK;AACxB;IACF;IACA,KAAK,WAAW;AACd,YAAMN,UAASY,kBAAiBV,MAAMJ,QAAQK,QAAQH,MAAM;AAC5D,YAAMV,QAAQ,MAAMuB,iBAAgBb,SAAQF,OAAAA;AAC5C,YAAMC,aAAaM,cAAcf,KAAAA;AACjC,YAAMS,aAAaO,MAAK;AACxB,YAAMC,gBAAgBP,QAAOQ,MAAMR,QAAOS,IAAI;AAC9C;IACF;IACA,KAAK,YAAY;AACf,YAAMT,UAASc,mBAAkBZ,MAAMJ,QAAQK,QAAQH,MAAM;AAC7D,YAAMe,aAAYf,SAAQD,cAAcD,OAAAA;AACxC;IACF;IACA,KAAK,oBAAoB;AACvB,YAAME,UAASgB,2BAA0Bd,MAAMJ,QAAQK,QAAQH,MAAM;AACrE,YAAMV,QAAQ,MAAM2B,yBAAyBjB,SAAQF,OAAAA;AACrD,YAAMC,aAAaM,cAAcf,KAAAA;AACjC,YAAMS,aAAaO,MAAK;AACxB;IACF;IACA,KAAK,aAAa;AAChB,YAAMN,UAASkB,oBAAmBhB,MAAMJ,QAAQK,QAAQH,MAAM;AAC9D,YAAMV,QAAQ,MAAM6B,kBAAkBnB,SAAQF,OAAAA;AAC9C,YAAMC,aAAaM,cAAcf,KAAAA;AACjC,YAAMS,aAAaO,MAAK;AACxB;IACF;IACA,SAAS;AACP,YAAM,IAAIc,MAAM,kBAAkB3B,IAAAA,EAAM;IAC1C;EACF;AACF;AApDeI;AAsDR,SAASwB,aAAaC,mBAAgCC,wBAA4C;AACvG,SAAO;IACLC,SAAS;MAAC;MAAoB;;IAC9BC,UAAU;IACVC,SAAS,wBAACC,WAAAA;AACR,aAAOA,OACJC,WAAW,UAAU;QACpBC,MAAM;QACNC,OAAO;QACPC,SAAS/C;QACTgD,aAAa;QACbC,QAAQ,wBAACC,WAAqBA,OAAOC,QAAQC,CAAAA,MAAKA,EAAEC,MAAM,GAAA,CAAA,GAAlD;MACV,CAAA,EACCC,OAAO,UAAU;QAChBT,MAAM;QACNU,QAAQ;QACRR,SAAS/C;QACTgD,aAAa;MACf,CAAA;IACJ,GAfS;IAgBTQ,SAAS,8BAAOC,SAAAA;AACd,YAAMvD,iBAAgBoC,kBAAAA;AACtB,YAAMoB,kBAAkBD,KAAKrD,WAAWO,UAAa8C,KAAKrD,OAAOM,SAAS,IACtE+C,KAAKrD,SACLH,oBAAoBC,cAAAA,KAAkBU,iBAAAA;AAC1C,YAAM,EAAE+C,UAAU5C,aAAY,IAAK,MAAMwB,uBAAsBmB,iBAAiBxD,cAAAA;AAEhF,iBAAWO,QAAQiD,iBAAiB;AAClC,cAAM7C,WAAWJ,MAAMkD,SAASlD,IAAAA,GAAOM,YAAAA;MACzC;IACF,GAVS;EAWX;AACF;AAhCgBsB;;;AE9FhB,SAASuB,aAAa;AAGf,SAASC,uBAAuBC,QAAqB;AAC1D,QAAM,EAAEC,YAAYC,QAAO,IAAKF;AAChC,MAAI,OAAOC,eAAe,UAAU;AAClC,WAAO;MACL,GAAGD;MACHE,SAAS,8BAAOC,SAAAA;AACdC,gBAAQC,KAAK,gBAAgBJ,UAAAA,EAAY;AACzC,cAAMK,MAAM,GAAA;AACZ,eAAOJ,QAAQC,IAAAA;MACjB,GAJS;IAKX;EACF;AACA,SAAOH;AACT;AAbgBD;;;ACFT,IAAMQ,wBAAwB;;;;;;;;;;;;;;;;;;;;ACArC,SAASC,mBAAmB;AAE5B,SAASC,sBAAsB;AAE/B,IAAMC,qBAAqB,wBAACC,SAAAA;AAC1B,SAAOA;AACT,GAF2B;AAIpB,IAAMC,+BAA+B,6BAAA;AAC1C,QAAMC,OAAgC,CAAC;AACvC,aAAWC,UAAUC,OAAOC,OAAOC,eAAeC,IAAI,GAAG;AACvD,QAAIC,YAAYL,MAAAA,GAAS;AACvB,UAAIA,OAAOM,OAAQ;AACnBP,WAAKC,OAAOO,KAAK,IAAIX,mBAAmBI,MAAAA;IAC1C;EACF;AACA,SAAOD;AACT,GAT4C;;;Ab2B5C,IAAIS;AAEJ,IAAMC,UAAUC,WAAUC,SAAAA,IAAeA,YAAc;AAEvD,SAASC,mBAAAA;AACP,SAAOJ;AACT;AAFSI;AAIT,eAAeC,sCAAsCC,QAAoEC,QAAqC;AAC5J,MAAI,CAACD,OAAOE,8BAA+B;AAC3C,MAAI,CAACC,MAAMC,SAAS,CAACC,OAAOD,OAAO;AACjCH,WAAOK,KAAK,+GAAA;AACZ;EACF;AACA,QAAMC,KAAKC,gBAAgB;IAAEL;IAAOE;EAAO,CAAA;AAC3C,MAAI;AACF,UAAME,GAAGE,SAAS,mEAAA;EACpB,UAAA;AACEF,OAAGG,MAAK;EACV;AACF;AAZeX;AAcf,eAAeY,sBAAsBC,QAAkBlB,gBAAqB;AAC1E,QAAMmB,eAA8B,CAAA;AACpC,aAAWC,aAAaF,QAAQ;AAC9B,UAAMG,iBAAiBrB,eAAckB,OAAOI,KAAKC,CAAAA,UAASA,MAAMC,SAASJ,SAAAA;AACzE,QAAIC,gBAAgB;AAClBF,mBAAaM,KAAKJ,cAAAA;IACpB,OAAO;AACL,YAAMK,cAAcC,eAAeC,MAAK,EAAGC,MAAM;QAAEL,MAAMJ;MAAU,CAAA;AACnED,mBAAaM,KAAKC,WAAAA;IACpB;EACF;AAEA,QAAMI,UAASC,WAAUF,MAAM;IAAE,GAAG7B;IAAekB,QAAQC;EAAa,CAAA;AAExE,QAAMZ,SAASyB,WAAWhC,cAAAA;AAC1B,QAAMiC,eAAe,MAAMC,aAAaC,OAAO;IAAE5B;EAAO,CAAA;AACxD,QAAM6B,eAAe,MAAMC,+BAA+BnB,QAAQlB,cAAAA;AAClEO,SAAO+B,KAAKC,mBAAmBH,YAAAA,CAAAA;AAC/B,QAAM/B,sCAAsC+B,cAAc7B,MAAAA;AAC1D,QAAMiC,UAAU,MAAMC,gCAAgCX,SAAQvB,QAAQ,WAAWN,OAAAA;AACjF,QAAMyC,WAAW,MAAMC,mBAAmBH,SAASV,OAAAA;AAEnDc,UAAQC,GAAG,UAAU,MAAA;AACnB,UAAM,YAAA;AACJ,UAAI;AACFtC,eAAOuC,IAAI,oDAAA;AACX,cAAMb,cAAcc,KAAAA;AACpBxC,eAAOuC,IAAI,oCAAA;AACXF,gBAAQI,KAAK,CAAA;MACf,SAASC,KAAK;AACZ1C,eAAO2C,MAAM,gCAAgCD,GAAAA;AAC7CL,gBAAQI,KAAK,CAAA;MACf;IACF,GAAA;EACF,CAAA;AACA,SAAO;IAAEN;IAAUT;EAAa;AAClC;AApCehB;AAuCf,eAAsBkC,SAAAA;AAEpB,QAAMC,IAAIC,MAAMC,QAAQV,QAAQW,IAAI,CAAA;AACpC,QAAMA,OAAOH,EACVI,MAAM;0BACQvD,OAAAA;EACjBwD,qBAAAA;;;;uBAIqB,EAClBC,oBAAoB;IACnB,gBAAgB;IAChB,iBAAiB;IACjB,cAAc;EAChB,CAAA,EACCC,IAAI,KAAA,EACJC,WAAW,KAAA,EACXC,WAAW,OAAON,UAAAA;AACjB,UAAMO,iBAAiBP,OAAM,CAACzB,YAAAA;AAC5B9B,sBAAgB8B;IAClB,CAAA;EACF,CAAA,EACCiC,QAAQC,6BAAAA,CAAAA,EACRC,KAAKb,EAAEc,cAAa,CAAA,EACpBC,QAAQC,uBAAuBC,WAAWjE,kBAAkBa,qBAAAA,CAAAA,CAAAA,EAC5DkD,QAAQC,uBAAuBE,cAAclE,kBAAkBa,qBAAAA,CAAAA,CAAAA,EAC/DkD,QAAQC,uBAAuBG,eAAenE,kBAAkBa,qBAAAA,CAAAA,CAAAA,EAChEkD,QAAQC,uBAAuBI,gBAAgBpE,kBAAkBa,qBAAAA,CAAAA,CAAAA,EACjEkD,QAAQC,uBAAuBK,wBAAwBrE,kBAAkBa,qBAAAA,CAAAA,CAAAA,EACzEkD,QAAQO,aAAatE,kBAAkBa,qBAAAA,CAAAA,EACvC8C,QAAQ;IACP,UAAU;MACRY,MAAM;MACNC,aAAa;MACbC,OAAO;IACT;IACA,YAAY;MACVF,MAAM;MACNC,aAAa;IACf;IACA,eAAe;MACbD,MAAM;MACNC,aAAa;MACbE,SAAS;IACX;EACF,CAAA,EACCC,KAAI,EACJF,MAAM,QAAQ,GAAA,EACd5E,QAAQA,OAAAA,EACRsD;AAEH,QAAMA;AACR;AArDsBJ;;;AcjGtB,SAAS6B,cAAc;AAIhB,IAAMC,QAAQ,mCAAA;AACnBC,SAAO;IAAEC,OAAO;EAAK,CAAA;AACrB,QAAMC,OAAAA;AACR,GAHqB;","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":"
|
|
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
|
|
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
|
-
|
|
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(
|
|
388
|
+
console.log(JSON.stringify(finalConfig, null, 2));
|
|
379
389
|
process.exit(0);
|
|
380
390
|
}
|
|
381
391
|
} catch (err) {
|
|
@@ -449,11 +459,28 @@ var optionsFromGlobalZodRegistry = /* @__PURE__ */ __name(() => {
|
|
|
449
459
|
|
|
450
460
|
// src/runCLI.ts
|
|
451
461
|
var configuration;
|
|
452
|
-
var version = isDefined2("1.20.
|
|
462
|
+
var version = isDefined2("1.20.20") ? "1.20.20" : "unknown";
|
|
453
463
|
function getConfiguration() {
|
|
454
464
|
return configuration;
|
|
455
465
|
}
|
|
456
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");
|
|
457
484
|
async function getLocatorsFromConfig(actors, configuration2) {
|
|
458
485
|
const actorConfigs = [];
|
|
459
486
|
for (const actorName of actors) {
|
|
@@ -475,6 +502,9 @@ async function getLocatorsFromConfig(actors, configuration2) {
|
|
|
475
502
|
const orchestrator = await Orchestrator.create({
|
|
476
503
|
logger
|
|
477
504
|
});
|
|
505
|
+
const walletReport = await initializeResolvedWalletReport(actors, configuration2);
|
|
506
|
+
logger.info(formatWalletReport(walletReport));
|
|
507
|
+
await pauseForInsecureGenesisWalletIfNeeded(walletReport, logger);
|
|
478
508
|
const context = await contextFromConfigWithoutLocator(config2, logger, "xl1-cli", version);
|
|
479
509
|
const locators = await locatorsFromConfig(context, config2);
|
|
480
510
|
process.on("SIGINT", () => {
|
|
@@ -518,6 +548,10 @@ $0 <command> [options]`).parserConfiguration({
|
|
|
518
548
|
description: "Path to a config file to use instead of the default search.",
|
|
519
549
|
alias: "c"
|
|
520
550
|
},
|
|
551
|
+
"mnemonic": {
|
|
552
|
+
type: "string",
|
|
553
|
+
description: "Shared root mnemonic used by actors that do not define their own mnemonic."
|
|
554
|
+
},
|
|
521
555
|
"dump-config": {
|
|
522
556
|
type: "boolean",
|
|
523
557
|
description: "Just process the configuration and print the resolved config to stdout, then exit.",
|
package/dist/node/xl1.mjs.map
CHANGED
|
@@ -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', { 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","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","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","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.
|
|
3
|
+
"version": "1.20.20",
|
|
4
4
|
"description": "XYO Layer One CLI Library",
|
|
5
5
|
"homepage": "https://xylabs.com",
|
|
6
6
|
"bugs": {
|
|
@@ -38,11 +38,11 @@
|
|
|
38
38
|
"README.md"
|
|
39
39
|
],
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@xyo-network/xl1-sdk": "~1.26.
|
|
41
|
+
"@xyo-network/xl1-sdk": "~1.26.31",
|
|
42
42
|
"dotenv": "~17.4.2",
|
|
43
43
|
"yargs": "~18.0.0",
|
|
44
|
-
"@xyo-network/chain-
|
|
45
|
-
"@xyo-network/chain-
|
|
44
|
+
"@xyo-network/chain-api": "~1.20.20",
|
|
45
|
+
"@xyo-network/chain-orchestration": "~1.20.20"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@opentelemetry/api": "^1.9.0",
|
|
@@ -108,19 +108,19 @@
|
|
|
108
108
|
"axios": "^1.15.0",
|
|
109
109
|
"esbuild": ">=0.18",
|
|
110
110
|
"ethers": "^6.16.0",
|
|
111
|
-
"lmdb": "~3.5.
|
|
111
|
+
"lmdb": "~3.5.4",
|
|
112
112
|
"mongodb": "~7.1.1",
|
|
113
113
|
"pako": "~2.1.0",
|
|
114
114
|
"typescript": "~5.9.3",
|
|
115
115
|
"vite": "^8.0.8",
|
|
116
116
|
"vitest": "^4.1.4",
|
|
117
117
|
"zod": "~4.3.6",
|
|
118
|
-
"@xyo-network/chain-
|
|
119
|
-
"@xyo-network/chain-
|
|
120
|
-
"@xyo-network/chain-
|
|
121
|
-
"@xyo-network/chain-
|
|
122
|
-
"@xyo-network/chain-
|
|
123
|
-
"@xyo-network/chain-
|
|
118
|
+
"@xyo-network/chain-mempool": "~1.20.20",
|
|
119
|
+
"@xyo-network/chain-telemetry": "~1.20.20",
|
|
120
|
+
"@xyo-network/chain-bridge": "~1.20.20",
|
|
121
|
+
"@xyo-network/chain-reward-redemption": "~1.20.20",
|
|
122
|
+
"@xyo-network/chain-services": "~1.20.20",
|
|
123
|
+
"@xyo-network/chain-producer": "~1.20.20"
|
|
124
124
|
},
|
|
125
125
|
"peerDependencies": {
|
|
126
126
|
"@xylabs/express": "^5.0.95",
|