@xyo-network/xl1-cli 1.6.4 → 1.6.6

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 (41) hide show
  1. package/build/commands/api/runApi.d.ts +6 -1
  2. package/build/commands/api/runApi.d.ts.map +1 -1
  3. package/build/commands/producer/runProducer.d.ts +7 -1
  4. package/build/commands/producer/runProducer.d.ts.map +1 -1
  5. package/build/commands/validator/runValidator.d.ts +7 -1
  6. package/build/commands/validator/runValidator.d.ts.map +1 -1
  7. package/build/initLogger.d.ts +3 -0
  8. package/build/initLogger.d.ts.map +1 -0
  9. package/build/node/index.mjs +70 -54
  10. package/build/node/index.mjs.map +1 -1
  11. package/build/node/xl1.mjs +82 -66
  12. package/build/node/xl1.mjs.map +1 -1
  13. package/build/orchestration/actor/implementation/ChainHeadUpdateActor.d.ts +2 -1
  14. package/build/orchestration/actor/implementation/ChainHeadUpdateActor.d.ts.map +1 -1
  15. package/build/orchestration/actor/implementation/ProducerActor.d.ts +2 -1
  16. package/build/orchestration/actor/implementation/ProducerActor.d.ts.map +1 -1
  17. package/build/orchestration/actor/model/Actor.d.ts +2 -3
  18. package/build/orchestration/actor/model/Actor.d.ts.map +1 -1
  19. package/build/orchestration/actor/model/Orchestrator.d.ts +7 -4
  20. package/build/orchestration/actor/model/Orchestrator.d.ts.map +1 -1
  21. package/build/orchestration/archivists/StakeIntentState/local.d.ts.map +1 -1
  22. package/build/orchestration/initServices.d.ts +1 -1
  23. package/build/orchestration/initServices.d.ts.map +1 -1
  24. package/build/runCLI.d.ts +7 -1
  25. package/build/runCLI.d.ts.map +1 -1
  26. package/build/start.d.ts.map +1 -1
  27. package/dist/cli-min.mjs +9 -9
  28. package/package.json +32 -32
  29. package/src/commands/api/runApi.ts +8 -4
  30. package/src/commands/producer/runProducer.ts +13 -5
  31. package/src/commands/validator/runValidator.ts +10 -1
  32. package/src/initEnv.ts +1 -1
  33. package/src/initLogger.ts +15 -0
  34. package/src/orchestration/actor/implementation/ChainHeadUpdateActor.ts +2 -2
  35. package/src/orchestration/actor/implementation/ProducerActor.ts +3 -3
  36. package/src/orchestration/actor/model/Actor.ts +3 -4
  37. package/src/orchestration/actor/model/Orchestrator.ts +17 -11
  38. package/src/orchestration/archivists/StakeIntentState/local.ts +0 -2
  39. package/src/orchestration/initServices.ts +6 -12
  40. package/src/runCLI.ts +16 -13
  41. package/src/start.ts +7 -5
@@ -1,2 +1,7 @@
1
- export declare function runApi(): void;
1
+ import type { Logger } from '@xylabs/logger';
2
+ interface RunApiContext {
3
+ logger?: Logger;
4
+ }
5
+ export declare function runApi(context: RunApiContext): void;
6
+ export {};
2
7
  //# sourceMappingURL=runApi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runApi.d.ts","sourceRoot":"","sources":["../../../src/commands/api/runApi.ts"],"names":[],"mappings":"AAGA,wBAAgB,MAAM,SAGrB"}
