@miosa/cli 1.0.0 → 1.0.2

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 (51) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/bin/miosa.js +20 -1
  3. package/dist/bin/miosa.js.map +1 -1
  4. package/dist/client.d.ts +2 -0
  5. package/dist/client.d.ts.map +1 -1
  6. package/dist/client.js +19 -0
  7. package/dist/client.js.map +1 -1
  8. package/dist/commands/billing.d.ts +3 -0
  9. package/dist/commands/billing.d.ts.map +1 -0
  10. package/dist/commands/billing.js +211 -0
  11. package/dist/commands/billing.js.map +1 -0
  12. package/dist/commands/builds.d.ts +3 -0
  13. package/dist/commands/builds.d.ts.map +1 -0
  14. package/dist/commands/builds.js +198 -0
  15. package/dist/commands/builds.js.map +1 -0
  16. package/dist/commands/databases.d.ts.map +1 -1
  17. package/dist/commands/databases.js +159 -1
  18. package/dist/commands/databases.js.map +1 -1
  19. package/dist/commands/logs.d.ts.map +1 -1
  20. package/dist/commands/logs.js +123 -45
  21. package/dist/commands/logs.js.map +1 -1
  22. package/dist/commands/regions.d.ts.map +1 -1
  23. package/dist/commands/regions.js +37 -1
  24. package/dist/commands/regions.js.map +1 -1
  25. package/dist/commands/releases.d.ts.map +1 -1
  26. package/dist/commands/releases.js +67 -0
  27. package/dist/commands/releases.js.map +1 -1
  28. package/dist/commands/rollback.d.ts +3 -0
  29. package/dist/commands/rollback.d.ts.map +1 -0
  30. package/dist/commands/rollback.js +62 -0
  31. package/dist/commands/rollback.js.map +1 -0
  32. package/dist/commands/scale.d.ts +3 -0
  33. package/dist/commands/scale.d.ts.map +1 -0
  34. package/dist/commands/scale.js +61 -0
  35. package/dist/commands/scale.js.map +1 -0
  36. package/dist/commands/storage.d.ts.map +1 -1
  37. package/dist/commands/storage.js +198 -0
  38. package/dist/commands/storage.js.map +1 -1
  39. package/dist/commands/teams.d.ts +3 -0
  40. package/dist/commands/teams.d.ts.map +1 -0
  41. package/dist/commands/teams.js +171 -0
  42. package/dist/commands/teams.js.map +1 -0
  43. package/dist/commands/templates.d.ts +3 -0
  44. package/dist/commands/templates.d.ts.map +1 -0
  45. package/dist/commands/templates.js +266 -0
  46. package/dist/commands/templates.js.map +1 -0
  47. package/dist/update-check.d.ts +13 -0
  48. package/dist/update-check.d.ts.map +1 -0
  49. package/dist/update-check.js +91 -0
  50. package/dist/update-check.js.map +1 -0
  51. package/package.json +1 -1
