@meshy-ai/cli 0.1.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/.env.example +14 -0
- package/LICENSE +21 -0
- package/README.md +376 -0
- package/dist/client/endpoints/analyze-printability.d.ts +5 -0
- package/dist/client/endpoints/analyze-printability.d.ts.map +1 -0
- package/dist/client/endpoints/analyze-printability.js +7 -0
- package/dist/client/endpoints/analyze-printability.js.map +1 -0
- package/dist/client/endpoints/animate.d.ts +6 -0
- package/dist/client/endpoints/animate.d.ts.map +1 -0
- package/dist/client/endpoints/animate.js +8 -0
- package/dist/client/endpoints/animate.js.map +1 -0
- package/dist/client/endpoints/balance.d.ts +9 -0
- package/dist/client/endpoints/balance.d.ts.map +1 -0
- package/dist/client/endpoints/balance.js +27 -0
- package/dist/client/endpoints/balance.js.map +1 -0
- package/dist/client/endpoints/base.d.ts +24 -0
- package/dist/client/endpoints/base.d.ts.map +1 -0
- package/dist/client/endpoints/base.js +87 -0
- package/dist/client/endpoints/base.js.map +1 -0
- package/dist/client/endpoints/convert.d.ts +5 -0
- package/dist/client/endpoints/convert.d.ts.map +1 -0
- package/dist/client/endpoints/convert.js +7 -0
- package/dist/client/endpoints/convert.js.map +1 -0
- package/dist/client/endpoints/image-to-3d.d.ts +5 -0
- package/dist/client/endpoints/image-to-3d.d.ts.map +1 -0
- package/dist/client/endpoints/image-to-3d.js +7 -0
- package/dist/client/endpoints/image-to-3d.js.map +1 -0
- package/dist/client/endpoints/image-to-image.d.ts +5 -0
- package/dist/client/endpoints/image-to-image.d.ts.map +1 -0
- package/dist/client/endpoints/image-to-image.js +7 -0
- package/dist/client/endpoints/image-to-image.js.map +1 -0
- package/dist/client/endpoints/multi-color-print.d.ts +5 -0
- package/dist/client/endpoints/multi-color-print.d.ts.map +1 -0
- package/dist/client/endpoints/multi-color-print.js +7 -0
- package/dist/client/endpoints/multi-color-print.js.map +1 -0
- package/dist/client/endpoints/multi-image-to-3d.d.ts +5 -0
- package/dist/client/endpoints/multi-image-to-3d.d.ts.map +1 -0
- package/dist/client/endpoints/multi-image-to-3d.js +7 -0
- package/dist/client/endpoints/multi-image-to-3d.js.map +1 -0
- package/dist/client/endpoints/remesh.d.ts +5 -0
- package/dist/client/endpoints/remesh.d.ts.map +1 -0
- package/dist/client/endpoints/remesh.js +7 -0
- package/dist/client/endpoints/remesh.js.map +1 -0
- package/dist/client/endpoints/repair-printability.d.ts +5 -0
- package/dist/client/endpoints/repair-printability.d.ts.map +1 -0
- package/dist/client/endpoints/repair-printability.js +7 -0
- package/dist/client/endpoints/repair-printability.js.map +1 -0
- package/dist/client/endpoints/resize.d.ts +5 -0
- package/dist/client/endpoints/resize.d.ts.map +1 -0
- package/dist/client/endpoints/resize.js +7 -0
- package/dist/client/endpoints/resize.js.map +1 -0
- package/dist/client/endpoints/retexture.d.ts +5 -0
- package/dist/client/endpoints/retexture.d.ts.map +1 -0
- package/dist/client/endpoints/retexture.js +7 -0
- package/dist/client/endpoints/retexture.js.map +1 -0
- package/dist/client/endpoints/rigging.d.ts +6 -0
- package/dist/client/endpoints/rigging.d.ts.map +1 -0
- package/dist/client/endpoints/rigging.js +8 -0
- package/dist/client/endpoints/rigging.js.map +1 -0
- package/dist/client/endpoints/text-to-3d.d.ts +6 -0
- package/dist/client/endpoints/text-to-3d.d.ts.map +1 -0
- package/dist/client/endpoints/text-to-3d.js +8 -0
- package/dist/client/endpoints/text-to-3d.js.map +1 -0
- package/dist/client/endpoints/text-to-image.d.ts +5 -0
- package/dist/client/endpoints/text-to-image.d.ts.map +1 -0
- package/dist/client/endpoints/text-to-image.js +7 -0
- package/dist/client/endpoints/text-to-image.js.map +1 -0
- package/dist/client/errors.d.ts +23 -0
- package/dist/client/errors.d.ts.map +1 -0
- package/dist/client/errors.js +82 -0
- package/dist/client/errors.js.map +1 -0
- package/dist/client/index.d.ts +48 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +147 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/types.d.ts +298 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +97 -0
- package/dist/client/types.js.map +1 -0
- package/dist/cmd/analyze-printability.d.ts +8 -0
- package/dist/cmd/analyze-printability.d.ts.map +1 -0
- package/dist/cmd/analyze-printability.js +34 -0
- package/dist/cmd/analyze-printability.js.map +1 -0
- package/dist/cmd/animate.d.ts +9 -0
- package/dist/cmd/animate.d.ts.map +1 -0
- package/dist/cmd/animate.js +51 -0
- package/dist/cmd/animate.js.map +1 -0
- package/dist/cmd/api.d.ts +9 -0
- package/dist/cmd/api.d.ts.map +1 -0
- package/dist/cmd/api.js +50 -0
- package/dist/cmd/api.js.map +1 -0
- package/dist/cmd/auth.d.ts +19 -0
- package/dist/cmd/auth.d.ts.map +1 -0
- package/dist/cmd/auth.js +583 -0
- package/dist/cmd/auth.js.map +1 -0
- package/dist/cmd/balance.d.ts +6 -0
- package/dist/cmd/balance.d.ts.map +1 -0
- package/dist/cmd/balance.js +14 -0
- package/dist/cmd/balance.js.map +1 -0
- package/dist/cmd/convert.d.ts +8 -0
- package/dist/cmd/convert.d.ts.map +1 -0
- package/dist/cmd/convert.js +40 -0
- package/dist/cmd/convert.js.map +1 -0
- package/dist/cmd/delete.d.ts +7 -0
- package/dist/cmd/delete.d.ts.map +1 -0
- package/dist/cmd/delete.js +19 -0
- package/dist/cmd/delete.js.map +1 -0
- package/dist/cmd/image-to-3d.d.ts +12 -0
- package/dist/cmd/image-to-3d.d.ts.map +1 -0
- package/dist/cmd/image-to-3d.js +97 -0
- package/dist/cmd/image-to-3d.js.map +1 -0
- package/dist/cmd/image-to-image.d.ts +5 -0
- package/dist/cmd/image-to-image.d.ts.map +1 -0
- package/dist/cmd/image-to-image.js +56 -0
- package/dist/cmd/image-to-image.js.map +1 -0
- package/dist/cmd/make.d.ts +31 -0
- package/dist/cmd/make.d.ts.map +1 -0
- package/dist/cmd/make.js +195 -0
- package/dist/cmd/make.js.map +1 -0
- package/dist/cmd/multi-color-print.d.ts +6 -0
- package/dist/cmd/multi-color-print.d.ts.map +1 -0
- package/dist/cmd/multi-color-print.js +44 -0
- package/dist/cmd/multi-color-print.js.map +1 -0
- package/dist/cmd/multi-image-to-3d.d.ts +5 -0
- package/dist/cmd/multi-image-to-3d.d.ts.map +1 -0
- package/dist/cmd/multi-image-to-3d.js +72 -0
- package/dist/cmd/multi-image-to-3d.js.map +1 -0
- package/dist/cmd/remesh.d.ts +8 -0
- package/dist/cmd/remesh.d.ts.map +1 -0
- package/dist/cmd/remesh.js +49 -0
- package/dist/cmd/remesh.js.map +1 -0
- package/dist/cmd/repair-printability.d.ts +7 -0
- package/dist/cmd/repair-printability.d.ts.map +1 -0
- package/dist/cmd/repair-printability.js +32 -0
- package/dist/cmd/repair-printability.js.map +1 -0
- package/dist/cmd/resize.d.ts +8 -0
- package/dist/cmd/resize.d.ts.map +1 -0
- package/dist/cmd/resize.js +51 -0
- package/dist/cmd/resize.js.map +1 -0
- package/dist/cmd/resources.d.ts +18 -0
- package/dist/cmd/resources.d.ts.map +1 -0
- package/dist/cmd/resources.js +59 -0
- package/dist/cmd/resources.js.map +1 -0
- package/dist/cmd/retexture.d.ts +5 -0
- package/dist/cmd/retexture.d.ts.map +1 -0
- package/dist/cmd/retexture.js +64 -0
- package/dist/cmd/retexture.js.map +1 -0
- package/dist/cmd/rigging.d.ts +6 -0
- package/dist/cmd/rigging.d.ts.map +1 -0
- package/dist/cmd/rigging.js +40 -0
- package/dist/cmd/rigging.js.map +1 -0
- package/dist/cmd/text-to-3d.d.ts +14 -0
- package/dist/cmd/text-to-3d.d.ts.map +1 -0
- package/dist/cmd/text-to-3d.js +76 -0
- package/dist/cmd/text-to-3d.js.map +1 -0
- package/dist/cmd/text-to-image.d.ts +5 -0
- package/dist/cmd/text-to-image.d.ts.map +1 -0
- package/dist/cmd/text-to-image.js +53 -0
- package/dist/cmd/text-to-image.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +46 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/config.d.ts +46 -0
- package/dist/internal/config.d.ts.map +1 -0
- package/dist/internal/config.js +94 -0
- package/dist/internal/config.js.map +1 -0
- package/dist/internal/credentials.d.ts +106 -0
- package/dist/internal/credentials.d.ts.map +1 -0
- package/dist/internal/credentials.js +297 -0
- package/dist/internal/credentials.js.map +1 -0
- package/dist/internal/device-state.d.ts +45 -0
- package/dist/internal/device-state.d.ts.map +1 -0
- package/dist/internal/device-state.js +180 -0
- package/dist/internal/device-state.js.map +1 -0
- package/dist/internal/device.d.ts +79 -0
- package/dist/internal/device.d.ts.map +1 -0
- package/dist/internal/device.js +374 -0
- package/dist/internal/device.js.map +1 -0
- package/dist/internal/download.d.ts +34 -0
- package/dist/internal/download.d.ts.map +1 -0
- package/dist/internal/download.js +283 -0
- package/dist/internal/download.js.map +1 -0
- package/dist/internal/errors.d.ts +66 -0
- package/dist/internal/errors.d.ts.map +1 -0
- package/dist/internal/errors.js +169 -0
- package/dist/internal/errors.js.map +1 -0
- package/dist/internal/file-input.d.ts +24 -0
- package/dist/internal/file-input.d.ts.map +1 -0
- package/dist/internal/file-input.js +164 -0
- package/dist/internal/file-input.js.map +1 -0
- package/dist/internal/flags.d.ts +9 -0
- package/dist/internal/flags.d.ts.map +1 -0
- package/dist/internal/flags.js +31 -0
- package/dist/internal/flags.js.map +1 -0
- package/dist/internal/global-options.d.ts +16 -0
- package/dist/internal/global-options.d.ts.map +1 -0
- package/dist/internal/global-options.js +57 -0
- package/dist/internal/global-options.js.map +1 -0
- package/dist/internal/headless.d.ts +69 -0
- package/dist/internal/headless.d.ts.map +1 -0
- package/dist/internal/headless.js +101 -0
- package/dist/internal/headless.js.map +1 -0
- package/dist/internal/image-models.d.ts +20 -0
- package/dist/internal/image-models.d.ts.map +1 -0
- package/dist/internal/image-models.js +40 -0
- package/dist/internal/image-models.js.map +1 -0
- package/dist/internal/logger.d.ts +14 -0
- package/dist/internal/logger.d.ts.map +1 -0
- package/dist/internal/logger.js +42 -0
- package/dist/internal/logger.js.map +1 -0
- package/dist/internal/make-plan.d.ts +41 -0
- package/dist/internal/make-plan.d.ts.map +1 -0
- package/dist/internal/make-plan.js +67 -0
- package/dist/internal/make-plan.js.map +1 -0
- package/dist/internal/oauth.d.ts +95 -0
- package/dist/internal/oauth.d.ts.map +1 -0
- package/dist/internal/oauth.js +365 -0
- package/dist/internal/oauth.js.map +1 -0
- package/dist/internal/output.d.ts +15 -0
- package/dist/internal/output.d.ts.map +1 -0
- package/dist/internal/output.js +66 -0
- package/dist/internal/output.js.map +1 -0
- package/dist/internal/payload.d.ts +9 -0
- package/dist/internal/payload.d.ts.map +1 -0
- package/dist/internal/payload.js +42 -0
- package/dist/internal/payload.js.map +1 -0
- package/dist/internal/poll.d.ts +17 -0
- package/dist/internal/poll.d.ts.map +1 -0
- package/dist/internal/poll.js +27 -0
- package/dist/internal/poll.js.map +1 -0
- package/dist/internal/pricing.d.ts +23 -0
- package/dist/internal/pricing.d.ts.map +1 -0
- package/dist/internal/pricing.js +24 -0
- package/dist/internal/pricing.js.map +1 -0
- package/dist/internal/report.d.ts +40 -0
- package/dist/internal/report.d.ts.map +1 -0
- package/dist/internal/report.js +48 -0
- package/dist/internal/report.js.map +1 -0
- package/dist/internal/runtime.d.ts +66 -0
- package/dist/internal/runtime.d.ts.map +1 -0
- package/dist/internal/runtime.js +160 -0
- package/dist/internal/runtime.js.map +1 -0
- package/dist/internal/task-command.d.ts +39 -0
- package/dist/internal/task-command.d.ts.map +1 -0
- package/dist/internal/task-command.js +189 -0
- package/dist/internal/task-command.js.map +1 -0
- package/dist/internal/update-notifier.d.ts +160 -0
- package/dist/internal/update-notifier.d.ts.map +1 -0
- package/dist/internal/update-notifier.js +445 -0
- package/dist/internal/update-notifier.js.map +1 -0
- package/dist/internal/user-agent.d.ts +6 -0
- package/dist/internal/user-agent.d.ts.map +1 -0
- package/dist/internal/user-agent.js +7 -0
- package/dist/internal/user-agent.js.map +1 -0
- package/dist/internal/version.d.ts +2 -0
- package/dist/internal/version.d.ts.map +1 -0
- package/dist/internal/version.js +11 -0
- package/dist/internal/version.js.map +1 -0
- package/dist/root.d.ts +13 -0
- package/dist/root.d.ts.map +1 -0
- package/dist/root.js +148 -0
- package/dist/root.js.map +1 -0
- package/package.json +65 -0
- package/skills/meshy-cli/SKILL.md +99 -0
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Factory that wires the uniform get/list/delete/wait/create subcommands for
|
|
3
|
+
* any async-task resource. Keeps the per-resource modules focused on their
|
|
4
|
+
* unique create-flag shape.
|
|
5
|
+
*/
|
|
6
|
+
import { Command, Option } from "commander";
|
|
7
|
+
import { downloadArtifacts } from "./download.js";
|
|
8
|
+
import { resolveImageFields, resolveModelFields } from "./file-input.js";
|
|
9
|
+
import { pollUntilTerminal } from "./poll.js";
|
|
10
|
+
import { emit } from "./output.js";
|
|
11
|
+
import { mergePayload, parseJsonFlag } from "./payload.js";
|
|
12
|
+
import { printReport } from "./report.js";
|
|
13
|
+
import { getUpdateNotice } from "./update-notifier.js";
|
|
14
|
+
import { buildRuntime, readGlobalFlags } from "./runtime.js";
|
|
15
|
+
import { summarizeTask, TERMINAL_STATUSES } from "../client/types.js";
|
|
16
|
+
import { UsageError } from "./errors.js";
|
|
17
|
+
import { logger } from "./logger.js";
|
|
18
|
+
export function buildResourceCommand(spec) {
|
|
19
|
+
const cmd = new Command(spec.name).description(spec.description);
|
|
20
|
+
// create
|
|
21
|
+
const createCmd = new Command("create").description(spec.create.description);
|
|
22
|
+
spec.create.configure(createCmd);
|
|
23
|
+
createCmd
|
|
24
|
+
.addOption(new Option("--data <json>", "raw JSON payload (or @file.json); merges with flags"))
|
|
25
|
+
.addOption(new Option("--async", "return the task_id immediately without polling; query later with `<resource> wait <id>` or `get <id>`").default(false))
|
|
26
|
+
.addOption(new Option("--timeout <seconds>", "max seconds to poll in sync mode").default("600"))
|
|
27
|
+
.action(async (opts, thisCmd) => {
|
|
28
|
+
const runtime = await buildRuntime(readGlobalFlags(thisCmd));
|
|
29
|
+
const endpoint = spec.endpointOf(runtime.client);
|
|
30
|
+
const data = parseJsonFlag(opts.data, "--data");
|
|
31
|
+
// Resolve local file paths + preflight URLs for image and 3D-model
|
|
32
|
+
// inputs before building the payload — fail fast on missing inputs.
|
|
33
|
+
await resolveImageFields(opts);
|
|
34
|
+
await resolveModelFields(opts);
|
|
35
|
+
const flagPayload = spec.create.toPayload(opts);
|
|
36
|
+
const defaults = spec.create.toDefaults?.(opts) ?? {};
|
|
37
|
+
const payload = mergePayload(defaults, data, flagPayload);
|
|
38
|
+
logger.debug("create payload", payload);
|
|
39
|
+
const taskId = await endpoint.create(payload);
|
|
40
|
+
const runAsync = Boolean(opts.async);
|
|
41
|
+
const timeoutSeconds = Number(opts.timeout ?? 600);
|
|
42
|
+
if (runAsync) {
|
|
43
|
+
emit({
|
|
44
|
+
resource: spec.name,
|
|
45
|
+
task_id: taskId,
|
|
46
|
+
status: "PENDING",
|
|
47
|
+
hint: `meshy-cli ${spec.name} wait ${taskId}`,
|
|
48
|
+
}, { format: runtime.flags.format, file: undefined });
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const started = Date.now();
|
|
52
|
+
const { task, timedOut } = await pollUntilTerminal(endpoint, taskId, {
|
|
53
|
+
timeoutSeconds,
|
|
54
|
+
intervalMs: runtime.config.pollIntervalMs,
|
|
55
|
+
});
|
|
56
|
+
const elapsed = (Date.now() - started) / 1000;
|
|
57
|
+
await emitTerminalOutcome(task, timedOut, elapsed, spec.name, runtime);
|
|
58
|
+
});
|
|
59
|
+
cmd.addCommand(createCmd);
|
|
60
|
+
// get
|
|
61
|
+
cmd
|
|
62
|
+
.command("get <task-id>")
|
|
63
|
+
.description("Retrieve a single task by id")
|
|
64
|
+
.action(async (taskId, _opts, thisCmd) => {
|
|
65
|
+
const runtime = await buildRuntime(readGlobalFlags(thisCmd));
|
|
66
|
+
const task = await spec.endpointOf(runtime.client).retrieve(taskId);
|
|
67
|
+
await emitTerminalOutcome(task, false, undefined, spec.name, runtime);
|
|
68
|
+
});
|
|
69
|
+
// wait
|
|
70
|
+
cmd
|
|
71
|
+
.command("wait <task-id>")
|
|
72
|
+
.description("Poll until the task reaches a terminal status")
|
|
73
|
+
.option("--timeout <seconds>", "max seconds to wait", "600")
|
|
74
|
+
.action(async (taskId, opts, thisCmd) => {
|
|
75
|
+
const runtime = await buildRuntime(readGlobalFlags(thisCmd));
|
|
76
|
+
const endpoint = spec.endpointOf(runtime.client);
|
|
77
|
+
const timeoutSeconds = Number(opts.timeout ?? 600);
|
|
78
|
+
const started = Date.now();
|
|
79
|
+
const { task, timedOut } = await pollUntilTerminal(endpoint, taskId, {
|
|
80
|
+
timeoutSeconds,
|
|
81
|
+
intervalMs: runtime.config.pollIntervalMs,
|
|
82
|
+
});
|
|
83
|
+
const elapsed = (Date.now() - started) / 1000;
|
|
84
|
+
await emitTerminalOutcome(task, timedOut, elapsed, spec.name, runtime);
|
|
85
|
+
});
|
|
86
|
+
// delete
|
|
87
|
+
cmd
|
|
88
|
+
.command("delete <task-id>")
|
|
89
|
+
.description("Delete a task")
|
|
90
|
+
.action(async (taskId, _opts, thisCmd) => {
|
|
91
|
+
const runtime = await buildRuntime(readGlobalFlags(thisCmd));
|
|
92
|
+
await spec.endpointOf(runtime.client).delete(taskId);
|
|
93
|
+
emit({ resource: spec.name, task_id: taskId, deleted: true }, {
|
|
94
|
+
format: runtime.flags.format,
|
|
95
|
+
file: runtime.flags.output,
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
// list (optional — some endpoints don't support it)
|
|
99
|
+
if (spec.supportsList !== false) {
|
|
100
|
+
cmd
|
|
101
|
+
.command("list")
|
|
102
|
+
.description("List recent tasks")
|
|
103
|
+
.option("--page <n>", "page number (1-based)", "1")
|
|
104
|
+
.option("--page-size <n>", "page size", "10")
|
|
105
|
+
.option("--sort-by <field>", "sort order (e.g. -created_at)", "-created_at")
|
|
106
|
+
.action(async (opts, thisCmd) => {
|
|
107
|
+
const runtime = await buildRuntime(readGlobalFlags(thisCmd));
|
|
108
|
+
const tasks = await spec.endpointOf(runtime.client).list({
|
|
109
|
+
page_num: Number(opts.page ?? 1),
|
|
110
|
+
page_size: Number(opts.pageSize ?? 10),
|
|
111
|
+
sort_by: opts.sortBy ?? "-created_at",
|
|
112
|
+
});
|
|
113
|
+
emit(tasks.map((t) => summarizeTask(t)), {
|
|
114
|
+
format: runtime.flags.format,
|
|
115
|
+
file: runtime.flags.output,
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
cmd
|
|
121
|
+
.command("list")
|
|
122
|
+
.description("(unsupported) Meshy does not expose a list endpoint for this resource")
|
|
123
|
+
.action(() => {
|
|
124
|
+
throw new UsageError(`${spec.name} does not support list`);
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
return cmd;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Decide how to report a task whose status is (expected to be) terminal:
|
|
131
|
+
* - with `-o`: download artifacts to the filesystem and print the status
|
|
132
|
+
* report. Failed/timed-out tasks print the FAIL form without downloads.
|
|
133
|
+
* - without `-o`: emit the familiar JSON/pretty summary to stdout.
|
|
134
|
+
*/
|
|
135
|
+
export async function emitTerminalOutcome(task, timedOut, elapsedSeconds, resourceName, runtime) {
|
|
136
|
+
const output = runtime.flags.output;
|
|
137
|
+
const succeeded = !timedOut && task.status === "SUCCEEDED";
|
|
138
|
+
if (output) {
|
|
139
|
+
if (succeeded) {
|
|
140
|
+
const { savedFiles, metadataPath } = await downloadArtifacts(task, output, resourceName);
|
|
141
|
+
const successReport = {
|
|
142
|
+
status: "SUCCESS",
|
|
143
|
+
taskId: task.id,
|
|
144
|
+
type: task.type || resourceName,
|
|
145
|
+
savedFiles,
|
|
146
|
+
metadataPath,
|
|
147
|
+
};
|
|
148
|
+
const successNotice = getUpdateNotice();
|
|
149
|
+
if (successNotice)
|
|
150
|
+
successReport._notice = successNotice;
|
|
151
|
+
printReport(successReport);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
const report = {
|
|
155
|
+
status: "FAIL",
|
|
156
|
+
taskId: task.id,
|
|
157
|
+
type: task.type || resourceName,
|
|
158
|
+
};
|
|
159
|
+
if (timedOut)
|
|
160
|
+
report.timedOut = true;
|
|
161
|
+
else if (task.task_error?.message)
|
|
162
|
+
report.error = task.task_error.message;
|
|
163
|
+
else if (task.status)
|
|
164
|
+
report.error = `task status: ${task.status}`;
|
|
165
|
+
const failNotice = getUpdateNotice();
|
|
166
|
+
if (failNotice)
|
|
167
|
+
report._notice = failNotice;
|
|
168
|
+
printReport(report);
|
|
169
|
+
process.exitCode = timedOut ? 8 : 1;
|
|
170
|
+
}
|
|
171
|
+
if (succeeded)
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
// No -o: keep the JSON/pretty summary for machine consumption.
|
|
176
|
+
emit({
|
|
177
|
+
resource: resourceName,
|
|
178
|
+
...summarizeTask(task, elapsedSeconds),
|
|
179
|
+
...(timedOut ? { timed_out: true } : {}),
|
|
180
|
+
}, { format: runtime.flags.format });
|
|
181
|
+
}
|
|
182
|
+
if (!output) {
|
|
183
|
+
if (timedOut)
|
|
184
|
+
process.exitCode = 8;
|
|
185
|
+
else if (!TERMINAL_STATUSES.has(task.status) || task.status !== "SUCCEEDED")
|
|
186
|
+
process.exitCode = 1;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=task-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-command.js","sourceRoot":"","sources":["../../src/internal/task-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Update notifier — two-channel design.
|
|
3
|
+
*
|
|
4
|
+
* Channel 1 (agents / machines): JSON outputs carry `_notice.update` when a
|
|
5
|
+
* newer version is available. Injected by attachUpdateNotice() in output.ts
|
|
6
|
+
* and report.ts.
|
|
7
|
+
*
|
|
8
|
+
* Channel 2 (humans on TTY): a single stderr line printed by
|
|
9
|
+
* printHumanUpdateHint() after emit() renders its output.
|
|
10
|
+
*
|
|
11
|
+
* Hard rule: this module MUST NEVER slow down, hang, or break the main
|
|
12
|
+
* command. Network I/O runs in a detached child process (see refreshCache)
|
|
13
|
+
* so a hung registry cannot delay process exit. All public functions are
|
|
14
|
+
* synchronous and read only from the local cache file.
|
|
15
|
+
*/
|
|
16
|
+
import { spawn } from "node:child_process";
|
|
17
|
+
import type { OutputFormat } from "./output.js";
|
|
18
|
+
export declare const REGISTRY_URL = "https://registry.npmjs.org/meshy-cli/latest";
|
|
19
|
+
export declare const FETCH_TIMEOUT_MS = 15000;
|
|
20
|
+
export declare const MAX_RESPONSE_BYTES: number;
|
|
21
|
+
export declare const CACHE_TTL_MS: number;
|
|
22
|
+
export declare const UPDATE_COMMAND = "npm i -g meshy-cli@latest";
|
|
23
|
+
/**
|
|
24
|
+
* Hidden self-command used for the detached background refresh child.
|
|
25
|
+
* CRITICAL: the child must check argv for this token and return immediately
|
|
26
|
+
* to prevent an infinite spawn chain.
|
|
27
|
+
*/
|
|
28
|
+
export declare const REFRESH_COMMAND = "__refresh-update-cache";
|
|
29
|
+
export interface UpdateNotice {
|
|
30
|
+
current: string;
|
|
31
|
+
latest: string;
|
|
32
|
+
message: string;
|
|
33
|
+
command: string;
|
|
34
|
+
}
|
|
35
|
+
interface UpdateState {
|
|
36
|
+
latest_version?: string;
|
|
37
|
+
checked_at?: number;
|
|
38
|
+
}
|
|
39
|
+
/** Returns the path to the update-state cache file. */
|
|
40
|
+
export declare function stateFilePath(): string;
|
|
41
|
+
/**
|
|
42
|
+
* Returns true when the update check should be skipped entirely.
|
|
43
|
+
* Skips when:
|
|
44
|
+
* - MESHY_CLI_NO_UPDATE_NOTIFIER is a non-empty string
|
|
45
|
+
* - any CI env var (CI, GITHUB_ACTIONS, BUILD_NUMBER, RUN_ID) is non-empty
|
|
46
|
+
* - version contains "-dev"
|
|
47
|
+
* - version matches a git-describe suffix (e.g. 0.1.0-5-gdeadbee)
|
|
48
|
+
*/
|
|
49
|
+
export declare function shouldSkip(env?: NodeJS.ProcessEnv, version?: string): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Semver 2.0.0-compliant comparison. Returns -1 if a < b, 0 if equal, 1 if a > b.
|
|
52
|
+
*
|
|
53
|
+
* Rules:
|
|
54
|
+
* - strips leading "v"
|
|
55
|
+
* - strips "+build" metadata (build metadata is ignored per semver §10)
|
|
56
|
+
* - splits prerelease on first "-"
|
|
57
|
+
* - compares numeric major/minor/patch (missing segments → 0, non-numeric → 0)
|
|
58
|
+
* - equal numerics: release > prerelease (semver §11.3)
|
|
59
|
+
* - both prereleases: compare dot-separated identifiers left-to-right (semver §11.4):
|
|
60
|
+
* numeric identifiers compare numerically
|
|
61
|
+
* alphanumeric identifiers compare lexically (ASCII)
|
|
62
|
+
* numeric < alphanumeric
|
|
63
|
+
* if all shared identifiers equal, shorter set has LOWER precedence
|
|
64
|
+
*/
|
|
65
|
+
export declare function compareVersions(a: string, b: string): -1 | 0 | 1;
|
|
66
|
+
/**
|
|
67
|
+
* Returns an UpdateNotice if latest > current, otherwise null.
|
|
68
|
+
*/
|
|
69
|
+
export declare function buildNotice(latest: string, current?: string): UpdateNotice | null;
|
|
70
|
+
/**
|
|
71
|
+
* Pure read from the cache file — no network, no TTL check.
|
|
72
|
+
*
|
|
73
|
+
* Note: a newer-version fact does not expire. TTL gates only the network
|
|
74
|
+
* refresh (isCacheStale). Once we know a newer version exists, we keep
|
|
75
|
+
* surfacing the notice until the user upgrades.
|
|
76
|
+
*
|
|
77
|
+
* Returns null on missing/corrupt file, missing latest_version, or when
|
|
78
|
+
* latest is not newer than current. Never throws.
|
|
79
|
+
*/
|
|
80
|
+
export declare function checkCached(stateFile?: string, current?: string): UpdateNotice | null;
|
|
81
|
+
/**
|
|
82
|
+
* Returns true when the cache is missing, corrupt, has no checked_at, or
|
|
83
|
+
* is older than CACHE_TTL_MS.
|
|
84
|
+
*/
|
|
85
|
+
export declare function isCacheStale(stateFile?: string, now?: number): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Returns the cached update notice if applicable, or null.
|
|
88
|
+
* This is what emit() and report paths call — synchronous, never throws.
|
|
89
|
+
*/
|
|
90
|
+
export declare function getUpdateNotice(): UpdateNotice | null;
|
|
91
|
+
/**
|
|
92
|
+
* Injects the update notice into a value before JSON serialization.
|
|
93
|
+
*
|
|
94
|
+
* Injection rules:
|
|
95
|
+
* - notice null → value unchanged
|
|
96
|
+
* - format "pretty" → unchanged (humans get the stderr line instead)
|
|
97
|
+
* - Array + format "ndjson": if non-empty and first element is a plain
|
|
98
|
+
* object, return new array with first element replaced by
|
|
99
|
+
* { ...first, _notice: { update: notice } }. Attaches ONCE on the first
|
|
100
|
+
* line only — never per-line.
|
|
101
|
+
* - Array + any other format (e.g. "json") → unchanged. A JSON array has
|
|
102
|
+
* no clean metadata slot without breaking the schema, so we leave it alone.
|
|
103
|
+
* - plain object → { ...value, _notice: { update: notice } }
|
|
104
|
+
* - anything else (string/number/null) → unchanged
|
|
105
|
+
*/
|
|
106
|
+
export declare function attachUpdateNotice(value: unknown, format: OutputFormat, notice: UpdateNotice | null): unknown;
|
|
107
|
+
/**
|
|
108
|
+
* Writes the update message to stderr ONLY when all three of
|
|
109
|
+
* io.stdout/io.stderr/io.stdin have truthy isTTY (i.e. a fully interactive
|
|
110
|
+
* terminal). NEVER writes to stdout — stdout must stay machine-parseable.
|
|
111
|
+
*
|
|
112
|
+
* Returns true if the hint was written, false otherwise.
|
|
113
|
+
*/
|
|
114
|
+
export declare function printHumanUpdateHint(notice: UpdateNotice | null, io: {
|
|
115
|
+
stdout: {
|
|
116
|
+
isTTY?: boolean;
|
|
117
|
+
};
|
|
118
|
+
stderr: {
|
|
119
|
+
isTTY?: boolean;
|
|
120
|
+
write(s: string): unknown;
|
|
121
|
+
};
|
|
122
|
+
stdin: {
|
|
123
|
+
isTTY?: boolean;
|
|
124
|
+
};
|
|
125
|
+
}): boolean;
|
|
126
|
+
/**
|
|
127
|
+
* Atomically writes the update state to disk.
|
|
128
|
+
* Uses a tmp file + rename to avoid torn JSON from concurrent CLI runs.
|
|
129
|
+
*/
|
|
130
|
+
export declare function writeState(state: UpdateState, file?: string): void;
|
|
131
|
+
/**
|
|
132
|
+
* Fetches the latest version from the npm registry.
|
|
133
|
+
* Throws on any failure — callers must swallow.
|
|
134
|
+
*/
|
|
135
|
+
export declare function fetchLatestVersion(registryUrl?: string, timeoutMs?: number): Promise<string>;
|
|
136
|
+
/**
|
|
137
|
+
* Entry point for the hidden background child command.
|
|
138
|
+
* Fetches the latest version and writes it to the cache.
|
|
139
|
+
* Must never throw — the child always exits 0.
|
|
140
|
+
*/
|
|
141
|
+
export declare function runRefreshCommand(): Promise<void>;
|
|
142
|
+
/**
|
|
143
|
+
* Fire-and-forget spawner. Spawns a detached child process to refresh the
|
|
144
|
+
* update cache in the background. NEVER throws, never awaits anything.
|
|
145
|
+
*
|
|
146
|
+
* Why a detached child instead of in-process fetch:
|
|
147
|
+
* An in-flight undici/fetch keeps the Node event loop alive, so an
|
|
148
|
+
* in-process fire-and-forget fetch would delay process exit by up to the
|
|
149
|
+
* 15s timeout — violating "never slow down the main command". A detached
|
|
150
|
+
* child is fully independent and the parent can exit immediately.
|
|
151
|
+
*/
|
|
152
|
+
export declare function refreshCache(deps?: {
|
|
153
|
+
env?: NodeJS.ProcessEnv;
|
|
154
|
+
argv?: string[];
|
|
155
|
+
scriptPath?: string;
|
|
156
|
+
stateFile?: string;
|
|
157
|
+
spawnImpl?: typeof spawn;
|
|
158
|
+
}): void;
|
|
159
|
+
export {};
|
|
160
|
+
//# sourceMappingURL=update-notifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-notifier.d.ts","sourceRoot":"","sources":["../../src/internal/update-notifier.ts"],"names":[],"mappings":"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"}
|