@saidulbadhon/jssm-cli 1.7.0 → 1.8.0

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 (2) hide show
  1. package/dist/index.js +28 -110
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -3989,7 +3989,11 @@ import { join as join2 } from "path";
3989
3989
  import { homedir as homedir2 } from "os";
3990
3990
 
3991
3991
  // src/shared/constants.ts
3992
- var DEFAULT_HOST = "https://jssm-api.jutsu.ai/api";
3992
+ var PROD_HOST = "https://jssm-api.jutsu.ai/api";
3993
+ var DEV_HOST = "http://localhost:3000/api";
3994
+ function getHost() {
3995
+ return process.env.NODE_ENV === "development" ? DEV_HOST : PROD_HOST;
3996
+ }
3993
3997
  var DEFAULT_NAMESPACE = "jssm";
3994
3998
  var CONFIG_DIR = ".jssm";
3995
3999
  var CONFIG_FILE = "config";
@@ -4109,7 +4113,7 @@ async function resolveConfig() {
4109
4113
  }
4110
4114
  const resolved = {
4111
4115
  project: projectConfig.project,
4112
- host: projectConfig.host || globalConfig.host || DEFAULT_HOST,
4116
+ host: getHost(),
4113
4117
  namespace: projectConfig.namespace || globalConfig.namespace || DEFAULT_NAMESPACE,
4114
4118
  authToken
4115
4119
  };