@@ -0,0 +1,198 @@
1
+ import chalk from "chalk";
2
+ import { loadConfig } from "../config.js";
3
+ import { MiosaClient, parseSse } from "../client.js";
4
+ import { spin } from "../ui/spinner.js";
5
+ import { renderTable } from "../ui/table.js";
6
+ import { handleError } from "./util.js";
7
+ import { resolveDeploymentId } from "./project.js";
8
+ // ── helpers ───────────────────────────────────────────────────────────────────
9
+ function shortId(id) {
10
+ return id.slice(0, 8);
11
+ }
12
+ function stateColor(state) {
13
+ switch (state) {
14
+ case "succeeded":
15
+ return chalk.green(state);
16
+ case "failed":
17
+ return chalk.red(state);
18
+ case "building":
19
+ return chalk.yellow(state);
20
+ case "queued":
21
+ case "cancelled":
22
+ return chalk.dim(state);
23
+ }
24
+ }
25
+ function printBuild(build) {
26
+ console.log();
27
+ console.log(` ${chalk.bold("Build")} ${build.id}`);
28
+ console.log(` ${chalk.bold("State")} ${stateColor(build.state)}`);
29
+ console.log(` ${chalk.bold("Commit")} ${build.commit_sha?.slice(0, 8) ?? chalk.dim("none")}`);
30
+ if (build.commit_message) {
31
+ console.log(` ${chalk.bold("Message")} ${build.commit_message}`);
32
+ }
33
+ console.log(` ${chalk.bold("Triggered")} ${build.triggered_by}`);
34
+ if (build.started_at) {
35
+ console.log(` ${chalk.bold("Started")} ${build.started_at}`);
36
+ }
37
+ if (build.finished_at) {
38
+ console.log(` ${chalk.bold("Finished")} ${build.finished_at}`);
39
+ }
40
+ if (build.duration_ms !== null) {
41
+ console.log(` ${chalk.bold("Duration")} ${(build.duration_ms / 1000).toFixed(1)}s`);
42
+ }
43
+ if (build.error_message) {
44
+ console.log(` ${chalk.bold("Error")} ${chalk.red(build.error_message)}`);
45
+ }
46
+ console.log();
47
+ }
48
+ // ── register ──────────────────────────────────────────────────────────────────
49
+ export function register(program) {
50
+ const builds = program
51
+ .command("builds")
52
+ .description("Inspect build history for a deployment")
53
+ .addHelpText("after", `
54
+ Examples:
55
+ miosa builds list <deployment-id>
56
+ miosa builds get <deployment-id> <build-id>
57
+ miosa builds logs <deployment-id> <build-id>
58
+ `);
59
+ // ── builds list ─────────────────────────────────────────────────────────────
60
+ builds
61
+ .command("list <deployment-id>")
62
+ .description("List builds for a deployment")
63
+ .option("--json", "Output as JSON")
64
+ .action(async (deploymentId, opts) => {
65
+ try {
66
+ const client = new MiosaClient(loadConfig());
67
+ const id = resolveDeploymentId(deploymentId);
68
+ const spinner = spin("Fetching builds...");
69
+ const rows = await client.listBuilds(id);
70
+ spinner.stop();
71
+ if (opts.json) {
72
+ console.log(JSON.stringify(rows, null, 2));
73
+ return;
74
+ }
75
+ if (rows.length === 0) {
76
+ console.log(chalk.dim(" No builds found."));
77
+ return;
78
+ }
79
+ renderTable(rows, [
80
+ { header: "ID", key: (r) => shortId(r.id), width: 10 },
81
+ { header: "STATE", key: (r) => stateColor(r.state), width: 12 },
82
+ {
83
+ header: "COMMIT",
84
+ key: (r) => r.commit_sha?.slice(0, 8) ?? chalk.dim("none"),
85
+ width: 10,
86
+ },
87
+ {
88
+ header: "MESSAGE",
89
+ key: (r) => r.commit_message ?? chalk.dim("none"),
90
+ width: 36,
91
+ },
92
+ {
93
+ header: "DURATION",
94
+ key: (r) => r.duration_ms !== null
95
+ ? `${(r.duration_ms / 1000).toFixed(1)}s`
96
+ : chalk.dim("-"),
97
+ width: 10,
98
+ },
99
+ { header: "CREATED", key: "created_at", width: 22 },
100
+ ]);
101
+ }
102
+ catch (err) {
103
+ handleError(err);
104
+ }
105
+ });
106
+ // ── builds get ──────────────────────────────────────────────────────────────
107
+ builds
108
+ .command("get <deployment-id> <build-id>")
109
+ .description("Show details for a single build")
110
+ .option("--json", "Output as JSON")
111
+ .action(async (deploymentId, buildId, opts) => {
112
+ try {
113
+ const client = new MiosaClient(loadConfig());
114
+ const id = resolveDeploymentId(deploymentId);
115
+ const spinner = spin("Fetching build...");
116
+ const build = await client.getBuild(id, buildId);
117
+ spinner.stop();
118
+ if (opts.json) {
119
+ console.log(JSON.stringify(build, null, 2));
120
+ return;
121
+ }
122
+ printBuild(build);
123
+ }
124
+ catch (err) {
125
+ handleError(err);
126
+ }
127
+ });
128
+ // ── builds logs ─────────────────────────────────────────────────────────────
129
+ builds
130
+ .command("logs <deployment-id> <build-id>")
131
+ .description("Stream logs for a specific build (SSE)")
132
+ .option("--json", "Output raw JSON log lines")
133
+ .action(async (deploymentId, buildId, opts) => {
134
+ try {
135
+ const client = new MiosaClient(loadConfig());
136
+ const id = resolveDeploymentId(deploymentId);
137
+ console.log(chalk.dim(` Streaming logs for build ${shortId(buildId)}...`));
138
+ console.log(chalk.dim(" " + "─".repeat(60)));
139
+ const streamRes = await client.streamBuildLogs(id, buildId);
140
+ for await (const event of parseSse(streamRes.body)) {
141
+ switch (event.type) {
142
+ case "stdout":
143
+ if (opts.json) {
144
+ console.log(JSON.stringify({ stream: "stdout", line: event.data }));
145
+ }
146
+ else {
147
+ process.stdout.write(chalk.dim(" ") + event.data);
148
+ }
149
+ break;
150
+ case "stderr":
151
+ if (opts.json) {
152
+ console.log(JSON.stringify({ stream: "stderr", line: event.data }));
153
+ }
154
+ else {
155
+ process.stderr.write(chalk.red(" ") + event.data);
156
+ }
157
+ break;
158
+ case "error":
159
+ console.error(chalk.red(` [error] ${event.message}`));
160
+ break;
161
+ case "done":
162
+ console.log(chalk.dim(" " + "─".repeat(60)));
163
+ return;
164
+ case "unknown":
165
+ try {
166
+ const parsed = JSON.parse(event.raw);
167
+ if (typeof parsed["line"] === "string") {
168
+ const line = parsed["line"];
169
+ if (opts.json) {
170
+ console.log(JSON.stringify({
171
+ stream: parsed["stream"] ?? "stdout",
172
+ line,
173
+ }));
174
+ }
175
+ else if (parsed["stream"] === "stderr") {
176
+ process.stderr.write(chalk.red(" ") + line + "\n");
177
+ }
178
+ else {
179
+ process.stdout.write(chalk.dim(" ") + line + "\n");
180
+ }
181
+ }
182
+ }
183
+ catch {
184
+ // ignore unparseable frames
185
+ }
186
+ break;
187
+ default:
188
+ break;
189
+ }
190
+ }
191
+ console.log(chalk.dim(" " + "─".repeat(60)));
192
+ }
193
+ catch (err) {
194
+ handleError(err);
195
+ }
196
+ });
197
+ }
198
+ //# sourceMappingURL=builds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builds.js","sourceRoot":"","sources":["../../src/commands/builds.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"databases.d.ts","sourceRoot":"","sources":["../../src/commands/databases.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4DzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiO/C"}
1
+ {"version":3,"file":"databases.d.ts","sourceRoot":"","sources":["../../src/commands/databases.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4DzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAma/C"}
@@ -1,6 +1,6 @@
1
1
  import chalk from "chalk";
2
2
  import { loadConfig } from "../config.js";
3
- import { MiosaClient } from "../client.js";
3
+ import { MiosaClient, parseSse } from "../client.js";
4
4
  import { renderTable } from "../ui/table.js";
5
5
  import { spin } from "../ui/spinner.js";
6
6
  import { handleError } from "./util.js";
@@ -218,5 +218,163 @@ export function register(program) {
218
218
  handleError(err);
219
219
  }
220
220
  });
