@agentpowers/cli 0.5.2 → 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 +6 -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.js +9 -6
- package/dist/commands/prune.js.map +1 -1
- 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 +50 -36
- 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/commands/scan.js
CHANGED
|
@@ -3,9 +3,10 @@ import { mkdtempSync, rmSync } from "node:fs";
|
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { tmpdir } from "node:os";
|
|
5
5
|
import { execSync } from "node:child_process";
|
|
6
|
+
import chalk from "chalk";
|
|
6
7
|
import { loadAuthToken } from "../auth.js";
|
|
7
8
|
import { apiGet, apiUpload, APIError, formatAPIError, NetworkError, } from "../api-client.js";
|
|
8
|
-
import { formatSecurityStatus } from "../formatters.js";
|
|
9
|
+
import { formatSecurityStatus, formatSeverity, formatError, renderPanel, writeStatus, clearStatus, } from "../formatters.js";
|
|
9
10
|
/** Resolve the source for a slug via the search API. */
|
|
10
11
|
async function resolveSource(slug, token) {
|
|
11
12
|
const data = await apiGet("/v1/search", {
|
|
@@ -50,26 +51,31 @@ function createZipBuffer(dir) {
|
|
|
50
51
|
}
|
|
51
52
|
}
|
|
52
53
|
}
|
|
53
|
-
/** Format and display scan results. */
|
|
54
|
-
function displayResults(result) {
|
|
54
|
+
/** Format and display scan results with colors. */
|
|
55
|
+
function displayResults(slug, source, result) {
|
|
55
56
|
const status = (result.status || "UNKNOWN").toUpperCase();
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
const borderColor = status === "PASS" ? "green" :
|
|
58
|
+
status === "WARN" ? "yellow" :
|
|
59
|
+
"red";
|
|
60
|
+
// Summary panel
|
|
61
|
+
const summaryLines = [
|
|
62
|
+
`${chalk.bold("Skill:")} ${slug} ${chalk.bold("Source:")} ${source}`,
|
|
63
|
+
`${chalk.bold("Status:")} ${formatSecurityStatus(status)}`,
|
|
64
|
+
];
|
|
65
|
+
console.log(renderPanel(summaryLines.join("\n"), "Security Scan", borderColor));
|
|
59
66
|
console.log("");
|
|
60
67
|
// Per-layer breakdown
|
|
61
68
|
if (result.layers && result.layers.length > 0) {
|
|
62
|
-
console.log(" Layers:");
|
|
69
|
+
console.log(chalk.bold(" Layers:"));
|
|
63
70
|
for (const layer of result.layers) {
|
|
64
71
|
const layerStatus = formatSecurityStatus((layer.status || "unknown").toUpperCase());
|
|
65
72
|
console.log(` ${layer.name}: ${layerStatus}`);
|
|
66
73
|
if (layer.findings && layer.findings.length > 0) {
|
|
67
74
|
for (const finding of layer.findings) {
|
|
68
|
-
const severity = (finding.severity || "info").toUpperCase();
|
|
69
75
|
const location = finding.file
|
|
70
76
|
? ` (${finding.file}${finding.line ? `:${finding.line}` : ""})`
|
|
71
77
|
: "";
|
|
72
|
-
console.log(`
|
|
78
|
+
console.log(` ${formatSeverity(finding.severity || "info")} ${finding.message}${location}`);
|
|
73
79
|
}
|
|
74
80
|
}
|
|
75
81
|
}
|
|
@@ -78,13 +84,12 @@ function displayResults(result) {
|
|
|
78
84
|
// Top-level findings
|
|
79
85
|
const findings = result.findings || [];
|
|
80
86
|
if (findings.length > 0) {
|
|
81
|
-
console.log(" Findings:");
|
|
87
|
+
console.log(chalk.bold(" Findings:"));
|
|
82
88
|
for (const finding of findings) {
|
|
83
|
-
const severity = (finding.severity || "info").toUpperCase();
|
|
84
89
|
const location = finding.file
|
|
85
90
|
? ` (${finding.file}${finding.line ? `:${finding.line}` : ""})`
|
|
86
91
|
: "";
|
|
87
|
-
console.log(`
|
|
92
|
+
console.log(` ${formatSeverity(finding.severity || "info")} ${finding.message}${location}`);
|
|
88
93
|
}
|
|
89
94
|
console.log("");
|
|
90
95
|
}
|
|
@@ -95,19 +100,19 @@ function displayResults(result) {
|
|
|
95
100
|
}
|
|
96
101
|
// Actionable guidance
|
|
97
102
|
if (status === "PASS") {
|
|
98
|
-
console.log(" This skill passed all security checks.");
|
|
103
|
+
console.log(chalk.green(" This skill passed all security checks."));
|
|
99
104
|
}
|
|
100
105
|
else if (status === "WARN") {
|
|
101
|
-
console.log(" This skill has warnings. Review the findings above before installing.");
|
|
106
|
+
console.log(chalk.yellow(" This skill has warnings. Review the findings above before installing."));
|
|
102
107
|
}
|
|
103
108
|
else if (status === "BLOCK") {
|
|
104
|
-
console.log(" This skill was blocked by the security scanner. Do NOT install it.");
|
|
109
|
+
console.log(chalk.red(" This skill was blocked by the security scanner. Do NOT install it."));
|
|
105
110
|
}
|
|
106
111
|
console.log("");
|
|
107
112
|
}
|
|
108
113
|
export async function scanCommand(slug, options = {}) {
|
|
109
114
|
if (!slug || slug.trim().length === 0) {
|
|
110
|
-
console.error("
|
|
115
|
+
console.error(formatError("A skill slug is required."));
|
|
111
116
|
process.exitCode = 1;
|
|
112
117
|
return;
|
|
113
118
|
}
|
|
@@ -118,18 +123,19 @@ export async function scanCommand(slug, options = {}) {
|
|
|
118
123
|
try {
|
|
119
124
|
// Step 1: Resolve source if not provided
|
|
120
125
|
if (!source) {
|
|
121
|
-
|
|
126
|
+
writeStatus(`Searching for "${slug}"...`);
|
|
122
127
|
const resolved = await resolveSource(slug, token);
|
|
128
|
+
clearStatus();
|
|
123
129
|
if (resolved.isNative) {
|
|
124
|
-
console.log(`"${slug}" is a native AgentPowers skill. Use
|
|
130
|
+
console.log(`"${slug}" is a native AgentPowers skill. Use ${chalk.bold(`npx @agentpowers/cli detail ${slug}`)} to see its security status.`);
|
|
125
131
|
return;
|
|
126
132
|
}
|
|
127
133
|
source = resolved.source;
|
|
128
|
-
console.log(`Found on ${source}.`);
|
|
134
|
+
console.log(`Found on ${chalk.yellow(source)}.`);
|
|
129
135
|
}
|
|
130
136
|
// Step 2: Download to temp directory
|
|
131
137
|
tmpDir = mkdtempSync(join(tmpdir(), "ap-scan-"));
|
|
132
|
-
|
|
138
|
+
writeStatus(`Downloading "${slug}" from ${source}...`);
|
|
133
139
|
try {
|
|
134
140
|
execSync(`npx ${source} install ${slug} --no-input --dir ${tmpDir}`, {
|
|
135
141
|
cwd: tmpDir,
|
|
@@ -154,12 +160,14 @@ export async function scanCommand(slug, options = {}) {
|
|
|
154
160
|
throw new Error(`Failed to download "${slug}" from "${source}". Ensure the source and slug are correct.`);
|
|
155
161
|
}
|
|
156
162
|
}
|
|
163
|
+
clearStatus();
|
|
157
164
|
// Step 3: Package into ZIP
|
|
158
|
-
|
|
165
|
+
writeStatus("Packaging for scan...");
|
|
159
166
|
const zipBuffer = createZipBuffer(tmpDir);
|
|
160
|
-
|
|
167
|
+
clearStatus();
|
|
168
|
+
console.log(chalk.dim(`Package size: ${(zipBuffer.length / 1024).toFixed(1)} KB`));
|
|
161
169
|
// Step 4: Upload to security scan endpoint
|
|
162
|
-
|
|
170
|
+
writeStatus("Scanning...");
|
|
163
171
|
const result = await apiUpload("/v1/security/scan-package", zipBuffer, "package.zip", {
|
|
164
172
|
content_hash: "",
|
|
165
173
|
source,
|
|
@@ -167,25 +175,27 @@ export async function scanCommand(slug, options = {}) {
|
|
|
167
175
|
source_version: "",
|
|
168
176
|
skill_type: skillType,
|
|
169
177
|
}, token);
|
|
178
|
+
clearStatus();
|
|
170
179
|
// Step 5: Display results
|
|
171
|
-
displayResults(result);
|
|
180
|
+
displayResults(slug, source, result);
|
|
172
181
|
}
|
|
173
182
|
catch (err) {
|
|
183
|
+
clearStatus();
|
|
174
184
|
if (err instanceof APIError) {
|
|
175
185
|
if (err.statusCode === 401) {
|
|
176
|
-
console.error("
|
|
186
|
+
console.error(formatError("Authentication required for scanning. Run `npx @agentpowers/cli login` first."));
|
|
177
187
|
}
|
|
178
188
|
else {
|
|
179
|
-
console.error(
|
|
189
|
+
console.error(formatError(formatAPIError(err)));
|
|
180
190
|
}
|
|
181
191
|
process.exitCode = 1;
|
|
182
192
|
}
|
|
183
193
|
else if (err instanceof NetworkError) {
|
|
184
|
-
console.error(
|
|
194
|
+
console.error(formatError(err.message));
|
|
185
195
|
process.exitCode = 1;
|
|
186
196
|
}
|
|
187
197
|
else if (err instanceof Error) {
|
|
188
|
-
console.error(
|
|
198
|
+
console.error(formatError(err.message));
|
|
189
199
|
process.exitCode = 1;
|
|
190
200
|
}
|
|
191
201
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAAA,wFAAwF;AAExF,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,MAAM,EACN,SAAS,EACT,QAAQ,EACR,cAAc,EACd,YAAY,GACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/search.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/** Search command — query the AgentPowers marketplace. */
|
|
2
|
+
import chalk from "chalk";
|
|
2
3
|
import { apiGet, APIError, formatAPIError, NetworkError } from "../api-client.js";
|
|
3
|
-
import { formatSearchResults } from "../formatters.js";
|
|
4
|
+
import { formatSearchResults, formatError } from "../formatters.js";
|
|
4
5
|
export async function searchCommand(query, options = {}) {
|
|
5
6
|
try {
|
|
6
7
|
const params = { q: query };
|
|
@@ -17,16 +18,16 @@ export async function searchCommand(query, options = {}) {
|
|
|
17
18
|
const native = data.agentpowers;
|
|
18
19
|
if (native.items.length > 0) {
|
|
19
20
|
const firstSlug = native.items[0].slug;
|
|
20
|
-
console.log(`Tip: Install a skill with: npx @agentpowers/cli install ${firstSlug}`);
|
|
21
|
+
console.log(chalk.dim(`Tip: Install a skill with: npx @agentpowers/cli install ${firstSlug}`));
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
24
|
catch (err) {
|
|
24
25
|
if (err instanceof APIError) {
|
|
25
|
-
console.error(
|
|
26
|
+
console.error(formatError(formatAPIError(err)));
|
|
26
27
|
process.exitCode = 1;
|
|
27
28
|
}
|
|
28
29
|
else if (err instanceof NetworkError) {
|
|
29
|
-
console.error(
|
|
30
|
+
console.error(formatError(err.message));
|
|
30
31
|
process.exitCode = 1;
|
|
31
32
|
}
|
|
32
33
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAE1D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAE1D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AASpE,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAa,EACb,UAAyB,EAAE;IAE3B,IAAI,CAAC;QACH,MAAM,MAAM,GAA2B,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;QACpD,IAAI,OAAO,CAAC,QAAQ;YAAE,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACzD,IAAI,OAAO,CAAC,IAAI;YAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC7C,IAAI,OAAO,CAAC,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAEhD,MAAM,IAAI,GAAG,MAAM,MAAM,CAA0B,YAAY,EAAE,MAAM,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEpB,eAAe;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;QAChC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACvC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,2DAA2D,SAAS,EAAE,CAAC,CAClF,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAChD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;YACvC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/dist/commands/setup.js
CHANGED
|
@@ -3,7 +3,9 @@ import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
|
3
3
|
import { join, dirname } from "node:path";
|
|
4
4
|
import { homedir } from "node:os";
|
|
5
5
|
import { platform } from "node:os";
|
|
6
|
+
import chalk from "chalk";
|
|
6
7
|
import { AUTH_FILE } from "../config.js";
|
|
8
|
+
import { teal } from "../formatters.js";
|
|
7
9
|
/** Build the list of platforms to probe. */
|
|
8
10
|
export function getPlatforms() {
|
|
9
11
|
const home = homedir();
|
|
@@ -120,41 +122,41 @@ export async function setupCommand() {
|
|
|
120
122
|
}
|
|
121
123
|
// Print results
|
|
122
124
|
console.log("");
|
|
123
|
-
console.log("AgentPowers MCP Server Setup");
|
|
124
|
-
console.log("
|
|
125
|
+
console.log(teal(chalk.bold("AgentPowers MCP Server Setup")));
|
|
126
|
+
console.log(teal("════════════════════════════"));
|
|
125
127
|
console.log("");
|
|
126
128
|
if (configured.length > 0) {
|
|
127
|
-
console.log("Configured:");
|
|
129
|
+
console.log(chalk.bold("Configured:"));
|
|
128
130
|
for (const name of configured) {
|
|
129
|
-
console.log(` + ${name}`);
|
|
131
|
+
console.log(` ${chalk.green("+")} ${name}`);
|
|
130
132
|
}
|
|
131
133
|
}
|
|
132
134
|
if (skipped.length > 0) {
|
|
133
|
-
console.log("Already configured (skipped):");
|
|
135
|
+
console.log(chalk.bold("Already configured (skipped):"));
|
|
134
136
|
for (const name of skipped) {
|
|
135
|
-
console.log(` - ${name}`);
|
|
137
|
+
console.log(` ${chalk.dim("-")} ${chalk.dim(name)}`);
|
|
136
138
|
}
|
|
137
139
|
}
|
|
138
140
|
if (notFound.length > 0) {
|
|
139
|
-
console.log("Not detected:");
|
|
141
|
+
console.log(chalk.bold("Not detected:"));
|
|
140
142
|
for (const name of notFound) {
|
|
141
|
-
console.log(` . ${name}`);
|
|
143
|
+
console.log(` ${chalk.dim(".")} ${chalk.dim(name)}`);
|
|
142
144
|
}
|
|
143
145
|
}
|
|
144
146
|
if (errors.length > 0) {
|
|
145
|
-
console.log("Errors:");
|
|
147
|
+
console.log(chalk.bold("Errors:"));
|
|
146
148
|
for (const msg of errors) {
|
|
147
|
-
console.log(` ! ${msg}`);
|
|
149
|
+
console.log(` ${chalk.red("!")} ${msg}`);
|
|
148
150
|
}
|
|
149
151
|
}
|
|
150
152
|
if (configured.length === 0 && skipped.length === 0) {
|
|
151
153
|
console.log("No supported AI platforms were detected on this system.");
|
|
152
|
-
console.log("Supported: Claude Code, Claude Desktop, Codex, Gemini, Kiro");
|
|
154
|
+
console.log(chalk.dim("Supported: Claude Code, Claude Desktop, Codex, Gemini, Kiro"));
|
|
153
155
|
}
|
|
154
156
|
// Suggest login if not authenticated
|
|
155
157
|
if (!existsSync(AUTH_FILE)) {
|
|
156
158
|
console.log("");
|
|
157
|
-
console.log("Tip: Run `npx @agentpowers/cli login` to unlock premium marketplace features.");
|
|
159
|
+
console.log(chalk.dim("Tip: Run `npx @agentpowers/cli login` to unlock premium marketplace features."));
|
|
158
160
|
}
|
|
159
161
|
console.log("");
|
|
160
162
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/status.js
CHANGED
|
@@ -1,39 +1,44 @@
|
|
|
1
1
|
/** Status command — list installed skills and agents with metadata. */
|
|
2
2
|
import { existsSync, readdirSync } from "node:fs";
|
|
3
3
|
import { join } from "node:path";
|
|
4
|
+
import chalk from "chalk";
|
|
4
5
|
import { loadAuthToken } from "../auth.js";
|
|
5
6
|
import { SKILLS_DIR, loadPins } from "@agentpowers/core";
|
|
7
|
+
import { formatSecurityStatus, renderTable } from "../formatters.js";
|
|
6
8
|
const AGENTS_DIR = join(SKILLS_DIR, "..", "agents");
|
|
7
9
|
export async function statusCommand() {
|
|
8
10
|
// Auth status
|
|
9
11
|
const token = loadAuthToken();
|
|
10
12
|
if (token) {
|
|
11
|
-
console.log("Logged in (run `npx @agentpowers/cli whoami` to verify)");
|
|
13
|
+
console.log(`${chalk.green("Logged in")} ${chalk.dim("(run `npx @agentpowers/cli whoami` to verify)")}`);
|
|
12
14
|
}
|
|
13
15
|
else {
|
|
14
|
-
console.log("Not logged in. Run
|
|
16
|
+
console.log(`${chalk.yellow("Not logged in.")} Run ${chalk.bold("npx @agentpowers/cli login")} to purchase and publish skills.`);
|
|
15
17
|
}
|
|
16
18
|
console.log("");
|
|
17
19
|
// Load pins
|
|
18
20
|
const pins = loadPins();
|
|
21
|
+
const columns = [
|
|
22
|
+
{ header: "Slug", style: (v) => chalk.cyan(v) },
|
|
23
|
+
{ header: "Source", style: (v) => chalk.yellow(v) },
|
|
24
|
+
{ header: "Security" },
|
|
25
|
+
{ header: "Version" },
|
|
26
|
+
{ header: "Installed" },
|
|
27
|
+
];
|
|
19
28
|
// List installed skills
|
|
20
29
|
const skillSlugs = listInstalledSlugs(SKILLS_DIR);
|
|
21
30
|
if (skillSlugs.length > 0) {
|
|
22
|
-
|
|
23
|
-
console.log(padRight("Slug", 30) +
|
|
24
|
-
padRight("Source", 15) +
|
|
25
|
-
padRight("Security", 12) +
|
|
26
|
-
padRight("Version", 10) +
|
|
27
|
-
"Installed");
|
|
28
|
-
console.log("-".repeat(80));
|
|
29
|
-
for (const slug of skillSlugs) {
|
|
31
|
+
const rows = skillSlugs.map((slug) => {
|
|
30
32
|
const pin = pins[slug];
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
return [
|
|
34
|
+
slug,
|
|
35
|
+
pin?.source ?? "local",
|
|
36
|
+
pin?.security_status ? formatSecurityStatus(String(pin.security_status).toUpperCase()) : "-",
|
|
37
|
+
pin?.version ?? "-",
|
|
38
|
+
pin?.installed_at ? pin.installed_at.slice(0, 10) : "-",
|
|
39
|
+
];
|
|
40
|
+
});
|
|
41
|
+
console.log(renderTable(columns, rows, `Installed Skills (${skillSlugs.length})`));
|
|
37
42
|
}
|
|
38
43
|
else {
|
|
39
44
|
console.log("No skills installed.");
|
|
@@ -42,21 +47,17 @@ export async function statusCommand() {
|
|
|
42
47
|
// List installed agents
|
|
43
48
|
const agentSlugs = listInstalledSlugs(AGENTS_DIR);
|
|
44
49
|
if (agentSlugs.length > 0) {
|
|
45
|
-
|
|
46
|
-
console.log(padRight("Slug", 30) +
|
|
47
|
-
padRight("Source", 15) +
|
|
48
|
-
padRight("Security", 12) +
|
|
49
|
-
padRight("Version", 10) +
|
|
50
|
-
"Installed");
|
|
51
|
-
console.log("-".repeat(80));
|
|
52
|
-
for (const slug of agentSlugs) {
|
|
50
|
+
const rows = agentSlugs.map((slug) => {
|
|
53
51
|
const pin = pins[slug];
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
52
|
+
return [
|
|
53
|
+
slug,
|
|
54
|
+
pin?.source ?? "local",
|
|
55
|
+
pin?.security_status ? formatSecurityStatus(String(pin.security_status).toUpperCase()) : "-",
|
|
56
|
+
pin?.version ?? "-",
|
|
57
|
+
pin?.installed_at ? pin.installed_at.slice(0, 10) : "-",
|
|
58
|
+
];
|
|
59
|
+
});
|
|
60
|
+
console.log(renderTable(columns, rows, `Installed Agents (${agentSlugs.length})`));
|
|
60
61
|
}
|
|
61
62
|
else {
|
|
62
63
|
console.log("No agents installed.");
|
|
@@ -75,7 +76,4 @@ function listInstalledSlugs(dir) {
|
|
|
75
76
|
return [];
|
|
76
77
|
}
|
|
77
78
|
}
|
|
78
|
-
function padRight(str, len) {
|
|
79
|
-
return str.length >= len ? str + " " : str + " ".repeat(len - str.length);
|
|
80
|
-
}
|
|
81
79
|
//# sourceMappingURL=status.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAEvE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
import { existsSync, rmSync } from "node:fs";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { createInterface } from "node:readline";
|
|
5
|
+
import chalk from "chalk";
|
|
5
6
|
import { validateSlug } from "../installer.js";
|
|
7
|
+
import { formatError, formatSuccess, writeStatus, clearStatus } from "../formatters.js";
|
|
6
8
|
import { SKILLS_DIR, loadPins, removePin } from "@agentpowers/core";
|
|
7
9
|
const AGENTS_DIR = join(SKILLS_DIR, "..", "agents");
|
|
8
10
|
export async function uninstallCommand(slug, options = {}) {
|
|
9
11
|
if (!validateSlug(slug)) {
|
|
10
|
-
console.error(`
|
|
12
|
+
console.error(formatError(`Invalid slug "${slug}". Slugs must be lowercase alphanumeric with hyphens only.`));
|
|
11
13
|
process.exitCode = 1;
|
|
12
14
|
return;
|
|
13
15
|
}
|
|
@@ -18,7 +20,7 @@ export async function uninstallCommand(slug, options = {}) {
|
|
|
18
20
|
const hasAgentDir = existsSync(agentDir);
|
|
19
21
|
const hasPin = slug in pins;
|
|
20
22
|
if (!hasSkillDir && !hasAgentDir && !hasPin) {
|
|
21
|
-
console.error(`'${slug}' not found. Not installed.`);
|
|
23
|
+
console.error(formatError(`'${slug}' not found. Not installed.`));
|
|
22
24
|
process.exitCode = 1;
|
|
23
25
|
return;
|
|
24
26
|
}
|
|
@@ -34,11 +36,12 @@ export async function uninstallCommand(slug, options = {}) {
|
|
|
34
36
|
if (!options.force) {
|
|
35
37
|
const confirmed = await confirm(`Remove '${slug}' (${locations.join(", ")})?`);
|
|
36
38
|
if (!confirmed) {
|
|
37
|
-
console.log("Aborted.");
|
|
39
|
+
console.log(chalk.dim("Aborted."));
|
|
38
40
|
return;
|
|
39
41
|
}
|
|
40
42
|
}
|
|
41
43
|
// Remove directories
|
|
44
|
+
writeStatus(`Removing ${slug}...`);
|
|
42
45
|
if (hasSkillDir) {
|
|
43
46
|
rmSync(skillDir, { recursive: true, force: true });
|
|
44
47
|
}
|
|
@@ -49,7 +52,8 @@ export async function uninstallCommand(slug, options = {}) {
|
|
|
49
52
|
if (hasPin) {
|
|
50
53
|
removePin(slug);
|
|
51
54
|
}
|
|
52
|
-
|
|
55
|
+
clearStatus();
|
|
56
|
+
console.log(formatSuccess(`Uninstalled '${slug}'.`));
|
|
53
57
|
}
|
|
54
58
|
function confirm(question) {
|
|
55
59
|
return new Promise((resolve) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAE9D,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEpE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAMpD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAY,EACZ,UAA4B,EAAE;IAE9B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CACX,
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
/** Unpublish command — soft-archive a skill from the marketplace. */
|
|
2
2
|
import { createInterface } from "node:readline";
|
|
3
|
+
import chalk from "chalk";
|
|
3
4
|
import { loadAuthToken } from "../auth.js";
|
|
4
5
|
import { apiPost, APIError, formatAPIError, NetworkError } from "../api-client.js";
|
|
5
6
|
import { validateSlug } from "../installer.js";
|
|
7
|
+
import { formatError, formatSuccess, writeStatus, clearStatus } from "../formatters.js";
|
|
6
8
|
export async function unpublishCommand(slug, options = {}) {
|
|
7
9
|
if (!validateSlug(slug)) {
|
|
8
|
-
console.error(`
|
|
10
|
+
console.error(formatError(`Invalid slug "${slug}". Slugs must be lowercase alphanumeric with hyphens only.`));
|
|
9
11
|
process.exitCode = 1;
|
|
10
12
|
return;
|
|
11
13
|
}
|
|
@@ -13,45 +15,48 @@ export async function unpublishCommand(slug, options = {}) {
|
|
|
13
15
|
if (!options.force) {
|
|
14
16
|
const confirmed = await confirm(`Are you sure you want to unpublish '${slug}'? Existing purchasers will keep access. (y/N)`);
|
|
15
17
|
if (!confirmed) {
|
|
16
|
-
console.log("Aborted.");
|
|
18
|
+
console.log(chalk.dim("Aborted."));
|
|
17
19
|
return;
|
|
18
20
|
}
|
|
19
21
|
}
|
|
20
22
|
const token = loadAuthToken();
|
|
21
23
|
if (!token) {
|
|
22
|
-
console.error("Not logged in. Run `npx @agentpowers/cli login` first.");
|
|
24
|
+
console.error(formatError("Not logged in. Run `npx @agentpowers/cli login` first."));
|
|
23
25
|
process.exitCode = 1;
|
|
24
26
|
return;
|
|
25
27
|
}
|
|
26
28
|
try {
|
|
29
|
+
writeStatus("Unpublishing...");
|
|
27
30
|
await apiPost(`/v1/skills/${encodeURIComponent(slug)}/unpublish`, {}, token);
|
|
28
|
-
|
|
31
|
+
clearStatus();
|
|
32
|
+
console.log(formatSuccess(`Successfully unpublished '${slug}'. It is now archived.`));
|
|
29
33
|
}
|
|
30
34
|
catch (err) {
|
|
35
|
+
clearStatus();
|
|
31
36
|
if (err instanceof APIError) {
|
|
32
37
|
switch (err.statusCode) {
|
|
33
38
|
case 401:
|
|
34
|
-
console.error("Not logged in. Run `npx @agentpowers/cli login` first.");
|
|
39
|
+
console.error(formatError("Not logged in. Run `npx @agentpowers/cli login` first."));
|
|
35
40
|
break;
|
|
36
41
|
case 403:
|
|
37
|
-
console.error(`You are not the owner/author of '${slug}'.`);
|
|
42
|
+
console.error(formatError(`You are not the owner/author of '${slug}'.`));
|
|
38
43
|
break;
|
|
39
44
|
case 404:
|
|
40
|
-
console.error(`Skill '${slug}' not found.`);
|
|
45
|
+
console.error(formatError(`Skill '${slug}' not found.`));
|
|
41
46
|
break;
|
|
42
47
|
case 409:
|
|
43
|
-
console.error(`Skill '${slug}' is already unpublished.`);
|
|
48
|
+
console.error(chalk.yellow(`Skill '${slug}' is already unpublished.`));
|
|
44
49
|
break;
|
|
45
50
|
case 429:
|
|
46
|
-
console.error("Too many requests. Please try again in a few moments.");
|
|
51
|
+
console.error(chalk.yellow("Too many requests. Please try again in a few moments."));
|
|
47
52
|
break;
|
|
48
53
|
default:
|
|
49
|
-
console.error(
|
|
54
|
+
console.error(formatError(formatAPIError(err)));
|
|
50
55
|
}
|
|
51
56
|
process.exitCode = 1;
|
|
52
57
|
}
|
|
53
58
|
else if (err instanceof NetworkError) {
|
|
54
|
-
console.error(
|
|
59
|
+
console.error(formatError(err.message));
|
|
55
60
|
process.exitCode = 1;
|
|
56
61
|
}
|
|
57
62
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unpublish.js","sourceRoot":"","sources":["../../src/commands/unpublish.ts"],"names":[],"mappings":"AAAA,qEAAqE;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"unpublish.js","sourceRoot":"","sources":["../../src/commands/unpublish.ts"],"names":[],"mappings":"AAAA,qEAAqE;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAMxF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAY,EACZ,UAA4B,EAAE;IAE9B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CACX,WAAW,CAAC,iBAAiB,IAAI,4DAA4D,CAAC,CAC/F,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,yBAAyB;IACzB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,MAAM,OAAO,CAC7B,uCAAuC,IAAI,gDAAgD,CAC5F,CAAC;QACF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YACnC,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,wDAAwD,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAC/B,MAAM,OAAO,CACX,cAAc,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAClD,EAAE,EACF,KAAK,CACN,CAAC;QACF,WAAW,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,6BAA6B,IAAI,wBAAwB,CAAC,CAAC,CAAC;IACxF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,EAAE,CAAC;QACd,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC5B,QAAQ,GAAG,CAAC,UAAU,EAAE,CAAC;gBACvB,KAAK,GAAG;oBACN,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,wDAAwD,CAAC,CAAC,CAAC;oBACrF,MAAM;gBACR,KAAK,GAAG;oBACN,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,oCAAoC,IAAI,IAAI,CAAC,CAAC,CAAC;oBACzE,MAAM;gBACR,KAAK,GAAG;oBACN,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,IAAI,cAAc,CAAC,CAAC,CAAC;oBACzD,MAAM;gBACR,KAAK,GAAG;oBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,IAAI,2BAA2B,CAAC,CAAC,CAAC;oBACvE,MAAM;gBACR,KAAK,GAAG;oBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,uDAAuD,CAAC,CAAC,CAAC;oBACrF,MAAM;gBACR;oBACE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpD,CAAC;YACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;YACvC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,QAAgB;IAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,EAAE,GAAG,eAAe,CAAC;YACzB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE;YACrC,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|