@meshy-ai/cli 0.3.2 → 0.4.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 (56) hide show
  1. package/README.md +69 -581
  2. package/dist/cmd/auth.d.ts.map +1 -1
  3. package/dist/cmd/auth.js +14 -12
  4. package/dist/cmd/auth.js.map +1 -1
  5. package/dist/cmd/download.d.ts.map +1 -1
  6. package/dist/cmd/download.js +3 -2
  7. package/dist/cmd/download.js.map +1 -1
  8. package/dist/cmd/make.d.ts.map +1 -1
  9. package/dist/cmd/make.js +26 -10
  10. package/dist/cmd/make.js.map +1 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +29 -8
  13. package/dist/index.js.map +1 -1
  14. package/dist/internal/color.d.ts +1 -1
  15. package/dist/internal/color.d.ts.map +1 -1
  16. package/dist/internal/color.js +13 -1
  17. package/dist/internal/color.js.map +1 -1
  18. package/dist/internal/context.d.ts +5 -0
  19. package/dist/internal/context.d.ts.map +1 -1
  20. package/dist/internal/context.js +5 -0
  21. package/dist/internal/context.js.map +1 -1
  22. package/dist/internal/errors.d.ts.map +1 -1
  23. package/dist/internal/errors.js +8 -3
  24. package/dist/internal/errors.js.map +1 -1
  25. package/dist/internal/logger.d.ts.map +1 -1
  26. package/dist/internal/logger.js +2 -0
  27. package/dist/internal/logger.js.map +1 -1
  28. package/dist/internal/output.d.ts +7 -0
  29. package/dist/internal/output.d.ts.map +1 -1
  30. package/dist/internal/output.js +23 -2
  31. package/dist/internal/output.js.map +1 -1
  32. package/dist/internal/progress.d.ts +62 -0
  33. package/dist/internal/progress.d.ts.map +1 -0
  34. package/dist/internal/progress.js +198 -0
  35. package/dist/internal/progress.js.map +1 -0
  36. package/dist/internal/runtime.d.ts +13 -0
  37. package/dist/internal/runtime.d.ts.map +1 -1
  38. package/dist/internal/runtime.js +17 -2
  39. package/dist/internal/runtime.js.map +1 -1
  40. package/dist/internal/task-command.d.ts +0 -1
  41. package/dist/internal/task-command.d.ts.map +1 -1
  42. package/dist/internal/task-command.js +40 -10
  43. package/dist/internal/task-command.js.map +1 -1
  44. package/dist/internal/update-notifier.d.ts +2 -0
  45. package/dist/internal/update-notifier.d.ts.map +1 -1
  46. package/dist/internal/update-notifier.js +1 -1
  47. package/dist/internal/update-notifier.js.map +1 -1
  48. package/dist/internal/views.d.ts +57 -0
  49. package/dist/internal/views.d.ts.map +1 -0
  50. package/dist/internal/views.js +570 -0
  51. package/dist/internal/views.js.map +1 -0
  52. package/dist/root.d.ts.map +1 -1
  53. package/dist/root.js +3 -0
  54. package/dist/root.js.map +1 -1
  55. package/package.json +1 -1
  56. package/skills/meshy-cli/SKILL.md +6 -3
