@layr-labs/ecloud-cli 0.4.0-dev.1 → 0.4.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 (70) hide show
  1. package/VERSION +2 -0
  2. package/bin/dev.js +0 -0
  3. package/dist/commands/auth/generate.js +0 -0
  4. package/dist/commands/auth/login.js +0 -0
  5. package/dist/commands/auth/logout.js +0 -0
  6. package/dist/commands/auth/migrate.js +0 -0
  7. package/dist/commands/auth/whoami.js +1 -0
  8. package/dist/commands/auth/whoami.js.map +1 -1
  9. package/dist/commands/billing/__tests__/status.test.js +89 -22
  10. package/dist/commands/billing/__tests__/status.test.js.map +1 -1
  11. package/dist/commands/billing/__tests__/subscribe.test.js +88 -20
  12. package/dist/commands/billing/__tests__/subscribe.test.js.map +1 -1
  13. package/dist/commands/billing/__tests__/top-up.test.js +139 -201
  14. package/dist/commands/billing/__tests__/top-up.test.js.map +1 -1
  15. package/dist/commands/billing/cancel.js +88 -19
  16. package/dist/commands/billing/cancel.js.map +1 -1
  17. package/dist/commands/billing/status.js +89 -21
  18. package/dist/commands/billing/status.js.map +1 -1
  19. package/dist/commands/billing/subscribe.js +88 -19
  20. package/dist/commands/billing/subscribe.js.map +1 -1
  21. package/dist/commands/billing/top-up.js +102 -91
  22. package/dist/commands/billing/top-up.js.map +1 -1
  23. package/dist/commands/compute/app/configure/tls.js +0 -0
  24. package/dist/commands/compute/app/create.js +1 -0
  25. package/dist/commands/compute/app/create.js.map +1 -1
  26. package/dist/commands/compute/app/deploy.js +38 -24
  27. package/dist/commands/compute/app/deploy.js.map +1 -1
  28. package/dist/commands/compute/app/info.js +2 -1
  29. package/dist/commands/compute/app/info.js.map +1 -1
  30. package/dist/commands/compute/app/list.js +2 -1
  31. package/dist/commands/compute/app/list.js.map +1 -1
  32. package/dist/commands/compute/app/logs.js +5 -8
  33. package/dist/commands/compute/app/logs.js.map +1 -1
  34. package/dist/commands/compute/app/profile/set.js +5 -8
  35. package/dist/commands/compute/app/profile/set.js.map +1 -1
  36. package/dist/commands/compute/app/releases.js +2 -1
  37. package/dist/commands/compute/app/releases.js.map +1 -1
  38. package/dist/commands/compute/app/start.js +5 -8
  39. package/dist/commands/compute/app/start.js.map +1 -1
  40. package/dist/commands/compute/app/stop.js +5 -8
  41. package/dist/commands/compute/app/stop.js.map +1 -1
  42. package/dist/commands/compute/app/terminate.js +5 -8
  43. package/dist/commands/compute/app/terminate.js.map +1 -1
  44. package/dist/commands/compute/app/upgrade.js +36 -14
  45. package/dist/commands/compute/app/upgrade.js.map +1 -1
  46. package/dist/commands/compute/build/info.js +9 -12
  47. package/dist/commands/compute/build/info.js.map +1 -1
  48. package/dist/commands/compute/build/list.js +9 -12
  49. package/dist/commands/compute/build/list.js.map +1 -1
  50. package/dist/commands/compute/build/logs.js +9 -12
  51. package/dist/commands/compute/build/logs.js.map +1 -1
  52. package/dist/commands/compute/build/status.js +9 -12
  53. package/dist/commands/compute/build/status.js.map +1 -1
  54. package/dist/commands/compute/build/submit.js +32 -10
  55. package/dist/commands/compute/build/submit.js.map +1 -1
  56. package/dist/commands/compute/build/verify.js +9 -12
  57. package/dist/commands/compute/build/verify.js.map +1 -1
  58. package/dist/commands/compute/environment/list.js +0 -0
  59. package/dist/commands/compute/environment/set.js +1 -0
  60. package/dist/commands/compute/environment/set.js.map +1 -1
  61. package/dist/commands/compute/environment/show.js +0 -0
  62. package/dist/commands/compute/undelegate.js +5 -8
  63. package/dist/commands/compute/undelegate.js.map +1 -1
  64. package/dist/commands/telemetry/disable.js +0 -0
  65. package/dist/commands/telemetry/enable.js +0 -0
  66. package/dist/commands/telemetry/status.js +0 -0
  67. package/dist/commands/upgrade.js +0 -0
  68. package/dist/commands/version.js +0 -0
  69. package/package.json +15 -14
  70. package/LICENSE +0 -7
