@leaperone/cli 0.1.3 → 0.1.5
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,105 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { request } from "../lib/api.js";
|
|
3
|
+
import { jsonOutput, table, error } from "../lib/output.js";
|
|
4
|
+
import { spin } from "../lib/spinner.js";
|
|
5
|
+
function formatPricing(endpoint) {
|
|
6
|
+
if (endpoint.pricing.length === 0)
|
|
7
|
+
return "-";
|
|
8
|
+
const first = endpoint.pricing[0];
|
|
9
|
+
switch (first.type) {
|
|
10
|
+
case "token": {
|
|
11
|
+
const prices = endpoint.pricing
|
|
12
|
+
.map((p) => `$${p.inputPer1M}/$${p.outputPer1M}`)
|
|
13
|
+
.join(", ");
|
|
14
|
+
return `${prices} /1M tokens`;
|
|
15
|
+
}
|
|
16
|
+
case "duration":
|
|
17
|
+
return `$${first.perMinute} /min`;
|
|
18
|
+
case "fixed":
|
|
19
|
+
return `$${first.perUnit} /${first.unit}`;
|
|
20
|
+
default:
|
|
21
|
+
return "-";
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function formatStatus(status) {
|
|
25
|
+
switch (status) {
|
|
26
|
+
case "operational":
|
|
27
|
+
return chalk.green("●") + " operational";
|
|
28
|
+
case "degraded":
|
|
29
|
+
return chalk.yellow("●") + " degraded";
|
|
30
|
+
case "unavailable":
|
|
31
|
+
return chalk.red("●") + " unavailable";
|
|
32
|
+
default:
|
|
33
|
+
return chalk.dim("-");
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function renderEndpoints(endpoints, json) {
|
|
37
|
+
if (json) {
|
|
38
|
+
jsonOutput(endpoints);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
table(["Method", "Path", "Name", "Status", "Models", "Pricing"], endpoints.map((ep) => [
|
|
42
|
+
ep.method,
|
|
43
|
+
ep.path,
|
|
44
|
+
ep.name,
|
|
45
|
+
formatStatus(ep.status),
|
|
46
|
+
ep.models
|
|
47
|
+
.map((m) => {
|
|
48
|
+
if (m.status === "unavailable")
|
|
49
|
+
return chalk.strikethrough(chalk.dim(m.model));
|
|
50
|
+
return m.model;
|
|
51
|
+
})
|
|
52
|
+
.join(", ") || "-",
|
|
53
|
+
formatPricing(ep),
|
|
54
|
+
]));
|
|
55
|
+
}
|
|
56
|
+
export function registerEndpointsCommand(program) {
|
|
57
|
+
const endpoints = program
|
|
58
|
+
.command("endpoints")
|
|
59
|
+
.alias("ep")
|
|
60
|
+
.description("List available API endpoints");
|
|
61
|
+
endpoints
|
|
62
|
+
.command("list")
|
|
63
|
+
.alias("ls")
|
|
64
|
+
.description("List all available API endpoints with pricing and status")
|
|
65
|
+
.action(async () => {
|
|
66
|
+
const json = program.opts().json;
|
|
67
|
+
try {
|
|
68
|
+
const s = json ? null : spin("Fetching endpoints...");
|
|
69
|
+
const data = await request("/endpoints");
|
|
70
|
+
s?.stop();
|
|
71
|
+
renderEndpoints(data.endpoints, json);
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
if (json)
|
|
75
|
+
jsonOutput({ error: err.message });
|
|
76
|
+
else
|
|
77
|
+
error(err.message);
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
// Default action: show list when running `leaperone endpoints` with no subcommand
|
|
82
|
+
endpoints.action(async () => {
|
|
83
|
+
const json = program.opts().json;
|
|
84
|
+
try {
|
|
85
|
+
const s = json ? null : spin("Fetching endpoints...");
|
|
86
|
+
const data = await request("/endpoints");
|
|
87
|
+
s?.stop();
|
|
88
|
+
if (!json)
|
|
89
|
+
console.log("Available API endpoints:\n");
|
|
90
|
+
renderEndpoints(data.endpoints, json);
|
|
91
|
+
if (!json) {
|
|
92
|
+
console.log("\nBase URL: https://api.leaper.one");
|
|
93
|
+
console.log("Full docs: leaperone docs list");
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
if (json)
|
|
98
|
+
jsonOutput({ error: err.message });
|
|
99
|
+
else
|
|
100
|
+
error(err.message);
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=endpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../../src/commands/endpoints.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
1
2
|
import { Command } from "commander";
|
|
2
3
|
import { registerAuthCommand } from "./commands/auth.js";
|
|
3
4
|
import { registerApiKeyCommand } from "./commands/apikey.js";
|
|
4
5
|
import { registerCreditCommand } from "./commands/credit.js";
|
|
5
6
|
import { registerDocsCommand } from "./commands/docs.js";
|
|
7
|
+
import { registerEndpointsCommand } from "./commands/endpoints.js";
|
|
6
8
|
import { registerConfigCommand } from "./commands/config.js";
|
|
9
|
+
const require = createRequire(import.meta.url);
|
|
10
|
+
const pkg = require("../package.json");
|
|
7
11
|
// Check for updates (async, non-blocking)
|
|
8
12
|
import updateNotifier from "update-notifier";
|
|
9
|
-
const pkg = { name: "@leaperone/cli", version: "0.1.3" };
|
|
10
13
|
updateNotifier({ pkg }).notify({ isGlobal: true });
|
|
11
14
|
const program = new Command();
|
|
12
15
|
program
|
|
13
16
|
.name("leaperone")
|
|
14
17
|
.description("LEAPERone CLI - Manage API keys, credits, and access documentation")
|
|
15
|
-
.version(
|
|
18
|
+
.version(pkg.version)
|
|
16
19
|
.option("--json", "Output in JSON format (useful for agents and scripts)")
|
|
17
20
|
.configureHelp({
|
|
18
21
|
sortSubcommands: true,
|
|
@@ -21,6 +24,7 @@ registerAuthCommand(program);
|
|
|
21
24
|
registerApiKeyCommand(program);
|
|
22
25
|
registerCreditCommand(program);
|
|
23
26
|
registerDocsCommand(program);
|
|
27
|
+
registerEndpointsCommand(program);
|
|
24
28
|
registerConfigCommand(program);
|
|
25
29
|
program.parse();
|
|
26
30
|
//# 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,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,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,
|
|
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"}
|