@xyo-network/xl1-cli-lib 1.20.29 → 1.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/node/commands/index.d.ts +0 -7
  2. package/dist/node/commands/index.d.ts.map +1 -1
  3. package/dist/node/commands/start/startCommand.d.ts +1 -1
  4. package/dist/node/commands/start/startCommand.d.ts.map +1 -1
  5. package/dist/node/index.mjs +33 -208
  6. package/dist/node/index.mjs.map +1 -1
  7. package/dist/node/runCLI.d.ts.map +1 -1
  8. package/dist/node/xl1.mjs +33 -208
  9. package/dist/node/xl1.mjs.map +1 -1
  10. package/package.json +87 -85
  11. package/dist/node/commands/api/apiCommand.d.ts +0 -5
  12. package/dist/node/commands/api/apiCommand.d.ts.map +0 -1
  13. package/dist/node/commands/api/index.d.ts +0 -2
  14. package/dist/node/commands/api/index.d.ts.map +0 -1
  15. package/dist/node/commands/bridge/bridgeCommand.d.ts +0 -5
  16. package/dist/node/commands/bridge/bridgeCommand.d.ts.map +0 -1
  17. package/dist/node/commands/bridge/index.d.ts +0 -3
  18. package/dist/node/commands/bridge/index.d.ts.map +0 -1
  19. package/dist/node/commands/bridge/runBridge.d.ts +0 -6
  20. package/dist/node/commands/bridge/runBridge.d.ts.map +0 -1
  21. package/dist/node/commands/finalizer/index.d.ts +0 -2
  22. package/dist/node/commands/finalizer/index.d.ts.map +0 -1
  23. package/dist/node/commands/finalizer/runFinalizer.d.ts +0 -6
  24. package/dist/node/commands/finalizer/runFinalizer.d.ts.map +0 -1
  25. package/dist/node/commands/mempool/index.d.ts +0 -2
  26. package/dist/node/commands/mempool/index.d.ts.map +0 -1
  27. package/dist/node/commands/mempool/mempoolCommand.d.ts +0 -5
  28. package/dist/node/commands/mempool/mempoolCommand.d.ts.map +0 -1
  29. package/dist/node/commands/producer/index.d.ts +0 -2
  30. package/dist/node/commands/producer/index.d.ts.map +0 -1
  31. package/dist/node/commands/producer/producerCommand.d.ts +0 -5
  32. package/dist/node/commands/producer/producerCommand.d.ts.map +0 -1
  33. package/dist/node/commands/rewardRedemption/index.d.ts +0 -3
  34. package/dist/node/commands/rewardRedemption/index.d.ts.map +0 -1
  35. package/dist/node/commands/rewardRedemption/rewardRedemptionCommand.d.ts +0 -5
  36. package/dist/node/commands/rewardRedemption/rewardRedemptionCommand.d.ts.map +0 -1
  37. package/dist/node/commands/rewardRedemption/runRewardRedemptionApi.d.ts +0 -6
  38. package/dist/node/commands/rewardRedemption/runRewardRedemptionApi.d.ts.map +0 -1
  39. package/dist/node/commands/types.d.ts +0 -8
  40. package/dist/node/commands/types.d.ts.map +0 -1
@@ -1,10 +1,3 @@
1
- export * from './api/index.ts';
2
- export * from './bridge/index.ts';
3
- export * from './finalizer/index.ts';
4
- export * from './mempool/index.ts';
5
- export * from './producer/index.ts';
6
- export * from './rewardRedemption/index.ts';
7
1
  export * from './start/index.ts';
8
- export * from './types.ts';
9
2
  export * from './withDeprecationWarning.ts';
10
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,6BAA6B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,6BAA6B,CAAA"}
@@ -1,5 +1,5 @@
1
+ import type { GetLocatorsFromConfig } from '@xyo-network/chain-orchestration';
1
2
  import type { Config } from '@xyo-network/xl1-sdk';
2
3
  import type { CommandModule } from 'yargs';
3
- import type { GetLocatorsFromConfig } from '../types.ts';
4
4
  export declare function startCommand(getConfiguration: () => Config, getLocatorsFromConfig: GetLocatorsFromConfig): CommandModule;
5
5
  //# sourceMappingURL=startCommand.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"startCommand.d.ts","sourceRoot":"","sources":["../../../../src/commands/start/startCommand.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACO,MAAM,EACxB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EACgB,aAAa,EACxC,MAAM,OAAO,CAAA;AAMd,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AA4ExD,wBAAgB,YAAY,CAAC,gBAAgB,EAAE,MAAM,MAAM,EAAE,qBAAqB,EAAE,qBAAqB,GAAG,aAAa,CA6BxH"}
