@layr-labs/ecloud-cli 0.2.0-dev.2 → 0.2.0-dev.3

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 (58) hide show
  1. package/VERSION +2 -2
  2. package/dist/commands/auth/generate.js +2 -2
  3. package/dist/commands/auth/generate.js.map +1 -1
  4. package/dist/commands/auth/login.js.map +1 -1
  5. package/dist/commands/auth/logout.js.map +1 -1
  6. package/dist/commands/auth/migrate.js.map +1 -1
  7. package/dist/commands/auth/whoami.js +5 -3
  8. package/dist/commands/auth/whoami.js.map +1 -1
  9. package/dist/commands/billing/cancel.js +6 -3
  10. package/dist/commands/billing/cancel.js.map +1 -1
  11. package/dist/commands/billing/status.js +6 -3
  12. package/dist/commands/billing/status.js.map +1 -1
  13. package/dist/commands/billing/subscribe.js +12 -7
  14. package/dist/commands/billing/subscribe.js.map +1 -1
  15. package/dist/commands/compute/app/create.js.map +1 -1
  16. package/dist/commands/compute/app/deploy.js +614 -86
  17. package/dist/commands/compute/app/deploy.js.map +1 -1
  18. package/dist/commands/compute/app/info.js +59 -10
  19. package/dist/commands/compute/app/info.js.map +1 -1
  20. package/dist/commands/compute/app/list.js +10 -9
  21. package/dist/commands/compute/app/list.js.map +1 -1
  22. package/dist/commands/compute/app/logs.js +61 -11
  23. package/dist/commands/compute/app/logs.js.map +1 -1
  24. package/dist/commands/compute/app/profile/set.js +145 -20
  25. package/dist/commands/compute/app/profile/set.js.map +1 -1
  26. package/dist/commands/compute/app/releases.js +1111 -0
  27. package/dist/commands/compute/app/releases.js.map +1 -0
  28. package/dist/commands/compute/app/start.js +61 -11
  29. package/dist/commands/compute/app/start.js.map +1 -1
  30. package/dist/commands/compute/app/stop.js +61 -11
  31. package/dist/commands/compute/app/stop.js.map +1 -1
  32. package/dist/commands/compute/app/terminate.js +61 -11
  33. package/dist/commands/compute/app/terminate.js.map +1 -1
  34. package/dist/commands/compute/app/upgrade.js +615 -52
  35. package/dist/commands/compute/app/upgrade.js.map +1 -1
  36. package/dist/commands/compute/build/info.js +500 -0
  37. package/dist/commands/compute/build/info.js.map +1 -0
  38. package/dist/commands/compute/build/list.js +494 -0
  39. package/dist/commands/compute/build/list.js.map +1 -0
  40. package/dist/commands/compute/build/logs.js +459 -0
  41. package/dist/commands/compute/build/logs.js.map +1 -0
  42. package/dist/commands/compute/build/status.js +481 -0
  43. package/dist/commands/compute/build/status.js.map +1 -0
  44. package/dist/commands/compute/build/submit.js +618 -0
  45. package/dist/commands/compute/build/submit.js.map +1 -0
  46. package/dist/commands/compute/build/verify.js +439 -0
  47. package/dist/commands/compute/build/verify.js.map +1 -0
  48. package/dist/commands/compute/environment/list.js.map +1 -1
  49. package/dist/commands/compute/environment/set.js.map +1 -1
  50. package/dist/commands/compute/environment/show.js.map +1 -1
  51. package/dist/commands/compute/undelegate.js +11 -9
  52. package/dist/commands/compute/undelegate.js.map +1 -1
  53. package/dist/commands/telemetry/disable.js.map +1 -1
  54. package/dist/commands/telemetry/enable.js.map +1 -1
  55. package/dist/commands/telemetry/status.js.map +1 -1
  56. package/dist/commands/upgrade.js.map +1 -1
  57. package/dist/commands/version.js.map +1 -1
  58. package/package.json +7 -2
