@aztec/aztec 0.0.0-test.1 → 0.0.1-commit.b655e406
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/dest/bin/index.js +20 -12
- package/dest/cli/aztec_start_action.d.ts.map +1 -1
- package/dest/cli/aztec_start_action.js +32 -33
- package/dest/cli/aztec_start_options.d.ts +4 -2
- package/dest/cli/aztec_start_options.d.ts.map +1 -1
- package/dest/cli/aztec_start_options.js +137 -207
- package/dest/cli/cli.d.ts.map +1 -1
- package/dest/cli/cli.js +4 -0
- package/dest/cli/cmds/start_archiver.d.ts.map +1 -1
- package/dest/cli/cmds/start_archiver.js +18 -10
- package/dest/cli/cmds/start_blob_sink.d.ts.map +1 -1
- package/dest/cli/cmds/start_blob_sink.js +17 -1
- package/dest/cli/cmds/start_bot.d.ts +3 -6
- package/dest/cli/cmds/start_bot.d.ts.map +1 -1
- package/dest/cli/cmds/start_bot.js +24 -13
- package/dest/cli/cmds/start_node.d.ts +1 -1
- package/dest/cli/cmds/start_node.d.ts.map +1 -1
- package/dest/cli/cmds/start_node.js +66 -79
- package/dest/cli/cmds/start_p2p_bootstrap.d.ts.map +1 -1
- package/dest/cli/cmds/start_p2p_bootstrap.js +9 -4
- package/dest/cli/cmds/start_prover_agent.d.ts.map +1 -1
- package/dest/cli/cmds/start_prover_agent.js +31 -2
- package/dest/cli/cmds/start_prover_broker.d.ts.map +1 -1
- package/dest/cli/cmds/start_prover_broker.js +9 -3
- package/dest/cli/cmds/start_prover_node.d.ts.map +1 -1
- package/dest/cli/cmds/start_prover_node.js +43 -45
- package/dest/cli/preload_crs.d.ts +3 -0
- package/dest/cli/preload_crs.d.ts.map +1 -0
- package/dest/cli/preload_crs.js +6 -0
- package/dest/cli/release_version.d.ts +2 -0
- package/dest/cli/release_version.d.ts.map +1 -0
- package/dest/cli/release_version.js +14 -0
- package/dest/cli/util.d.ts +36 -5
- package/dest/cli/util.d.ts.map +1 -1
- package/dest/cli/util.js +198 -28
- package/dest/cli/versioning.js +3 -3
- package/dest/examples/token.js +31 -18
- package/dest/examples/util.d.ts +4 -5
- package/dest/examples/util.d.ts.map +1 -1
- package/dest/examples/util.js +5 -6
- package/dest/index.d.ts +1 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -1
- package/dest/sandbox/banana_fpc.d.ts +4 -5
- package/dest/sandbox/banana_fpc.d.ts.map +1 -1
- package/dest/sandbox/banana_fpc.js +19 -21
- package/dest/sandbox/index.d.ts +2 -3
- package/dest/sandbox/index.d.ts.map +1 -1
- package/dest/sandbox/index.js +2 -3
- package/dest/sandbox/sandbox.d.ts +25 -27
- package/dest/sandbox/sandbox.d.ts.map +1 -1
- package/dest/sandbox/sandbox.js +51 -49
- package/dest/sandbox/sponsored_fpc.d.ts +3 -5
- package/dest/sandbox/sponsored_fpc.d.ts.map +1 -1
- package/dest/sandbox/sponsored_fpc.js +10 -18
- package/dest/testing/anvil_test_watcher.d.ts +34 -0
- package/dest/testing/anvil_test_watcher.d.ts.map +1 -0
- package/dest/testing/anvil_test_watcher.js +142 -0
- package/dest/testing/cheat_codes.d.ts +43 -0
- package/dest/testing/cheat_codes.d.ts.map +1 -0
- package/dest/testing/cheat_codes.js +62 -0
- package/dest/testing/index.d.ts +4 -0
- package/dest/testing/index.d.ts.map +1 -0
- package/dest/testing/index.js +3 -0
- package/package.json +47 -41
- package/src/bin/index.ts +24 -12
- package/src/cli/aztec_start_action.ts +27 -30
- package/src/cli/aztec_start_options.ts +155 -207
- package/src/cli/cli.ts +8 -0
- package/src/cli/cmds/start_archiver.ts +19 -13
- package/src/cli/cmds/start_blob_sink.ts +27 -1
- package/src/cli/cmds/start_bot.ts +35 -12
- package/src/cli/cmds/start_node.ts +89 -84
- package/src/cli/cmds/start_p2p_bootstrap.ts +12 -4
- package/src/cli/cmds/start_prover_agent.ts +22 -2
- package/src/cli/cmds/start_prover_broker.ts +23 -3
- package/src/cli/cmds/start_prover_node.ts +53 -50
- package/src/cli/preload_crs.ts +7 -0
- package/src/cli/release_version.ts +21 -0
- package/src/cli/util.ts +208 -34
- package/src/cli/versioning.ts +3 -3
- package/src/examples/token.ts +23 -19
- package/src/examples/util.ts +6 -8
- package/src/index.ts +3 -4
- package/src/sandbox/banana_fpc.ts +20 -25
- package/src/sandbox/index.ts +5 -3
- package/src/sandbox/sandbox.ts +70 -57
- package/src/sandbox/sponsored_fpc.ts +12 -25
- package/src/testing/anvil_test_watcher.ts +164 -0
- package/src/testing/cheat_codes.ts +78 -0
- package/src/testing/index.ts +3 -0
- package/dest/cli/chain_l2_config.d.ts +0 -19
- package/dest/cli/chain_l2_config.d.ts.map +0 -1
- package/dest/cli/chain_l2_config.js +0 -56
- package/dest/cli/cmds/start_faucet.d.ts +0 -4
- package/dest/cli/cmds/start_faucet.d.ts.map +0 -1
- package/dest/cli/cmds/start_faucet.js +0 -20
- package/dest/cli/cmds/start_pxe.d.ts +0 -16
- package/dest/cli/cmds/start_pxe.d.ts.map +0 -1
- package/dest/cli/cmds/start_pxe.js +0 -95
- package/dest/cli/get_l1_config.d.ts +0 -7
- package/dest/cli/get_l1_config.d.ts.map +0 -1
- package/dest/cli/get_l1_config.js +0 -13
- package/dest/sandbox/sponsored_fee_payment_method.d.ts +0 -23
- package/dest/sandbox/sponsored_fee_payment_method.d.ts.map +0 -1
- package/dest/sandbox/sponsored_fee_payment_method.js +0 -36
- package/src/cli/chain_l2_config.ts +0 -74
- package/src/cli/cmds/start_faucet.ts +0 -34
- package/src/cli/cmds/start_pxe.ts +0 -129
- package/src/cli/get_l1_config.ts +0 -18
- package/src/sandbox/sponsored_fee_payment_method.ts +0 -46
|
@@ -1,27 +1,38 @@
|
|
|
1
|
-
import { BotRunner, botConfigMappings, getBotRunnerApiHandler } from '@aztec/bot';
|
|
2
|
-
import {
|
|
1
|
+
import { BotRunner, BotStore, botConfigMappings, getBotRunnerApiHandler } from '@aztec/bot';
|
|
2
|
+
import { createStore, openTmpStore } from '@aztec/kv-store/lmdb-v2';
|
|
3
|
+
import { allPxeConfigMappings } from '@aztec/pxe/config';
|
|
4
|
+
import { createAztecNodeClient } from '@aztec/stdlib/interfaces/client';
|
|
5
|
+
import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient, makeTracedFetch } from '@aztec/telemetry-client';
|
|
6
|
+
import { TestWallet } from '@aztec/test-wallet/server';
|
|
3
7
|
import { extractRelevantOptions } from '../util.js';
|
|
8
|
+
import { getVersions } from '../versioning.js';
|
|
4
9
|
export async function startBot(options, signalHandlers, services, userLog) {
|
|
5
10
|
const { proverNode, archiver, sequencer, p2pBootstrap, txe, prover } = options;
|
|
6
11
|
if (proverNode || archiver || sequencer || p2pBootstrap || txe || prover) {
|
|
7
12
|
userLog(`Starting a bot with --prover-node, --prover, --archiver, --sequencer, --p2p-bootstrap, or --txe is not supported.`);
|
|
8
13
|
process.exit(1);
|
|
9
14
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
const fetch = makeTracedFetch([
|
|
16
|
+
1,
|
|
17
|
+
2,
|
|
18
|
+
3
|
|
19
|
+
], true);
|
|
20
|
+
const config = extractRelevantOptions(options, botConfigMappings, 'bot');
|
|
21
|
+
if (!config.nodeUrl) {
|
|
22
|
+
throw new Error('The bot requires access to a Node');
|
|
15
23
|
}
|
|
24
|
+
const aztecNode = createAztecNodeClient(config.nodeUrl, getVersions(), fetch);
|
|
25
|
+
const pxeConfig = extractRelevantOptions(options, allPxeConfigMappings, 'pxe');
|
|
26
|
+
const wallet = await TestWallet.create(aztecNode, pxeConfig);
|
|
16
27
|
const telemetry = initTelemetryClient(getTelemetryClientConfig());
|
|
17
|
-
await addBot(options, signalHandlers, services,
|
|
18
|
-
pxe,
|
|
19
|
-
telemetry
|
|
20
|
-
});
|
|
28
|
+
await addBot(options, signalHandlers, services, wallet, aztecNode, telemetry, undefined);
|
|
21
29
|
}
|
|
22
|
-
export function addBot(options, signalHandlers, services,
|
|
30
|
+
export async function addBot(options, signalHandlers, services, wallet, aztecNode, telemetry, aztecNodeAdmin) {
|
|
23
31
|
const config = extractRelevantOptions(options, botConfigMappings, 'bot');
|
|
24
|
-
const
|
|
32
|
+
const db = await (config.dataDirectory ? createStore('bot', BotStore.SCHEMA_VERSION, config) : openTmpStore('bot', true, config.dataStoreMapSizeKb));
|
|
33
|
+
const store = new BotStore(db);
|
|
34
|
+
await store.cleanupOldClaims();
|
|
35
|
+
const botRunner = new BotRunner(config, wallet, aztecNode, telemetry, aztecNodeAdmin, store);
|
|
25
36
|
if (!config.noStart) {
|
|
26
37
|
void botRunner.start(); // Do not block since bot setup takes time
|
|
27
38
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type AztecNodeConfig } from '@aztec/aztec-node';
|
|
2
2
|
import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
|
|
3
3
|
import type { LogFn } from '@aztec/foundation/log';
|
|
4
|
-
export declare function startNode(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, userLog: LogFn): Promise<{
|
|
4
|
+
export declare function startNode(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, adminServices: NamespacedApiHandlers, userLog: LogFn): Promise<{
|
|
5
5
|
config: AztecNodeConfig;
|
|
6
6
|
}>;
|
|
7
7
|
//# sourceMappingURL=start_node.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start_node.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAA6C,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"start_node.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAA6C,MAAM,mBAAmB,CAAC;AAMpG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAoBnD,wBAAsB,SAAS,CAC7B,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,aAAa,EAAE,qBAAqB,EACpC,OAAO,EAAE,KAAK,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,CAAC,CAyHtC"}
|
|
@@ -1,87 +1,75 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getInitialTestAccountsData } from '@aztec/accounts/testing';
|
|
2
2
|
import { aztecNodeConfigMappings, getConfigEnvVars } from '@aztec/aztec-node';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
4
|
+
import { getSponsoredFPCAddress } from '@aztec/cli/cli-utils';
|
|
5
|
+
import { getL1Config } from '@aztec/cli/config';
|
|
6
|
+
import { getPublicClient } from '@aztec/ethereum';
|
|
7
|
+
import { SecretValue } from '@aztec/foundation/config';
|
|
8
|
+
import { allPxeConfigMappings } from '@aztec/pxe/config';
|
|
9
|
+
import { AztecNodeAdminApiSchema, AztecNodeApiSchema } from '@aztec/stdlib/interfaces/client';
|
|
5
10
|
import { P2PApiSchema } from '@aztec/stdlib/interfaces/server';
|
|
6
11
|
import { initTelemetryClient, telemetryClientConfigMappings } from '@aztec/telemetry-client';
|
|
12
|
+
import { TestWallet } from '@aztec/test-wallet/server';
|
|
7
13
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
// options
|
|
14
|
-
const
|
|
14
|
+
import { createAztecNode } from '../../sandbox/index.js';
|
|
15
|
+
import { extractNamespacedOptions, extractRelevantOptions, preloadCrsDataForVerifying, setupUpdateMonitor } from '../util.js';
|
|
16
|
+
export async function startNode(options, signalHandlers, services, adminServices, userLog) {
|
|
17
|
+
// All options set from environment variables
|
|
18
|
+
const configFromEnvVars = getConfigEnvVars();
|
|
19
|
+
// Extract relevant options from command line arguments
|
|
20
|
+
const relevantOptions = extractRelevantOptions(options, aztecNodeConfigMappings, 'node');
|
|
15
21
|
// All options that are relevant to the Aztec Node
|
|
16
22
|
let nodeConfig = {
|
|
17
|
-
...
|
|
18
|
-
...
|
|
23
|
+
...configFromEnvVars,
|
|
24
|
+
...relevantOptions
|
|
19
25
|
};
|
|
20
26
|
if (options.proverNode) {
|
|
21
27
|
userLog(`Running a Prover Node within a Node is not yet supported`);
|
|
22
28
|
process.exit(1);
|
|
23
29
|
}
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
// REFACTOR: We should not be calling a method from sandbox on the prod start flow
|
|
37
|
-
await deployContractsToL1(nodeConfig, account, undefined, {
|
|
38
|
-
assumeProvenThroughBlockNumber: nodeSpecificOptions.assumeProvenThroughBlockNumber,
|
|
39
|
-
salt: nodeSpecificOptions.deployAztecContractsSalt,
|
|
40
|
-
genesisBlockHash,
|
|
41
|
-
genesisArchiveRoot
|
|
42
|
-
});
|
|
43
|
-
} else {
|
|
44
|
-
if (!nodeConfig.l1Contracts.registryAddress || nodeConfig.l1Contracts.registryAddress.isZero()) {
|
|
45
|
-
throw new Error('L1 registry address is required to start Aztec Node without --deploy-aztec-contracts option');
|
|
46
|
-
}
|
|
47
|
-
const { addresses, config } = await getL1Config(nodeConfig.l1Contracts.registryAddress, nodeConfig.l1RpcUrls, nodeConfig.l1ChainId);
|
|
48
|
-
// TODO(#12272): will clean this up.
|
|
49
|
-
nodeConfig = {
|
|
50
|
-
...nodeConfig,
|
|
51
|
-
l1Contracts: {
|
|
52
|
-
...addresses,
|
|
53
|
-
slashFactoryAddress: nodeConfig.l1Contracts.slashFactoryAddress
|
|
54
|
-
},
|
|
55
|
-
...config
|
|
56
|
-
};
|
|
30
|
+
await preloadCrsDataForVerifying(nodeConfig, userLog);
|
|
31
|
+
const testAccounts = nodeConfig.testAccounts ? (await getInitialTestAccountsData()).map((a)=>a.address) : [];
|
|
32
|
+
const sponsoredFPCAccounts = nodeConfig.sponsoredFPC ? [
|
|
33
|
+
await getSponsoredFPCAddress()
|
|
34
|
+
] : [];
|
|
35
|
+
const initialFundedAccounts = testAccounts.concat(sponsoredFPCAccounts);
|
|
36
|
+
userLog(`Initial funded accounts: ${initialFundedAccounts.map((a)=>a.toString()).join(', ')}`);
|
|
37
|
+
const { genesisArchiveRoot, prefilledPublicData } = await getGenesisValues(initialFundedAccounts);
|
|
38
|
+
userLog(`Genesis archive root: ${genesisArchiveRoot.toString()}`);
|
|
39
|
+
const followsCanonicalRollup = typeof nodeConfig.rollupVersion !== 'number' || nodeConfig.rollupVersion === 'canonical';
|
|
40
|
+
if (!nodeConfig.l1Contracts.registryAddress || nodeConfig.l1Contracts.registryAddress.isZero()) {
|
|
41
|
+
throw new Error('L1 registry address is required to start Aztec Node');
|
|
57
42
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if (!archiverUrl) {
|
|
63
|
-
userLog('Archiver Service URL is required to start Aztec Node without --archiver option');
|
|
64
|
-
throw new Error('Archiver Service URL is required to start Aztec Node without --archiver option');
|
|
65
|
-
}
|
|
66
|
-
nodeConfig.archiverUrl = archiverUrl;
|
|
43
|
+
const { addresses, config } = await getL1Config(nodeConfig.l1Contracts.registryAddress, nodeConfig.l1RpcUrls, nodeConfig.l1ChainId, nodeConfig.rollupVersion);
|
|
44
|
+
process.env.ROLLUP_CONTRACT_ADDRESS ??= addresses.rollupAddress.toString();
|
|
45
|
+
if (!Fr.fromHexString(config.genesisArchiveTreeRoot).equals(genesisArchiveRoot)) {
|
|
46
|
+
throw new Error(`The computed genesis archive tree root ${genesisArchiveRoot} does not match the expected genesis archive tree root ${config.genesisArchiveTreeRoot} for the rollup deployed at ${addresses.rollupAddress}`);
|
|
67
47
|
}
|
|
48
|
+
// TODO(#12272): will clean this up.
|
|
49
|
+
nodeConfig = {
|
|
50
|
+
...nodeConfig,
|
|
51
|
+
l1Contracts: {
|
|
52
|
+
...addresses,
|
|
53
|
+
slashFactoryAddress: nodeConfig.l1Contracts.slashFactoryAddress
|
|
54
|
+
},
|
|
55
|
+
...config
|
|
56
|
+
};
|
|
68
57
|
if (!options.sequencer) {
|
|
69
58
|
nodeConfig.disableValidator = true;
|
|
70
59
|
} else {
|
|
71
|
-
const sequencerConfig =
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
60
|
+
const sequencerConfig = {
|
|
61
|
+
...configFromEnvVars,
|
|
62
|
+
...extractNamespacedOptions(options, 'sequencer')
|
|
63
|
+
};
|
|
64
|
+
// If no publisher private keys have been given, use the first validator key
|
|
65
|
+
if (sequencerConfig.publisherPrivateKeys === undefined || !sequencerConfig.publisherPrivateKeys.length) {
|
|
66
|
+
if (sequencerConfig.validatorPrivateKeys?.getValue().length) {
|
|
67
|
+
sequencerConfig.publisherPrivateKeys = [
|
|
68
|
+
new SecretValue(sequencerConfig.validatorPrivateKeys.getValue()[0])
|
|
69
|
+
];
|
|
81
70
|
}
|
|
82
|
-
} else {
|
|
83
|
-
nodeConfig.publisherPrivateKey = sequencerConfig.publisherPrivateKey;
|
|
84
71
|
}
|
|
72
|
+
nodeConfig.publisherPrivateKeys = sequencerConfig.publisherPrivateKeys;
|
|
85
73
|
}
|
|
86
74
|
if (nodeConfig.p2pEnabled) {
|
|
87
75
|
// ensure bootstrapNodes is an array
|
|
@@ -106,24 +94,23 @@ export async function startNode(options, signalHandlers, services, userLog) {
|
|
|
106
94
|
node.getP2P(),
|
|
107
95
|
P2PApiSchema
|
|
108
96
|
];
|
|
97
|
+
adminServices.nodeAdmin = [
|
|
98
|
+
node,
|
|
99
|
+
AztecNodeAdminApiSchema
|
|
100
|
+
];
|
|
109
101
|
// Add node stop function to signal handlers
|
|
110
102
|
signalHandlers.push(node.stop.bind(node));
|
|
111
|
-
// Add a PXE client that connects to this node if requested
|
|
112
|
-
let pxe;
|
|
113
|
-
if (options.pxe) {
|
|
114
|
-
const { addPXE } = await import('./start_pxe.js');
|
|
115
|
-
({ pxe } = await addPXE(options, signalHandlers, services, userLog, {
|
|
116
|
-
node
|
|
117
|
-
}));
|
|
118
|
-
}
|
|
119
103
|
// Add a txs bot if requested
|
|
120
104
|
if (options.bot) {
|
|
121
105
|
const { addBot } = await import('./start_bot.js');
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
106
|
+
const pxeConfig = extractRelevantOptions(options, allPxeConfigMappings, 'pxe');
|
|
107
|
+
const wallet = await TestWallet.create(node, pxeConfig);
|
|
108
|
+
await addBot(options, signalHandlers, services, wallet, node, telemetry, undefined);
|
|
109
|
+
}
|
|
110
|
+
if (nodeConfig.autoUpdate !== 'disabled' && nodeConfig.autoUpdateUrl) {
|
|
111
|
+
await setupUpdateMonitor(nodeConfig.autoUpdate, new URL(nodeConfig.autoUpdateUrl), followsCanonicalRollup, getPublicClient(nodeConfig), nodeConfig.l1Contracts.registryAddress, signalHandlers, async (config)=>node.setConfig((await AztecNodeAdminApiSchema.setConfig.parameters().parseAsync([
|
|
112
|
+
config
|
|
113
|
+
]))[0]));
|
|
127
114
|
}
|
|
128
115
|
return {
|
|
129
116
|
config: nodeConfig
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start_p2p_bootstrap.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_p2p_bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,KAAK,KAAK,EAAgB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"start_p2p_bootstrap.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_p2p_bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,KAAK,KAAK,EAAgB,MAAM,uBAAuB,CAAC;AAajE,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK;;GAiBf"}
|
|
@@ -4,13 +4,18 @@ import { createStore } from '@aztec/kv-store/lmdb-v2';
|
|
|
4
4
|
import { BootstrapNode, bootnodeConfigMappings } from '@aztec/p2p';
|
|
5
5
|
import { emptyChainConfig } from '@aztec/stdlib/config';
|
|
6
6
|
import { P2PBootstrapApiSchema } from '@aztec/stdlib/interfaces/server';
|
|
7
|
-
import {
|
|
7
|
+
import { initTelemetryClient, telemetryClientConfigMappings } from '@aztec/telemetry-client';
|
|
8
8
|
import { extractRelevantOptions } from '../util.js';
|
|
9
9
|
export async function startP2PBootstrap(options, signalHandlers, services, userLog) {
|
|
10
10
|
// Start a P2P bootstrap node.
|
|
11
11
|
const config = extractRelevantOptions(options, bootnodeConfigMappings, 'p2p');
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
const safeConfig = {
|
|
13
|
+
...config,
|
|
14
|
+
peerIdPrivateKey: '<redacted>'
|
|
15
|
+
};
|
|
16
|
+
userLog(`Starting P2P bootstrap node with config: ${jsonStringify(safeConfig)}`);
|
|
17
|
+
const telemetryConfig = extractRelevantOptions(options, telemetryClientConfigMappings, 'tel');
|
|
18
|
+
const telemetryClient = initTelemetryClient(telemetryConfig);
|
|
14
19
|
const store = await createStore('p2p-bootstrap', 1, config, createLogger('p2p:bootstrap:store'));
|
|
15
20
|
const node = new BootstrapNode(store, telemetryClient);
|
|
16
21
|
await node.start(config);
|
|
@@ -19,7 +24,7 @@ export async function startP2PBootstrap(options, signalHandlers, services, userL
|
|
|
19
24
|
node,
|
|
20
25
|
P2PBootstrapApiSchema
|
|
21
26
|
];
|
|
22
|
-
userLog(`P2P bootstrap node started on ${config.
|
|
27
|
+
userLog(`P2P bootstrap node started on ${config.p2pIp}:${config.p2pPort}`);
|
|
23
28
|
return {
|
|
24
29
|
config: emptyChainConfig
|
|
25
30
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start_prover_agent.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_agent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"start_prover_agent.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_agent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAgBnD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK,iBAgEf"}
|
|
@@ -3,8 +3,9 @@ import { Agent, makeUndiciFetch } from '@aztec/foundation/json-rpc/undici';
|
|
|
3
3
|
import { buildServerCircuitProver } from '@aztec/prover-client';
|
|
4
4
|
import { InlineProofStore, ProvingAgent, createProvingJobBrokerClient, proverAgentConfigMappings } from '@aztec/prover-client/broker';
|
|
5
5
|
import { getProverNodeAgentConfigFromEnv } from '@aztec/prover-node';
|
|
6
|
+
import { ProverAgentApiSchema } from '@aztec/stdlib/interfaces/server';
|
|
6
7
|
import { initTelemetryClient, makeTracedFetch, telemetryClientConfigMappings } from '@aztec/telemetry-client';
|
|
7
|
-
import { extractRelevantOptions } from '../util.js';
|
|
8
|
+
import { extractRelevantOptions, preloadCrsDataForServerSideProving } from '../util.js';
|
|
8
9
|
import { getVersions } from '../versioning.js';
|
|
9
10
|
export async function startProverAgent(options, signalHandlers, services, userLog) {
|
|
10
11
|
if (options.node || options.sequencer || options.pxe || options.p2pBootstrap || options.txe) {
|
|
@@ -16,14 +17,26 @@ export async function startProverAgent(options, signalHandlers, services, userLo
|
|
|
16
17
|
...extractRelevantOptions(options, proverAgentConfigMappings, 'proverAgent')
|
|
17
18
|
};
|
|
18
19
|
if (config.realProofs && (!config.bbBinaryPath || !config.acvmBinaryPath)) {
|
|
20
|
+
userLog(`Requested real proving but no path to bb or acvm binaries provided`);
|
|
19
21
|
process.exit(1);
|
|
20
22
|
}
|
|
21
23
|
if (!config.proverBrokerUrl) {
|
|
24
|
+
userLog(`Missing prover broker URL. Pass --proverAgent.proverBrokerUrl <value>`);
|
|
22
25
|
process.exit(1);
|
|
23
26
|
}
|
|
24
|
-
|
|
27
|
+
await preloadCrsDataForServerSideProving(config, userLog);
|
|
28
|
+
const fetch = makeTracedFetch(// retry connections every 3s, up to 30s before giving up
|
|
29
|
+
[
|
|
25
30
|
1,
|
|
26
31
|
2,
|
|
32
|
+
3,
|
|
33
|
+
3,
|
|
34
|
+
3,
|
|
35
|
+
3,
|
|
36
|
+
3,
|
|
37
|
+
3,
|
|
38
|
+
3,
|
|
39
|
+
3,
|
|
27
40
|
3
|
|
28
41
|
], false, makeUndiciFetch(new Agent({
|
|
29
42
|
connections: 10
|
|
@@ -33,6 +46,22 @@ export async function startProverAgent(options, signalHandlers, services, userLo
|
|
|
33
46
|
const prover = await buildServerCircuitProver(config, telemetry);
|
|
34
47
|
const proofStore = new InlineProofStore();
|
|
35
48
|
const agents = times(config.proverAgentCount, ()=>new ProvingAgent(broker, proofStore, prover, config.proverAgentProofTypes, config.proverAgentPollIntervalMs, telemetry));
|
|
49
|
+
// expose all agents as individual services
|
|
50
|
+
for(let i = 0; i < agents.length; i++){
|
|
51
|
+
services[`agent${i}`] = [
|
|
52
|
+
agents[i],
|
|
53
|
+
ProverAgentApiSchema,
|
|
54
|
+
()=>agents[i].getStatus().status !== 'stopped'
|
|
55
|
+
];
|
|
56
|
+
}
|
|
57
|
+
// shortcut in the most common case of having a single running agent
|
|
58
|
+
if (agents.length === 1) {
|
|
59
|
+
services[`agent`] = [
|
|
60
|
+
agents[0],
|
|
61
|
+
ProverAgentApiSchema,
|
|
62
|
+
()=>agents[0].getStatus().status !== 'stopped'
|
|
63
|
+
];
|
|
64
|
+
}
|
|
36
65
|
await Promise.all(agents.map((agent)=>agent.start()));
|
|
37
66
|
signalHandlers.push(async ()=>{
|
|
38
67
|
await Promise.all(agents.map((agent)=>agent.stop()));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start_prover_broker.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_broker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"start_prover_broker.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_broker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAKxE,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,CAAC,CA4CnE"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { getL1Config } from '@aztec/cli/config';
|
|
2
|
+
import { getPublicClient } from '@aztec/ethereum';
|
|
1
3
|
import { ProvingJobBrokerSchema, createAndStartProvingBroker, proverBrokerConfigMappings } from '@aztec/prover-client/broker';
|
|
2
4
|
import { getProverNodeBrokerConfigFromEnv } from '@aztec/prover-node';
|
|
3
5
|
import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
|
|
4
|
-
import {
|
|
5
|
-
import { extractRelevantOptions } from '../util.js';
|
|
6
|
+
import { extractRelevantOptions, setupUpdateMonitor } from '../util.js';
|
|
6
7
|
export async function startProverBroker(options, signalHandlers, services, userLog) {
|
|
7
8
|
if (options.node || options.sequencer || options.pxe || options.p2pBootstrap || options.txe) {
|
|
8
9
|
userLog(`Starting a prover broker with --node, --sequencer, --pxe, --p2p-bootstrap, or --txe is not supported.`);
|
|
@@ -15,10 +16,15 @@ export async function startProverBroker(options, signalHandlers, services, userL
|
|
|
15
16
|
if (!config.l1Contracts.registryAddress || config.l1Contracts.registryAddress.isZero()) {
|
|
16
17
|
throw new Error('L1 registry address is required to start Aztec Node without --deploy-aztec-contracts option');
|
|
17
18
|
}
|
|
18
|
-
const
|
|
19
|
+
const followsCanonicalRollup = typeof config.rollupVersion !== 'number';
|
|
20
|
+
const { addresses, config: rollupConfig } = await getL1Config(config.l1Contracts.registryAddress, config.l1RpcUrls, config.l1ChainId, config.rollupVersion);
|
|
19
21
|
config.l1Contracts = addresses;
|
|
22
|
+
config.rollupVersion = rollupConfig.rollupVersion;
|
|
20
23
|
const client = initTelemetryClient(getTelemetryClientConfig());
|
|
21
24
|
const broker = await createAndStartProvingBroker(config, client);
|
|
25
|
+
if (options.autoUpdate !== 'disabled' && options.autoUpdateUrl) {
|
|
26
|
+
await setupUpdateMonitor(options.autoUpdate, new URL(options.autoUpdateUrl), followsCanonicalRollup, getPublicClient(config), config.l1Contracts.registryAddress, signalHandlers);
|
|
27
|
+
}
|
|
22
28
|
services.proverBroker = [
|
|
23
29
|
broker,
|
|
24
30
|
ProvingJobBrokerSchema
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start_prover_node.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_node.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"start_prover_node.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_node.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EACL,KAAK,gBAAgB,EAItB,MAAM,oBAAoB,CAAC;AAS5B,wBAAsB,eAAe,CACnC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,gBAAgB,CAAA;CAAE,CAAC,CA+FvC"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { getInitialTestAccountsData } from '@aztec/accounts/testing';
|
|
2
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
3
|
+
import { getSponsoredFPCAddress } from '@aztec/cli/cli-utils';
|
|
4
|
+
import { getL1Config } from '@aztec/cli/config';
|
|
5
|
+
import { getPublicClient } from '@aztec/ethereum';
|
|
3
6
|
import { Agent, makeUndiciFetch } from '@aztec/foundation/json-rpc/undici';
|
|
4
7
|
import { ProvingJobConsumerSchema, createProvingJobBrokerClient } from '@aztec/prover-client/broker';
|
|
5
8
|
import { createProverNode, getProverNodeConfigFromEnv, proverNodeConfigMappings } from '@aztec/prover-node';
|
|
6
|
-
import { createAztecNodeClient } from '@aztec/stdlib/interfaces/client';
|
|
7
9
|
import { P2PApiSchema, ProverNodeApiSchema } from '@aztec/stdlib/interfaces/server';
|
|
8
10
|
import { initTelemetryClient, makeTracedFetch, telemetryClientConfigMappings } from '@aztec/telemetry-client';
|
|
9
11
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
10
|
-
import {
|
|
11
|
-
import { getL1Config } from '../get_l1_config.js';
|
|
12
|
-
import { extractRelevantOptions } from '../util.js';
|
|
12
|
+
import { extractRelevantOptions, preloadCrsDataForVerifying, setupUpdateMonitor } from '../util.js';
|
|
13
13
|
import { getVersions } from '../versioning.js';
|
|
14
14
|
import { startProverBroker } from './start_prover_broker.js';
|
|
15
15
|
export async function startProverNode(options, signalHandlers, services, userLog) {
|
|
@@ -21,48 +21,45 @@ export async function startProverNode(options, signalHandlers, services, userLog
|
|
|
21
21
|
...getProverNodeConfigFromEnv(),
|
|
22
22
|
...extractRelevantOptions(options, proverNodeConfigMappings, 'proverNode')
|
|
23
23
|
};
|
|
24
|
-
if (!
|
|
25
|
-
|
|
26
|
-
process.exit(1);
|
|
27
|
-
}
|
|
28
|
-
if (!proverConfig.publisherPrivateKey || proverConfig.publisherPrivateKey === NULL_KEY) {
|
|
29
|
-
if (!options.l1Mnemonic) {
|
|
30
|
-
userLog(`--l1-mnemonic is required to start a Prover Node without --node.publisherPrivateKey`);
|
|
31
|
-
process.exit(1);
|
|
32
|
-
}
|
|
33
|
-
const hdAccount = mnemonicToAccount(options.l1Mnemonic);
|
|
34
|
-
const privKey = hdAccount.getHdKey().privateKey;
|
|
35
|
-
proverConfig.publisherPrivateKey = `0x${Buffer.from(privKey).toString('hex')}`;
|
|
36
|
-
}
|
|
37
|
-
// TODO(palla/prover-node) L1 contract addresses should not silently default to zero,
|
|
38
|
-
// they should be undefined if not set and fail loudly.
|
|
39
|
-
// Load l1 contract addresses from aztec node if not set.
|
|
40
|
-
const isRollupAddressSet = proverConfig.l1Contracts?.rollupAddress && !proverConfig.l1Contracts.rollupAddress.isZero();
|
|
41
|
-
const nodeUrl = proverConfig.nodeUrl ?? proverConfig.proverCoordinationNodeUrl;
|
|
42
|
-
if (nodeUrl && !isRollupAddressSet) {
|
|
43
|
-
userLog(`Loading L1 contract addresses from aztec node at ${nodeUrl}`);
|
|
44
|
-
proverConfig.l1Contracts = await createAztecNodeClient(nodeUrl).getL1ContractAddresses();
|
|
24
|
+
if (!proverConfig.l1Contracts.registryAddress || proverConfig.l1Contracts.registryAddress.isZero()) {
|
|
25
|
+
throw new Error('L1 registry address is required to start a Prover Node');
|
|
45
26
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
27
|
+
const followsCanonicalRollup = typeof proverConfig.rollupVersion !== 'number';
|
|
28
|
+
const { addresses, config } = await getL1Config(proverConfig.l1Contracts.registryAddress, proverConfig.l1RpcUrls, proverConfig.l1ChainId, proverConfig.rollupVersion);
|
|
29
|
+
process.env.ROLLUP_CONTRACT_ADDRESS ??= addresses.rollupAddress.toString();
|
|
30
|
+
proverConfig.l1Contracts = addresses;
|
|
31
|
+
proverConfig = {
|
|
32
|
+
...proverConfig,
|
|
33
|
+
...config
|
|
34
|
+
};
|
|
35
|
+
const testAccounts = proverConfig.testAccounts ? (await getInitialTestAccountsData()).map((a)=>a.address) : [];
|
|
36
|
+
const sponsoredFPCAccounts = proverConfig.sponsoredFPC ? [
|
|
37
|
+
await getSponsoredFPCAddress()
|
|
38
|
+
] : [];
|
|
39
|
+
const initialFundedAccounts = testAccounts.concat(sponsoredFPCAccounts);
|
|
40
|
+
userLog(`Initial funded accounts: ${initialFundedAccounts.map((a)=>a.toString()).join(', ')}`);
|
|
41
|
+
const { genesisArchiveRoot, prefilledPublicData } = await getGenesisValues(initialFundedAccounts);
|
|
42
|
+
userLog(`Genesis archive root: ${genesisArchiveRoot.toString()}`);
|
|
43
|
+
if (!Fr.fromHexString(config.genesisArchiveTreeRoot).equals(genesisArchiveRoot)) {
|
|
44
|
+
throw new Error(`The computed genesis archive tree root ${genesisArchiveRoot} does not match the expected genesis archive tree root ${config.genesisArchiveTreeRoot} for the rollup deployed at ${addresses.rollupAddress}`);
|
|
57
45
|
}
|
|
58
46
|
const telemetry = initTelemetryClient(extractRelevantOptions(options, telemetryClientConfigMappings, 'tel'));
|
|
59
47
|
let broker;
|
|
60
48
|
if (proverConfig.proverBrokerUrl) {
|
|
61
|
-
// at 1TPS we'd enqueue ~1k
|
|
62
|
-
// set a lower
|
|
49
|
+
// at 1TPS we'd enqueue ~1k chonk verifier proofs and ~1k AVM proofs immediately
|
|
50
|
+
// set a lower connection limit such that we don't overload the server
|
|
51
|
+
// Keep retrying up to 30s
|
|
63
52
|
const fetch = makeTracedFetch([
|
|
64
53
|
1,
|
|
65
54
|
2,
|
|
55
|
+
3,
|
|
56
|
+
3,
|
|
57
|
+
3,
|
|
58
|
+
3,
|
|
59
|
+
3,
|
|
60
|
+
3,
|
|
61
|
+
3,
|
|
62
|
+
3,
|
|
66
63
|
3
|
|
67
64
|
], false, makeUndiciFetch(new Agent({
|
|
68
65
|
connections: 100
|
|
@@ -77,8 +74,7 @@ export async function startProverNode(options, signalHandlers, services, userLog
|
|
|
77
74
|
if (proverConfig.proverAgentCount === 0) {
|
|
78
75
|
userLog(`Running prover node without local prover agent. Connect one or more prover agents to this node or pass --proverAgent.proverAgentCount`);
|
|
79
76
|
}
|
|
80
|
-
|
|
81
|
-
const { prefilledPublicData } = await getGenesisValues(initialFundedAccounts.map((a)=>a.address));
|
|
77
|
+
await preloadCrsDataForVerifying(proverConfig, userLog);
|
|
82
78
|
const proverNode = await createProverNode(proverConfig, {
|
|
83
79
|
telemetry,
|
|
84
80
|
broker
|
|
@@ -89,8 +85,7 @@ export async function startProverNode(options, signalHandlers, services, userLog
|
|
|
89
85
|
proverNode,
|
|
90
86
|
ProverNodeApiSchema
|
|
91
87
|
];
|
|
92
|
-
|
|
93
|
-
if (p2p) {
|
|
88
|
+
if (proverNode.getP2P()) {
|
|
94
89
|
services.p2p = [
|
|
95
90
|
proverNode.getP2P(),
|
|
96
91
|
P2PApiSchema
|
|
@@ -103,7 +98,10 @@ export async function startProverNode(options, signalHandlers, services, userLog
|
|
|
103
98
|
];
|
|
104
99
|
}
|
|
105
100
|
signalHandlers.push(proverNode.stop.bind(proverNode));
|
|
106
|
-
proverNode.start();
|
|
101
|
+
await proverNode.start();
|
|
102
|
+
if (proverConfig.autoUpdate !== 'disabled' && proverConfig.autoUpdateUrl) {
|
|
103
|
+
await setupUpdateMonitor(proverConfig.autoUpdate, new URL(proverConfig.autoUpdateUrl), followsCanonicalRollup, getPublicClient(proverConfig), proverConfig.l1Contracts.registryAddress, signalHandlers);
|
|
104
|
+
}
|
|
107
105
|
return {
|
|
108
106
|
config: proverConfig
|
|
109
107
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preload_crs.d.ts","sourceRoot":"","sources":["../../src/cli/preload_crs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAI3D,wBAAsB,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,iBAEnF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release_version.d.ts","sourceRoot":"","sources":["../../src/cli/release_version.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,aAAa,WAezB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { fileURLToPath } from '@aztec/foundation/url';
|
|
2
|
+
import { readFileSync } from 'fs';
|
|
3
|
+
import { dirname, resolve } from 'path';
|
|
4
|
+
export const getCliVersion = ()=>{
|
|
5
|
+
const packageJsonPath = resolve(dirname(fileURLToPath(import.meta.url)), '../../package.json');
|
|
6
|
+
const cliVersion = JSON.parse(readFileSync(packageJsonPath).toString()).version;
|
|
7
|
+
// If the version is 0.1.0, this is a placeholder version and we are in a docker container; query release please for the latest version
|
|
8
|
+
if (cliVersion === '0.1.0') {
|
|
9
|
+
const releasePleasePath = resolve(dirname(fileURLToPath(import.meta.url)), '../../../../.release-please-manifest.json');
|
|
10
|
+
const releaseVersion = JSON.parse(readFileSync(releasePleasePath).toString())['.'];
|
|
11
|
+
return releaseVersion;
|
|
12
|
+
}
|
|
13
|
+
return cliVersion;
|
|
14
|
+
};
|