@suronai/cli 0.1.4 → 0.1.6

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.
@@ -8,12 +8,11 @@ const config_1 = require("../utils/config");
8
8
  const dotenvx_1 = require("../utils/dotenvx");
9
9
  exports.initCommand = new commander_1.Command("init")
10
10
  .description("Encrypt .env and register this app with Suron")
11
- .option("--name <name>", "App name (defaults to current directory name)")
11
+ .option("--name <n>", "App name (defaults to current directory name)")
12
12
  .action(async (opts) => {
13
13
  const cwd = process.cwd();
14
- const apiKey = (0, config_1.requireApiKey)();
15
14
  const apiUrl = (0, config_1.requireApiUrl)();
16
- // 1. Check .env exists
15
+ const telegramId = (0, config_1.requireTelegramId)();
17
16
  if (!(0, fs_1.existsSync)((0, path_1.join)(cwd, ".env"))) {
18
17
  console.error("error: .env not found in current directory");
19
18
  console.error(" Create a .env file first, then run: suron init");
@@ -21,7 +20,6 @@ exports.initCommand = new commander_1.Command("init")
21
20
  }
22
21
  const appName = opts.name ?? require("path").basename(cwd) ?? "my-project";
23
22
  console.log(`[suron] Encrypting .env with dotenvx...`);
24
- // 2. Encrypt .env → produces encrypted .env + .env.keys
25
23
  try {
26
24
  (0, dotenvx_1.encryptDotenv)(cwd);
27
25
  }
@@ -29,7 +27,6 @@ exports.initCommand = new commander_1.Command("init")
29
27
  console.error(`error: dotenvx encryption failed: ${err}`);
30
28
  process.exit(1);
31
29
  }
32
- // 3. Read private key from .env.keys
33
30
  let privateKey;
34
31
  try {
35
32
  privateKey = (0, dotenvx_1.readPrivateKey)(cwd);
@@ -39,16 +36,16 @@ exports.initCommand = new commander_1.Command("init")
39
36
  process.exit(1);
40
37
  }
41
38
  console.log("[suron] Registering app...");
42
- // 4. Register app in Convex — backend encrypts privateKey with MASTER_KEY
43
39
  let res;
44
40
  try {
45
41
  res = await fetch(`${apiUrl}/cli/register-app`, {
46
42
  method: "POST",
47
- headers: {
48
- "Content-Type": "application/json",
49
- Authorization: `Bearer ${apiKey}`,
50
- },
51
- body: JSON.stringify({ name: appName, private_key: privateKey }),
43
+ headers: { "Content-Type": "application/json" },
44
+ body: JSON.stringify({
45
+ name: appName,
46
+ telegram_id: telegramId,
47
+ private_key: privateKey,
48
+ }),
52
49
  });
53
50
  }
54
51
  catch (err) {
@@ -61,11 +58,8 @@ exports.initCommand = new commander_1.Command("init")
61
58
  process.exit(1);
62
59
  }
63
60
  const data = (await res.json());
64
- // 5. Delete .env.keys — private key now lives encrypted in Convex
65
61
  (0, dotenvx_1.deleteKeysFile)(cwd);
66
- // 6. Write .suron.json
67
- const suronJson = { app: appName, id: data.app_id };
68
- (0, fs_1.writeFileSync)((0, path_1.join)(cwd, ".suron.json"), JSON.stringify(suronJson, null, 2) + "\n", "utf-8");
62
+ (0, fs_1.writeFileSync)((0, path_1.join)(cwd, ".suron.json"), JSON.stringify({ app: appName, id: data.app_id }, null, 2) + "\n", "utf-8");
69
63
  console.log(`[suron] Done.`);
70
64
  console.log(` .env is encrypted — safe to commit`);
71
65
  console.log(` .env.keys deleted`);
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,8 @@ const config_1 = require("../utils/config");
7
7
  exports.loginCommand = new commander_1.Command("login")
8
8
  .description("Link your Telegram account to Suron")
9
9
  .action(async () => {
10
- console.log("\n Suron Login\n");
11
- // Step 1: Get the API URL — prompt if not already saved
10
+ console.log("\n Suron Setup\n");
11
+ // Step 1: Convex deployment URL
12
12
  let apiUrl = (0, config_1.getApiUrl)();
13
13
  if (!apiUrl) {
14
14
  const input = await (0, config_1.prompt)(" Convex deployment URL (https://xxx.convex.site): ");
@@ -17,62 +17,61 @@ exports.loginCommand = new commander_1.Command("login")
17
17
  process.exit(1);
18
18
  }
19
19
  apiUrl = input.replace(/\/$/, "");
20
- (0, config_1.saveConfig)({ apiUrl });
21
- console.log(` Saved to ~/.suron-config\n`);
22
20
  }
23
21
  else {
24
- console.log(` Using API URL: ${apiUrl}\n`);
22
+ console.log(` Convex URL: ${apiUrl}`);
23
+ const change = await (0, config_1.prompt)(" Change it? (y/N): ");
24
+ if (change.toLowerCase() === "y") {
25
+ const input = await (0, config_1.prompt)(" New URL: ");
26
+ if (!input) {
27
+ console.error("\nerror: URL required");
28
+ process.exit(1);
29
+ }
30
+ apiUrl = input.replace(/\/$/, "");
31
+ }
32
+ }
33
+ // Step 2: Get Telegram chat ID
34
+ console.log(`\n To find your Telegram chat ID:`);
35
+ console.log(` 1. Open Telegram and message @userinfobot`);
36
+ console.log(` 2. It will reply with your numeric ID\n`);
37
+ const opener = process.platform === "win32" ? "start" :
38
+ process.platform === "darwin" ? "open" : "xdg-open";
39
+ (0, child_process_1.exec)(`${opener} "https://t.me/userinfobot"`);
40
+ const telegramId = await (0, config_1.prompt)(" Your Telegram chat ID (numeric): ");
41
+ if (!telegramId || !/^\d+$/.test(telegramId)) {
42
+ console.error("\nerror: Telegram ID must be numeric");
43
+ process.exit(1);
25
44
  }
26
- // Step 2: Request a one-time login token from the backend
27
- console.log(" Contacting Suron backend...");
45
+ // Step 3: Verify the bot can reach you by sending a test message
46
+ console.log("\n Verifying connection...");
28
47
  let res;
29
48
  try {
30
- res = await fetch(`${apiUrl}/cli/start-login`, { method: "POST" });
49
+ res = await fetch(`${apiUrl}/cli/verify`, {
50
+ method: "POST",
51
+ headers: { "Content-Type": "application/json" },
52
+ body: JSON.stringify({ telegram_id: telegramId }),
53
+ });
31
54
  }
32
55
  catch (err) {
33
56
  console.error(`\nerror: could not reach ${apiUrl}`);
34
- console.error(` Is the Convex deployment running?`);
57
+ console.error(` Is the Convex deployment running and npx convex dev active?`);
35
58
  process.exit(1);
36
59
  }
37
60
  if (!res.ok) {
38
61
  const text = await res.text().catch(() => "");
39
- console.error(`\nerror: /cli/start-login failed (${res.status}): ${text}`);
62
+ console.error(`\nerror: verify failed (${res.status}): ${text}`);
40
63
  process.exit(1);
41
64
  }
42
- const data = (await res.json());
43
- const telegramUrl = `https://t.me/${data.bot_username}?start=${data.token}`;
44
- console.log(`\n Open this URL in Telegram and tap Start:\n`);
45
- console.log(` ${telegramUrl}\n`);
46
- // Try to open browser automatically (best effort)
47
- const opener = process.platform === "win32" ? "start" :
48
- process.platform === "darwin" ? "open" : "xdg-open";
49
- (0, child_process_1.exec)(`${opener} "${telegramUrl}"`);
50
- await (0, config_1.prompt)(" Press Enter once you have tapped Start in Telegram...");
51
- // Step 3: Poll until Telegram confirms the link
52
- console.log("\n Waiting for Telegram confirmation...");
53
- const deadline = Date.now() + 120000;
54
- while (Date.now() < deadline) {
55
- await sleep(2000);
56
- let statusRes;
57
- try {
58
- statusRes = await fetch(`${apiUrl}/cli/login-status?token=${encodeURIComponent(data.token)}`);
59
- }
60
- catch {
61
- continue;
62
- }
63
- if (!statusRes.ok)
64
- continue;
65
- const status = (await statusRes.json());
66
- if (status.confirmed && status.api_key) {
67
- (0, config_1.saveConfig)({ apiKey: status.api_key });
68
- console.log("\n Logged in. Credentials saved to ~/.suron-config\n");
69
- return;
70
- }
65
+ console.log("\n A test message was sent to your Telegram.");
66
+ const confirm = await (0, config_1.prompt)(" Did you receive it? (y/N): ");
67
+ if (confirm.toLowerCase() !== "y") {
68
+ console.error("\nerror: Message not received. Check your Telegram ID and bot token.");
69
+ process.exit(1);
71
70
  }
72
- console.error("\nerror: login timed out after 2 minutes. Run: suron login");
73
- process.exit(1);
71
+ // Step 4: Save everything
72
+ (0, config_1.saveConfig)({ apiUrl, telegramId });
73
+ console.log("\n Saved to ~/.suron-config");
74
+ console.log(" Setup complete.\n");
75
+ console.log(" Next: cd your-project && suron init\n");
74
76
  });
75
- function sleep(ms) {
76
- return new Promise((r) => setTimeout(r, ms));
77
- }
78
77
  //# sourceMappingURL=login.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
@@ -10,9 +10,7 @@ exports.rotateCommand = new commander_1.Command("rotate")
10
10
  .description("Re-encrypt .env with a new private key and update Suron")
11
11
  .action(async () => {
12
12
  const cwd = process.cwd();
13
- const apiKey = (0, config_1.requireApiKey)();
14
13
  const apiUrl = (0, config_1.requireApiUrl)();
15
- // 1. Read existing .suron.json
16
14
  const suronJsonPath = (0, path_1.join)(cwd, ".suron.json");
17
15
  if (!(0, fs_1.existsSync)(suronJsonPath)) {
18
16
  console.error("error: .suron.json not found. Run: suron init first");
@@ -26,13 +24,11 @@ exports.rotateCommand = new commander_1.Command("rotate")
26
24
  console.error("error: .suron.json is malformed");
27
25
  process.exit(1);
28
26
  }
29
- // 2. Check .env exists
30
27
  if (!(0, fs_1.existsSync)((0, path_1.join)(cwd, ".env"))) {
31
28
  console.error("error: .env not found");
32
29
  process.exit(1);
33
30
  }
34
31
  console.log("[suron] Re-encrypting .env with a new private key...");
35
- // 3. Re-encrypt — dotenvx generates a new private key
36
32
  try {
37
33
  (0, dotenvx_1.encryptDotenv)(cwd);
38
34
  }
@@ -40,7 +36,6 @@ exports.rotateCommand = new commander_1.Command("rotate")
40
36
  console.error(`error: dotenvx encryption failed: ${err}`);
41
37
  process.exit(1);
42
38
  }
43
- // 4. Read new private key
44
39
  let newPrivateKey;
45
40
  try {
46
41
  newPrivateKey = (0, dotenvx_1.readPrivateKey)(cwd);
@@ -50,15 +45,11 @@ exports.rotateCommand = new commander_1.Command("rotate")
50
45
  process.exit(1);
51
46
  }
52
47
  console.log("[suron] Updating private key in Suron...");
53
- // 5. Send new private key to Convex (backend encrypts it with MASTER_KEY)
54
48
  let res;
55
49
  try {
56
50
  res = await fetch(`${apiUrl}/cli/rotate-key`, {
57
51
  method: "POST",
58
- headers: {
59
- "Content-Type": "application/json",
60
- Authorization: `Bearer ${apiKey}`,
61
- },
52
+ headers: { "Content-Type": "application/json" },
62
53
  body: JSON.stringify({
63
54
  app_id: suronConfig.id,
64
55
  private_key: newPrivateKey,
@@ -74,7 +65,6 @@ exports.rotateCommand = new commander_1.Command("rotate")
74
65
  console.error(`error: rotate-key failed (${res.status}): ${text}`);
75
66
  process.exit(1);
76
67
  }
77
- // 6. Delete .env.keys
78
68
  (0, dotenvx_1.deleteKeysFile)(cwd);
79
69
  console.log("[suron] Key rotated.");
80
70
  console.log(" .env re-encrypted — safe to commit");
@@ -1 +1 @@
1
- {"version":3,"file":"rotate.js","sourceRoot":"","sources":["../../src/commands/rotate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rotate.js","sourceRoot":"","sources":["../../src/commands/rotate.ts"],"names":[],"mappings":"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"}
@@ -4,35 +4,12 @@ exports.whoamiCommand = void 0;
4
4
  const commander_1 = require("commander");
5
5
  const config_1 = require("../utils/config");
6
6
  exports.whoamiCommand = new commander_1.Command("whoami")
7
- .description("Show your linked Telegram account and app info")
7
+ .description("Show your configured account info")
8
8
  .action(async () => {
9
- const apiKey = (0, config_1.requireApiKey)();
10
9
  const apiUrl = (0, config_1.requireApiUrl)();
11
- let res;
12
- try {
13
- res = await fetch(`${apiUrl}/cli/whoami`, {
14
- method: "POST",
15
- headers: {
16
- "Content-Type": "application/json",
17
- Authorization: `Bearer ${apiKey}`,
18
- },
19
- });
20
- }
21
- catch (err) {
22
- console.error(`error: could not reach Suron API: ${err}`);
23
- process.exit(1);
24
- }
25
- if (res.status === 401) {
26
- console.error("error: invalid API key. Run: suron login");
27
- process.exit(1);
28
- }
29
- if (!res.ok) {
30
- const text = await res.text().catch(() => "");
31
- console.error(`error: whoami failed (${res.status}): ${text}`);
32
- process.exit(1);
33
- }
34
- const data = (await res.json());
35
- console.log(`telegram: @${data.telegram_username}`);
36
- console.log(`id: ${data.telegram_id}`);
10
+ const telegramId = (0, config_1.requireTelegramId)();
11
+ console.log(`api url: ${apiUrl}`);
12
+ console.log(`telegram id: ${telegramId}`);
13
+ console.log(`config file: ~/.suron-config`);
37
14
  });
38
15
  //# sourceMappingURL=whoami.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,4CAA+D;AAElD,QAAA,aAAa,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,MAAM,GAAG,IAAA,sBAAa,GAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAA,sBAAa,GAAE,CAAC;IAE/B,IAAI,GAAa,CAAC;IAClB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,aAAa,EAAE;YACxC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,MAAM,EAAE;aAClC;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qCAAqC,GAAG,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,KAAK,CAAC,yBAAyB,GAAG,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAG7B,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,4CAAmE;AAEtD,QAAA,aAAa,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,MAAM,GAAG,IAAA,sBAAa,GAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,IAAA,0BAAiB,GAAE,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC"}
@@ -1,10 +1,15 @@
1
- export declare function getApiKey(): string | null;
2
- export declare function getApiUrl(): string | null;
3
- export declare function saveConfig(values: {
4
- apiKey?: string;
1
+ interface Config {
5
2
  apiUrl?: string;
6
- }): void;
3
+ telegramId?: string;
4
+ apiKey?: string;
5
+ }
6
+ export declare function saveConfig(values: Partial<Config>): void;
7
+ export declare function getApiUrl(): string | null;
8
+ export declare function getTelegramId(): string | null;
9
+ export declare function getApiKey(): string | null;
7
10
  export declare function saveApiKey(key: string): void;
8
- export declare function requireApiKey(): string;
9
11
  export declare function requireApiUrl(): string;
12
+ export declare function requireTelegramId(): string;
13
+ export declare function requireApiKey(): string;
10
14
  export declare function prompt(question: string): Promise<string>;
15
+ export {};
@@ -33,68 +33,84 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.getApiKey = getApiKey;
37
- exports.getApiUrl = getApiUrl;
38
36
  exports.saveConfig = saveConfig;
37
+ exports.getApiUrl = getApiUrl;
38
+ exports.getTelegramId = getTelegramId;
39
+ exports.getApiKey = getApiKey;
39
40
  exports.saveApiKey = saveApiKey;
40
- exports.requireApiKey = requireApiKey;
41
41
  exports.requireApiUrl = requireApiUrl;
42
+ exports.requireTelegramId = requireTelegramId;
43
+ exports.requireApiKey = requireApiKey;
42
44
  exports.prompt = prompt;
43
45
  const os_1 = require("os");
44
46
  const path_1 = require("path");
45
47
  const fs_1 = require("fs");
46
48
  const readline = __importStar(require("readline"));
47
49
  const CONFIG_PATH = (0, path_1.join)((0, os_1.homedir)(), ".suron-config");
48
- function getApiKey() {
50
+ function readConfig() {
49
51
  if (!(0, fs_1.existsSync)(CONFIG_PATH))
50
- return null;
52
+ return {};
51
53
  try {
52
- const content = (0, fs_1.readFileSync)(CONFIG_PATH, "utf-8");
53
- const match = content.match(/VAULT_API_KEY=(.+)/);
54
- return match?.[1]?.trim() ?? null;
54
+ const lines = (0, fs_1.readFileSync)(CONFIG_PATH, "utf-8").split("\n");
55
+ const config = {};
56
+ for (const line of lines) {
57
+ const [key, ...rest] = line.split("=");
58
+ const value = rest.join("=").trim();
59
+ if (!value)
60
+ continue;
61
+ if (key === "SURON_API_URL")
62
+ config.apiUrl = value;
63
+ if (key === "TELEGRAM_ID")
64
+ config.telegramId = value;
65
+ if (key === "VAULT_API_KEY")
66
+ config.apiKey = value;
67
+ }
68
+ return config;
55
69
  }
56
70
  catch {
57
- return null;
71
+ return {};
58
72
  }
59
73
  }
74
+ function saveConfig(values) {
75
+ const current = readConfig();
76
+ const merged = { ...current, ...values };
77
+ const lines = [];
78
+ if (merged.apiUrl)
79
+ lines.push(`SURON_API_URL=${merged.apiUrl}`);
80
+ if (merged.telegramId)
81
+ lines.push(`TELEGRAM_ID=${merged.telegramId}`);
82
+ if (merged.apiKey)
83
+ lines.push(`VAULT_API_KEY=${merged.apiKey}`);
84
+ (0, fs_1.writeFileSync)(CONFIG_PATH, lines.join("\n") + "\n", { mode: 0o600 });
85
+ }
60
86
  function getApiUrl() {
61
- // Check env var first, then config file
62
- if (process.env.SURON_API_URL)
63
- return process.env.SURON_API_URL.replace(/\/$/, "");
64
- if (!(0, fs_1.existsSync)(CONFIG_PATH))
65
- return null;
66
- try {
67
- const content = (0, fs_1.readFileSync)(CONFIG_PATH, "utf-8");
68
- const match = content.match(/SURON_API_URL=(.+)/);
69
- return match?.[1]?.trim() ?? null;
70
- }
71
- catch {
72
- return null;
73
- }
87
+ return process.env.SURON_API_URL?.replace(/\/$/, "") ?? readConfig().apiUrl ?? null;
74
88
  }
75
- function saveConfig(values) {
76
- let content = (0, fs_1.existsSync)(CONFIG_PATH) ? (0, fs_1.readFileSync)(CONFIG_PATH, "utf-8") : "";
77
- if (values.apiUrl) {
78
- if (content.match(/SURON_API_URL=.*/)) {
79
- content = content.replace(/SURON_API_URL=.*/, `SURON_API_URL=${values.apiUrl}`);
80
- }
81
- else {
82
- content += `SURON_API_URL=${values.apiUrl}\n`;
83
- }
84
- }
85
- if (values.apiKey) {
86
- if (content.match(/VAULT_API_KEY=.*/)) {
87
- content = content.replace(/VAULT_API_KEY=.*/, `VAULT_API_KEY=${values.apiKey}`);
88
- }
89
- else {
90
- content += `VAULT_API_KEY=${values.apiKey}\n`;
91
- }
92
- }
93
- (0, fs_1.writeFileSync)(CONFIG_PATH, content, { mode: 0o600 });
89
+ function getTelegramId() {
90
+ return process.env.TELEGRAM_ID ?? readConfig().telegramId ?? null;
91
+ }
92
+ function getApiKey() {
93
+ return readConfig().apiKey ?? null;
94
94
  }
95
95
  function saveApiKey(key) {
96
96
  saveConfig({ apiKey: key });
97
97
  }
98
+ function requireApiUrl() {
99
+ const url = getApiUrl();
100
+ if (!url) {
101
+ console.error("error: not configured. Run: suron login");
102
+ process.exit(1);
103
+ }
104
+ return url;
105
+ }
106
+ function requireTelegramId() {
107
+ const id = getTelegramId();
108
+ if (!id) {
109
+ console.error("error: not configured. Run: suron login");
110
+ process.exit(1);
111
+ }
112
+ return id;
113
+ }
98
114
  function requireApiKey() {
99
115
  const key = getApiKey();
100
116
  if (!key) {
@@ -103,14 +119,6 @@ function requireApiKey() {
103
119
  }
104
120
  return key;
105
121
  }
106
- function requireApiUrl() {
107
- const url = getApiUrl();
108
- if (!url) {
109
- console.error("error: SURON_API_URL not set. Run: suron login");
110
- process.exit(1);
111
- }
112
- return url;
113
- }
114
122
  function prompt(question) {
115
123
  const rl = readline.createInterface({
116
124
  input: process.stdin,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@suronai/cli",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "CLI for Suron — suron login, init, whoami, rotate",
5
5
  "bin": {
6
6
  "suron": "./dist/index.js"
@@ -9,19 +9,19 @@
9
9
  "dist"
10
10
  ],
11
11
  "scripts": {
12
- "build": "tsc && node -e \"const fs=require('fs'),f='dist/index.js',c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node'))fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c)\"",
13
- "dev": "tsc --watch",
12
+ "build": "node ../../node_modules/typescript/bin/tsc && node -e \"const fs=require('fs'),f='dist/index.js',c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node'))fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c)\"",
13
+ "dev": "node ../../node_modules/typescript/bin/tsc --watch",
14
14
  "clean": "rimraf dist"
15
15
  },
16
16
  "dependencies": {
17
- "commander": "^12.0.0",
17
+ "@dotenvx/dotenvx": "^1.0.0",
18
18
  "chalk": "^5.3.0",
19
- "@dotenvx/dotenvx": "^1.0.0"
19
+ "commander": "^12.0.0"
20
20
  },
21
21
  "devDependencies": {
22
- "typescript": "^5.4.0",
23
22
  "@types/node": "^20.0.0",
24
- "rimraf": "^5.0.0"
23
+ "rimraf": "^5.0.0",
24
+ "typescript": "^5.9.3"
25
25
  },
26
26
  "engines": {
27
27
  "node": ">=18.0.0"