@@ -8,6 +8,7 @@ import { getEnvironmentConfig as getEnvironmentConfig3 } from "@layr-labs/ecloud
8
8
  import {
9
9
  createComputeModule,
10
10
  createBillingModule,
11
+ createBuildModule,
11
12
  getEnvironmentConfig as getEnvironmentConfig2,
12
13
  requirePrivateKey,
13
14
  getPrivateKeyWithSource
@@ -15,6 +16,7 @@ import {
15
16
 
16
17
  // src/flags.ts
17
18
  import { Flags } from "@oclif/core";
19
+ import { getBuildType as getBuildType2 } from "@layr-labs/ecloud-sdk";
18
20
 
19
21
  // src/utils/prompts.ts
20
22
  import { input, select, password, confirm as inquirerConfirm } from "@inquirer/prompts";
@@ -96,6 +98,27 @@ function saveGlobalConfig(config) {
96
98
  const content = dumpYaml(config, { lineWidth: -1 });
97
99
  fs.writeFileSync(configPath, content, { mode: 420 });
98
100
  }
101
+ function normalizeDirectoryPath(directoryPath) {
102
+ const resolved = path.resolve(directoryPath);
103
+ try {
104
+ return fs.realpathSync(resolved);
105
+ } catch {
106
+ return resolved;
107
+ }
108
+ }
109
+ function getLinkedAppForDirectory(environment, directoryPath) {
110
+ if (!directoryPath) {
111
+ return null;
112
+ }
113
+ const config = loadGlobalConfig();
114
+ const links = config.directory_links?.[environment];
115
+ if (!links) {
116
+ return null;
117
+ }
118
+ const normalizedPath = normalizeDirectoryPath(directoryPath);
119
+ const appId = links[normalizedPath];
120
+ return appId || null;
121
+ }
99
122
  function getDefaultEnvironment() {
100
123
  const config = loadGlobalConfig();
101
124
  return config.default_environment;
@@ -192,7 +215,7 @@ function listApps(environment) {
192
215
 
193
216
  // src/utils/version.ts
194
217
  function getCliVersion() {
195
- return true ? "0.2.0-dev.2" : "0.0.0";
218
+ return true ? "0.2.0-dev.3" : "0.0.0";
196
219
  }
197
220
  function getClientId() {
198
221
  return `ecloud-cli/v${getCliVersion()}`;
@@ -221,6 +244,9 @@ function addHexPrefix(value) {
221
244
  }
222
245
  return `0x${value}`;
223
246
  }
247
+ function getCurrentProjectPath() {
248
+ return process.env.INIT_CWD || process.cwd();
249
+ }
224
250
  var ContractAppStatusStarted = 1;
225
251
  var ContractAppStatusStopped = 2;
226
252
  var ContractAppStatusTerminated = 3;
@@ -359,6 +385,7 @@ Select an app to ${action}:
359
385
  switch (action) {
360
386
  case "view":
361
387
  case "view info for":
388
+ case "view releases for":
362
389
  case "set profile for":
363
390
  return true;
364
391
  case "start":
@@ -387,7 +414,19 @@ Select an app to ${action}:
387
414
  index: i
388
415
  });
389
416
  }
417
+ const linkedAppId = getLinkedAppForDirectory(environment, getCurrentProjectPath());
418
+ const normalizedLinkedAppId = linkedAppId ? linkedAppId.toLowerCase() : "";
390
419
  appItems.sort((a, b) => {
420
+ if (normalizedLinkedAppId) {
421
+ const aLinked = String(a.addr).toLowerCase() === normalizedLinkedAppId;
422
+ const bLinked = String(b.addr).toLowerCase() === normalizedLinkedAppId;
423
+ if (aLinked && !bLinked) {
424
+ return -1;
425
+ }
426
+ if (bLinked && !aLinked) {
427
+ return 1;
428
+ }
429
+ }
391
430
  const aPriority = getStatusPriority(a.status, false);
392
431
  const bPriority = getStatusPriority(b.status, false);
393
432
  if (aPriority !== bPriority) {
@@ -453,7 +492,18 @@ async function getAppIDInteractiveFromRegistry(environment, action) {
453
492
  }
454
493
  throw new Error(`Invalid app ID address: ${appIDInput}`);
455
494
  }
456
- const choices = Object.entries(allApps).map(([name, appID]) => {
495
+ const entries = Object.entries(allApps);
496
+ const linkedAppId = getLinkedAppForDirectory(environment, getCurrentProjectPath());
497
+ if (linkedAppId) {
498
+ const linkedIndex = entries.findIndex(
499
+ ([, appId]) => String(appId).toLowerCase() === linkedAppId.toLowerCase()
500
+ );
501
+ if (linkedIndex > 0) {
502
+ const [linkedEntry] = entries.splice(linkedIndex, 1);
503
+ entries.unshift(linkedEntry);
504
+ }
505
+ }
506
+ const choices = entries.map(([name, appID]) => {
457
507
  const displayName = `${name} (${appID})`;
458
508
  return { name: displayName, value: appID };
459
509
  });
@@ -572,7 +622,8 @@ var commonFlags = {
572
622
  environment: Flags.string({
573
623
  required: false,
574
624
  description: "Deployment environment to use",
575
- env: "ECLOUD_ENV"
625
+ env: "ECLOUD_ENV",
626
+ default: async () => getDefaultEnvironment() || (getBuildType2() === "dev" ? "sepolia-dev" : "sepolia")
576
627
  }),
577
628
  "private-key": Flags.string({
578
629
  required: false,
@@ -590,12 +641,11 @@ var commonFlags = {
590
641
  default: false
591
642
  })
592
643
  };
593
- async function validateCommonFlags(flags) {
594
- if (!flags["environment"]) {
595
- flags["environment"] = getDefaultEnvironment();
596
- }
644
+ async function validateCommonFlags(flags, options) {
597
645
  flags["environment"] = await getEnvironmentInteractive(flags["environment"]);
598
- flags["private-key"] = await getPrivateKeyInteractive(flags["private-key"]);
646
+ if (options?.requirePrivateKey !== false) {
647
+ flags["private-key"] = await getPrivateKeyInteractive(flags["private-key"]);
648
+ }
599
649
  return flags;
600
650
  }
601
651
 
@@ -630,7 +680,7 @@ import {
630
680
  addMetric,
631
681
  addMetricWithDimensions,
632
682
  emitMetrics,
633
- getBuildType as getBuildType2
683
+ getBuildType as getBuildType3
634
684
  } from "@layr-labs/ecloud-sdk";
635
685
  function createCLITelemetryClient() {
636
686
  const userUUID = getOrCreateUserUUID();
@@ -648,7 +698,7 @@ async function withTelemetry(command, action) {
648
698
  metrics.properties["command"] = command.id || command.constructor.name;
649
699
  const environment = getDefaultEnvironment() || "sepolia";
650
700
  metrics.properties["environment"] = environment;
651
- const buildType = getBuildType2() || "prod";
701
+ const buildType = getBuildType3() || "prod";
652
702
  metrics.properties["build_type"] = buildType;
653
703
  const cliVersion = command.config.version;
654
704
  if (cliVersion) {
@@ -701,7 +751,7 @@ var AppLogs = class _AppLogs extends Command {
701
751
  return withTelemetry(this, async () => {
702
752
  const { args, flags } = await this.parse(_AppLogs);
703
753
  const compute = await createComputeClient(flags);
704
- const environment = flags.environment || "sepolia";
754
+ const environment = flags.environment;
705
755
  const environmentConfig = getEnvironmentConfig3(environment);
706
756
  const rpcUrl = flags["rpc-url"] || environmentConfig.defaultRPCURL;
707
757
  const appID = await getOrPromptAppID({