lobstercage-cli 0.2.2 → 0.3.1

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.
@@ -5,24 +5,13 @@
5
5
  */
6
6
  import { Command } from 'commander';
7
7
  /**
8
- * Login command handler
8
+ * Login command handler — authenticates via browser OAuth flow
9
9
  */
10
10
  export declare function loginHandler(options: {
11
- email?: string;
12
- browser?: boolean;
13
- password?: boolean;
14
11
  json?: boolean;
15
12
  }): Promise<void>;
16
13
  /**
17
- * Register command handler
18
- */
19
- export declare function registerHandler(options: {
20
- email?: string;
21
- name?: string;
22
- json?: boolean;
23
- }): Promise<void>;
24
- /**
25
- * Logout command handler
14
+ * Logout command handler — clears local authentication state
26
15
  */
27
16
  export declare function logoutHandler(options: {
28
17
  json?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuJpC;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDpI;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkE/G;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B9E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC9E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6BzD"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwHpC;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB9E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC9E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkBzD"}
@@ -42,48 +42,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
42
42
  };
43
43
  Object.defineProperty(exports, "__esModule", { value: true });
44
44
  exports.loginHandler = loginHandler;
45
- exports.registerHandler = registerHandler;
46
45
  exports.logoutHandler = logoutHandler;
47
46
  exports.whoamiHandler = whoamiHandler;
48
47
  exports.createAuthCommands = createAuthCommands;
49
48
  const http = __importStar(require("http"));
50
49
  const url = __importStar(require("url"));
51
50
  const node_crypto_1 = require("node:crypto");
52
- const inquirer_1 = __importDefault(require("inquirer"));
53
51
  const ora_1 = __importDefault(require("ora"));
54
52
  const chalk_1 = __importDefault(require("chalk"));
55
53
  const api = __importStar(require("../lib/api"));
56
54
  const config = __importStar(require("../lib/config"));
57
55
  const output = __importStar(require("../lib/output"));
58
56
  const error_handler_1 = require("../lib/error-handler");
59
- /**
60
- * Validates email format
61
- */
62
- function isValidEmail(email) {
63
- const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
64
- return emailRegex.test(email);
65
- }
66
- /**
67
- * Validates password strength
68
- */
69
- function isValidPassword(password) {
70
- if (password.length < 12) {
71
- return { valid: false, message: 'Password must be at least 12 characters' };
72
- }
73
- if (!/[a-z]/.test(password)) {
74
- return { valid: false, message: 'Password must contain a lowercase letter' };
75
- }
76
- if (!/[A-Z]/.test(password)) {
77
- return { valid: false, message: 'Password must contain an uppercase letter' };
78
- }
79
- if (!/[0-9]/.test(password)) {
80
- return { valid: false, message: 'Password must contain a number' };
81
- }
82
- if (!/[^a-zA-Z0-9]/.test(password)) {
83
- return { valid: false, message: 'Password must contain a special character' };
84
- }
85
- return { valid: true };
86
- }
87
57
  /**
88
58
  * Start a local HTTP server and wait for the browser callback with token
89
59
  */
@@ -181,118 +151,13 @@ async function browserLoginHandler(options) {
181
151
  }
182
152
  }
183
153
  /**
184
- * Login command handler
154
+ * Login command handler — authenticates via browser OAuth flow
185
155
  */
186
156
  async function loginHandler(options) {
187
- // Default to browser login unless --password flag is passed
188
- if (!options.password) {
189
- return browserLoginHandler(options);
190
- }
191
- let email = options.email;
192
- let password;
193
- // Interactive prompts if not provided
194
- if (!email) {
195
- const answers = await inquirer_1.default.prompt([
196
- {
197
- type: 'input',
198
- name: 'email',
199
- message: 'Email:',
200
- validate: (input) => isValidEmail(input) || 'Invalid email address',
201
- },
202
- ]);
203
- email = answers.email;
204
- }
205
- const passwordAnswer = await inquirer_1.default.prompt([
206
- {
207
- type: 'password',
208
- name: 'password',
209
- message: 'Password:',
210
- mask: '*',
211
- },
212
- ]);
213
- password = passwordAnswer.password;
214
- const spinner = (0, ora_1.default)('Logging in...').start();
215
- try {
216
- const result = await api.login(email, password);
217
- spinner.stop();
218
- if (options.json) {
219
- output.json({ success: true, user: result.user });
220
- }
221
- else {
222
- output.success(`Logged in as ${result.user.email}`);
223
- console.log(` Plan: ${result.user.plan}`);
224
- console.log(`\n Tip: run ${chalk_1.default.cyan('lobster ssh-config')} to enable ${chalk_1.default.cyan('ssh agent@my-cage.lobster')}`);
225
- }
226
- }
227
- catch (err) {
228
- (0, error_handler_1.handleError)(err, { spinner, json: options.json, context: 'logging in' });
229
- }
157
+ return browserLoginHandler(options);
230
158
  }
