@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.
Files changed (44) hide show
  1. package/dist/banner.d.ts +2 -0
  2. package/dist/banner.js +33 -0
  3. package/dist/banner.js.map +1 -0
  4. package/dist/cli.js +14 -1
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/detail.js +66 -33
  7. package/dist/commands/detail.js.map +1 -1
  8. package/dist/commands/install.js +26 -27
  9. package/dist/commands/install.js.map +1 -1
  10. package/dist/commands/login.js +10 -7
  11. package/dist/commands/login.js.map +1 -1
  12. package/dist/commands/logout.js +2 -1
  13. package/dist/commands/logout.js.map +1 -1
  14. package/dist/commands/profile.js +25 -16
  15. package/dist/commands/profile.js.map +1 -1
  16. package/dist/commands/prune.d.ts +4 -0
  17. package/dist/commands/prune.js +60 -0
  18. package/dist/commands/prune.js.map +1 -0
  19. package/dist/commands/publish.js +28 -19
  20. package/dist/commands/publish.js.map +1 -1
  21. package/dist/commands/republish.js +26 -18
  22. package/dist/commands/republish.js.map +1 -1
  23. package/dist/commands/scan.js +38 -28
  24. package/dist/commands/scan.js.map +1 -1
  25. package/dist/commands/search.js +5 -4
  26. package/dist/commands/search.js.map +1 -1
  27. package/dist/commands/setup.js +14 -12
  28. package/dist/commands/setup.js.map +1 -1
  29. package/dist/commands/status.js +31 -33
  30. package/dist/commands/status.js.map +1 -1
  31. package/dist/commands/uninstall.js +8 -4
  32. package/dist/commands/uninstall.js.map +1 -1
  33. package/dist/commands/unpublish.js +16 -11
  34. package/dist/commands/unpublish.js.map +1 -1
  35. package/dist/commands/update.js +89 -49
  36. package/dist/commands/update.js.map +1 -1
  37. package/dist/commands/verify.js +5 -5
  38. package/dist/commands/verify.js.map +1 -1
  39. package/dist/commands/whoami.js +11 -6
  40. package/dist/commands/whoami.js.map +1 -1
  41. package/dist/formatters.d.ts +26 -1
  42. package/dist/formatters.js +207 -37
  43. package/dist/formatters.js.map +1 -1
  44. package/package.json +2 -1
@@ -1,9 +1,17 @@
1
1
  /** Update command — check for and install updates to installed skills. */
2
2
  import { hostname } from "node:os";
3
+ import chalk from "chalk";
3
4
  import { loadAuthToken } from "../auth.js";
4
5
  import { apiGet, recordInstallation, APIError, NetworkError, } from "../api-client.js";
5
6
  import { downloadAndExtract, getInstallDir, validateSlug } from "../installer.js";
7
+ import { formatError, writeStatus, clearStatus, renderTable } from "../formatters.js";
6
8
  import { loadPins, hashDirectory, isDirectory } from "@agentpowers/core";
9
+ /** Normalize pin.type to "skill" | "agent". Garbage values default to "skill". */
10
+ function normalizePinType(raw) {
11
+ if (raw === "agent")
12
+ return "agent";
13
+ return "skill";
14
+ }
7
15
  /**
8
16
  * Update a single skill by slug.
9
17
  */
