@xyo-network/xl1-cli-lib 1.17.2 → 1.17.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.
- package/dist/node/commands/mempool/runMempool.d.ts +1 -1
- package/dist/node/commands/mempool/runMempool.d.ts.map +1 -1
- package/dist/node/commands/validator/runValidator.d.ts +1 -1
- package/dist/node/commands/validator/runValidator.d.ts.map +1 -1
- package/dist/node/index.mjs +78 -460
- package/dist/node/index.mjs.map +1 -1
- package/dist/node/orchestration/index.d.ts +0 -3
- package/dist/node/orchestration/index.d.ts.map +1 -1
- package/dist/node/orchestration/initServices.d.ts +1 -1
- package/dist/node/orchestration/initServices.d.ts.map +1 -1
- package/dist/node/xl1.mjs +1 -1
- package/dist/node/xl1.mjs.map +1 -1
- package/package.json +19 -26
- package/src/commands/mempool/runMempool.ts +1 -1
- package/src/commands/validator/runValidator.ts +2 -2
- package/src/orchestration/index.ts +0 -3
- package/src/orchestration/initServices.ts +66 -73
- package/dist/node/orchestration/ChainInitializableParams.d.ts +0 -11
- package/dist/node/orchestration/ChainInitializableParams.d.ts.map +0 -1
- package/dist/node/orchestration/actor/implementation/BalanceActor.d.ts +0 -14
- package/dist/node/orchestration/actor/implementation/BalanceActor.d.ts.map +0 -1
- package/dist/node/orchestration/actor/implementation/ValidatorActor.d.ts +0 -20
- package/dist/node/orchestration/actor/implementation/ValidatorActor.d.ts.map +0 -1
- package/dist/node/orchestration/actor/implementation/index.d.ts +0 -3
- package/dist/node/orchestration/actor/implementation/index.d.ts.map +0 -1
- package/dist/node/orchestration/actor/index.d.ts +0 -2
- package/dist/node/orchestration/actor/index.d.ts.map +0 -1
- package/dist/node/orchestration/archivists/ChainFinalized/archivist.d.ts +0 -4
- package/dist/node/orchestration/archivists/ChainFinalized/archivist.d.ts.map +0 -1
- package/dist/node/orchestration/archivists/ChainFinalized/index.d.ts +0 -2
- package/dist/node/orchestration/archivists/ChainFinalized/index.d.ts.map +0 -1
- package/dist/node/orchestration/archivists/ChainFinalized/local.d.ts +0 -7
- package/dist/node/orchestration/archivists/ChainFinalized/local.d.ts.map +0 -1
- package/dist/node/orchestration/archivists/ChainFinalized/remote.d.ts +0 -7
- package/dist/node/orchestration/archivists/ChainFinalized/remote.d.ts.map +0 -1
- package/dist/node/orchestration/archivists/ChainSubmissions/archivist.d.ts +0 -7
- package/dist/node/orchestration/archivists/ChainSubmissions/archivist.d.ts.map +0 -1
- package/dist/node/orchestration/archivists/ChainSubmissions/index.d.ts +0 -2
- package/dist/node/orchestration/archivists/ChainSubmissions/index.d.ts.map +0 -1
- package/dist/node/orchestration/archivists/ChainSubmissions/remote.d.ts +0 -7
- package/dist/node/orchestration/archivists/ChainSubmissions/remote.d.ts.map +0 -1
- package/dist/node/orchestration/archivists/PendingTransactions/archivist.d.ts +0 -8
- package/dist/node/orchestration/archivists/PendingTransactions/archivist.d.ts.map +0 -1
- package/dist/node/orchestration/archivists/PendingTransactions/index.d.ts +0 -2
- package/dist/node/orchestration/archivists/PendingTransactions/index.d.ts.map +0 -1
- package/dist/node/orchestration/archivists/PendingTransactions/local.d.ts +0 -7
- package/dist/node/orchestration/archivists/PendingTransactions/local.d.ts.map +0 -1
- package/dist/node/orchestration/archivists/PendingTransactions/remote.d.ts +0 -7
- package/dist/node/orchestration/archivists/PendingTransactions/remote.d.ts.map +0 -1
- package/dist/node/orchestration/archivists/RejectedTransactions/archivist.d.ts +0 -4
- package/dist/node/orchestration/archivists/RejectedTransactions/archivist.d.ts.map +0 -1
- package/dist/node/orchestration/archivists/RejectedTransactions/index.d.ts +0 -2
- package/dist/node/orchestration/archivists/RejectedTransactions/index.d.ts.map +0 -1
- package/dist/node/orchestration/archivists/RejectedTransactions/local.d.ts +0 -4
- package/dist/node/orchestration/archivists/RejectedTransactions/local.d.ts.map +0 -1
- package/dist/node/orchestration/archivists/StakeIntentState/archivist.d.ts +0 -5
- package/dist/node/orchestration/archivists/StakeIntentState/archivist.d.ts.map +0 -1
- package/dist/node/orchestration/archivists/StakeIntentState/index.d.ts +0 -2
- package/dist/node/orchestration/archivists/StakeIntentState/index.d.ts.map +0 -1
- package/dist/node/orchestration/archivists/StakeIntentState/local.d.ts +0 -7
- package/dist/node/orchestration/archivists/StakeIntentState/local.d.ts.map +0 -1
- package/dist/node/orchestration/archivists/index.d.ts +0 -6
- package/dist/node/orchestration/archivists/index.d.ts.map +0 -1
- package/dist/node/orchestration/archivists/lib/index.d.ts +0 -2
- package/dist/node/orchestration/archivists/lib/index.d.ts.map +0 -1
- package/dist/node/orchestration/archivists/lib/localPersistentArchivist.d.ts +0 -21
- package/dist/node/orchestration/archivists/lib/localPersistentArchivist.d.ts.map +0 -1
- package/dist/node/orchestration/health/index.d.ts +0 -2
- package/dist/node/orchestration/health/index.d.ts.map +0 -1
- package/dist/node/orchestration/health/initHealthEndpoints.d.ts +0 -11
- package/dist/node/orchestration/health/initHealthEndpoints.d.ts.map +0 -1
- package/dist/node/orchestration/host/implementation/DefaultHost.d.ts +0 -12
- package/dist/node/orchestration/host/implementation/DefaultHost.d.ts.map +0 -1
- package/dist/node/orchestration/host/implementation/DefaultServiceCollection.d.ts +0 -24
- package/dist/node/orchestration/host/implementation/DefaultServiceCollection.d.ts.map +0 -1
- package/dist/node/orchestration/host/implementation/DefaultServiceProvider.d.ts +0 -7
- package/dist/node/orchestration/host/implementation/DefaultServiceProvider.d.ts.map +0 -1
- package/dist/node/orchestration/host/implementation/index.d.ts +0 -3
- package/dist/node/orchestration/host/implementation/index.d.ts.map +0 -1
- package/dist/node/orchestration/host/index.d.ts +0 -3
- package/dist/node/orchestration/host/index.d.ts.map +0 -1
- package/dist/node/orchestration/host/model/Host.d.ts +0 -19
- package/dist/node/orchestration/host/model/Host.d.ts.map +0 -1
- package/dist/node/orchestration/host/model/ServiceCollection.d.ts +0 -20
- package/dist/node/orchestration/host/model/ServiceCollection.d.ts.map +0 -1
- package/dist/node/orchestration/host/model/ServiceProvider.d.ts +0 -4
- package/dist/node/orchestration/host/model/ServiceProvider.d.ts.map +0 -1
- package/dist/node/orchestration/host/model/index.d.ts +0 -4
- package/dist/node/orchestration/host/model/index.d.ts.map +0 -1
- package/dist/node/orchestration/map/BalanceSummary/index.d.ts +0 -3
- package/dist/node/orchestration/map/BalanceSummary/index.d.ts.map +0 -1
- package/dist/node/orchestration/map/BalanceSummary/initBalanceSummaryMap.d.ts +0 -5
- package/dist/node/orchestration/map/BalanceSummary/initBalanceSummaryMap.d.ts.map +0 -1
- package/dist/node/orchestration/map/BalanceSummary/initLocalBalanceSummaryMap.d.ts +0 -5
- package/dist/node/orchestration/map/BalanceSummary/initLocalBalanceSummaryMap.d.ts.map +0 -1
- package/dist/node/orchestration/map/BalanceSummary/initLocalTransferSummaryMap.d.ts +0 -5
- package/dist/node/orchestration/map/BalanceSummary/initLocalTransferSummaryMap.d.ts.map +0 -1
- package/dist/node/orchestration/map/BalanceSummary/initTransferSummaryMap.d.ts +0 -5
- package/dist/node/orchestration/map/BalanceSummary/initTransferSummaryMap.d.ts.map +0 -1
- package/dist/node/orchestration/map/index.d.ts +0 -2
- package/dist/node/orchestration/map/index.d.ts.map +0 -1
- package/dist/node/orchestration/repository/index.d.ts +0 -2
- package/dist/node/orchestration/repository/index.d.ts.map +0 -1
- package/dist/node/orchestration/repository/lib/index.d.ts +0 -2
- package/dist/node/orchestration/repository/lib/index.d.ts.map +0 -1
- package/dist/node/orchestration/repository/lib/repositoryFromArchivist.d.ts +0 -6
- package/dist/node/orchestration/repository/lib/repositoryFromArchivist.d.ts.map +0 -1
- package/dist/node/orchestration/status/RuntimeStatusMonitor.d.ts +0 -31
- package/dist/node/orchestration/status/RuntimeStatusMonitor.d.ts.map +0 -1
- package/dist/node/orchestration/status/ServiceStatus.d.ts +0 -8
- package/dist/node/orchestration/status/ServiceStatus.d.ts.map +0 -1
- package/dist/node/orchestration/status/index.d.ts +0 -3
- package/dist/node/orchestration/status/index.d.ts.map +0 -1
- package/src/orchestration/ChainInitializableParams.ts +0 -12
- package/src/orchestration/actor/implementation/BalanceActor.ts +0 -35
- package/src/orchestration/actor/implementation/ValidatorActor.ts +0 -104
- package/src/orchestration/actor/implementation/index.ts +0 -2
- package/src/orchestration/actor/index.ts +0 -1
- package/src/orchestration/archivists/ChainFinalized/archivist.ts +0 -32
- package/src/orchestration/archivists/ChainFinalized/index.ts +0 -1
- package/src/orchestration/archivists/ChainFinalized/local.ts +0 -18
- package/src/orchestration/archivists/ChainFinalized/remote.ts +0 -20
- package/src/orchestration/archivists/ChainSubmissions/archivist.ts +0 -22
- package/src/orchestration/archivists/ChainSubmissions/index.ts +0 -1
- package/src/orchestration/archivists/ChainSubmissions/remote.ts +0 -20
- package/src/orchestration/archivists/PendingTransactions/archivist.ts +0 -35
- package/src/orchestration/archivists/PendingTransactions/index.ts +0 -1
- package/src/orchestration/archivists/PendingTransactions/local.ts +0 -21
- package/src/orchestration/archivists/PendingTransactions/remote.ts +0 -20
- package/src/orchestration/archivists/RejectedTransactions/archivist.ts +0 -21
- package/src/orchestration/archivists/RejectedTransactions/index.ts +0 -1
- package/src/orchestration/archivists/RejectedTransactions/local.ts +0 -20
- package/src/orchestration/archivists/StakeIntentState/archivist.ts +0 -24
- package/src/orchestration/archivists/StakeIntentState/index.ts +0 -1
- package/src/orchestration/archivists/StakeIntentState/local.ts +0 -19
- package/src/orchestration/archivists/index.ts +0 -5
- package/src/orchestration/archivists/lib/index.ts +0 -1
- package/src/orchestration/archivists/lib/localPersistentArchivist.ts +0 -63
- package/src/orchestration/health/index.ts +0 -1
- package/src/orchestration/health/initHealthEndpoints.ts +0 -71
- package/src/orchestration/host/implementation/DefaultHost.ts +0 -25
- package/src/orchestration/host/implementation/DefaultServiceCollection.ts +0 -60
- package/src/orchestration/host/implementation/DefaultServiceProvider.ts +0 -12
- package/src/orchestration/host/implementation/index.ts +0 -2
- package/src/orchestration/host/index.ts +0 -2
- package/src/orchestration/host/model/Host.ts +0 -21
- package/src/orchestration/host/model/ServiceCollection.ts +0 -22
- package/src/orchestration/host/model/ServiceProvider.ts +0 -3
- package/src/orchestration/host/model/index.ts +0 -3
- package/src/orchestration/map/BalanceSummary/index.ts +0 -2
- package/src/orchestration/map/BalanceSummary/initBalanceSummaryMap.ts +0 -24
- package/src/orchestration/map/BalanceSummary/initLocalBalanceSummaryMap.ts +0 -19
- package/src/orchestration/map/BalanceSummary/initLocalTransferSummaryMap.ts +0 -20
- package/src/orchestration/map/BalanceSummary/initTransferSummaryMap.ts +0 -25
- package/src/orchestration/map/index.ts +0 -1
- package/src/orchestration/repository/index.ts +0 -1
- package/src/orchestration/repository/lib/index.ts +0 -1
- package/src/orchestration/repository/lib/repositoryFromArchivist.ts +0 -26
- package/src/orchestration/status/RuntimeStatusMonitor.ts +0 -117
- package/src/orchestration/status/ServiceStatus.ts +0 -20
- package/src/orchestration/status/index.ts +0 -2
package/dist/node/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/orchestration/actor/implementation/BalanceActor.ts","../../src/orchestration/actor/implementation/ValidatorActor.ts","../../src/orchestration/health/initHealthEndpoints.ts","../../src/orchestration/initServices.ts","../../src/orchestration/archivists/RejectedTransactions/archivist.ts","../../src/orchestration/archivists/RejectedTransactions/local.ts","../../src/orchestration/map/BalanceSummary/initBalanceSummaryMap.ts","../../src/orchestration/map/BalanceSummary/initLocalBalanceSummaryMap.ts","../../src/orchestration/map/BalanceSummary/initTransferSummaryMap.ts","../../src/orchestration/map/BalanceSummary/initLocalTransferSummaryMap.ts","../../src/orchestration/status/ServiceStatus.ts","../../src/orchestration/status/RuntimeStatusMonitor.ts","../../src/runCLI.ts","../../src/commands/api/runApi.ts","../../src/commands/bridge/runBridge.ts","../../src/commands/mempool/runMempool.ts","../../src/commands/rewardRedemption/runRewardRedemptionApi.ts","../../src/images.ts","../../src/initLogger.ts","../../src/optionsFromGlobalZodRegistry.ts","../../src/tryParseConfig.ts","../../src/waitForHostPort.ts","../../src/start.ts"],"sourcesContent":["import { assertEx } from '@xylabs/sdk-js'\nimport { Actor, type ActorParams } from '@xyo-network/chain-orchestration'\nimport type { ChainServiceCollectionV2, Config } from '@xyo-network/xl1-protocol-sdk'\nimport { Mutex } from 'async-mutex'\n\nexport type BalanceActorParams = ActorParams<\n Pick<ChainServiceCollectionV2, 'balance' | 'blockViewer'>\n & { config: Config }>\n\nexport class BalanceActor extends Actor<BalanceActorParams> {\n protected _updateMutex = new Mutex()\n\n protected get balanceService() {\n return assertEx(this.params.balance, () => 'balanceService not set')\n }\n\n protected get blockViewer() {\n return assertEx(this.params.blockViewer, () => 'blockViewer not set')\n }\n\n override async startHandler(): Promise<void> {\n await super.startHandler()\n this.registerTimer('BalanceTimer', async () => {\n await this.updateBalance()\n }, 1000, 10_000/* 1000 */)\n }\n\n protected async updateBalance(): Promise<void> {\n if (this._updateMutex.isLocked()) return\n await this._updateMutex.runExclusive(async () => {\n const head = await this.blockViewer.currentBlockHash()\n await this.balanceService.accountBalances([], head)\n })\n }\n}\n","import type { Hash } from '@xylabs/sdk-js'\nimport {\n assertEx, creatable, isDefined, isUndefined, toHex,\n} from '@xylabs/sdk-js'\nimport type { ActorParams } from '@xyo-network/chain-orchestration'\nimport { Actor } from '@xyo-network/chain-orchestration'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { BlockBoundWitness } from '@xyo-network/xl1-protocol'\nimport type { ChainServiceCollectionV2, Config } from '@xyo-network/xl1-protocol-sdk'\n\nexport type ValidatorActorParams = ActorParams<\n Pick<ChainServiceCollectionV2,\n 'account'\n | 'balance'\n | 'blockViewer'\n | 'chainStakeViewer'\n // | 'chainSubmissionsArchivistWrite'\n // | 'pendingBundledTransactionsArchivistWrite'\n // | 'stakeIntent'\n > & {\n config: Config\n }>\n\n@creatable()\nexport class ValidatorActor extends Actor<ValidatorActorParams> {\n protected _lastValidatedBlock: BlockBoundWitness | undefined\n protected _lastValidatedBlockHash: Hash | undefined\n\n protected get account() {\n return assertEx(this.params.account, () => 'account not set')\n }\n\n protected get balanceService() {\n return assertEx(this.params.balance, () => 'balanceService not set')\n }\n\n protected get blockViewer() {\n return assertEx(this.params.blockViewer, () => 'blockViewer not set')\n }\n\n protected get chainStakeViewer() {\n return assertEx(this.params.chainStakeViewer, () => 'chainStakeViewer not set')\n }\n\n // protected get chainSubmissionsArchivistWrite() {\n // return assertEx(this.params.chainSubmissionsArchivistWrite, () => 'chainSubmissionsArchivistWrite not set')\n // }\n\n // protected get pendingBundledTransactionsArchivistWrite() {\n // return assertEx(this.params.pendingBundledTransactionsArchivistWrite, () => 'pendingBundledTransactionsArchivistWrite not set')\n // }\n\n // protected get stakeIntentService() {\n // return assertEx(this.params.stakeIntent, () => 'stakeIntentService not set')\n // }\n\n // protected get validator() {\n // return assertEx(this.params.validator, () => 'validator not set')\n // }\n\n override async startHandler(): Promise<void> {\n await super.startHandler()\n // Register a timer to check if we should produce a block\n this.registerTimer('BlockProductionTimer', async () => {\n await this.spanAsync('produceBlock', async () => {\n // Get the updated head\n const block = (await this.blockViewer.currentBlock())[0]\n if (isUndefined(block)) return\n // Check if we've already validated this head\n const hash = await PayloadBuilder.hash(block)\n // If our last validated block was this head, skip validation\n if (isDefined(this._lastValidatedBlock) && this._lastValidatedBlockHash === hash) {\n this.logger?.log('Block already validated:', `0x${toHex(block.block)}`)\n } else {\n this.logger?.log('Validating block:', `0x${toHex(block.block)}`)\n const valid = await this.validateBlock(block)\n if (valid) {\n this.logger?.log('Validated block:', `0x${toHex(block.block)}`)\n } else {\n this.logger?.log('Invalid block:', `0x${toHex(block.block)}`)\n await this.slashInvalidBlock(block)\n }\n }\n })\n }, 2000, 1500/* 500 */)\n }\n\n protected async slashInvalidBlock(_block: BlockBoundWitness): Promise<boolean> {\n // TODO: Handle slashing logic\n const slashed = await Promise.resolve(true)\n return slashed\n }\n\n protected async validateBlock(block: BlockBoundWitness): Promise<boolean> {\n // TODO: Validate using validation logic\n const valid = await Promise.resolve(true)\n // Store the last validated block and its hash\n this._lastValidatedBlock = block\n this._lastValidatedBlockHash = await PayloadBuilder.hash(block)\n\n // Return the validation result\n return valid\n }\n}\n","import type {\n IncomingMessage, Server, ServerResponse,\n} from 'node:http'\nimport http from 'node:http'\n\nimport type { CreatableStatus, Logger } from '@xylabs/sdk-js'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { Initializable } from '@xyo-network/xl1-protocol'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\nimport type { RuntimeStatusMonitor } from '../status/index.ts'\n\nconst sendStatus = (res: ServerResponse, status: CreatableStatus, errorCode: number) => {\n const statusCode = status === 'started' ? 200 : errorCode\n res.writeHead(statusCode, { 'Content-Type': 'application/json' })\n res.end(JSON.stringify({ status }))\n}\n\nconst notFound = (res: ServerResponse) => {\n res.writeHead(404, { 'Content-Type': 'application/json' })\n res.end(JSON.stringify({ status: 'not found' }))\n}\n\n/**\n * Starts an HTTP server with Kubernetes health endpoints:\n * - /healthz\n * - /livez\n * - /readyz\n * @param port The port to listen on (default: 8080)\n */\nconst createHealthServer = (port: number, statusMonitor: RuntimeStatusMonitor, logger: Logger) => {\n const server = http.createServer((req: IncomingMessage, res: ServerResponse) => {\n const url = req.url ?? ''\n\n const status = statusMonitor.getGlobalStatus()\n\n switch (url) {\n case '/healthz': {\n sendStatus(res, status, 500)\n break\n }\n case '/livez': {\n sendStatus(res, status, 503)\n break\n }\n case '/readyz': {\n sendStatus(res, status, 503)\n break\n }\n default: {\n notFound(res)\n }\n }\n })\n\n server.listen(port, () => {\n logger.log(`Health server running on http://localhost:${port}`)\n logger.log(' - /healthz')\n logger.log(' - /livez')\n logger.log(' - /readyz')\n })\n return server\n}\n\nexport const initHealthEndpoints: Initializable<{ config: Config; logger: Logger; statusReporter: RuntimeStatusMonitor }, Server | undefined> = (params) => {\n const {\n config, logger, statusReporter,\n } = params\n const { healthCheckPort } = config.producer\n return isDefined(healthCheckPort) ? createHealthServer(healthCheckPort, statusReporter, logger) : undefined\n}\n","import type {\n BaseParamsFields, CreatableName, Logger,\n} from '@xylabs/sdk-js'\nimport {\n asAddress, assertEx, isDefined,\n} from '@xylabs/sdk-js'\nimport { initProducerAccount } from '@xyo-network/chain-orchestration'\nimport type { SimpleBlockRunnerParams, XyoValidatorParams } from '@xyo-network/chain-services'\nimport {\n initAccountBalanceService,\n initBlockProducer, initBlockRewardViewer, initBlockViewer, initChainService,\n initMempoolRunner, initMempoolViewer, initTimeService,\n} from '@xyo-network/chain-services'\nimport { initTelemetry } from '@xyo-network/chain-telemetry'\nimport { startupSpanAsync } from '@xyo-network/chain-utils'\nimport { validateHydratedBlockState } from '@xyo-network/chain-validation'\nimport type { ChainServiceCollectionV2, Config } from '@xyo-network/xl1-protocol-sdk'\n\nimport { initRejectedTransactionsArchivist } from './archivists/index.ts'\nimport type { ChainInitializableParams } from './ChainInitializableParams.ts'\nimport { initHealthEndpoints } from './health/index.ts'\nimport { initBalanceSummaryMap, initTransferSummaryMap } from './map/index.ts'\nimport { RuntimeStatusMonitor } from './status/index.ts'\n\ninterface Startable {\n start: () => Promise<boolean>\n status: string\n}\n\nconst isStartable = (value: unknown): value is Startable => {\n const possibleStartable = value as Startable\n return isDefined(possibleStartable.start) && (typeof (possibleStartable.start) === 'function') && (possibleStartable.status === 'created')\n}\n\ninterface InitServicesContext {\n config: Config\n logger: Logger\n}\n\nexport const initServices = async (context: InitServicesContext): Promise<ChainServiceCollectionV2 & BaseParamsFields> => {\n const { config, logger } = context\n const statusReporter = new RuntimeStatusMonitor(logger)\n statusReporter.onGlobalTransition({ to: 'started' }, () => {\n logger.log('All services started.')\n })\n statusReporter.onGlobalTransition({ to: 'error' }, () => {\n logger.error('Producer encountered an unhandled error!')\n // eslint-disable-next-line unicorn/no-process-exit\n process.exit(1)\n })\n\n await startupSpanAsync('initHealthEndpoints', () => initHealthEndpoints({ ...context, statusReporter }))\n const { otlpEndpoint } = config.telemetry?.otel ?? {}\n const { path: endpoint = '/metrics', port: port = 9464 } = config.telemetry?.metrics?.scrape ?? {}\n const telemetryConfig = {\n attributes: {\n serviceName: 'xl1-producer',\n serviceVersion: '1.0.0',\n },\n otlpEndpoint,\n metricsConfig: { endpoint, port },\n }\n const [\n { traceProvider, meterProvider },\n account,\n ] = await Promise.all([\n startupSpanAsync('initTelemetry', () => initTelemetry(telemetryConfig)),\n startupSpanAsync('initProducerAccount', () => initProducerAccount(context)),\n ])\n\n // const allowedRewardRedeemers: Address[] = config.validation?.allowedRewardRedeemers ?? []\n // const allowedRewardEscrowAccountSigners: Address[] = config.validation?.allowedRewardEscrowAccountSigners ?? []\n\n const baseParamsFields: BaseParamsFields = {\n logger, meterProvider, traceProvider,\n }\n const initParams: ChainInitializableParams = {\n config, logger, meterProvider, statusReporter, traceProvider,\n }\n\n const mempoolViewer = await initMempoolViewer({ config, logger })\n const mempoolRunner = await initMempoolRunner({ config, logger })\n\n // Archivists\n const [\n // [pendingBundledTransactionsArchivist, pendingBundledTransactionsArchivistWrite],\n rejectedTransactionsArchivist,\n // chainSubmissionsArchivistWrite,\n // stakeIntentStateArchivist,\n chainService,\n balanceSummaryMap,\n ] = await Promise.all([\n // startupSpanAsync(\n // 'PendingBundledTransactionsArchivist',\n // () => initPendingBundledTransactionsArchivist(initParams),\n // ),\n startupSpanAsync(\n 'RejectedTransactionsArchivist',\n () => initRejectedTransactionsArchivist(initParams),\n ),\n // startupSpanAsync(\n // 'ChainSubmissionsArchivist',\n // () => initChainSubmissionsArchivist(initParams),\n // ),\n // startupSpanAsync(\n // 'StakeIntentStateArchivist',\n // () => initStakeIntentStateArchivist(initParams),\n // ),\n startupSpanAsync(\n 'ChainService',\n () => initChainService({\n ...initParams, account, name: 'ChainService' as CreatableName,\n }),\n ),\n startupSpanAsync(\n 'BalanceSummaryMap',\n () => initBalanceSummaryMap(initParams),\n\n ),\n startupSpanAsync(\n 'TransferSummaryMap',\n () => initTransferSummaryMap(initParams),\n ),\n ])\n\n const chainContractViewer = chainService\n const chainStakeViewer = chainService\n // const chainArchivist = await initChainFinalizedArchivist(initParams)\n\n // const additionalPendingTransactionValidators = [TransactionTransfersValidatorFactory(\n // [\n // SelfSignerValidator,\n // CompletedStepRewardAddressValidatorFactory(allowedRewardRedeemers),\n // DerivedReceiveAddressValidatorFactory(allowedRewardEscrowAccountSigners, 'reward-escrow'),\n // ],\n // )]\n\n const blockRewardViewer = await initBlockRewardViewer({ config, chainContractViewer })\n const chainId = await chainService.chainId()\n\n const blockViewer = await startupSpanAsync(\n 'BlockViewer',\n () => initBlockViewer({ ...initParams }),\n )\n\n const balanceService = await startupSpanAsync(\n 'BalanceService',\n () => initAccountBalanceService({ ...initParams }),\n )\n\n const time = await startupSpanAsync(\n 'TimeService',\n () => initTimeService({\n name: 'TimeService' as CreatableName,\n blockViewer,\n ...initParams,\n }),\n )\n\n // const electionService = await startupSpanAsync(\n // 'ElectionService',\n // () => initElectionService({\n // name: 'ElectionService' as CreatableName,\n // blockViewer,\n // chainStakeViewer,\n // stakeIntentService,\n // ...initParams,\n // }),\n // )\n\n const validatorParams: XyoValidatorParams = {\n name: 'Validator' as CreatableName,\n blockViewer,\n validateHydratedBlockState,\n ...initParams,\n }\n\n const rewardAddress = isDefined(config.producer.rewardAddress)\n ? assertEx(asAddress(config.producer.rewardAddress), () => 'Invalid block reward address provided')\n : account.address\n const producerParams: SimpleBlockRunnerParams = {\n ...validatorParams,\n account,\n chainId,\n name: 'Producer' as CreatableName,\n balanceViewer: balanceService,\n blockRewardViewer,\n mempoolRunner,\n mempoolViewer,\n // pendingBundledTransactionsArchivist,\n // pendingTransactionsService,\n rejectedTransactionsArchivist,\n rewardAddress,\n time,\n ...initParams,\n }\n const producer = await startupSpanAsync('Producer', () => initBlockProducer(producerParams))\n // TODO: Add to base service collection\n const services: ChainServiceCollectionV2 = {\n account,\n balance: balanceService,\n chainContractViewer,\n blockViewer,\n chainStakeViewer,\n // chainSubmissionsArchivistWrite,\n // election: electionService,\n // pendingBundledTransactionsArchivistWrite,\n mempoolRunner,\n mempoolViewer,\n producer,\n reward: blockRewardViewer,\n // stakeIntent: stakeIntentService,\n }\n\n logger?.log('All services created. Starting...')\n const startableServices = [balanceSummaryMap, ...Object.values(services)].filter(isStartable)\n // Start all services that have a start method and assert that they all started successfully\n assertEx(\n (await Promise.all(startableServices.map(service => service.start()))).every(Boolean),\n () => 'One or more services failed to start',\n )\n logger?.log('All services started successfully.')\n return { ...services, ...baseParamsFields }\n}\n","import type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { startupSpanAsync } from '@xyo-network/chain-utils'\nimport type { InitializableParams } from '@xyo-network/xl1-protocol'\nimport { timeBudget } from '@xyo-network/xl1-protocol-sdk'\nimport { Mutex } from 'async-mutex'\n\nimport { initLocalRejectedTransactionsArchivist } from './local.ts'\n\nconst mutex = new Mutex()\nlet singleton: ArchivistInstance | undefined\n\nexport async function initRejectedTransactionsArchivist(params: InitializableParams) {\n return await mutex.runExclusive(async () => {\n if (singleton) return singleton\n return await timeBudget('initRejectedTransactionsArchivist', params.logger, async () => {\n const local = await startupSpanAsync('RejectedTransactionsArchivist:initLocal', () => initLocalRejectedTransactionsArchivist(params))\n singleton = local\n return singleton\n }, 2000, true)\n })\n}\n","import { MemoryArchivist, MemoryArchivistConfigSchema } from '@xyo-network/archivist-memory'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport type { Initializable } from '@xyo-network/xl1-protocol'\nimport { Mutex } from 'async-mutex'\n\nconst mutex = new Mutex()\nlet singleton: ArchivistInstance | undefined\n\nexport const initLocalRejectedTransactionsArchivist: Initializable<{}, ArchivistInstance> = async (): Promise<ArchivistInstance> => {\n return await mutex.runExclusive(async () => {\n if (singleton) return singleton\n singleton = await MemoryArchivist.create({\n account: 'random',\n config: {\n schema: MemoryArchivistConfigSchema, max: 1000, name: 'localRejectedTransactions',\n },\n })\n return singleton\n })\n}\n","import { isDefined } from '@xylabs/sdk-js'\nimport { startupSpanAsync } from '@xyo-network/chain-utils'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport {\n type BalancesStepSummary, type MapType, timeBudget,\n} from '@xyo-network/xl1-protocol-sdk'\nimport { Mutex } from 'async-mutex'\n\nimport type { ChainInitializableParams } from '../../ChainInitializableParams.ts'\nimport { initLocalBalanceSummaryMap } from './initLocalBalanceSummaryMap.ts'\n\nconst mutex = new Mutex()\nlet singleton: MapType<string, WithStorageMeta<BalancesStepSummary>> | undefined\n\nexport async function initBalanceSummaryMap(params: ChainInitializableParams): Promise<MapType<string, WithStorageMeta<BalancesStepSummary>>> {\n return await mutex.runExclusive(async () => {\n if (isDefined(singleton)) return singleton\n return await timeBudget('initBalanceSummaryMap', params.logger, async () => {\n const local = await startupSpanAsync('BalanceSummaryMap:initLocal', () => initLocalBalanceSummaryMap(params))\n singleton = local\n return singleton\n }, 2000, true)\n })\n}\n","import { isDefined } from '@xylabs/sdk-js'\nimport { getLocalPersistentMap } from '@xyo-network/chain-protocol'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport type { BalancesStepSummary, MapType } from '@xyo-network/xl1-protocol-sdk'\nimport { Mutex } from 'async-mutex'\n\nimport type { ChainInitializableParams } from '../../ChainInitializableParams.ts'\n\nconst mutex = new Mutex()\nlet singleton: MapType<string, WithStorageMeta<BalancesStepSummary>> | undefined\n\nexport const initLocalBalanceSummaryMap = async (params: ChainInitializableParams): Promise<MapType<string, WithStorageMeta<BalancesStepSummary>>> => {\n return await mutex.runExclusive(async () => {\n if (isDefined(singleton)) return singleton\n const { root } = params.config.storage\n singleton = await getLocalPersistentMap<string, WithStorageMeta<BalancesStepSummary>>('balance', 'summary', root)\n return singleton\n })\n}\n","import { isDefined } from '@xylabs/sdk-js'\nimport { startupSpanAsync } from '@xyo-network/chain-utils'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport {\n type MapType, timeBudget, type TransfersStepSummary,\n} from '@xyo-network/xl1-protocol-sdk'\nimport { Mutex } from 'async-mutex'\n\nimport type { ChainInitializableParams } from '../../ChainInitializableParams.ts'\nimport { initLocalTransferSummaryMap } from './initLocalTransferSummaryMap.ts'\n\nconst mutex = new Mutex()\nlet singleton: MapType<string, WithStorageMeta<TransfersStepSummary>> | undefined\n\nexport async function initTransferSummaryMap(params: Pick<ChainInitializableParams, 'config' | 'logger'>):\nPromise<MapType<string, WithStorageMeta<TransfersStepSummary>>> {\n return await mutex.runExclusive(async () => {\n if (isDefined(singleton)) return singleton\n return await timeBudget('initTransferSummaryMap:Init', params.logger, async () => {\n const local = await startupSpanAsync('TransferSummaryMap:initLocal', () => initLocalTransferSummaryMap(params))\n singleton = local\n return singleton\n }, 2000, true)\n })\n}\n","import { isDefined } from '@xylabs/sdk-js'\nimport { getLocalPersistentMap } from '@xyo-network/chain-protocol'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport type { MapType, TransfersStepSummary } from '@xyo-network/xl1-protocol-sdk'\nimport { Mutex } from 'async-mutex'\n\nimport type { ChainInitializableParams } from '../../ChainInitializableParams.ts'\n\nconst mutex = new Mutex()\nlet singleton: MapType<string, WithStorageMeta<TransfersStepSummary>> | undefined\n\nexport const initLocalTransferSummaryMap = async (params: Pick<ChainInitializableParams, 'config'>):\nPromise<MapType<string, WithStorageMeta<TransfersStepSummary>>> => {\n return await mutex.runExclusive(async () => {\n if (isDefined(singleton)) return singleton\n const { root } = params.config.storage\n singleton = await getLocalPersistentMap<string, WithStorageMeta<TransfersStepSummary>>('transfer', 'summary', root)\n return singleton\n })\n}\n","import type {\n CreatableName, CreatableStatus, CreatableStatusReporter, Logger,\n} from '@xylabs/sdk-js'\n\nexport class LoggerStatusReporter implements CreatableStatusReporter {\n protected logger: Logger\n\n protected statusMap: Record<CreatableName, CreatableStatus> = {}\n\n constructor(logger: Logger) {\n this.logger = logger\n }\n\n report(name: CreatableName, status: CreatableStatus, progress?: number | Error): void {\n this.statusMap[name] = status\n const starting = (Object.entries(this.statusMap).map(([, value]): number => value === 'starting' ? 1 : 0)).reduce((a, b) => a + b, 0)\n const started = (Object.entries(this.statusMap).map(([, value]): number => value === 'started' ? 1 : 0)).reduce((a, b) => a + b, 0)\n this.logger.info(`${started}/${starting + started} ${name} status: ${status}`, { progress })\n }\n}\n","import type { CreatableName, CreatableStatus } from '@xylabs/sdk-js'\n\nimport { LoggerStatusReporter } from './ServiceStatus.ts'\n\n/**\n * Enum-like record for statuses with priority allowing\n * for determination of the aggregated status.\n */\nconst statusPriority: Record<CreatableStatus, number> = {\n error: 0,\n stopped: 1,\n stopping: 2,\n creating: 3,\n created: 4,\n starting: 5,\n started: 6,\n}\n\n/**\n * A sentinel status that represents the initial state\n * before any statuses are reported.\n * It is used to ensure that the monitor has a valid status\n * even when no statuses have been reported yet and to\n * prevent the system from showing an \"error\" state\n * when no statuses are available.\n */\nconst SENTINEL_STATUS: CreatableStatus = 'starting'\n\n/**\n * Given an array of statuses, this function reduces them\n * to the minimum status based on the defined priority.\n * @param statuses An array of statuses to reduce.\n * @returns The minimum status based on priority.\n */\nconst reduceToMinimumStatus = (statuses: CreatableStatus[]): CreatableStatus => {\n let minStatus: CreatableStatus = SENTINEL_STATUS\n let minPriority = Infinity\n\n for (const status of statuses) {\n const priority = statusPriority[status]\n if (priority < minPriority) {\n minPriority = priority\n minStatus = status\n }\n }\n return minStatus\n}\n\nexport type GlobalTransitionHandler = {\n from?: CreatableStatus\n handler: (from: CreatableStatus, to: CreatableStatus) => void\n to?: CreatableStatus\n}\nexport type TransitionHandler = GlobalTransitionHandler & {\n name?: string\n}\n\nexport class RuntimeStatusMonitor extends LoggerStatusReporter {\n private globalTransitions: GlobalTransitionHandler[] = []\n private transitions: TransitionHandler[] = []\n\n getGlobalStatus(): CreatableStatus {\n // If no statuses have been reported, return the sentinel status\n if (Object.keys(this.statusMap).length === 0) return SENTINEL_STATUS\n return reduceToMinimumStatus(Object.values(this.statusMap))\n }\n\n getStatus(name: CreatableName): CreatableStatus | undefined {\n return this.statusMap[name]\n }\n\n onGlobalTransition(match: { from?: CreatableStatus; to?: CreatableStatus }, handler: (from: CreatableStatus, to: CreatableStatus) => void) {\n this.globalTransitions.push({ ...match, handler })\n }\n\n /**\n * Register a callback to be called on a specific transition.\n */\n onTransition(match: { from?: CreatableStatus; name: string; to?: CreatableStatus }, handler: (from: CreatableStatus, to: CreatableStatus) => void) {\n this.transitions.push({ ...match, handler })\n }\n\n override report(name: CreatableName, status: CreatableStatus, progress?: number | Error): void {\n // Capture the current status before updating\n const previous = this.statusMap[name]\n const previousGlobal = this.getGlobalStatus()\n\n // Update the status map with the new status\n super.report(name, status, progress)\n\n // If the status hasn't changed, do not run handlers\n if (previous === status) return\n this.runTransitions(this.transitions, previous, status, name)\n\n // If the global status hasn't changed, do not run handlers\n const globalStatus = this.getGlobalStatus()\n if (previousGlobal === globalStatus) return\n this.runTransitions(this.globalTransitions, previousGlobal, globalStatus)\n }\n\n private runTransitions(\n transitions: (TransitionHandler | GlobalTransitionHandler)[],\n prev: CreatableStatus,\n next: CreatableStatus,\n name?: string,\n ) {\n for (const {\n from, to, name: matchName, handler,\n } of transitions as TransitionHandler[]) {\n if ((matchName === undefined || matchName === name)\n && (from === undefined || from === prev)\n && (to === undefined || to === next)) {\n handler(prev, next)\n }\n }\n }\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { deepMerge, isDefined } from '@xylabs/sdk-js'\nimport { Orchestrator } from '@xyo-network/chain-orchestration'\nimport { runProducer } from '@xyo-network/chain-producer'\nimport { type Config, ConfigZod } from '@xyo-network/xl1-protocol-sdk'\nimport type { Argv } from 'yargs'\nimport yargs from 'yargs'\nimport { hideBin } from 'yargs/helpers'\nimport { ZodError } from 'zod'\n\nimport {\n runApi, runBridge, runMempool, runRewardRedemptionApi,\n} from './commands/index.ts'\nimport { XL1LogoColorizedAscii } from './images.ts'\nimport { initLogger } from './initLogger.ts'\nimport { optionsFromGlobalZodRegistry } from './optionsFromGlobalZodRegistry.ts'\nimport { tryParseConfig } from './tryParseConfig.ts'\nimport { waitForHostPort } from './waitForHostPort.ts'\n\n/** Version string injected by Rollup at build time. */\ndeclare const __VERSION__: string\n\ninterface RunCliContext {\n logger: Logger\n orchestrator: Orchestrator\n}\n\n/**\n * The configuration that will be used throughout the CLI.\n * This is materialized after parsing the command-line arguments,\n * environment variables, and defaults.\n */\nlet configuration: Config\n\nconst version = isDefined(__VERSION__) ? __VERSION__ : 'unknown'\n\nconst getContextFromConfig = async (configuration: Config): Promise<RunCliContext> => {\n const logger = initLogger(configuration)\n const orchestrator = await Orchestrator.create({ logger })\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 { logger, 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((argv) => {\n try {\n // Parse the various config sources\n const parsedConfigFile = tryParseConfig() // Config file\n const parsedConfigArgs = argv // Command-line arguments & ENV VARs\n // Deep merge with precedence\n // TODO: Would like precedence to be defaults < file < ENV < CLI Args\n // but there is currently no way to determine which are defaults vs\n // user-supplied CLI Args since we set the CLI args to the defaults\n // and receive a flattened object. We might need to manually invoke\n // the parser without the defaults to achieve this.\n const mergedConfig = deepMerge(parsedConfigArgs, parsedConfigFile)\n // Validate the merged configuration\n configuration = ConfigZod.parse(mergedConfig)\n } catch (err) {\n if (err instanceof ZodError) {\n console.error(`${err.message}`)\n }\n throw new Error('Invalid configuration')\n }\n })\n .options(optionsFromGlobalZodRegistry())\n // .commandDir('./command/commands', opts) // Not yet supported for ESM\n .wrap(y.terminalWidth())\n .command('api', 'Run a XL1 API Node', (yargs) => {\n return yargs\n .command('$0', 'Run a XL1 API Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n runApi({ ...context, config: configuration })\n })\n })\n .command('bridge', 'Run a XL1 Bridge Node', (yargs) => {\n return yargs\n .command('$0', 'Run a XL1 Bridge Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n runBridge({ ...context, config: configuration })\n })\n })\n .command('mempool', 'Run a XL1 Mempool Node', (yargs) => {\n return yargs\n .command('$0', 'Run a XL1 Mempool Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n runMempool({ ...context, config: configuration })\n })\n })\n .command('producer', 'Run a XL1 Producer Node', (yargs) => {\n return yargs\n .command('$0', 'Run a XL1 Producer Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n await runProducer({ ...context, config: configuration })\n })\n })\n .command('reward-redemption-api', 'Run a XL1 Rewards Redemption API Node', (yargs) => {\n return yargs\n .command('$0', 'Run a XL1 Rewards Redemption API Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n runRewardRedemptionApi({ ...context, config: configuration })\n })\n })\n .command('$0', 'Run a full XL1 Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n if (configuration.mempool.enabled) {\n // Start Mempool but do not block\n runMempool({ ...context, config: configuration })\n // Wait for Mempool to be ready\n await waitForHostPort(configuration.mempool.host, configuration.mempool.port)\n }\n // Start API but do not block\n runApi({ ...context, config: configuration })\n // Wait for API to be ready\n await waitForHostPort(configuration.api.host, configuration.api.port)\n // Start Producer and block on it\n await runProducer({ ...context, config: configuration })\n })\n .help()\n .alias('help', 'h')\n .version(version)\n .argv\n\n await argv\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { getServer } from '@xyo-network/chain-api'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\ninterface RunApiContext {\n config: Config\n logger?: Logger\n}\n\nexport function runApi(context: RunApiContext) {\n void getServer(context)\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { getServer } from '@xyo-network/chain-bridge'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\ninterface RunBridgeContext {\n config: Config\n logger?: Logger\n}\n\nexport function runBridge(context: RunBridgeContext) {\n void getServer(context)\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { getServer } from '@xyo-network/chain-mempool'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\ninterface RunMempoolContext {\n config: Config\n logger?: Logger\n}\n\nexport function runMempool(context: RunMempoolContext) {\n void getServer(context)\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { getServer } from '@xyo-network/chain-reward-redemption'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\ninterface RunRewardRedemptionApiContext {\n config: Config\n logger?: Logger\n}\n\nexport function runRewardRedemptionApi(context: RunRewardRedemptionApiContext) {\n void getServer(context)\n}\n","/* eslint-disable @stylistic/max-len */\nexport const XL1LogoColorizedAscii = `\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;118;111;144m_\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;72;32;223m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\n\u001b[38;2;128;128;128m ╠╠\u001b[0m\u001b[38;2;103;85;170m_\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;79;121;152m╦\u001b[0m\u001b[38;2;82;121;151m╦\u001b[0m\u001b[38;2;112;125;136m_ \u001b[0m\u001b[38;2;88;59;196m[\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;73;34;221m▒ \u001b[0m\u001b[38;2;121;121;127m_\u001b[0m\u001b[38;2;100;101;128m╔\u001b[0m\u001b[38;2;93;94;127m╦\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;82;121;151m²\u001b[0m\u001b[38;2;44;116;170m╠\u001b[0m\u001b[38;2;44;116;171m▒\u001b[0m\u001b[38;2;51;117;167mD\u001b[0m\u001b[38;2;80;121;152m╦\u001b[0m\u001b[38;2;111;125;136m_ \u001b[0m\u001b[38;2;67;23;232m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠ \u001b[0m\u001b[38;2;120;121;128m_\u001b[0m\u001b[38;2;100;101;127m╔\u001b[0m\u001b[38;2;79;81;127mR\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;88;90;127m╙\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;55;117;165m╚\u001b[0m\u001b[38;2;44;116;171m▒\u001b[0m\u001b[38;2;44;116;171m▒▒\u001b[0m\u001b[38;2;50;116;167mD\u001b[0m\u001b[38;2;80;121;152m╦ \u001b[0m\u001b[38;2;106;90;165mj\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠\u001b[0m\u001b[38;2;89;61;194mH \u001b[0m\u001b[38;2;99;100;127m╔\u001b[0m\u001b[38;2;79;80;127mD\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;71;73;128m▒▒╠\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;83;121;150m²\u001b[0m\u001b[38;2;44;116;170m▒\u001b[0m\u001b[38;2;44;116;171m▒▒▒ \u001b[0m\u001b[38;2;76;38;217m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠ \u001b[0m\u001b[38;2;74;76;128m╠\u001b[0m\u001b[38;2;71;73;128m▒▒▒\u001b[0m\u001b[38;2;89;90;128m╙\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;90;118;148m\\`\u001b[0m\u001b[38;2;89;107;153m_\u001b[0m\u001b[38;2;93;97;154m,\u001b[0m\u001b[38;2;105;89;166m╓\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠\u001b[0m\u001b[38;2;95;72;183m╓\u001b[0m\u001b[38;2;106;96;152m_\u001b[0m\u001b[38;2;100;94;143m\\`\u001b[0m\u001b[38;2;101;100;133m\\`\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;122;118;137m_\u001b[0m\u001b[38;2;113;102;153m,\u001b[0m\u001b[38;2;108;94;161m╓\u001b[0m\u001b[38;2;104;86;169m╓\u001b[0m\u001b[38;2;98;77;178m╔\u001b[0m\u001b[38;2;93;67;188m╗\u001b[0m\u001b[38;2;88;59;196mφ\u001b[0m\u001b[38;2;83;51;204m@\u001b[0m\u001b[38;2;78;42;213mD\u001b[0m\u001b[38;2;72;32;223m▒\u001b[0m\u001b[38;2;68;24;231m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠\u001b[0m\u001b[38;2;71;30;225m▒\u001b[0m\u001b[38;2;77;40;215m▒\u001b[0m\u001b[38;2;82;49;206mK\u001b[0m\u001b[38;2;87;57;198mφ\u001b[0m\u001b[38;2;91;65;190m╗\u001b[0m\u001b[38;2;97;75;180m╦\u001b[0m\u001b[38;2;103;84;171m╖\u001b[0m\u001b[38;2;107;92;163m²\u001b[0m\u001b[38;2;112;101;154m_\u001b[0m\u001b[38;2;119;112;143m_\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;106;91;164m\\`\u001b[0m\u001b[38;2;94;70;185m^\u001b[0m\u001b[38;2;89;62;193m╙\u001b[0m\u001b[38;2;85;54;201m╙\u001b[0m\u001b[38;2;80;45;210m╚\u001b[0m\u001b[38;2;74;35;220m╝\u001b[0m\u001b[38;2;69;26;229m╠\u001b[0m\u001b[38;2;66;22;233m╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠\u001b[0m\u001b[38;2;73;33;222m╝\u001b[0m\u001b[38;2;79;43;212m╩\u001b[0m\u001b[38;2;84;52;203m╜\u001b[0m\u001b[38;2;88;60;195m╙\u001b[0m\u001b[38;2;93;68;187m^\u001b[0m\u001b[38;2;100;80;175m\\`\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;113;84;152m\\`\u001b[0m\u001b[38;2;103;79;169m'\u001b[0m\u001b[38;2;95;72;183m\"\u001b[0m\u001b[38;2;87;57;198m╙\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠\u001b[0m\u001b[38;2;80;46;209m╜\u001b[0m\u001b[38;2;94;70;185m^\u001b[0m\u001b[38;2;102;77;175m^\u001b[0m\u001b[38;2;112;81;162m\\`\u001b[0m\u001b[38;2;115;92;155m\\`\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;145;116;107m,\u001b[0m\u001b[38;2;199;82;45m╠\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒╠ \u001b[0m\u001b[38;2;70;28;227m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠ \u001b[0m\u001b[38;2;189;49;97må\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠\u001b[0m\u001b[38;2;155;92;114m,\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;175;98;73m╔\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒▒▒\u001b[0m\u001b[38;2;197;83;47m╩ \u001b[0m\u001b[38;2;98;76;179m[\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠\u001b[0m\u001b[38;2;81;48;207mH \u001b[0m\u001b[38;2;188;51;98m╚\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠╠\u001b[0m\u001b[38;2;183;57;100mH\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;146;116;106m,\u001b[0m\u001b[38;2;199;82;44m╠\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;196;84;48m╩\u001b[0m\u001b[38;2;168;102;81m^ \u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠ \u001b[0m\u001b[38;2;160;87;111m'\u001b[0m\u001b[38;2;187;52;98m╚\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠\u001b[0m\u001b[38;2;156;91;113m,\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;198;83;46m╩\u001b[0m\u001b[38;2;194;85;50m╩\u001b[0m\u001b[38;2;167;102;82m^ \u001b[0m\u001b[38;2;81;46;209m╚\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠ \u001b[0m\u001b[38;2;159;88;112m'\u001b[0m\u001b[38;2;186;53;98m╚\u001b[0m\u001b[38;2;197;40;93m╩\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;110;97;158m'\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;94;69;186mH\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;68;25;230m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;108;93;162m²\u001b[0m\u001b[38;2;99;79;176m^\u001b[0m`\n","import type { Logger, LogLevelValue } from '@xylabs/sdk-js'\nimport {\n Base,\n ConsoleLogger, isDefined,\n LogLevel, SilentLogger,\n} from '@xylabs/sdk-js'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\nexport const initLogger = (config: Config): Logger => {\n let logger: Logger\n if (config.silent) {\n logger = new SilentLogger()\n } else {\n let level: LogLevelValue | undefined\n if (isDefined(config.logLevel)) {\n const parsed = LogLevel[config.logLevel.toLowerCase() as keyof typeof LogLevel]\n if (isDefined(parsed)) level = parsed\n }\n logger = new ConsoleLogger(level)\n }\n Base.defaultLogger = logger\n return logger\n}\n","import type { UsageMeta } from '@xyo-network/xl1-protocol-sdk'\nimport { isUsageMeta } from '@xyo-network/xl1-protocol-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 { isDefined, isNull } from '@xylabs/sdk-js'\nimport { cosmiconfigSync } from 'cosmiconfig'\n\n/**\n * The name of the configuration file to search for.\n */\nconst configName = 'xyo'\n\n/**\n * The name of the section within the configuration file to parse.\n */\nconst configSection = 'xl1' // Default section in the config file\n\n/**\n * Attempts to parse the configuration from a file using cosmiconfig.\n * @returns The parsed configuration object if found and valid, otherwise undefined.\n */\nexport const tryParseConfig = (): Record<string, unknown> => {\n const explorer = cosmiconfigSync(\n configName,\n /* {\n searchPlaces: [\n 'package.json', // Looks under `xyo` key in package.json\n '.xyorc.json', // Supports common dotfile format\n 'xyo.config.json', // Supports custom-named config file\n ],\n loaders: {\n '.json': defaultLoaders['.json'],\n 'noExt': defaultLoaders['.json'],\n },\n }, */\n )\n const result = explorer.search()\n if (!isNull(result)) {\n const section = result?.config?.[configSection]\n if (isDefined(section) && typeof section === 'object') {\n return section\n }\n }\n return {}\n}\n","import net from 'node:net'\n\nexport const waitForHostPort = (host: string, port: number): Promise<void> => {\n return new Promise((resolve) => {\n const tryConnect = () => {\n const socket = new net.Socket()\n\n socket\n .setTimeout(1000)\n .once('error', () => {\n socket.destroy()\n setTimeout(tryConnect, 500) // retry after 500ms\n })\n .once('timeout', () => {\n socket.destroy()\n setTimeout(tryConnect, 500)\n })\n .connect(port, host, () => {\n socket.end()\n resolve()\n })\n }\n\n tryConnect()\n })\n}\n","import { 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":["assertEx","Actor","Mutex","BalanceActor","Actor","_updateMutex","Mutex","balanceService","assertEx","params","balance","blockViewer","startHandler","registerTimer","updateBalance","isLocked","runExclusive","head","currentBlockHash","accountBalances","assertEx","creatable","isDefined","isUndefined","toHex","Actor","PayloadBuilder","ValidatorActor","Actor","_lastValidatedBlock","_lastValidatedBlockHash","account","assertEx","params","balanceService","balance","blockViewer","chainStakeViewer","startHandler","registerTimer","spanAsync","block","currentBlock","isUndefined","hash","PayloadBuilder","isDefined","logger","log","toHex","valid","validateBlock","slashInvalidBlock","_block","slashed","Promise","resolve","http","isDefined","sendStatus","res","status","errorCode","statusCode","writeHead","end","JSON","stringify","notFound","createHealthServer","port","statusMonitor","logger","server","http","createServer","req","url","getGlobalStatus","listen","log","initHealthEndpoints","params","config","statusReporter","healthCheckPort","producer","isDefined","undefined","asAddress","assertEx","isDefined","initProducerAccount","initAccountBalanceService","initBlockProducer","initBlockRewardViewer","initBlockViewer","initChainService","initMempoolRunner","initMempoolViewer","initTimeService","initTelemetry","startupSpanAsync","validateHydratedBlockState","startupSpanAsync","timeBudget","Mutex","MemoryArchivist","MemoryArchivistConfigSchema","Mutex","mutex","Mutex","singleton","initLocalRejectedTransactionsArchivist","runExclusive","MemoryArchivist","create","account","config","schema","MemoryArchivistConfigSchema","max","name","mutex","Mutex","singleton","initRejectedTransactionsArchivist","params","runExclusive","timeBudget","logger","local","startupSpanAsync","initLocalRejectedTransactionsArchivist","isDefined","startupSpanAsync","timeBudget","Mutex","isDefined","getLocalPersistentMap","Mutex","mutex","Mutex","singleton","initLocalBalanceSummaryMap","params","runExclusive","isDefined","root","config","storage","getLocalPersistentMap","mutex","Mutex","singleton","initBalanceSummaryMap","params","runExclusive","isDefined","timeBudget","logger","local","startupSpanAsync","initLocalBalanceSummaryMap","isDefined","startupSpanAsync","timeBudget","Mutex","isDefined","getLocalPersistentMap","Mutex","mutex","Mutex","singleton","initLocalTransferSummaryMap","params","runExclusive","isDefined","root","config","storage","getLocalPersistentMap","mutex","Mutex","singleton","initTransferSummaryMap","params","runExclusive","isDefined","timeBudget","logger","local","startupSpanAsync","initLocalTransferSummaryMap","LoggerStatusReporter","logger","statusMap","report","name","status","progress","starting","Object","entries","map","value","reduce","a","b","started","info","statusPriority","error","stopped","stopping","creating","created","starting","started","SENTINEL_STATUS","reduceToMinimumStatus","statuses","minStatus","minPriority","Infinity","status","priority","RuntimeStatusMonitor","LoggerStatusReporter","globalTransitions","transitions","getGlobalStatus","Object","keys","statusMap","length","values","getStatus","name","onGlobalTransition","match","handler","push","onTransition","report","progress","previous","previousGlobal","runTransitions","globalStatus","prev","next","from","to","matchName","undefined","isStartable","value","possibleStartable","isDefined","start","status","initServices","context","config","logger","statusReporter","RuntimeStatusMonitor","onGlobalTransition","to","log","error","process","exit","startupSpanAsync","initHealthEndpoints","otlpEndpoint","telemetry","otel","path","endpoint","port","metrics","scrape","telemetryConfig","attributes","serviceName","serviceVersion","metricsConfig","traceProvider","meterProvider","account","Promise","all","initTelemetry","initProducerAccount","baseParamsFields","initParams","mempoolViewer","initMempoolViewer","mempoolRunner","initMempoolRunner","rejectedTransactionsArchivist","chainService","balanceSummaryMap","initRejectedTransactionsArchivist","initChainService","name","initBalanceSummaryMap","initTransferSummaryMap","chainContractViewer","chainStakeViewer","blockRewardViewer","initBlockRewardViewer","chainId","blockViewer","initBlockViewer","balanceService","initAccountBalanceService","time","initTimeService","validatorParams","validateHydratedBlockState","rewardAddress","producer","assertEx","asAddress","address","producerParams","balanceViewer","initBlockProducer","services","balance","reward","startableServices","Object","values","filter","map","service","every","Boolean","deepMerge","isDefined","Orchestrator","runProducer","ConfigZod","yargs","hideBin","ZodError","getServer","runApi","context","getServer","getServer","runBridge","context","getServer","getServer","runMempool","context","getServer","getServer","runRewardRedemptionApi","context","getServer","XL1LogoColorizedAscii","Base","ConsoleLogger","isDefined","LogLevel","SilentLogger","initLogger","config","logger","silent","SilentLogger","level","isDefined","logLevel","parsed","LogLevel","toLowerCase","ConsoleLogger","Base","defaultLogger","isUsageMeta","globalRegistry","usageMetaToOptions","meta","optionsFromGlobalZodRegistry","opts","schema","Object","values","globalRegistry","_map","isUsageMeta","hidden","title","isDefined","isNull","cosmiconfigSync","configName","configSection","tryParseConfig","explorer","cosmiconfigSync","result","search","isNull","section","config","isDefined","net","waitForHostPort","host","port","Promise","resolve","tryConnect","socket","net","Socket","setTimeout","once","destroy","connect","end","configuration","version","isDefined","__VERSION__","getContextFromConfig","logger","initLogger","orchestrator","Orchestrator","create","process","on","log","stop","exit","err","error","runCLI","y","yargs","hideBin","argv","usage","XL1LogoColorizedAscii","parserConfiguration","env","scriptName","middleware","parsedConfigFile","tryParseConfig","parsedConfigArgs","mergedConfig","deepMerge","ConfigZod","parse","ZodError","console","message","Error","options","optionsFromGlobalZodRegistry","wrap","terminalWidth","command","context","runApi","config","runBridge","runMempool","runProducer","runRewardRedemptionApi","mempool","enabled","waitForHostPort","host","port","api","help","alias","config","start","config","quiet","runCLI"]}
|
|
1
|
+
{"version":3,"sources":["../../src/orchestration/initServices.ts","../../src/runCLI.ts","../../src/commands/api/runApi.ts","../../src/commands/bridge/runBridge.ts","../../src/commands/mempool/runMempool.ts","../../src/commands/rewardRedemption/runRewardRedemptionApi.ts","../../src/images.ts","../../src/initLogger.ts","../../src/optionsFromGlobalZodRegistry.ts","../../src/tryParseConfig.ts","../../src/waitForHostPort.ts","../../src/start.ts"],"sourcesContent":["import type {\n Address,\n BaseParamsFields, CreatableName, Logger,\n Promisable,\n} from '@xylabs/sdk-js'\nimport {\n asAddress, assertEx, isDefined,\n} from '@xylabs/sdk-js'\nimport type { ChainInitializableParams } from '@xyo-network/chain-orchestration'\nimport {\n buildTelemetryConfig,\n initBalanceSummaryMap,\n initHealthEndpoints, initProducerAccount, initRejectedTransactionsArchivist, initStatusReporter, initTransferSummaryMap,\n} from '@xyo-network/chain-orchestration'\nimport type { SimpleBlockRunnerParams, XyoValidatorParams } from '@xyo-network/chain-services'\nimport {\n initAccountBalanceService,\n initBlockProducer, initBlockRewardViewer, initBlockViewer, initChainService,\n initMempoolRunner, initMempoolViewer, initTimeService,\n} from '@xyo-network/chain-services'\nimport { initTelemetry } from '@xyo-network/chain-telemetry'\nimport { startupSpanAsync } from '@xyo-network/chain-utils'\nimport { validateHydratedBlockState } from '@xyo-network/chain-validation'\nimport type { ChainId } from '@xyo-network/xl1-protocol'\nimport {\n type ChainContractViewer, ChainContractViewerMoniker, type ChainServiceCollectionV2, type ChainStakeViewer, ChainStakeViewerMoniker,\n type Config,\n} from '@xyo-network/xl1-protocol-sdk'\n\ninterface Startable {\n start: () => Promise<boolean>\n status: string\n}\n\nconst isStartable = (value: unknown): value is Startable => {\n const possibleStartable = value as Startable\n return isDefined(possibleStartable.start) && (typeof (possibleStartable.start) === 'function') && (possibleStartable.status === 'created')\n}\n\ninterface InitServicesContext {\n config: Config\n logger: Logger\n}\n\nexport const initServices = async (context: InitServicesContext): Promise<ChainServiceCollectionV2 & BaseParamsFields> => {\n const { config, logger } = context\n const statusReporter = initStatusReporter({ logger })\n\n await startupSpanAsync('initHealthEndpoints', () => initHealthEndpoints({ ...context, statusReporter }))\n\n const telemetryConfig = buildTelemetryConfig(config, 'xl1-server', '1.0.0')\n\n const [\n { traceProvider, meterProvider },\n account,\n ] = await Promise.all([\n startupSpanAsync('initTelemetry', () => initTelemetry(telemetryConfig)),\n startupSpanAsync('initProducerAccount', () => initProducerAccount(context)),\n ])\n\n const baseParamsFields: BaseParamsFields = {\n logger, meterProvider, traceProvider,\n }\n const initParams: ChainInitializableParams = {\n config, logger, meterProvider, statusReporter, traceProvider,\n }\n\n const mempoolViewer = await initMempoolViewer({ config, logger })\n const mempoolRunner = await initMempoolRunner({ config, logger })\n\n // Archivists\n const [\n rejectedTransactionsArchivist,\n chainService,\n balanceSummaryMap,\n ] = await Promise.all([\n startupSpanAsync(\n 'RejectedTransactionsArchivist',\n () => initRejectedTransactionsArchivist(initParams),\n ),\n startupSpanAsync(\n 'ChainService',\n () => initChainService({\n ...initParams, account, name: 'ChainService' as CreatableName,\n }),\n ),\n startupSpanAsync(\n 'BalanceSummaryMap',\n () => initBalanceSummaryMap(initParams),\n\n ),\n startupSpanAsync(\n 'TransferSummaryMap',\n () => initTransferSummaryMap(initParams),\n ),\n ])\n\n const chainContractViewer = {\n forkedAtBlockNumber: function (): Promise<bigint> {\n return chainService.forkedAtBlockNumber()\n },\n forkedAtHash: function (): Promise<bigint> {\n return chainService.forkedAtHash()\n },\n forkedChainId: function (): Promise<Address> {\n return chainService.forkedChainId()\n },\n minWithdrawalBlocks: function (): Promise<bigint> {\n return chainService.minWithdrawalBlocks()\n },\n rewardsContract: function (): Promise<string> {\n return chainService.rewardsContract()\n },\n stakingTokenAddress: function (): Promise<string> {\n return chainService.stakingTokenAddress()\n },\n moniker: ChainContractViewerMoniker,\n } satisfies ChainContractViewer\n\n const chainStakeViewer = {\n ...chainContractViewer,\n active: function (): Promisable<bigint> {\n return chainService.active()\n },\n activeByStaked: function (staked: Address): Promisable<bigint> {\n return chainService.activeByStaked(staked)\n },\n activeByStaker: function (address: Address): Promisable<bigint> {\n return chainService.activeByStaker(address)\n },\n pending: function (): Promisable<bigint> {\n return chainService.pending()\n },\n pendingByStaker: function (staker: Address): Promisable<bigint> {\n return chainService.pendingByStaker(staker)\n },\n withdrawn: function (): Promisable<bigint> {\n return chainService.withdrawn()\n },\n withdrawnByStaker: function (staker: Address): Promisable<bigint> {\n return chainService.withdrawnByStaker(staker)\n },\n chainId: function (): Promisable<ChainId> {\n return chainService.chainId()\n },\n moniker: ChainStakeViewerMoniker,\n } satisfies ChainStakeViewer\n\n const blockRewardViewer = await initBlockRewardViewer({ config, chainContractViewer })\n const chainId = await chainService.chainId()\n\n const blockViewer = await startupSpanAsync(\n 'BlockViewer',\n () => initBlockViewer({ ...initParams }),\n )\n\n const balanceService = await startupSpanAsync(\n 'BalanceService',\n () => initAccountBalanceService({ ...initParams }),\n )\n\n const time = await startupSpanAsync(\n 'TimeService',\n () => initTimeService({\n name: 'TimeService' as CreatableName,\n blockViewer,\n ...initParams,\n }),\n )\n\n const validatorParams: XyoValidatorParams = {\n name: 'Validator' as CreatableName,\n blockViewer,\n validateHydratedBlockState,\n ...initParams,\n }\n\n const rewardAddress = isDefined(config.producer.rewardAddress)\n ? assertEx(asAddress(config.producer.rewardAddress), () => 'Invalid block reward address provided')\n : account.address\n const producerParams: SimpleBlockRunnerParams = {\n ...validatorParams,\n account,\n chainId,\n name: 'Producer' as CreatableName,\n balanceViewer: balanceService,\n blockRewardViewer,\n mempoolRunner,\n mempoolViewer,\n rejectedTransactionsArchivist,\n rewardAddress,\n time,\n ...initParams,\n }\n const producer = await startupSpanAsync('Producer', () => initBlockProducer(producerParams))\n const services: ChainServiceCollectionV2 = {\n account,\n balance: balanceService,\n chainContractViewer,\n blockViewer,\n chainStakeViewer,\n mempoolRunner,\n mempoolViewer,\n producer,\n reward: blockRewardViewer,\n }\n\n logger?.log('All services created. Starting...')\n const startableServices = [balanceSummaryMap, ...Object.values(services)].filter(isStartable)\n // Start all services that have a start method and assert that they all started successfully\n assertEx(\n (await Promise.all(startableServices.map(service => service.start()))).every(Boolean),\n () => 'One or more services failed to start',\n )\n logger?.log('All services started successfully.')\n return { ...services, ...baseParamsFields }\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { deepMerge, isDefined } from '@xylabs/sdk-js'\nimport { Orchestrator } from '@xyo-network/chain-orchestration'\nimport { runProducer } from '@xyo-network/chain-producer'\nimport { type Config, ConfigZod } from '@xyo-network/xl1-protocol-sdk'\nimport type { Argv } from 'yargs'\nimport yargs from 'yargs'\nimport { hideBin } from 'yargs/helpers'\nimport { ZodError } from 'zod'\n\nimport {\n runApi, runBridge, runMempool, runRewardRedemptionApi,\n} from './commands/index.ts'\nimport { XL1LogoColorizedAscii } from './images.ts'\nimport { initLogger } from './initLogger.ts'\nimport { optionsFromGlobalZodRegistry } from './optionsFromGlobalZodRegistry.ts'\nimport { tryParseConfig } from './tryParseConfig.ts'\nimport { waitForHostPort } from './waitForHostPort.ts'\n\n/** Version string injected by Rollup at build time. */\ndeclare const __VERSION__: string\n\ninterface RunCliContext {\n logger: Logger\n orchestrator: Orchestrator\n}\n\n/**\n * The configuration that will be used throughout the CLI.\n * This is materialized after parsing the command-line arguments,\n * environment variables, and defaults.\n */\nlet configuration: Config\n\nconst version = isDefined(__VERSION__) ? __VERSION__ : 'unknown'\n\nconst getContextFromConfig = async (configuration: Config): Promise<RunCliContext> => {\n const logger = initLogger(configuration)\n const orchestrator = await Orchestrator.create({ logger })\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 { logger, 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((argv) => {\n try {\n // Parse the various config sources\n const parsedConfigFile = tryParseConfig() // Config file\n const parsedConfigArgs = argv // Command-line arguments & ENV VARs\n // Deep merge with precedence\n // TODO: Would like precedence to be defaults < file < ENV < CLI Args\n // but there is currently no way to determine which are defaults vs\n // user-supplied CLI Args since we set the CLI args to the defaults\n // and receive a flattened object. We might need to manually invoke\n // the parser without the defaults to achieve this.\n const mergedConfig = deepMerge(parsedConfigArgs, parsedConfigFile)\n // Validate the merged configuration\n configuration = ConfigZod.parse(mergedConfig)\n } catch (err) {\n if (err instanceof ZodError) {\n console.error(`${err.message}`)\n }\n throw new Error('Invalid configuration')\n }\n })\n .options(optionsFromGlobalZodRegistry())\n // .commandDir('./command/commands', opts) // Not yet supported for ESM\n .wrap(y.terminalWidth())\n .command('api', 'Run a XL1 API Node', (yargs) => {\n return yargs\n .command('$0', 'Run a XL1 API Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n runApi({ ...context, config: configuration })\n })\n })\n .command('bridge', 'Run a XL1 Bridge Node', (yargs) => {\n return yargs\n .command('$0', 'Run a XL1 Bridge Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n runBridge({ ...context, config: configuration })\n })\n })\n .command('mempool', 'Run a XL1 Mempool Node', (yargs) => {\n return yargs\n .command('$0', 'Run a XL1 Mempool Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n runMempool({ ...context, config: configuration })\n })\n })\n .command('producer', 'Run a XL1 Producer Node', (yargs) => {\n return yargs\n .command('$0', 'Run a XL1 Producer Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n await runProducer({ ...context, config: configuration })\n })\n })\n .command('reward-redemption-api', 'Run a XL1 Rewards Redemption API Node', (yargs) => {\n return yargs\n .command('$0', 'Run a XL1 Rewards Redemption API Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n runRewardRedemptionApi({ ...context, config: configuration })\n })\n })\n .command('$0', 'Run a full XL1 Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n if (configuration.mempool.enabled) {\n // Start Mempool but do not block\n runMempool({ ...context, config: configuration })\n // Wait for Mempool to be ready\n await waitForHostPort(configuration.mempool.host, configuration.mempool.port)\n }\n // Start API but do not block\n runApi({ ...context, config: configuration })\n // Wait for API to be ready\n await waitForHostPort(configuration.api.host, configuration.api.port)\n // Start Producer and block on it\n await runProducer({ ...context, config: configuration })\n })\n .help()\n .alias('help', 'h')\n .version(version)\n .argv\n\n await argv\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { getServer } from '@xyo-network/chain-api'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\ninterface RunApiContext {\n config: Config\n logger?: Logger\n}\n\nexport function runApi(context: RunApiContext) {\n void getServer(context)\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { getServer } from '@xyo-network/chain-bridge'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\ninterface RunBridgeContext {\n config: Config\n logger?: Logger\n}\n\nexport function runBridge(context: RunBridgeContext) {\n void getServer(context)\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { getServer } from '@xyo-network/chain-mempool'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\ninterface RunMempoolContext {\n config: Config\n logger: Logger\n}\n\nexport function runMempool(context: RunMempoolContext) {\n void getServer(context)\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { getServer } from '@xyo-network/chain-reward-redemption'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\ninterface RunRewardRedemptionApiContext {\n config: Config\n logger?: Logger\n}\n\nexport function runRewardRedemptionApi(context: RunRewardRedemptionApiContext) {\n void getServer(context)\n}\n","/* eslint-disable @stylistic/max-len */\nexport const XL1LogoColorizedAscii = `\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;118;111;144m_\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;72;32;223m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\n\u001b[38;2;128;128;128m ╠╠\u001b[0m\u001b[38;2;103;85;170m_\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;79;121;152m╦\u001b[0m\u001b[38;2;82;121;151m╦\u001b[0m\u001b[38;2;112;125;136m_ \u001b[0m\u001b[38;2;88;59;196m[\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;73;34;221m▒ \u001b[0m\u001b[38;2;121;121;127m_\u001b[0m\u001b[38;2;100;101;128m╔\u001b[0m\u001b[38;2;93;94;127m╦\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;82;121;151m²\u001b[0m\u001b[38;2;44;116;170m╠\u001b[0m\u001b[38;2;44;116;171m▒\u001b[0m\u001b[38;2;51;117;167mD\u001b[0m\u001b[38;2;80;121;152m╦\u001b[0m\u001b[38;2;111;125;136m_ \u001b[0m\u001b[38;2;67;23;232m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠ \u001b[0m\u001b[38;2;120;121;128m_\u001b[0m\u001b[38;2;100;101;127m╔\u001b[0m\u001b[38;2;79;81;127mR\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;88;90;127m╙\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;55;117;165m╚\u001b[0m\u001b[38;2;44;116;171m▒\u001b[0m\u001b[38;2;44;116;171m▒▒\u001b[0m\u001b[38;2;50;116;167mD\u001b[0m\u001b[38;2;80;121;152m╦ \u001b[0m\u001b[38;2;106;90;165mj\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠\u001b[0m\u001b[38;2;89;61;194mH \u001b[0m\u001b[38;2;99;100;127m╔\u001b[0m\u001b[38;2;79;80;127mD\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;71;73;128m▒▒╠\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;83;121;150m²\u001b[0m\u001b[38;2;44;116;170m▒\u001b[0m\u001b[38;2;44;116;171m▒▒▒ \u001b[0m\u001b[38;2;76;38;217m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠ \u001b[0m\u001b[38;2;74;76;128m╠\u001b[0m\u001b[38;2;71;73;128m▒▒▒\u001b[0m\u001b[38;2;89;90;128m╙\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;90;118;148m\\`\u001b[0m\u001b[38;2;89;107;153m_\u001b[0m\u001b[38;2;93;97;154m,\u001b[0m\u001b[38;2;105;89;166m╓\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠\u001b[0m\u001b[38;2;95;72;183m╓\u001b[0m\u001b[38;2;106;96;152m_\u001b[0m\u001b[38;2;100;94;143m\\`\u001b[0m\u001b[38;2;101;100;133m\\`\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;122;118;137m_\u001b[0m\u001b[38;2;113;102;153m,\u001b[0m\u001b[38;2;108;94;161m╓\u001b[0m\u001b[38;2;104;86;169m╓\u001b[0m\u001b[38;2;98;77;178m╔\u001b[0m\u001b[38;2;93;67;188m╗\u001b[0m\u001b[38;2;88;59;196mφ\u001b[0m\u001b[38;2;83;51;204m@\u001b[0m\u001b[38;2;78;42;213mD\u001b[0m\u001b[38;2;72;32;223m▒\u001b[0m\u001b[38;2;68;24;231m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠\u001b[0m\u001b[38;2;71;30;225m▒\u001b[0m\u001b[38;2;77;40;215m▒\u001b[0m\u001b[38;2;82;49;206mK\u001b[0m\u001b[38;2;87;57;198mφ\u001b[0m\u001b[38;2;91;65;190m╗\u001b[0m\u001b[38;2;97;75;180m╦\u001b[0m\u001b[38;2;103;84;171m╖\u001b[0m\u001b[38;2;107;92;163m²\u001b[0m\u001b[38;2;112;101;154m_\u001b[0m\u001b[38;2;119;112;143m_\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;106;91;164m\\`\u001b[0m\u001b[38;2;94;70;185m^\u001b[0m\u001b[38;2;89;62;193m╙\u001b[0m\u001b[38;2;85;54;201m╙\u001b[0m\u001b[38;2;80;45;210m╚\u001b[0m\u001b[38;2;74;35;220m╝\u001b[0m\u001b[38;2;69;26;229m╠\u001b[0m\u001b[38;2;66;22;233m╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠\u001b[0m\u001b[38;2;73;33;222m╝\u001b[0m\u001b[38;2;79;43;212m╩\u001b[0m\u001b[38;2;84;52;203m╜\u001b[0m\u001b[38;2;88;60;195m╙\u001b[0m\u001b[38;2;93;68;187m^\u001b[0m\u001b[38;2;100;80;175m\\`\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;113;84;152m\\`\u001b[0m\u001b[38;2;103;79;169m'\u001b[0m\u001b[38;2;95;72;183m\"\u001b[0m\u001b[38;2;87;57;198m╙\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠\u001b[0m\u001b[38;2;80;46;209m╜\u001b[0m\u001b[38;2;94;70;185m^\u001b[0m\u001b[38;2;102;77;175m^\u001b[0m\u001b[38;2;112;81;162m\\`\u001b[0m\u001b[38;2;115;92;155m\\`\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;145;116;107m,\u001b[0m\u001b[38;2;199;82;45m╠\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒╠ \u001b[0m\u001b[38;2;70;28;227m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠ \u001b[0m\u001b[38;2;189;49;97må\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠\u001b[0m\u001b[38;2;155;92;114m,\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;175;98;73m╔\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒▒▒\u001b[0m\u001b[38;2;197;83;47m╩ \u001b[0m\u001b[38;2;98;76;179m[\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠\u001b[0m\u001b[38;2;81;48;207mH \u001b[0m\u001b[38;2;188;51;98m╚\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠╠\u001b[0m\u001b[38;2;183;57;100mH\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;146;116;106m,\u001b[0m\u001b[38;2;199;82;44m╠\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;196;84;48m╩\u001b[0m\u001b[38;2;168;102;81m^ \u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠ \u001b[0m\u001b[38;2;160;87;111m'\u001b[0m\u001b[38;2;187;52;98m╚\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠\u001b[0m\u001b[38;2;156;91;113m,\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;198;83;46m╩\u001b[0m\u001b[38;2;194;85;50m╩\u001b[0m\u001b[38;2;167;102;82m^ \u001b[0m\u001b[38;2;81;46;209m╚\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠ \u001b[0m\u001b[38;2;159;88;112m'\u001b[0m\u001b[38;2;186;53;98m╚\u001b[0m\u001b[38;2;197;40;93m╩\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;110;97;158m'\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;94;69;186mH\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;68;25;230m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;108;93;162m²\u001b[0m\u001b[38;2;99;79;176m^\u001b[0m`\n","import type { Logger, LogLevelValue } from '@xylabs/sdk-js'\nimport {\n Base,\n ConsoleLogger, isDefined,\n LogLevel, SilentLogger,\n} from '@xylabs/sdk-js'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\nexport const initLogger = (config: Config): Logger => {\n let logger: Logger\n if (config.silent) {\n logger = new SilentLogger()\n } else {\n let level: LogLevelValue | undefined\n if (isDefined(config.logLevel)) {\n const parsed = LogLevel[config.logLevel.toLowerCase() as keyof typeof LogLevel]\n if (isDefined(parsed)) level = parsed\n }\n logger = new ConsoleLogger(level)\n }\n Base.defaultLogger = logger\n return logger\n}\n","import type { UsageMeta } from '@xyo-network/xl1-protocol-sdk'\nimport { isUsageMeta } from '@xyo-network/xl1-protocol-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 { isDefined, isNull } from '@xylabs/sdk-js'\nimport { cosmiconfigSync } from 'cosmiconfig'\n\n/**\n * The name of the configuration file to search for.\n */\nconst configName = 'xyo'\n\n/**\n * The name of the section within the configuration file to parse.\n */\nconst configSection = 'xl1' // Default section in the config file\n\n/**\n * Attempts to parse the configuration from a file using cosmiconfig.\n * @returns The parsed configuration object if found and valid, otherwise undefined.\n */\nexport const tryParseConfig = (): Record<string, unknown> => {\n const explorer = cosmiconfigSync(\n configName,\n /* {\n searchPlaces: [\n 'package.json', // Looks under `xyo` key in package.json\n '.xyorc.json', // Supports common dotfile format\n 'xyo.config.json', // Supports custom-named config file\n ],\n loaders: {\n '.json': defaultLoaders['.json'],\n 'noExt': defaultLoaders['.json'],\n },\n }, */\n )\n const result = explorer.search()\n if (!isNull(result)) {\n const section = result?.config?.[configSection]\n if (isDefined(section) && typeof section === 'object') {\n return section\n }\n }\n return {}\n}\n","import net from 'node:net'\n\nexport const waitForHostPort = (host: string, port: number): Promise<void> => {\n return new Promise((resolve) => {\n const tryConnect = () => {\n const socket = new net.Socket()\n\n socket\n .setTimeout(1000)\n .once('error', () => {\n socket.destroy()\n setTimeout(tryConnect, 500) // retry after 500ms\n })\n .once('timeout', () => {\n socket.destroy()\n setTimeout(tryConnect, 500)\n })\n .connect(port, host, () => {\n socket.end()\n resolve()\n })\n }\n\n tryConnect()\n })\n}\n","import { config } from 'dotenv'\n\nimport { runCLI } from './runCLI.ts'\n\nexport const start = async () => {\n config({ quiet: true })\n await runCLI()\n}\n"],"mappings":";;;;AAKA,SACEA,WAAWC,UAAUC,iBAChB;AAEP,SACEC,sBACAC,uBACAC,qBAAqBC,qBAAqBC,mCAAmCC,oBAAoBC,8BAC5F;AAEP,SACEC,2BACAC,mBAAmBC,uBAAuBC,iBAAiBC,kBAC3DC,mBAAmBC,mBAAmBC,uBACjC;AACP,SAASC,qBAAqB;AAC9B,SAASC,wBAAwB;AACjC,SAASC,kCAAkC;AAE3C,SAC4BC,4BAAkFC,+BAEvG;AAOP,IAAMC,cAAc,wBAACC,UAAAA;AACnB,QAAMC,oBAAoBD;AAC1B,SAAOE,UAAUD,kBAAkBE,KAAK,KAAM,OAAQF,kBAAkBE,UAAW,cAAgBF,kBAAkBG,WAAW;AAClI,GAHoB;AAUb,IAAMC,eAAe,8BAAOC,YAAAA;AACjC,QAAM,EAAEC,QAAAA,SAAQC,OAAM,IAAKF;AAC3B,QAAMG,iBAAiBC,mBAAmB;IAAEF;EAAO,CAAA;AAEnD,QAAMG,iBAAiB,uBAAuB,MAAMC,oBAAoB;IAAE,GAAGN;IAASG;EAAe,CAAA,CAAA;AAErG,QAAMI,kBAAkBC,qBAAqBP,SAAQ,cAAc,OAAA;AAEnE,QAAM,CACJ,EAAEQ,eAAeC,cAAa,GAC9BC,OAAAA,IACE,MAAMC,QAAQC,IAAI;IACpBR,iBAAiB,iBAAiB,MAAMS,cAAcP,eAAAA,CAAAA;IACtDF,iBAAiB,uBAAuB,MAAMU,oBAAoBf,OAAAA,CAAAA;GACnE;AAED,QAAMgB,mBAAqC;IACzCd;IAAQQ;IAAeD;EACzB;AACA,QAAMQ,aAAuC;IAC3ChB,QAAAA;IAAQC;IAAQQ;IAAeP;IAAgBM;EACjD;AAEA,QAAMS,gBAAgB,MAAMC,kBAAkB;IAAElB,QAAAA;IAAQC;EAAO,CAAA;AAC/D,QAAMkB,gBAAgB,MAAMC,kBAAkB;IAAEpB,QAAAA;IAAQC;EAAO,CAAA;AAG/D,QAAM,CACJoB,+BACAC,cACAC,iBAAAA,IACE,MAAMZ,QAAQC,IAAI;IACpBR,iBACE,iCACA,MAAMoB,kCAAkCR,UAAAA,CAAAA;IAE1CZ,iBACE,gBACA,MAAMqB,iBAAiB;MACrB,GAAGT;MAAYN;MAASgB,MAAM;IAChC,CAAA,CAAA;IAEFtB,iBACE,qBACA,MAAMuB,sBAAsBX,UAAAA,CAAAA;IAG9BZ,iBACE,sBACA,MAAMwB,uBAAuBZ,UAAAA,CAAAA;GAEhC;AAED,QAAMa,sBAAsB;IAC1BC,qBAAqB,kCAAA;AACnB,aAAOR,aAAaQ,oBAAmB;IACzC,GAFqB;IAGrBC,cAAc,kCAAA;AACZ,aAAOT,aAAaS,aAAY;IAClC,GAFc;IAGdC,eAAe,kCAAA;AACb,aAAOV,aAAaU,cAAa;IACnC,GAFe;IAGfC,qBAAqB,kCAAA;AACnB,aAAOX,aAAaW,oBAAmB;IACzC,GAFqB;IAGrBC,iBAAiB,kCAAA;AACf,aAAOZ,aAAaY,gBAAe;IACrC,GAFiB;IAGjBC,qBAAqB,kCAAA;AACnB,aAAOb,aAAaa,oBAAmB;IACzC,GAFqB;IAGrBC,SAASC;EACX;AAEA,QAAMC,mBAAmB;IACvB,GAAGT;IACHU,QAAQ,kCAAA;AACN,aAAOjB,aAAaiB,OAAM;IAC5B,GAFQ;IAGRC,gBAAgB,gCAAUC,QAAe;AACvC,aAAOnB,aAAakB,eAAeC,MAAAA;IACrC,GAFgB;IAGhBC,gBAAgB,gCAAUC,SAAgB;AACxC,aAAOrB,aAAaoB,eAAeC,OAAAA;IACrC,GAFgB;IAGhBC,SAAS,kCAAA;AACP,aAAOtB,aAAasB,QAAO;IAC7B,GAFS;IAGTC,iBAAiB,gCAAUC,QAAe;AACxC,aAAOxB,aAAauB,gBAAgBC,MAAAA;IACtC,GAFiB;IAGjBC,WAAW,kCAAA;AACT,aAAOzB,aAAayB,UAAS;IAC/B,GAFW;IAGXC,mBAAmB,gCAAUF,QAAe;AAC1C,aAAOxB,aAAa0B,kBAAkBF,MAAAA;IACxC,GAFmB;IAGnBG,SAAS,kCAAA;AACP,aAAO3B,aAAa2B,QAAO;IAC7B,GAFS;IAGTb,SAASc;EACX;AAEA,QAAMC,oBAAoB,MAAMC,sBAAsB;IAAEpD,QAAAA;IAAQ6B;EAAoB,CAAA;AACpF,QAAMoB,UAAU,MAAM3B,aAAa2B,QAAO;AAE1C,QAAMI,cAAc,MAAMjD,iBACxB,eACA,MAAMkD,gBAAgB;IAAE,GAAGtC;EAAW,CAAA,CAAA;AAGxC,QAAMuC,iBAAiB,MAAMnD,iBAC3B,kBACA,MAAMoD,0BAA0B;IAAE,GAAGxC;EAAW,CAAA,CAAA;AAGlD,QAAMyC,OAAO,MAAMrD,iBACjB,eACA,MAAMsD,gBAAgB;IACpBhC,MAAM;IACN2B;IACA,GAAGrC;EACL,CAAA,CAAA;AAGF,QAAM2C,kBAAsC;IAC1CjC,MAAM;IACN2B;IACAO;IACA,GAAG5C;EACL;AAEA,QAAM6C,gBAAgBlE,UAAUK,QAAO8D,SAASD,aAAa,IACzDE,SAASC,UAAUhE,QAAO8D,SAASD,aAAa,GAAG,MAAM,uCAAA,IACzDnD,QAAQiC;AACZ,QAAMsB,iBAA0C;IAC9C,GAAGN;IACHjD;IACAuC;IACAvB,MAAM;IACNwC,eAAeX;IACfJ;IACAhC;IACAF;IACAI;IACAwC;IACAJ;IACA,GAAGzC;EACL;AACA,QAAM8C,WAAW,MAAM1D,iBAAiB,YAAY,MAAM+D,kBAAkBF,cAAAA,CAAAA;AAC5E,QAAMG,WAAqC;IACzC1D;IACA2D,SAASd;IACT1B;IACAwB;IACAf;IACAnB;IACAF;IACA6C;IACAQ,QAAQnB;EACV;AAEAlD,UAAQsE,IAAI,mCAAA;AACZ,QAAMC,oBAAoB;IAACjD;OAAsBkD,OAAOC,OAAON,QAAAA;IAAWO,OAAOnF,WAAAA;AAEjFuE,YACG,MAAMpD,QAAQC,IAAI4D,kBAAkBI,IAAIC,CAAAA,YAAWA,QAAQjF,MAAK,CAAA,CAAA,GAAMkF,MAAMC,OAAAA,GAC7E,MAAM,sCAAA;AAER9E,UAAQsE,IAAI,oCAAA;AACZ,SAAO;IAAE,GAAGH;IAAU,GAAGrD;EAAiB;AAC5C,GA5K4B;;;AC3C5B,SAASiE,WAAWC,aAAAA,kBAAiB;AACrC,SAASC,oBAAoB;AAC7B,SAASC,mBAAmB;AAC5B,SAAsBC,iBAAiB;AAEvC,OAAOC,WAAW;AAClB,SAASC,eAAe;AACxB,SAASC,gBAAgB;;;ACPzB,SAASC,iBAAiB;AAQnB,SAASC,OAAOC,SAAsB;AAC3C,OAAKC,UAAUD,OAAAA;AACjB;AAFgBD;;;ACRhB,SAASG,aAAAA,kBAAiB;AAQnB,SAASC,UAAUC,SAAyB;AACjD,OAAKC,WAAUD,OAAAA;AACjB;AAFgBD;;;ACRhB,SAASG,aAAAA,kBAAiB;AAQnB,SAASC,WAAWC,SAA0B;AACnD,OAAKC,WAAUD,OAAAA;AACjB;AAFgBD;;;ACRhB,SAASG,aAAAA,kBAAiB;AAQnB,SAASC,uBAAuBC,SAAsC;AAC3E,OAAKC,WAAUD,OAAAA;AACjB;AAFgBD;;;ACRT,IAAMG,wBAAwB;;;;;;;;;;;;;;;;;;;;ACArC,SACEC,MACAC,eAAeC,aAAAA,YACfC,UAAUC,oBACL;AAGA,IAAMC,aAAa,wBAACC,YAAAA;AACzB,MAAIC;AACJ,MAAID,QAAOE,QAAQ;AACjBD,aAAS,IAAIE,aAAAA;EACf,OAAO;AACL,QAAIC;AACJ,QAAIC,WAAUL,QAAOM,QAAQ,GAAG;AAC9B,YAAMC,SAASC,SAASR,QAAOM,SAASG,YAAW,CAAA;AACnD,UAAIJ,WAAUE,MAAAA,EAASH,SAAQG;IACjC;AACAN,aAAS,IAAIS,cAAcN,KAAAA;EAC7B;AACAO,OAAKC,gBAAgBX;AACrB,SAAOA;AACT,GAd0B;;;ACP1B,SAASY,mBAAmB;AAE5B,SAASC,sBAAsB;AAE/B,IAAMC,qBAAqB,wBAACC,SAAAA;AAC1B,SAAOA;AACT,GAF2B;AAIpB,IAAMC,+BAA+B,6BAAA;AAC1C,QAAMC,OAAgC,CAAC;AACvC,aAAWC,UAAUC,OAAOC,OAAOC,eAAeC,IAAI,GAAG;AACvD,QAAIC,YAAYL,MAAAA,GAAS;AACvB,UAAIA,OAAOM,OAAQ;AACnBP,WAAKC,OAAOO,KAAK,IAAIX,mBAAmBI,MAAAA;IAC1C;EACF;AACA,SAAOD;AACT,GAT4C;;;ACT5C,SAASS,aAAAA,YAAWC,cAAc;AAClC,SAASC,uBAAuB;AAKhC,IAAMC,aAAa;AAKnB,IAAMC,gBAAgB;AAMf,IAAMC,iBAAiB,6BAAA;AAC5B,QAAMC,WAAWC,gBACfJ,UAAAA;AAaF,QAAMK,SAASF,SAASG,OAAM;AAC9B,MAAI,CAACC,OAAOF,MAAAA,GAAS;AACnB,UAAMG,UAAUH,QAAQI,SAASR,aAAAA;AACjC,QAAIS,WAAUF,OAAAA,KAAY,OAAOA,YAAY,UAAU;AACrD,aAAOA;IACT;EACF;AACA,SAAO,CAAC;AACV,GAvB8B;;;ACjB9B,OAAOG,SAAS;AAET,IAAMC,kBAAkB,wBAACC,MAAcC,SAAAA;AAC5C,SAAO,IAAIC,QAAQ,CAACC,YAAAA;AAClB,UAAMC,aAAa,6BAAA;AACjB,YAAMC,SAAS,IAAIC,IAAIC,OAAM;AAE7BF,aACGG,WAAW,GAAA,EACXC,KAAK,SAAS,MAAA;AACbJ,eAAOK,QAAO;AACdF,mBAAWJ,YAAY,GAAA;MACzB,CAAA,EACCK,KAAK,WAAW,MAAA;AACfJ,eAAOK,QAAO;AACdF,mBAAWJ,YAAY,GAAA;MACzB,CAAA,EACCO,QAAQV,MAAMD,MAAM,MAAA;AACnBK,eAAOO,IAAG;AACVT,gBAAAA;MACF,CAAA;IACJ,GAjBmB;AAmBnBC,eAAAA;EACF,CAAA;AACF,GAvB+B;;;AT8B/B,IAAIS;AAEJ,IAAMC,UAAUC,WAAUC,QAAAA,IAAeA,WAAc;AAEvD,IAAMC,uBAAuB,8BAAOJ,mBAAAA;AAClC,QAAMK,SAASC,WAAWN,cAAAA;AAC1B,QAAMO,eAAe,MAAMC,aAAaC,OAAO;IAAEJ;EAAO,CAAA;AAExDK,UAAQC,GAAG,UAAU,MAAA;AACnB,UAAM,YAAA;AACJ,UAAI;AACFN,eAAOO,IAAI,oDAAA;AACX,cAAML,cAAcM,KAAAA;AACpBR,eAAOO,IAAI,oCAAA;AACXF,gBAAQI,KAAK,CAAA;MACf,SAASC,KAAK;AACZV,eAAOW,MAAM,gCAAgCD,GAAAA;AAC7CL,gBAAQI,KAAK,CAAA;MACf;IACF,GAAA;EACF,CAAA;AACA,SAAO;IAAET;IAAQE;EAAa;AAChC,GAlB6B;AAqB7B,eAAsBU,SAAAA;AAEpB,QAAMC,IAAIC,MAAMC,QAAQV,QAAQW,IAAI,CAAA;AACpC,QAAMA,OAAOH,EACVI,MAAM;0BACQrB,OAAAA;EACjBsB,qBAAAA;;;;uBAIqB,EAClBC,oBAAoB;IACnB,gBAAgB;IAChB,iBAAiB;IACjB,cAAc;EAChB,CAAA,EACCC,IAAI,KAAA,EACJC,WAAW,KAAA,EACXC,WAAW,CAACN,UAAAA;AACX,QAAI;AAEF,YAAMO,mBAAmBC,eAAAA;AACzB,YAAMC,mBAAmBT;AAOzB,YAAMU,eAAeC,UAAUF,kBAAkBF,gBAAAA;AAEjD5B,sBAAgBiC,UAAUC,MAAMH,YAAAA;IAClC,SAAShB,KAAK;AACZ,UAAIA,eAAeoB,UAAU;AAC3BC,gBAAQpB,MAAM,GAAGD,IAAIsB,OAAO,EAAE;MAChC;AACA,YAAM,IAAIC,MAAM,uBAAA;IAClB;EACF,CAAA,EACCC,QAAQC,6BAAAA,CAAAA,EAERC,KAAKvB,EAAEwB,cAAa,CAAA,EACpBC,QAAQ,OAAO,sBAAsB,CAACxB,WAAAA;AACrC,WAAOA,OACJwB,QAAQ,MAAM,sBAAsB,MAAA;IAAO,GAAG,YAAA;AAC7C,YAAMC,UAAU,MAAMxC,qBAAqBJ,aAAAA;AAC3C6C,aAAO;QAAE,GAAGD;QAASE,QAAQ9C;MAAc,CAAA;IAC7C,CAAA;EACJ,CAAA,EACC2C,QAAQ,UAAU,yBAAyB,CAACxB,WAAAA;AAC3C,WAAOA,OACJwB,QAAQ,MAAM,yBAAyB,MAAA;IAAO,GAAG,YAAA;AAChD,YAAMC,UAAU,MAAMxC,qBAAqBJ,aAAAA;AAC3C+C,gBAAU;QAAE,GAAGH;QAASE,QAAQ9C;MAAc,CAAA;IAChD,CAAA;EACJ,CAAA,EACC2C,QAAQ,WAAW,0BAA0B,CAACxB,WAAAA;AAC7C,WAAOA,OACJwB,QAAQ,MAAM,0BAA0B,MAAA;IAAO,GAAG,YAAA;AACjD,YAAMC,UAAU,MAAMxC,qBAAqBJ,aAAAA;AAC3CgD,iBAAW;QAAE,GAAGJ;QAASE,QAAQ9C;MAAc,CAAA;IACjD,CAAA;EACJ,CAAA,EACC2C,QAAQ,YAAY,2BAA2B,CAACxB,WAAAA;AAC/C,WAAOA,OACJwB,QAAQ,MAAM,2BAA2B,MAAA;IAAO,GAAG,YAAA;AAClD,YAAMC,UAAU,MAAMxC,qBAAqBJ,aAAAA;AAC3C,YAAMiD,YAAY;QAAE,GAAGL;QAASE,QAAQ9C;MAAc,CAAA;IACxD,CAAA;EACJ,CAAA,EACC2C,QAAQ,yBAAyB,yCAAyC,CAACxB,WAAAA;AAC1E,WAAOA,OACJwB,QAAQ,MAAM,yCAAyC,MAAA;IAAO,GAAG,YAAA;AAChE,YAAMC,UAAU,MAAMxC,qBAAqBJ,aAAAA;AAC3CkD,6BAAuB;QAAE,GAAGN;QAASE,QAAQ9C;MAAc,CAAA;IAC7D,CAAA;EACJ,CAAA,EACC2C,QAAQ,MAAM,uBAAuB,MAAA;EAAO,GAAG,YAAA;AAC9C,UAAMC,UAAU,MAAMxC,qBAAqBJ,aAAAA;AAC3C,QAAIA,cAAcmD,QAAQC,SAAS;AAEjCJ,iBAAW;QAAE,GAAGJ;QAASE,QAAQ9C;MAAc,CAAA;AAE/C,YAAMqD,gBAAgBrD,cAAcmD,QAAQG,MAAMtD,cAAcmD,QAAQI,IAAI;IAC9E;AAEAV,WAAO;MAAE,GAAGD;MAASE,QAAQ9C;IAAc,CAAA;AAE3C,UAAMqD,gBAAgBrD,cAAcwD,IAAIF,MAAMtD,cAAcwD,IAAID,IAAI;AAEpE,UAAMN,YAAY;MAAE,GAAGL;MAASE,QAAQ9C;IAAc,CAAA;EACxD,CAAA,EACCyD,KAAI,EACJC,MAAM,QAAQ,GAAA,EACdzD,QAAQA,OAAAA,EACRoB;AAEH,QAAMA;AACR;AAlGsBJ;;;AUzDtB,SAAS0C,cAAc;AAIhB,IAAMC,QAAQ,mCAAA;AACnBC,SAAO;IAAEC,OAAO;EAAK,CAAA;AACrB,QAAMC,OAAAA;AACR,GAHqB;","names":["asAddress","assertEx","isDefined","buildTelemetryConfig","initBalanceSummaryMap","initHealthEndpoints","initProducerAccount","initRejectedTransactionsArchivist","initStatusReporter","initTransferSummaryMap","initAccountBalanceService","initBlockProducer","initBlockRewardViewer","initBlockViewer","initChainService","initMempoolRunner","initMempoolViewer","initTimeService","initTelemetry","startupSpanAsync","validateHydratedBlockState","ChainContractViewerMoniker","ChainStakeViewerMoniker","isStartable","value","possibleStartable","isDefined","start","status","initServices","context","config","logger","statusReporter","initStatusReporter","startupSpanAsync","initHealthEndpoints","telemetryConfig","buildTelemetryConfig","traceProvider","meterProvider","account","Promise","all","initTelemetry","initProducerAccount","baseParamsFields","initParams","mempoolViewer","initMempoolViewer","mempoolRunner","initMempoolRunner","rejectedTransactionsArchivist","chainService","balanceSummaryMap","initRejectedTransactionsArchivist","initChainService","name","initBalanceSummaryMap","initTransferSummaryMap","chainContractViewer","forkedAtBlockNumber","forkedAtHash","forkedChainId","minWithdrawalBlocks","rewardsContract","stakingTokenAddress","moniker","ChainContractViewerMoniker","chainStakeViewer","active","activeByStaked","staked","activeByStaker","address","pending","pendingByStaker","staker","withdrawn","withdrawnByStaker","chainId","ChainStakeViewerMoniker","blockRewardViewer","initBlockRewardViewer","blockViewer","initBlockViewer","balanceService","initAccountBalanceService","time","initTimeService","validatorParams","validateHydratedBlockState","rewardAddress","producer","assertEx","asAddress","producerParams","balanceViewer","initBlockProducer","services","balance","reward","log","startableServices","Object","values","filter","map","service","every","Boolean","deepMerge","isDefined","Orchestrator","runProducer","ConfigZod","yargs","hideBin","ZodError","getServer","runApi","context","getServer","getServer","runBridge","context","getServer","getServer","runMempool","context","getServer","getServer","runRewardRedemptionApi","context","getServer","XL1LogoColorizedAscii","Base","ConsoleLogger","isDefined","LogLevel","SilentLogger","initLogger","config","logger","silent","SilentLogger","level","isDefined","logLevel","parsed","LogLevel","toLowerCase","ConsoleLogger","Base","defaultLogger","isUsageMeta","globalRegistry","usageMetaToOptions","meta","optionsFromGlobalZodRegistry","opts","schema","Object","values","globalRegistry","_map","isUsageMeta","hidden","title","isDefined","isNull","cosmiconfigSync","configName","configSection","tryParseConfig","explorer","cosmiconfigSync","result","search","isNull","section","config","isDefined","net","waitForHostPort","host","port","Promise","resolve","tryConnect","socket","net","Socket","setTimeout","once","destroy","connect","end","configuration","version","isDefined","__VERSION__","getContextFromConfig","logger","initLogger","orchestrator","Orchestrator","create","process","on","log","stop","exit","err","error","runCLI","y","yargs","hideBin","argv","usage","XL1LogoColorizedAscii","parserConfiguration","env","scriptName","middleware","parsedConfigFile","tryParseConfig","parsedConfigArgs","mergedConfig","deepMerge","ConfigZod","parse","ZodError","console","message","Error","options","optionsFromGlobalZodRegistry","wrap","terminalWidth","command","context","runApi","config","runBridge","runMempool","runProducer","runRewardRedemptionApi","mempool","enabled","waitForHostPort","host","port","api","help","alias","config","start","config","quiet","runCLI"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/orchestration/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/orchestration/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { BaseParamsFields, Logger } from '@xylabs/sdk-js';
|
|
2
|
-
import type
|
|
2
|
+
import { type ChainServiceCollectionV2, type Config } from '@xyo-network/xl1-protocol-sdk';
|
|
3
3
|
interface InitServicesContext {
|
|
4
4
|
config: Config;
|
|
5
5
|
logger: Logger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initServices.d.ts","sourceRoot":"","sources":["../../../src/orchestration/initServices.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"initServices.d.ts","sourceRoot":"","sources":["../../../src/orchestration/initServices.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAAiB,MAAM,EAExC,MAAM,gBAAgB,CAAA;AAoBvB,OAAO,EACiD,KAAK,wBAAwB,EACnF,KAAK,MAAM,EACZ,MAAM,+BAA+B,CAAA;AAYtC,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,eAAO,MAAM,YAAY,GAAU,SAAS,mBAAmB,KAAG,OAAO,CAAC,wBAAwB,GAAG,gBAAgB,CA4KpH,CAAA"}
|
package/dist/node/xl1.mjs
CHANGED
|
@@ -136,7 +136,7 @@ var waitForHostPort = /* @__PURE__ */ __name((host, port) => {
|
|
|
136
136
|
|
|
137
137
|
// src/runCLI.ts
|
|
138
138
|
var configuration;
|
|
139
|
-
var version = isDefined3("1.17.
|
|
139
|
+
var version = isDefined3("1.17.5") ? "1.17.5" : "unknown";
|
|
140
140
|
var getContextFromConfig = /* @__PURE__ */ __name(async (configuration2) => {
|
|
141
141
|
const logger = initLogger(configuration2);
|
|
142
142
|
const orchestrator = await Orchestrator.create({
|
package/dist/node/xl1.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/start.ts","../../src/runCLI.ts","../../src/commands/api/runApi.ts","../../src/commands/bridge/runBridge.ts","../../src/commands/mempool/runMempool.ts","../../src/commands/rewardRedemption/runRewardRedemptionApi.ts","../../src/images.ts","../../src/initLogger.ts","../../src/optionsFromGlobalZodRegistry.ts","../../src/tryParseConfig.ts","../../src/waitForHostPort.ts","../../src/xl1.ts"],"sourcesContent":["import { config } from 'dotenv'\n\nimport { runCLI } from './runCLI.ts'\n\nexport const start = async () => {\n config({ quiet: true })\n await runCLI()\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { deepMerge, isDefined } from '@xylabs/sdk-js'\nimport { Orchestrator } from '@xyo-network/chain-orchestration'\nimport { runProducer } from '@xyo-network/chain-producer'\nimport { type Config, ConfigZod } from '@xyo-network/xl1-protocol-sdk'\nimport type { Argv } from 'yargs'\nimport yargs from 'yargs'\nimport { hideBin } from 'yargs/helpers'\nimport { ZodError } from 'zod'\n\nimport {\n runApi, runBridge, runMempool, runRewardRedemptionApi,\n} from './commands/index.ts'\nimport { XL1LogoColorizedAscii } from './images.ts'\nimport { initLogger } from './initLogger.ts'\nimport { optionsFromGlobalZodRegistry } from './optionsFromGlobalZodRegistry.ts'\nimport { tryParseConfig } from './tryParseConfig.ts'\nimport { waitForHostPort } from './waitForHostPort.ts'\n\n/** Version string injected by Rollup at build time. */\ndeclare const __VERSION__: string\n\ninterface RunCliContext {\n logger: Logger\n orchestrator: Orchestrator\n}\n\n/**\n * The configuration that will be used throughout the CLI.\n * This is materialized after parsing the command-line arguments,\n * environment variables, and defaults.\n */\nlet configuration: Config\n\nconst version = isDefined(__VERSION__) ? __VERSION__ : 'unknown'\n\nconst getContextFromConfig = async (configuration: Config): Promise<RunCliContext> => {\n const logger = initLogger(configuration)\n const orchestrator = await Orchestrator.create({ logger })\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 { logger, 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((argv) => {\n try {\n // Parse the various config sources\n const parsedConfigFile = tryParseConfig() // Config file\n const parsedConfigArgs = argv // Command-line arguments & ENV VARs\n // Deep merge with precedence\n // TODO: Would like precedence to be defaults < file < ENV < CLI Args\n // but there is currently no way to determine which are defaults vs\n // user-supplied CLI Args since we set the CLI args to the defaults\n // and receive a flattened object. We might need to manually invoke\n // the parser without the defaults to achieve this.\n const mergedConfig = deepMerge(parsedConfigArgs, parsedConfigFile)\n // Validate the merged configuration\n configuration = ConfigZod.parse(mergedConfig)\n } catch (err) {\n if (err instanceof ZodError) {\n console.error(`${err.message}`)\n }\n throw new Error('Invalid configuration')\n }\n })\n .options(optionsFromGlobalZodRegistry())\n // .commandDir('./command/commands', opts) // Not yet supported for ESM\n .wrap(y.terminalWidth())\n .command('api', 'Run a XL1 API Node', (yargs) => {\n return yargs\n .command('$0', 'Run a XL1 API Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n runApi({ ...context, config: configuration })\n })\n })\n .command('bridge', 'Run a XL1 Bridge Node', (yargs) => {\n return yargs\n .command('$0', 'Run a XL1 Bridge Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n runBridge({ ...context, config: configuration })\n })\n })\n .command('mempool', 'Run a XL1 Mempool Node', (yargs) => {\n return yargs\n .command('$0', 'Run a XL1 Mempool Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n runMempool({ ...context, config: configuration })\n })\n })\n .command('producer', 'Run a XL1 Producer Node', (yargs) => {\n return yargs\n .command('$0', 'Run a XL1 Producer Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n await runProducer({ ...context, config: configuration })\n })\n })\n .command('reward-redemption-api', 'Run a XL1 Rewards Redemption API Node', (yargs) => {\n return yargs\n .command('$0', 'Run a XL1 Rewards Redemption API Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n runRewardRedemptionApi({ ...context, config: configuration })\n })\n })\n .command('$0', 'Run a full XL1 Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n if (configuration.mempool.enabled) {\n // Start Mempool but do not block\n runMempool({ ...context, config: configuration })\n // Wait for Mempool to be ready\n await waitForHostPort(configuration.mempool.host, configuration.mempool.port)\n }\n // Start API but do not block\n runApi({ ...context, config: configuration })\n // Wait for API to be ready\n await waitForHostPort(configuration.api.host, configuration.api.port)\n // Start Producer and block on it\n await runProducer({ ...context, config: configuration })\n })\n .help()\n .alias('help', 'h')\n .version(version)\n .argv\n\n await argv\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { getServer } from '@xyo-network/chain-api'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\ninterface RunApiContext {\n config: Config\n logger?: Logger\n}\n\nexport function runApi(context: RunApiContext) {\n void getServer(context)\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { getServer } from '@xyo-network/chain-bridge'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\ninterface RunBridgeContext {\n config: Config\n logger?: Logger\n}\n\nexport function runBridge(context: RunBridgeContext) {\n void getServer(context)\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { getServer } from '@xyo-network/chain-mempool'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\ninterface RunMempoolContext {\n config: Config\n logger?: Logger\n}\n\nexport function runMempool(context: RunMempoolContext) {\n void getServer(context)\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { getServer } from '@xyo-network/chain-reward-redemption'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\ninterface RunRewardRedemptionApiContext {\n config: Config\n logger?: Logger\n}\n\nexport function runRewardRedemptionApi(context: RunRewardRedemptionApiContext) {\n void getServer(context)\n}\n","/* eslint-disable @stylistic/max-len */\nexport const XL1LogoColorizedAscii = `\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;118;111;144m_\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;72;32;223m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\n\u001b[38;2;128;128;128m ╠╠\u001b[0m\u001b[38;2;103;85;170m_\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;79;121;152m╦\u001b[0m\u001b[38;2;82;121;151m╦\u001b[0m\u001b[38;2;112;125;136m_ \u001b[0m\u001b[38;2;88;59;196m[\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;73;34;221m▒ \u001b[0m\u001b[38;2;121;121;127m_\u001b[0m\u001b[38;2;100;101;128m╔\u001b[0m\u001b[38;2;93;94;127m╦\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;82;121;151m²\u001b[0m\u001b[38;2;44;116;170m╠\u001b[0m\u001b[38;2;44;116;171m▒\u001b[0m\u001b[38;2;51;117;167mD\u001b[0m\u001b[38;2;80;121;152m╦\u001b[0m\u001b[38;2;111;125;136m_ \u001b[0m\u001b[38;2;67;23;232m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠ \u001b[0m\u001b[38;2;120;121;128m_\u001b[0m\u001b[38;2;100;101;127m╔\u001b[0m\u001b[38;2;79;81;127mR\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;88;90;127m╙\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;55;117;165m╚\u001b[0m\u001b[38;2;44;116;171m▒\u001b[0m\u001b[38;2;44;116;171m▒▒\u001b[0m\u001b[38;2;50;116;167mD\u001b[0m\u001b[38;2;80;121;152m╦ \u001b[0m\u001b[38;2;106;90;165mj\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠\u001b[0m\u001b[38;2;89;61;194mH \u001b[0m\u001b[38;2;99;100;127m╔\u001b[0m\u001b[38;2;79;80;127mD\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;71;73;128m▒▒╠\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;83;121;150m²\u001b[0m\u001b[38;2;44;116;170m▒\u001b[0m\u001b[38;2;44;116;171m▒▒▒ \u001b[0m\u001b[38;2;76;38;217m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠ \u001b[0m\u001b[38;2;74;76;128m╠\u001b[0m\u001b[38;2;71;73;128m▒▒▒\u001b[0m\u001b[38;2;89;90;128m╙\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;90;118;148m\\`\u001b[0m\u001b[38;2;89;107;153m_\u001b[0m\u001b[38;2;93;97;154m,\u001b[0m\u001b[38;2;105;89;166m╓\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠\u001b[0m\u001b[38;2;95;72;183m╓\u001b[0m\u001b[38;2;106;96;152m_\u001b[0m\u001b[38;2;100;94;143m\\`\u001b[0m\u001b[38;2;101;100;133m\\`\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;122;118;137m_\u001b[0m\u001b[38;2;113;102;153m,\u001b[0m\u001b[38;2;108;94;161m╓\u001b[0m\u001b[38;2;104;86;169m╓\u001b[0m\u001b[38;2;98;77;178m╔\u001b[0m\u001b[38;2;93;67;188m╗\u001b[0m\u001b[38;2;88;59;196mφ\u001b[0m\u001b[38;2;83;51;204m@\u001b[0m\u001b[38;2;78;42;213mD\u001b[0m\u001b[38;2;72;32;223m▒\u001b[0m\u001b[38;2;68;24;231m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠\u001b[0m\u001b[38;2;71;30;225m▒\u001b[0m\u001b[38;2;77;40;215m▒\u001b[0m\u001b[38;2;82;49;206mK\u001b[0m\u001b[38;2;87;57;198mφ\u001b[0m\u001b[38;2;91;65;190m╗\u001b[0m\u001b[38;2;97;75;180m╦\u001b[0m\u001b[38;2;103;84;171m╖\u001b[0m\u001b[38;2;107;92;163m²\u001b[0m\u001b[38;2;112;101;154m_\u001b[0m\u001b[38;2;119;112;143m_\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;106;91;164m\\`\u001b[0m\u001b[38;2;94;70;185m^\u001b[0m\u001b[38;2;89;62;193m╙\u001b[0m\u001b[38;2;85;54;201m╙\u001b[0m\u001b[38;2;80;45;210m╚\u001b[0m\u001b[38;2;74;35;220m╝\u001b[0m\u001b[38;2;69;26;229m╠\u001b[0m\u001b[38;2;66;22;233m╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠\u001b[0m\u001b[38;2;73;33;222m╝\u001b[0m\u001b[38;2;79;43;212m╩\u001b[0m\u001b[38;2;84;52;203m╜\u001b[0m\u001b[38;2;88;60;195m╙\u001b[0m\u001b[38;2;93;68;187m^\u001b[0m\u001b[38;2;100;80;175m\\`\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;113;84;152m\\`\u001b[0m\u001b[38;2;103;79;169m'\u001b[0m\u001b[38;2;95;72;183m\"\u001b[0m\u001b[38;2;87;57;198m╙\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠\u001b[0m\u001b[38;2;80;46;209m╜\u001b[0m\u001b[38;2;94;70;185m^\u001b[0m\u001b[38;2;102;77;175m^\u001b[0m\u001b[38;2;112;81;162m\\`\u001b[0m\u001b[38;2;115;92;155m\\`\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;145;116;107m,\u001b[0m\u001b[38;2;199;82;45m╠\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒╠ \u001b[0m\u001b[38;2;70;28;227m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠ \u001b[0m\u001b[38;2;189;49;97må\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠\u001b[0m\u001b[38;2;155;92;114m,\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;175;98;73m╔\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒▒▒\u001b[0m\u001b[38;2;197;83;47m╩ \u001b[0m\u001b[38;2;98;76;179m[\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠\u001b[0m\u001b[38;2;81;48;207mH \u001b[0m\u001b[38;2;188;51;98m╚\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠╠\u001b[0m\u001b[38;2;183;57;100mH\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;146;116;106m,\u001b[0m\u001b[38;2;199;82;44m╠\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;196;84;48m╩\u001b[0m\u001b[38;2;168;102;81m^ \u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠ \u001b[0m\u001b[38;2;160;87;111m'\u001b[0m\u001b[38;2;187;52;98m╚\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠\u001b[0m\u001b[38;2;156;91;113m,\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;198;83;46m╩\u001b[0m\u001b[38;2;194;85;50m╩\u001b[0m\u001b[38;2;167;102;82m^ \u001b[0m\u001b[38;2;81;46;209m╚\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠ \u001b[0m\u001b[38;2;159;88;112m'\u001b[0m\u001b[38;2;186;53;98m╚\u001b[0m\u001b[38;2;197;40;93m╩\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;110;97;158m'\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;94;69;186mH\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;68;25;230m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;108;93;162m²\u001b[0m\u001b[38;2;99;79;176m^\u001b[0m`\n","import type { Logger, LogLevelValue } from '@xylabs/sdk-js'\nimport {\n Base,\n ConsoleLogger, isDefined,\n LogLevel, SilentLogger,\n} from '@xylabs/sdk-js'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\nexport const initLogger = (config: Config): Logger => {\n let logger: Logger\n if (config.silent) {\n logger = new SilentLogger()\n } else {\n let level: LogLevelValue | undefined\n if (isDefined(config.logLevel)) {\n const parsed = LogLevel[config.logLevel.toLowerCase() as keyof typeof LogLevel]\n if (isDefined(parsed)) level = parsed\n }\n logger = new ConsoleLogger(level)\n }\n Base.defaultLogger = logger\n return logger\n}\n","import type { UsageMeta } from '@xyo-network/xl1-protocol-sdk'\nimport { isUsageMeta } from '@xyo-network/xl1-protocol-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 { isDefined, isNull } from '@xylabs/sdk-js'\nimport { cosmiconfigSync } from 'cosmiconfig'\n\n/**\n * The name of the configuration file to search for.\n */\nconst configName = 'xyo'\n\n/**\n * The name of the section within the configuration file to parse.\n */\nconst configSection = 'xl1' // Default section in the config file\n\n/**\n * Attempts to parse the configuration from a file using cosmiconfig.\n * @returns The parsed configuration object if found and valid, otherwise undefined.\n */\nexport const tryParseConfig = (): Record<string, unknown> => {\n const explorer = cosmiconfigSync(\n configName,\n /* {\n searchPlaces: [\n 'package.json', // Looks under `xyo` key in package.json\n '.xyorc.json', // Supports common dotfile format\n 'xyo.config.json', // Supports custom-named config file\n ],\n loaders: {\n '.json': defaultLoaders['.json'],\n 'noExt': defaultLoaders['.json'],\n },\n }, */\n )\n const result = explorer.search()\n if (!isNull(result)) {\n const section = result?.config?.[configSection]\n if (isDefined(section) && typeof section === 'object') {\n return section\n }\n }\n return {}\n}\n","import net from 'node:net'\n\nexport const waitForHostPort = (host: string, port: number): Promise<void> => {\n return new Promise((resolve) => {\n const tryConnect = () => {\n const socket = new net.Socket()\n\n socket\n .setTimeout(1000)\n .once('error', () => {\n socket.destroy()\n setTimeout(tryConnect, 500) // retry after 500ms\n })\n .once('timeout', () => {\n socket.destroy()\n setTimeout(tryConnect, 500)\n })\n .connect(port, host, () => {\n socket.end()\n resolve()\n })\n }\n\n tryConnect()\n })\n}\n","import { start } from './start.ts'\n\nstart().catch((err) => {\n // If we're in development mode, log the stack trace to the console\n if (process.env.NODE_ENV === 'development') console.error('An error occurred during startup:', err)\n // eslint-disable-next-line unicorn/no-process-exit\n process.exit(1)\n})\n"],"mappings":"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","names":["config","deepMerge","isDefined","Orchestrator","runProducer","ConfigZod","yargs","hideBin","ZodError","getServer","runApi","context","getServer","getServer","runBridge","context","getServer","getServer","runMempool","context","getServer","getServer","runRewardRedemptionApi","context","getServer","XL1LogoColorizedAscii","Base","ConsoleLogger","isDefined","LogLevel","SilentLogger","initLogger","config","logger","silent","SilentLogger","level","isDefined","logLevel","parsed","LogLevel","toLowerCase","ConsoleLogger","Base","defaultLogger","isUsageMeta","globalRegistry","usageMetaToOptions","meta","optionsFromGlobalZodRegistry","opts","schema","Object","values","globalRegistry","_map","isUsageMeta","hidden","title","isDefined","isNull","cosmiconfigSync","configName","configSection","tryParseConfig","explorer","cosmiconfigSync","result","search","isNull","section","config","isDefined","net","waitForHostPort","host","port","Promise","resolve","tryConnect","socket","net","Socket","setTimeout","once","destroy","connect","end","configuration","version","isDefined","__VERSION__","getContextFromConfig","logger","initLogger","orchestrator","Orchestrator","create","process","on","log","stop","exit","err","error","runCLI","y","yargs","hideBin","argv","usage","XL1LogoColorizedAscii","parserConfiguration","env","scriptName","middleware","parsedConfigFile","tryParseConfig","parsedConfigArgs","mergedConfig","deepMerge","ConfigZod","parse","ZodError","console","message","Error","options","optionsFromGlobalZodRegistry","wrap","terminalWidth","command","context","runApi","config","runBridge","runMempool","runProducer","runRewardRedemptionApi","mempool","enabled","waitForHostPort","host","port","api","help","alias","start","config","quiet","runCLI","start","catch","err","process","env","NODE_ENV","console","error","exit"]}
|
|
1
|
+
{"version":3,"sources":["../../src/start.ts","../../src/runCLI.ts","../../src/commands/api/runApi.ts","../../src/commands/bridge/runBridge.ts","../../src/commands/mempool/runMempool.ts","../../src/commands/rewardRedemption/runRewardRedemptionApi.ts","../../src/images.ts","../../src/initLogger.ts","../../src/optionsFromGlobalZodRegistry.ts","../../src/tryParseConfig.ts","../../src/waitForHostPort.ts","../../src/xl1.ts"],"sourcesContent":["import { config } from 'dotenv'\n\nimport { runCLI } from './runCLI.ts'\n\nexport const start = async () => {\n config({ quiet: true })\n await runCLI()\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { deepMerge, isDefined } from '@xylabs/sdk-js'\nimport { Orchestrator } from '@xyo-network/chain-orchestration'\nimport { runProducer } from '@xyo-network/chain-producer'\nimport { type Config, ConfigZod } from '@xyo-network/xl1-protocol-sdk'\nimport type { Argv } from 'yargs'\nimport yargs from 'yargs'\nimport { hideBin } from 'yargs/helpers'\nimport { ZodError } from 'zod'\n\nimport {\n runApi, runBridge, runMempool, runRewardRedemptionApi,\n} from './commands/index.ts'\nimport { XL1LogoColorizedAscii } from './images.ts'\nimport { initLogger } from './initLogger.ts'\nimport { optionsFromGlobalZodRegistry } from './optionsFromGlobalZodRegistry.ts'\nimport { tryParseConfig } from './tryParseConfig.ts'\nimport { waitForHostPort } from './waitForHostPort.ts'\n\n/** Version string injected by Rollup at build time. */\ndeclare const __VERSION__: string\n\ninterface RunCliContext {\n logger: Logger\n orchestrator: Orchestrator\n}\n\n/**\n * The configuration that will be used throughout the CLI.\n * This is materialized after parsing the command-line arguments,\n * environment variables, and defaults.\n */\nlet configuration: Config\n\nconst version = isDefined(__VERSION__) ? __VERSION__ : 'unknown'\n\nconst getContextFromConfig = async (configuration: Config): Promise<RunCliContext> => {\n const logger = initLogger(configuration)\n const orchestrator = await Orchestrator.create({ logger })\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 { logger, 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((argv) => {\n try {\n // Parse the various config sources\n const parsedConfigFile = tryParseConfig() // Config file\n const parsedConfigArgs = argv // Command-line arguments & ENV VARs\n // Deep merge with precedence\n // TODO: Would like precedence to be defaults < file < ENV < CLI Args\n // but there is currently no way to determine which are defaults vs\n // user-supplied CLI Args since we set the CLI args to the defaults\n // and receive a flattened object. We might need to manually invoke\n // the parser without the defaults to achieve this.\n const mergedConfig = deepMerge(parsedConfigArgs, parsedConfigFile)\n // Validate the merged configuration\n configuration = ConfigZod.parse(mergedConfig)\n } catch (err) {\n if (err instanceof ZodError) {\n console.error(`${err.message}`)\n }\n throw new Error('Invalid configuration')\n }\n })\n .options(optionsFromGlobalZodRegistry())\n // .commandDir('./command/commands', opts) // Not yet supported for ESM\n .wrap(y.terminalWidth())\n .command('api', 'Run a XL1 API Node', (yargs) => {\n return yargs\n .command('$0', 'Run a XL1 API Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n runApi({ ...context, config: configuration })\n })\n })\n .command('bridge', 'Run a XL1 Bridge Node', (yargs) => {\n return yargs\n .command('$0', 'Run a XL1 Bridge Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n runBridge({ ...context, config: configuration })\n })\n })\n .command('mempool', 'Run a XL1 Mempool Node', (yargs) => {\n return yargs\n .command('$0', 'Run a XL1 Mempool Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n runMempool({ ...context, config: configuration })\n })\n })\n .command('producer', 'Run a XL1 Producer Node', (yargs) => {\n return yargs\n .command('$0', 'Run a XL1 Producer Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n await runProducer({ ...context, config: configuration })\n })\n })\n .command('reward-redemption-api', 'Run a XL1 Rewards Redemption API Node', (yargs) => {\n return yargs\n .command('$0', 'Run a XL1 Rewards Redemption API Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n runRewardRedemptionApi({ ...context, config: configuration })\n })\n })\n .command('$0', 'Run a full XL1 Node', () => {}, async () => {\n const context = await getContextFromConfig(configuration)\n if (configuration.mempool.enabled) {\n // Start Mempool but do not block\n runMempool({ ...context, config: configuration })\n // Wait for Mempool to be ready\n await waitForHostPort(configuration.mempool.host, configuration.mempool.port)\n }\n // Start API but do not block\n runApi({ ...context, config: configuration })\n // Wait for API to be ready\n await waitForHostPort(configuration.api.host, configuration.api.port)\n // Start Producer and block on it\n await runProducer({ ...context, config: configuration })\n })\n .help()\n .alias('help', 'h')\n .version(version)\n .argv\n\n await argv\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { getServer } from '@xyo-network/chain-api'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\ninterface RunApiContext {\n config: Config\n logger?: Logger\n}\n\nexport function runApi(context: RunApiContext) {\n void getServer(context)\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { getServer } from '@xyo-network/chain-bridge'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\ninterface RunBridgeContext {\n config: Config\n logger?: Logger\n}\n\nexport function runBridge(context: RunBridgeContext) {\n void getServer(context)\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { getServer } from '@xyo-network/chain-mempool'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\ninterface RunMempoolContext {\n config: Config\n logger: Logger\n}\n\nexport function runMempool(context: RunMempoolContext) {\n void getServer(context)\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport { getServer } from '@xyo-network/chain-reward-redemption'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\ninterface RunRewardRedemptionApiContext {\n config: Config\n logger?: Logger\n}\n\nexport function runRewardRedemptionApi(context: RunRewardRedemptionApiContext) {\n void getServer(context)\n}\n","/* eslint-disable @stylistic/max-len */\nexport const XL1LogoColorizedAscii = `\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;118;111;144m_\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;72;32;223m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\n\u001b[38;2;128;128;128m ╠╠\u001b[0m\u001b[38;2;103;85;170m_\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;79;121;152m╦\u001b[0m\u001b[38;2;82;121;151m╦\u001b[0m\u001b[38;2;112;125;136m_ \u001b[0m\u001b[38;2;88;59;196m[\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;73;34;221m▒ \u001b[0m\u001b[38;2;121;121;127m_\u001b[0m\u001b[38;2;100;101;128m╔\u001b[0m\u001b[38;2;93;94;127m╦\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;82;121;151m²\u001b[0m\u001b[38;2;44;116;170m╠\u001b[0m\u001b[38;2;44;116;171m▒\u001b[0m\u001b[38;2;51;117;167mD\u001b[0m\u001b[38;2;80;121;152m╦\u001b[0m\u001b[38;2;111;125;136m_ \u001b[0m\u001b[38;2;67;23;232m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠ \u001b[0m\u001b[38;2;120;121;128m_\u001b[0m\u001b[38;2;100;101;127m╔\u001b[0m\u001b[38;2;79;81;127mR\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;88;90;127m╙\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;55;117;165m╚\u001b[0m\u001b[38;2;44;116;171m▒\u001b[0m\u001b[38;2;44;116;171m▒▒\u001b[0m\u001b[38;2;50;116;167mD\u001b[0m\u001b[38;2;80;121;152m╦ \u001b[0m\u001b[38;2;106;90;165mj\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠\u001b[0m\u001b[38;2;89;61;194mH \u001b[0m\u001b[38;2;99;100;127m╔\u001b[0m\u001b[38;2;79;80;127mD\u001b[0m\u001b[38;2;71;73;128m▒\u001b[0m\u001b[38;2;71;73;128m▒▒╠\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;83;121;150m²\u001b[0m\u001b[38;2;44;116;170m▒\u001b[0m\u001b[38;2;44;116;171m▒▒▒ \u001b[0m\u001b[38;2;76;38;217m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠ \u001b[0m\u001b[38;2;74;76;128m╠\u001b[0m\u001b[38;2;71;73;128m▒▒▒\u001b[0m\u001b[38;2;89;90;128m╙\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;90;118;148m\\`\u001b[0m\u001b[38;2;89;107;153m_\u001b[0m\u001b[38;2;93;97;154m,\u001b[0m\u001b[38;2;105;89;166m╓\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠\u001b[0m\u001b[38;2;95;72;183m╓\u001b[0m\u001b[38;2;106;96;152m_\u001b[0m\u001b[38;2;100;94;143m\\`\u001b[0m\u001b[38;2;101;100;133m\\`\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;122;118;137m_\u001b[0m\u001b[38;2;113;102;153m,\u001b[0m\u001b[38;2;108;94;161m╓\u001b[0m\u001b[38;2;104;86;169m╓\u001b[0m\u001b[38;2;98;77;178m╔\u001b[0m\u001b[38;2;93;67;188m╗\u001b[0m\u001b[38;2;88;59;196mφ\u001b[0m\u001b[38;2;83;51;204m@\u001b[0m\u001b[38;2;78;42;213mD\u001b[0m\u001b[38;2;72;32;223m▒\u001b[0m\u001b[38;2;68;24;231m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠\u001b[0m\u001b[38;2;71;30;225m▒\u001b[0m\u001b[38;2;77;40;215m▒\u001b[0m\u001b[38;2;82;49;206mK\u001b[0m\u001b[38;2;87;57;198mφ\u001b[0m\u001b[38;2;91;65;190m╗\u001b[0m\u001b[38;2;97;75;180m╦\u001b[0m\u001b[38;2;103;84;171m╖\u001b[0m\u001b[38;2;107;92;163m²\u001b[0m\u001b[38;2;112;101;154m_\u001b[0m\u001b[38;2;119;112;143m_\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;106;91;164m\\`\u001b[0m\u001b[38;2;94;70;185m^\u001b[0m\u001b[38;2;89;62;193m╙\u001b[0m\u001b[38;2;85;54;201m╙\u001b[0m\u001b[38;2;80;45;210m╚\u001b[0m\u001b[38;2;74;35;220m╝\u001b[0m\u001b[38;2;69;26;229m╠\u001b[0m\u001b[38;2;66;22;233m╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠\u001b[0m\u001b[38;2;73;33;222m╝\u001b[0m\u001b[38;2;79;43;212m╩\u001b[0m\u001b[38;2;84;52;203m╜\u001b[0m\u001b[38;2;88;60;195m╙\u001b[0m\u001b[38;2;93;68;187m^\u001b[0m\u001b[38;2;100;80;175m\\`\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;113;84;152m\\`\u001b[0m\u001b[38;2;103;79;169m'\u001b[0m\u001b[38;2;95;72;183m\"\u001b[0m\u001b[38;2;87;57;198m╙\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠╠\u001b[0m\u001b[38;2;80;46;209m╜\u001b[0m\u001b[38;2;94;70;185m^\u001b[0m\u001b[38;2;102;77;175m^\u001b[0m\u001b[38;2;112;81;162m\\`\u001b[0m\u001b[38;2;115;92;155m\\`\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;145;116;107m,\u001b[0m\u001b[38;2;199;82;45m╠\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒╠ \u001b[0m\u001b[38;2;70;28;227m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠╠ \u001b[0m\u001b[38;2;189;49;97må\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠\u001b[0m\u001b[38;2;155;92;114m,\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;175;98;73m╔\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒▒▒\u001b[0m\u001b[38;2;197;83;47m╩ \u001b[0m\u001b[38;2;98;76;179m[\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠\u001b[0m\u001b[38;2;81;48;207mH \u001b[0m\u001b[38;2;188;51;98m╚\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠╠\u001b[0m\u001b[38;2;183;57;100mH\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;146;116;106m,\u001b[0m\u001b[38;2;199;82;44m╠\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;207;77;35m▒\u001b[0m\u001b[38;2;196;84;48m╩\u001b[0m\u001b[38;2;168;102;81m^ \u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠╠ \u001b[0m\u001b[38;2;160;87;111m'\u001b[0m\u001b[38;2;187;52;98m╚\u001b[0m\u001b[38;2;203;32;90m╠\u001b[0m\u001b[38;2;203;32;90m╠╠\u001b[0m\u001b[38;2;156;91;113m,\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;198;83;46m╩\u001b[0m\u001b[38;2;194;85;50m╩\u001b[0m\u001b[38;2;167;102;82m^ \u001b[0m\u001b[38;2;81;46;209m╚\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠╠ \u001b[0m\u001b[38;2;159;88;112m'\u001b[0m\u001b[38;2;186;53;98m╚\u001b[0m\u001b[38;2;197;40;93m╩\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;110;97;158m'\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\u001b[38;2;94;69;186mH\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;68;25;230m╠\u001b[0m\u001b[38;2;66;21;234m╠\u001b[0m\n\u001b[38;2;128;128;128m \u001b[0m\u001b[38;2;108;93;162m²\u001b[0m\u001b[38;2;99;79;176m^\u001b[0m`\n","import type { Logger, LogLevelValue } from '@xylabs/sdk-js'\nimport {\n Base,\n ConsoleLogger, isDefined,\n LogLevel, SilentLogger,\n} from '@xylabs/sdk-js'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\nexport const initLogger = (config: Config): Logger => {\n let logger: Logger\n if (config.silent) {\n logger = new SilentLogger()\n } else {\n let level: LogLevelValue | undefined\n if (isDefined(config.logLevel)) {\n const parsed = LogLevel[config.logLevel.toLowerCase() as keyof typeof LogLevel]\n if (isDefined(parsed)) level = parsed\n }\n logger = new ConsoleLogger(level)\n }\n Base.defaultLogger = logger\n return logger\n}\n","import type { UsageMeta } from '@xyo-network/xl1-protocol-sdk'\nimport { isUsageMeta } from '@xyo-network/xl1-protocol-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 { isDefined, isNull } from '@xylabs/sdk-js'\nimport { cosmiconfigSync } from 'cosmiconfig'\n\n/**\n * The name of the configuration file to search for.\n */\nconst configName = 'xyo'\n\n/**\n * The name of the section within the configuration file to parse.\n */\nconst configSection = 'xl1' // Default section in the config file\n\n/**\n * Attempts to parse the configuration from a file using cosmiconfig.\n * @returns The parsed configuration object if found and valid, otherwise undefined.\n */\nexport const tryParseConfig = (): Record<string, unknown> => {\n const explorer = cosmiconfigSync(\n configName,\n /* {\n searchPlaces: [\n 'package.json', // Looks under `xyo` key in package.json\n '.xyorc.json', // Supports common dotfile format\n 'xyo.config.json', // Supports custom-named config file\n ],\n loaders: {\n '.json': defaultLoaders['.json'],\n 'noExt': defaultLoaders['.json'],\n },\n }, */\n )\n const result = explorer.search()\n if (!isNull(result)) {\n const section = result?.config?.[configSection]\n if (isDefined(section) && typeof section === 'object') {\n return section\n }\n }\n return {}\n}\n","import net from 'node:net'\n\nexport const waitForHostPort = (host: string, port: number): Promise<void> => {\n return new Promise((resolve) => {\n const tryConnect = () => {\n const socket = new net.Socket()\n\n socket\n .setTimeout(1000)\n .once('error', () => {\n socket.destroy()\n setTimeout(tryConnect, 500) // retry after 500ms\n })\n .once('timeout', () => {\n socket.destroy()\n setTimeout(tryConnect, 500)\n })\n .connect(port, host, () => {\n socket.end()\n resolve()\n })\n }\n\n tryConnect()\n })\n}\n","import { start } from './start.ts'\n\nstart().catch((err) => {\n // If we're in development mode, log the stack trace to the console\n if (process.env.NODE_ENV === 'development') console.error('An error occurred during startup:', err)\n // eslint-disable-next-line unicorn/no-process-exit\n process.exit(1)\n})\n"],"mappings":"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","names":["config","deepMerge","isDefined","Orchestrator","runProducer","ConfigZod","yargs","hideBin","ZodError","getServer","runApi","context","getServer","getServer","runBridge","context","getServer","getServer","runMempool","context","getServer","getServer","runRewardRedemptionApi","context","getServer","XL1LogoColorizedAscii","Base","ConsoleLogger","isDefined","LogLevel","SilentLogger","initLogger","config","logger","silent","SilentLogger","level","isDefined","logLevel","parsed","LogLevel","toLowerCase","ConsoleLogger","Base","defaultLogger","isUsageMeta","globalRegistry","usageMetaToOptions","meta","optionsFromGlobalZodRegistry","opts","schema","Object","values","globalRegistry","_map","isUsageMeta","hidden","title","isDefined","isNull","cosmiconfigSync","configName","configSection","tryParseConfig","explorer","cosmiconfigSync","result","search","isNull","section","config","isDefined","net","waitForHostPort","host","port","Promise","resolve","tryConnect","socket","net","Socket","setTimeout","once","destroy","connect","end","configuration","version","isDefined","__VERSION__","getContextFromConfig","logger","initLogger","orchestrator","Orchestrator","create","process","on","log","stop","exit","err","error","runCLI","y","yargs","hideBin","argv","usage","XL1LogoColorizedAscii","parserConfiguration","env","scriptName","middleware","parsedConfigFile","tryParseConfig","parsedConfigArgs","mergedConfig","deepMerge","ConfigZod","parse","ZodError","console","message","Error","options","optionsFromGlobalZodRegistry","wrap","terminalWidth","command","context","runApi","config","runBridge","runMempool","runProducer","runRewardRedemptionApi","mempool","enabled","waitForHostPort","host","port","api","help","alias","start","config","quiet","runCLI","start","catch","err","process","env","NODE_ENV","console","error","exit"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/xl1-cli-lib",
|
|
3
|
-
"version": "1.17.
|
|
3
|
+
"version": "1.17.6",
|
|
4
4
|
"description": "XYO Layer One CLI Library",
|
|
5
5
|
"homepage": "https://xylabs.com",
|
|
6
6
|
"bugs": {
|
|
@@ -43,26 +43,18 @@
|
|
|
43
43
|
"start": "node ./dist/node/xl1.mjs"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@
|
|
47
|
-
"@
|
|
48
|
-
"@xyo-network/
|
|
49
|
-
"@xyo-network/
|
|
50
|
-
"@xyo-network/chain-
|
|
51
|
-
"@xyo-network/chain-
|
|
52
|
-
"@xyo-network/chain-
|
|
53
|
-
"@xyo-network/chain-
|
|
54
|
-
"@xyo-network/chain-
|
|
55
|
-
"@xyo-network/chain-
|
|
56
|
-
"@xyo-network/chain-
|
|
57
|
-
"@xyo-network/
|
|
58
|
-
"@xyo-network/chain-telemetry": "~1.17.2",
|
|
59
|
-
"@xyo-network/chain-utils": "~1.17.2",
|
|
60
|
-
"@xyo-network/chain-validation": "~1.17.2",
|
|
61
|
-
"@xyo-network/payload-builder": "~5.2.17",
|
|
62
|
-
"@xyo-network/payload-model": "~5.2.17",
|
|
63
|
-
"@xyo-network/xl1-protocol": "~1.14.16",
|
|
64
|
-
"@xyo-network/xl1-protocol-sdk": "~1.17.2",
|
|
65
|
-
"async-mutex": "~0.5.0",
|
|
46
|
+
"@xylabs/sdk-js": "~5.0.51",
|
|
47
|
+
"@xyo-network/chain-api": "workspace:~",
|
|
48
|
+
"@xyo-network/chain-bridge": "workspace:~",
|
|
49
|
+
"@xyo-network/chain-mempool": "workspace:~",
|
|
50
|
+
"@xyo-network/chain-orchestration": "workspace:~",
|
|
51
|
+
"@xyo-network/chain-producer": "workspace:~",
|
|
52
|
+
"@xyo-network/chain-reward-redemption": "workspace:~",
|
|
53
|
+
"@xyo-network/chain-services": "workspace:~",
|
|
54
|
+
"@xyo-network/chain-telemetry": "workspace:~",
|
|
55
|
+
"@xyo-network/chain-utils": "workspace:~",
|
|
56
|
+
"@xyo-network/chain-validation": "workspace:~",
|
|
57
|
+
"@xyo-network/xl1-protocol-sdk": "workspace:~",
|
|
66
58
|
"cosmiconfig": "~9.0.0",
|
|
67
59
|
"dotenv": "~17.2.3",
|
|
68
60
|
"yargs": "~18.0.0",
|
|
@@ -71,15 +63,16 @@
|
|
|
71
63
|
"devDependencies": {
|
|
72
64
|
"@xylabs/ts-scripts-yarn3": "~7.2.8",
|
|
73
65
|
"@xylabs/tsconfig": "~7.2.8",
|
|
74
|
-
"@xylabs/vitest-extended": "~5.0.
|
|
66
|
+
"@xylabs/vitest-extended": "~5.0.51",
|
|
75
67
|
"@xyo-network/account-model": "~5.2.17",
|
|
76
68
|
"@xyo-network/archivist-lmdb": "~5.2.17",
|
|
77
69
|
"@xyo-network/archivist-mongodb": "~5.2.17",
|
|
78
|
-
"@xyo-network/chain-test": "
|
|
70
|
+
"@xyo-network/chain-test": "workspace:~",
|
|
79
71
|
"@xyo-network/wallet": "~5.2.17",
|
|
80
72
|
"@xyo-network/wallet-model": "~5.2.17",
|
|
81
|
-
"@xyo-network/xl1-
|
|
82
|
-
"@xyo-network/xl1-
|
|
73
|
+
"@xyo-network/xl1-protocol": "~1.14.17",
|
|
74
|
+
"@xyo-network/xl1-rpc": "workspace:~",
|
|
75
|
+
"@xyo-network/xl1-validation": "workspace:~",
|
|
83
76
|
"eslint": "^9.39.1",
|
|
84
77
|
"ethers": "^6.16.0",
|
|
85
78
|
"lmdb": "~3.4.4",
|
|
@@ -100,4 +93,4 @@
|
|
|
100
93
|
"publishConfig": {
|
|
101
94
|
"access": "public"
|
|
102
95
|
}
|
|
103
|
-
}
|
|
96
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Logger } from '@xylabs/sdk-js'
|
|
2
|
-
import type
|
|
2
|
+
import { type OrchestratorInstance, ValidatorActor } from '@xyo-network/chain-orchestration'
|
|
3
3
|
import type { Config } from '@xyo-network/xl1-protocol-sdk'
|
|
4
4
|
|
|
5
|
-
import { initServices
|
|
5
|
+
import { initServices } from '../../orchestration/index.ts'
|
|
6
6
|
|
|
7
7
|
interface RunValidatorContext {
|
|
8
8
|
config: Config
|