@leaperone/cli 0.1.6 → 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.
@@ -4,6 +4,7 @@ import chalk from "chalk";
4
4
  import { loadConfig, saveConfig, clearAuth, getCredential, getBaseUrl, CONFIG_FILE } from "../lib/config.js";
5
5
  import { jsonOutput, keyValue, success, error } from "../lib/output.js";
6
6
  import { spin } from "../lib/spinner.js";
7
+ import { onCleanup, removeCleanup } from "../lib/cleanup.js";
7
8
  function openBrowser(url) {
8
9
  const cmd = process.platform === "darwin" ? "open" :
9
10
  process.platform === "win32" ? "start" : "xdg-open";
@@ -19,7 +20,7 @@ function browserLogin(baseUrl) {
19
20
  if (!code) {
20
21
  res.writeHead(400, { "Content-Type": "text/html; charset=utf-8" });
21
22
  res.end("<html><body><h2>Missing authorization code.</h2></body></html>");
22
- server.close();
23
+ closeAndDeregister();
23
24
  reject(new Error("No authorization code received"));
24
25
  return;
25
26
  }
@@ -46,7 +47,7 @@ function browserLogin(baseUrl) {
46
47
  }
47
48
  })
48
49
  .then((data) => {
49
- server.close();
50
+ closeAndDeregister();
50
51
  if (data.success && data.data?.token) {
51
52
  resolve(data.data.token);
52
53
  }
@@ -55,7 +56,7 @@ function browserLogin(baseUrl) {
55
56
  }
56
57
  })
57
58
  .catch((err) => {
58
- server.close();
59
+ closeAndDeregister();
59
60
  reject(err);
60
61
  });
61
62
  }
@@ -64,10 +65,17 @@ function browserLogin(baseUrl) {
64
65
  res.end();
65
66
  }
66
67
  });
68
+ const closeAndDeregister = () => {
69
+ clearTimeout(timer);
70
+ server.close();
71
+ removeCleanup(closeAndDeregister);
72
+ };
73
+ onCleanup(closeAndDeregister);
67
74
  // Listen on random port