@@ -9,9 +9,7 @@ import {
9
9
  createBillingModule,
10
10
  createBuildModule,
11
11
  getEnvironmentConfig as getEnvironmentConfig3,
12
- requirePrivateKey,
13
- getPrivateKeyWithSource,
14
- addHexPrefix as addHexPrefix2
12
+ requirePrivateKey
15
13
  } from "@layr-labs/ecloud-sdk";
16
14
 
17
15
  // src/flags.ts
@@ -62,6 +60,24 @@ import {
62
60
  createViemClients as sdkCreateViemClients,
63
61
  getChainFromID
64
62
  } from "@layr-labs/ecloud-sdk";
63
+ function createViemClients(options) {
64
+ const privateKey = addHexPrefix(options.privateKey);
65
+ const environmentConfig = getEnvironmentConfig(options.environment);
66
+ const rpcUrl = options.rpcUrl || environmentConfig.defaultRPCURL;
67
+ const chain = getChainFromID(environmentConfig.chainID);
68
+ const { publicClient, walletClient } = sdkCreateViemClients({
69
+ privateKey,
70
+ rpcUrl,
71
+ chainId: environmentConfig.chainID
72
+ });
73
+ const account = privateKeyToAccount(privateKey);
74
+ return {
75
+ publicClient,
76
+ walletClient,
77
+ chain,
78
+ address: account.address
79
+ };
80
+ }
65
81
 
66
82
  // src/utils/globalConfig.ts
67
83
  import * as fs from "fs";
@@ -148,6 +164,7 @@ var CONFIG_DIR = path2.join(os2.homedir(), ".eigenx");
148
164
  var APPS_DIR = path2.join(CONFIG_DIR, "apps");
149
165
 
150
166
  // src/utils/prompts.ts
167
+ import { execSync } from "child_process";
151
168
  async function getPrivateKeyInteractive(privateKey) {
152
169
  if (privateKey) {
153
170
  if (!validatePrivateKeyFormat(privateKey)) {
@@ -155,8 +172,8 @@ async function getPrivateKeyInteractive(privateKey) {
155
172
  }
156
173
  return privateKey;
157
174
  }
158
- const { getPrivateKeyWithSource: getPrivateKeyWithSource2 } = await import("@layr-labs/ecloud-sdk");
159
- const result = await getPrivateKeyWithSource2({ privateKey: void 0 });
175
+ const { getPrivateKeyWithSource } = await import("@layr-labs/ecloud-sdk");
176
+ const result = await getPrivateKeyWithSource({ privateKey: void 0 });
160
177
  if (result) {
161
178
  return result.key;
162
179
  }
@@ -175,6 +192,50 @@ async function getPrivateKeyInteractive(privateKey) {
175
192
  });
176
193
  return key.trim();
177
194
  }
