@agentpowers/cli 0.5.1 → 0.6.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.
- package/dist/banner.d.ts +2 -0
- package/dist/banner.js +33 -0
- package/dist/banner.js.map +1 -0
- package/dist/cli.js +14 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/detail.js +66 -33
- package/dist/commands/detail.js.map +1 -1
- package/dist/commands/install.js +26 -27
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/login.js +10 -7
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.js +2 -1
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/profile.js +25 -16
- package/dist/commands/profile.js.map +1 -1
- package/dist/commands/prune.d.ts +4 -0
- package/dist/commands/prune.js +60 -0
- package/dist/commands/prune.js.map +1 -0
- package/dist/commands/publish.js +28 -19
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/republish.js +26 -18
- package/dist/commands/republish.js.map +1 -1
- package/dist/commands/scan.js +38 -28
- package/dist/commands/scan.js.map +1 -1
- package/dist/commands/search.js +5 -4
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/setup.js +14 -12
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/status.js +31 -33
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/uninstall.js +8 -4
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/unpublish.js +16 -11
- package/dist/commands/unpublish.js.map +1 -1
- package/dist/commands/update.js +89 -49
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/verify.js +5 -5
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/whoami.js +11 -6
- package/dist/commands/whoami.js.map +1 -1
- package/dist/formatters.d.ts +26 -1
- package/dist/formatters.js +207 -37
- package/dist/formatters.js.map +1 -1
- package/package.json +2 -1
package/dist/banner.d.ts
ADDED
package/dist/banner.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** AgentPowers CLI banner — brand mark and version display. */
|
|
2
|
+
import { teal } from "./formatters.js";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
import { readFileSync } from "node:fs";
|
|
5
|
+
import { join, dirname } from "node:path";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
7
|
+
function getVersion() {
|
|
8
|
+
try {
|
|
9
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
const pkg = JSON.parse(readFileSync(join(__dirname, "..", "package.json"), "utf-8"));
|
|
11
|
+
return pkg.version || "0.1.0";
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return "0.1.0";
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function printBanner() {
|
|
18
|
+
// Only show banner on interactive terminals, not when piped
|
|
19
|
+
if (!process.stdout.isTTY)
|
|
20
|
+
return;
|
|
21
|
+
const ver = getVersion();
|
|
22
|
+
console.log();
|
|
23
|
+
console.log(` ${teal(" ████")}`);
|
|
24
|
+
console.log(` ${teal(" ████")} ${chalk.bold("AgentPowers")} ${chalk.dim(`v${ver}`)}`);
|
|
25
|
+
console.log(` ${teal(" ████")} ${chalk.dim("Premium Claude skills & agents")}`);
|
|
26
|
+
console.log(` ${teal("█")} ${teal("████")} ${chalk.dim("agentpowers.ai")}`);
|
|
27
|
+
console.log(` ${teal("███")} ${teal("████")}`);
|
|
28
|
+
console.log(` ${teal(" ██████")}`);
|
|
29
|
+
console.log(` ${teal(" ████")}`);
|
|
30
|
+
console.log(` ${teal(" ██")}`);
|
|
31
|
+
console.log();
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=banner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAE/D,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,SAAS,UAAU;IACjB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAC7D,CAAC;QACF,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,4DAA4D;IAC5D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO;IAElC,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IAEzB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CACT,KAAK,IAAI,CAAC,WAAW,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CACrF,CAAC;IACF,OAAO,CAAC,GAAG,CACT,KAAK,IAAI,CAAC,YAAY,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,EAAE,CAC9E,CAAC;IACF,OAAO,CAAC,GAAG,CACT,KAAK,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CACxE,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -4,6 +4,7 @@ import { readFileSync } from "node:fs";
|
|
|
4
4
|
import { join, dirname } from "node:path";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
6
|
import { Command } from "commander";
|
|
7
|
+
import { printBanner } from "./banner.js";
|
|
7
8
|
import { searchCommand } from "./commands/search.js";
|
|
8
9
|
import { installCommand } from "./commands/install.js";
|
|
9
10
|
import { loginCommand } from "./commands/login.js";
|
|
@@ -20,6 +21,7 @@ import { scanCommand } from "./commands/scan.js";
|
|
|
20
21
|
import { publishCommand } from "./commands/publish.js";
|
|
21
22
|
import { unpublishCommand } from "./commands/unpublish.js";
|
|
22
23
|
import { republishCommand } from "./commands/republish.js";
|
|
24
|
+
import { pruneCommand } from "./commands/prune.js";
|
|
23
25
|
function getVersion() {
|
|
24
26
|
try {
|
|
25
27
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
@@ -34,7 +36,11 @@ const program = new Command();
|
|
|
34
36
|
program
|
|
35
37
|
.name("agentpowers")
|
|
36
38
|
.description("Search, install, and manage Claude Code skills from the AgentPowers marketplace.")
|
|
37
|
-
.version(getVersion())
|
|
39
|
+
.version(getVersion())
|
|
40
|
+
.hook("preAction", () => {
|
|
41
|
+
// Show banner before any command runs
|
|
42
|
+
printBanner();
|
|
43
|
+
});
|
|
38
44
|
program
|
|
39
45
|
.command("search <query>")
|
|
40
46
|
.description("Search for skills in the marketplace")
|
|
@@ -145,6 +151,13 @@ program
|
|
|
145
151
|
.action(async (slug, options) => {
|
|
146
152
|
await unpublishCommand(slug, options);
|
|
147
153
|
});
|
|
154
|
+
program
|
|
155
|
+
.command("prune")
|
|
156
|
+
.description("Remove stale pins for skills no longer installed on disk")
|
|
157
|
+
.option("-n, --dry-run", "Show what would be removed without actually removing")
|
|
158
|
+
.action(async (options) => {
|
|
159
|
+
await pruneCommand(options);
|
|
160
|
+
});
|
|
148
161
|
program
|
|
149
162
|
.command("republish <slug>")
|
|
150
163
|
.description("Restore an archived skill to marketplace discovery")
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,wEAAwE;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/detail.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/** Detail command — show full skill metadata. */
|
|
2
|
+
import chalk from "chalk";
|
|
2
3
|
import { apiGet, APIError, formatAPIError, NetworkError } from "../api-client.js";
|
|
3
|
-
import { formatPrice, formatSecurityStatus } from "../formatters.js";
|
|
4
|
+
import { formatPrice, formatSecurityStatus, formatSeverity, formatError, renderPanel, } from "../formatters.js";
|
|
4
5
|
import { validateSlug } from "../installer.js";
|
|
5
6
|
export async function detailCommand(slug, options = {}) {
|
|
6
7
|
if (!validateSlug(slug)) {
|
|
7
|
-
console.error(`
|
|
8
|
+
console.error(formatError(`Invalid slug "${slug}". Slugs must be lowercase alphanumeric with hyphens only.`));
|
|
8
9
|
process.exitCode = 1;
|
|
9
10
|
return;
|
|
10
11
|
}
|
|
@@ -13,65 +14,97 @@ export async function detailCommand(slug, options = {}) {
|
|
|
13
14
|
if (options.source)
|
|
14
15
|
params.source = options.source;
|
|
15
16
|
const detail = await apiGet(`/v1/detail/${encodeURIComponent(slug)}`, params);
|
|
16
|
-
//
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
console.log(` ${"─".repeat(Math.min(title.length, 60))}`);
|
|
21
|
-
console.log("");
|
|
22
|
-
// Metadata
|
|
17
|
+
// Build panel content
|
|
18
|
+
const lines = [];
|
|
19
|
+
const na = "--";
|
|
20
|
+
// Row 1: Author, Version, Category, Type, Source
|
|
23
21
|
const author = detail.author_display_name ||
|
|
24
22
|
detail.author_github ||
|
|
25
23
|
"Unknown";
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
24
|
+
const version = detail.version || na;
|
|
25
|
+
const category = detail.category || na;
|
|
26
|
+
const skillType = detail.type || "skill";
|
|
27
|
+
const src = detail.source || "agentpowers";
|
|
28
|
+
lines.push(`${chalk.bold("Author:")} ${author} ` +
|
|
29
|
+
`${chalk.bold("Version:")} ${version} ` +
|
|
30
|
+
`${chalk.bold("Category:")} ${category} ` +
|
|
31
|
+
`${chalk.bold("Type:")} ${skillType} ` +
|
|
32
|
+
`${chalk.bold("Source:")} ${src}`);
|
|
33
|
+
// Row 2: Security, Price
|
|
34
|
+
const security = detail.security_status || detail.ap_security_status;
|
|
35
|
+
lines.push(`${chalk.bold("Security:")} ${security ? formatSecurityStatus(security) : "not scanned"} ` +
|
|
36
|
+
`${chalk.bold("Price:")} ${formatPrice(detail.price_cents || 0)}`);
|
|
37
|
+
// Expanded security details
|
|
38
|
+
const secLower = (security || "").toLowerCase();
|
|
39
|
+
if (secLower === "warn" || secLower === "block") {
|
|
40
|
+
const score = detail.security_score ?? detail.ap_security_score;
|
|
41
|
+
if (score != null) {
|
|
42
|
+
const color = secLower === "warn" ? chalk.yellow : chalk.red;
|
|
43
|
+
lines.push(` ${color(`Security Score: ${score}/10`)}`);
|
|
44
|
+
}
|
|
45
|
+
const findings = (detail.security_findings ?? []);
|
|
46
|
+
if (findings.length > 0) {
|
|
47
|
+
const color = secLower === "warn" ? chalk.yellow : chalk.red;
|
|
48
|
+
lines.push(` ${color(`Findings (${findings.length}):`)}`);
|
|
49
|
+
for (const finding of findings) {
|
|
50
|
+
const sev = finding.severity || "INFO";
|
|
51
|
+
const detailText = finding.detail || finding.description || "No detail";
|
|
52
|
+
lines.push(` ${formatSeverity(sev)}: ${detailText}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else if (secLower === "warn") {
|
|
56
|
+
lines.push(chalk.yellow(" This skill has security warnings. Use --scan for full details."));
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
lines.push(chalk.red(" This skill is blocked due to security issues. Use --scan for full details."));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
35
62
|
// Description
|
|
36
63
|
const desc = detail.long_description || detail.description;
|
|
37
64
|
if (desc) {
|
|
38
|
-
|
|
39
|
-
|
|
65
|
+
lines.push("");
|
|
66
|
+
lines.push(desc);
|
|
67
|
+
}
|
|
68
|
+
// Rating
|
|
69
|
+
if (detail.rating_average != null && detail.rating_count > 0) {
|
|
70
|
+
const full = Math.max(0, Math.min(5, Math.round(detail.rating_average)));
|
|
71
|
+
const stars = "\u2605".repeat(full) + "\u2606".repeat(5 - full);
|
|
72
|
+
lines.push("");
|
|
73
|
+
lines.push(`${chalk.bold("Rating:")} ${stars} ${detail.rating_average}/5 (${detail.rating_count} review${detail.rating_count === 1 ? "" : "s"})`);
|
|
40
74
|
}
|
|
41
75
|
// Stats
|
|
42
76
|
const stats = [];
|
|
43
77
|
if (detail.download_count != null)
|
|
44
78
|
stats.push(`Downloads: ${detail.download_count}`);
|
|
45
|
-
if (detail.source_stars != null)
|
|
46
|
-
stats.push(`Stars: ${detail.source_stars}`);
|
|
47
79
|
if (detail.source_installs != null)
|
|
48
80
|
stats.push(`Installs: ${detail.source_installs}`);
|
|
81
|
+
if (detail.source_stars != null)
|
|
82
|
+
stats.push(`Stars: ${detail.source_stars}`);
|
|
49
83
|
if (stats.length > 0) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
// Rating
|
|
53
|
-
if (detail.rating_average != null && detail.rating_count > 0) {
|
|
54
|
-
console.log(` Rating: ${detail.rating_average.toFixed(1)}/5 (${detail.rating_count} review${detail.rating_count === 1 ? "" : "s"})`);
|
|
84
|
+
lines.push("");
|
|
85
|
+
lines.push(`${chalk.bold("Stats:")} ${stats.join(" | ")}`);
|
|
55
86
|
}
|
|
56
87
|
// URL
|
|
57
88
|
const url = detail.source_url || `https://agentpowers.ai/skills/${slug}`;
|
|
58
|
-
|
|
59
|
-
|
|
89
|
+
lines.push(`${chalk.bold("URL:")} ${url}`);
|
|
90
|
+
// Render as panel
|
|
91
|
+
const title = detail.title || slug;
|
|
92
|
+
console.log(renderPanel(lines.join("\n"), chalk.bold(title), "cyan"));
|
|
60
93
|
// Install tip
|
|
61
|
-
console.log(` Install: npx @agentpowers/cli install ${slug}`);
|
|
94
|
+
console.log(chalk.dim(` Install: npx @agentpowers/cli install ${slug}`));
|
|
62
95
|
console.log("");
|
|
63
96
|
}
|
|
64
97
|
catch (err) {
|
|
65
98
|
if (err instanceof APIError && err.statusCode === 404) {
|
|
66
|
-
console.error(`
|
|
99
|
+
console.error(formatError(`Skill '${slug}' not found.`));
|
|
67
100
|
process.exitCode = 1;
|
|
68
101
|
}
|
|
69
102
|
else if (err instanceof APIError) {
|
|
70
|
-
console.error(
|
|
103
|
+
console.error(formatError(formatAPIError(err)));
|
|
71
104
|
process.exitCode = 1;
|
|
72
105
|
}
|
|
73
106
|
else if (err instanceof NetworkError) {
|
|
74
|
-
console.error(
|
|
107
|
+
console.error(formatError(err.message));
|
|
75
108
|
process.exitCode = 1;
|
|
76
109
|
}
|
|
77
110
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detail.js","sourceRoot":"","sources":["../../src/commands/detail.ts"],"names":[],"mappings":"AAAA,iDAAiD;AAEjD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,
|
|
1
|
+
{"version":3,"file":"detail.js","sourceRoot":"","sources":["../../src/commands/detail.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/install.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/** Install command — download and install a skill from the marketplace. */
|
|
2
2
|
import { hostname } from "node:os";
|
|
3
|
+
import chalk from "chalk";
|
|
3
4
|
import { loadAuthToken } from "../auth.js";
|
|
4
5
|
import { apiGet, apiPost, recordInstallation, APIError, formatAPIError, NetworkError, } from "../api-client.js";
|
|
5
6
|
import { downloadAndExtract, validateSlug } from "../installer.js";
|
|
7
|
+
import { formatError, formatSuccess, writeStatus, clearStatus } from "../formatters.js";
|
|
6
8
|
import { TOOL_CONFIG_DIRS } from "@agentpowers/core";
|
|
7
9
|
/** Coerce a detail type string to PackageType, defaulting to "skill". */
|
|
8
10
|
function toPackageType(raw) {
|
|
@@ -13,7 +15,7 @@ function toPackageType(raw) {
|
|
|
13
15
|
export async function installCommand(slug, options) {
|
|
14
16
|
// Validate slug format
|
|
15
17
|
if (!validateSlug(slug)) {
|
|
16
|
-
console.error(`
|
|
18
|
+
console.error(formatError(`Invalid slug "${slug}". Slugs must be lowercase alphanumeric with hyphens only.`));
|
|
17
19
|
process.exitCode = 1;
|
|
18
20
|
return;
|
|
19
21
|
}
|
|
@@ -21,7 +23,7 @@ export async function installCommand(slug, options) {
|
|
|
21
23
|
// Validate target tool
|
|
22
24
|
if (!(targetTool in TOOL_CONFIG_DIRS)) {
|
|
23
25
|
const supported = Object.keys(TOOL_CONFIG_DIRS).sort().join(", ");
|
|
24
|
-
console.error(`
|
|
26
|
+
console.error(formatError(`Unknown tool "${targetTool}". Supported tools: ${supported}`));
|
|
25
27
|
process.exitCode = 1;
|
|
26
28
|
return;
|
|
27
29
|
}
|
|
@@ -31,33 +33,33 @@ export async function installCommand(slug, options) {
|
|
|
31
33
|
// --code: redeem license code before downloading
|
|
32
34
|
if (options?.code) {
|
|
33
35
|
if (!token) {
|
|
34
|
-
console.error("
|
|
36
|
+
console.error(formatError("Authentication required to redeem a license code. Run `npx @agentpowers/cli login` first."));
|
|
35
37
|
process.exitCode = 1;
|
|
36
38
|
return;
|
|
37
39
|
}
|
|
38
|
-
|
|
40
|
+
writeStatus("Redeeming license code...");
|
|
39
41
|
await apiPost("/v1/purchases/redeem", { license_code: options.code }, token);
|
|
40
|
-
|
|
42
|
+
clearStatus();
|
|
43
|
+
console.log(chalk.green("License code redeemed."));
|
|
41
44
|
}
|
|
42
45
|
// --source: install from a specific external source
|
|
43
46
|
if (source) {
|
|
44
|
-
|
|
47
|
+
writeStatus(`Fetching ${slug} from ${source}...`);
|
|
45
48
|
const detail = await apiGet(`/v1/detail/${encodeURIComponent(slug)}`, { source }, token);
|
|
49
|
+
clearStatus();
|
|
46
50
|
const downloadUrl = detail.source_url;
|
|
47
51
|
if (!downloadUrl) {
|
|
48
|
-
console.error(`
|
|
52
|
+
console.error(formatError(`No download URL available for "${slug}" from source "${source}".`));
|
|
49
53
|
process.exitCode = 1;
|
|
50
54
|
return;
|
|
51
55
|
}
|
|
52
56
|
const result = await downloadAndExtract(downloadUrl, slug, toPackageType(detail.type), source, detail.version ?? null, detail.security_status ?? "pass", targetTool);
|
|
53
|
-
console.log(`Installed ${slug} to ${result.installDir}`);
|
|
54
|
-
console.log(`Content hash: ${result.contentHash}`);
|
|
57
|
+
console.log(formatSuccess(`Installed '${slug}' to ${result.installDir}`));
|
|
55
58
|
void recordInstallation(slug, "cli", source, hostname(), token);
|
|
56
|
-
console.log("\nThe skill is now available.");
|
|
57
59
|
return;
|
|
58
60
|
}
|
|
59
61
|
// Default flow: try native AgentPowers first
|
|
60
|
-
|
|
62
|
+
writeStatus(`Downloading ${slug}...`);
|
|
61
63
|
let downloadData = null;
|
|
62
64
|
let nativeError = null;
|
|
63
65
|
try {
|
|
@@ -73,16 +75,15 @@ export async function installCommand(slug, options) {
|
|
|
73
75
|
}
|
|
74
76
|
// Found natively — download and install
|
|
75
77
|
if (downloadData) {
|
|
78
|
+
clearStatus();
|
|
76
79
|
const result = await downloadAndExtract(downloadData.url, slug, "skill", "agentpowers", null, "pass", targetTool);
|
|
77
|
-
console.log(`Installed ${slug} to ${result.installDir}`);
|
|
78
|
-
console.log(`Content hash: ${result.contentHash}`);
|
|
80
|
+
console.log(formatSuccess(`Installed '${slug}' to ${result.installDir}`));
|
|
79
81
|
void recordInstallation(slug, "cli", "agentpowers", hostname(), token);
|
|
80
|
-
console.log("\nThe skill is now available.");
|
|
81
82
|
return;
|
|
82
83
|
}
|
|
83
84
|
// Not found natively — try unified detail endpoint for external sources
|
|
84
85
|
if (nativeError) {
|
|
85
|
-
|
|
86
|
+
writeStatus("Searching other sources...");
|
|
86
87
|
let detail = null;
|
|
87
88
|
try {
|
|
88
89
|
detail = await apiGet(`/v1/detail/${encodeURIComponent(slug)}`, undefined, token);
|
|
@@ -95,47 +96,45 @@ export async function installCommand(slug, options) {
|
|
|
95
96
|
throw err;
|
|
96
97
|
}
|
|
97
98
|
}
|
|
99
|
+
clearStatus();
|
|
98
100
|
if (detail && detail.source && detail.source !== "agentpowers") {
|
|
99
101
|
const detailSource = detail.source;
|
|
100
102
|
const downloadUrl = detail.source_url;
|
|
101
103
|
if (!downloadUrl) {
|
|
102
|
-
console.error(`
|
|
104
|
+
console.error(formatError(`No download URL available for "${slug}" from source "${detailSource}".`));
|
|
103
105
|
process.exitCode = 1;
|
|
104
106
|
return;
|
|
105
107
|
}
|
|
106
|
-
console.log(`Found on ${detailSource}: ${detail.title ?? slug} (v${detail.version ?? "?"})`);
|
|
108
|
+
console.log(`Found on ${chalk.yellow(detailSource)}: ${chalk.cyan(detail.title ?? slug)} (v${detail.version ?? "?"})`);
|
|
107
109
|
const result = await downloadAndExtract(downloadUrl, slug, toPackageType(detail.type), detailSource, detail.version ?? null, detail.security_status ?? "pass", targetTool);
|
|
108
|
-
console.log(`Installed ${slug} to ${result.installDir}`);
|
|
109
|
-
console.log(`Content hash: ${result.contentHash}`);
|
|
110
|
+
console.log(formatSuccess(`Installed '${slug}' to ${result.installDir}`));
|
|
110
111
|
void recordInstallation(slug, "cli", detailSource, hostname(), token);
|
|
111
|
-
console.log("\nThe skill is now available.");
|
|
112
112
|
return;
|
|
113
113
|
}
|
|
114
114
|
// If detail returned a native result, try downloading it
|
|
115
115
|
if (detail && (!detail.source || detail.source === "agentpowers")) {
|
|
116
116
|
const nativeDownload = await apiGet(`/v1/skills/${encodeURIComponent(slug)}/download`, undefined, token);
|
|
117
117
|
const result = await downloadAndExtract(nativeDownload.url, slug, toPackageType(detail.type), "agentpowers", null, detail.security_status ?? "pass", targetTool);
|
|
118
|
-
console.log(`Installed ${slug} to ${result.installDir}`);
|
|
119
|
-
console.log(`Content hash: ${result.contentHash}`);
|
|
118
|
+
console.log(formatSuccess(`Installed '${slug}' to ${result.installDir}`));
|
|
120
119
|
void recordInstallation(slug, "cli", "agentpowers", hostname(), token);
|
|
121
|
-
console.log("\nThe skill is now available.");
|
|
122
120
|
return;
|
|
123
121
|
}
|
|
124
|
-
console.error(`
|
|
122
|
+
console.error(formatError(`Skill "${slug}" not found in any source.`));
|
|
125
123
|
process.exitCode = 1;
|
|
126
124
|
}
|
|
127
125
|
}
|
|
128
126
|
catch (err) {
|
|
127
|
+
clearStatus();
|
|
129
128
|
if (err instanceof APIError) {
|
|
130
|
-
console.error(
|
|
129
|
+
console.error(formatError(formatAPIError(err)));
|
|
131
130
|
process.exitCode = 1;
|
|
132
131
|
}
|
|
133
132
|
else if (err instanceof NetworkError) {
|
|
134
|
-
console.error(
|
|
133
|
+
console.error(formatError(err.message));
|
|
135
134
|
process.exitCode = 1;
|
|
136
135
|
}
|
|
137
136
|
else if (err instanceof Error) {
|
|
138
|
-
console.error(
|
|
137
|
+
console.error(formatError(err.message));
|
|
139
138
|
process.exitCode = 1;
|
|
140
139
|
}
|
|
141
140
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,MAAM,EACN,OAAO,EACP,kBAAkB,EAClB,QAAQ,EACR,cAAc,EACd,YAAY,GACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAcrD,yEAAyE;AACzE,SAAS,aAAa,CAAC,GAAkB;IACvC,IAAI,GAAG,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACpC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,OAAwB;IAExB,uBAAuB;IACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CACX,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/login.js
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
import { execFile } from "node:child_process";
|
|
3
3
|
import { platform } from "node:os";
|
|
4
4
|
import { mkdirSync, chmodSync } from "node:fs";
|
|
5
|
+
import chalk from "chalk";
|
|
5
6
|
import { isAuthenticated, waitForAuthToken } from "../auth.js";
|
|
7
|
+
import { formatError, formatSuccess, writeStatus, clearStatus } from "../formatters.js";
|
|
6
8
|
import { LOGIN_URL, AUTH_DIR } from "../config.js";
|
|
7
9
|
/**
|
|
8
10
|
* Open a URL in the user's default browser.
|
|
@@ -26,15 +28,15 @@ function openBrowser(url) {
|
|
|
26
28
|
}
|
|
27
29
|
execFile(cmd, args, (err) => {
|
|
28
30
|
if (err) {
|
|
29
|
-
console.log(`Could not open browser. Please visit: ${url}`);
|
|
31
|
+
console.log(`Could not open browser. Please visit: ${chalk.bold(url)}`);
|
|
30
32
|
}
|
|
31
33
|
});
|
|
32
34
|
}
|
|
33
35
|
export async function loginCommand() {
|
|
34
36
|
// Check if already authenticated
|
|
35
37
|
if (isAuthenticated()) {
|
|
36
|
-
console.log("You are already logged in.");
|
|
37
|
-
console.log("To log in with a different account, delete ~/.agentpowers/auth.json and try again.");
|
|
38
|
+
console.log(chalk.green("You are already logged in."));
|
|
39
|
+
console.log(chalk.dim("To log in with a different account, delete ~/.agentpowers/auth.json and try again."));
|
|
38
40
|
return;
|
|
39
41
|
}
|
|
40
42
|
// Ensure auth directory exists with restricted permissions
|
|
@@ -46,16 +48,17 @@ export async function loginCommand() {
|
|
|
46
48
|
// chmod may fail on non-POSIX systems — non-blocking
|
|
47
49
|
}
|
|
48
50
|
console.log("Opening browser for login...");
|
|
49
|
-
console.log(`If the browser does not open, visit: ${LOGIN_URL}`);
|
|
51
|
+
console.log(`If the browser does not open, visit: ${chalk.bold(LOGIN_URL)}`);
|
|
50
52
|
console.log("");
|
|
51
53
|
openBrowser(LOGIN_URL);
|
|
52
|
-
|
|
54
|
+
writeStatus("Waiting for authentication...");
|
|
53
55
|
const token = await waitForAuthToken();
|
|
56
|
+
clearStatus();
|
|
54
57
|
if (token) {
|
|
55
|
-
console.log("Login successful! You are now authenticated.");
|
|
58
|
+
console.log(formatSuccess("Login successful! You are now authenticated."));
|
|
56
59
|
}
|
|
57
60
|
else {
|
|
58
|
-
console.error("Login timed out. Please try again.");
|
|
61
|
+
console.error(formatError("Login timed out. Please try again."));
|
|
59
62
|
process.exitCode = 1;
|
|
60
63
|
}
|
|
61
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEnD;;;GAGG;AACH,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtB,IAAI,GAAW,CAAC;IAChB,IAAI,IAAc,CAAC;IACnB,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;QACpB,GAAG,GAAG,MAAM,CAAC;QACb,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;SAAM,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;QAC1B,GAAG,GAAG,KAAK,CAAC;QACZ,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,GAAG,GAAG,UAAU,CAAC;QACjB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;QAC1B,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,GAAG,CAAC,yCAAyC,GAAG,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEnD;;;GAGG;AACH,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtB,IAAI,GAAW,CAAC;IAChB,IAAI,IAAc,CAAC;IACnB,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;QACpB,GAAG,GAAG,MAAM,CAAC;QACb,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;SAAM,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;QAC1B,GAAG,GAAG,KAAK,CAAC;QACZ,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,GAAG,GAAG,UAAU,CAAC;QACjB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;QAC1B,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,GAAG,CAAC,yCAAyC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,iCAAiC;IACjC,IAAI,eAAe,EAAE,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC,CAAC;QAC7G,OAAO;IACT,CAAC;IAED,2DAA2D;IAC3D,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,IAAI,CAAC;QACH,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,qDAAqD;IACvD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,wCAAwC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,WAAW,CAAC,SAAS,CAAC,CAAC;IAEvB,WAAW,CAAC,+BAA+B,CAAC,CAAC;IAE7C,MAAM,KAAK,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACvC,WAAW,EAAE,CAAC;IAEd,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,8CAA8C,CAAC,CAAC,CAAC;IAC7E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,oCAAoC,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
|
package/dist/commands/logout.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { existsSync, unlinkSync } from "node:fs";
|
|
3
3
|
import { loadAuthToken } from "../auth.js";
|
|
4
4
|
import { apiPost } from "../api-client.js";
|
|
5
|
+
import { formatSuccess } from "../formatters.js";
|
|
5
6
|
import { AUTH_FILE } from "@agentpowers/core";
|
|
6
7
|
export async function logoutCommand() {
|
|
7
8
|
// Best-effort server-side revocation
|
|
@@ -18,6 +19,6 @@ export async function logoutCommand() {
|
|
|
18
19
|
if (existsSync(AUTH_FILE)) {
|
|
19
20
|
unlinkSync(AUTH_FILE);
|
|
20
21
|
}
|
|
21
|
-
console.log("Logged out.");
|
|
22
|
+
console.log(formatSuccess("Logged out."));
|
|
22
23
|
}
|
|
23
24
|
//# sourceMappingURL=logout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,iEAAiE;AAEjE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,qCAAqC;IACrC,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,2BAA2B,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,4CAA4C;QAC9C,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,UAAU,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,iEAAiE;AAEjE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,qCAAqC;IACrC,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,2BAA2B,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,4CAA4C;QAC9C,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,UAAU,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;AAC5C,CAAC"}
|