@constellation-network/node-pilot 0.0.8 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +26 -15
  2. package/bin/dev.js +1 -6
  3. package/bin/run.js +1 -1
  4. package/dist/base-command.d.ts +9 -0
  5. package/dist/base-command.js +20 -0
  6. package/dist/checks/check-hardware.js +3 -3
  7. package/dist/checks/check-initial-setup.js +2 -0
  8. package/dist/checks/check-layers.js +7 -7
  9. package/dist/checks/check-network.d.ts +2 -0
  10. package/dist/checks/check-network.js +46 -11
  11. package/dist/checks/check-node-ctl.js +4 -4
  12. package/dist/checks/check-project.d.ts +1 -0
  13. package/dist/checks/check-project.js +15 -4
  14. package/dist/checks/check-wallet.d.ts +3 -0
  15. package/dist/checks/check-wallet.js +37 -0
  16. package/dist/clm.d.ts +1 -0
  17. package/dist/clm.js +3 -0
  18. package/dist/commands/config/get.d.ts +6 -0
  19. package/dist/commands/config/get.js +57 -11
  20. package/dist/commands/config/set.d.ts +0 -1
  21. package/dist/commands/config/set.js +13 -11
  22. package/dist/commands/config.js +17 -22
  23. package/dist/commands/info.js +3 -2
  24. package/dist/commands/logs.d.ts +1 -1
  25. package/dist/commands/logs.js +7 -3
  26. package/dist/commands/restart.d.ts +10 -2
  27. package/dist/commands/restart.js +65 -9
  28. package/dist/commands/shutdown.js +3 -3
  29. package/dist/commands/status.js +4 -0
  30. package/dist/commands/test.js +10 -3
  31. package/dist/config-store.d.ts +47 -31
  32. package/dist/config-store.js +98 -42
  33. package/dist/helpers/config-helper.js +2 -2
  34. package/dist/helpers/env-templates.d.ts +4 -3
  35. package/dist/helpers/env-templates.js +28 -20
  36. package/dist/helpers/key-file-helper.d.ts +2 -0
  37. package/dist/helpers/key-file-helper.js +51 -16
  38. package/dist/helpers/project-helper.d.ts +2 -2
  39. package/dist/helpers/project-helper.js +37 -38
  40. package/dist/helpers/prompt-helper.d.ts +0 -1
  41. package/dist/helpers/prompt-helper.js +15 -15
  42. package/dist/services/archiver-service.d.ts +17 -0
  43. package/dist/services/archiver-service.js +104 -0
  44. package/dist/services/cluster-service.d.ts +10 -6
  45. package/dist/services/cluster-service.js +45 -45
  46. package/dist/services/docker-service.d.ts +9 -0
  47. package/dist/{helpers/docker-helper.js → services/docker-service.js} +11 -9
  48. package/dist/services/fastforward-service.js +3 -3
  49. package/dist/services/get-random-node.js +1 -1
  50. package/dist/{helpers/github-helper.d.ts → services/github-service.d.ts} +1 -1
  51. package/dist/{helpers/github-helper.js → services/github-service.js} +1 -1
  52. package/dist/services/node-service.js +14 -14
  53. package/dist/services/notify-service.d.ts +1 -0
  54. package/dist/services/notify-service.js +1 -0
  55. package/dist/services/systemd-service.d.ts +3 -0
  56. package/dist/services/systemd-service.js +45 -0
  57. package/dist/test.d.ts +1 -0
  58. package/dist/test.js +50 -0
  59. package/dist/types.d.ts +6 -0
  60. package/install-dependencies.sh +0 -2
  61. package/oclif.manifest.json +33 -4
  62. package/package.json +9 -8
  63. package/projects/custom/pilot.json +9 -0
  64. package/projects/hypergraph/Dockerfile +24 -18
  65. package/projects/hypergraph/docker-compose.yml +14 -14
  66. package/projects/hypergraph/networks/integrationnet/gl0.env +4 -0
  67. package/projects/hypergraph/networks/integrationnet/gl1.env +4 -0
  68. package/projects/hypergraph/networks/integrationnet/network.env +8 -0
  69. package/projects/hypergraph/networks/{integrationnet.env → integrationnet/source-nodes.env} +1 -9
  70. package/projects/hypergraph/networks/mainnet/gl0.env +4 -0
  71. package/projects/hypergraph/networks/mainnet/gl1.env +4 -0
  72. package/projects/hypergraph/networks/mainnet/network.env +8 -0
  73. package/projects/hypergraph/networks/{mainnet.env → mainnet/source-nodes.env} +0 -8
  74. package/projects/hypergraph/networks/testnet/gl0.env +5 -0
  75. package/projects/hypergraph/networks/testnet/gl1.env +4 -0
  76. package/projects/hypergraph/networks/testnet/network.env +8 -0
  77. package/projects/hypergraph/networks/{testnet.env → testnet/source-nodes.env} +0 -8
  78. package/projects/hypergraph/scripts/check-version.sh +31 -0
  79. package/projects/hypergraph/scripts/install.sh +30 -25
  80. package/projects/hypergraph/seedlist +268 -0
  81. package/scripts/autoheal.sh +8 -0
  82. package/scripts/restart_logger.sh +3 -0
  83. package/scripts/services/io.constellationnetwork.nodepilot.Updater.plist +16 -0
  84. package/scripts/services/node-pilot-autoheal.service +12 -0
  85. package/scripts/services/node-pilot-restarter.service +11 -0
  86. package/scripts/services/node-pilot-updater.service +13 -0
  87. package/scripts/update_logger.sh +3 -0
  88. package/dist/helpers/docker-helper.d.ts +0 -7
  89. package/projects/hypergraph/layers/gl1.env +0 -3
  90. package/projects/scripts/docker-cleanup.sh +0 -64