195
+ async function getEnvironmentInteractive(environment) {
196
+ if (environment) {
197
+ try {
198
+ getEnvironmentConfig2(environment);
199
+ if (!isEnvironmentAvailable(environment)) {
200
+ throw new Error(`Environment ${environment} is not available in this build`);
201
+ }
202
+ return environment;
203
+ } catch {
204
+ }
205
+ }
206
+ const availableEnvs = getAvailableEnvironments();
207
+ let defaultEnv;
208
+ const configDefaultEnv = getDefaultEnvironment();
209
+ if (configDefaultEnv && availableEnvs.includes(configDefaultEnv)) {
210
+ try {
211
+ getEnvironmentConfig2(configDefaultEnv);
212
+ defaultEnv = configDefaultEnv;
213
+ } catch {
214
+ }
215
+ }
216
+ const choices = [];
217
+ if (availableEnvs.includes("sepolia")) {
218
+ choices.push({ name: "sepolia - Ethereum Sepolia testnet", value: "sepolia" });
219
+ }
220
+ if (availableEnvs.includes("sepolia-dev")) {
221
+ choices.push({ name: "sepolia-dev - Ethereum Sepolia testnet (dev)", value: "sepolia-dev" });
222
+ }
223
+ if (availableEnvs.includes("mainnet-alpha")) {
224
+ choices.push({
225
+ name: "mainnet-alpha - Ethereum mainnet (\u26A0\uFE0F uses real funds)",
226
+ value: "mainnet-alpha"
227
+ });
228
+ }
229
+ if (choices.length === 0) {
230
+ throw new Error("No environments available in this build");
231
+ }
232
+ const env = await select({
233
+ message: "Select environment:",
234
+ choices,
235
+ default: defaultEnv
236
+ });
237
+ return env;
238
+ }
178
239
  var MAX_IMAGE_SIZE = 4 * 1024 * 1024;
179
240
 
180
241
  // src/flags.ts
@@ -201,29 +262,37 @@ var commonFlags = {
201
262
  default: false
202
263
  })
203
264
  };
265
+ async function validateCommonFlags(flags, options) {
266
+ flags["environment"] = await getEnvironmentInteractive(flags["environment"]);
267
+ if (options?.requirePrivateKey !== false) {
268
+ flags["private-key"] = await getPrivateKeyInteractive(flags["private-key"]);
269
+ }
270
+ return flags;
271
+ }
204
272
 
205
273
  // src/client.ts
206
- import { createWalletClient, custom } from "viem";
207
- import { privateKeyToAccount as privateKeyToAccount4 } from "viem/accounts";
208
274
  async function createBillingClient(flags) {
209
- const result = await getPrivateKeyWithSource({
275
+ flags = await validateCommonFlags(flags);
276
+ const environment = flags.environment;
277
+ const environmentConfig = getEnvironmentConfig3(environment);
278
+ const rpcUrl = flags["rpc-url"] || environmentConfig.billingRPCURL || environmentConfig.defaultRPCURL;
279
+ const { key: privateKey, source } = await requirePrivateKey({
210
280
  privateKey: flags["private-key"]
211
281
  });
212
- const privateKey = await getPrivateKeyInteractive(result?.key);
213
- const account = privateKeyToAccount4(addHexPrefix2(privateKey));
214
- const walletClient = createWalletClient({
215
- account,
216
- transport: custom({
217
- async request() {
218
- throw new Error("RPC not available - billing uses local signing only");
219
- }
220
- })
282
+ if (flags.verbose) {
283
+ console.log(`Using private key from: ${source}`);
284
+ }
285
+ const { walletClient, publicClient } = createViemClients({
286
+ privateKey,
287
+ rpcUrl,
288
+ environment
221
289
  });
222
290
  return createBillingModule({
223
- verbose: flags.verbose ?? false,
291
+ verbose: flags.verbose,
224
292
  walletClient,
293
+ publicClient,
294
+ environment,
225
295
  skipTelemetry: true
226
- // CLI already has telemetry, skip SDK telemetry
227
296
  });
228
297
  }
229
298
 
@@ -292,8 +361,7 @@ async function withTelemetry(command, action) {
292
361
  var BillingStatus = class _BillingStatus extends Command {
293
362
  static description = "Show subscription status";
294
363
  static flags = {
295
- "private-key": commonFlags["private-key"],
296
- verbose: commonFlags.verbose,
364
+ ...commonFlags,
297
365
  product: Flags2.string({
298
366
  required: false,
299
367
  description: "Product ID",