221
+ // backup
222
+ databases
223
+ .command("backup <id>")
224
+ .description("Trigger a manual backup for a database")
225
+ .option("--json", "Output raw JSON")
226
+ .action(async (id, opts) => {
227
+ try {
228
+ const config = loadConfig();
229
+ const client = new MiosaClient(config);
230
+ const spinner = spin("Triggering backup...");
231
+ const result = await client.apiPost(`/api/v1/databases/${encodeURIComponent(id)}/backup`, {});
232
+ spinner.succeed("Backup started");
233
+ if (opts.json) {
234
+ console.log(JSON.stringify(result, null, 2));
235
+ return;
236
+ }
237
+ const r = result;
238
+ const backupId = typeof r["id"] === "string"
239
+ ? r["id"]
240
+ : typeof r["backup_id"] === "string"
241
+ ? r["backup_id"]
242
+ : null;
243
+ console.log();
244
+ if (backupId)
245
+ console.log(` ${chalk.bold("Backup ID")} ${backupId}`);
246
+ console.log(` ${chalk.bold("Status")} ${typeof r["status"] === "string" ? r["status"] : "pending"}`);
247
+ console.log();
248
+ if (backupId) {
249
+ console.log(chalk.dim(` Run "miosa databases restore ${id} ${backupId}" to restore from this backup.`));
250
+ console.log();
251
+ }
252
+ }
253
+ catch (err) {
254
+ handleError(err);
255
+ }
256
+ });
257
+ // restore
258
+ databases
259
+ .command("restore <id> <backup-id>")
260
+ .description("Restore a database from a backup")
261
+ .option("-f, --force", "Skip confirmation prompt")
262
+ .option("--json", "Output raw JSON")
263
+ .action(async (id, backupId, opts) => {
264
+ try {
265
+ if (!opts.force) {
266
+ const { default: inquirer } = await import("inquirer");
267
+ const { ok } = await inquirer.prompt([
268
+ {
269
+ type: "confirm",
270
+ name: "ok",
271
+ message: chalk.red(`Restore database ${id} from backup ${backupId}? Current data will be overwritten.`),
272
+ default: false,
273
+ },
274
+ ]);
275
+ if (!ok) {
276
+ console.log(chalk.dim(" Cancelled."));
277
+ process.exit(0);
278
+ }
279
+ }
280
+ const config = loadConfig();
281
+ const client = new MiosaClient(config);
282
+ const spinner = spin("Triggering restore...");
283
+ const result = await client.apiPost(`/api/v1/databases/${encodeURIComponent(id)}/restore`, { backup_id: backupId });
284
+ spinner.succeed("Restore started");
285
+ if (opts.json) {
286
+ console.log(JSON.stringify(result, null, 2));
287
+ return;
288
+ }
289
+ const r = result;
290
+ console.log();
291
+ console.log(` ${chalk.bold("Database")} ${id}`);
292
+ console.log(` ${chalk.bold("Backup")} ${backupId}`);
293
+ console.log(` ${chalk.bold("Status")} ${typeof r["status"] === "string" ? r["status"] : "restoring"}`);
294
+ console.log();
295
+ console.log(chalk.dim(` Run "miosa databases get ${id}" to monitor restore progress.`));
296
+ console.log();
297
+ }
298
+ catch (err) {
299
+ handleError(err);
300
+ }
301
+ });
302
+ // logs (SSE stream)
303
+ databases
304
+ .command("logs <id>")
305
+ .description("Stream live logs from a database (SSE)")
306
+ .option("--json", "Output raw JSON event frames")
307
+ .action(async (id, opts) => {
308
+ try {
309
+ const config = loadConfig();
310
+ const client = new MiosaClient(config);
311
+ if (!opts.json) {
312
+ console.log(chalk.dim(`Streaming logs for database ${id}...`));
313
+ }
314
+ // Use undici directly to get an SSE response
315
+ const { request } = await import("undici");
316
+ const endpoint = config.endpoint;
317
+ const apiKey = config.api_key ?? "";
318
+ const url = `${endpoint.replace(/\/$/, "")}/api/v1/databases/${encodeURIComponent(id)}/logs`;
319
+ const res = await request(url, {
320
+ method: "GET",
321
+ headers: {
322
+ Authorization: `Bearer ${apiKey}`,
323
+ Accept: "text/event-stream",
324
+ "User-Agent": "@miosa/cli/0.1.0",
325
+ },
326
+ });
327
+ if (res.statusCode >= 400) {
328
+ const body = await res.body.text();
329
+ console.error(chalk.red(`HTTP ${res.statusCode}: ${body}`));
330
+ process.exit(1);
331
+ }
332
+ for await (const event of parseSse(res.body)) {
333
+ if (opts.json) {
334
+ console.log(JSON.stringify(event));
335
+ continue;
336
+ }
337
+ switch (event.type) {
338
+ case "stdout":
339
+ process.stdout.write(event.data);
340
+ break;
341
+ case "stderr":
342
+ process.stderr.write(chalk.red(event.data));
343
+ break;
344
+ case "error":
345
+ console.error(chalk.red(event.message));
346
+ break;
347
+ case "done":
348
+ return;
349
+ case "unknown":
350
+ try {
351
+ const parsed = JSON.parse(event.raw);
352
+ const line = typeof parsed["line"] === "string"
353
+ ? parsed["line"]
354
+ : typeof parsed["message"] === "string"
355
+ ? parsed["message"]
356
+ : null;
357
+ if (line) {
358
+ const isErr = parsed["stream"] === "stderr" ||
359
+ parsed["level"] === "error";
360
+ if (isErr)
361
+ process.stderr.write(chalk.red(line) + "\n");
362
+ else
363
+ process.stdout.write(line + "\n");
364
+ }
365
+ }
366
+ catch {
367
+ // Ignore malformed frames
368
+ }
369
+ break;
370
+ default:
371
+ break;
372
+ }
373
+ }
374
+ }
375
+ catch (err) {
376
+ handleError(err);
377
+ }
378
+ });
221
379
  }