@@ -0,0 +1,570 @@
1
+ /**
2
+ * Per-command views for `--format pretty` (gh: view/display, kubectl: printers).
3
+ *
4
+ * `pretty` is what a person sees at a terminal, so it is designed per command
5
+ * instead of dumping the payload: the fields a reader acts on first, times a
6
+ * person can read, and no 400-character signed URLs (`--json` has all of it).
7
+ * Nothing here is a contract — json/ndjson are, and they never pass through
8
+ * this file.
9
+ *
10
+ * Views are pure (command, value, painter) → text and accept either schema:
11
+ * tasks are normalised through toTaskView, so a legacy summary and a v1
12
+ * result of the same command read the same. A command without a view — or a
13
+ * payload its view does not recognise — gets the generic fallback: the v1
14
+ * `result` only, epoch-ms times as local time, URLs shortened.
15
+ */
16
+ import { relative } from "node:path";
17
+ import { plain } from "./color.js";
18
+ import { renderPretty } from "./output.js";
19
+ import { safeSegment } from "./paths.js";
20
+ import { SCHEMA_VERSION } from "./result.js";
21
+ import { toTaskView } from "./task-view.js";
22
+ export function renderView(command, value, paint = plain, facts = {}) {
23
+ const body = isEnvelope(value) ? value["result"] : value;
24
+ return (command ? viewFor(command, body, paint, facts) : null) ?? fallback(body, paint);
25
+ }
26
+ function viewFor(command, body, paint, facts) {
27
+ switch (command) {
28
+ case "make":
29
+ return spaced(makeView(body, paint, facts));
30
+ case "balance":
31
+ return balanceView(body);
32
+ case "doctor":
33
+ return doctorView(body, paint);
34
+ case "download":
35
+ return downloadView(body, paint);
36
+ case "delete":
37
+ return deleteView(body, paint);
38
+ case "auth.login":
39
+ return loginView(body, paint);
40
+ case "auth.status":
41
+ return authStatusView(body, paint);
42
+ case "auth.logout":
43
+ case "auth.use":
44
+ return profileChangeView(body, paint);
45
+ case "auth.list":
46
+ return profileListView(body, paint);
47
+ }
48
+ const dot = command.lastIndexOf(".");
49
+ const prefix = command.slice(0, Math.max(0, dot));
50
+ switch (command.slice(dot + 1)) {
51
+ case "get":
52
+ return taskResultView(body, paint, prefix);
53
+ case "create":
54
+ case "wait":
55
+ case "stream":
56
+ return spaced(taskResultView(body, paint, prefix));
57
+ case "list":
58
+ return taskListView(body, paint);
59
+ case "delete":
60
+ return deleteView(body, paint);
61
+ }
62
+ return null;
63
+ }
64
+ /** Commands that showed progress on stderr start their result one line below it. */
65
+ function spaced(view) {
66
+ return view === null ? null : `\n${view}`;
67
+ }
68
+ // ---------------------------------------------------------------------------
69
+ // Tasks
70
+ // ---------------------------------------------------------------------------
71
+ function taskResultView(body, paint, prefix) {
72
+ if (!isObj(body))
73
+ return null;
74
+ const task = taskFrom(body);
75
+ if (!task)
76
+ return submittedView(body, paint, prefix);
77
+ const resource = task.resource ?? str(body["resource"]) ?? prefix;
78
+ const saved = savedFiles(body);
79
+ const lines = taskCard(task, paint, { fallbackSeconds: elapsedOf(body), saved });
80
+ if (task.status === "SUCCEEDED" && saved.length === 0) {
81
+ lines.push("", ...downloadTip(resource, task.task_id, `${safeSegment(resource)}-${task.task_id.slice(0, 8)}`, "the command", paint));
82
+ }
83
+ return lines.join("\n");
84
+ }
85
+ /** `create --async`: nothing but an id and how to follow it. */
86
+ function submittedView(body, paint, prefix) {
87
+ const taskId = str(body["task_id"]);
88
+ if (!taskId)
89
+ return null;
90
+ return [
91
+ `${paint("⧗", "yellow")} Submitted ${taskId}`,
92
+ paint(`next: meshy ${prefix.split(".").join(" ")} wait ${taskId}`, "dim"),
93
+ ].join("\n");
94
+ }
95
+ /** The fields a person reads first, in the order they read them. No URLs. */
96
+ export function taskCard(task, paint, opts = {}) {
97
+ const lines = [statusLine(task, paint)];
98
+ const row = (label, value) => {
99
+ lines.push(`${paint(label.padEnd(9), "dim")}${value}`);
100
+ };
101
+ row("Task", task.task_id);
102
+ if (task.created_at !== null)
103
+ row("Created", localTime(task.created_at));
104
+ const start = task.started_at ?? task.created_at;
105
+ const server = task.finished_at !== null && start !== null ? (task.finished_at - start) / 1000 : null;
106
+ const took = opts.seconds ?? server ?? opts.fallbackSeconds ?? null;
107
+ if (took !== null && took >= 0)
108
+ row("Took", formatDuration(took));
109
+ if (opts.credits)
110
+ row("Credits", opts.credits);
111
+ // A missing count is unknown, not zero — say nothing rather than "0".
112
+ else if (task.consumed_credits !== null)
113
+ row("Credits", String(task.consumed_credits));
114
+ const assets = assetSummary(task);
115
+ if (assets)
116
+ row("Assets", assets);
117
+ const saved = opts.saved ?? [];
118
+ saved.forEach((file, i) => row(i === 0 ? "Saved" : "", displayPath(file)));
119
+ if (task.task_error?.message)
120
+ row("Error", paint(task.task_error.message, "red"));
121
+ return lines;
122
+ }
123
+ function statusLine(task, paint) {
124
+ const status = task.status ?? "UNKNOWN";
125
+ const type = task.type ? ` ${paint(task.type, "dim")}` : "";
126
+ if (status === "SUCCEEDED")
127
+ return `${paint("✓", "green")} ${paint(status, "green")}${type}`;
128
+ if (status === "FAILED" || status === "CANCELED" || status === "EXPIRED")
129
+ return `${paint("✗", "red")} ${paint(status, "red")}${type}`;
130
+ const pct = task.progress !== null && status === "IN_PROGRESS" ? ` ${task.progress}%` : "";
131
+ return `${paint("⧗", "yellow")} ${paint(`${status}${pct}`, "yellow")}${type}`;
132
+ }
133
+ function assetSummary(task) {
134
+ const parts = [];
135
+ const models = Object.entries(task.model_urls).filter(([, u]) => u).map(([k]) => k);
136
+ if (models.length)
137
+ parts.push(models.join(", "));
138
+ const sets = task.texture_urls.filter((s) => Object.values(s).some(Boolean));
139
+ if (sets.length === 1)
140
+ parts.push(`textures: ${Object.keys(sets[0]).filter((k) => sets[0][k]).join(", ")}`);
141
+ else if (sets.length > 1)
142
+ parts.push(`${sets.length} texture sets`);
143
+ if (task.image_urls.length)
144
+ parts.push(plural(task.image_urls.length, "image"));
145
+ const resultFiles = task.result ? countUrls(task.result) : 0;
146
+ if (resultFiles)
147
+ parts.push(plural(resultFiles, "result file"));
148
+ if (task.thumbnail_url)
149
+ parts.push("thumbnail");
150
+ return parts.join(" · ");
151
+ }
152
+ function downloadTip(resource, taskId, dir, where, paint) {
153
+ return [
154
+ paint(`tip: download it now: meshy download --resource ${resource} --task-id ${taskId} --all --output-dir ./${dir}`, "dim"),
155
+ paint(` or add -o <dir> to ${where} to save files automatically`, "dim"),
156
+ ];
157
+ }
158
+ function taskListView(body, paint) {
159
+ const items = Array.isArray(body) ? body : isObj(body) && Array.isArray(body["items"]) ? body["items"] : null;
160
+ if (!items)
161
+ return null;
162
+ const tasks = items.map((i) => (isObj(i) ? taskFrom({ task: i }) ?? taskFrom(i) : null));
163
+ if (tasks.some((t) => t === null))
164
+ return null; // not a task list (showcases, projects, …)
165
+ // Only a task list has a legacy array body or a v1 `page`; an empty showcase list is not "No tasks".
166
+ if (tasks.length === 0)
167
+ return Array.isArray(body) || (isObj(body) && isObj(body["page"])) ? paint("No tasks.", "dim") : null;
168
+ const rows = tasks.map((t) => [
169
+ t.task_id,
170
+ t.status ?? "-",
171
+ t.progress !== null ? `${t.progress}%` : "-",
172
+ t.type ?? "-",
173
+ t.created_at !== null ? relativeTime(t.created_at) : "-",
174
+ ]);
175
+ const out = [table(["TASK ID", "STATUS", "PROGRESS", "TYPE", "CREATED"], rows, paint, (col, v) => (col === 1 ? statusStyle(v) : null))];
176
+ const page = isObj(body) && isObj(body["page"]) ? body["page"] : null;
177
+ if (page && typeof page["page_num"] === "number" && tasks.length === page["page_size"]) {
178
+ out.push(paint(`more: --page ${page["page_num"] + 1}`, "dim"));
179
+ }
180
+ return out.join("\n");
181
+ }
182
+ function deleteView(body, paint) {
183
+ if (!isObj(body) || body["deleted"] !== true || !str(body["task_id"]))
184
+ return null;
185
+ return `${paint("✓", "green")} Deleted ${body["task_id"]}`;
186
+ }
187
+ // ---------------------------------------------------------------------------
188
+ // make
189
+ // ---------------------------------------------------------------------------
190
+ function makeView(body, paint, facts) {
191
+ if (!isObj(body))
192
+ return null;
193
+ if (Array.isArray(body["steps"]))
194
+ return planView(body, paint);
195
+ const stopped = body["stopped_after"];
196
+ if (stopped !== undefined) {
197
+ const id = str(body["task_id"]) ?? (isObj(stopped) ? str(stopped["task_id"]) : null);
198
+ const resume = str(body["resume"]) ?? str(body["hint"]);
199
+ return [`${paint("✓", "green")} Stopped after step 1 ${id ?? ""}`, ...(resume ? [paint(`resume: ${resume}`, "dim")] : [])].join("\n");
200
+ }
201
+ const task = taskFrom(body);
202
+ if (!task) {
203
+ // --async: step 1 submitted, the rest is the caller's.
204
+ const submitted = body["submitted"];
205
+ const id = str(body["task_id"]) ?? (isObj(submitted) ? str(submitted["task_id"]) : null);
206
+ if (!id)
207
+ return null;
208
+ const resource = isObj(submitted) ? str(submitted["resource"]) : null;
209
+ const next = str(body["hint"]) ?? `meshy ${resource ?? "text-to-3d"} wait ${id}`;
210
+ const later = Array.isArray(body["pending_steps"])
211
+ ? body["pending_steps"].map((s) => (isObj(s) ? str(s["command"]) : null)).filter((c) => Boolean(c))
212
+ : [];
213
+ return [`${paint("⧗", "yellow")} Submitted step 1 ${id}`, paint(`next: ${next}`, "dim"), ...later.map((c) => paint(`then: ${c}`, "dim"))].join("\n");
214
+ }
215
+ const saved = savedFiles(body);
216
+ const lines = taskCard(task, paint, {
217
+ seconds: facts.totalSeconds ?? null,
218
+ fallbackSeconds: elapsedOf(body),
219
+ saved,
220
+ ...(facts.estimatedCredits !== undefined ? { credits: `~${facts.estimatedCredits} (estimate for the whole chain)` } : {}),
221
+ });
222
+ if (task.status === "SUCCEEDED" && saved.length === 0) {
223
+ const resource = task.resource ?? str(body["resource"]) ?? "text-to-3d";
224
+ lines.push("", ...downloadTip(resource, task.task_id, dirName(facts.name, task.task_id), "make", paint));
225
+ }
226
+ return lines.join("\n");
227
+ }
228
+ function planView(body, paint) {
229
+ const steps = body["steps"].filter(isObj);
230
+ const rows = steps.map((s) => [`${String(s["step"] ?? "")}.`, `${String(s["resource"] ?? "")} ${String(s["action"] ?? "")}`, `~${String(s["estimated_credits"] ?? "?")}`]);
231
+ const out = [
232
+ `Plan ${plural(steps.length, "step")} · ~${String(body["estimated_credits"] ?? "?")} credits`,
233
+ table(null, rows, paint),
234
+ ];
235
+ if (str(body["note"]))
236
+ out.push(paint(body["note"], "dim"));
237
+ return out.join("\n");
238
+ }
239
+ /** A directory name a person would pick: the prompt, lower-cased and hyphenated. */
240
+ function dirName(name, taskId) {
241
+ const slug = (name ?? "").toLowerCase().trim().replace(/\s+/g, "-").slice(0, 48);
242
+ return safeSegment(slug, `meshy-${taskId.slice(0, 8)}`);
243
+ }
244
+ // ---------------------------------------------------------------------------
245
+ // balance / doctor / download
246
+ // ---------------------------------------------------------------------------
247
+ function balanceView(body) {
248
+ if (!isObj(body) || typeof body["balance"] !== "number")
249
+ return null;
250
+ return `Balance ${body["balance"].toLocaleString("en-US")} credits`;
251
+ }
252
+ const CHECK_STYLE = {
253
+ ok: { icon: "✓", style: "green" },
254
+ warn: { icon: "!", style: "yellow" },
255
+ fail: { icon: "✗", style: "red" },
256
+ skipped: { icon: "-", style: "dim" },
257
+ };
258
+ function doctorView(body, paint) {
259
+ if (!isObj(body) || !Array.isArray(body["checks"]))
260
+ return null;
261
+ const cli = isObj(body["cli"]) ? body["cli"] : {};
262
+ const checks = body["checks"].filter(isObj);
263
+ const width = Math.max(0, ...checks.map((c) => String(c["id"] ?? "").length));
264
+ const out = [paint(`meshy-cli ${String(cli["version"] ?? "?")} · node ${String(cli["node"] ?? "?")} · ${String(cli["platform"] ?? "")} ${String(cli["arch"] ?? "")}`, "dim")];
265
+ for (const c of checks) {
266
+ const s = CHECK_STYLE[String(c["status"])] ?? CHECK_STYLE["skipped"];
267
+ out.push(`${paint(s.icon, s.style)} ${String(c["id"] ?? "").padEnd(width)} ${String(c["detail"] ?? "")}`);
268
+ }
269
+ const api = body["api_ready"] === null ? paint("not checked (--check-api)", "dim") : yesNo(body["api_ready"] === true, paint);
270
+ out.push("", `Local ready ${yesNo(body["local_ready"] === true, paint)}`, `API ready ${api}`);
271
+ return out.join("\n");
272
+ }
273
+ function downloadView(body, paint) {
274
+ if (!isObj(body))
275
+ return null;
276
+ const downloads = isObj(body["downloads"]) ? body["downloads"] : null;
277
+ if (!downloads && Array.isArray(body["assets"])) {
278
+ const assets = body["assets"].filter(isObj);
279
+ if (assets.length === 0)
280
+ return paint("No downloadable assets.", "dim");
281
+ return table(["KEY", "KIND", "FORMAT", "FILE"], assets.map((a) => [String(a["key"] ?? ""), String(a["kind"] ?? "-"), String(a["format"] ?? "-"), String(a["filename"] ?? "-")]), paint);
282
+ }
283
+ if (!downloads)
284
+ return null;
285
+ if (downloads["state"] === "not_ready")
286
+ return `${paint("⧗", "yellow")} Not ready yet — nothing to download`;
287
+ const files = Array.isArray(downloads["files"]) ? downloads["files"].filter(isObj) : [];
288
+ const written = files.filter((f) => f["status"] === "written");
289
+ const out = [`${paint("✓", "green")} Saved ${plural(written.length, "file")}`];
290
+ for (const f of files) {
291
+ const failed = f["status"] === "failed";
292
+ const mark = failed ? paint("✗", "red") : f["status"] === "skipped" ? paint("-", "dim") : " ";
293
+ out.push(`${mark} ${displayPath(String(f["path"] ?? f["key"] ?? ""))}${failed && f["error"] ? ` ${paint(String(f["error"]), "red")}` : ""}`);
294
+ }
295
+ if (str(downloads["metadata_path"]))
296
+ out.push(paint(`metadata: ${displayPath(downloads["metadata_path"])}`, "dim"));
297
+ return out.join("\n");
298
+ }
299
+ // ---------------------------------------------------------------------------
300
+ // auth
301
+ // ---------------------------------------------------------------------------
302
+ const SOURCE = {
303
+ flag: "--api-key",
304
+ env: "MESHY_API_KEY",
305
+ "env-file": "--api-key-file",
306
+ file: "stored profile",
307
+ };
308
+ function loginView(body, paint) {
309
+ if (!isObj(body))
310
+ return null;
311
+ if (body["status"] === "device_flow_started") {
312
+ return [
313
+ `${paint("⧗", "yellow")} Approve this login in the browser`,
314
+ `${paint("Code".padEnd(9), "dim")}${String(body["user_code"] ?? "")}`,
315
+ `${paint("Open".padEnd(9), "dim")}${String(body["verification_url"] ?? "")}`,
316
+ paint(`then: ${String(body["poll_command"] ?? "meshy auth login --device-flow <id>")}`, "dim"),
317
+ ].join("\n");
318
+ }
319
+ if (body["status"] !== "logged_in")
320
+ return null;
321
+ const hint = str(body["hint"]);
322
+ const out = [
323
+ hint ? `${paint("!", "yellow")} Logged in, but the credential could not be verified` : `${paint("✓", "green")} Logged in to Meshy`,
324
+ `${paint("Profile".padEnd(9), "dim")}${String(body["profile"] ?? "default")}`,
325
+ ];
326
+ const balance = balanceOf(body);
327
+ if (balance !== null)
328
+ out.push(`${paint("Balance".padEnd(9), "dim")}${balance}`);
329
+ if (str(body["credentials_file"]))
330
+ out.push(`${paint("Saved to".padEnd(9), "dim")}${tildify(body["credentials_file"])}`);
331
+ if (hint)
332
+ out.push(paint(`hint: ${hint}`, "dim"));
333
+ return out.join("\n");
334
+ }
335
+ function authStatusView(body, paint) {
336
+ if (!isObj(body) || typeof body["authenticated"] !== "boolean")
337
+ return null;
338
+ const hint = str(body["hint"]);
339
+ if (!body["authenticated"]) {
340
+ return [`${paint("✗", "red")} Not logged in`, paint(`hint: ${hint ?? "meshy auth login"}`, "dim")].join("\n");
341
+ }
342
+ const source = SOURCE[String(body["source"])] ?? String(body["source"] ?? "");
343
+ const profile = str(body["profile"]);
344
+ const head = body["verified"] === false
345
+ ? `${paint("✗", "red")} Credential rejected`
346
+ : body["verified"] === true
347
+ ? `${paint("✓", "green")} Logged in`
348
+ : `${paint("✓", "green")} Logged in ${paint("(not verified: --offline)", "dim")}`;
349
+ const out = [head];
350
+ const row = (label, value) => {
351
+ out.push(`${paint(label.padEnd(11), "dim")}${value}`);
352
+ };
353
+ row("Using", profile ? `${source} "${profile}"` : source);
354
+ const balance = balanceOf(body);
355
+ if (balance !== null)
356
+ row("Balance", balance);
357
+ row("Credential", String(body["credential"] ?? ""));
358
+ const profiles = Array.isArray(body["profiles"]) ? body["profiles"].map(String) : [];
359
+ if (profiles.length > 1)
360
+ row("Profiles", profiles.map((p) => (p === body["active_profile"] ? `${p} (active)` : p)).join(", "));
361
+ if (str(body["base_url_v1"]) && !String(body["base_url_v1"]).startsWith("https://api.meshy.ai/"))
362
+ row("API", body["base_url_v1"]);
363
+ if (hint)
364
+ out.push(paint(`hint: ${hint}`, "dim"));
365
+ return out.join("\n");
366
+ }
367
+ function profileChangeView(body, paint) {
368
+ if (!isObj(body))
369
+ return null;
370
+ const ok = `${paint("✓", "green")} `;
371
+ const profile = String(body["profile"] ?? body["active_profile"] ?? "");
372
+ switch (body["status"]) {
373
+ case "switched":
374
+ return `${ok}Switched to profile ${profile}`;
375
+ case "removed":
376
+ return `${ok}Logged out of profile ${profile}`;
377
+ case "nothing_to_remove":
378
+ return paint(`No stored profile named ${profile} — nothing to log out.`, "dim");
379
+ case "deleted":
380
+ return `${ok}Removed every stored credential (${tildify(String(body["credentials_file"] ?? ""))})`;
381
+ case "nothing_to_delete":
382
+ return paint("No stored credentials — nothing to remove.", "dim");
383
+ }
384
+ return null;
385
+ }
386
+ function profileListView(body, paint) {
387
+ if (!isObj(body) || !Array.isArray(body["profiles"]))
388
+ return null;
389
+ const profiles = body["profiles"].filter(isObj);
390
+ if (profiles.length === 0)
391
+ return `${paint("No stored profiles.", "dim")}\n${paint("hint: meshy auth login", "dim")}`;
392
+ const rows = profiles.map((p) => [
393
+ `${p["active"] ? "*" : " "} ${String(p["name"] ?? "")}`,
394
+ p["kind"] === "oauth" ? "browser login" : "API key",
395
+ String(p["credential"] ?? ""),
396
+ typeof p["created_at"] === "number" ? relativeTime(p["created_at"]) : typeof p["created_at"] === "string" ? String(p["created_at"]).slice(0, 10) : "-",
397
+ ]);
398
+ return table([" PROFILE", "KIND", "CREDENTIAL", "CREATED"], rows, paint);
399
+ }
400
+ /** `balance` in auth payloads is the API's `{balance: n}` object. */
401
+ function balanceOf(body) {
402
+ const b = body["balance"];
403
+ const n = typeof b === "number" ? b : isObj(b) && typeof b["balance"] === "number" ? b["balance"] : null;
404
+ return n === null ? null : `${n.toLocaleString("en-US")} credits`;
405
+ }
406
+ function tildify(p) {
407
+ const home = process.env["HOME"];
408
+ return home && p.startsWith(`${home}/`) ? `~${p.slice(home.length)}` : p;
409
+ }
410
+ // ---------------------------------------------------------------------------
411
+ // Fallback
412
+ // ---------------------------------------------------------------------------
413
+ /** The generic dump, made readable: times as local time, URLs without their signatures. */
414
+ function fallback(body, paint) {
415
+ return renderPretty(humanize(body), 0, paint);
416
+ }
417
+ function humanize(v, key = "") {
418
+ if (Array.isArray(v))
419
+ return v.map((x) => humanize(x));
420
+ if (isObj(v))
421
+ return Object.fromEntries(Object.entries(v).map(([k, x]) => [k, humanize(x, k)]));
422
+ // Epoch milliseconds: anything after 2001 in a *_at field.
423
+ if (typeof v === "number" && key.endsWith("_at") && v > 1e12)
424
+ return localTime(v);
425
+ if (typeof v === "string" && /^https?:\/\//i.test(v))
426
+ return shortUrl(v);
427
+ return v;
428
+ }
429
+ // ---------------------------------------------------------------------------
430
+ // Small formatters
431
+ // ---------------------------------------------------------------------------
432
+ /**
433
+ * A recovery command as a person should run it. Hints are written for agents
434
+ * (`--output-schema v1 --format json`), and since D-065 an explicit
435
+ * `--output-schema v1` means JSON — copied at a terminal it would answer in
436
+ * braces. The views are the same in both schemas, so the flags only get in the way.
437
+ */
438
+ export function forHumans(text) {
439
+ return text.replace(/\s+--output-schema[ =]v1\b/g, "").replace(/\s+--format[ =](?:json|ndjson)\b/g, "");
440
+ }
441
+ /**
442
+ * The line under `error:` for a person: the hint, else the recovery command,
443
+ * else — when the failure still names a task (a poll that lost the network) —
444
+ * the fact that the server keeps running it and how to pick it up again.
445
+ */
446
+ export function humanHint(hint, recovery, result) {
447
+ if (typeof hint === "string" && hint)
448
+ return forHumans(hint);
449
+ if (recovery)
450
+ return forHumans(recovery);
451
+ const wait = isObj(result) && isObj(result["next"]) ? str(result["next"]["wait"]) : null;
452
+ return wait ? `the task keeps running on the server — resume with: ${forHumans(wait)}` : undefined;
453
+ }
454
+ export function formatDuration(seconds) {
455
+ const s = Math.max(0, Math.round(seconds));
456
+ if (s < 60)
457
+ return `${s}s`;
458
+ if (s < 3600)
459
+ return `${Math.floor(s / 60)}m ${String(s % 60).padStart(2, "0")}s`;
460
+ return `${Math.floor(s / 3600)}h ${String(Math.floor((s % 3600) / 60)).padStart(2, "0")}m`;
461
+ }
462
+ export function localTime(ms) {
463
+ const d = new Date(ms);
464
+ const p = (n) => String(n).padStart(2, "0");
465
+ return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())} ${p(d.getHours())}:${p(d.getMinutes())}`;
466
+ }
467
+ export function relativeTime(ms, now = Date.now()) {
468
+ const s = Math.round((now - ms) / 1000);
469
+ if (s < 0)
470
+ return localTime(ms);
471
+ if (s < 60)
472
+ return "just now";
473
+ if (s < 3600)
474
+ return `${Math.floor(s / 60)}m ago`;
475
+ if (s < 86_400)
476
+ return `${Math.floor(s / 3600)}h ago`;
477
+ if (s < 7 * 86_400)
478
+ return `${Math.floor(s / 86_400)}d ago`;
479
+ return localTime(ms).slice(0, 10);
480
+ }
481
+ /** Drop the query string (signatures) and keep the host plus the last two path segments. */
482
+ export function shortUrl(url, max = 80) {
483
+ const bare = url.split(/[?#]/)[0];
484
+ if (bare.length <= max)
485
+ return bare;
486
+ const m = /^(https?:\/\/[^/]+)(\/.*)$/i.exec(bare);
487
+ if (!m)
488
+ return `${bare.slice(0, max - 1)}…`;
489
+ const segs = m[2].split("/").filter(Boolean);
490
+ return `${m[1]}/…/${segs.slice(-2).join("/")}`;
491
+ }
492
+ /** Columns padded on plain text, painted after, so escapes never skew the widths. */
493
+ export function table(headers, rows, paint, styleFor) {
494
+ const all = headers ? [headers, ...rows] : rows;
495
+ const widths = all[0]?.map((_, c) => Math.max(...all.map((r) => (r[c] ?? "").length))) ?? [];
496
+ const line = (r, head) => r
497
+ .map((cell, c) => {
498
+ const padded = c === r.length - 1 ? cell : cell.padEnd(widths[c]);
499
+ const style = head ? "dim" : styleFor?.(c, cell);
500
+ return style ? paint(padded, style) : padded;
501
+ })
502
+ .join(" ")
503
+ .trimEnd();
504
+ return [...(headers ? [line(headers, true)] : []), ...rows.map((r) => line(r, false))].join("\n");
505
+ }
506
+ function statusStyle(status) {
507
+ if (status === "SUCCEEDED")
508
+ return "green";
509
+ if (status === "FAILED" || status === "CANCELED" || status === "EXPIRED")
510
+ return "red";
511
+ if (status === "PENDING" || status === "IN_PROGRESS")
512
+ return "yellow";
513
+ return null;
514
+ }
515
+ function yesNo(v, paint) {
516
+ return v ? paint("yes", "green") : paint("no", "red");
517
+ }
518
+ function plural(n, word) {
519
+ return `${n} ${word}${n === 1 ? "" : "s"}`;
520
+ }
521
+ function displayPath(p) {
522
+ const rel = relative(process.cwd(), p);
523
+ return rel && !rel.startsWith("..") ? rel : p;
524
+ }
525
+ // ---------------------------------------------------------------------------
526
+ // Shape helpers
527
+ // ---------------------------------------------------------------------------
528
+ function isObj(v) {
529
+ return v !== null && typeof v === "object" && !Array.isArray(v);
530
+ }
531
+ function str(v) {
532
+ return typeof v === "string" && v ? v : null;
533
+ }
534
+ function isEnvelope(v) {
535
+ return isObj(v) && v["schema_version"] === SCHEMA_VERSION && "result" in v;
536
+ }
537
+ /** A v1 result's `task` (a TaskView), or a legacy summary normalised into one. */
538
+ function taskFrom(body) {
539
+ const t = body["task"];
540
+ if (isObj(t) && typeof t["task_id"] === "string")
541
+ return t;
542
+ if (typeof body["id"] === "string" && typeof body["status"] === "string")
543
+ return toTaskView(body);
544
+ return null;
545
+ }
546
+ function savedFiles(body) {
547
+ const downloads = isObj(body["downloads"]) ? body["downloads"] : null;
548
+ const files = downloads && Array.isArray(downloads["files"]) ? downloads["files"] : [];
549
+ return files.filter((f) => isObj(f) && f["status"] === "written" && typeof f["path"] === "string").map((f) => f["path"]);
550
+ }
551
+ function elapsedOf(body) {
552
+ if (typeof body["elapsed_seconds"] === "number")
553
+ return body["elapsed_seconds"];
554
+ for (const k of ["wait", "stream"]) {
555
+ const info = body[k];
556
+ if (isObj(info) && typeof info["elapsed_seconds"] === "number")
557
+ return info["elapsed_seconds"];
558
+ }
559
+ return null;
560
+ }
561
+ function countUrls(v) {
562
+ if (typeof v === "string")
563
+ return /^https?:\/\//i.test(v) ? 1 : 0;
564
+ if (Array.isArray(v))
565
+ return v.reduce((n, x) => n + countUrls(x), 0);
566
+ if (isObj(v))
567
+ return Object.values(v).reduce((n, x) => n + countUrls(x), 0);
568
+ return 0;
569
+ }
570
+ //# sourceMappingURL=views.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"views.js","sourceRoot":"","sources":["../../src/internal/views.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../src/root.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwCpC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAW/C,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAU7C,CAAC;AA+EH,wBAAgB,gBAAgB,IAAI,OAAO,CAoE1C"}
1
+ {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../src/root.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwCpC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAW/C,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAU7C,CAAC;AA+EH,wBAAgB,gBAAgB,IAAI,OAAO,CAuE1C"}
package/dist/root.js CHANGED
@@ -207,8 +207,11 @@ export function buildRootCommand() {
207
207
  // unified exit in index.ts instead of Commander's own process.exit(1), so
208
208
  // every command in the tree throws CommanderError. addCommand() does not
209
209
  // inherit this setting, hence the walk.
210
+ // The same exit is the only place an error is printed: Commander's own
211
+ // `error: …` line would otherwise appear twice (its copy, then ours).
210
212
  walkCommands(program, (cmd) => {
211
213
  cmd.exitOverride();
214
+ cmd.configureOutput({ outputError: () => { } });
212
215
  });
213
216
  return program;
214
217
  }