68
75
  server.listen(0, "127.0.0.1", () => {
69
76
  const addr = server.address();
70
77
  if (!addr || typeof addr === "string") {
78
+ closeAndDeregister();
71
79
  reject(new Error("Failed to start local server"));
72
80
  return;
73
81
  }
@@ -79,8 +87,8 @@ function browserLogin(baseUrl) {
79
87
  openBrowser(authUrl);
80
88
  });
81
89
  // Timeout after 3 minutes
82
- setTimeout(() => {
83
- server.close();
90
+ const timer = setTimeout(() => {
91
+ closeAndDeregister();
84
92
  reject(new Error("Authorization timed out (3 minutes)"));
85
93
  }, 3 * 60 * 1000);
86
94
  });
@@ -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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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare function registerFeedbackCommand(program: Command): void;
@@ -0,0 +1,163 @@
1
+ import os from "node:os";
2
+ import { createRequire } from "node:module";
3
+ import { request } from "../lib/api.js";
4
+ import { jsonOutput, keyValue, table, success, error } from "../lib/output.js";
5
+ import { spin } from "../lib/spinner.js";
6
+ import { getBaseUrl } from "../lib/config.js";
7
+ const require = createRequire(import.meta.url);
8
+ const pkg = require("../../package.json");
9
+ function collectMetadata() {
10
+ return {
11
+ cliVersion: pkg.version,
12
+ os: `${os.platform()} ${os.arch()}`,
13
+ osVersion: os.release(),
14
+ nodeVersion: process.version,
15
+ baseUrl: getBaseUrl(),
16
+ };
17
+ }
18
+ const STATUS_LABELS = {
19
+ open: "Open",
20
+ pending: "Pending",
21
+ in_progress: "In Progress",
22
+ resolved: "Resolved",
23
+ closed: "Closed",
24
+ };
25
+ export function registerFeedbackCommand(program) {
26
+ const feedback = program
27
+ .command("feedback")
28
+ .description("Submit feedback or report issues");
29
+ feedback
30
+ .command("create")
31
+ .description("Create a new feedback ticket")
32
+ .requiredOption("-s, --subject <subject>", "Short summary of the issue")
33
+ .requiredOption("-m, --message <message>", "Detailed description")
34
+ .option("-c, --category <category>", "Category: bug, suggestion, account, other", "other")
35
+ .action(async (opts) => {
36
+ const json = program.opts().json;
37
+ try {
38
+ const s = json ? null : spin("Submitting feedback...");
39
+ const data = await request("/tickets", {
40
+ method: "POST",
41
+ body: {
42
+ subject: opts.subject,
43
+ content: opts.message,
44
+ category: opts.category,
45
+ source: "cli",
46
+ metadata: collectMetadata(),
47
+ },
48
+ });
49
+ s?.stop();
50
+ if (json) {
51
+ jsonOutput(data);
52
+ return;
53
+ }
54
+ success(`Ticket created: ${data.id}`);
55
+ console.log(` View it with: leaperone feedback view ${data.id}`);
56
+ }
57
+ catch (err) {
58
+ if (json)
59
+ jsonOutput({ error: err.message });
60
+ else
61
+ error(err.message);
62
+ process.exit(1);
63
+ }
64
+ });
65
+ feedback
66
+ .command("list")
67
+ .description("List your feedback tickets")
68
+ .action(async () => {
69
+ const json = program.opts().json;
70
+ try {
71
+ const s = json ? null : spin("Fetching tickets...");
72
+ const data = await request("/tickets");
73
+ s?.stop();
74
+ if (json) {
75
+ jsonOutput(data);
76
+ return;
77
+ }
78
+ if (data.length === 0) {
79
+ console.log("No tickets found.");
80
+ return;
81
+ }
82
+ table(["ID", "Subject", "Status", "Category", "Updated"], data.map((t) => [
83
+ t.id.slice(0, 8),
84
+ t.subject.slice(0, 40),
85
+ STATUS_LABELS[t.status] ?? t.status,
86
+ t.category,
87
+ new Date(t.updatedAt).toLocaleString(),
88
+ ]));
89
+ }
90
+ catch (err) {
91
+ if (json)
92
+ jsonOutput({ error: err.message });
93
+ else
94
+ error(err.message);
95
+ process.exit(1);
96
+ }
97
+ });
98
+ feedback
99
+ .command("view <id>")
100
+ .description("View a ticket and its messages")
101
+ .action(async (id) => {
102
+ const json = program.opts().json;
103
+ try {
104
+ const s = json ? null : spin("Fetching ticket...");
105
+ const data = await request(`/tickets/${id}`);
106
+ s?.stop();
107
+ if (json) {
108
+ jsonOutput(data);
109
+ return;
110
+ }
111
+ keyValue([
112
+ ["ID", data.id],
113
+ ["Subject", data.subject],
114
+ ["Status", STATUS_LABELS[data.status] ?? data.status],
115
+ ["Category", data.category],
116
+ ["Created", new Date(data.createdAt).toLocaleString()],
117
+ ]);
118
+ console.log("");
119
+ for (const msg of data.messages) {
120
+ const role = msg.role === "admin" ? "Support" : "You";
121
+ const time = new Date(msg.createdAt).toLocaleString();
122
+ console.log(` [${role}] ${time}`);
123
+ console.log(` ${msg.content}`);
124
+ console.log("");
125
+ }
126
+ }
127
+ catch (err) {
128
+ if (json)
129
+ jsonOutput({ error: err.message });
130
+ else
131
+ error(err.message);
132
+ process.exit(1);
133
+ }
134
+ });
135
+ feedback
136
+ .command("reply <id>")
137
+ .description("Reply to an existing ticket")
138
+ .requiredOption("-m, --message <message>", "Reply message")
139
+ .action(async (id, opts) => {
140
+ const json = program.opts().json;
141
+ try {
142
+ const s = json ? null : spin("Sending reply...");
143
+ const data = await request(`/tickets/${id}/messages`, {
144
+ method: "POST",
145
+ body: { content: opts.message },
146
+ });
147
+ s?.stop();
148
+ if (json) {
149
+ jsonOutput(data);
150
+ return;
151
+ }
152
+ success("Reply sent.");
153
+ }
154
+ catch (err) {
155
+ if (json)
156
+ jsonOutput({ error: err.message });
157
+ else
158
+ error(err.message);
159
+ process.exit(1);
160
+ }
161
+ });
162
+ }
163
+ //# sourceMappingURL=feedback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/commands/feedback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare function registerSkillsCommand(program: Command): void;
@@ -0,0 +1,85 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import chalk from "chalk";
4
+ import { jsonOutput, error } from "../lib/output.js";
5
+ function getSkillsDir() {
6
+ // skills/ is at package root, dist/commands/ is two levels deep from there
7
+ const dir = path.resolve(import.meta.dirname, "../../skills");
8
+ if (!fs.existsSync(dir)) {
9
+ throw new Error("Skills directory not found. The package may be incomplete — try reinstalling @leaperone/cli.");
10
+ }
11
+ return dir;
12
+ }
13
+ export function registerSkillsCommand(program) {
14
+ const skills = program
15
+ .command("skills")
16
+ .description("Install agent skills for AI coding assistants");
17
+ skills
18
+ .command("path")
19
+ .description("Print the path to bundled skills directory")
20
+ .action(() => {
21
+ const json = program.opts().json;
22
+ try {
23
+ const dir = getSkillsDir();
24
+ if (json) {
25
+ jsonOutput({ path: dir });
26
+ }
27
+ else {
28
+ console.log(dir);
29
+ }
30
+ }
31
+ catch (err) {
32
+ if (json)
33
+ jsonOutput({ error: err.message });
34
+ else
35
+ error(err.message);
36
+ process.exit(1);
37
+ }
38
+ });
39
+ skills
40
+ .command("install")
41
+ .description("Show how to install LEAPERone skills for your AI agent")
42
+ .action(() => {
43
+ const json = program.opts().json;
44
+ try {
45
+ const dir = getSkillsDir();
46
+ if (json) {
47
+ jsonOutput({
48
+ skillsDir: dir,
49
+ methods: [
50
+ { name: "skills-npm", command: "npx skills-npm" },
51
+ { name: "skills-cli", command: `npx skills add ${dir}` },
52
+ { name: "manual", command: `cp -r ${dir}/leaperone-cli ~/.claude/skills/` },
53
+ ],
54
+ });
55
+ return;
56
+ }
57
+ console.log(`${chalk.bold("LEAPERone Agent Skills")}\n`);
58
+ console.log(`Skills are bundled at: ${chalk.cyan(dir)}\n`);
59
+ console.log(`${chalk.bold("Install methods:")}\n`);
60
+ console.log(` ${chalk.yellow("1.")} Auto-discover from node_modules (recommended):`);
61
+ console.log(` ${chalk.dim("$")} ${chalk.green("npx skills-npm")}\n`);
62
+ console.log(` ${chalk.yellow("2.")} Install via skills CLI:`);
63
+ console.log(` ${chalk.dim("$")} ${chalk.green(`npx skills add ${dir}`)}\n`);
64
+ console.log(` ${chalk.yellow("3.")} Manual copy (Claude Code):`);
65
+ console.log(` ${chalk.dim("$")} ${chalk.green(`cp -r ${dir}/leaperone-cli ~/.claude/skills/`)}\n`);
66
+ console.log(`${chalk.dim("Supported agents: Claude Code, Cursor, Codex, Windsurf, and 40+ more.")}`);
67
+ console.log(`${chalk.dim("Learn more: https://leaper.one/docs/advanced/cli#agent-skills")}`);
68
+ }
69
+ catch (err) {
70
+ if (json)
71
+ jsonOutput({ error: err.message });
72
+ else
73
+ error(err.message);
74
+ process.exit(1);
75
+ }
76
+ });
77
+ // Default: show install guide
78
+ skills.action(() => {
79
+ const install = skills.commands.find((c) => c.name() === "install");
80
+ if (install) {
81
+ install.parse([], { from: "user" });
82
+ }
83
+ });
84
+ }
85
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"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"}
@@ -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
@@ -6,11 +6,39 @@ import { registerCreditCommand } from "./commands/credit.js";
6
6
  import { registerDocsCommand } from "./commands/docs.js";