222
380
  //# sourceMappingURL=databases.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"databases.js","sourceRoot":"","sources":["../../src/commands/databases.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"databases.js","sourceRoot":"","sources":["../../src/commands/databases.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyCzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgE/C"}
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuIzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+F/C"}
@@ -4,6 +4,37 @@ import { MiosaClient, parseSse } from "../client.js";
4
4
  import { UserError } from "../errors.js";
5
5
  import { handleError } from "./util.js";
6
6
  import { resolveDeploymentId } from "./project.js";
7
+ /**
8
+ * Auto-detect whether a resource ID belongs to a deployment, computer, or sandbox
9
+ * by probing each API in order of likelihood. Falls back to deployment logs.
10
+ */
11
+ async function detectResource(client, resourceId) {
12
+ // Try deployment first (most common for `miosa logs`)
13
+ try {
14
+ await client.getDeployment(resourceId);
15
+ return { kind: "deployment", id: resourceId };
16
+ }
17
+ catch {
18
+ // not a deployment
19
+ }
20
+ // Try computer
21
+ try {
22
+ await client.apiGet(`/api/v1/computers/${encodeURIComponent(resourceId)}`);
23
+ return { kind: "computer", id: resourceId };
24
+ }
25
+ catch {
26
+ // not a computer
27
+ }
28
+ // Try sandbox
29
+ try {
30
+ await client.apiGet(`/api/v1/sandboxes/${encodeURIComponent(resourceId)}`);
31
+ return { kind: "sandbox", id: resourceId };
32
+ }
33
+ catch {
34
+ // not a sandbox
35
+ }
36
+ throw new UserError(`Resource not found: ${resourceId}`, "Pass a deployment name/ID, computer ID, or sandbox ID.");
37
+ }
7
38
  async function resolveAppId(client, appArg) {
8
39
  if (!appArg)
9
40
  return resolveDeploymentId();
@@ -19,72 +50,119 @@ async function resolveAppId(client, appArg) {
19
50
  return app.id;
20
51
  }
21
52
  }
