@leaperone/cli 0.1.7 → 0.1.8

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.
@@ -0,0 +1,5 @@
1
+ import { Command } from "commander";
2
+ export declare function getGlobalUpgradeCommand(): string;
3
+ export declare function getLatestNpxCommand(): string;
4
+ export declare function isNpxExecution(): boolean;
5
+ export declare function registerUpgradeCommand(program: Command): void;
@@ -0,0 +1,93 @@
1
+ import path from "node:path";
2
+ import { spawnSync } from "node:child_process";
3
+ import { createRequire } from "node:module";
4
+ import { fileURLToPath } from "node:url";
5
+ import { jsonOutput, success, error, warn } from "../lib/output.js";
6
+ import { spin } from "../lib/spinner.js";
7
+ const require = createRequire(import.meta.url);
8
+ const pkg = require("../../package.json");
9
+ function getGlobalUpgradeArgs() {
10
+ return ["install", "-g", `${pkg.name}@latest`];
11
+ }
12
+ export function getGlobalUpgradeCommand() {
13
+ return `npm ${getGlobalUpgradeArgs().join(" ")}`;
14
+ }
15
+ export function getLatestNpxCommand() {
16
+ return `npx ${pkg.name}@latest`;
17
+ }
18
+ export function isNpxExecution() {
19
+ const currentFile = fileURLToPath(import.meta.url);
20
+ const argv1 = process.argv[1] || "";
21
+ const execPath = process.env.npm_execpath || "";
22
+ const npmPath = `${path.sep}_npx${path.sep}`;
23
+ return [currentFile, argv1, execPath].some((value) => value.includes(npmPath) || value.includes("/_npx/") || value.includes("\\_npx\\"));
24
+ }
25
+ export function registerUpgradeCommand(program) {
26
+ program
27
+ .command("upgrade")
28
+ .description("Upgrade LEAPERone CLI to the latest version")
29
+ .addHelpText("after", `
30
+ Examples:
31
+ $ leaperone upgrade
32
+ $ lpr upgrade
33
+ $ ${getLatestNpxCommand()}
34
+ `)
35
+ .action(() => {
36
+ const json = program.opts().json;
37
+ const globalCommand = getGlobalUpgradeCommand();
38
+ const npxCommand = getLatestNpxCommand();
39
+ if (isNpxExecution()) {
40
+ if (json) {
41
+ jsonOutput({
42
+ success: true,
43
+ mode: "npx",
44
+ version: pkg.version,
45
+ message: "Detected npx execution. There is no persistent global install to upgrade.",
46
+ latestCommand: npxCommand,
47
+ globalInstallCommand: globalCommand,
48
+ });
49
+ return;
50
+ }
51
+ warn("Detected npx execution. There is no persistent CLI install to upgrade.");
52
+ console.log(` Run latest once: ${npxCommand}`);
53
+ console.log(` Install globally: ${globalCommand}`);
54
+ return;
55
+ }
56
+ const s = json ? null : spin("Upgrading CLI...");
57
+ const result = spawnSync("npm", getGlobalUpgradeArgs(), {
58
+ encoding: "utf8",
59
+ stdio: json ? "pipe" : "inherit",
60
+ shell: process.platform === "win32",
61
+ });
62
+ s?.stop();
63
+ if (result.error || result.status !== 0) {
64
+ const stderr = result.stderr?.trim();
65
+ const stdout = result.stdout?.trim();
66
+ const message = result.error?.message || stderr || stdout || "Upgrade failed";
67
+ if (json) {
68
+ jsonOutput({
69
+ success: false,
70
+ command: globalCommand,
71
+ error: message,
72
+ stdout: stdout || undefined,
73
+ stderr: stderr || undefined,
74
+ });
75
+ }
76
+ else {
77
+ error(message);
78
+ }
79
+ process.exit(1);
80
+ }
81
+ if (json) {
82
+ jsonOutput({
83
+ success: true,
84
+ command: globalCommand,
85
+ version: pkg.version,
86
+ stdout: result.stdout?.trim() || undefined,
87
+ });
88
+ return;
89
+ }
90
+ success("CLI upgraded successfully.");
91
+ });
92
+ }
93
+ //# sourceMappingURL=upgrade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -8,6 +8,7 @@ import { registerEndpointsCommand } from "./commands/endpoints.js";
8
8
  import { registerConfigCommand } from "./commands/config.js";
9
9
  import { registerFeedbackCommand } from "./commands/feedback.js";