231
159
  /**
232
- * Register command handler
233
- */
234
- async function registerHandler(options) {
235
- let email = options.email;
236
- let name = options.name;
237
- let password;
238
- // Interactive prompts
239
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
240
- const prompts = [];
241
- if (!email) {
242
- prompts.push({
243
- type: 'input',
244
- name: 'email',
245
- message: 'Email:',
246
- validate: (input) => isValidEmail(input) || 'Invalid email address',
247
- });
248
- }
249
- if (!name) {
250
- prompts.push({
251
- type: 'input',
252
- name: 'name',
253
- message: 'Name (optional):',
254
- });
255
- }
256
- prompts.push({
257
- type: 'password',
258
- name: 'password',
259
- message: 'Password:',
260
- mask: '*',
261
- validate: (input) => {
262
- const result = isValidPassword(input);
263
- return result.valid || result.message;
264
- },
265
- });
266
- prompts.push({
267
- type: 'password',
268
- name: 'confirmPassword',
269
- message: 'Confirm password:',
270
- mask: '*',
271
- validate: (input, answers) => {
272
- return input === answers.password || 'Passwords do not match';
273
- },
274
- });
275
- const answers = await inquirer_1.default.prompt(prompts);
276
- email = email || answers.email;
277
- name = name || answers.name;
278
- password = answers.password;
279
- const spinner = (0, ora_1.default)('Creating account...').start();
280
- try {
281
- const result = await api.register(email, password, name || undefined);
282
- spinner.stop();
283
- if (options.json) {
284
- output.json({ success: true, user: result.user });
285
- }
286
- else {
287
- output.success(`Account created! Logged in as ${result.user.email}`);
288
- }
289
- }
290
- catch (err) {
291
- (0, error_handler_1.handleError)(err, { spinner, json: options.json, context: 'creating account' });
292
- }
293
- }
294
- /**
295
- * Logout command handler
160
+ * Logout command handler — clears local authentication state
296
161
  */