22
- function printMachineLogs(payload) {
53
+ function printMachineLogs(payload, json) {
54
+ if (json) {
55
+ console.log(JSON.stringify(payload, null, 2));
56
+ return;
57
+ }
23
58
  if (Array.isArray(payload)) {
24
59
  for (const row of payload)
25
60
  console.log(JSON.stringify(row));
26
61
  return;
27
62
  }
28
63
  if (payload && typeof payload === "object" && "data" in payload) {
29
- printMachineLogs(payload.data);
64
+ printMachineLogs(payload.data, json);
30
65
  return;
31
66
  }
32
67
  console.log(JSON.stringify(payload, null, 2));
33
68
  }
69
+ async function streamSse(res) {
70
+ for await (const event of parseSse(res.body)) {
71
+ switch (event.type) {
72
+ case "stdout":
73
+ process.stdout.write(event.data);
74
+ break;
75
+ case "stderr":
76
+ process.stderr.write(chalk.red(event.data));
77
+ break;
78
+ case "error":
79
+ console.error(chalk.red(event.message));
80
+ break;
81
+ case "done":
82
+ return;
83
+ case "unknown":
84
+ try {
85
+ const parsed = JSON.parse(event.raw);
86
+ if (typeof parsed["line"] === "string") {
87
+ const line = parsed["line"];
88
+ if (parsed["stream"] === "stderr") {
89
+ process.stderr.write(chalk.red(line) + "\n");
90
+ }
91
+ else {
92
+ process.stdout.write(line + "\n");
93
+ }
94
+ }
95
+ }
96
+ catch {
97
+ // Ignore malformed stream frames.
98
+ }
99
+ break;
100
+ default:
101
+ break;
102
+ }
103
+ }
104
+ }
105
+ // ── register ──────────────────────────────────────────────────────────────────
34
106
  export function register(program) {
35
107
  program
36
- .command("logs [app]")
37
- .description("Stream app logs or fetch machine logs")
38
- .option("--machine <id>", "Fetch logs for a machine/computer")
39
- .option("--json", "Output raw JSON for machine log snapshots")
40
- .action(async (app, opts) => {
108
+ .command("logs [resource-id]")
109
+ .description("Stream logs — auto-detects computer, deployment, or sandbox by ID")
110
+ .option("--machine <id>", "Explicitly fetch logs for a computer/machine")
111
+ .option("--sandbox <id>", "Explicitly fetch logs for a sandbox")
112
+ .option("--json", "Output raw JSON")
113
+ .addHelpText("after", `
114
+ Examples:
115
+ miosa logs Stream logs for linked deployment
116
+ miosa logs <deployment-id> Stream deployment logs
117
+ miosa logs <computer-id> Stream computer logs (auto-detected)
118
+ miosa logs <sandbox-id> Stream sandbox logs (auto-detected)
119
+ miosa logs --machine <id> Explicit computer logs
120
+ miosa logs --sandbox <id> Explicit sandbox logs
121
+ `)
122
+ .action(async (resourceId, opts) => {
41
123
  try {
42
124
  const client = new MiosaClient(loadConfig());
125
+ // ── Explicit computer flag ────────────────────────────────────────
43
126
  if (opts.machine) {
44
127
  const payload = await client.apiGet(`/api/v1/computers/${encodeURIComponent(opts.machine)}/logs`);
45
- if (opts.json)
46
- console.log(JSON.stringify(payload, null, 2));
47
- else
48
- printMachineLogs(payload);
128
+ printMachineLogs(payload, opts.json ?? false);
49
129
  return;
50
130
  }
51
- const deploymentId = await resolveAppId(client, app);
52
- console.log(chalk.dim(`Streaming logs for ${deploymentId}...`));
53
- const res = await client.streamDeploymentLogs(deploymentId);
54
- for await (const event of parseSse(res.body)) {
55
- switch (event.type) {
56
- case "stdout":
57
- process.stdout.write(event.data);
58
- break;
59
- case "stderr":
60
- process.stderr.write(chalk.red(event.data));
61
- break;
62
- case "error":
63
- console.error(chalk.red(event.message));
64
- break;
65
- case "done":
131
+ // ── Explicit sandbox flag ─────────────────────────────────────────
132
+ if (opts.sandbox) {
133
+ const payload = await client.apiGet(`/api/v1/sandboxes/${encodeURIComponent(opts.sandbox)}/logs`);
134
+ printMachineLogs(payload, opts.json ?? false);
135
+ return;
136
+ }
137
+ // ── Auto-detect resource kind ─────────────────────────────────────
138
+ if (resourceId) {
139
+ const hint = await detectResource(client, resourceId);
140
+ switch (hint.kind) {
141
+ case "computer": {
142
+ console.log(chalk.dim(`Fetching computer logs for ${hint.id}...`));
143
+ const payload = await client.apiGet(`/api/v1/computers/${encodeURIComponent(hint.id)}/logs`);
144
+ printMachineLogs(payload, opts.json ?? false);
66
145
  return;
67
- case "unknown":
68
- try {
69
- const parsed = JSON.parse(event.raw);
70
- if (typeof parsed["line"] === "string") {
71
- const line = parsed["line"];
72
- if (parsed["stream"] === "stderr") {
73
- process.stderr.write(chalk.red(line) + "\n");
74
- }
75
- else {
76
- process.stdout.write(line + "\n");
77
- }
78
- }
79
- }
80
- catch {
81
- // Ignore malformed stream frames.
82
- }
83
- break;
84
- default:
85
- break;
146
+ }
147
+ case "sandbox": {
148
+ console.log(chalk.dim(`Fetching sandbox logs for ${hint.id}...`));
149
+ const payload = await client.apiGet(`/api/v1/sandboxes/${encodeURIComponent(hint.id)}/logs`);
150
+ printMachineLogs(payload, opts.json ?? false);
151
+ return;
152
+ }
153
+ case "deployment": {
154
+ console.log(chalk.dim(`Streaming deployment logs for ${hint.id}...`));
155
+ const res = await client.streamDeploymentLogs(hint.id);
156
+ await streamSse(res);
157
+ return;
158
+ }
86
159
  }
87
160
  }
161
+ // ── No ID — fall back to .miosa.json linked deployment ────────────
162
+ const deploymentId = await resolveAppId(client, undefined);
163
+ console.log(chalk.dim(`Streaming logs for ${deploymentId}...`));
164
+ const res = await client.streamDeploymentLogs(deploymentId);
165
+ await streamSse(res);
88
166
  }
89
167
  catch (err) {
90
168
  handleError(err);