7
7
  import { registerEndpointsCommand } from "./commands/endpoints.js";
8
8
  import { registerConfigCommand } from "./commands/config.js";
9
+ import { registerFeedbackCommand } from "./commands/feedback.js";
10
+ import { registerSkillsCommand } from "./commands/skills.js";
11
+ import { getGlobalUpgradeCommand, getLatestNpxCommand, isNpxExecution, registerUpgradeCommand, } from "./commands/upgrade.js";
12
+ import { stopSpinner } from "./lib/spinner.js";
13
+ import { runCleanups } from "./lib/cleanup.js";
9
14
  const require = createRequire(import.meta.url);
10
15
  const pkg = require("../package.json");
16
+ // Graceful shutdown on Ctrl+C / SIGTERM
17
+ function handleExit(signal) {
18
+ stopSpinner();
19
+ runCleanups();
20
+ if (signal === "SIGINT") {
21
+ console.log("\nCancelled.");
22
+ process.exit(130);
23
+ }
24
+ process.exit(143);
25
+ }
26
+ process.on("SIGINT", () => handleExit("SIGINT"));
27
+ process.on("SIGTERM", () => handleExit("SIGTERM"));
11
28
  // Check for updates (async, non-blocking)
12
29
  import updateNotifier from "update-notifier";