1
+ {"version":3,"file":"runApi.d.ts","sourceRoot":"","sources":["../../../src/commands/api/runApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAG5C,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,QAG5C"}
@@ -1,3 +1,9 @@
1
+ import type { Logger } from '@xylabs/logger';
1
2
  import type { Orchestrator } from '../../orchestration/index.ts';
2
- export declare const runProducer: (orchestrator: Orchestrator) => Promise<void>;
3
+ interface RunProducerContext {
4
+ logger: Logger;
5
+ orchestrator: Orchestrator;
6
+ }
7
+ export declare const runProducer: (context: RunProducerContext) => Promise<void>;
8
+ export {};
3
9
  //# sourceMappingURL=runProducer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runProducer.d.ts","sourceRoot":"","sources":["../../../src/commands/producer/runProducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAKhE,eAAO,MAAM,WAAW,GAAU,cAAc,YAAY,kBAmB3D,CAAA"}
1
+ {"version":3,"file":"runProducer.d.ts","sourceRoot":"","sources":["../../../src/commands/producer/runProducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAKhE,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,YAAY,CAAA;CAC3B;AAED,eAAO,MAAM,WAAW,GAAU,SAAS,kBAAkB,kBAoB5D,CAAA"}
@@ -1,3 +1,9 @@
1
+ import type { Logger } from '@xylabs/logger';
1
2
  import type { Orchestrator } from '../../orchestration/index.ts';
2
- export declare const runValidator: (orchestrator: Orchestrator) => Promise<void>;
3
+ interface RunValidatorContext {
4
+ logger: Logger;
5
+ orchestrator: Orchestrator;
6
+ }
7
+ export declare const runValidator: (context: RunValidatorContext) => Promise<void>;
8
+ export {};
3
9
  //# sourceMappingURL=runValidator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runValidator.d.ts","sourceRoot":"","sources":["../../../src/commands/validator/runValidator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAGhE,eAAO,MAAM,YAAY,GAAU,cAAc,YAAY,kBAS5D,CAAA"}
1
+ {"version":3,"file":"runValidator.d.ts","sourceRoot":"","sources":["../../../src/commands/validator/runValidator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAGhE,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,YAAY,CAAA;CAC3B;AAED,eAAO,MAAM,YAAY,GAAU,SAAS,mBAAmB,kBAW9D,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { Logger } from '@xylabs/logger';
2
+ export declare const initLogger: () => Logger;
3
+ //# sourceMappingURL=initLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initLogger.d.ts","sourceRoot":"","sources":["../src/initLogger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAI5C,eAAO,MAAM,UAAU,QAAO,MAS7B,CAAA"}
@@ -7,11 +7,11 @@ import { PayloadBuilder } from "@xyo-network/payload-builder";
7
7
  import { Mutex } from "async-mutex";
8
8
 
9
9
  // src/orchestration/actor/model/Actor.ts
10
- import { BaseEmitter } from "@xylabs/events";
10
+ import { Base } from "@xylabs/base";
11
11
  import { forget } from "@xylabs/forget";
12
12
  import { IdLogger } from "@xylabs/logger";
13
13
  import { span, spanAsync } from "@xylabs/telemetry";
14
- var Actor = class extends BaseEmitter {
14
+ var Actor = class extends Base {
15
15
  static {
16
16
  __name(this, "Actor");
17
17
  }
@@ -20,7 +20,7 @@ var Actor = class extends BaseEmitter {
20
20
  _displayName;
21
21
  _id;
22
22
  constructor(id, displayName = "Actor", params) {
23
- const logger = params.logger ?? new IdLogger(console, () => `[${displayName} (${id})] `);
23
+ const logger = params.logger ?? new IdLogger(Base.defaultLogger ?? console, () => `[${displayName} (${id})] `);
24
24
  super({
25
25
  ...params,
26
26
  logger
@@ -102,7 +102,11 @@ var Orchestrator = class {
102
102
  }
103
103
  actors = [];
104
104
  keepAliveHandle = null;
105
+ logger;
105
106
  running = false;
107
+ constructor(logger) {
108
+ this.logger = logger;
109
+ }
106
110
  /**
107
111
  * Registers an actor.
108
112
  * (We won't activate the actor until `start()` is called.)
@@ -119,10 +123,10 @@ var Orchestrator = class {
119
123
  async start() {
120
124
  await Promise.resolve();
121
125
  if (this.running) {
122
- console.log("[Orchestrator] Already started.");
126
+ this.logger?.warn("[Orchestrator] Already started.");
123
127
  return;
124
128
  }
125
- console.log("[Orchestrator] Starting...");
129
+ this.logger?.log("[Orchestrator] Starting...");
126
130
  this.running = true;
127
131
  for (const actor of this.actors) {
128
132
  await actor.start();
@@ -136,16 +140,16 @@ var Orchestrator = class {
136
140
  async stop() {
137
141
  await Promise.resolve();
138
142
  if (!this.running) {
139
- console.log("[Orchestrator] Already stopped.");
143
+ this.logger?.log("[Orchestrator] Already stopped.");
140
144
  return;
141
145
  }
142
- console.log("[Orchestrator] Stopping...");
146
+ this.logger?.log("[Orchestrator] Stopping...");
143
147
  for (const actor of this.actors) {
144
148
  await actor.stop();
145
149
  }
146
150
  this.running = false;
147
151
  if (this.keepAliveHandle) clearInterval(this.keepAliveHandle);
148
- console.log("[Orchestrator] Stopped...");
152
+ this.logger?.log("[Orchestrator] Stopped...");
149
153
  }
150
154
  };
151
155
 
@@ -204,8 +208,7 @@ var ChainHeadUpdateActor = class _ChainHeadUpdateActor extends Actor {
204
208
  get chainIterator() {
205
209
  return assertEx2(this.params.chainIterator, () => "chainIterator not set");
206
210
  }
207
- static async create(params) {
208
- await Promise.resolve();
211
+ static create(params) {
209
212
  return new _ChainHeadUpdateActor(params);
210
213
  }
211
214
  async start() {
@@ -255,7 +258,7 @@ var ProducerActor = class _ProducerActor extends Actor {
255
258
  _lastProducedBlock;
256
259
  _lastRedeclarationIntent;
257
260
  constructor(params) {
258
- super(assertEx3(params.producer?.address, () => "Missing producer in params"), "Producer", params);
261
+ super(params.producer.address, "Producer", params);
259
262
  }
260
263
  get account() {
261
264
  return assertEx3(this.params.account, () => "account not set");
@@ -281,8 +284,7 @@ var ProducerActor = class _ProducerActor extends Actor {
281
284
  get stakeIntentService() {
282
285
  return assertEx3(this.params.stakeIntentService, () => "stakeIntentService not set");
283
286
  }
284
- static async create(params) {
285
- await Promise.resolve();
287
+ static create(params) {
286
288
  return new _ProducerActor(params);
287
289
  }
288
290
  async start() {
@@ -451,7 +453,6 @@ var initHealthEndpoints = /* @__PURE__ */ __name((params) => {
451
453
 
452
454
  // src/orchestration/initServices.ts
453
455
  import { assertEx as assertEx16 } from "@xylabs/assert";
454
- import { Base } from "@xylabs/base";
455
456
  import { asAddress as asAddress2 } from "@xylabs/hex";
456
457
  import { isDefined as isDefined5 } from "@xylabs/typeof";
457
458
  import { balanceSummaryRepositoryFromMap } from "@xyo-network/chain-modules";
@@ -696,9 +697,7 @@ var singleton11;
696
697
  var initLocalStakeIntentStateArchivist = /* @__PURE__ */ __name(async () => {
697
698
  return await mutex11.runExclusive(async () => {
698
699
  if (singleton11) return singleton11;
699
- console.log("[InitServices:LocalStakeIntentStateArchivist:Initializing]");
700
700
  singleton11 = await getLocalPersistentArchivist("stakeIntent", "state");
701
- console.log("[InitServices:LocalStakeIntentStateArchivist:Initialized]");
702
701
  return assertEx8(singleton11, () => new Error("Failed to initialize stake intent state archivist"));
703
702
  });
704
703
  }, "initLocalStakeIntentStateArchivist");
@@ -895,8 +894,8 @@ var getChainId = /* @__PURE__ */ __name(() => {
895
894
 
896
895
  // src/orchestration/services/implementation/evm/initGanacheProvider.ts
897
896
  var initJsonRpcProvider = /* @__PURE__ */ __name(() => {
898
- const config2 = getJsonRpcProviderConfig();
899
- return Promise.resolve(new JsonRpcProvider(...config2));
897
+ const config = getJsonRpcProviderConfig();
898
+ return Promise.resolve(new JsonRpcProvider(...config));
900
899
  }, "initJsonRpcProvider");
901
900
  var canUseJsonRpcProvider = /* @__PURE__ */ __name(() => {
902
901
  return canUseChainId() && process.env.XYO_JSON_RPC_URL !== void 0;
@@ -915,8 +914,8 @@ import { InfuraProvider } from "ethers/providers";
915
914
  var instance;
916
915
  var initInfuraProvider = /* @__PURE__ */ __name(() => {
917
916
  if (instance) return instance;
918
- const config2 = getInfuraProviderConfig();
919
- instance = Promise.resolve(new InfuraProvider(...config2));
917
+ const config = getInfuraProviderConfig();
918
+ instance = Promise.resolve(new InfuraProvider(...config));
920
919
  return instance;
921
920
  }, "initInfuraProvider");
922
921
  var canUseInfuraProvider = /* @__PURE__ */ __name(() => {
@@ -1196,17 +1195,16 @@ var isStartable = /* @__PURE__ */ __name((value) => {
1196
1195
  return isDefined5(value.start) && typeof value.start === "function";
1197
1196
  }, "isStartable");
1198
1197
  var initServices = /* @__PURE__ */ __name(async (logger) => {
1199
- Base.defaultLogger = logger ?? console;
1200
- const statusReporter = new RuntimeStatusMonitor(logger ?? console);
1198
+ const statusReporter = new RuntimeStatusMonitor(logger);
1201
1199
  statusReporter.onGlobalTransition({
1202
1200
  to: "started"
1203
1201
  }, () => {
1204
- Base.defaultLogger?.log("All services started.");
1202
+ logger.log("All services started.");
1205
1203
  });
1206
1204
  statusReporter.onGlobalTransition({
1207
1205
  to: "error"
1208
1206
  }, () => {
1209
- Base.defaultLogger?.error("Producer encountered an unhandled error!");
1207
+ logger.error("Producer encountered an unhandled error!");
1210
1208
  process.exit(1);
1211
1209
  });
1212
1210
  await startupSpanAsync7("initHealthEndpoints", () => initHealthEndpoints({
@@ -1273,7 +1271,6 @@ var initServices = /* @__PURE__ */ __name(async (logger) => {
1273
1271
  chainArchivist,
1274
1272
  chainIterator,
1275
1273
  chainStakeViewer,
1276
- logger: console,
1277
1274
  stakeIntentStateArchivist,
1278
1275
  traceProvider,
1279
1276
  statusReporter
@@ -1326,7 +1323,7 @@ var initServices = /* @__PURE__ */ __name(async (logger) => {
1326
1323
  rewardService,
1327
1324
  stakeIntentService
1328
1325
  };
1329
- Base.defaultLogger?.log("All services created. Starting...");
1326
+ logger?.log("All services created. Starting...");
1330
1327
  const startableServices = [
1331
1328
  balanceSummaryMap,
1332
1329
  ...Object.values(result)
@@ -1342,18 +1339,18 @@ import { hideBin } from "yargs/helpers";
1342
1339
 
1343
1340
  // src/commands/api/runApi.ts
1344
1341
  import { getServer } from "@xyo-network/chain-api";
1345
- import { config } from "dotenv";
1346
- function runApi() {
1347
- config();
1348
- void getServer();
1342
+ function runApi(context) {
1343
+ const { logger } = context;
1344
+ void getServer(void 0, void 0, logger);
1349
1345
  }
1350
1346
  __name(runApi, "runApi");
1351
1347
 
1352
1348
  // src/commands/producer/runProducer.ts
1353
- var runProducer = /* @__PURE__ */ __name(async (orchestrator) => {
1354
- console.log("Services: Initializing...");
1355
- const services = await initServices();
1356
- console.log("Services: Initialized");
1349
+ var runProducer = /* @__PURE__ */ __name(async (context) => {
1350
+ const { logger, orchestrator } = context;
1351
+ logger?.log("Services: Initializing...");
1352
+ const services = await initServices(logger);
1353
+ logger?.log("Services: Initialized");
1357
1354
  const chainHeadUpdate = await ChainHeadUpdateActor.create(services);
1358
1355
  const producer = await ProducerActor.create(services);
1359
1356
  const balances = await BalanceActor.create(services);
@@ -1369,7 +1366,8 @@ var runProducer = /* @__PURE__ */ __name(async (orchestrator) => {
1369
1366
  }, "runProducer");
1370
1367
 
1371
1368
  // src/commands/validator/runValidator.ts
1372
- var runValidator = /* @__PURE__ */ __name(async (orchestrator) => {
1369
+ var runValidator = /* @__PURE__ */ __name(async (context) => {
1370
+ const { orchestrator } = context;
1373
1371
  const myActor = new Actor("Validator", "Validator", {});
1374
1372
  await orchestrator.registerActor(myActor);
1375
1373
  await orchestrator.start();
@@ -1395,28 +1393,25 @@ function waitForPort(host, port) {
1395
1393
  });
1396
1394
  }
1397
1395
  __name(waitForPort, "waitForPort");
1398
- async function runCLI(orchestrator) {
1396
+ async function runCLI(context) {
1399
1397
  async function validateTransaction() {
1400
- console.log("Validating transaction...");
1401
- await Promise.resolve();
1398
+ await Promise.reject("Not implemented yet");
1402
1399
  }
1403
1400
  __name(validateTransaction, "validateTransaction");
1404
1401
  async function submitTransaction() {
1405
- console.log("Submitting transaction...");
1406
- await Promise.resolve();
1402
+ await Promise.reject("Not implemented yet");
1407
1403
  }
1408
1404
  __name(submitTransaction, "submitTransaction");
1409
1405
  async function checkBalance() {
1410
- console.log("Checking account balance...");
1411
- await Promise.resolve();
1406
+ await Promise.reject("Not implemented yet");
1412
1407
  }
1413
1408
  __name(checkBalance, "checkBalance");
1414
1409
  const argv = yargs(hideBin(process.argv)).command("validator", "Run the XL1 validator", (yargs2) => {
1415
1410
  return yargs2.command("$0", "Run as a XL1 validator node", () => {
1416
- }, () => runValidator(orchestrator));
1411
+ }, () => runValidator(context));
1417
1412
  }).command("producer", "Run the XL1 producer", (yargs2) => {
1418
1413
  return yargs2.command("$0", "Run as a XL1 producer node", () => {
1419
- }, () => runProducer(orchestrator));
1414
+ }, () => runProducer(context));
1420
1415
  }).command("client", "Client-related operations", (yargs2) => {
1421
1416
  return yargs2.command("transaction", "Transaction-related operations", (yargs3) => {
1422
1417
  return yargs3.command("validate", "Validate a transaction", () => {
@@ -1425,14 +1420,14 @@ async function runCLI(orchestrator) {
1425
1420
  });
1426
1421
  }).command("api", "Run as a api node", (yargs2) => {
1427
1422
  return yargs2.command("$0", "Run as a api node", () => {
1428
- }, () => runApi()).command("run", "Run as a api node", () => {
1429
- }, () => runApi());
1423
+ }, () => runApi(context)).command("run", "Run as a api node", () => {
1424
+ }, () => runApi(context));
1430
1425
  }).command("$0", "Run a full XL1 deployment", (yargs2) => {
1431
1426
  return yargs2.command("$0", "Start the API and a producer", () => {
1432
1427
  }, async () => {
1433
- runApi();
1428
+ runApi(context);
1434
1429
  await waitForPort("localhost", 8080);
1435
- await runProducer(orchestrator);
1430
+ await runProducer(context);
1436
1431
  });
1437
1432
  }).command("account", "Account-related operations", (yargs2) => {
1438
1433
  return yargs2.command("balance", "Check account balance", () => {
@@ -1445,7 +1440,9 @@ __name(runCLI, "runCLI");
1445
1440
  // src/initEnv.ts
1446
1441
  import dotenv from "dotenv";
1447
1442
  var initEnv = /* @__PURE__ */ __name(() => {
1448
- dotenv.config();
1443
+ dotenv.config({
1444
+ quiet: true
1445
+ });
1449
1446
  if (process.env.ENV_FILE !== void 0) {
1450
1447
  dotenv.config({
1451
1448
  path: process.env.ENV_FILE,
@@ -1454,24 +1451,43 @@ var initEnv = /* @__PURE__ */ __name(() => {
1454
1451
  }
1455
1452
  }, "initEnv");
1456
1453
 
1454
+ // src/initLogger.ts
1455
+ import { Base as Base2 } from "@xylabs/base";
1456
+ import { ConsoleLogger, LogLevel } from "@xylabs/logger";
1457
+ import { isDefined as isDefined6 } from "@xylabs/typeof";
1458
+ var initLogger = /* @__PURE__ */ __name(() => {
1459
+ let level = LogLevel.info;
1460
+ if (isDefined6(process.env.LOG_LEVEL)) {
1461
+ const parsed = LogLevel[process.env.LOG_LEVEL.toLowerCase()];
1462
+ if (isDefined6(parsed)) level = parsed;
1463
+ }
1464
+ const logger = new ConsoleLogger(level);
1465
+ Base2.defaultLogger = logger;
1466
+ return logger;
1467
+ }, "initLogger");
1468
+
1457
1469
  // src/start.ts
1458
1470
  var start = /* @__PURE__ */ __name(async () => {
1459
1471
  initEnv();
1460
- const orchestrator = new Orchestrator();
1472
+ const logger = initLogger();
1473
+ const orchestrator = new Orchestrator(logger);
1461
1474
  process.on("SIGINT", () => {
1462
1475
  void (async () => {
1463
1476
  try {
1464
- console.log("\nSIGINT received. Attempting graceful shutdown...");
1477
+ logger.log("\nSIGINT received. Attempting graceful shutdown...");
1465
1478
  await orchestrator?.stop();
1466
- console.log("Orchestrator stopped, exiting now.");
1479
+ logger.log("Orchestrator stopped, exiting now.");
1467
1480
  process.exit(0);
1468
1481
  } catch (err) {
1469
- console.error("Error stopping orchestrator:", err);
1482
+ logger.error("Error stopping orchestrator:", err);
1470
1483
  process.exit(1);
1471
1484
  }
1472
1485
  })();
1473
1486
  });
1474
- await runCLI(orchestrator);
1487
+ await runCLI({
1488
+ logger,
1489
+ orchestrator
1490
+ });
1475
1491
  }, "start");
1476
1492
  export {
1477
1493
  Actor,