@miosa/cli 1.0.92 → 1.0.93

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 (42) hide show
  1. package/README.md +3 -3
  2. package/dist/app-advisor.js +6 -6
  3. package/dist/app-advisor.js.map +1 -1
  4. package/dist/bin/miosa.js +2 -2
  5. package/dist/bin/miosa.js.map +1 -1
  6. package/dist/client.d.ts +1 -1
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js +1 -1
  9. package/dist/client.js.map +1 -1
  10. package/dist/commands/agent.d.ts +10 -10
  11. package/dist/commands/agent.js +47 -47
  12. package/dist/commands/agent.js.map +1 -1
  13. package/dist/commands/app.js +1 -1
  14. package/dist/commands/app.js.map +1 -1
  15. package/dist/commands/capabilities.js +22 -22
  16. package/dist/commands/capabilities.js.map +1 -1
  17. package/dist/commands/computers.js +20 -20
  18. package/dist/commands/computers.js.map +1 -1
  19. package/dist/commands/deploy.d.ts.map +1 -1
  20. package/dist/commands/deploy.js +196 -3
  21. package/dist/commands/deploy.js.map +1 -1
  22. package/dist/commands/devices.js +12 -12
  23. package/dist/commands/devices.js.map +1 -1
  24. package/dist/commands/docker-deploy.d.ts.map +1 -1
  25. package/dist/commands/docker-deploy.js +58 -22
  26. package/dist/commands/docker-deploy.js.map +1 -1
  27. package/dist/commands/run-groups.d.ts +3 -0
  28. package/dist/commands/run-groups.d.ts.map +1 -0
  29. package/dist/commands/run-groups.js +364 -0
  30. package/dist/commands/run-groups.js.map +1 -0
  31. package/dist/commands/runs.d.ts +3 -0
  32. package/dist/commands/runs.d.ts.map +1 -0
  33. package/dist/commands/runs.js +365 -0
  34. package/dist/commands/runs.js.map +1 -0
  35. package/dist/commands/sandbox.js +26 -26
  36. package/dist/commands/sandbox.js.map +1 -1
  37. package/dist/commands/status.js +1 -1
  38. package/dist/commands/status.js.map +1 -1
  39. package/dist/types.d.ts +11 -0
  40. package/dist/types.d.ts.map +1 -1
  41. package/dist/types.js.map +1 -1
  42. package/package.json +1 -1