13
- 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
+ }
14
42
  const program = new Command();
15
43
  program
16
44
  .name("leaperone")
@@ -19,12 +47,22 @@ program
19
47
  .option("--json", "Output in JSON format (useful for agents and scripts)")
20
48
  .configureHelp({
21
49
  sortSubcommands: true,
22
- });
50
+ })
51
+ .addHelpText("after", `
52
+ Examples:
53
+ $ leaperone auth login
54
+ $ leaperone credit balance
55
+ $ leaperone upgrade
56
+ $ lpr credit balance
57
+ `);
23
58
  registerAuthCommand(program);
24
59
  registerApiKeyCommand(program);
25
60
  registerCreditCommand(program);
26
61
  registerDocsCommand(program);
27
62
  registerEndpointsCommand(program);
28
63
  registerConfigCommand(program);
64
+ registerFeedbackCommand(program);
65
+ registerSkillsCommand(program);
66
+ registerUpgradeCommand(program);
29
67
  program.parse();
30
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;AAE7D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAsC,CAAC;AAE5E,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;AAE/B,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ type CleanupFn = () => void;
2
+ export declare function onCleanup(fn: CleanupFn): void;
3
+ export declare function removeCleanup(fn: CleanupFn): void;
4
+ export declare function runCleanups(): void;
5
+ export {};
@@ -0,0 +1,19 @@
1
+ const cleanups = [];
2
+ export function onCleanup(fn) {
3
+ cleanups.push(fn);
4
+ }
5
+ export function removeCleanup(fn) {
6
+ const i = cleanups.indexOf(fn);
7
+ if (i !== -1)
8
+ cleanups.splice(i, 1);
9
+ }
10
+ export function runCleanups() {
11
+ for (const fn of cleanups) {
12
+ try {
13
+ fn();
14
+ }
15
+ catch { }
16
+ }
17
+ cleanups.length = 0;
18
+ }
19
+ //# sourceMappingURL=cleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/lib/cleanup.ts"],"names":[],"mappings":"AAIA,MAAM,QAAQ,GAAgB,EAAE,CAAC;AAEjC,MAAM,UAAU,SAAS,CAAC,EAAa;IACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAa;IACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,KAAK,CAAC,CAAC;QAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,EAAE,EAAE,CAAC;QACP,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AACtB,CAAC"}
package/dist/types.d.ts CHANGED
@@ -40,6 +40,36 @@ export interface UserInfo {
40
40
  role: string;
41
41
  createdAt: string;
42
42
  }