@@ -11,41 +19,48 @@ async function updateSingle(slug, force) {
11
19
  const pins = loadPins();
12
20
  const pin = pins[slug];
13
21
  if (!pin) {
14
- console.error(`'${slug}' is not installed. Run \`npx @agentpowers/cli install ${slug}\` first.`);
22
+ console.error(formatError(`'${slug}' is not installed. Run \`npx @agentpowers/cli install ${slug}\` first.`));
15
23
  process.exitCode = 1;
16
24
  return;
17
25
  }
18
- const type = pin.type ?? "skill";
26
+ const type = normalizePinType(pin.type);
19
27
  const installDir = getInstallDir(slug, type);
28
+ // Ghost pin — directory doesn't exist on disk
29
+ if (!isDirectory(installDir)) {
30
+ console.error(formatError(`'${slug}' has a pin but is not installed on disk. Run \`npx @agentpowers/cli prune\` to clean up, or reinstall it.`));
31
+ process.exitCode = 1;
32
+ return;
33
+ }
20
34
  const token = loadAuthToken();
21
35
  // Check if locally edited
22
36
  let isEdited = false;
23
- if (isDirectory(installDir)) {
24
- try {
25
- const currentHash = hashDirectory(installDir);
26
- isEdited = currentHash !== pin.content_hash;
27
- }
28
- catch {
29
- // If we can't hash, treat as not edited
30
- }
37
+ try {
38
+ const currentHash = hashDirectory(installDir);
39
+ isEdited = currentHash !== pin.content_hash;
40
+ }
41
+ catch {
42
+ // If we can't hash, treat as not edited
31
43
  }
32
44
  // Fetch latest version from API
33
45
  let detail;
34
46
  try {
47
+ writeStatus(`Checking ${slug}...`);
35
48
  const params = {};
36
49
  if (pin.source !== "agentpowers")
37
50
  params.source = pin.source;
38
51
  detail = await apiGet(`/v1/detail/${encodeURIComponent(slug)}`, params);
52
+ clearStatus();
39
53
  }
40
54
  catch (err) {
55
+ clearStatus();
41
56
  if (err instanceof APIError && err.statusCode === 404) {
42
- console.error(`'${slug}' not found on server (may have been unpublished).`);
57
+ console.error(formatError(`'${slug}' not found on server (may have been unpublished).`));
43
58
  }
44
59
  else if (err instanceof NetworkError) {
45
- console.error(`${slug}: ${err.message}`);
60
+ console.error(formatError(`${slug}: ${err.message}`));
46
61
  }
47
62
  else if (err instanceof Error) {
48
- console.error(`${slug}: ${err.message}`);
63
+ console.error(formatError(`${slug}: ${err.message}`));
49
64
  }
50
65
  process.exitCode = 1;
51
66
  return;
@@ -54,31 +69,32 @@ async function updateSingle(slug, force) {
54
69
  // Compare versions
55
70
  if (!latestVersion || latestVersion === pin.version) {
56
71
  if (isEdited && !force) {
57
- console.log(`${slug} is up to date (v${pin.version ?? "unknown"}) but locally edited.`);
72
+ console.log(`${chalk.cyan(slug)} is up to date (v${pin.version ?? "unknown"}) but ${chalk.yellow("locally edited")}.`);
58
73
  return;
59
74
  }
60
- console.log(`${slug} is already up to date (v${pin.version ?? "unknown"}).`);
75
+ console.log(`${chalk.cyan(slug)} is already up to date (v${pin.version ?? "unknown"}).`);
61
76
  return;
62
77
  }
63
78
  // Update available — check for local edits
64
79
  if (isEdited && !force) {
65
- console.log(`${slug}: locally edited ${pin.version ?? "unknown"} -> ${latestVersion} available but skipped.`);
66
- console.log("Use --force to update anyway (local changes will be overwritten).");
80
+ console.log(`${chalk.cyan(slug)}: ${chalk.yellow("locally edited")} -- ${pin.version ?? "unknown"} -> ${latestVersion} available but skipped.`);
81
+ console.log(chalk.dim("Use --force to update anyway (local changes will be overwritten)."));
67
82
  return;
68
83
  }
69
84
  // Download and install
70
85
  try {
71
86
  const label = isEdited ? "Force updating" : "Updating";
72
- console.log(` ${label} ${slug}: ${pin.version ?? "unknown"} -> ${latestVersion}...`);
87
+ console.log(` ${label} ${chalk.cyan(slug)}: ${pin.version ?? "unknown"} -> ${latestVersion}...`);
73
88
  const downloadData = await apiGet(`/v1/skills/${encodeURIComponent(slug)}/download`, undefined, token);
74
89
  await downloadAndExtract(downloadData.url, slug, type, pin.source, latestVersion, detail.security_status ?? "pass");
75
- console.log(` [ok] ${slug} updated to ${latestVersion}.`);
90
+ console.log(` ${chalk.green("[ok]")} ${chalk.cyan(slug)} updated to ${latestVersion}.`);
76
91
  // Record installation (fire-and-forget)
77
92
  void recordInstallation(slug, "cli", pin.source, hostname(), token);
78
93
  }
79
94
  catch (err) {
95
+ clearStatus();
80
96
  if (err instanceof Error) {
81
- console.error(` [!] ${slug}: Update failed ${err.message}`);
97
+ console.error(` ${chalk.red("[!]")} ${chalk.cyan(slug)}: Update failed -- ${err.message}`);
82
98
  }
83
99
  process.exitCode = 1;
84
100
  }
@@ -88,7 +104,7 @@ export async function updateCommand(slug, options) {
88
104
  // Single-slug mode
89
105
  if (slug) {
90
106
  if (!validateSlug(slug)) {
91
- console.error(`Error: Invalid slug "${slug}". Slugs must be lowercase alphanumeric with hyphens only.`);
107
+ console.error(formatError(`Invalid slug "${slug}". Slugs must be lowercase alphanumeric with hyphens only.`));
92
108
  process.exitCode = 1;
93
109
  return;
94
110
  }
@@ -108,20 +124,32 @@ export async function updateCommand(slug, options) {
108
124
  let skipped = 0;
109
125
  let forced = 0;
110
126
  let errored = 0;
127
+ // Detect ghost pins
128
+ const ghostSlugs = [];
129
+ const summaryRows = [];
130
+ writeStatus("Checking for updates...");
111
131
  for (const pinSlug of slugs) {
132
+ // Skip pins with invalid slugs (path traversal protection)
133
+ if (!validateSlug(pinSlug)) {
134
+ ghostSlugs.push(pinSlug);
135
+ continue;
136
+ }
112
137
  const pin = pins[pinSlug];
113
- const type = pin.type ?? "skill";
138
+ const type = normalizePinType(pin.type);
114
139
  const installDir = getInstallDir(pinSlug, type);
140
+ // Skip ghost pins — directory doesn't exist on disk
141
+ if (!isDirectory(installDir)) {
142
+ ghostSlugs.push(pinSlug);
143
+ continue;
144
+ }
115
145
  // Check if locally edited
116
146
  let isEdited = false;
117
- if (isDirectory(installDir)) {
118
- try {
119
- const currentHash = hashDirectory(installDir);
120
- isEdited = currentHash !== pin.content_hash;
121
- }
122
- catch {
123
- // If we can't hash, treat as not edited
124
- }
147
+ try {
148
+ const currentHash = hashDirectory(installDir);
149
+ isEdited = currentHash !== pin.content_hash;
150
+ }
151
+ catch {
152
+ // If we can't hash, treat as not edited
125
153
  }
126
154
  // Fetch latest version from API
127
155
  let detail;
@@ -134,13 +162,10 @@ export async function updateCommand(slug, options) {
134
162
  catch (err) {
135
163
  errored++;
136
164
  if (err instanceof APIError && err.statusCode === 404) {
137
- console.error(` [!] ${pinSlug}: Not found on server (may have been unpublished).`);
138
- }
139
- else if (err instanceof NetworkError) {
140
- console.error(` [!] ${pinSlug}: ${err.message}`);
165
+ summaryRows.push([pinSlug, pin.source || "unknown", pin.version ?? "-", "-", chalk.red("Not found")]);
141
166
  }
142
167
  else if (err instanceof Error) {
143
- console.error(` [!] ${pinSlug}: ${err.message}`);
168
+ summaryRows.push([pinSlug, pin.source || "unknown", pin.version ?? "-", "-", chalk.red("Error")]);
144
169
  }
145
170
  continue;
146
171
  }
@@ -148,51 +173,66 @@ export async function updateCommand(slug, options) {
148
173
  // Compare versions
149
174
  if (!latestVersion || latestVersion === pin.version) {
150
175
  current++;
176
+ summaryRows.push([pinSlug, pin.source || "unknown", pin.version ?? "-", latestVersion ?? "-", chalk.dim("Up to date")]);
151
177
  continue;
152
178
  }
153
179
  // Update available
154
180
  if (isEdited && !force) {
155
181
  skipped++;
156
- console.log(` [skip] ${pinSlug}: locally edited ${pin.version ?? "unknown"} -> ${latestVersion} available but skipped.`);
182
+ summaryRows.push([pinSlug, pin.source || "unknown", pin.version ?? "-", latestVersion, chalk.yellow("Edited (skipped)")]);
157
183
  continue;
158
184
  }
159
185
  // Download and install
160
186
  try {
161
- const label = isEdited ? "Force updating" : "Updating";
162
- console.log(` ${label} ${pinSlug}: ${pin.version ?? "unknown"} -> ${latestVersion}...`);
187
+ writeStatus(`Updating ${pinSlug}...`);
163
188
  const downloadData = await apiGet(`/v1/skills/${encodeURIComponent(pinSlug)}/download`, undefined, token);
164
189
  await downloadAndExtract(downloadData.url, pinSlug, type, pin.source, latestVersion, detail.security_status ?? "pass");
165
190
  if (isEdited) {
166
191
  forced++;
167
- console.log(` [ok] ${pinSlug} force-updated to ${latestVersion}.`);
192
+ summaryRows.push([pinSlug, pin.source || "unknown", pin.version ?? "-", latestVersion, chalk.green("Force-updated")]);
168
193
  }
169
194
  else {
170
195
  updated++;
171
- console.log(` [ok] ${pinSlug} updated to ${latestVersion}.`);
196
+ summaryRows.push([pinSlug, pin.source || "unknown", pin.version ?? "-", latestVersion, chalk.green("Updated")]);
172
197
  }
173
198
  // Record installation (fire-and-forget)
174
199
  void recordInstallation(pinSlug, "cli", pin.source, hostname(), token);
175
200
  }
176
201
  catch (err) {
177
202
  errored++;
178
- if (err instanceof Error) {
179
- console.error(` [!] ${pinSlug}: Update failed — ${err.message}`);
180
- }
203
+ summaryRows.push([pinSlug, pin.source || "unknown", pin.version ?? "-", "-", chalk.red("Failed")]);
181
204
  }
182
205
  }
183
- // Summary
206
+ clearStatus();
207
+ // Summary table
208
+ if (summaryRows.length > 0) {
209
+ const columns = [
210
+ { header: "Slug", style: (v) => chalk.cyan(v) },
211
+ { header: "Source", style: (v) => chalk.yellow(v) },
212
+ { header: "Current" },
213
+ { header: "Latest" },
214
+ { header: "Status" },
215
+ ];
216
+ console.log(renderTable(columns, summaryRows, "Update Summary"));
217
+ }
218
+ // Text summary
184
219
  console.log("");
185
220
  const parts = [];
186
221
  if (updated > 0)
187
- parts.push(`${updated} updated`);
222
+ parts.push(chalk.green(`${updated} updated`));
188
223
  if (forced > 0)
189
- parts.push(`${forced} force-updated`);
224
+ parts.push(chalk.green(`${forced} force-updated`));
190
225
  if (current > 0)
191
- parts.push(`${current} already current`);
226
+ parts.push(chalk.dim(`${current} already current`));
192
227
  if (skipped > 0)
193
- parts.push(`${skipped} skipped (locally edited)`);
228
+ parts.push(chalk.yellow(`${skipped} skipped (locally edited)`));
194
229
  if (errored > 0)
195
- parts.push(`${errored} failed`);
230
+ parts.push(chalk.red(`${errored} failed`));
231
+ if (ghostSlugs.length > 0)
232
+ parts.push(chalk.dim(`${ghostSlugs.length} stale (not on disk)`));
196
233
  console.log(parts.join(", ") + ".");
234
+ if (ghostSlugs.length > 0) {
235
+ console.log(chalk.dim(`\nRun \`npx @agentpowers/cli prune\` to remove ${ghostSlugs.length} stale pin(s) from the registry.`));
236
+ }
197
237
  }
198
238
  //# sourceMappingURL=update.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAE1E,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,MAAM,EACN,kBAAkB,EAClB,QAAQ,EACR,YAAY,GACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAElF,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEzE;;GAEG;AACH,KAAK,UAAU,YAAY,CACzB,IAAY,EACZ,KAAc;IAEd,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAEvB,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,0DAA0D,IAAI,WAAW,CAAC,CAAC;QACjG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC;IACjC,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAE9B,0BAA0B;IAC1B,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;YAC9C,QAAQ,GAAG,WAAW,KAAK,GAAG,CAAC,YAAY,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,IAAI,MAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,MAAM,GAAuC,EAAE,CAAC;QACtD,IAAI,GAAG,CAAC,MAAM,KAAK,aAAa;YAAE,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC7D,MAAM,GAAG,MAAM,MAAM,CAAgB,cAAc,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACzF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,QAAQ,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;YACtD,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,oDAAoD,CAAC,CAAC;QAC9E,CAAC;aAAM,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;YACvC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;IAErC,mBAAmB;IACnB,IAAI,CAAC,aAAa,IAAI,aAAa,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;QACpD,IAAI,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,oBAAoB,GAAG,CAAC,OAAO,IAAI,SAAS,uBAAuB,CAAC,CAAC;YACxF,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,4BAA4B,GAAG,CAAC,OAAO,IAAI,SAAS,IAAI,CAAC,CAAC;QAC7E,OAAO;IACT,CAAC;IAED,2CAA2C;IAC3C,IAAI,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CACT,GAAG,IAAI,sBAAsB,GAAG,CAAC,OAAO,IAAI,SAAS,OAAO,aAAa,yBAAyB,CACnG,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;QACjF,OAAO;IACT,CAAC;IAED,uBAAuB;IACvB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC;QACvD,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,IAAI,IAAI,KAAK,GAAG,CAAC,OAAO,IAAI,SAAS,OAAO,aAAa,KAAK,CACzE,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,MAAM,CAC/B,cAAc,kBAAkB,CAAC,IAAI,CAAC,WAAW,EACjD,SAAS,EACT,KAAK,CACN,CAAC;QAEF,MAAM,kBAAkB,CACtB,YAAY,CAAC,GAAG,EAChB,IAAI,EACJ,IAAI,EACJ,GAAG,CAAC,MAAM,EACV,aAAa,EACb,MAAM,CAAC,eAAe,IAAI,MAAM,CACjC,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,eAAe,aAAa,GAAG,CAAC,CAAC;QAE3D,wCAAwC;QACxC,KAAK,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,qBAAqB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAa,EAAE,OAA6B;IAC9E,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC;IAEtC,mBAAmB;IACnB,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,wBAAwB,IAAI,4DAA4D,CAAC,CAAC;YACxG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,kBAAkB;IAClB,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEhC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAE9B,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC;QACjC,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEhD,0BAA0B;QAC1B,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;gBAC9C,QAAQ,GAAG,WAAW,KAAK,GAAG,CAAC,YAAY,CAAC;YAC9C,CAAC;YAAC,MAAM,CAAC;gBACP,wCAAwC;YAC1C,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,IAAI,MAAqB,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAuC,EAAE,CAAC;YACtD,IAAI,GAAG,CAAC,MAAM,KAAK,aAAa;gBAAE,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YAC7D,MAAM,GAAG,MAAM,MAAM,CAAgB,cAAc,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC5F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,CAAC;YACV,IAAI,GAAG,YAAY,QAAQ,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBACtD,OAAO,CAAC,KAAK,CACX,SAAS,OAAO,oDAAoD,CACrE,CAAC;YACJ,CAAC;iBAAM,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;gBACvC,OAAO,CAAC,KAAK,CAAC,SAAS,OAAO,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACpD,CAAC;iBAAM,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,CAAC,SAAS,OAAO,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACpD,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;QAErC,mBAAmB;QACnB,IAAI,CAAC,aAAa,IAAI,aAAa,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;YACpD,OAAO,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QAED,mBAAmB;QACnB,IAAI,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CACT,YAAY,OAAO,sBAAsB,GAAG,CAAC,OAAO,IAAI,SAAS,OAAO,aAAa,yBAAyB,CAC/G,CAAC;YACF,SAAS;QACX,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC;YACvD,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,IAAI,OAAO,KAAK,GAAG,CAAC,OAAO,IAAI,SAAS,OAAO,aAAa,KAAK,CAC5E,CAAC;YAEF,MAAM,YAAY,GAAG,MAAM,MAAM,CAC/B,cAAc,kBAAkB,CAAC,OAAO,CAAC,WAAW,EACpD,SAAS,EACT,KAAK,CACN,CAAC;YAEF,MAAM,kBAAkB,CACtB,YAAY,CAAC,GAAG,EAChB,OAAO,EACP,IAAI,EACJ,GAAG,CAAC,MAAM,EACV,aAAa,EACb,MAAM,CAAC,eAAe,IAAI,MAAM,CACjC,CAAC;YAEF,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,qBAAqB,aAAa,GAAG,CAAC,CAAC;YACtE,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,eAAe,aAAa,GAAG,CAAC,CAAC;YAChE,CAAC;YAED,wCAAwC;YACxC,KAAK,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,CAAC;YACV,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;gBACzB,OAAO,CAAC,KAAK,CAAC,SAAS,OAAO,qBAAqB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;IACH,CAAC;IAED,UAAU;IACV,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,UAAU,CAAC,CAAC;IAClD,IAAI,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,gBAAgB,CAAC,CAAC;IACtD,IAAI,OAAO,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,kBAAkB,CAAC,CAAC;IAC1D,IAAI,OAAO,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,2BAA2B,CAAC,CAAC;IACnE,IAAI,OAAO,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,SAAS,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  /** Verify command — check installed skills against content hash pins. */
2
2
  import { join } from "node:path";
3
+ import chalk from "chalk";
3
4
  import { loadPins, hashDirectory, isDirectory, SKILLS_DIR, } from "@agentpowers/core";
4
5
  export async function verifyCommand() {
5
6
  const pins = loadPins();
@@ -12,25 +13,24 @@ export async function verifyCommand() {
12
13
  let hasFailure = false;
13
14
  for (const slug of slugs.sort()) {
14
15
  const pin = pins[slug];
15
- const type = pin.type || "skill";
16
16
  const source = pin.source || "unknown";
17
17
  // Determine install directory
18
18
  const installDir = join(SKILLS_DIR, slug);
19
19
  if (!pin.content_hash) {
20
- console.log(` SKIP ${slug} (${source}) no content hash stored`);
20
+ console.log(` ${chalk.yellow("SKIP")} ${chalk.cyan(slug)} (${source}) -- no content hash stored`);
21
21
  continue;
22
22
  }
23
23
  if (!isDirectory(installDir)) {
24
- console.log(` MISSING ${slug} (${source}) not found on disk`);
24
+ console.log(` ${chalk.red("MISSING")} ${chalk.cyan(slug)} (${source}) -- not found on disk`);
25
25
  hasFailure = true;
26
26
  continue;
27
27
  }
28
28
  const currentHash = hashDirectory(installDir);
29
29
  if (currentHash === pin.content_hash) {
30
- console.log(` OK ${slug} (${source})`);
30
+ console.log(` ${chalk.green("OK")} ${chalk.cyan(slug)} (${source})`);
31
31
  }
32
32
  else {
33
- console.log(` FAIL ${slug} (${source}) hash mismatch`);
33
+ console.log(` ${chalk.red("FAIL")} ${chalk.cyan(slug)} (${source}) -- hash mismatch`);
34
34
  hasFailure = true;
35
35
  }
36
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAEzE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,QAAQ,EACR,aAAa,EACb,WAAW,EACX,UAAU,GACX,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEhC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC;QACjC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,SAAS,CAAC;QAEvC,8BAA8B;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE1C,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,KAAK,MAAM,4BAA4B,CAAC,CAAC;YACtE,SAAS;QACX,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,KAAK,MAAM,uBAAuB,CAAC,CAAC;YACjE,UAAU,GAAG,IAAI,CAAC;YAClB,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,WAAW,KAAK,GAAG,CAAC,YAAY,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,KAAK,MAAM,GAAG,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,KAAK,MAAM,mBAAmB,CAAC,CAAC;YAC7D,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAEzE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,QAAQ,EACR,aAAa,EACb,WAAW,EACX,UAAU,GACX,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEhC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,SAAS,CAAC;QAEvC,8BAA8B;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE1C,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM,6BAA6B,CAAC,CAAC;YACtG,SAAS;QACX,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM,wBAAwB,CAAC,CAAC;YAC9F,UAAU,GAAG,IAAI,CAAC;YAClB,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,WAAW,KAAK,GAAG,CAAC,YAAY,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM,oBAAoB,CAAC,CAAC;YAC1F,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -1,31 +1,36 @@
1
1
  /** Whoami command — show current authenticated user info. */
2
+ import chalk from "chalk";
2
3
  import { loadAuthToken } from "../auth.js";
3
4
  import { apiGet, APIError, formatAPIError, NetworkError } from "../api-client.js";
5
+ import { formatError, writeStatus, clearStatus } from "../formatters.js";
4
6
  export async function whoamiCommand() {
5
7
  const token = loadAuthToken();
6
8
  if (!token) {
7
- console.error("Not logged in. Run `npx @agentpowers/cli login` first.");
9
+ console.error(formatError("Not logged in. Run `npx @agentpowers/cli login` first."));
8
10
  process.exitCode = 1;
9
11
  return;
10
12
  }
11
13
  try {
14
+ writeStatus("Checking...");
12
15
  const me = await apiGet("/v1/auth/me", undefined, token);
13
- console.log(`Email: ${me.email}`);
16
+ clearStatus();
17
+ console.log(`${chalk.bold("Email:")} ${me.email}`);
14
18
  if (me.name) {
15
- console.log(`Name: ${me.name}`);
19
+ console.log(`${chalk.bold("Name:")} ${me.name}`);
16
20
  }
17
21
  }
18
22
  catch (err) {
23
+ clearStatus();
19
24
  if (err instanceof APIError && err.statusCode === 401) {
20
- console.error("Not logged in. Run `npx @agentpowers/cli login` first.");
25
+ console.error(formatError("Not logged in. Run `npx @agentpowers/cli login` first."));
21
26
  process.exitCode = 1;
22
27
  }
23
28
  else if (err instanceof APIError) {
24
- console.error(`Error: ${formatAPIError(err)}`);
29
+ console.error(formatError(formatAPIError(err)));
25
30
  process.exitCode = 1;
26
31
  }
27
32
  else if (err instanceof NetworkError) {
28
- console.error(`Error: ${err.message}`);
33
+ console.error(formatError(err.message));
29
34
  process.exitCode = 1;
30
35
  }
31
36
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOlF,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACxE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAa,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;QACnC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,QAAQ,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;YACtD,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;YACxE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,UAAU,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;YACvC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACvC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAOzE,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,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,aAAa,CAAC,CAAC;QAC3B,MAAM,EAAE,GAAG,MAAM,MAAM,CAAa,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACrE,WAAW,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;QACpD,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,EAAE,CAAC;QACd,IAAI,GAAG,YAAY,QAAQ,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;YACtD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,wDAAwD,CAAC,CAAC,CAAC;YACrF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YACnC,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"}
@@ -1,5 +1,30 @@
1
- /** Terminal output formatters for CLI display. */
1
+ /** Terminal output formatters for CLI display — Rich-style colored output. */
2
2
  import type { SectionedSearchResponse } from "./types.js";
3
+ declare const teal: import("chalk").ChalkInstance;
4
+ export { teal };
3
5
  export declare function formatPrice(priceCents: number): string;
6
+ /** Format security status with color (for terminal display). */
4
7
  export declare function formatSecurityStatus(status: string): string;
8
+ /** Format security status without color (for plain text / tests). */
9
+ export declare function formatSecurityStatusPlain(status: string): string;
10
+ export declare function formatSeverity(severity: string): string;
11
+ export declare function formatInstalled(state: string | null): string;
12
+ export interface TableColumn {
13
+ header: string;
14
+ width?: number;
15
+ align?: "left" | "right";
16
+ style?: (val: string) => string;
17
+ }
18
+ export declare function stripAnsi(str: string): string;
19
+ /** Sanitize a string for safe terminal display (removes newlines, control chars). */
20
+ export declare function sanitizeForTerminal(str: string): string;
21
+ export declare function renderTable(columns: TableColumn[], rows: string[][], title?: string): string;
22
+ export declare function renderPanel(content: string, title?: string, borderColor?: "cyan" | "green" | "yellow" | "red"): string;
23
+ /** Write a status message to stderr (same line, overwritten). */
24
+ export declare function writeStatus(message: string): void;
25
+ export declare function clearStatus(): void;
26
+ export declare function formatError(message: string): string;
27
+ export declare function formatSuccess(message: string): string;
28
+ export declare function formatWarning(message: string): string;
29
+ export declare function formatDim(message: string): string;
5
30
  export declare function formatSearchResults(data: SectionedSearchResponse): string;