1
+ {"version":3,"file":"startCommand.d.ts","sourceRoot":"","sources":["../../../../src/commands/start/startCommand.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACO,qBAAqB,EACvC,MAAM,kCAAkC,CAAA;AAWzC,OAAO,KAAK,EAAE,MAAM,EAAkC,MAAM,sBAAsB,CAAA;AAClF,OAAO,KAAK,EACgB,aAAa,EACxC,MAAM,OAAO,CAAA;AA2Ed,wBAAgB,YAAY,CAAC,gBAAgB,EAAE,MAAM,MAAM,EAAE,qBAAqB,EAAE,qBAAqB,GAAG,aAAa,CA6BxH"}
@@ -101,201 +101,26 @@ var initLogger = /* @__PURE__ */ __name((config2) => {
101
101
  import { stdin as input, stdout as output } from "process";
102
102
  import { createInterface } from "readline/promises";
103
103
  import { isDefined as isDefined3 } from "@xylabs/sdk-js";
104
+ import { apiCommand } from "@xyo-network/chain-api";
105
+ import { bridgeCommand } from "@xyo-network/chain-bridge";
106
+ import { finalizerCommand } from "@xyo-network/chain-finalizer";
107
+ import { mempoolCommand } from "@xyo-network/chain-mempool";
104
108
  import { contextFromConfigWithoutLocator, detectDerivationPathCollisions, formatWalletReport, initializeResolvedWalletReport, locatorsFromConfig, Orchestrator } from "@xyo-network/chain-orchestration";
109
+ import { initHealthEndpoints } from "@xyo-network/chain-orchestration-express";
110
+ import { producerCommand } from "@xyo-network/chain-producer";
111
+ import { rewardRedemptionCommand } from "@xyo-network/chain-reward-redemption";
105
112
  import { ActorConfigZod, ConfigZod as ConfigZod2 } from "@xyo-network/xl1-sdk";
106
113
  import yargs from "yargs";
107
114
  import { hideBin } from "yargs/helpers";
108
115
 
109
- // src/commands/api/apiCommand.ts
116
+ // src/commands/start/startCommand.ts
110
117
  import { getApiActor } from "@xyo-network/chain-api";
118
+ import { getBridgeActor } from "@xyo-network/chain-bridge";
119
+ import { getFinalizerActor } from "@xyo-network/chain-finalizer";
111
120
  import { getMempoolActor } from "@xyo-network/chain-mempool";
112
- import { ApiConfigZod, FinalizerConfigZod, MempoolConfigZod } from "@xyo-network/chain-orchestration";
113
-
114
- // src/commands/finalizer/runFinalizer.ts
115
- import { exists } from "@xylabs/sdk-js";
116
- import { FinalizerActor, initActorWallet } from "@xyo-network/chain-orchestration";
117
- var getFinalizerActor = /* @__PURE__ */ __name(async (config2, locator) => {
118
- const account = await initActorWallet({
119
- config: config2,
120
- logger: locator.context.logger,
121
- singletons: {},
122
- caches: {}
123
- });
124
- return await FinalizerActor.create({
125
- account,
126
- config: config2,
127
- locator
128
- });
129
- }, "getFinalizerActor");
130
-
131
- // src/commands/api/apiCommand.ts
132
- function apiCommand(getConfiguration2, getLocatorsFromConfig2) {
133
- return {
134
- command: "api",
135
- deprecated: 'Use "start api" instead',
136
- describe: "Run a XL1 API Node",
137
- handler: /* @__PURE__ */ __name(async () => {
138
- const configuration2 = getConfiguration2();
139
- const { locators, orchestrator } = await getLocatorsFromConfig2([
140
- "api",
141
- "mempool",
142
- "finalizer"
143
- ], configuration2);
144
- const actors = await Promise.all([
145
- getApiActor(ApiConfigZod.parse(locators["api"].context.config), locators["api"]),
146
- getMempoolActor(MempoolConfigZod.parse(locators["mempool"].context.config), locators["mempool"]),
147
- getFinalizerActor(FinalizerConfigZod.parse(locators["finalizer"].context.config), locators["finalizer"])
148
- ]);
149
- for (const actor of actors) {
150
- await orchestrator.registerActor(actor);
151
- }
152
- await orchestrator.start();
153
- }, "handler")
154
- };
155
- }
156
- __name(apiCommand, "apiCommand");
157
-
158
- // src/commands/bridge/bridgeCommand.ts
159
- import { BridgeConfigZod } from "@xyo-network/chain-orchestration";
160
-
161
- // src/commands/bridge/runBridge.ts
162
- import { exists as exists2 } from "@xylabs/sdk-js";
163
- import { BridgeActor } from "@xyo-network/chain-bridge";
164
- import { initActorWallet as initActorWallet2 } from "@xyo-network/chain-orchestration";
165
- var getBridgeActor = /* @__PURE__ */ __name(async (config2, locator) => {
166
- const account = await initActorWallet2({
167
- config: config2,
168
- logger: locator.context.logger,
169
- singletons: {},
170
- caches: {}
171
- });
172
- return await BridgeActor.create({
173
- account,
174
- config: config2,
175
- locator
176
- });
177
- }, "getBridgeActor");
178
- var runBridge = /* @__PURE__ */ __name(async (config2, orchestrator, locator) => {
179
- const bridge = await getBridgeActor(config2, locator);
180
- const actors = [
181
- bridge
182
- ].filter(exists2);
183
- for (const actor of actors) {
184
- await orchestrator.registerActor(actor);
185
- }
186
- await orchestrator.start();
187
- }, "runBridge");
188
-
189
- // src/commands/bridge/bridgeCommand.ts
190
- function bridgeCommand(getConfiguration2, getLocatorsFromConfig2) {
191
- return {
192
- command: "bridge",
193
- deprecated: 'Use "start bridge" instead',
194
- describe: "Run a XL1 Bridge Node",
195
- handler: /* @__PURE__ */ __name(async () => {
196
- const configuration2 = getConfiguration2();
197
- const { locators, orchestrator } = await getLocatorsFromConfig2([
198
- "bridge"
199
- ], configuration2);
200
- await runBridge(BridgeConfigZod.parse(locators["bridge"].context.config), orchestrator, locators["bridge"]);
201
- }, "handler")
202
- };
203
- }
204
- __name(bridgeCommand, "bridgeCommand");
205
-
206
- // src/commands/mempool/mempoolCommand.ts
207
- import { runMempool } from "@xyo-network/chain-mempool";
208
- import { MempoolConfigZod as MempoolConfigZod2 } from "@xyo-network/chain-orchestration";
209
- function mempoolCommand(getConfiguration2, getLocatorsFromConfig2) {
210
- return {
211
- command: "mempool",
212
- deprecated: 'Use "start mempool" instead',
213
- describe: "Run a XL1 Mempool Node",
214
- handler: /* @__PURE__ */ __name(async () => {
215
- const configuration2 = getConfiguration2();
216
- const { locators, orchestrator } = await getLocatorsFromConfig2([
217
- "mempool"
218
- ], configuration2);
219
- await runMempool(MempoolConfigZod2.parse(locators["mempool"].context.config), orchestrator, locators["mempool"]);
220
- }, "handler")
221
- };
222
- }
223
- __name(mempoolCommand, "mempoolCommand");
224
-
225
- // src/commands/producer/producerCommand.ts
226
- import { ProducerConfigZod } from "@xyo-network/chain-orchestration";
227
- import { runProducer } from "@xyo-network/chain-producer";
228
- function producerCommand(getConfiguration2, getLocatorsFromConfig2) {
229
- return {
230
- command: "producer",
231
- deprecated: 'Use "start producer" instead',
232
- describe: "Run a XL1 Producer Node",
233
- handler: /* @__PURE__ */ __name(async () => {
234
- const configuration2 = getConfiguration2();
235
- const { locators, orchestrator } = await getLocatorsFromConfig2([
236
- "producer"
237
- ], configuration2);
238
- await runProducer(ProducerConfigZod.parse(locators["producer"].context.config), orchestrator, locators["producer"]);
239
- }, "handler")
240
- };
241
- }
242
- __name(producerCommand, "producerCommand");
243
-
244
- // src/commands/rewardRedemption/rewardRedemptionCommand.ts
245
- import { RewardRedemptionConfigZod } from "@xyo-network/chain-orchestration";
246
-
247
- // src/commands/rewardRedemption/runRewardRedemptionApi.ts
248
- import { exists as exists3 } from "@xylabs/sdk-js";
249
- import { initActorWallet as initActorWallet3 } from "@xyo-network/chain-orchestration";
250
- import { RewardRedemptionActor } from "@xyo-network/chain-reward-redemption";
251
- async function getRewardRedemptionActor(config2, locator) {
252
- const account = await initActorWallet3({
253
- config: config2,
254
- logger: locator.context.logger,
255
- singletons: {},
256
- caches: {}
257
- });
258
- return await RewardRedemptionActor.create({
259
- account,
260
- config: config2,
261
- locator
262
- });
263
- }
264
- __name(getRewardRedemptionActor, "getRewardRedemptionActor");
265
- async function runRewardRedemptionApi(config2, orchestrator, locator) {
266
- const rewardRedemption = await getRewardRedemptionActor(config2, locator);
267
- const actors = [
268
- rewardRedemption
269
- ].filter(exists3);
270
- for (const actor of actors) {
271
- await orchestrator.registerActor(actor);
272
- }
273
- await orchestrator.start();
274
- }
275
- __name(runRewardRedemptionApi, "runRewardRedemptionApi");
276
-
277
- // src/commands/rewardRedemption/rewardRedemptionCommand.ts
278
- function rewardRedemptionCommand(getConfiguration2, getLocatorsFromConfig2) {
279
- return {
280
- command: "reward-redemption-api",
281
- deprecated: 'Use "start rewardRedemption" instead',
282
- describe: "Run a XL1 Rewards Redemption API Node",
283
- handler: /* @__PURE__ */ __name(async () => {
284
- const configuration2 = getConfiguration2();
285
- const { locators, orchestrator } = await getLocatorsFromConfig2([
286
- "rewardRedemption"
287
- ], configuration2);
288
- await runRewardRedemptionApi(RewardRedemptionConfigZod.parse(locators["rewardRedemption"].context.config), orchestrator, locators["rewardRedemption"]);
289
- }, "handler")
290
- };
291
- }
292
- __name(rewardRedemptionCommand, "rewardRedemptionCommand");
293
-
294
- // src/commands/start/startCommand.ts
295
- import { getApiActor as getApiActor2 } from "@xyo-network/chain-api";
296
- import { getMempoolActor as getMempoolActor2 } from "@xyo-network/chain-mempool";
297
- import { ApiConfigZod as ApiConfigZod2, BridgeConfigZod as BridgeConfigZod2, FinalizerConfigZod as FinalizerConfigZod2, initActorAccount, MempoolConfigZod as MempoolConfigZod3, ProducerConfigZod as ProducerConfigZod2, RewardRedemptionConfigZod as RewardRedemptionConfigZod2 } from "@xyo-network/chain-orchestration";
298
- import { ProducerActor } from "@xyo-network/chain-producer";
121
+ import { ApiConfigZod, BridgeConfigZod, FinalizerConfigZod, MempoolConfigZod, ProducerConfigZod, RewardRedemptionConfigZod } from "@xyo-network/chain-orchestration";
122
+ import { getProducerActor } from "@xyo-network/chain-producer";
123
+ import { getRewardRedemptionActor } from "@xyo-network/chain-reward-redemption";
299
124
  var KNOWN_ACTORS = [
300
125
  "api",
301
126
  "bridge",
@@ -321,36 +146,27 @@ __name(getDefaultActors, "getDefaultActors");
321
146
  async function buildActor(name, locator) {
322
147
  switch (name) {
323
148
  case "api": {
324
- const config2 = ApiConfigZod2.parse(locator.context.config);
325
- return await getApiActor2(config2, locator);
149
+ const config2 = ApiConfigZod.parse(locator.context.config);
150
+ return await getApiActor(config2, locator);
326
151
  }
327
152
  case "bridge": {
328
- const config2 = BridgeConfigZod2.parse(locator.context.config);
153
+ const config2 = BridgeConfigZod.parse(locator.context.config);
329
154
  return await getBridgeActor(config2, locator);
330
155
  }
331
156
  case "mempool": {
332
- const config2 = MempoolConfigZod3.parse(locator.context.config);
333
- return await getMempoolActor2(config2, locator);
157
+ const config2 = MempoolConfigZod.parse(locator.context.config);
158
+ return await getMempoolActor(config2, locator);
334
159
  }
335
160
  case "producer": {
336
- const config2 = ProducerConfigZod2.parse(locator.context.config);
337
- const account = await initActorAccount({
338
- ...locator.context,
339
- config: config2
340
- });
341
- return await ProducerActor.create({
342
- config: config2,
343
- locator,
344
- name: "xl1-producer",
345
- account
346
- });
161
+ const config2 = ProducerConfigZod.parse(locator.context.config);
162
+ return await getProducerActor(config2, locator);
347
163
  }
348
164
  case "rewardRedemption": {
349
- const config2 = RewardRedemptionConfigZod2.parse(locator.context.config);
165
+ const config2 = RewardRedemptionConfigZod.parse(locator.context.config);
350
166
  return await getRewardRedemptionActor(config2, locator);
351
167
  }
352
168
  case "finalizer": {
353
- const config2 = FinalizerConfigZod2.parse(locator.context.config);
169
+ const config2 = FinalizerConfigZod.parse(locator.context.config);
354
170
  return await getFinalizerActor(config2, locator);
355
171
  }
356
172
  default: {
@@ -458,9 +274,10 @@ var optionsFromGlobalZodRegistry = /* @__PURE__ */ __name(() => {
458
274
  }, "optionsFromGlobalZodRegistry");
459
275
 
460
276
  // src/runCLI.ts
277
+ var DEFAULT_HEALTH_CHECK_PORT = 9090;
461
278
  var configuration;
462
279
  var skipInsecureConfirm = false;
463
- var version = isDefined3("1.20.29") ? "1.20.29" : "unknown";
280
+ var version = isDefined3("1.21.0") ? "1.21.0" : "unknown";
464
281
  function getConfiguration() {
465
282
  return configuration;
466
283
  }
@@ -512,10 +329,18 @@ async function getLocatorsFromConfig(actors, configuration2) {
512
329
  }
513
330
  const onInsecureGenesisConfirm = skipInsecureConfirm ? void 0 : async () => await promptForInsecureGenesisConfirmation(logger);
514
331
  const locators = await locatorsFromConfig(context, config2, onInsecureGenesisConfirm);
332
+ const healthCheckPort = configuration2.healthCheckPort ?? DEFAULT_HEALTH_CHECK_PORT;
333
+ const healthServer = healthCheckPort > 0 && context.statusReporter !== void 0 ? await initHealthEndpoints({
334
+ logger,
335
+ port: healthCheckPort,
336
+ readiness: orchestrator,
337
+ statusMonitor: context.statusReporter
338
+ }) : void 0;
515
339
  process.on("SIGINT", () => {
516
340
  void (async () => {
517
341
  try {
518
342
  logger.log("\nSIGINT received. Attempting graceful shutdown...");
343
+ healthServer?.close();
519
344
  await orchestrator?.stop();
520
345
  logger.log("Orchestrator stopped, exiting now.");
521
346
  process.exit(0);
@@ -548,7 +373,7 @@ $0 <command> [options]`).parserConfiguration({
548
373
  configuration = config2;
549
374
  });
550
375
  skipInsecureConfirm = Boolean(argv2["skip-insecure-confirm"]);
551
- }).options(optionsFromGlobalZodRegistry()).wrap(y.terminalWidth()).command(withDeprecationWarning(apiCommand(getConfiguration, getLocatorsFromConfig))).command(withDeprecationWarning(bridgeCommand(getConfiguration, getLocatorsFromConfig))).command(withDeprecationWarning(mempoolCommand(getConfiguration, getLocatorsFromConfig))).command(withDeprecationWarning(producerCommand(getConfiguration, getLocatorsFromConfig))).command(withDeprecationWarning(rewardRedemptionCommand(getConfiguration, getLocatorsFromConfig))).command(startCommand(getConfiguration, getLocatorsFromConfig)).options({
376
+ }).options(optionsFromGlobalZodRegistry()).wrap(y.terminalWidth()).command(withDeprecationWarning(apiCommand(getConfiguration, getLocatorsFromConfig))).command(withDeprecationWarning(bridgeCommand(getConfiguration, getLocatorsFromConfig))).command(withDeprecationWarning(finalizerCommand(getConfiguration, getLocatorsFromConfig))).command(withDeprecationWarning(mempoolCommand(getConfiguration, getLocatorsFromConfig))).command(withDeprecationWarning(producerCommand(getConfiguration, getLocatorsFromConfig))).command(withDeprecationWarning(rewardRedemptionCommand(getConfiguration, getLocatorsFromConfig))).command(startCommand(getConfiguration, getLocatorsFromConfig)).options({
552
377
  "config": {
553
378
  type: "string",
554
379
  description: "Path to a config file to use instead of the default search.",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/configMiddleware.ts","../../src/initLogger.ts","../../src/runCLI.ts","../../src/commands/api/apiCommand.ts","../../src/commands/finalizer/runFinalizer.ts","../../src/commands/bridge/bridgeCommand.ts","../../src/commands/bridge/runBridge.ts","../../src/commands/mempool/mempoolCommand.ts","../../src/commands/producer/producerCommand.ts","../../src/commands/rewardRedemption/rewardRedemptionCommand.ts","../../src/commands/rewardRedemption/runRewardRedemptionApi.ts","../../src/commands/start/startCommand.ts","../../src/commands/withDeprecationWarning.ts","../../src/images.ts","../../src/optionsFromGlobalZodRegistry.ts","../../src/start.ts"],"sourcesContent":["import { createDeepMerge, isDefined } from '@xylabs/sdk-js'\nimport {\n ActorMnemonicNotAllowedError,\n assertNoActorMnemonics,\n ConfigFileNotFoundError,\n tryParseConfig,\n} from '@xyo-network/chain-orchestration'\nimport type { Config } from '@xyo-network/xl1-sdk'\nimport {\n ConfigZod, isZodError, resolveConfig,\n} from '@xyo-network/xl1-sdk'\n\nconst deepMerge = createDeepMerge({ arrayStrategy: 'concat' })\ntype ConfigWithMnemonic = Config & { mnemonic?: string }\n\n/**\n * Yargs `.env()` with `dot-notation` turns `XL1_ACTORS__0__NAME=foo` into\n * `{ actors: { '0': { name: 'foo' } } }` — an object keyed by string indices\n * rather than an array. Normalize that back into an array so ConfigZod's\n * `actors` array schema accepts it.\n */\nfunction coerceActorsArray(argv: Record<string, unknown>): Record<string, unknown> {\n const actors = argv.actors\n if (actors === undefined || Array.isArray(actors)) return argv\n if (typeof actors !== 'object' || actors === null) return argv\n const entries = Object.entries(actors as Record<string, unknown>)\n const numericEntries = entries\n .map(([key, value]) => [Number(key), value] as const)\n .filter(([key]) => Number.isInteger(key) && key >= 0)\n if (numericEntries.length !== entries.length) return argv\n const asArray: unknown[] = []\n for (const [key, value] of numericEntries) asArray[key] = value\n return { ...argv, actors: asArray }\n}\n\nfunction safeParseOrThrow(input: unknown): Config {\n const result = ConfigZod.safeParse(input)\n if (!result.success) throw result.error\n return result.data as Config\n}\n\nasync function buildFinalConfig(argv: Record<string, unknown>): Promise<ConfigWithMnemonic> {\n // Parse the various config sources\n const configPath = argv.config as string | undefined\n const parsedConfigFile = await tryParseConfig({ configPath }) as ConfigWithMnemonic // Config file\n const rootMnemonicFromFile = typeof parsedConfigFile.mnemonic === 'string' ? parsedConfigFile.mnemonic : undefined\n const normalizedArgv = coerceActorsArray(argv)\n const parsedConfigArgs = ConfigZod.safeParse(normalizedArgv).data ?? {} // Command-line arguments & ENV VARs\n const rootMnemonicFromArgs = typeof normalizedArgv.mnemonic === 'string' ? normalizedArgv.mnemonic : undefined\n // Deep merge with precedence\n // TODO: Would like precedence to be defaults < file < ENV < CLI Args\n // but there is currently no way to determine which are defaults vs\n // user-supplied CLI Args since we set the CLI args to the defaults\n // and receive a flattened object. We might need to manually invoke\n // the parser without the defaults to achieve this.\n const mergedConfig = safeParseOrThrow(deepMerge(parsedConfigFile, parsedConfigArgs))\n const validated = safeParseOrThrow(resolveConfig(safeParseOrThrow(mergedConfig)))\n const rootMnemonic = rootMnemonicFromArgs ?? rootMnemonicFromFile\n return isDefined(rootMnemonic) ? { ...validated, mnemonic: rootMnemonic } : validated\n}\n\nexport async function configMiddleware(argv: Record<string, unknown>, setConfiguration: (config: Config) => void): Promise<void> {\n try {\n const finalConfig = await buildFinalConfig(argv)\n // Hard-fail if any actor was configured with its own mnemonic. Mnemonics\n // must live at the root; actors pick their wallet via accountPath.\n assertNoActorMnemonics(finalConfig)\n setConfiguration(finalConfig as Config)\n\n // Check if user wants to dump config and exit\n if (argv['dump-config']) {\n console.log(JSON.stringify(finalConfig, null, 2))\n // eslint-disable-next-line unicorn/no-process-exit\n process.exit(0)\n }\n } catch (err) {\n if (err instanceof ConfigFileNotFoundError) {\n console.error(`${err.message}. Check the path passed to --config/-c and try again.`)\n } else if (err instanceof ActorMnemonicNotAllowedError) {\n console.error(err.message)\n } else if (isZodError(err)) {\n console.error(`Zod error: ${err.message}`)\n } else {\n console.error(`Error parsing configuration: ${err}`)\n }\n if (!(err instanceof ConfigFileNotFoundError) && !(err instanceof ActorMnemonicNotAllowedError)) {\n console.error(`Stack: ${err instanceof Error ? err.stack : 'N/A'}`)\n }\n throw new Error('Invalid configuration', { cause: err })\n }\n}\n","import type { Logger, LogLevelValue } from '@xylabs/sdk-js'\nimport {\n Base,\n ConsoleLogger, isDefined,\n LogLevel, SilentLogger,\n} from '@xylabs/sdk-js'\nimport type { BaseConfig } from '@xyo-network/xl1-sdk'\n\nexport const initLogger = (config: BaseConfig): Logger => {\n let logger: Logger\n if (config.log.silent) {\n logger = new SilentLogger()\n } else {\n let level: LogLevelValue | undefined\n if (isDefined(config.log.logLevel)) {\n const parsed = LogLevel[config.log.logLevel.toLowerCase() as keyof typeof LogLevel]\n if (isDefined(parsed)) level = parsed\n }\n logger = new ConsoleLogger(level)\n }\n Base.defaultLogger = logger\n return logger\n}\n","import { stdin as input, stdout as output } from 'node:process'\nimport { createInterface } from 'node:readline/promises'\n\nimport { isDefined } from '@xylabs/sdk-js'\nimport {\n contextFromConfigWithoutLocator, detectDerivationPathCollisions, formatWalletReport, initializeResolvedWalletReport,\n locatorsFromConfig, Orchestrator,\n} from '@xyo-network/chain-orchestration'\nimport type { ActorConfig, Config } from '@xyo-network/xl1-sdk'\nimport { ActorConfigZod, ConfigZod } from '@xyo-network/xl1-sdk'\nimport type { Argv } from 'yargs'\nimport yargs from 'yargs'\nimport { hideBin } from 'yargs/helpers'\n\nimport {\n apiCommand,\n bridgeCommand,\n mempoolCommand,\n producerCommand,\n rewardRedemptionCommand,\n startCommand,\n withDeprecationWarning,\n} from './commands/index.ts'\nimport { configMiddleware } from './configMiddleware.ts'\nimport { XL1LogoColorizedAscii } from './images.ts'\nimport { initLogger } from './initLogger.ts'\nimport { optionsFromGlobalZodRegistry } from './optionsFromGlobalZodRegistry.ts'\n\n/** Version string injected by Rollup at build time. */\ndeclare const __VERSION__: string\n\n/**\n * The configuration that will be used throughout the CLI.\n * This is materialized after parsing the command-line arguments,\n * environment variables, and defaults.\n */\nlet configuration: Config\nlet skipInsecureConfirm = false\n\nconst version = isDefined(__VERSION__) ? __VERSION__ : 'unknown'\n\nfunction getConfiguration(): Config {\n return configuration\n}\n\nasync function promptForInsecureGenesisConfirmation(logger: ReturnType<typeof initLogger>) {\n if (!input.isTTY || !output.isTTY) {\n logger.warn('Insecure genesis reward wallet is active. Interactive confirmation skipped because this session is not a TTY.')\n return\n }\n const rl = createInterface({ input, output })\n try {\n await rl.question('Insecure genesis reward wallet is active. Hit RETURN to continue.')\n } finally {\n rl.close()\n }\n}\n\nasync function getLocatorsFromConfig(actors: string[], configuration: Config) {\n const actorConfigs: ActorConfig[] = []\n for (const actorName of actors) {\n const existingConfig = configuration.actors.find(actor => actor.name === actorName)\n if (existingConfig) {\n actorConfigs.push(existingConfig)\n } else {\n const actorConfig = ActorConfigZod.loose().parse({ name: actorName })\n actorConfigs.push(actorConfig)\n }\n }\n\n const config = ConfigZod.parse({ ...configuration, actors: actorConfigs })\n\n const logger = initLogger(configuration)\n const orchestrator = await Orchestrator.create({ logger })\n const collision = detectDerivationPathCollisions(actors, configuration)\n if (collision) throw collision\n const walletReport = await initializeResolvedWalletReport(actors, configuration)\n logger.info(formatWalletReport(walletReport))\n const context = await contextFromConfigWithoutLocator(config, logger, 'xl1-cli', version)\n if (skipInsecureConfirm) {\n logger.warn('Insecure genesis reward wallet is active. Interactive confirmation skipped via --skip-insecure-confirm.')\n }\n const onInsecureGenesisConfirm = skipInsecureConfirm\n ? undefined\n : async () => await promptForInsecureGenesisConfirmation(logger)\n const locators = await locatorsFromConfig(context, config, onInsecureGenesisConfirm)\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 skipInsecureConfirm = Boolean(argv['skip-insecure-confirm'])\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 'skip-insecure-confirm': {\n type: 'boolean',\n description: 'Skip the interactive RETURN confirmation when the built-in dev mnemonic / insecure genesis reward wallet is active.',\n default: false,\n },\n })\n .help()\n .alias('help', 'h')\n .version(version)\n .argv\n\n await argv\n}\n","import { getApiActor } from '@xyo-network/chain-api'\nimport { getMempoolActor } from '@xyo-network/chain-mempool'\nimport {\n ApiConfigZod, FinalizerConfigZod,\n MempoolConfigZod,\n} from '@xyo-network/chain-orchestration'\nimport type { Config } from '@xyo-network/xl1-sdk'\nimport type { CommandModule } from 'yargs'\n\nimport { getFinalizerActor } from '../finalizer/index.ts'\nimport type { GetLocatorsFromConfig } from '../types.ts'\n\nexport function apiCommand(getConfiguration: () => Config, getLocatorsFromConfig: GetLocatorsFromConfig): CommandModule {\n return {\n command: 'api',\n deprecated: 'Use \"start api\" instead',\n describe: 'Run a XL1 API Node',\n handler: async () => {\n const configuration = getConfiguration()\n const { locators, orchestrator } = await getLocatorsFromConfig(['api', 'mempool', 'finalizer'], configuration)\n const actors = await Promise.all([getApiActor(\n ApiConfigZod.parse(locators['api'].context.config),\n locators['api'],\n ), getMempoolActor(\n MempoolConfigZod.parse(locators['mempool'].context.config),\n locators['mempool'],\n ), getFinalizerActor(\n FinalizerConfigZod.parse(locators['finalizer'].context.config),\n locators['finalizer'],\n )])\n\n for (const actor of actors) {\n await orchestrator.registerActor(actor)\n }\n\n await orchestrator.start()\n },\n }\n}\n","import { exists } from '@xylabs/sdk-js'\nimport type { FinalizerConfig, OrchestratorInstance } from '@xyo-network/chain-orchestration'\nimport { FinalizerActor, initActorWallet } from '@xyo-network/chain-orchestration'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\n\nexport const getFinalizerActor = async (\n config: FinalizerConfig,\n locator: ProviderFactoryLocatorInstance,\n) => {\n const account = await initActorWallet({\n config, logger: locator.context.logger, singletons: {}, caches: {},\n })\n // Create actors\n return await FinalizerActor.create({\n account, config, locator,\n })\n}\n\nexport const runFinalizer = async (\n config: FinalizerConfig,\n orchestrator: OrchestratorInstance,\n locator: ProviderFactoryLocatorInstance,\n) => {\n const finalizer = await getFinalizerActor(config, locator)\n const actors = [finalizer].filter(exists)\n\n for (const actor of actors) {\n // Register the actor with the orchestrator\n await orchestrator.registerActor(actor)\n }\n // Start the orchestrator => automatically activates the actor\n await orchestrator.start()\n}\n","import { BridgeConfigZod } from '@xyo-network/chain-orchestration'\nimport type { Config } from '@xyo-network/xl1-sdk'\nimport type { CommandModule } from 'yargs'\n\nimport type { GetLocatorsFromConfig } from '../types.ts'\nimport { runBridge } from './runBridge.ts'\n\nexport function bridgeCommand(getConfiguration: () => Config, getLocatorsFromConfig: GetLocatorsFromConfig): CommandModule {\n return {\n command: 'bridge',\n deprecated: 'Use \"start bridge\" instead',\n describe: 'Run a XL1 Bridge Node',\n handler: async () => {\n const configuration = getConfiguration()\n const { locators, orchestrator } = await getLocatorsFromConfig(['bridge'], configuration)\n await runBridge(BridgeConfigZod.parse(locators['bridge'].context.config), orchestrator, locators['bridge'])\n },\n }\n}\n","import { exists } from '@xylabs/sdk-js'\nimport { BridgeActor } from '@xyo-network/chain-bridge'\nimport type { BridgeConfig, OrchestratorInstance } from '@xyo-network/chain-orchestration'\nimport { initActorWallet } from '@xyo-network/chain-orchestration'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\n\nexport const getBridgeActor = async (\n config: BridgeConfig,\n locator: ProviderFactoryLocatorInstance,\n) => {\n const account = await initActorWallet({\n config, logger: locator.context.logger, singletons: {}, caches: {},\n })\n // Create actors\n return await BridgeActor.create({\n account, config, locator,\n })\n}\n\nexport const runBridge = async (\n config: BridgeConfig,\n orchestrator: OrchestratorInstance,\n locator: ProviderFactoryLocatorInstance,\n) => {\n const bridge = await getBridgeActor(config, locator)\n const actors = [bridge].filter(exists)\n\n for (const actor of actors) {\n // Register the actor with the orchestrator\n await orchestrator.registerActor(actor)\n }\n // Start the orchestrator => automatically activates the actor\n await orchestrator.start()\n}\n","import { runMempool } from '@xyo-network/chain-mempool'\nimport { MempoolConfigZod } from '@xyo-network/chain-orchestration'\nimport type { Config } from '@xyo-network/xl1-sdk'\nimport type { CommandModule } from 'yargs'\n\nimport type { GetLocatorsFromConfig } from '../types.ts'\n\nexport function mempoolCommand(getConfiguration: () => Config, getLocatorsFromConfig: GetLocatorsFromConfig): CommandModule {\n return {\n command: 'mempool',\n deprecated: 'Use \"start mempool\" instead',\n describe: 'Run a XL1 Mempool Node',\n handler: async () => {\n const configuration = getConfiguration()\n const { locators, orchestrator } = await getLocatorsFromConfig(['mempool'], configuration)\n await runMempool(MempoolConfigZod.parse(locators['mempool'].context.config), orchestrator, locators['mempool'])\n },\n }\n}\n","import { ProducerConfigZod } from '@xyo-network/chain-orchestration'\nimport { runProducer } from '@xyo-network/chain-producer'\nimport type { Config } from '@xyo-network/xl1-sdk'\nimport type { CommandModule } from 'yargs'\n\nimport type { GetLocatorsFromConfig } from '../types.ts'\n\nexport function producerCommand(getConfiguration: () => Config, getLocatorsFromConfig: GetLocatorsFromConfig): CommandModule {\n return {\n command: 'producer',\n deprecated: 'Use \"start producer\" instead',\n describe: 'Run a XL1 Producer Node',\n handler: async () => {\n const configuration = getConfiguration()\n const { locators, orchestrator } = await getLocatorsFromConfig(['producer'], configuration)\n await runProducer(ProducerConfigZod.parse(locators['producer'].context.config), orchestrator, locators['producer'])\n },\n }\n}\n","import { RewardRedemptionConfigZod } from '@xyo-network/chain-orchestration'\nimport type { Config } from '@xyo-network/xl1-sdk'\nimport type { CommandModule } from 'yargs'\n\nimport type { GetLocatorsFromConfig } from '../types.ts'\nimport { runRewardRedemptionApi } from './runRewardRedemptionApi.ts'\n\nexport function rewardRedemptionCommand(getConfiguration: () => Config, getLocatorsFromConfig: GetLocatorsFromConfig): CommandModule {\n return {\n command: 'reward-redemption-api',\n deprecated: 'Use \"start rewardRedemption\" instead',\n describe: 'Run a XL1 Rewards Redemption API Node',\n handler: async () => {\n const configuration = getConfiguration()\n const { locators, orchestrator } = await getLocatorsFromConfig(['rewardRedemption'], configuration)\n await runRewardRedemptionApi(RewardRedemptionConfigZod.parse(locators['rewardRedemption'].context.config), orchestrator, locators['rewardRedemption'])\n },\n }\n}\n","import { exists } from '@xylabs/sdk-js'\nimport type {\n OrchestratorInstance,\n RewardRedemptionConfig,\n} from '@xyo-network/chain-orchestration'\nimport { initActorWallet } from '@xyo-network/chain-orchestration'\nimport { RewardRedemptionActor } from '@xyo-network/chain-reward-redemption'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\n\nexport async function getRewardRedemptionActor(\n config: RewardRedemptionConfig,\n locator: ProviderFactoryLocatorInstance,\n) {\n const account = await initActorWallet({\n config, logger: locator.context.logger, singletons: {}, caches: {},\n })\n return await RewardRedemptionActor.create({\n account, config, locator,\n })\n}\n\nexport async function runRewardRedemptionApi(\n config: RewardRedemptionConfig,\n orchestrator: OrchestratorInstance,\n locator: ProviderFactoryLocatorInstance,\n) {\n const rewardRedemption = await getRewardRedemptionActor(config, locator)\n const actors = [rewardRedemption].filter(exists)\n\n for (const actor of actors) {\n // Register the actor with the orchestrator\n await orchestrator.registerActor(actor)\n }\n // Start the orchestrator => automatically activates the actor\n await orchestrator.start()\n}\n","import type { CreatableName } from '@xylabs/sdk-js'\nimport { getApiActor } from '@xyo-network/chain-api'\nimport { getMempoolActor } from '@xyo-network/chain-mempool'\nimport type { OrchestratorInstance } from '@xyo-network/chain-orchestration'\nimport {\n ApiConfigZod,\n BridgeConfigZod,\n FinalizerConfigZod,\n initActorAccount,\n MempoolConfigZod,\n ProducerConfigZod,\n RewardRedemptionConfigZod,\n} from '@xyo-network/chain-orchestration'\nimport { ProducerActor } from '@xyo-network/chain-producer'\nimport type {\n ActorInstanceV3, Config, ProviderFactoryLocatorInstance,\n} from '@xyo-network/xl1-sdk'\nimport type {\n ArgumentsCamelCase, Argv, CommandModule,\n} from 'yargs'\n\nimport { initLogger } from '../../initLogger.ts'\nimport { getBridgeActor } from '../bridge/index.ts'\nimport { getFinalizerActor } from '../finalizer/index.ts'\nimport { getRewardRedemptionActor } from '../rewardRedemption/index.ts'\nimport type { GetLocatorsFromConfig } from '../types.ts'\n\ninterface StartArgs {\n actors?: string[]\n}\n\nconst KNOWN_ACTORS = ['api', 'bridge', 'finalizer', 'mempool', 'producer', 'rewardRedemption'] as const\n\nconst BOOT_TIMEOUT_MS = 60_000\n\nfunction getActorsFromConfig(configuration: Config): string[] | undefined {\n const enabledActors = configuration.actors\n .filter(actor => actor.enabled !== false)\n .map(actor => actor.name)\n return enabledActors.length > 0 ? enabledActors : undefined\n}\n\nfunction getDefaultActors(): string[] {\n return ['api', 'producer', 'finalizer']\n}\n\nasync function buildActor(\n name: string,\n locator: ProviderFactoryLocatorInstance,\n): Promise<ActorInstanceV3> {\n switch (name) {\n case 'api': {\n const config = ApiConfigZod.parse(locator.context.config)\n return await getApiActor(config, locator)\n }\n case 'bridge': {\n const config = BridgeConfigZod.parse(locator.context.config)\n return await getBridgeActor(config, locator)\n }\n case 'mempool': {\n const config = MempoolConfigZod.parse(locator.context.config)\n return await getMempoolActor(config, locator)\n }\n case 'producer': {\n const config = ProducerConfigZod.parse(locator.context.config)\n const account = await initActorAccount({ ...locator.context, config })\n return await ProducerActor.create({\n config, locator, name: 'xl1-producer' as CreatableName, account,\n })\n }\n case 'rewardRedemption': {\n const config = RewardRedemptionConfigZod.parse(locator.context.config)\n return await getRewardRedemptionActor(config, locator)\n }\n case 'finalizer': {\n const config = FinalizerConfigZod.parse(locator.context.config)\n return await getFinalizerActor(config, locator)\n }\n default: {\n throw new Error(`Unknown actor: ${name}`)\n }\n }\n}\n\nasync function bootActors(\n requestedActors: string[],\n locators: Record<string, ProviderFactoryLocatorInstance>,\n orchestrator: OrchestratorInstance,\n configuration: Config,\n): Promise<void> {\n const startedAt = Date.now()\n const actors = await Promise.all(requestedActors.map(name => buildActor(name, locators[name])))\n for (const actor of actors) {\n await orchestrator.registerActor(actor)\n }\n await orchestrator.start()\n await orchestrator.whenReady(BOOT_TIMEOUT_MS)\n const ms = Date.now() - startedAt\n initLogger(configuration).info(`[xl1] system ready (${requestedActors.length} actor${requestedActors.length === 1 ? '' : 's'}, ${ms}ms)`)\n}\n\nexport function startCommand(getConfiguration: () => Config, getLocatorsFromConfig: GetLocatorsFromConfig): CommandModule {\n return {\n command: ['start [actors..]', '$0'],\n describe: 'Run a full XL1 Node',\n builder: (yargs: Argv) => {\n return yargs\n .positional('actors', {\n type: 'string',\n array: true,\n choices: KNOWN_ACTORS,\n description: 'Actors to start (e.g. xl1 start api producer or xl1 start api,producer)',\n coerce: (values: string[]) => values.flatMap(v => v.split(',')),\n })\n .option('actors', {\n type: 'array',\n string: true,\n choices: KNOWN_ACTORS,\n description: 'List of actors to start (e.g. --actors api producer finalizer). Defaults to api, producer, and finalizer.',\n })\n },\n handler: async (argv: ArgumentsCamelCase<StartArgs>) => {\n const configuration = getConfiguration()\n const requestedActors = argv.actors !== undefined && argv.actors.length > 0\n ? argv.actors\n : getActorsFromConfig(configuration) ?? getDefaultActors()\n const { locators, orchestrator } = await getLocatorsFromConfig(requestedActors, configuration)\n await bootActors(requestedActors, locators, orchestrator, configuration)\n },\n }\n}\n","import { delay } from '@xylabs/sdk-js'\nimport type { CommandModule } from 'yargs'\n\nexport function withDeprecationWarning(module: CommandModule): CommandModule {\n const { deprecated, handler } = module\n if (typeof deprecated === 'string') {\n return {\n ...module,\n handler: async (argv) => {\n console.warn(`[deprecated] ${deprecated}`)\n await delay(3000)\n return handler(argv)\n },\n }\n }\n return module\n}\n","/* eslint-disable no-irregular-whitespace, @stylistic/max-len */\nexport const XL1LogoColorizedAscii = `\u001b[38;2;128;128;128m                    \u001b[0m\u001b[38;2;118;111;144m_\u001b[0m\n\u001b[38;2;128;128;128m                   \u001b[0m\u001b[38;2;72;32;223m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\n\u001b[38;2;128;128;128m                   ╠╠\u001b[0m\u001b[38;2;103;85;170m_\u001b[0m\n\u001b[38;2;128;128;128m        \u001b[0m\u001b[38;2;79;121;152m╦\u001b[0m\u001b[38;2;82;121;151m╦\u001b[0m\u001b[38;2;112;125;136m_       \u001b[0m\u001b[38;2;88;59;196m[\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;73;34;221m▒       \u001b[0m\u001b[38;2;121;121;127m_\u001b[0m\u001b[38;2;100;101;128m╔\u001b[0m\u001b[38;2;93;94;127m╦\u001b[0m\n\u001b[38;2;128;128;128m        \u001b[0m\u001b[38;2;82;121;151m²\u001b[0m\u001b[38;2;44;116;170m╠\u001b[0m\u001b[38;2;44;116;171m▒\u001b[0m\u001b[38;2;51;117;167mD\u001b[0m\u001b[38;2;80;121;152m╦\u001b[0m\u001b[38;2;111;125;136m_    \u001b[0m\u001b[38;2;67;23;232m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠    \u001b[0m\u001b[38;2;120;121;128m_\u001b[0m\u001b[38;2;100;101;127m╔\u001b[0m\u001b[38;2;79;81;127mR\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;88;90;127m╙\u001b[0m\n\u001b[38;2;128;128;128m          \u001b[0m\u001b[38;2;55;117;165m╚\u001b[0m\u001b[38;2;44;116;171m▒\u001b[0m\u001b[38;2;44;116;171m▒▒\u001b[0m\u001b[38;2;50;116;167mD\u001b[0m\u001b[38;2;80;121;152m╦ \u001b[0m\u001b[38;2;106;90;165mj\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠\u001b[0m\u001b[38;2;89;61;194mH \u001b[0m\u001b[38;2;99;100;127m╔\u001b[0m\u001b[38;2;79;80;127mD\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;71;73;128m▒▒╠\u001b[0m\n\u001b[38;2;128;128;128m           \u001b[0m\u001b[38;2;83;121;150m²\u001b[0m\u001b[38;2;44;116;170m▒\u001b[0m\u001b[38;2;44;116;171m▒▒▒ \u001b[0m\u001b[38;2;76;38;217m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠ \u001b[0m\u001b[38;2;74;76;128m╠\u001b[0m\u001b[38;2;71;73;128m▒▒▒\u001b[0m\u001b[38;2;89;90;128m╙\u001b[0m\n\u001b[38;2;128;128;128m             \u001b[0m\u001b[38;2;90;118;148m\\`\u001b[0m\u001b[38;2;89;107;153m_\u001b[0m\u001b[38;2;93;97;154m,\u001b[0m\u001b[38;2;105;89;166m╓\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠\u001b[0m\u001b[38;2;95;72;183m╓\u001b[0m\u001b[38;2;106;96;152m_\u001b[0m\u001b[38;2;100;94;143m\\`\u001b[0m\u001b[38;2;101;100;133m\\`\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;122;118;137m_\u001b[0m\u001b[38;2;113;102;153m,\u001b[0m\u001b[38;2;108;94;161m╓\u001b[0m\u001b[38;2;104;86;169m╓\u001b[0m\u001b[38;2;98;77;178m╔\u001b[0m\u001b[38;2;93;67;188m╗\u001b[0m\u001b[38;2;88;59;196mφ\u001b[0m\u001b[38;2;83;51;204m@\u001b[0m\u001b[38;2;78;42;213mD\u001b[0m\u001b[38;2;72;32;223m▒\u001b[0m\u001b[38;2;68;24;231m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠\u001b[0m\u001b[38;2;71;30;225m▒\u001b[0m\u001b[38;2;77;40;215m▒\u001b[0m\u001b[38;2;82;49;206mK\u001b[0m\u001b[38;2;87;57;198mφ\u001b[0m\u001b[38;2;91;65;190m╗\u001b[0m\u001b[38;2;97;75;180m╦\u001b[0m\u001b[38;2;103;84;171m╖\u001b[0m\u001b[38;2;107;92;163m²\u001b[0m\u001b[38;2;112;101;154m_\u001b[0m\u001b[38;2;119;112;143m_\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;106;91;164m\\`\u001b[0m\u001b[38;2;94;70;185m^\u001b[0m\u001b[38;2;89;62;193m╙\u001b[0m\u001b[38;2;85;54;201m╙\u001b[0m\u001b[38;2;80;45;210m╚\u001b[0m\u001b[38;2;74;35;220m╝\u001b[0m\u001b[38;2;69;26;229m╠\u001b[0m\u001b[38;2;66;22;233m╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠\u001b[0m\u001b[38;2;73;33;222m╝\u001b[0m\u001b[38;2;79;43;212m╩\u001b[0m\u001b[38;2;84;52;203m╜\u001b[0m\u001b[38;2;88;60;195m╙\u001b[0m\u001b[38;2;93;68;187m^\u001b[0m\u001b[38;2;100;80;175m\\`\u001b[0m\n\u001b[38;2;128;128;128m             \u001b[0m\u001b[38;2;113;84;152m\\`\u001b[0m\u001b[38;2;103;79;169m'\u001b[0m\u001b[38;2;95;72;183m\"\u001b[0m\u001b[38;2;87;57;198m╙\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠\u001b[0m\u001b[38;2;80;46;209m╜\u001b[0m\u001b[38;2;94;70;185m^\u001b[0m\u001b[38;2;102;77;175m^\u001b[0m\u001b[38;2;112;81;162m\\`\u001b[0m\u001b[38;2;115;92;155m\\`\u001b[0m\n\u001b[38;2;128;128;128m           \u001b[0m\u001b[38;2;145;116;107m,\u001b[0m\u001b[38;2;199;82;45m╠\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒╠ \u001b[0m\u001b[38;2;70;28;227m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠ \u001b[0m\u001b[38;2;189;49;97må\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠\u001b[0m\u001b[38;2;155;92;114m,\u001b[0m\n\u001b[38;2;128;128;128m          \u001b[0m\u001b[38;2;175;98;73m╔\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒▒▒\u001b[0m\u001b[38;2;197;83;47m╩ \u001b[0m\u001b[38;2;98;76;179m[\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠\u001b[0m\u001b[38;2;81;48;207mH \u001b[0m\u001b[38;2;188;51;98m╚\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠╠\u001b[0m\u001b[38;2;183;57;100mH\u001b[0m\n\u001b[38;2;128;128;128m        \u001b[0m\u001b[38;2;146;116;106m,\u001b[0m\u001b[38;2;199;82;44m╠\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;196;84;48m╩\u001b[0m\u001b[38;2;168;102;81m^    \u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠    \u001b[0m\u001b[38;2;160;87;111m'\u001b[0m\u001b[38;2;187;52;98m╚\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠\u001b[0m\u001b[38;2;156;91;113m,\u001b[0m\n\u001b[38;2;128;128;128m        \u001b[0m\u001b[38;2;198;83;46m╩\u001b[0m\u001b[38;2;194;85;50m╩\u001b[0m\u001b[38;2;167;102;82m^       \u001b[0m\u001b[38;2;81;46;209m╚\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠       \u001b[0m\u001b[38;2;159;88;112m'\u001b[0m\u001b[38;2;186;53;98m╚\u001b[0m\u001b[38;2;197;40;93m╩\u001b[0m\n\u001b[38;2;128;128;128m                  \u001b[0m\u001b[38;2;110;97;158m'\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;94;69;186mH\u001b[0m\n\u001b[38;2;128;128;128m                   \u001b[0m\u001b[38;2;68;25;230m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\n\u001b[38;2;128;128;128m                   \u001b[0m\u001b[38;2;108;93;162m²\u001b[0m\u001b[38;2;99;79;176m^\u001b[0m`\n","import type { UsageMeta } from '@xyo-network/xl1-sdk'\nimport { isUsageMeta } from '@xyo-network/xl1-sdk'\nimport type { Options } from 'yargs'\nimport { globalRegistry } from 'zod'\n\nconst usageMetaToOptions = (meta: UsageMeta): Options => {\n return meta\n}\n\nexport const optionsFromGlobalZodRegistry = (): Record<string, Options> => {\n const opts: Record<string, Options> = {}\n for (const schema of Object.values(globalRegistry._map)) {\n if (isUsageMeta(schema)) {\n if (schema.hidden) continue // skip hidden options\n opts[schema.title] = usageMetaToOptions(schema)\n }\n }\n return opts\n}\n","import { config } from 'dotenv'\n\nimport { runCLI } from './runCLI.ts'\n\nexport const start = async () => {\n config({ quiet: true })\n await runCLI()\n}\n"],"mappings":"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","names":["createDeepMerge","isDefined","ActorMnemonicNotAllowedError","assertNoActorMnemonics","ConfigFileNotFoundError","tryParseConfig","ConfigZod","isZodError","resolveConfig","deepMerge","createDeepMerge","arrayStrategy","coerceActorsArray","argv","actors","undefined","Array","isArray","entries","Object","numericEntries","map","key","value","Number","filter","isInteger","length","asArray","safeParseOrThrow","input","result","ConfigZod","safeParse","success","error","data","buildFinalConfig","configPath","config","parsedConfigFile","tryParseConfig","rootMnemonicFromFile","mnemonic","normalizedArgv","parsedConfigArgs","rootMnemonicFromArgs","mergedConfig","validated","resolveConfig","rootMnemonic","isDefined","configMiddleware","setConfiguration","finalConfig","assertNoActorMnemonics","console","log","JSON","stringify","process","exit","err","ConfigFileNotFoundError","message","ActorMnemonicNotAllowedError","isZodError","Error","stack","cause","Base","ConsoleLogger","isDefined","LogLevel","SilentLogger","initLogger","config","logger","log","silent","SilentLogger","level","isDefined","logLevel","parsed","LogLevel","toLowerCase","ConsoleLogger","Base","defaultLogger","stdin","input","stdout","output","createInterface","isDefined","contextFromConfigWithoutLocator","detectDerivationPathCollisions","formatWalletReport","initializeResolvedWalletReport","locatorsFromConfig","Orchestrator","ActorConfigZod","ConfigZod","yargs","hideBin","getApiActor","getMempoolActor","ApiConfigZod","FinalizerConfigZod","MempoolConfigZod","exists","FinalizerActor","initActorWallet","getFinalizerActor","config","locator","account","initActorWallet","logger","context","singletons","caches","FinalizerActor","create","apiCommand","getConfiguration","getLocatorsFromConfig","command","deprecated","describe","handler","configuration","locators","orchestrator","actors","Promise","all","getApiActor","ApiConfigZod","parse","context","config","getMempoolActor","MempoolConfigZod","getFinalizerActor","FinalizerConfigZod","actor","registerActor","start","BridgeConfigZod","exists","BridgeActor","initActorWallet","getBridgeActor","config","locator","account","initActorWallet","logger","context","singletons","caches","BridgeActor","create","runBridge","orchestrator","bridge","actors","filter","exists","actor","registerActor","start","bridgeCommand","getConfiguration","getLocatorsFromConfig","command","deprecated","describe","handler","configuration","locators","orchestrator","runBridge","BridgeConfigZod","parse","context","config","runMempool","MempoolConfigZod","mempoolCommand","getConfiguration","getLocatorsFromConfig","command","deprecated","describe","handler","configuration","locators","orchestrator","runMempool","MempoolConfigZod","parse","context","config","ProducerConfigZod","runProducer","producerCommand","getConfiguration","getLocatorsFromConfig","command","deprecated","describe","handler","configuration","locators","orchestrator","runProducer","ProducerConfigZod","parse","context","config","RewardRedemptionConfigZod","exists","initActorWallet","RewardRedemptionActor","getRewardRedemptionActor","config","locator","account","initActorWallet","logger","context","singletons","caches","RewardRedemptionActor","create","runRewardRedemptionApi","orchestrator","rewardRedemption","actors","filter","exists","actor","registerActor","start","rewardRedemptionCommand","getConfiguration","getLocatorsFromConfig","command","deprecated","describe","handler","configuration","locators","orchestrator","runRewardRedemptionApi","RewardRedemptionConfigZod","parse","context","config","getApiActor","getMempoolActor","ApiConfigZod","BridgeConfigZod","FinalizerConfigZod","initActorAccount","MempoolConfigZod","ProducerConfigZod","RewardRedemptionConfigZod","ProducerActor","KNOWN_ACTORS","BOOT_TIMEOUT_MS","getActorsFromConfig","configuration","enabledActors","actors","filter","actor","enabled","map","name","length","undefined","getDefaultActors","buildActor","locator","config","ApiConfigZod","parse","context","getApiActor","BridgeConfigZod","getBridgeActor","MempoolConfigZod","getMempoolActor","ProducerConfigZod","account","initActorAccount","ProducerActor","create","RewardRedemptionConfigZod","getRewardRedemptionActor","FinalizerConfigZod","getFinalizerActor","Error","bootActors","requestedActors","locators","orchestrator","startedAt","Date","now","Promise","all","registerActor","start","whenReady","ms","initLogger","info","startCommand","getConfiguration","getLocatorsFromConfig","command","describe","builder","yargs","positional","type","array","choices","description","coerce","values","flatMap","v","split","option","string","handler","argv","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","skipInsecureConfirm","version","isDefined","__VERSION__","getConfiguration","promptForInsecureGenesisConfirmation","logger","input","isTTY","output","warn","rl","createInterface","question","close","getLocatorsFromConfig","actors","actorConfigs","actorName","existingConfig","find","actor","name","push","actorConfig","ActorConfigZod","loose","parse","config","ConfigZod","initLogger","orchestrator","Orchestrator","create","collision","detectDerivationPathCollisions","walletReport","initializeResolvedWalletReport","info","formatWalletReport","context","contextFromConfigWithoutLocator","onInsecureGenesisConfirm","undefined","locators","locatorsFromConfig","process","on","log","stop","exit","err","error","runCLI","y","yargs","hideBin","argv","usage","XL1LogoColorizedAscii","parserConfiguration","env","scriptName","middleware","configMiddleware","Boolean","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/start/startCommand.ts","../../src/commands/withDeprecationWarning.ts","../../src/images.ts","../../src/optionsFromGlobalZodRegistry.ts","../../src/start.ts"],"sourcesContent":["import { createDeepMerge, isDefined } from '@xylabs/sdk-js'\nimport {\n ActorMnemonicNotAllowedError,\n assertNoActorMnemonics,\n ConfigFileNotFoundError,\n tryParseConfig,\n} from '@xyo-network/chain-orchestration'\nimport type { Config } from '@xyo-network/xl1-sdk'\nimport {\n ConfigZod, isZodError, resolveConfig,\n} from '@xyo-network/xl1-sdk'\n\nconst deepMerge = createDeepMerge({ arrayStrategy: 'concat' })\ntype ConfigWithMnemonic = Config & { mnemonic?: string }\n\n/**\n * Yargs `.env()` with `dot-notation` turns `XL1_ACTORS__0__NAME=foo` into\n * `{ actors: { '0': { name: 'foo' } } }` — an object keyed by string indices\n * rather than an array. Normalize that back into an array so ConfigZod's\n * `actors` array schema accepts it.\n */\nfunction coerceActorsArray(argv: Record<string, unknown>): Record<string, unknown> {\n const actors = argv.actors\n if (actors === undefined || Array.isArray(actors)) return argv\n if (typeof actors !== 'object' || actors === null) return argv\n const entries = Object.entries(actors as Record<string, unknown>)\n const numericEntries = entries\n .map(([key, value]) => [Number(key), value] as const)\n .filter(([key]) => Number.isInteger(key) && key >= 0)\n if (numericEntries.length !== entries.length) return argv\n const asArray: unknown[] = []\n for (const [key, value] of numericEntries) asArray[key] = value\n return { ...argv, actors: asArray }\n}\n\nfunction safeParseOrThrow(input: unknown): Config {\n const result = ConfigZod.safeParse(input)\n if (!result.success) throw result.error\n return result.data as Config\n}\n\nasync function buildFinalConfig(argv: Record<string, unknown>): Promise<ConfigWithMnemonic> {\n // Parse the various config sources\n const configPath = argv.config as string | undefined\n const parsedConfigFile = await tryParseConfig({ configPath }) as ConfigWithMnemonic // Config file\n const rootMnemonicFromFile = typeof parsedConfigFile.mnemonic === 'string' ? parsedConfigFile.mnemonic : undefined\n const normalizedArgv = coerceActorsArray(argv)\n const parsedConfigArgs = ConfigZod.safeParse(normalizedArgv).data ?? {} // Command-line arguments & ENV VARs\n const rootMnemonicFromArgs = typeof normalizedArgv.mnemonic === 'string' ? normalizedArgv.mnemonic : undefined\n // Deep merge with precedence\n // TODO: Would like precedence to be defaults < file < ENV < CLI Args\n // but there is currently no way to determine which are defaults vs\n // user-supplied CLI Args since we set the CLI args to the defaults\n // and receive a flattened object. We might need to manually invoke\n // the parser without the defaults to achieve this.\n const mergedConfig = safeParseOrThrow(deepMerge(parsedConfigFile, parsedConfigArgs))\n const validated = safeParseOrThrow(resolveConfig(safeParseOrThrow(mergedConfig)))\n const rootMnemonic = rootMnemonicFromArgs ?? rootMnemonicFromFile\n return isDefined(rootMnemonic) ? { ...validated, mnemonic: rootMnemonic } : validated\n}\n\nexport async function configMiddleware(argv: Record<string, unknown>, setConfiguration: (config: Config) => void): Promise<void> {\n try {\n const finalConfig = await buildFinalConfig(argv)\n // Hard-fail if any actor was configured with its own mnemonic. Mnemonics\n // must live at the root; actors pick their wallet via accountPath.\n assertNoActorMnemonics(finalConfig)\n setConfiguration(finalConfig as Config)\n\n // Check if user wants to dump config and exit\n if (argv['dump-config']) {\n console.log(JSON.stringify(finalConfig, null, 2))\n // eslint-disable-next-line unicorn/no-process-exit\n process.exit(0)\n }\n } catch (err) {\n if (err instanceof ConfigFileNotFoundError) {\n console.error(`${err.message}. Check the path passed to --config/-c and try again.`)\n } else if (err instanceof ActorMnemonicNotAllowedError) {\n console.error(err.message)\n } else if (isZodError(err)) {\n console.error(`Zod error: ${err.message}`)\n } else {\n console.error(`Error parsing configuration: ${err}`)\n }\n if (!(err instanceof ConfigFileNotFoundError) && !(err instanceof ActorMnemonicNotAllowedError)) {\n console.error(`Stack: ${err instanceof Error ? err.stack : 'N/A'}`)\n }\n throw new Error('Invalid configuration', { cause: err })\n }\n}\n","import type { Logger, LogLevelValue } from '@xylabs/sdk-js'\nimport {\n Base,\n ConsoleLogger, isDefined,\n LogLevel, SilentLogger,\n} from '@xylabs/sdk-js'\nimport type { BaseConfig } from '@xyo-network/xl1-sdk'\n\nexport const initLogger = (config: BaseConfig): Logger => {\n let logger: Logger\n if (config.log.silent) {\n logger = new SilentLogger()\n } else {\n let level: LogLevelValue | undefined\n if (isDefined(config.log.logLevel)) {\n const parsed = LogLevel[config.log.logLevel.toLowerCase() as keyof typeof LogLevel]\n if (isDefined(parsed)) level = parsed\n }\n logger = new ConsoleLogger(level)\n }\n Base.defaultLogger = logger\n return logger\n}\n","import { stdin as input, stdout as output } from 'node:process'\nimport { createInterface } from 'node:readline/promises'\n\nimport { isDefined } from '@xylabs/sdk-js'\nimport { apiCommand } from '@xyo-network/chain-api'\nimport { bridgeCommand } from '@xyo-network/chain-bridge'\nimport { finalizerCommand } from '@xyo-network/chain-finalizer'\nimport { mempoolCommand } from '@xyo-network/chain-mempool'\nimport {\n contextFromConfigWithoutLocator, detectDerivationPathCollisions, formatWalletReport, initializeResolvedWalletReport,\n locatorsFromConfig, Orchestrator,\n} from '@xyo-network/chain-orchestration'\nimport { initHealthEndpoints } from '@xyo-network/chain-orchestration-express'\nimport { producerCommand } from '@xyo-network/chain-producer'\nimport { rewardRedemptionCommand } from '@xyo-network/chain-reward-redemption'\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 { startCommand, withDeprecationWarning } 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\nconst DEFAULT_HEALTH_CHECK_PORT = 9090\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\nlet skipInsecureConfirm = false\n\nconst version = isDefined(__VERSION__) ? __VERSION__ : 'unknown'\n\nfunction getConfiguration(): Config {\n return configuration\n}\n\nasync function promptForInsecureGenesisConfirmation(logger: ReturnType<typeof initLogger>) {\n if (!input.isTTY || !output.isTTY) {\n logger.warn('Insecure genesis reward wallet is active. Interactive confirmation skipped because this session is not a TTY.')\n return\n }\n const rl = createInterface({ input, output })\n try {\n await rl.question('Insecure genesis reward wallet is active. Hit RETURN to continue.')\n } finally {\n rl.close()\n }\n}\n\nasync function getLocatorsFromConfig(actors: string[], configuration: Config) {\n const actorConfigs: ActorConfig[] = []\n for (const actorName of actors) {\n const existingConfig = configuration.actors.find(actor => actor.name === actorName)\n if (existingConfig) {\n actorConfigs.push(existingConfig)\n } else {\n const actorConfig = ActorConfigZod.loose().parse({ name: actorName })\n actorConfigs.push(actorConfig)\n }\n }\n\n const config = ConfigZod.parse({ ...configuration, actors: actorConfigs })\n\n const logger = initLogger(configuration)\n const orchestrator = await Orchestrator.create({ logger })\n const collision = detectDerivationPathCollisions(actors, configuration)\n if (collision) throw collision\n const walletReport = await initializeResolvedWalletReport(actors, configuration)\n logger.info(formatWalletReport(walletReport))\n const context = await contextFromConfigWithoutLocator(config, logger, 'xl1-cli', version)\n if (skipInsecureConfirm) {\n logger.warn('Insecure genesis reward wallet is active. Interactive confirmation skipped via --skip-insecure-confirm.')\n }\n const onInsecureGenesisConfirm = skipInsecureConfirm\n ? undefined\n : async () => await promptForInsecureGenesisConfirmation(logger)\n const locators = await locatorsFromConfig(context, config, onInsecureGenesisConfirm)\n\n const healthCheckPort = configuration.healthCheckPort ?? DEFAULT_HEALTH_CHECK_PORT\n const healthServer = healthCheckPort > 0 && context.statusReporter !== undefined\n ? await initHealthEndpoints({\n logger,\n port: healthCheckPort,\n readiness: orchestrator,\n statusMonitor: context.statusReporter,\n })\n : undefined\n\n // Handle cancellation (Ctrl+C)\n process.on('SIGINT', () => {\n void (async () => {\n try {\n logger.log('\\nSIGINT received. Attempting graceful shutdown...')\n healthServer?.close()\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 skipInsecureConfirm = Boolean(argv['skip-insecure-confirm'])\n })\n .options(optionsFromGlobalZodRegistry())\n .wrap(y.terminalWidth())\n .command(withDeprecationWarning(apiCommand(getConfiguration, getLocatorsFromConfig)))\n .command(withDeprecationWarning(bridgeCommand(getConfiguration, getLocatorsFromConfig)))\n .command(withDeprecationWarning(finalizerCommand(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 'skip-insecure-confirm': {\n type: 'boolean',\n description: 'Skip the interactive RETURN confirmation when the built-in dev mnemonic / insecure genesis reward wallet is active.',\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 { getBridgeActor } from '@xyo-network/chain-bridge'\nimport { getFinalizerActor } from '@xyo-network/chain-finalizer'\nimport { getMempoolActor } from '@xyo-network/chain-mempool'\nimport type {\n ActorInstanceV3, GetLocatorsFromConfig, OrchestratorInstance,\n} from '@xyo-network/chain-orchestration'\nimport {\n ApiConfigZod,\n BridgeConfigZod,\n FinalizerConfigZod,\n MempoolConfigZod,\n ProducerConfigZod,\n RewardRedemptionConfigZod,\n} from '@xyo-network/chain-orchestration'\nimport { getProducerActor } from '@xyo-network/chain-producer'\nimport { getRewardRedemptionActor } from '@xyo-network/chain-reward-redemption'\nimport type { Config, ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\nimport type {\n ArgumentsCamelCase, Argv, CommandModule,\n} from 'yargs'\n\nimport { initLogger } from '../../initLogger.ts'\n\ninterface StartArgs {\n actors?: string[]\n}\n\nconst KNOWN_ACTORS = ['api', 'bridge', 'finalizer', 'mempool', 'producer', 'rewardRedemption'] as const\n\nconst BOOT_TIMEOUT_MS = 60_000\n\nfunction getActorsFromConfig(configuration: Config): string[] | undefined {\n const enabledActors = configuration.actors\n .filter(actor => actor.enabled !== false)\n .map(actor => actor.name)\n return enabledActors.length > 0 ? enabledActors : undefined\n}\n\nfunction getDefaultActors(): string[] {\n return ['api', 'producer', 'finalizer']\n}\n\nasync function buildActor(\n name: string,\n locator: ProviderFactoryLocatorInstance,\n): Promise<ActorInstanceV3> {\n switch (name) {\n case 'api': {\n const config = ApiConfigZod.parse(locator.context.config)\n return await getApiActor(config, locator)\n }\n case 'bridge': {\n const config = BridgeConfigZod.parse(locator.context.config)\n return await getBridgeActor(config, locator)\n }\n case 'mempool': {\n const config = MempoolConfigZod.parse(locator.context.config)\n return await getMempoolActor(config, locator)\n }\n case 'producer': {\n const config = ProducerConfigZod.parse(locator.context.config)\n return await getProducerActor(config, locator)\n }\n case 'rewardRedemption': {\n const config = RewardRedemptionConfigZod.parse(locator.context.config)\n return await getRewardRedemptionActor(config, locator)\n }\n case 'finalizer': {\n const config = FinalizerConfigZod.parse(locator.context.config)\n return await getFinalizerActor(config, locator)\n }\n default: {\n throw new Error(`Unknown actor: ${name}`)\n }\n }\n}\n\nasync function bootActors(\n requestedActors: string[],\n locators: Record<string, ProviderFactoryLocatorInstance>,\n orchestrator: OrchestratorInstance,\n configuration: Config,\n): Promise<void> {\n const startedAt = Date.now()\n const actors = await Promise.all(requestedActors.map(name => buildActor(name, locators[name])))\n for (const actor of actors) {\n await orchestrator.registerActor(actor)\n }\n await orchestrator.start()\n await orchestrator.whenReady(BOOT_TIMEOUT_MS)\n const ms = Date.now() - startedAt\n initLogger(configuration).info(`[xl1] system ready (${requestedActors.length} actor${requestedActors.length === 1 ? '' : 's'}, ${ms}ms)`)\n}\n\nexport function startCommand(getConfiguration: () => Config, getLocatorsFromConfig: GetLocatorsFromConfig): CommandModule {\n return {\n command: ['start [actors..]', '$0'],\n describe: 'Run a full XL1 Node',\n builder: (yargs: Argv) => {\n return yargs\n .positional('actors', {\n type: 'string',\n array: true,\n choices: KNOWN_ACTORS,\n description: 'Actors to start (e.g. xl1 start api producer or xl1 start api,producer)',\n coerce: (values: string[]) => values.flatMap(v => v.split(',')),\n })\n .option('actors', {\n type: 'array',\n string: true,\n choices: KNOWN_ACTORS,\n description: 'List of actors to start (e.g. --actors api producer finalizer). Defaults to api, producer, and finalizer.',\n })\n },\n handler: async (argv: ArgumentsCamelCase<StartArgs>) => {\n const configuration = getConfiguration()\n const requestedActors = argv.actors !== undefined && argv.actors.length > 0\n ? argv.actors\n : getActorsFromConfig(configuration) ?? getDefaultActors()\n const { locators, orchestrator } = await getLocatorsFromConfig(requestedActors, configuration)\n await bootActors(requestedActors, locators, orchestrator, configuration)\n },\n }\n}\n","import { delay } from '@xylabs/sdk-js'\nimport type { CommandModule } from 'yargs'\n\nexport function withDeprecationWarning(module: CommandModule): CommandModule {\n const { deprecated, handler } = module\n if (typeof deprecated === 'string') {\n return {\n ...module,\n handler: async (argv) => {\n console.warn(`[deprecated] ${deprecated}`)\n await delay(3000)\n return handler(argv)\n },\n }\n }\n return module\n}\n","/* eslint-disable no-irregular-whitespace, @stylistic/max-len */\nexport const XL1LogoColorizedAscii = `\u001b[38;2;128;128;128m                    \u001b[0m\u001b[38;2;118;111;144m_\u001b[0m\n\u001b[38;2;128;128;128m                   \u001b[0m\u001b[38;2;72;32;223m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\n\u001b[38;2;128;128;128m                   ╠╠\u001b[0m\u001b[38;2;103;85;170m_\u001b[0m\n\u001b[38;2;128;128;128m        \u001b[0m\u001b[38;2;79;121;152m╦\u001b[0m\u001b[38;2;82;121;151m╦\u001b[0m\u001b[38;2;112;125;136m_       \u001b[0m\u001b[38;2;88;59;196m[\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;73;34;221m▒       \u001b[0m\u001b[38;2;121;121;127m_\u001b[0m\u001b[38;2;100;101;128m╔\u001b[0m\u001b[38;2;93;94;127m╦\u001b[0m\n\u001b[38;2;128;128;128m        \u001b[0m\u001b[38;2;82;121;151m²\u001b[0m\u001b[38;2;44;116;170m╠\u001b[0m\u001b[38;2;44;116;171m▒\u001b[0m\u001b[38;2;51;117;167mD\u001b[0m\u001b[38;2;80;121;152m╦\u001b[0m\u001b[38;2;111;125;136m_    \u001b[0m\u001b[38;2;67;23;232m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠    \u001b[0m\u001b[38;2;120;121;128m_\u001b[0m\u001b[38;2;100;101;127m╔\u001b[0m\u001b[38;2;79;81;127mR\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;88;90;127m╙\u001b[0m\n\u001b[38;2;128;128;128m          \u001b[0m\u001b[38;2;55;117;165m╚\u001b[0m\u001b[38;2;44;116;171m▒\u001b[0m\u001b[38;2;44;116;171m▒▒\u001b[0m\u001b[38;2;50;116;167mD\u001b[0m\u001b[38;2;80;121;152m╦ \u001b[0m\u001b[38;2;106;90;165mj\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠\u001b[0m\u001b[38;2;89;61;194mH \u001b[0m\u001b[38;2;99;100;127m╔\u001b[0m\u001b[38;2;79;80;127mD\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;71;73;128m▒▒╠\u001b[0m\n\u001b[38;2;128;128;128m           \u001b[0m\u001b[38;2;83;121;150m²\u001b[0m\u001b[38;2;44;116;170m▒\u001b[0m\u001b[38;2;44;116;171m▒▒▒ \u001b[0m\u001b[38;2;76;38;217m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠ \u001b[0m\u001b[38;2;74;76;128m╠\u001b[0m\u001b[38;2;71;73;128m▒▒▒\u001b[0m\u001b[38;2;89;90;128m╙\u001b[0m\n\u001b[38;2;128;128;128m             \u001b[0m\u001b[38;2;90;118;148m\\`\u001b[0m\u001b[38;2;89;107;153m_\u001b[0m\u001b[38;2;93;97;154m,\u001b[0m\u001b[38;2;105;89;166m╓\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠\u001b[0m\u001b[38;2;95;72;183m╓\u001b[0m\u001b[38;2;106;96;152m_\u001b[0m\u001b[38;2;100;94;143m\\`\u001b[0m\u001b[38;2;101;100;133m\\`\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;122;118;137m_\u001b[0m\u001b[38;2;113;102;153m,\u001b[0m\u001b[38;2;108;94;161m╓\u001b[0m\u001b[38;2;104;86;169m╓\u001b[0m\u001b[38;2;98;77;178m╔\u001b[0m\u001b[38;2;93;67;188m╗\u001b[0m\u001b[38;2;88;59;196mφ\u001b[0m\u001b[38;2;83;51;204m@\u001b[0m\u001b[38;2;78;42;213mD\u001b[0m\u001b[38;2;72;32;223m▒\u001b[0m\u001b[38;2;68;24;231m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠\u001b[0m\u001b[38;2;71;30;225m▒\u001b[0m\u001b[38;2;77;40;215m▒\u001b[0m\u001b[38;2;82;49;206mK\u001b[0m\u001b[38;2;87;57;198mφ\u001b[0m\u001b[38;2;91;65;190m╗\u001b[0m\u001b[38;2;97;75;180m╦\u001b[0m\u001b[38;2;103;84;171m╖\u001b[0m\u001b[38;2;107;92;163m²\u001b[0m\u001b[38;2;112;101;154m_\u001b[0m\u001b[38;2;119;112;143m_\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;106;91;164m\\`\u001b[0m\u001b[38;2;94;70;185m^\u001b[0m\u001b[38;2;89;62;193m╙\u001b[0m\u001b[38;2;85;54;201m╙\u001b[0m\u001b[38;2;80;45;210m╚\u001b[0m\u001b[38;2;74;35;220m╝\u001b[0m\u001b[38;2;69;26;229m╠\u001b[0m\u001b[38;2;66;22;233m╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠\u001b[0m\u001b[38;2;73;33;222m╝\u001b[0m\u001b[38;2;79;43;212m╩\u001b[0m\u001b[38;2;84;52;203m╜\u001b[0m\u001b[38;2;88;60;195m╙\u001b[0m\u001b[38;2;93;68;187m^\u001b[0m\u001b[38;2;100;80;175m\\`\u001b[0m\n\u001b[38;2;128;128;128m             \u001b[0m\u001b[38;2;113;84;152m\\`\u001b[0m\u001b[38;2;103;79;169m'\u001b[0m\u001b[38;2;95;72;183m\"\u001b[0m\u001b[38;2;87;57;198m╙\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠\u001b[0m\u001b[38;2;80;46;209m╜\u001b[0m\u001b[38;2;94;70;185m^\u001b[0m\u001b[38;2;102;77;175m^\u001b[0m\u001b[38;2;112;81;162m\\`\u001b[0m\u001b[38;2;115;92;155m\\`\u001b[0m\n\u001b[38;2;128;128;128m           \u001b[0m\u001b[38;2;145;116;107m,\u001b[0m\u001b[38;2;199;82;45m╠\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒╠ \u001b[0m\u001b[38;2;70;28;227m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠ \u001b[0m\u001b[38;2;189;49;97må\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠\u001b[0m\u001b[38;2;155;92;114m,\u001b[0m\n\u001b[38;2;128;128;128m          \u001b[0m\u001b[38;2;175;98;73m╔\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒▒▒\u001b[0m\u001b[38;2;197;83;47m╩ \u001b[0m\u001b[38;2;98;76;179m[\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠\u001b[0m\u001b[38;2;81;48;207mH \u001b[0m\u001b[38;2;188;51;98m╚\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠╠\u001b[0m\u001b[38;2;183;57;100mH\u001b[0m\n\u001b[38;2;128;128;128m        \u001b[0m\u001b[38;2;146;116;106m,\u001b[0m\u001b[38;2;199;82;44m╠\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;196;84;48m╩\u001b[0m\u001b[38;2;168;102;81m^    \u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠    \u001b[0m\u001b[38;2;160;87;111m'\u001b[0m\u001b[38;2;187;52;98m╚\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠\u001b[0m\u001b[38;2;156;91;113m,\u001b[0m\n\u001b[38;2;128;128;128m        \u001b[0m\u001b[38;2;198;83;46m╩\u001b[0m\u001b[38;2;194;85;50m╩\u001b[0m\u001b[38;2;167;102;82m^       \u001b[0m\u001b[38;2;81;46;209m╚\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠       \u001b[0m\u001b[38;2;159;88;112m'\u001b[0m\u001b[38;2;186;53;98m╚\u001b[0m\u001b[38;2;197;40;93m╩\u001b[0m\n\u001b[38;2;128;128;128m                  \u001b[0m\u001b[38;2;110;97;158m'\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;94;69;186mH\u001b[0m\n\u001b[38;2;128;128;128m                   \u001b[0m\u001b[38;2;68;25;230m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\n\u001b[38;2;128;128;128m                   \u001b[0m\u001b[38;2;108;93;162m²\u001b[0m\u001b[38;2;99;79;176m^\u001b[0m`\n","import type { UsageMeta } from '@xyo-network/xl1-sdk'\nimport { isUsageMeta } from '@xyo-network/xl1-sdk'\nimport type { Options } from 'yargs'\nimport { globalRegistry } from 'zod'\n\nconst usageMetaToOptions = (meta: UsageMeta): Options => {\n return meta\n}\n\nexport const optionsFromGlobalZodRegistry = (): Record<string, Options> => {\n const opts: Record<string, Options> = {}\n for (const schema of Object.values(globalRegistry._map)) {\n if (isUsageMeta(schema)) {\n if (schema.hidden) continue // skip hidden options\n opts[schema.title] = usageMetaToOptions(schema)\n }\n }\n return opts\n}\n","import { config } from 'dotenv'\n\nimport { runCLI } from './runCLI.ts'\n\nexport const start = async () => {\n config({ quiet: true })\n await runCLI()\n}\n"],"mappings":"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","names":["createDeepMerge","isDefined","ActorMnemonicNotAllowedError","assertNoActorMnemonics","ConfigFileNotFoundError","tryParseConfig","ConfigZod","isZodError","resolveConfig","deepMerge","createDeepMerge","arrayStrategy","coerceActorsArray","argv","actors","undefined","Array","isArray","entries","Object","numericEntries","map","key","value","Number","filter","isInteger","length","asArray","safeParseOrThrow","input","result","ConfigZod","safeParse","success","error","data","buildFinalConfig","configPath","config","parsedConfigFile","tryParseConfig","rootMnemonicFromFile","mnemonic","normalizedArgv","parsedConfigArgs","rootMnemonicFromArgs","mergedConfig","validated","resolveConfig","rootMnemonic","isDefined","configMiddleware","setConfiguration","finalConfig","assertNoActorMnemonics","console","log","JSON","stringify","process","exit","err","ConfigFileNotFoundError","message","ActorMnemonicNotAllowedError","isZodError","Error","stack","cause","Base","ConsoleLogger","isDefined","LogLevel","SilentLogger","initLogger","config","logger","log","silent","SilentLogger","level","isDefined","logLevel","parsed","LogLevel","toLowerCase","ConsoleLogger","Base","defaultLogger","stdin","input","stdout","output","createInterface","isDefined","apiCommand","bridgeCommand","finalizerCommand","mempoolCommand","contextFromConfigWithoutLocator","detectDerivationPathCollisions","formatWalletReport","initializeResolvedWalletReport","locatorsFromConfig","Orchestrator","initHealthEndpoints","producerCommand","rewardRedemptionCommand","ActorConfigZod","ConfigZod","yargs","hideBin","getApiActor","getBridgeActor","getFinalizerActor","getMempoolActor","ApiConfigZod","BridgeConfigZod","FinalizerConfigZod","MempoolConfigZod","ProducerConfigZod","RewardRedemptionConfigZod","getProducerActor","getRewardRedemptionActor","KNOWN_ACTORS","BOOT_TIMEOUT_MS","getActorsFromConfig","configuration","enabledActors","actors","filter","actor","enabled","map","name","length","undefined","getDefaultActors","buildActor","locator","config","ApiConfigZod","parse","context","getApiActor","BridgeConfigZod","getBridgeActor","MempoolConfigZod","getMempoolActor","ProducerConfigZod","getProducerActor","RewardRedemptionConfigZod","getRewardRedemptionActor","FinalizerConfigZod","getFinalizerActor","Error","bootActors","requestedActors","locators","orchestrator","startedAt","Date","now","Promise","all","registerActor","start","whenReady","ms","initLogger","info","startCommand","getConfiguration","getLocatorsFromConfig","command","describe","builder","yargs","positional","type","array","choices","description","coerce","values","flatMap","v","split","option","string","handler","argv","delay","withDeprecationWarning","module","deprecated","handler","argv","console","warn","delay","XL1LogoColorizedAscii","isUsageMeta","globalRegistry","usageMetaToOptions","meta","optionsFromGlobalZodRegistry","opts","schema","Object","values","globalRegistry","_map","isUsageMeta","hidden","title","DEFAULT_HEALTH_CHECK_PORT","configuration","skipInsecureConfirm","version","isDefined","__VERSION__","getConfiguration","promptForInsecureGenesisConfirmation","logger","input","isTTY","output","warn","rl","createInterface","question","close","getLocatorsFromConfig","actors","actorConfigs","actorName","existingConfig","find","actor","name","push","actorConfig","ActorConfigZod","loose","parse","config","ConfigZod","initLogger","orchestrator","Orchestrator","create","collision","detectDerivationPathCollisions","walletReport","initializeResolvedWalletReport","info","formatWalletReport","context","contextFromConfigWithoutLocator","onInsecureGenesisConfirm","undefined","locators","locatorsFromConfig","healthCheckPort","healthServer","statusReporter","initHealthEndpoints","port","readiness","statusMonitor","process","on","log","stop","exit","err","error","runCLI","y","yargs","hideBin","argv","usage","XL1LogoColorizedAscii","parserConfiguration","env","scriptName","middleware","configMiddleware","Boolean","options","optionsFromGlobalZodRegistry","wrap","terminalWidth","command","withDeprecationWarning","apiCommand","bridgeCommand","finalizerCommand","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":"AAwGA,wBAAsB,MAAM,kBA2D3B"}
1
+ {"version":3,"file":"runCLI.d.ts","sourceRoot":"","sources":["../../src/runCLI.ts"],"names":[],"mappings":"AAqHA,wBAAsB,MAAM,kBA4D3B"}