43
+ export interface TicketSummary {
44
+ id: string;
45
+ subject: string;
46
+ status: string;
47
+ category: string;
48
+ source: string;
49
+ hasUnreadReply: boolean;
50
+ lastMessageContent: string | null;
51
+ lastMessageAt: string | null;
52
+ createdAt: string;
53
+ updatedAt: string;
54
+ }
55
+ export interface TicketMessage {
56
+ id: string;
57
+ role: string;
58
+ content: string;
59
+ createdAt: string;
60
+ }
61
+ export interface TicketDetail {
62
+ id: string;
63
+ subject: string;
64
+ status: string;
65
+ category: string;
66
+ source: string;
67
+ metadata: Record<string, unknown> | null;
68
+ createdAt: string;
69
+ updatedAt: string;
70
+ resolvedAt: string | null;
71
+ messages: TicketMessage[];
72
+ }
43
73
  export interface ApiResponse<T> {
44
74
  success: boolean;
45
75
  data?: T;
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@leaperone/cli",
3
- "version": "0.1.6",
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",
@@ -12,7 +13,8 @@
12
13
  },
13
14
  "files": [
14
15
  "dist",
15
- "bin"
16
+ "bin",
17
+ "skills"
16
18
  ],
17
19
  "repository": {
18
20
  "type": "git",
@@ -25,6 +27,9 @@
25
27
  "api",
26
28
  "ai"
27
29
  ],
30
+ "skills": {
31
+ "directory": "skills"
32
+ },
28
33
  "license": "MIT",
