@xyo-network/xl1-cli-lib 1.20.28 → 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 (42) 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 +64 -249
  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 +82 -265
  9. package/dist/node/xl1.mjs.map +1 -1
  10. package/package.json +142 -140
  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
  41. package/dist/node/waitForHostPort.d.ts +0 -2
  42. package/dist/node/waitForHostPort.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":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAkC,MAAM,sBAAsB,CAAA;AAClF,OAAO,KAAK,EACgB,aAAa,EACxC,MAAM,OAAO,CAAA;AAMd,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAyExD,wBAAgB,YAAY,CAAC,gBAAgB,EAAE,MAAM,MAAM,EAAE,qBAAqB,EAAE,qBAAqB,GAAG,aAAa,CAgCxH"}
1
+ {"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,224 +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, MempoolConfigZod as MempoolConfigZod3, ProducerConfigZod as ProducerConfigZod2, RewardRedemptionConfigZod as RewardRedemptionConfigZod2 } from "@xyo-network/chain-orchestration";
298
- import { runProducer as runProducer2 } from "@xyo-network/chain-producer";
299
-
300
- // src/waitForHostPort.ts
301
- import net from "net";
302
- var waitForHostPort = /* @__PURE__ */ __name((host, port) => {
303
- return new Promise((resolve) => {
304
- const tryConnect = /* @__PURE__ */ __name(() => {
305
- const socket = new net.Socket();
306
- socket.setTimeout(1e3).once("error", () => {
307
- socket.destroy();
308
- setTimeout(tryConnect, 500);
309
- }).once("timeout", () => {
310
- socket.destroy();
311
- setTimeout(tryConnect, 500);
312
- }).connect(port, host, () => {
313
- socket.end();
314
- resolve();
315
- });
316
- }, "tryConnect");
317
- tryConnect();
318
- });
319
- }, "waitForHostPort");
320
-
321
- // src/commands/start/startCommand.ts
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";
322
124
  var KNOWN_ACTORS = [
323
125
  "api",
324
126
  "bridge",
@@ -327,6 +129,7 @@ var KNOWN_ACTORS = [
327
129
  "producer",
328
130
  "rewardRedemption"
329
131
  ];
132
+ var BOOT_TIMEOUT_MS = 6e4;
330
133
  function getActorsFromConfig(configuration2) {
331
134
  const enabledActors = configuration2.actors.filter((actor) => actor.enabled !== false).map((actor) => actor.name);
332
135
  return enabledActors.length > 0 ? enabledActors : void 0;
@@ -340,56 +143,50 @@ function getDefaultActors() {
340
143
  ];
341
144
  }
342
145
  __name(getDefaultActors, "getDefaultActors");
343
- async function startActor(name, locator, orchestrator) {
146
+ async function buildActor(name, locator) {
344
147
  switch (name) {
345
148
  case "api": {
346
- const config2 = ApiConfigZod2.parse(locator.context.config);
347
- const actor = await getApiActor2(config2, locator);
348
- await orchestrator.registerActor(actor);
349
- await orchestrator.start();
350
- await waitForHostPort(config2.host, config2.port);
351
- break;
149
+ const config2 = ApiConfigZod.parse(locator.context.config);
150
+ return await getApiActor(config2, locator);
352
151
  }
353
152
  case "bridge": {
354
- const config2 = BridgeConfigZod2.parse(locator.context.config);
355
- const actor = await getBridgeActor(config2, locator);
356
- await orchestrator.registerActor(actor);
357
- await orchestrator.start();
358
- break;
153
+ const config2 = BridgeConfigZod.parse(locator.context.config);
154
+ return await getBridgeActor(config2, locator);
359
155
  }
360
156
  case "mempool": {
361
- const config2 = MempoolConfigZod3.parse(locator.context.config);
362
- const actor = await getMempoolActor2(config2, locator);
363
- await orchestrator.registerActor(actor);
364
- await orchestrator.start();
365
- await waitForHostPort(config2.host, config2.port);
366
- break;
157
+ const config2 = MempoolConfigZod.parse(locator.context.config);
158
+ return await getMempoolActor(config2, locator);
367
159
  }
368
160
  case "producer": {
369
- const config2 = ProducerConfigZod2.parse(locator.context.config);
370
- await runProducer2(config2, orchestrator, locator);
371
- break;
161
+ const config2 = ProducerConfigZod.parse(locator.context.config);
162
+ return await getProducerActor(config2, locator);
372
163
  }
373
164
  case "rewardRedemption": {
374
- const config2 = RewardRedemptionConfigZod2.parse(locator.context.config);
375
- const actor = await getRewardRedemptionActor(config2, locator);
376
- await orchestrator.registerActor(actor);
377
- await orchestrator.start();
378
- break;
165
+ const config2 = RewardRedemptionConfigZod.parse(locator.context.config);
166
+ return await getRewardRedemptionActor(config2, locator);
379
167
  }
380
168
  case "finalizer": {
381
- const config2 = FinalizerConfigZod2.parse(locator.context.config);
382
- const actor = await getFinalizerActor(config2, locator);
383
- await orchestrator.registerActor(actor);
384
- await orchestrator.start();
385
- break;
169
+ const config2 = FinalizerConfigZod.parse(locator.context.config);
170
+ return await getFinalizerActor(config2, locator);
386
171
  }
387
172
  default: {
388
173
  throw new Error(`Unknown actor: ${name}`);
389
174
  }
390
175
  }
391
176
  }
392
- __name(startActor, "startActor");
177
+ __name(buildActor, "buildActor");
178
+ async function bootActors(requestedActors, locators, orchestrator, configuration2) {
179
+ const startedAt = Date.now();
180
+ const actors = await Promise.all(requestedActors.map((name) => buildActor(name, locators[name])));
181
+ for (const actor of actors) {
182
+ await orchestrator.registerActor(actor);
183
+ }
184
+ await orchestrator.start();
185
+ await orchestrator.whenReady(BOOT_TIMEOUT_MS);
186
+ const ms = Date.now() - startedAt;
187
+ initLogger(configuration2).info(`[xl1] system ready (${requestedActors.length} actor${requestedActors.length === 1 ? "" : "s"}, ${ms}ms)`);
188
+ }
189
+ __name(bootActors, "bootActors");
393
190
  function startCommand(getConfiguration2, getLocatorsFromConfig2) {
394
191
  return {
395
192
  command: [
@@ -415,9 +212,7 @@ function startCommand(getConfiguration2, getLocatorsFromConfig2) {
415
212
  const configuration2 = getConfiguration2();
416
213
  const requestedActors = argv.actors !== void 0 && argv.actors.length > 0 ? argv.actors : getActorsFromConfig(configuration2) ?? getDefaultActors();
417
214
  const { locators, orchestrator } = await getLocatorsFromConfig2(requestedActors, configuration2);
418
- for (const name of requestedActors) {
419
- await startActor(name, locators[name], orchestrator);
420
- }
215
+ await bootActors(requestedActors, locators, orchestrator, configuration2);
421
216
  }, "handler")
422
217
  };
423
218
  }
@@ -479,8 +274,10 @@ var optionsFromGlobalZodRegistry = /* @__PURE__ */ __name(() => {
479
274
  }, "optionsFromGlobalZodRegistry");
480
275
 
481
276
  // src/runCLI.ts
277
+ var DEFAULT_HEALTH_CHECK_PORT = 9090;
482
278
  var configuration;
483
- var version = isDefined3("1.20.28") ? "1.20.28" : "unknown";
279
+ var skipInsecureConfirm = false;
280
+ var version = isDefined3("1.21.0") ? "1.21.0" : "unknown";
484
281
  function getConfiguration() {
485
282
  return configuration;
486
283
  }
@@ -527,11 +324,23 @@ async function getLocatorsFromConfig(actors, configuration2) {
527
324
  const walletReport = await initializeResolvedWalletReport(actors, configuration2);
528
325
  logger.info(formatWalletReport(walletReport));
529
326
  const context = await contextFromConfigWithoutLocator(config2, logger, "xl1-cli", version);
530
- const locators = await locatorsFromConfig(context, config2, async () => await promptForInsecureGenesisConfirmation(logger));
327
+ if (skipInsecureConfirm) {
328
+ logger.warn("Insecure genesis reward wallet is active. Interactive confirmation skipped via --skip-insecure-confirm.");
329
+ }
330
+ const onInsecureGenesisConfirm = skipInsecureConfirm ? void 0 : async () => await promptForInsecureGenesisConfirmation(logger);
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;
531
339
  process.on("SIGINT", () => {
532
340
  void (async () => {
533
341
  try {
534
342
  logger.log("\nSIGINT received. Attempting graceful shutdown...");
343
+ healthServer?.close();
535
344
  await orchestrator?.stop();
536
345
  logger.log("Orchestrator stopped, exiting now.");
537
346
  process.exit(0);
@@ -563,7 +372,8 @@ $0 <command> [options]`).parserConfiguration({
563
372
  await configMiddleware(argv2, (config2) => {
564
373
  configuration = config2;
565
374
  });
566
- }).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({
375
+ skipInsecureConfirm = Boolean(argv2["skip-insecure-confirm"]);
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({
567
377
  "config": {
568
378
  type: "string",
569
379
  description: "Path to a config file to use instead of the default search.",
@@ -577,6 +387,11 @@ $0 <command> [options]`).parserConfiguration({
577
387
  type: "boolean",
578
388
  description: "Just process the configuration and print the resolved config to stdout, then exit.",
579
389
  default: false
390
+ },
391
+ "skip-insecure-confirm": {
392
+ type: "boolean",
393
+ description: "Skip the interactive RETURN confirmation when the built-in dev mnemonic / insecure genesis reward wallet is active.",
394
+ default: false
580
395
  }
581
396
  }).help().alias("help", "h").version(version).argv;
582
397
  await argv;