10
10
  import { registerSkillsCommand } from "./commands/skills.js";
11
+ import { getGlobalUpgradeCommand, getLatestNpxCommand, isNpxExecution, registerUpgradeCommand, } from "./commands/upgrade.js";
11
12
  import { stopSpinner } from "./lib/spinner.js";
12
13
  import { runCleanups } from "./lib/cleanup.js";
13
14
  const require = createRequire(import.meta.url);
@@ -26,7 +27,18 @@ process.on("SIGINT", () => handleExit("SIGINT"));
26
27
  process.on("SIGTERM", () => handleExit("SIGTERM"));
27
28
  // Check for updates (async, non-blocking)
28
29
  import updateNotifier from "update-notifier";
29
- updateNotifier({ pkg }).notify({ isGlobal: true });
30
+ const notifier = updateNotifier({ pkg });
31
+ if (!process.argv.includes("--json") && notifier.update) {
32
+ notifier.notify(isNpxExecution()
33
+ ? {
34
+ message: [
35
+ `Update available ${notifier.update.current} → ${notifier.update.latest}`,
36
+ `Run ${getLatestNpxCommand()} to use the latest version.`,
37
+ `Or install globally with ${getGlobalUpgradeCommand()}.`,
38
+ ].join("\n"),
39
+ }
40
+ : { isGlobal: true });
41
+ }
30
42
  const program = new Command();
31
43
  program
32
44
  .name("leaperone")
@@ -35,7 +47,14 @@ program
35
47
  .option("--json", "Output in JSON format (useful for agents and scripts)")
36
48
  .configureHelp({
37
49
  sortSubcommands: true,
38
- });
50
+ })
51
+ .addHelpText("after", `
52
+ Examples:
53
+ $ leaperone auth login
54
+ $ leaperone credit balance
55
+ $ leaperone upgrade
56
+ $ lpr credit balance
57
+ `);
39
58
  registerAuthCommand(program);
40
59
  registerApiKeyCommand(program);
41
60
  registerCreditCommand(program);
@@ -44,5 +63,6 @@ registerEndpointsCommand(program);
44
63
  registerConfigCommand(program);
45
64
  registerFeedbackCommand(program);
46
65
  registerSkillsCommand(program);
66
+ registerUpgradeCommand(program);
47
67
  program.parse();
48
68
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAsC,CAAC;AAE5E,wCAAwC;AACxC,SAAS,UAAU,CAAC,MAAc;IAChC,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,CAAC;IACd,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpB,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AAEnD,0CAA0C;AAC1C,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAC7C,cAAc,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAEnD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,oEAAoE,CAAC;KACjF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,MAAM,CAAC,QAAQ,EAAE,uDAAuD,CAAC;KACzE,aAAa,CAAC;IACb,eAAe,EAAE,IAAI;CACtB,CAAC,CAAC;AAEL,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAE/B,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,EACd,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAsC,CAAC;AAE5E,wCAAwC;AACxC,SAAS,UAAU,CAAC,MAAc;IAChC,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,CAAC;IACd,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpB,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AAEnD,0CAA0C;AAC1C,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAC7C,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AACzC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;IACxD,QAAQ,CAAC,MAAM,CACb,cAAc,EAAE;QACd,CAAC,CAAC;YACE,OAAO,EAAE;gBACP,oBAAoB,QAAQ,CAAC,MAAM,CAAC,OAAO,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;gBACzE,OAAO,mBAAmB,EAAE,6BAA6B;gBACzD,4BAA4B,uBAAuB,EAAE,GAAG;aACzD,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACH,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CACvB,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,oEAAoE,CAAC;KACjF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,MAAM,CAAC,QAAQ,EAAE,uDAAuD,CAAC;KACzE,aAAa,CAAC;IACb,eAAe,EAAE,IAAI;CACtB,CAAC;KACD,WAAW,CACV,OAAO,EACP;;;;;;CAMH,CACE,CAAC;AAEJ,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAEhC,OAAO,CAAC,KAAK,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@leaperone/cli",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "description": "LEAPERone CLI - Manage API keys, credits, and access documentation",
5
5
  "type": "module",
6
6
  "bin": {
7
- "leaperone": "./bin/leaperone.js"
7
+ "leaperone": "./bin/leaperone.js",
8
+ "lpr": "./bin/leaperone.js"
8
9
  },
9
10
  "scripts": {
10
11
  "build": "tsc",