29
34
  "dependencies": {
30
35
  "chalk": "^5.6.2",
@@ -0,0 +1,166 @@
1
+ ---
2
+ name: leaperone-cli
3
+ description: Use when working with LEAPERone API, managing API keys, checking credits, or integrating LEAPERone services. Provides CLI commands, authentication flows, and API usage patterns.
4
+ ---
5
+
6
+ # LEAPERone CLI
7
+
8
+ LEAPERone is an OpenAI-compatible AI API gateway. The CLI (`@leaperone/cli`) manages authentication, API keys, credits, and documentation.
9
+
10
+ ## Decision Guide
11
+
12
+ - User needs to authenticate → run `leaperone auth login`
13
+ - User is on a headless server / SSH / container → run `leaperone auth login --device`
14
+ - User asks about credits or balance → run `leaperone credit balance`
15
+ - User needs an API key → run `leaperone apikey create -n "<descriptive-name>"`
16
+ - User wants to see available models or pricing → run `leaperone endpoints`
17
+ - User wants to make API calls → use curl or OpenAI SDK with their key (see examples below)
18
+ - User wants to report a bug → run `leaperone feedback create -s "<subject>" -m "<details>" -c bug`
19
+
20
+ ## Prerequisite Check
21
+
22
+ Before running any command that requires auth, first verify:
23
+
24
+ ```bash
25
+ leaperone auth status
26
+ ```
27
+
28
+ If the output says "Not authenticated", the user must log in first:
29
+
30
+ ```bash
31
+ leaperone auth login
32
+ ```
33
+
34
+ Alternatively, set an API key as environment variable (skips login):
35
+
36
+ ```bash
37
+ export LEAPERONE_API_KEY=sk-...
38
+ ```
39
+
40
+ ## Commands
41
+
42
+ ### Authentication
43
+
44
+ ```bash
45
+ leaperone auth login # browser-based login
46
+ leaperone auth login --device # device flow (headless environments)
47
+ leaperone auth status # check current auth
48
+ leaperone auth logout # remove stored credentials
49
+ ```
50
+
51
+ ### API Key Management
52
+
53
+ ```bash
54
+ leaperone apikey list # list all keys
55
+ leaperone apikey create -n "<name>" # create a key
56
+ leaperone apikey revoke -n "<name>" # revoke a key
57
+ ```
58
+
59
+ IMPORTANT: The created key is shown only once. Always tell the user to save it immediately.
60
+
61
+ ### Credits & Usage
62
+
63
+ ```bash
64
+ leaperone credit balance # show balance (paid + gift + total)
65
+ leaperone credit usage # recent 20 usage records
66
+ leaperone credit usage -l 50 # show more records
67
+ ```
68
+
69
+ If balance is below $0.10, API calls will be rejected.
70
+
71
+ ### Endpoints & Documentation
72
+
73
+ ```bash
74
+ leaperone endpoints # list endpoints, models, status, pricing
75
+ leaperone docs list # list doc pages
76
+ leaperone docs read <slug> # read a doc page (e.g. quickstart, guides/chat-completions)
77
+ ```
78
+
79
+ ### Feedback & Support
80
+
81
+ ```bash
82
+ leaperone feedback create -s "<subject>" -m "<message>" -c <category>
83
+ # categories: bug, suggestion, account, other
84
+
85
+ leaperone feedback list # list tickets
86
+ leaperone feedback view <id> # view a ticket
87
+ leaperone feedback reply <id> -m "<message>" # reply
88
+ ```
89
+
90
+ ### Configuration
91
+
92
+ ```bash
93
+ leaperone config show # show current config
94
+ leaperone config set baseUrl <url> # set custom API base URL
95
+ ```
96
+
97
+ Config file location: `~/.leaperone/config.json`
98
+
99
+ ## JSON Output
100
+
101
+ All commands support `--json` for structured output. Use this when you need to parse the result:
102
+
103
+ ```bash
104
+ leaperone credit balance --json
105
+ ```
106
+
107
+ Returns:
108
+ ```json
109
+ {"paid": 10.0, "gift": 5.0, "total": 15.0, "giftExpiresAt": "2026-04-01T00:00:00.000Z"}
110
+ ```
111
+
112
+ ```bash
113
+ leaperone apikey list --json
114
+ ```
115
+
116
+ Returns an array of `{name, keyPreview, createdAt, lastUsedAt, revokedAt}`.
117
+
118
+ ## Making API Requests
119
+
120
+ LEAPERone is OpenAI-compatible. The base URL is `https://api.leaper.one/v1`. Use the user's actual API key (from `leaperone apikey create` or `leaperone apikey list`).
121
+
122
+ ```bash
123
+ curl -X POST https://api.leaper.one/v1/chat/completions \
124
+ -H "Authorization: Bearer $LEAPERONE_API_KEY" \
125
+ -H "Content-Type: application/json" \
126
+ -d '{"model": "auto", "messages": [{"role": "user", "content": "Hello!"}]}'
127
+ ```
128
+
129
+ ```python
130
+ from openai import OpenAI
131
+ client = OpenAI(base_url="https://api.leaper.one/v1", api_key="sk-...")
132
+ response = client.chat.completions.create(model="auto", messages=[{"role": "user", "content": "Hello!"}])
133
+ ```
134
+
135
+ ```typescript
136
+ import OpenAI from "openai";
137
+ const client = new OpenAI({ baseURL: "https://api.leaper.one/v1", apiKey: "sk-..." });
138
+ const response = await client.chat.completions.create({
139
+ model: "auto",
140
+ messages: [{ role: "user", content: "Hello!" }],
141
+ });
142
+ ```
143
+
144
+ ## Available Endpoints
145
+
146
+ | Endpoint | Description |
147
+ |----------|-------------|
148
+ | `/v1/chat/completions` | Chat completions (OpenAI-compatible) |
149
+ | `/v1/responses` | Responses API |
150
+ | `/v1/audio/transcriptions` | Audio transcription (Whisper) |
151
+ | `/v1/images/generations` | Image generation |
152
+ | `/v1/embeddings` | Text embeddings |
153
+
154
+ ## Error Recovery
155
+
156
+ - **401 Unauthorized** → API key is invalid or expired. Run `leaperone auth status` to check, then `leaperone auth login` or create a new key.
157
+ - **402 / "Insufficient credits"** → Balance below $0.10. User needs to top up at https://leaper.one/dashboard/settings/credit-and-usage.
158
+ - **429 Too Many Requests** → Rate limit hit. Wait and retry, or check tier limits with `leaperone endpoints`.
159
+ - **Model unavailable** → Run `leaperone endpoints` to check which models are currently operational.
160
+ - **Network error / timeout** → Verify `leaperone config show` has the correct baseUrl. Default: `https://api.leaper.one`.
161
+
162
+ ## Tips
163
+
164
+ - Use `model: "auto"` for automatic model routing
165
+ - Streaming is supported via `stream: true`
166
+ - Run `leaperone endpoints` for real-time model availability and pricing