@@ -0,0 +1,364 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import chalk from "chalk";
4
+ import { apiPath, client, enc, runAction, unwrap, } from "./enterprise-util.js";
5
+ import { parseSse } from "../client.js";
6
+ import { isJsonMode } from "../cli-env.js";
7
+ import { renderTable } from "../ui/table.js";
8
+ function rows(raw) {
9
+ if (Array.isArray(raw))
10
+ return raw;
11
+ if (raw && typeof raw === "object") {
12
+ const value = raw;
13
+ for (const key of ["data", "groups", "items"]) {
14
+ if (Array.isArray(value[key]))
15
+ return value[key];
16
+ }
17
+ }
18
+ return [];
19
+ }
20
+ function activityRows(raw) {
21
+ if (Array.isArray(raw))
22
+ return raw;
23
+ if (raw && typeof raw === "object") {
24
+ const value = raw;
25
+ for (const key of ["data", "activity", "items"]) {
26
+ if (Array.isArray(value[key]))
27
+ return value[key];
28
+ }
29
+ }
30
+ return [];
31
+ }
32
+ function fileRows(raw) {
33
+ if (Array.isArray(raw))
34
+ return raw;
35
+ if (raw && typeof raw === "object") {
36
+ const value = raw;
37
+ for (const key of ["data", "files", "items"]) {
38
+ if (Array.isArray(value[key]))
39
+ return value[key];
40
+ }
41
+ }
42
+ return [];
43
+ }
44
+ function str(value) {
45
+ if (typeof value === "string")
46
+ return value;
47
+ if (value == null)
48
+ return "";
49
+ return String(value);
50
+ }
51
+ function colorStatus(status) {
52
+ switch ((status ?? "").toLowerCase()) {
53
+ case "running":
54
+ return chalk.green(status);
55
+ case "succeeded":
56
+ return chalk.dim(status);
57
+ case "failed":
58
+ case "canceled":
59
+ return chalk.red(status);
60
+ default:
61
+ return chalk.dim(status ?? "-");
62
+ }
63
+ }
64
+ function groupActivityData(event) {
65
+ if (!event || typeof event !== "object")
66
+ return {};
67
+ const value = event;
68
+ if (value["type"] === "unknown" && typeof value["raw"] === "string") {
69
+ try {
70
+ return JSON.parse(value["raw"]);
71
+ }
72
+ catch {
73
+ return { type: "unknown", message: value["raw"] };
74
+ }
75
+ }
76
+ if (value["data"] && typeof value["data"] === "object") {
77
+ return value["data"];
78
+ }
79
+ return value;
80
+ }
81
+ function isTerminalStatus(status) {
82
+ return (typeof status === "string" &&
83
+ ["succeeded", "failed", "canceled", "cancelled"].includes(status.toLowerCase()));
84
+ }
85
+ function sleep(ms) {
86
+ if (ms <= 0)
87
+ return Promise.resolve();
88
+ return new Promise((resolve) => setTimeout(resolve, ms));
89
+ }
90
+ async function waitForGroup(id, timeoutSec, includeRuns) {
91
+ const deadline = Date.now() + timeoutSec * 1000;
92
+ const suffix = includeRuns ? "?include=runs" : "";
93
+ while (true) {
94
+ const data = unwrap(await client().apiGet(`/api/v1/run-groups/${enc(id)}${suffix}`));
95
+ if (isTerminalStatus(data.status))
96
+ return data;
97
+ if (Date.now() >= deadline) {
98
+ throw new Error(`Timed out waiting for run group ${id}`);
99
+ }
100
+ await sleep(Math.min(2000, Math.max(0, deadline - Date.now())));
101
+ }
102
+ }
103
+ async function groupFiles(id) {
104
+ const group = unwrap(await client().apiGet(`/api/v1/run-groups/${enc(id)}?include=runs`));
105
+ const runs = Array.isArray(group["runs"]) ? group["runs"] : [];
106
+ const files = [];
107
+ for (const run of runs) {
108
+ if (!run || typeof run !== "object")
109
+ continue;
110
+ const runId = str(run["id"]);
111
+ if (!runId)
112
+ continue;
113
+ const rows = fileRows(unwrap(await client().apiGet(`/api/v1/runs/${enc(runId)}/files`)));
114
+ files.push(...rows.map((file) => ({
115
+ ...file,
116
+ run_id: file.run_id ?? runId,
117
+ })));
118
+ }
119
+ return files;
120
+ }
121
+ function localFilePath(downloadDir, file) {
122
+ const runId = str(file.run_id || "run");
123
+ const rawPath = str(file.path || file.id || "file");
124
+ const normalized = path.normalize(rawPath.replace(/^\/+/, ""));
125
+ const relativePath = normalized.startsWith("..") || path.isAbsolute(normalized)
126
+ ? str(file.id || "file")
127
+ : normalized;
128
+ return path.join(downloadDir, runId, relativePath);
129
+ }
130
+ function parseJsonFile(path) {
131
+ return JSON.parse(fs.readFileSync(path, "utf8"));
132
+ }
133
+ function manifestFromOptions(opts) {
134
+ if (opts.manifest) {
135
+ const parsed = parseJsonFile(opts.manifest);
136
+ if (Array.isArray(parsed))
137
+ return parsed;
138
+ if (parsed && typeof parsed === "object" && Array.isArray(parsed.runs)) {
139
+ return parsed.runs;
140
+ }
141
+ throw new Error("Manifest must be a JSON array or an object with a runs array.");
142
+ }
143
+ if (opts.run?.length) {
144
+ return opts.run.map((value) => JSON.parse(value));
145
+ }
146
+ return [];
147
+ }
148
+ export function register(program) {
149
+ const command = program
150
+ .command("run-groups")
151
+ .description("Create and operate run groups");
152
+ command
153
+ .command("create")
154
+ .description("Create a run group")
155
+ .requiredOption("--name <name>", "Group name")
156
+ .option("--description <text>", "Group description")
157
+ .option("--workspace <id>", "Workspace ID")
158
+ .option("--project <id>", "Project ID")
159
+ .option("--concurrency <n>", "Concurrency limit")
160
+ .option("--expected-runs <n>", "Expected run count")
161
+ .option("--metadata <json>", "Metadata JSON object")
162
+ .option("--json", "Output as JSON")
163
+ .action((opts) => runAction(async () => {
164
+ const body = {
165
+ name: opts.name,
166
+ description: opts.description,
167
+ workspace_id: opts.workspace,
168
+ project_id: opts.project,
169
+ concurrency_limit: opts.concurrency ? Number(opts.concurrency) : undefined,
170
+ expected_runs: opts.expectedRuns ? Number(opts.expectedRuns) : undefined,
171
+ metadata: opts.metadata ? JSON.parse(opts.metadata) : undefined,
172
+ };
173
+ Object.keys(body).forEach((key) => body[key] === undefined && delete body[key]);
174
+ const data = unwrap(await client().apiPost("/api/v1/run-groups", body));
175
+ if (isJsonMode(opts)) {
176
+ console.log(JSON.stringify(data, null, 2));
177
+ return;
178
+ }
179
+ console.log(chalk.green(`Created run group ${str(data.id)}`));
180
+ }));
181
+ command
182
+ .command("list")
183
+ .description("List run groups")
184
+ .option("--workspace <id>", "Filter by workspace ID")
185
+ .option("--project <id>", "Filter by project ID")
186
+ .option("--status <status>", "Filter by status")
187
+ .option("--limit <n>", "Maximum groups to return")
188
+ .option("--json", "Output as JSON")
189
+ .action((opts) => runAction(async () => {
190
+ const query = new URLSearchParams();
191
+ if (opts.workspace)
192
+ query.set("workspace_id", opts.workspace);
193
+ if (opts.project)
194
+ query.set("project_id", opts.project);
195
+ if (opts.status)
196
+ query.set("status", opts.status);
197
+ if (opts.limit)
198
+ query.set("limit", opts.limit);
199
+ const suffix = query.toString() ? `?${query.toString()}` : "";
200
+ const data = rows(unwrap(await client().apiGet(`/api/v1/run-groups${suffix}`)));
201
+ if (isJsonMode(opts)) {
202
+ console.log(JSON.stringify(data, null, 2));
203
+ return;
204
+ }
205
+ if (data.length === 0) {
206
+ console.log(chalk.dim("No run groups found."));
207
+ return;
208
+ }
209
+ renderTable(data, [
210
+ { header: "ID", key: "id", width: 18 },
211
+ { header: "NAME", key: "name", width: 28 },
212
+ { header: "STATUS", key: (row) => colorStatus(row.status), width: 12 },
213
+ { header: "RUNS", key: (row) => str(row.counts?.total ?? 0), width: 8 },
214
+ { header: "EXPECTED", key: (row) => str(row.expected_runs ?? "-"), width: 10 },
215
+ ]);
216
+ }));
217
+ command
218
+ .command("show <id>")
219
+ .description("Show one run group")
220
+ .option("--runs", "Include child runs")
221
+ .option("--json", "Output as JSON")
222
+ .action((id, opts) => runAction(async () => {
223
+ const suffix = opts.runs ? "?include=runs" : "";
224
+ const data = unwrap(await client().apiGet(`/api/v1/run-groups/${enc(id)}${suffix}`));
225
+ console.log(JSON.stringify(data, null, 2));
226
+ }));
227
+ command
228
+ .command("dispatch <id>")
229
+ .description("Dispatch a manifest of runs into a group")
230
+ .option("--manifest <file>", "JSON array or { runs: [...] } file")
231
+ .option("--run <json>", "One run JSON object; repeat for multiple runs", collect, [])
232
+ .option("--async", "Queue entries and return immediately")
233
+ .option("--json", "Output as JSON")
234
+ .action((id, opts) => runAction(async () => {
235
+ const runs = manifestFromOptions(opts);
236
+ const data = unwrap(await client().apiPost(`/api/v1/run-groups/${enc(id)}/dispatch`, {
237
+ runs,
238
+ async: opts.async || undefined,
239
+ }));
240
+ console.log(JSON.stringify(data, null, 2));
241
+ }));
242
+ command
243
+ .command("cancel <id>")
244
+ .description("Cancel a run group and running children")
245
+ .option("--json", "Output as JSON")
246
+ .action((id, opts) => runAction(async () => {
247
+ const data = unwrap(await client().apiPost(`/api/v1/run-groups/${enc(id)}/cancel`, {}));
248
+ if (isJsonMode(opts)) {
249
+ console.log(JSON.stringify(data, null, 2));
250
+ return;
251
+ }
252
+ console.log(chalk.green(`Canceled run group ${id}`));
253
+ }));
254
+ command
255
+ .command("files <id>")
256
+ .description("List or download files from every child run in a group")
257
+ .option("--download-dir <dir>", "Download all files into this directory")
258
+ .option("--json", "Output as JSON")
259
+ .action((id, opts) => runAction(async () => {
260
+ const files = await groupFiles(id);
261
+ if (opts.downloadDir) {
262
+ const downloaded = [];
263
+ for (const file of files) {
264
+ if (!file.id || !file.run_id)
265
+ continue;
266
+ const output = localFilePath(opts.downloadDir, file);
267
+ fs.mkdirSync(path.dirname(output), { recursive: true });
268
+ const bytes = await client().apiGetBinary(apiPath(`/runs/${enc(file.run_id)}/files/${enc(file.id)}/download`));
269
+ fs.writeFileSync(output, bytes);
270
+ downloaded.push({ ...file, output, bytes: bytes.length });
271
+ }
272
+ if (isJsonMode(opts)) {
273
+ console.log(JSON.stringify(downloaded, null, 2));
274
+ return;
275
+ }
276
+ console.log(chalk.green(`Downloaded ${downloaded.length} file${downloaded.length === 1 ? "" : "s"} to ${opts.downloadDir}`));
277
+ return;
278
+ }
279
+ if (isJsonMode(opts)) {
280
+ console.log(JSON.stringify(files, null, 2));
281
+ return;
282
+ }
283
+ if (files.length === 0) {
284
+ console.log(chalk.dim("No run group files found."));
285
+ return;
286
+ }
287
+ renderTable(files, [
288
+ { header: "RUN", key: (row) => str(row.run_id ?? "-"), width: 18 },
289
+ { header: "ID", key: "id", width: 18 },
290
+ { header: "KIND", key: "kind", width: 10 },
291
+ { header: "MIME", key: "mime_type", width: 24 },
292
+ { header: "SIZE", key: (row) => str(row.size_bytes ?? "-"), width: 10 },
293
+ { header: "PATH", key: (row) => str(row.path), width: 56 },
294
+ ]);
295
+ }));
296
+ command
297
+ .command("activity <id>")
298
+ .description("Show or stream run group activity")
299
+ .option("--stream", "Keep the connection open and stream new activity")
300
+ .option("--limit <n>", "Stop after N streamed activity entries")
301
+ .option("--json", "Output as JSON")
302
+ .action((id, opts) => runAction(async () => {
303
+ const path = `/api/v1/run-groups/${enc(id)}/activity`;
304
+ if (opts.stream) {
305
+ const limit = opts.limit ? Number(opts.limit) : undefined;
306
+ let seen = 0;
307
+ const res = await client().apiStream(path);
308
+ for await (const event of parseSse(res.body)) {
309
+ seen += 1;
310
+ const data = groupActivityData(event);
311
+ if (isJsonMode(opts)) {
312
+ console.log(JSON.stringify(data, null, 2));
313
+ }
314
+ else {
315
+ console.log([
316
+ chalk.dim(str(data.sequence ?? seen)),
317
+ colorStatus(data.type),
318
+ str(data.run_id),
319
+ str(data.message),
320
+ ]
321
+ .filter(Boolean)
322
+ .join(" "));
323
+ }
324
+ if (limit && seen >= limit)
325
+ break;
326
+ }
327
+ return;
328
+ }
329
+ const data = activityRows(unwrap(await client().apiGet(path)));
330
+ if (isJsonMode(opts)) {
331
+ console.log(JSON.stringify(data, null, 2));
332
+ return;
333
+ }
334
+ if (data.length === 0) {
335
+ console.log(chalk.dim("No run group activity found."));
336
+ return;
337
+ }
338
+ renderTable(data, [
339
+ { header: "SEQ", key: (row) => str(row.sequence ?? "-"), width: 8 },
340
+ { header: "TYPE", key: (row) => colorStatus(row.type), width: 18 },
341
+ { header: "RUN", key: (row) => str(row.run_id ?? "-"), width: 18 },
342
+ { header: "MESSAGE", key: (row) => str(row.message ?? ""), width: 42 },
343
+ ]);
344
+ }));
345
+ command
346
+ .command("wait <id>")
347
+ .description("Wait for a run group to reach a terminal state")
348
+ .option("--runs", "Include child runs in the final response")
349
+ .option("--timeout <seconds>", "Maximum seconds to wait", "900")
350
+ .option("--json", "Output as JSON")
351
+ .action((id, opts) => runAction(async () => {
352
+ const data = await waitForGroup(id, Number(opts.timeout ?? 900), Boolean(opts.runs));
353
+ if (isJsonMode(opts)) {
354
+ console.log(JSON.stringify(data, null, 2));
355
+ return;
356
+ }
357
+ console.log(`${chalk.green("Run group finished")} ${id} ${colorStatus(data.status)}`);
358
+ }));
359
+ }
360
+ function collect(value, values) {
361
+ values.push(value);
362
+ return values;
363
+ }
364
+ //# sourceMappingURL=run-groups.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-groups.js","sourceRoot":"","sources":["../../src/commands/run-groups.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function register(program: Command): void;
3
+ //# sourceMappingURL=runs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runs.d.ts","sourceRoot":"","sources":["../../src/commands/runs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqJzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwW/C"}