@@ -1,5 +1,7 @@
1
1
  import { Args, Command } from '@oclif/core';
2
- import { commonEnvNames, configStore, layerEnvNames } from "../../config-store.js";
2
+ import chalk from "chalk";
3
+ import { clm } from "../../clm.js";
4
+ import { configStore, layerEnvNames, networkEnvNames } from "../../config-store.js";
3
5
  import { configHelper } from "../../helpers/config-helper.js";
4
6
  export default class ConfigSet extends Command {
5
7
  static args = {
@@ -11,31 +13,31 @@ export default class ConfigSet extends Command {
11
13
  '<%= config.bin %> <%= command.id %> CL_EXTERNAL_IP 127.0.0.1',
12
14
  '<%= config.bin %> <%= command.id %> gl0:CL_PUBLIC_HTTP_PORT 9000',
13
15
  ];
14
- logErrorAndExit(message) {
15
- this.log(message);
16
- this.exit(0);
17
- }
18
16
  async run() {
19
17
  configHelper.assertProject('No configuration found. ');
20
18
  const { args } = await this.parse(ConfigSet);
21
19
  const { layersToRun } = configStore.getProjectInfo();
20
+ if (args.name.startsWith('key')) {
21
+ clm.error(`Key properties cannot be set directly. Please run ${chalk.cyan('cpilot config')} and select ${chalk.cyan('Key Info')} to manage the key file.`);
22
+ }
23
+ const { type: network } = configStore.getNetworkInfo();
22
24
  if (args.name.includes(':')) {
23
25
  const [layer, name] = args.name.split(':');
24
26
  if (!layersToRun.includes(layer)) {
25
- this.logErrorAndExit(`Invalid layer: ${layer}. Available layers: ${layersToRun.join(',')}`);
27
+ clm.error(`Invalid layer: ${layer}. Available layers: ${layersToRun.join(',')}`);
26
28
  }
27
29
  const validLayer = layer;
28
30
  if (!Object.hasOwn(layerEnvNames, name)) {
29
- this.logErrorAndExit(`Invalid layer configuration name: ${name}`);
31
+ clm.error(`Invalid layer configuration name: ${name}. Valid names are: ${Object.keys(layerEnvNames).join(', ')}`);
30
32
  }
31
- configStore.setEnvLayerInfo(validLayer, { [name]: args.value });
33
+ configStore.setEnvLayerInfo(network, validLayer, { [name]: args.value });
32
34
  }
33
35
  else {
34
36
  const { name } = args;
35
- if (!Object.hasOwn(commonEnvNames, name)) {
36
- this.logErrorAndExit(`Invalid configuration name: ${name}`);
37
+ if (!Object.hasOwn(networkEnvNames, name)) {
38
+ clm.error(`Invalid configuration name: ${name}. Valid names are: ${Object.keys(networkEnvNames).join(', ')}`);
37
39
  }
38
- configStore.setEnvCommonInfo({ [name]: args.value });
40
+ configStore.setEnvNetworkInfo(network, { [name]: args.value });
39
41
  }
40
42
  }
41
43
  }
@@ -3,11 +3,10 @@ import { Command } from '@oclif/core';
3
3
  import { checkNetwork } from "../checks/check-network.js";
4
4
  import { checkProject } from "../checks/check-project.js";
5
5
  import { clm } from "../clm.js";
6
- import { configStore } from "../config-store.js";
7
6
  import { configHelper } from "../helpers/config-helper.js";
8
- import { dockerHelper } from "../helpers/docker-helper.js";
9
7
  import { keyFileHelper } from "../helpers/key-file-helper.js";
10
8
  import { promptHelper } from "../helpers/prompt-helper.js";
9
+ import { dockerService } from "../services/docker-service.js";
11
10
  export default class Config extends Command {
12
11
  static description = 'Update configuration settings';
13
12
  static examples = [
@@ -15,51 +14,47 @@ export default class Config extends Command {
15
14
  ];
16
15
  async run() {
17
16
  configHelper.assertProject('No configuration found. ');
18
- let { name } = configStore.getProjectInfo();
19
- name = name.charAt(0).toUpperCase() + name.slice(1);
17
+ // let {name} = configStore.getProjectInfo();
18
+ // name = name.charAt(0).toUpperCase() + name.slice(1);
20
19
  const answer = await select({
21
20
  choices: [
22
- { name: 'Auto Restart', value: 'autoRestart' },
23
21
  { name: 'External IP Address', value: 'externalIp' },
24
22
  { name: 'Java Memory', value: 'javaMemory' },
25
23
  { name: 'Key File', value: 'keyFile' },
26
- { name: `${name} - Layers To Run`, value: 'layersToRun' },
27
- { name: `Network (mainnet, testnet or intnet)`, value: 'network' },
24
+ { name: 'Layers To Run', value: 'layersToRun' },
25
+ { name: `Network`, value: 'network' },
28
26
  ],
29
27
  message: 'What would you like to change?:',
30
28
  });
31
29
  // eslint-disable-next-line unicorn/prefer-switch
32
- if (answer === 'autoRestart') {
33
- await promptHelper.configureAutoRestart();
34
- }
35
- else if (answer === 'externalIp') {
30
+ if (answer === 'externalIp') {
36
31
  await checkNetwork.configureIpAddress();
37
32
  }
38
33
  else if (answer === 'javaMemory') {
34
+ await shutdownNodeIfRunning();
39
35
  await promptHelper.configureJavaMemoryArguments();
40
- if (await dockerHelper.isRunning()) {
41
- clm.preStep('The validator node must be restarted before changes can be applied.');
42
- await promptHelper.doYouWishToContinue();
43
- await dockerHelper.dockerDown();
44
- await dockerHelper.dockerUp();
45
- }
46
36
  }
47
37
  else if (answer === 'keyFile') {
38
+ await shutdownNodeIfRunning();
48
39
  await keyFileHelper.showKeyFileInfo();
49
40
  await keyFileHelper.promptForKeyFile();
50
41
  }
51
42
  else if (answer === 'layersToRun') {
52
- if (await dockerHelper.isRunning()) {
53
- clm.preStep('The validator node must be stopped first.');
54
- await promptHelper.doYouWishToContinue();
55
- await dockerHelper.dockerDown();
56
- }
43
+ await shutdownNodeIfRunning();
57
44
  await promptHelper.selectLayers();
58
45
  await promptHelper.configureJavaMemoryArguments();
59
46
  }
60
47
  else if (answer === 'network') {
48
+ await shutdownNodeIfRunning();
61
49
  await promptHelper.selectNetwork();
62
50
  await checkProject.runInstall();
63
51
  }
64
52
  }
65
53
  }
54
+ async function shutdownNodeIfRunning() {
55
+ if (await dockerService.isRunning()) {
56
+ clm.preStep('The validator node must be stopped first.');
57
+ await promptHelper.doYouWishToContinue();
58
+ await dockerService.dockerDown();
59
+ }
60
+ }
@@ -10,10 +10,13 @@ export default class Info extends Command {
10
10
  configHelper.assertProject('No project info found. ');
11
11
  const projectInfo = configStore.getProjectInfo();
12
12
  const networkInfo = configStore.getNetworkInfo();
13
+ const { CL_EXTERNAL_IP: currentIpAddress } = configStore.getEnvInfo();
13
14
  // Project Name
14
15
  configHelper.showEnvInfo('Project Name', projectInfo.name);
15
16
  // DAG Address
16
17
  configHelper.showEnvInfo('DAG Address', projectInfo.dagAddress);
18
+ // External IP Address
19
+ configHelper.showEnvInfo('External IP Address', currentIpAddress);
17
20
  // Node ID
18
21
  configHelper.showEnvInfo('Node ID', projectInfo.nodeId);
19
22
  // Layers to Run
@@ -26,7 +29,5 @@ export default class Info extends Command {
26
29
  configHelper.showEnvInfo('Project Directory', projectInfo.projectDir);
27
30
  // Fast Forward
28
31
  configHelper.showEnvInfo('Fast Forward Enabled', (projectInfo.fastForward === undefined || Boolean(projectInfo.fastForward)).toString());
29
- // Auto Restart
30
- configHelper.showEnvInfo('Auto Restart Enabled', Boolean(projectInfo.autoRestart).toString());
31
32
  }
32
33
  }
@@ -1,7 +1,7 @@
1
1
  import { Command } from '@oclif/core';
2
2
  export default class Logs extends Command {
3
3
  static args: {
4
- layer: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
4
+ layer: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
5
5
  };
6
6
  static description: string;
7
7
  static examples: string[];
@@ -5,7 +5,7 @@ import { configHelper } from "../helpers/config-helper.js";
5
5
  import { shellService } from "../services/shell-service.js";
6
6
  export default class Logs extends Command {
7
7
  static args = {
8
- layer: Args.string({ description: 'network layer to view. e.g. gl0' }),
8
+ layer: Args.string({ description: 'network layer to view. e.g. gl0', required: true }),
9
9
  };
10
10
  static description = 'view validator node runtime logs';
11
11
  static examples = [
@@ -17,14 +17,18 @@ export default class Logs extends Command {
17
17
  };
18
18
  async run() {
19
19
  configHelper.assertProject('No project found. ');
20
- const { flags } = await this.parse(Logs);
20
+ const { args, flags } = await this.parse(Logs);
21
21
  const numOfLines = Number.isNaN(Number(flags.numOfLines)) ? 100 : Number(flags.numOfLines);
22
+ const { layersToRun } = configStore.getProjectInfo();
23
+ if (!layersToRun.includes(args.layer)) {
24
+ this.error(`Invalid layer: ${args.layer}. Available layers: ${layersToRun.join(',')}`);
25
+ }
22
26
  let tailFlag = flags.numOfLines ? `-n ${numOfLines}` : '-n 100';
23
27
  if (flags.follow) {
24
28
  tailFlag = ' -f';
25
29
  }
26
30
  const { projectDir } = configStore.getProjectInfo();
27
- const logPath = path.join(projectDir, 'app-data', 'gl0-logs', 'app.log');
31
+ const logPath = path.join(projectDir, 'app-data', `${args.layer}-logs`, 'app.log');
28
32
  await shellService.runCommand(`tail ${tailFlag} ${logPath}`).catch(() => 1);
29
33
  }
30
34
  }
@@ -1,6 +1,14 @@
1
- import { Command } from '@oclif/core';
2
- export default class Restart extends Command {
1
+ import { BaseCommand } from "../base-command.js";
2
+ export default class Restart extends BaseCommand {
3
+ static args: {
4
+ layer: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
5
+ };
3
6
  static description: string;
4
7
  static examples: string[];
8
+ static flags: {
9
+ autostart: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ update: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ };
5
12
  run(): Promise<void>;
13
+ private restart;
6
14
  }
@@ -1,25 +1,81 @@
1
- import { Command } from '@oclif/core';
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { BaseCommand } from "../base-command.js";
2
3
  import { checkProject } from "../checks/check-project.js";
3
4
  import { clm } from "../clm.js";
4
5
  import { configStore } from "../config-store.js";
5
6
  import { configHelper } from "../helpers/config-helper.js";
6
- import { dockerHelper } from "../helpers/docker-helper.js";
7
+ import { dockerService } from "../services/docker-service.js";
7
8
  import { nodeService } from "../services/node-service.js";
8
- export default class Restart extends Command {
9
+ export default class Restart extends BaseCommand {
10
+ static args = {
11
+ layer: Args.string({ description: 'network layer to restart. e.g. gl0' }),
12
+ };
9
13
  static description = 'A full shutdown of the validator node, then restart';
10
14
  static examples = [
11
15
  '<%= config.bin %> <%= command.id %>',
12
16
  ];
17
+ static flags = {
18
+ autostart: Flags.boolean({ description: 'restart each running project if it has been stopped' }),
19
+ update: Flags.boolean({ description: 'update each project if a new version is available' }),
20
+ };
13
21
  async run() {
22
+ const { args, flags } = await this.parse(Restart);
23
+ this.checkProject(flags);
14
24
  configHelper.assertProject('No project found. ');
15
- const { layersToRun } = configStore.getProjectInfo();
16
- await nodeService.leaveClusterAllLayers();
17
- await nodeService.pollForLayersState(layersToRun, 'Offline');
18
- clm.preStep('Stopping the node...');
19
- await dockerHelper.dockerDown();
25
+ if (!await dockerService.isRunning()) {
26
+ this.error('The validator node is not running.');
27
+ }
28
+ if (args && args.layer) {
29
+ const { layersToRun } = configStore.getProjectInfo();
30
+ const layer = args.layer;
31
+ if (!layersToRun.includes(layer)) {
32
+ this.error(`Invalid layer: ${layer}. Available layers: ${layersToRun.join(',')}`);
33
+ }
34
+ await nodeService.leaveCluster(layer);
35
+ await nodeService.pollForLayersState([layer], 'Offline');
36
+ clm.preStep(`Restarting ${layer.toUpperCase()}...`);
37
+ await dockerService.dockerRestart(layer);
38
+ return;
39
+ }
40
+ if (flags.update) {
41
+ const project = configStore.getActiveProject();
42
+ for (const project of configStore.getRunningProjects()) {
43
+ configStore.setActiveProject(project);
44
+ // eslint-disable-next-line no-await-in-loop
45
+ if (await checkProject.hasVersionChanged()) {
46
+ // eslint-disable-next-line no-await-in-loop
47
+ await this.restart();
48
+ }
49
+ }
50
+ configStore.setActiveProject(project);
51
+ return;
52
+ }
53
+ if (flags.autostart) {
54
+ const project = configStore.getActiveProject();
55
+ for (const project of configStore.getRunningProjects()) {
56
+ configStore.setActiveProject(project);
57
+ // eslint-disable-next-line no-await-in-loop
58
+ await this.restart();
59
+ }
60
+ configStore.setActiveProject(project);
61
+ return;
62
+ }
63
+ await this.restart();
64
+ }
65
+ async restart() {
66
+ // const pAll = layersToRun.map(l => nodeService.getNodeInfo(l));
67
+ // const info = await Promise.all(pAll);
68
+ // const isRunning = info.some(n => n.state !== 'Unavailable');
69
+ if (await dockerService.isRunning()) {
70
+ await nodeService.leaveClusterAllLayers();
71
+ const { layersToRun } = configStore.getProjectInfo();
72
+ await nodeService.pollForLayersState(layersToRun, 'Offline');
73
+ clm.preStep('Stopping the node...');
74
+ await dockerService.dockerDown();
75
+ }
20
76
  clm.preStep('Checking for a new version...');
21
77
  await checkProject.runUpgrade();
22
78
  clm.preStep('Starting the node...');
23
- await dockerHelper.dockerUp();
79
+ await dockerService.dockerUp();
24
80
  }
25
81
  }
@@ -1,8 +1,8 @@
1
1
  import { Command } from '@oclif/core';
2
2
  import { configStore } from "../config-store.js";
3
- import { dockerHelper } from "../helpers/docker-helper.js";
4
- import { nodeService } from "../services/node-service.js";
5
3
  import { configHelper } from "../helpers/config-helper.js";
4
+ import { dockerService } from "../services/docker-service.js";
5
+ import { nodeService } from "../services/node-service.js";
6
6
  export default class Shutdown extends Command {
7
7
  static description = 'A full shutdown of the validator node';
8
8
  static examples = [
@@ -13,6 +13,6 @@ export default class Shutdown extends Command {
13
13
  const { layersToRun } = configStore.getProjectInfo();
14
14
  await nodeService.leaveClusterAllLayers();
15
15
  await nodeService.pollForLayersState(layersToRun, 'Offline');
16
- await dockerHelper.dockerDown();
16
+ await dockerService.dockerDown();
17
17
  }
18
18
  }
@@ -4,6 +4,7 @@ import { checkLayers } from "../checks/check-layers.js";
4
4
  import { checkNetwork } from "../checks/check-network.js";
5
5
  import { checkNodeCtl } from "../checks/check-node-ctl.js";
6
6
  import { checkProject } from "../checks/check-project.js";
7
+ import { checkWallet } from "../checks/check-wallet.js";
7
8
  import { keyFileHelper } from "../helpers/key-file-helper.js";
8
9
  export default class Status extends Command {
9
10
  // eslint-disable-next-line no-warning-comments
@@ -16,10 +17,13 @@ export default class Status extends Command {
16
17
  export async function checkInstallationAndConfigurationStatus() {
17
18
  await checkInitialSetup.firstTimeRun();
18
19
  await checkProject.projectInstallation();
20
+ await checkNetwork.isNetworkConnectable();
19
21
  await checkProject.releaseVersion();
20
22
  await checkNodeCtl.check4Migration();
21
23
  await keyFileHelper.promptIfNoKeyFile();
22
24
  await checkNetwork.checkSeedList();
25
+ await checkNetwork.checkForExistingNodeIdInCluster();
26
+ await checkWallet.checkCollateral();
23
27
  await checkLayers.layersRunning();
24
28
  await checkLayers.layersReadyToJoin();
25
29
  await checkLayers.layersStatus();
@@ -4,15 +4,22 @@ import fs from "node:fs";
4
4
  import path from "node:path";
5
5
  import { fileURLToPath } from "node:url";
6
6
  import { getRandomNode } from "../services/get-random-node.js";
7
- import { checkNodeCtl } from "../checks/check-node-ctl.js";
8
7
  export default class Test extends Command {
9
8
  static description = 'node pilot test command';
10
9
  static hidden = true;
11
10
  async run() {
12
- await checkNodeCtl.importKeyInfo(path.resolve('/Users/ffox/Projects/Constellation/node-pilot/cn-config.yaml'));
11
+ // await checkNodeCtl.importKeyInfo(path.resolve('/Users/ffox/Projects/Constellation/node-pilot/cn-config.yaml'));
12
+ // await this.testRandomNode();
13
+ // const info = await archiverService.getArchiveSnapshotInfo();
14
+ // console.log(info);
15
+ // const ordinal = archiverService.getDownloadedSnapshotRange();
16
+ // console.log(ordinal)
17
+ //
18
+ // await archiverService.syncToLatestSnapshot();
19
+ // await archiverService.checkLogsForMissingSnapshots();
13
20
  }
14
21
  async testRandomNode() {
15
- const filePath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), `../../projects/hypergraph/networks/mainnet.env`);
22
+ const filePath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), `../../projects/hypergraph/networks/mainnet/source-nodes.env`);
16
23
  const conetent = fs.readFileSync(filePath);
17
24
  const parsed = dotenv.parse(conetent);
18
25
  const nodes = ['1', '2', '3'].map(i => {
@@ -1,80 +1,100 @@
1
- import { TessellationLayer } from "./types.js";
1
+ import { ClusterStats, TessellationLayer } from "./types.js";
2
2
  declare class ConfigStore {
3
3
  private pilotStore;
4
4
  private projectStore;
5
5
  constructor();
6
6
  applyNewProjectStore(name: string): Promise<void>;
7
- changeProjectStore(name: string): void;
7
+ getActiveProject(): string;
8
+ getAppDir(): string;
8
9
  getDockerEnvInfo(): object;
9
- getEnvCommonInfo(): EnvCommonInfo;
10
10
  getEnvInfo(): EnvInfo;
11
- getEnvLayerInfo(layer: TessellationLayer): EnvLayerInfo;
11
+ getEnvLayerInfo(network: NetworkType, layer: TessellationLayer): EnvLayerInfo;
12
+ getEnvNetworkInfo(network: NetworkType): EnvNetworkInfo;
12
13
  getLayerPortInfo(layer: TessellationLayer): PortInfo;
13
- getNetworkEnvInfo(network: NetworkType): EnvCommonInfo;
14
14
  getNetworkInfo(): NetworkInfo;
15
15
  getProjectInfo(): ProjectInfo;
16
+ getProjects(): string[];
17
+ getRunningProjects(): string[];
16
18
  getSystemInfo(): SystemInfo;
17
- hasProjectFlag(name: string): boolean;
19
+ hasProjectFlag(name: string): any;
18
20
  hasProjects(): boolean;
21
+ setActiveProject(name: string): void;
22
+ setClusterStats(info: Partial<ClusterStats>): void;
19
23
  setDockerEnvInfo(info: Partial<{
20
24
  DOCKER_IMAGE_VERSION: string;
21
25
  DOCKER_USER_ID: string;
22
26
  }>): void;
23
- setEnvCommonInfo(info: Partial<EnvCommonInfo>): void;
24
- setEnvInfo(info: DeepPartial<EnvInfo>): void;
25
- setEnvLayerInfo(layer: TessellationLayer, info: Partial<EnvLayerInfo>): void;
26
- setNetworkEnvInfo(info: NetworkEnvInfo): void;
27
+ setEnvInfo(info: Partial<EnvInfo>): void;
28
+ setEnvLayerInfo(network: NetworkType, layer: TessellationLayer, info: Partial<EnvLayerInfo>): void;
29
+ setEnvNetworkInfo(network: NetworkType, info: Partial<EnvNetworkInfo>): void;
27
30
  setNetworkInfo(info: Partial<NetworkInfo>): void;
28
31
  setProjectFlag(name: string, value: boolean): any;
29
32
  setProjectInfo(info: Partial<ProjectInfo>): void;
33
+ setProjectStatusToRunning(isRunning: boolean): void;
30
34
  setSystemInfo(info: Partial<SystemInfo>): void;
35
+ private getPilotInfo;
36
+ private setPilotInfo;
31
37
  }
32
38
  export declare const configStore: ConfigStore;
33
- type DeepPartial<T> = {
34
- [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
39
+ export type EnvInfo = EnvKeyInfo & {
40
+ CL_ARCHIVE_NODE: boolean;
41
+ CL_EXTERNAL_IP: string;
35
42
  };
36
- export type EnvInfo = {
37
- common: EnvCommonInfo;
38
- layers: Record<TessellationLayer, EnvLayerInfo>;
43
+ export declare const envNames: {
44
+ CL_EXTERNAL_IP: number;
45
+ CL_KEYALIAS: number;
46
+ CL_KEYSTORE: number;
47
+ CL_PASSWORD: number;
39
48
  };
40
- export type EnvCommonInfo = {
49
+ export type EnvCombinedInfo = EnvInfo & EnvLayerInfo & EnvNetworkInfo;
50
+ export type EnvNetworkInfo = EnvPeerInfo & {
41
51
  CL_APP_ENV: string;
42
- CL_EXTERNAL_IP: string;
52
+ CL_COLLATERAL: string;
53
+ CL_L0_TOKEN_IDENTIFIER: string;
54
+ };
55
+ export type EnvKeyInfo = {
56
+ CL_KEYALIAS: string;
57
+ CL_KEYSTORE: string;
58
+ CL_PASSWORD: string;
59
+ };
60
+ export type EnvPeerInfo = {
43
61
  CL_GLOBAL_L0_PEER_HOST: string;
44
62
  CL_GLOBAL_L0_PEER_HTTP_PORT: string;
45
63
  CL_GLOBAL_L0_PEER_ID: string;
46
- CL_KEYALIAS: string;
47
- CL_KEYSTORE: string;
48
64
  CL_L0_PEER_HTTP_HOST: string;
49
65
  CL_L0_PEER_HTTP_PORT: string;
50
66
  CL_L0_PEER_ID: string;
51
67
  CL_L0_PEER_P2P_PORT: string;
52
- CL_L0_TOKEN_IDENTIFIER: string;
53
- CL_PASSWORD: string;
54
68
  };
55
- export declare const commonEnvNames: {
69
+ export declare const networkEnvNames: {
56
70
  CL_APP_ENV: number;
57
- CL_EXTERNAL_IP: number;
58
71
  CL_GLOBAL_L0_PEER_HOST: number;
59
72
  CL_GLOBAL_L0_PEER_HTTP_PORT: number;
60
73
  CL_GLOBAL_L0_PEER_ID: number;
61
- CL_KEYALIAS: number;
62
- CL_KEYSTORE: number;
63
74
  CL_L0_PEER_HTTP_HOST: number;
64
75
  CL_L0_PEER_HTTP_PORT: number;
65
76
  CL_L0_PEER_ID: number;
77
+ CL_L0_PEER_P2P_PORT: number;
66
78
  CL_L0_TOKEN_IDENTIFIER: number;
67
- CL_PASSWORD: number;
68
79
  };
69
- export type EnvLayerInfo = {
80
+ export type EnvLayerInfo = EnvPeerInfo & {
70
81
  CL_CLI_HTTP_PORT: string;
71
82
  CL_DOCKER_JAVA_OPTS: string;
83
+ CL_LB: string;
72
84
  CL_P2P_HTTP_PORT: string;
73
85
  CL_PUBLIC_HTTP_PORT: string;
74
86
  };
75
87
  export declare const layerEnvNames: {
76
88
  CL_CLI_HTTP_PORT: number;
77
89
  CL_DOCKER_JAVA_OPTS: number;
90
+ CL_GLOBAL_L0_PEER_HOST: number;
91
+ CL_GLOBAL_L0_PEER_HTTP_PORT: number;
92
+ CL_GLOBAL_L0_PEER_ID: number;
93
+ CL_L0_PEER_HTTP_HOST: number;
94
+ CL_L0_PEER_HTTP_PORT: number;
95
+ CL_L0_PEER_ID: number;
96
+ CL_L0_PEER_P2P_PORT: number;
97
+ CL_LB: number;
78
98
  CL_P2P_HTTP_PORT: number;
79
99
  CL_PUBLIC_HTTP_PORT: number;
80
100
  };
@@ -87,9 +107,6 @@ export type SystemInfo = {
87
107
  };
88
108
  export type NetworkType = 'integrationnet' | 'mainnet' | 'testnet';
89
109
  export type ProjectInfo = {
90
- autoRestart: boolean;
91
- autoStart: boolean;
92
- autoUpdate: boolean;
93
110
  dagAddress: string;
94
111
  fastForward: boolean;
95
112
  homeDir: string;
@@ -103,7 +120,6 @@ export type NetworkInfo = {
103
120
  type: NetworkType;
104
121
  version: string;
105
122
  };
106
- export type NetworkEnvInfo = Record<NetworkType, EnvCommonInfo>;
107
123
  export type PortInfo = {
108
124
  CLI: string;
109
125
  P2P: string;