@@ -4120,11 +4124,6 @@ function validateResolvedConfig(config) {
4120
4124
  if (!config.project) {
4121
4125
  errors.push("Project name is required");
4122
4126
  }
4123
- if (!config.host) {
4124
- errors.push(
4125
- "Host URL is required (set globally with: jssm config set host <url>)"
4126
- );
4127
- }
4128
4127
  if (!config.authToken) {
4129
4128
  errors.push("Not logged in. Run: jssm login");
4130
4129
  }
@@ -4365,13 +4364,7 @@ async function initCommand(args2) {
4365
4364
  }
4366
4365
  console.log(`\u2705 Logged in as ${authData.user.email}
4367
4366
  `);
4368
- const globalConfig = await loadGlobalConfig();
4369
- const host = flags.host || flags.h || globalConfig.host;
4370
- if (!host) {
4371
- console.error("\u274C Host URL is required");
4372
- console.error("\u{1F4A1} Set it globally: jssm config set host <url>");
4373
- process.exit(1);
4374
- }
4367
+ const host = getHost();
4375
4368
  const authToken = authData.token;
4376
4369
  console.log("\u{1F50D} Analyzing repository...");
4377
4370
  const cwd = process.cwd();
@@ -4527,12 +4520,10 @@ Upload to ${projectName}?`,
4527
4520
  }
4528
4521
  }
4529
4522
  }
4523
+ const globalConfig = await loadGlobalConfig();
4530
4524
  const projectConfig = {
4531
4525
  project: projectName
4532
4526
  };
4533
- if (flags.host && flags.host !== globalConfig.host) {
4534
- projectConfig.host = flags.host;
4535
- }
4536
4527
  if (flags.namespace && flags.namespace !== globalConfig.namespace) {
4537
4528
  projectConfig.namespace = flags.namespace;
4538
4529
  }
@@ -5233,12 +5224,10 @@ async function createProjectCommand(args2) {
5233
5224
  }
5234
5225
  }
5235
5226
  const name = flags.n || flags.name || args2[0];
5236
- const host = flags.host;
5237
5227
  if (!name) {
5238
- console.error("Usage: jssm project create <name> [--host <api_url>]");
5228
+ console.error("Usage: jssm project create <name>");
5239
5229
  console.error("\nOptions:");
5240
5230
  console.error(" -n, --name Project name");
5241
- console.error(" --host API host URL (optional if config exists)");
5242
5231
  process.exit(1);
5243
5232
  }
5244
5233
  const authToken = await getAuthToken();
@@ -5247,17 +5236,10 @@ async function createProjectCommand(args2) {
5247
5236
  console.error("\u{1F4A1} Run: jssm login");
5248
5237
  process.exit(1);
5249
5238
  }
5250
- const globalConfig = await loadGlobalConfig();
5251
- const projectConfig = await loadProjectConfig();
5252
- const finalHost = host || projectConfig?.host || globalConfig.host;
5253
- if (!finalHost) {
5254
- console.error("\u274C Host is required");
5255
- console.error("\u{1F4A1} Set globally: jssm config set host <url>");
5256
- process.exit(1);
5257
- }
5239
+ const host = getHost();
5258
5240
  try {
5259
5241
  console.log(`\u{1F4E6} Creating project "${name}"...`);
5260
- const project = await createProject(finalHost, authToken, name);
5242
+ const project = await createProject(host, authToken, name);
5261
5243
  console.log(`\u2705 Project "${name}" created successfully`);
5262
5244
  console.log(` ID: ${project._id}`);
5263
5245
  console.log(` Created: ${new Date(project.createdAt).toLocaleString()}`);
@@ -5281,14 +5263,7 @@ async function listProjectsCommand() {
5281
5263
  console.error("\u{1F4A1} Run: jssm login");
5282
5264
  process.exit(1);
5283
5265
  }
5284
- const globalConfig = await loadGlobalConfig();
5285
- const projectConfig = await loadProjectConfig();
5286
- const host = projectConfig?.host || globalConfig.host;
5287
- if (!host) {
5288
- console.error("\u274C Host is required");
5289
- console.error("\u{1F4A1} Set globally: jssm config set host <url>");
5290
- process.exit(1);
5291
- }
5266
+ const host = getHost();
5292
5267
  try {
5293
5268
  console.log("\u{1F4E6} Fetching projects...\n");
5294
5269
  const projects = await getProjects(host, authToken);
@@ -5362,9 +5337,6 @@ async function statusCommand() {
5362
5337
  if (Object.keys(globalConfig).length === 0) {
5363
5338
  console.log(" (no global config set)");
5364
5339
  } else {
5365
- if (globalConfig.host) {
5366
- console.log(` Host: ${globalConfig.host}`);
5367
- }
5368
5340
  if (globalConfig.namespace) {
5369
5341
  console.log(` Namespace: ${globalConfig.namespace}`);
5370
5342
  }
@@ -5384,9 +5356,8 @@ async function statusCommand() {
5384
5356
  console.log("\u{1F4C2} Project Configuration");
5385
5357
  console.log(` Location: ${projectConfigPath}`);
5386
5358
  console.log(` Project: ${projectConfig.project}`);
5387
- console.log(` Environment: ${projectConfig.environment}`);
5388
- if (projectConfig.host) {
5389
- console.log(` Host: ${projectConfig.host} (override)`);
5359
+ if (projectConfig.environment) {
5360
+ console.log(` Environment: ${projectConfig.environment}`);
5390
5361
  }
5391
5362
  if (projectConfig.namespace) {
5392
5363
  console.log(` Namespace: ${projectConfig.namespace} (override)`);
@@ -5396,16 +5367,11 @@ async function statusCommand() {
5396
5367
  if (resolved) {
5397
5368
  console.log("\u{1F517} Resolved Configuration (merged)");
5398
5369
  console.log(` Project: ${resolved.project}`);
5399
- console.log(` Environment: ${resolved.environment}`);
5400
- console.log(` Host: ${resolved.host || "(not set)"}`);
5370
+ console.log(` Host: ${resolved.host} (hardcoded based on NODE_ENV)`);
5401
5371
  console.log(` Namespace: ${resolved.namespace}`);
5402
5372
  console.log(
5403
5373
  ` Auth: ${resolved.authToken ? "\u2705 Authenticated" : "\u274C Not authenticated"}`
5404
5374
  );
5405
- if (!resolved.host) {
5406
- console.log("\n\u26A0\uFE0F Host is not configured");
5407
- console.log(" Set globally: jssm config set host <url>");
5408
- }
5409
5375
  if (!resolved.authToken) {
5410
5376
  console.log("\n\u26A0\uFE0F Not logged in");
5411
5377
  console.log(" Run: jssm login");
@@ -5416,7 +5382,7 @@ async function statusCommand() {
5416
5382
  }
5417
5383
 
5418
5384
  // src/commands/config.ts
5419
- var VALID_KEYS = ["host", "namespace"];
5385
+ var VALID_KEYS = ["namespace"];
5420
5386
  async function configCommand(args2) {
5421
5387
  const subcommand = args2[0];
5422
5388
  switch (subcommand) {
@@ -5540,12 +5506,11 @@ Commands:
5540
5506
  path Show configuration file path
5541
5507
 
5542
5508
  Valid Keys:
5543
- host Default API server URL
5544
5509
  namespace Default SSM namespace (default: jssm)
5545
5510
 
5546
5511
  Examples:
5547
- jssm config set host http://localhost:3000
5548
- jssm config get host
5512
+ jssm config set namespace my-namespace
5513
+ jssm config get namespace
5549
5514
  jssm config list
5550
5515
 
5551
5516
  Note:
@@ -5564,13 +5529,7 @@ async function loginCommand() {
5564
5529
  console.log(`\u{1F4A1} Use 'jssm logout' to logout`);
5565
5530
  return;
5566
5531
  }
5567
- let globalConfig = await loadGlobalConfig();
5568
- let host = globalConfig.host;
5569
- if (!host) {
5570
- globalConfig.host = DEFAULT_HOST;
5571
- await saveGlobalConfig(globalConfig);
5572
- host = DEFAULT_HOST;
5573
- }
5532
+ const host = getHost();
5574
5533
  console.log("\u{1F510} Login to JSSM\n");
5575
5534
  try {
5576
5535
  const email = await dist_default4({
@@ -5604,22 +5563,6 @@ async function loginCommand() {
5604
5563
  } else {
5605
5564
  console.error(`
5606
5565
  \u274C Login failed: ${result.error}`);
5607
- if (result.isConnectionError && host !== DEFAULT_HOST) {
5608
- console.log(`
5609
- \u26A0\uFE0F Current host: ${host}`);
5610
- console.log(` Default host: ${DEFAULT_HOST}`);
5611
- const resetToDefault = await dist_default3({
5612
- message: "Would you like to reset the host to default?",
5613
- default: false
5614
- });
5615
- if (resetToDefault) {
5616
- globalConfig.host = DEFAULT_HOST;
5617
- await saveGlobalConfig(globalConfig);
5618
- console.log(`
5619
- \u2705 Host reset to default: ${DEFAULT_HOST}`);
5620
- console.log(`\u{1F4A1} Please try logging in again with 'jssm login'`);
5621
- }
5622
- }
5623
5566
  process.exit(1);
5624
5567
  }
5625
5568
  } catch (error) {
@@ -5644,13 +5587,7 @@ async function registerCommand() {
5644
5587
  );
5645
5588
  return;
5646
5589
  }
5647
- let globalConfig = await loadGlobalConfig();
5648
- let host = globalConfig.host;
5649
- if (!host) {
5650
- globalConfig.host = DEFAULT_HOST;
5651
- await saveGlobalConfig(globalConfig);
5652
- host = DEFAULT_HOST;
5653
- }
5590
+ const host = getHost();
5654
5591
  console.log("\u{1F4DD} Register for JSSM\n");
5655
5592
  try {
5656
5593
  const name = await dist_default4({
@@ -5704,22 +5641,6 @@ async function registerCommand() {
5704
5641
  } else {
5705
5642
  console.error(`
5706
5643
  \u274C Registration failed: ${result.error}`);
5707
- if (result.isConnectionError && host !== DEFAULT_HOST) {
5708
- console.log(`
5709
- \u26A0\uFE0F Current host: ${host}`);
5710
- console.log(` Default host: ${DEFAULT_HOST}`);
5711
- const resetToDefault = await dist_default3({
5712
- message: "Would you like to reset the host to default?",
5713
- default: false
5714
- });
5715
- if (resetToDefault) {
5716
- globalConfig.host = DEFAULT_HOST;
5717
- await saveGlobalConfig(globalConfig);
5718
- console.log(`
5719
- \u2705 Host reset to default: ${DEFAULT_HOST}`);
5720
- console.log(`\u{1F4A1} Please try registering again with 'jssm register'`);
5721
- }
5722
- }
5723
5644
  process.exit(1);
5724
5645
  }
5725
5646
  } catch (error) {
@@ -5750,8 +5671,7 @@ init_auth();
5750
5671
  var import_chalk = __toESM(require_source(), 1);
5751
5672
  async function createToken(args2) {
5752
5673
  const auth = await loadAuthData();
5753
- const globalConfig = await loadGlobalConfig();
5754
- const host = globalConfig.host || DEFAULT_HOST;
5674
+ const host = getHost();
5755
5675
  if (!auth) {
5756
5676
  console.error(import_chalk.default.red("Not logged in. Run: jssm login"));
5757
5677
  process.exit(1);
@@ -5847,8 +5767,7 @@ async function createToken(args2) {
5847
5767
  }
5848
5768
  async function listTokens(args2) {
5849
5769
  const auth = await loadAuthData();
5850
- const globalConfig = await loadGlobalConfig();
5851
- const host = globalConfig.host || DEFAULT_HOST;
5770
+ const host = getHost();
5852
5771
  if (!auth) {
5853
5772
  console.error(import_chalk.default.red("Not logged in. Run: jssm login"));
5854
5773
  process.exit(1);
@@ -5929,8 +5848,7 @@ Service tokens for ${project}/${environment}:
5929
5848
  }
5930
5849
  async function revokeToken(args2) {
5931
5850
  const auth = await loadAuthData();
5932
- const globalConfig = await loadGlobalConfig();
5933
- const host = globalConfig.host || DEFAULT_HOST;
5851
+ const host = getHost();
5934
5852
  if (!auth) {
5935
5853
  console.error(import_chalk.default.red("Not logged in. Run: jssm login"));
5936
5854
  process.exit(1);
@@ -6030,7 +5948,7 @@ ${import_chalk.default.bold("Usage in Docker:")}
6030
5948
 
6031
5949
  // src/utils/versionCheck.ts
6032
5950
  var PACKAGE_NAME = "@saidulbadhon/jssm-cli";
6033
- var CURRENT_VERSION = "1.7.0";
5951
+ var CURRENT_VERSION = "1.8.0";
6034
5952
  async function getLatestVersion() {
6035
5953
  try {
6036
5954
  const response = await fetch(`https://registry.npmjs.org/${PACKAGE_NAME}`);
@@ -6228,8 +6146,7 @@ Commands:
6228
6146
  --version Show CLI version
6229
6147
 
6230
6148
  Setup (recommended):
6231
- # 1. Set global host and login
6232
- jssm config set host http://localhost:3000
6149
+ # 1. Login (host is automatically configured based on NODE_ENV)
6233
6150
  jssm register # or: jssm login
6234
6151
 
6235
6152
  # 2. Initialize a project directory (creates .jssm file)
@@ -6247,7 +6164,7 @@ Quick Start (all-in-one):
6247
6164
  Advanced:
6248
6165
  # Manage global configuration
6249
6166
  jssm config list
6250
- jssm config set host http://api.example.com
6167
+ jssm config set namespace my-namespace
6251
6168
 
6252
6169
  # Create project
6253
6170
  jssm project create my-app
@@ -6267,7 +6184,8 @@ Container Secrets (Docker/ECS/EKS):
6267
6184
  CMD ["node", "app.js"]
6268
6185
 
6269
6186
  Note:
6270
- - Global config (~/.jssm/config) stores host and preferences
6187
+ - Host is automatically configured based on NODE_ENV (dev: localhost:3000, prod: jssm-api.jutsu.ai)
6188
+ - Global config (~/.jssm/config) stores preferences (namespace, etc.)
6271
6189
  - Auth data (~/.jssm/auth) stores your login session
6272
6190
  - Project config (.jssm) stores project name
6273
6191
  - Add .jssm to .gitignore (may contain sensitive overrides)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saidulbadhon/jssm-cli",
3
- "version": "1.7.0",
3
+ "version": "1.8.0",
4
4
  "private": false,
5
5
  "description": "CLI for JSSM - Simple environment variable manager",
6
6
  "author": "Saidul Badhon",