297
162
  async function logoutHandler(options) {
298
163
  if (!config.isAuthenticated()) {
@@ -304,26 +169,12 @@ async function logoutHandler(options) {
304
169
  }
305
170
  return;
306
171
  }
307
- const spinner = (0, ora_1.default)('Logging out...').start();
308
- try {
309
- await api.logout();
310
- spinner.stop();
311
- if (options.json) {
312
- output.json({ success: true });
313
- }
314
- else {
315
- output.success('Logged out');
316
- }
172
+ await api.logout();
173
+ if (options.json) {
174
+ output.json({ success: true });
317
175
  }
318
- catch (err) {
319
- spinner.stop();
320
- // Even if API call fails, local auth is cleared
321
- if (options.json) {
322
- output.json({ success: true });
323
- }
324
- else {
325
- output.success('Logged out');
326
- }
176
+ else {
177
+ output.success('Logged out');
327
178
  }
328
179
  }
329
180
  /**
@@ -370,19 +221,9 @@ async function whoamiHandler(options) {
370
221
  function createAuthCommands(program) {
371
222
  program
372
223
  .command('login')
373
- .description('Login to LobsterCage')
374
- .option('-e, --email <email>', 'Email address')
375
- .option('-b, --browser', 'Authenticate via browser (default)')
376
- .option('-p, --password', 'Authenticate with email/password instead of browser')
224
+ .description('Login to LobsterCage via browser')
377
225
  .option('--json', 'Output as JSON')
378
226
  .action(loginHandler);
379
- program
380
- .command('register')
381
- .description('Create a new LobsterCage account')
382
- .option('-e, --email <email>', 'Email address')
383
- .option('-n, --name <name>', 'Your name')
384
- .option('--json', 'Output as JSON')
385
- .action(registerHandler);
386
227
  program
387
228
  .command('logout')
388
229
  .description('Logout from LobsterCage')
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../src/commands/billing.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwIpC;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoB5D"}
1
+ {"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../src/commands/billing.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0IpC;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoB5D"}
@@ -64,30 +64,28 @@ async function billingHandler(options) {
64
64
  output.header('Billing Status');
65
65
  const planColor = billing.plan === 'free' ? chalk_1.default.gray : chalk_1.default.green;
66
66
  console.log(` Plan: ${planColor(billing.plan.toUpperCase())}`);
67
- if (billing.creditsTotal === 0 && billing.creditsRemaining === -1) {
68
- console.log(` Credits: ${chalk_1.default.green('Unlimited')}`);
69
- }
70
- else {
71
- const used = billing.creditsUsed;
72
- const total = billing.creditsTotal;
73
- const remaining = total - used;
74
- const percent = total > 0 ? Math.round((used / total) * 100) : 0;
75
- // Progress bar
76
- const barWidth = 30;
77
- const filled = Math.min(Math.round((percent / 100) * barWidth), barWidth);
78
- const empty = barWidth - filled;
79
- const barColor = percent > 80 ? chalk_1.default.red : percent > 50 ? chalk_1.default.yellow : chalk_1.default.green;
80
- const bar = barColor('█'.repeat(filled)) + chalk_1.default.gray('░'.repeat(empty));
81
- console.log(` Credits: ${used} / ${total} minutes used`);
82
- console.log(` Usage: ${bar} ${percent}%`);
83
- console.log(` Left: ${remaining} minutes remaining`);
67
+ const used = billing.creditsUsed;
68
+ const total = billing.creditsTotal;
69
+ const remaining = total - used;
70
+ const percent = total > 0 ? Math.round((used / total) * 100) : 0;
71
+ // Progress bar
72
+ const barWidth = 30;
73
+ const filled = Math.min(Math.round((percent / 100) * barWidth), barWidth);
74
+ const empty = barWidth - filled;
75
+ const barColor = percent > 80 ? chalk_1.default.red : percent > 50 ? chalk_1.default.yellow : chalk_1.default.green;
76
+ const bar = barColor('█'.repeat(filled)) + chalk_1.default.gray('░'.repeat(empty));
77
+ console.log(` Credits: ${used} / ${total} minutes used`);
78
+ console.log(` Usage: ${bar} ${percent}%`);
79
+ console.log(` Left: ${remaining} minutes remaining`);
80
+ if (billing.bonusCredits && billing.bonusCredits.total > 0) {
81
+ console.log(` Bonus: ${chalk_1.default.cyan(billing.bonusCredits.remaining.toString())} min remaining (${billing.bonusCredits.used} / ${billing.bonusCredits.total} used)`);
84
82
  }
85
83
  if (billing.stripeSubscriptionId) {
86
84
  console.log(` Sub ID: ${chalk_1.default.gray(billing.stripeSubscriptionId)}`);
87
85
  }
88
86
  if (billing.plan === 'free') {
89
87
  console.log();
90
- output.info(`Upgrade to Pro for unlimited compute: ${chalk_1.default.bold('lobster upgrade')}`);
88
+ output.info(`Upgrade to Starter for more compute: ${chalk_1.default.bold('lobster upgrade')}`);
91
89
  }
92
90
  }
93
91
  catch (err) {
@@ -95,7 +93,7 @@ async function billingHandler(options) {
95
93
  }
96
94
  }
97
95
  /**
98
- * Upgrade to Pro plan
96
+ * Upgrade to Starter plan
99
97
  */
100
98
  async function upgradeHandler() {
101
99
  const spinner = (0, ora_1.default)('Creating checkout session...').start();
@@ -108,7 +106,8 @@ async function upgradeHandler() {
108
106
  output.info(`To manage your subscription, run: ${chalk_1.default.bold('lobster billing portal')}`);
109
107
  return;
110
108
  }
111
- const { url } = await api.createCheckoutSession('https://app.lobstercage.ai/settings?billing=success', 'https://app.lobstercage.ai/settings');
109
+ const dashboardUrl = process.env.LOBSTERCAGE_DASHBOARD_URL || 'https://app.lobstercage.ai';
110
+ const { url } = await api.createCheckoutSession(`${dashboardUrl}/settings?billing=success`, `${dashboardUrl}/settings`);
112
111
  spinner.stop();
113
112
  output.success('Checkout session created!');
114
113
  console.log();
@@ -136,7 +135,8 @@ async function portalHandler() {
136
135
  const spinner = (0, ora_1.default)('Opening billing portal...').start();
137
136
  try {
138
137
  (0, utils_1.requireAuth)();
139
- const { url } = await api.createPortalSession('https://app.lobstercage.ai/settings');
138
+ const dashboardUrl = process.env.LOBSTERCAGE_DASHBOARD_URL || 'https://app.lobstercage.ai';
139
+ const { url } = await api.createPortalSession(`${dashboardUrl}/settings`);
140
140
  spinner.stop();
141
141
  output.success('Billing portal ready!');
142
142
  console.log();
@@ -175,7 +175,7 @@ function createBillingCommands(program) {
175
175
  .action(portalHandler);
176
176
  program
177
177
  .command('upgrade')
178
- .description('Upgrade to Pro plan')
178
+ .description('Upgrade to Starter plan')
179
179
  .action(upgradeHandler);
180
180
  }
181
181
  //# sourceMappingURL=billing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"billing.js","sourceRoot":"","sources":["../../src/commands/billing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"billing.js","sourceRoot":"","sources":["../../src/commands/billing.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,8 @@
4
4
  * deploy, list, status, start, stop, destroy, logs
5
5
  */
6
6
  import { Command } from 'commander';
7
- /**
8
- * Deploy (create) command handler
9
- */
10
7
  export declare function deployHandler(name: string, options: {
8
+ size?: string;
11
9
  image?: string;
12
10
  cpu?: string;
13
11
  memory?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"cages.d.ts","sourceRoot":"","sources":["../../src/commands/cages.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmCpC;;GAEG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,IAAI,CAAC,CA0Ff;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB9G;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBpI;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBhH;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBhI;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBnG;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB9F;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoCnI;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5F,OAAO,CAAC,IAAI,CAAC,CA+Bf;AA6JD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6EzD"}
1
+ {"version":3,"file":"cages.d.ts","sourceRoot":"","sources":["../../src/commands/cages.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyCpC,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,IAAI,CAAC,CAsGf;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB9G;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BpI;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBhH;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBhI;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBnG;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB9F;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoCnI;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5F,OAAO,CAAC,IAAI,CAAC,CAYf;AA6JD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8EzD"}
@@ -84,6 +84,8 @@ function isValidCageName(name) {
84
84
  /**
85
85
  * Deploy (create) command handler
86
86
  */
87
+ /** Valid cage size tier names */
88
+ const VALID_SIZES = ['starter', 'standard', 'power', 'extreme'];
87
89
  async function deployHandler(name, options) {
88
90
  if (isLocalMode(options)) {
89
91
  return deployHandlerLocal(name, options);
@@ -100,21 +102,33 @@ async function deployHandler(name, options) {
100
102
  image: options.image || 'ubuntu:22.04',
101
103
  autoStart: !options.noStart,
102
104
  };
103
- // Parse resources
104
- if (options.cpu || options.memory || options.storage) {
105
+ // --size takes priority over --cpu/--memory/--storage
106
+ if (options.size) {
107
+ if (!VALID_SIZES.includes(options.size)) {
108
+ output.error(`Invalid size "${options.size}". Must be one of: ${VALID_SIZES.join(', ')}`);
109
+ process.exit(1);
110
+ }
111
+ request.size = options.size;
112
+ // Warn if legacy resource flags are also provided
113
+ if (options.cpu || options.memory || options.storage) {
114
+ output.warning('--size overrides --cpu, --memory, and --storage options');
115
+ }
116
+ }
117
+ else if (options.cpu || options.memory || options.storage) {
118
+ // Legacy resource flags (backward compat)
105
119
  request.resources = {};
106
120
  if (options.cpu) {
107
121
  const cpu = parseFloat(options.cpu);
108
- if (isNaN(cpu) || ![0.25, 0.5, 1, 2, 4].includes(cpu)) {
109
- output.error('Invalid CPU value. Must be 0.25, 0.5, 1, 2, or 4');
122
+ if (isNaN(cpu) || ![0.25, 0.5, 1, 2, 4, 8].includes(cpu)) {
123
+ output.error('Invalid CPU value. Must be 0.25, 0.5, 1, 2, 4, or 8');
110
124
  process.exit(1);
111
125
  }
112
126
  request.resources.cpu = (cpu * 1024);
113
127
  }
114
128
  if (options.memory) {
115
129
  const memory = parseInt(options.memory, 10);
116
- if (isNaN(memory) || ![512, 1024, 2048, 4096, 8192].includes(memory)) {
117
- output.error('Invalid memory value. Must be 512, 1024, 2048, 4096, or 8192');
130
+ if (isNaN(memory) || ![512, 1024, 2048, 4096, 8192, 16384, 32768].includes(memory)) {
131
+ output.error('Invalid memory value. Must be 512, 1024, 2048, 4096, 8192, 16384, or 32768');
118
132
  process.exit(1);
119
133
  }
120
134
  request.resources.memory = memory;
@@ -199,13 +213,23 @@ async function statusHandler(nameOrId, options) {
199
213
  (0, utils_1.requireAuth)();
200
214
  const cageId = await (0, utils_1.resolveCageId)(nameOrId);
201
215
  const cage = await api.getCage(cageId);
216
+ // Fetch health for running cages (non-blocking — best effort)
217
+ let health = null;
218
+ if (cage.status === 'running' && options.verbose) {
219
+ try {
220
+ health = await api.getCageHealth(cageId);
221
+ }
222
+ catch {
223
+ // silently ignore — health is optional
224
+ }
225
+ }
202
226
  spinner.stop();
203
227
  if (options.json) {
204
- output.json(cage);
228
+ output.json(health ? { ...cage, health } : cage);
205
229
  }
206
230
  else {
207
231
  console.log();
208
- console.log(output.formatCage(cage, options.verbose));
232
+ console.log(output.formatCage(cage, options.verbose, health));
209
233
  console.log();
210
234
  }
211
235
  }
@@ -345,34 +369,16 @@ async function destroyHandler(nameOrId, options) {
345
369
  async function logsHandler(nameOrId, options) {
346
370
  if (isLocalMode(options))
347
371
  return logsHandlerLocal(nameOrId, options);
348
- const spinner = (0, ora_1.default)('Fetching logs...').start();
349
- try {
350
- (0, utils_1.requireAuth)();
351
- const cageId = await (0, utils_1.resolveCageId)(nameOrId);
352
- const { logs } = await api.getCageLogs(cageId, {
353
- tail: options.tail ? parseInt(options.tail, 10) : undefined,
354
- since: options.since,
355
- });
356
- spinner.stop();
357
- if (options.json) {
358
- output.json(logs);
359
- }
360
- else {
361
- if (logs.length === 0) {
362
- output.info('No logs found');
363
- }
364
- else {
365
- console.log(output.formatLogs(logs));
366
- }
367
- }
368
- // TODO: Implement follow mode with SSE
369
- if (options.follow) {
370
- output.info('Follow mode not yet implemented');
371
- }
372
+ // Remote logs endpoint is not available in the API.
373
+ // Use `lobster tail` for cage lifecycle events, or --local for Docker logs.
374
+ if (options.json) {
375
+ output.json({ error: 'NOT_AVAILABLE', message: 'Remote logs are not available. Use `lobster tail` for cage events or `lobster logs --local` for local Docker logs.' });
372
376
  }
373
- catch (err) {
374
- (0, error_handler_1.handleError)(err, { spinner, json: options.json, context: 'fetching logs' });
377
+ else {
378
+ output.error('Remote logs are not available via the API.');
379
+ output.info('Use `lobster tail <cage>` for cage lifecycle events, or `lobster logs --local <cage>` for local Docker logs.');
375
380
  }
381
+ process.exit(1);
376
382
  }
377
383
  // ============================================
378
384
  // Local Docker Mode Handlers
@@ -535,9 +541,10 @@ function createCageCommands(program) {
535
541
  .command('deploy <name>')
536
542
  .description('Create and start a new cage')
537
543
  .option('-i, --image <image>', 'Container image (default: ubuntu:22.04)')
538
- .option('--cpu <vcpu>', 'CPU allocation in vCPU (0.25, 0.5, 1, 2, 4)')
539
- .option('--memory <mb>', 'Memory in MB (512, 1024, 2048, 4096, 8192)')
540
- .option('--storage <gb>', 'Storage in GB (20-200)')
544
+ .option('-s, --size <size>', 'Cage size tier (starter, standard, power, extreme)')
545
+ .option('--cpu <vcpu>', 'CPU allocation in vCPU (deprecated, use --size)')
546
+ .option('--memory <mb>', 'Memory in MB (deprecated, use --size)')
547
+ .option('--storage <gb>', 'Storage in GB (deprecated, use --size)')
541
548
  .option('--egress <policy>', 'Egress policy (allow-all, allowlist, deny-all)')
542
549
  .option('--allow-host <host>', 'Allowed egress host (repeatable)', (val, prev) => [...(prev || []), val], [])
543
550
  .option('--no-start', 'Do not start the cage after creation')