@miosa/cli 1.0.46 → 1.0.48
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/README.md +20 -0
- package/dist/commands/capabilities.d.ts.map +1 -1
- package/dist/commands/capabilities.js +67 -0
- package/dist/commands/capabilities.js.map +1 -1
- package/dist/commands/databases.d.ts.map +1 -1
- package/dist/commands/databases.js +85 -0
- package/dist/commands/databases.js.map +1 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +143 -2
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/enterprise-util.d.ts +3 -1
- package/dist/commands/enterprise-util.d.ts.map +1 -1
- package/dist/commands/enterprise-util.js +25 -9
- package/dist/commands/enterprise-util.js.map +1 -1
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +171 -17
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/sandbox.d.ts.map +1 -1
- package/dist/commands/sandbox.js +138 -39
- package/dist/commands/sandbox.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +3 -2
package/dist/commands/logs.js
CHANGED
|
@@ -53,7 +53,27 @@ async function resolveAppId(client, appArg) {
|
|
|
53
53
|
return app.id;
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
-
function printMachineLogs(payload, json) {
|
|
56
|
+
function printMachineLogs(payload, json, filters = {}) {
|
|
57
|
+
if (hasLogFilters(filters)) {
|
|
58
|
+
const logs = filterLogLines(extractLogLines(payload), filters);
|
|
59
|
+
if (json) {
|
|
60
|
+
console.log(JSON.stringify({
|
|
61
|
+
ok: true,
|
|
62
|
+
count: logs.length,
|
|
63
|
+
logs: logs.map((entry) => ({
|
|
64
|
+
line: entry.line,
|
|
65
|
+
timestamp: entry.timestamp,
|
|
66
|
+
stream: entry.stream,
|
|
67
|
+
})),
|
|
68
|
+
}, null, 2));
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
for (const entry of logs) {
|
|
72
|
+
const prefix = entry.timestamp ? `${chalk.dim(entry.timestamp)} ` : "";
|
|
73
|
+
console.log(`${prefix}${entry.line}`);
|
|
74
|
+
}
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
57
77
|
if (json) {
|
|
58
78
|
console.log(JSON.stringify(payload, null, 2));
|
|
59
79
|
return;
|
|
@@ -69,18 +89,18 @@ function printMachineLogs(payload, json) {
|
|
|
69
89
|
}
|
|
70
90
|
console.log(JSON.stringify(payload, null, 2));
|
|
71
91
|
}
|
|
72
|
-
async function printDeploymentLogsJson(client, deploymentId) {
|
|
92
|
+
async function printDeploymentLogsJson(client, deploymentId, filters = {}) {
|
|
73
93
|
const payload = await client.apiGet(`/api/v1/deployments/${encodeURIComponent(deploymentId)}/logs`);
|
|
74
|
-
printMachineLogs(payload, true);
|
|
94
|
+
printMachineLogs(payload, true, filters);
|
|
75
95
|
}
|
|
76
|
-
async function streamSse(res) {
|
|
96
|
+
async function streamSse(res, filters = {}) {
|
|
77
97
|
for await (const event of parseSse(res.body)) {
|
|
78
98
|
switch (event.type) {
|
|
79
99
|
case "stdout":
|
|
80
|
-
process.stdout
|
|
100
|
+
writeFilteredLogChunk(process.stdout, event.data, filters);
|
|
81
101
|
break;
|
|
82
102
|
case "stderr":
|
|
83
|
-
process.stderr
|
|
103
|
+
writeFilteredLogChunk(process.stderr, event.data, filters, true);
|
|
84
104
|
break;
|
|
85
105
|
case "error":
|
|
86
106
|
console.error(chalk.red(event.message));
|
|
@@ -93,10 +113,10 @@ async function streamSse(res) {
|
|
|
93
113
|
if (typeof parsed["line"] === "string") {
|
|
94
114
|
const line = parsed["line"];
|
|
95
115
|
if (parsed["stream"] === "stderr") {
|
|
96
|
-
process.stderr
|
|
116
|
+
writeFilteredLogChunk(process.stderr, line + "\n", filters, true);
|
|
97
117
|
}
|
|
98
118
|
else {
|
|
99
|
-
process.stdout
|
|
119
|
+
writeFilteredLogChunk(process.stdout, line + "\n", filters);
|
|
100
120
|
}
|
|
101
121
|
}
|
|
102
122
|
}
|
|
@@ -109,6 +129,108 @@ async function streamSse(res) {
|
|
|
109
129
|
}
|
|
110
130
|
}
|
|
111
131
|
}
|
|
132
|
+
function hasLogFilters(filters) {
|
|
133
|
+
return Boolean(filters.lines != null ||
|
|
134
|
+
filters.tail != null ||
|
|
135
|
+
filters.startTime ||
|
|
136
|
+
filters.contains ||
|
|
137
|
+
filters.textIncludes ||
|
|
138
|
+
filters.textNotIncludes ||
|
|
139
|
+
filters.regex ||
|
|
140
|
+
filters.regexIncludes ||
|
|
141
|
+
filters.regexNotIncludes);
|
|
142
|
+
}
|
|
143
|
+
function extractLogLines(payload) {
|
|
144
|
+
if (payload == null)
|
|
145
|
+
return [];
|
|
146
|
+
if (typeof payload === "string") {
|
|
147
|
+
return payload
|
|
148
|
+
.split(/\r?\n/)
|
|
149
|
+
.filter((line) => line.length > 0)
|
|
150
|
+
.map((line) => ({ line }));
|
|
151
|
+
}
|
|
152
|
+
if (Array.isArray(payload)) {
|
|
153
|
+
return payload.flatMap((item) => extractLogLines(item));
|
|
154
|
+
}
|
|
155
|
+
if (typeof payload === "object") {
|
|
156
|
+
const obj = payload;
|
|
157
|
+
for (const key of ["data", "logs", "lines", "items", "events"]) {
|
|
158
|
+
if (Array.isArray(obj[key]) || typeof obj[key] === "string") {
|
|
159
|
+
return extractLogLines(obj[key]);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
const lineValue = obj["line"] ?? obj["log"] ?? obj["message"] ?? obj["text"] ?? obj["stdout"];
|
|
163
|
+
const stderrValue = obj["stderr"];
|
|
164
|
+
if (typeof lineValue === "string") {
|
|
165
|
+
return splitLogText(lineValue, {
|
|
166
|
+
timestamp: stringish(obj["timestamp"] ?? obj["ts"] ?? obj["time"] ?? obj["t"]),
|
|
167
|
+
stream: stringish(obj["stream"]),
|
|
168
|
+
raw: payload,
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
if (typeof stderrValue === "string") {
|
|
172
|
+
return splitLogText(stderrValue, {
|
|
173
|
+
timestamp: stringish(obj["timestamp"] ?? obj["ts"] ?? obj["time"] ?? obj["t"]),
|
|
174
|
+
stream: "stderr",
|
|
175
|
+
raw: payload,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
return [{ line: JSON.stringify(payload), raw: payload }];
|
|
179
|
+
}
|
|
180
|
+
return [{ line: String(payload), raw: payload }];
|
|
181
|
+
}
|
|
182
|
+
function splitLogText(text, meta = {}) {
|
|
183
|
+
return text
|
|
184
|
+
.split(/\r?\n/)
|
|
185
|
+
.filter((line) => line.length > 0)
|
|
186
|
+
.map((line) => ({ ...meta, line }));
|
|
187
|
+
}
|
|
188
|
+
function stringish(value) {
|
|
189
|
+
if (value == null)
|
|
190
|
+
return undefined;
|
|
191
|
+
return String(value);
|
|
192
|
+
}
|
|
193
|
+
function filterLogLines(lines, filters) {
|
|
194
|
+
const includes = filters.contains ?? filters.textIncludes;
|
|
195
|
+
const regexIncludes = filters.regex ?? filters.regexIncludes;
|
|
196
|
+
const includeRe = regexIncludes ? new RegExp(regexIncludes) : null;
|
|
197
|
+
const excludeRe = filters.regexNotIncludes
|
|
198
|
+
? new RegExp(filters.regexNotIncludes)
|
|
199
|
+
: null;
|
|
200
|
+
const startMs = filters.startTime ? Date.parse(filters.startTime) : NaN;
|
|
201
|
+
let out = lines.filter((entry) => {
|
|
202
|
+
if (Number.isFinite(startMs) && entry.timestamp) {
|
|
203
|
+
const entryMs = Date.parse(entry.timestamp);
|
|
204
|
+
if (Number.isFinite(entryMs) && entryMs < startMs)
|
|
205
|
+
return false;
|
|
206
|
+
}
|
|
207
|
+
if (includes && !entry.line.includes(includes))
|
|
208
|
+
return false;
|
|
209
|
+
if (filters.textNotIncludes && entry.line.includes(filters.textNotIncludes)) {
|
|
210
|
+
return false;
|
|
211
|
+
}
|
|
212
|
+
if (includeRe && !includeRe.test(entry.line))
|
|
213
|
+
return false;
|
|
214
|
+
if (excludeRe && excludeRe.test(entry.line))
|
|
215
|
+
return false;
|
|
216
|
+
return true;
|
|
217
|
+
});
|
|
218
|
+
const limit = filters.tail ?? filters.lines;
|
|
219
|
+
if (limit != null && limit >= 0) {
|
|
220
|
+
out = out.slice(-limit);
|
|
221
|
+
}
|
|
222
|
+
return out;
|
|
223
|
+
}
|
|
224
|
+
function writeFilteredLogChunk(stream, data, filters, red = false) {
|
|
225
|
+
if (!hasLogFilters(filters)) {
|
|
226
|
+
stream.write(red ? chalk.red(data) : data);
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
const lines = filterLogLines(splitLogText(data), filters);
|
|
230
|
+
for (const entry of lines) {
|
|
231
|
+
stream.write((red ? chalk.red(entry.line) : entry.line) + "\n");
|
|
232
|
+
}
|
|
233
|
+
}
|
|
112
234
|
// ── register ──────────────────────────────────────────────────────────────────
|
|
113
235
|
export function register(program) {
|
|
114
236
|
program
|
|
@@ -116,6 +238,16 @@ export function register(program) {
|
|
|
116
238
|
.description("Stream logs — auto-detects computer, deployment, or sandbox by ID")
|
|
117
239
|
.option("--machine <id>", "Explicitly fetch logs for a computer/machine")
|
|
118
240
|
.option("--sandbox <id>", "Explicitly fetch logs for a sandbox")
|
|
241
|
+
.option("--deployment <id>", "Explicitly fetch logs for a deployment/app")
|
|
242
|
+
.option("-l, --lines <n>", "Limit one-shot output to the last N lines", parsePositiveInt)
|
|
243
|
+
.option("--tail <n>", "Alias for --lines", parsePositiveInt)
|
|
244
|
+
.option("--start-time <timestamp>", "Only include log lines at or after this timestamp")
|
|
245
|
+
.option("--contains <text>", "Only include log lines containing this text")
|
|
246
|
+
.option("--text-includes <text>", "Alias for --contains")
|
|
247
|
+
.option("--text-not-includes <text>", "Exclude log lines containing this text")
|
|
248
|
+
.option("--regex <pattern>", "Only include log lines matching this regex")
|
|
249
|
+
.option("--regex-includes <pattern>", "Alias for --regex")
|
|
250
|
+
.option("--regex-not-includes <pattern>", "Exclude log lines matching this regex")
|
|
119
251
|
.option("--json", "Output raw JSON")
|
|
120
252
|
.option("-f, --follow", "Open live TUI log tail (requires a TTY)")
|
|
121
253
|
.addHelpText("after", `
|
|
@@ -126,6 +258,10 @@ Examples:
|
|
|
126
258
|
miosa logs <sandbox-id> Stream sandbox logs (auto-detected)
|
|
127
259
|
miosa logs --machine <id> Explicit computer logs
|
|
128
260
|
miosa logs --sandbox <id> Explicit sandbox logs
|
|
261
|
+
miosa logs --deployment <id> Explicit deployment logs
|
|
262
|
+
miosa logs <id> --lines 100 Print recent log lines
|
|
263
|
+
miosa logs <id> --contains error Filter log lines by text
|
|
264
|
+
miosa logs <id> --regex "500|panic" Filter log lines by regex
|
|
129
265
|
miosa logs <id> --follow Live TUI tail (interactive)
|
|
130
266
|
miosa logs <id> -f Same as --follow
|
|
131
267
|
`)
|
|
@@ -133,8 +269,9 @@ Examples:
|
|
|
133
269
|
try {
|
|
134
270
|
const config = loadConfig();
|
|
135
271
|
const client = new MiosaClient(config);
|
|
272
|
+
const filters = opts;
|
|
136
273
|
// ── --follow: mount ink TUI ───────────────────────────────────────
|
|
137
|
-
if (opts.follow) {
|
|
274
|
+
if (opts.follow && !hasLogFilters(filters)) {
|
|
138
275
|
if (!process.stdout.isTTY) {
|
|
139
276
|
console.log();
|
|
140
277
|
console.log(errorEnvelope({
|
|
@@ -185,16 +322,26 @@ Examples:
|
|
|
185
322
|
}
|
|
186
323
|
return;
|
|
187
324
|
}
|
|
325
|
+
if (opts.deployment) {
|
|
326
|
+
if (isJsonMode(opts)) {
|
|
327
|
+
await printDeploymentLogsJson(client, opts.deployment, filters);
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
console.log(chalk.dim(`Streaming deployment logs for ${opts.deployment}...`));
|
|
331
|
+
const res = await client.streamDeploymentLogs(opts.deployment);
|
|
332
|
+
await streamSse(res, filters);
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
188
335
|
// ── Explicit computer flag ────────────────────────────────────────
|
|
189
336
|
if (opts.machine) {
|
|
190
337
|
const payload = await client.apiGet(`/api/v1/computers/${encodeURIComponent(opts.machine)}/logs`);
|
|
191
|
-
printMachineLogs(payload, isJsonMode(opts));
|
|
338
|
+
printMachineLogs(payload, isJsonMode(opts), filters);
|
|
192
339
|
return;
|
|
193
340
|
}
|
|
194
341
|
// ── Explicit sandbox flag ─────────────────────────────────────────
|
|
195
342
|
if (opts.sandbox) {
|
|
196
343
|
const payload = await client.apiGet(`/api/v1/sandboxes/${encodeURIComponent(opts.sandbox)}/logs`);
|
|
197
|
-
printMachineLogs(payload, isJsonMode(opts));
|
|
344
|
+
printMachineLogs(payload, isJsonMode(opts), filters);
|
|
198
345
|
return;
|
|
199
346
|
}
|
|
200
347
|
// ── Auto-detect resource kind ─────────────────────────────────────
|
|
@@ -206,7 +353,7 @@ Examples:
|
|
|
206
353
|
console.log(chalk.dim(`Fetching computer logs for ${hint.id}...`));
|
|
207
354
|
}
|
|
208
355
|
const payload = await client.apiGet(`/api/v1/computers/${encodeURIComponent(hint.id)}/logs`);
|
|
209
|
-
printMachineLogs(payload, isJsonMode(opts));
|
|
356
|
+
printMachineLogs(payload, isJsonMode(opts), filters);
|
|
210
357
|
return;
|
|
211
358
|
}
|
|
212
359
|
case "sandbox": {
|
|
@@ -214,17 +361,17 @@ Examples:
|
|
|
214
361
|
console.log(chalk.dim(`Fetching sandbox logs for ${hint.id}...`));
|
|
215
362
|
}
|
|
216
363
|
const payload = await client.apiGet(`/api/v1/sandboxes/${encodeURIComponent(hint.id)}/logs`);
|
|
217
|
-
printMachineLogs(payload, isJsonMode(opts));
|
|
364
|
+
printMachineLogs(payload, isJsonMode(opts), filters);
|
|
218
365
|
return;
|
|
219
366
|
}
|
|
220
367
|
case "deployment": {
|
|
221
368
|
if (isJsonMode(opts)) {
|
|
222
|
-
await printDeploymentLogsJson(client, hint.id);
|
|
369
|
+
await printDeploymentLogsJson(client, hint.id, filters);
|
|
223
370
|
return;
|
|
224
371
|
}
|
|
225
372
|
console.log(chalk.dim(`Streaming deployment logs for ${hint.id}...`));
|
|
226
373
|
const res = await client.streamDeploymentLogs(hint.id);
|
|
227
|
-
await streamSse(res);
|
|
374
|
+
await streamSse(res, filters);
|
|
228
375
|
return;
|
|
229
376
|
}
|
|
230
377
|
}
|
|
@@ -232,16 +379,23 @@ Examples:
|
|
|
232
379
|
// ── No ID — fall back to .miosa.json linked deployment ────────────
|
|
233
380
|
const deploymentId = await resolveAppId(client, undefined);
|
|
234
381
|
if (isJsonMode(opts)) {
|
|
235
|
-
await printDeploymentLogsJson(client, deploymentId);
|
|
382
|
+
await printDeploymentLogsJson(client, deploymentId, filters);
|
|
236
383
|
return;
|
|
237
384
|
}
|
|
238
385
|
console.log(chalk.dim(`Streaming logs for ${deploymentId}...`));
|
|
239
386
|
const res = await client.streamDeploymentLogs(deploymentId);
|
|
240
|
-
await streamSse(res);
|
|
387
|
+
await streamSse(res, filters);
|
|
241
388
|
}
|
|
242
389
|
catch (err) {
|
|
243
390
|
handleError(err);
|
|
244
391
|
}
|
|
245
392
|
});
|
|
246
393
|
}
|
|
394
|
+
function parsePositiveInt(value) {
|
|
395
|
+
const parsed = Number.parseInt(value, 10);
|
|
396
|
+
if (!Number.isFinite(parsed) || parsed < 0) {
|
|
397
|
+
throw new UserError(`Invalid integer: ${value}`);
|
|
398
|
+
}
|
|
399
|
+
return parsed;
|
|
400
|
+
}
|
|
247
401
|
//# sourceMappingURL=logs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../src/commands/sandbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgDzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../src/commands/sandbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgDzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6lE/C"}
|
package/dist/commands/sandbox.js
CHANGED
|
@@ -383,6 +383,9 @@ export function register(program) {
|
|
|
383
383
|
.allowExcessArguments()
|
|
384
384
|
.option("--cwd <path>", "Working directory inside the Sandbox")
|
|
385
385
|
.option("--workdir <path>", "Alias for --cwd")
|
|
386
|
+
.option("--cmd <command>", "Explicit command string to run; avoids CLI parsing command flags")
|
|
387
|
+
.option("--command <command>", "Alias for --cmd")
|
|
388
|
+
.option("--shell-cmd <shell>", "Run --cmd through this shell, e.g. 'bash -lc'")
|
|
386
389
|
.option("--env <pair>", "Environment variable KEY=VALUE. Repeatable.", collectOption, [])
|
|
387
390
|
.option("--background", "Start the command in the background and return immediately")
|
|
388
391
|
.option("--detached", "Create a durable backend command and return command_id immediately")
|
|
@@ -400,7 +403,7 @@ export function register(program) {
|
|
|
400
403
|
await postAndPrint(`/sandboxes/${enc(id)}/exec`, opts, {});
|
|
401
404
|
return;
|
|
402
405
|
}
|
|
403
|
-
const cmd =
|
|
406
|
+
const cmd = resolveSandboxCommand(words, opts);
|
|
404
407
|
const effectiveCommand = opts.background
|
|
405
408
|
? backgroundCommand(cmd)
|
|
406
409
|
: cmd;
|
|
@@ -414,7 +417,7 @@ export function register(program) {
|
|
|
414
417
|
}
|
|
415
418
|
const env = parseEnvPairs(opts.env ?? []);
|
|
416
419
|
if (opts.detached) {
|
|
417
|
-
const result = await createSandboxCommand(id,
|
|
420
|
+
const result = await createSandboxCommand(id, cmd, {
|
|
418
421
|
cwd,
|
|
419
422
|
env,
|
|
420
423
|
user: opts.user,
|
|
@@ -448,6 +451,9 @@ export function register(program) {
|
|
|
448
451
|
.allowExcessArguments()
|
|
449
452
|
.option("--cwd <path>", "Working directory inside the Sandbox")
|
|
450
453
|
.option("--workdir <path>", "Alias for --cwd")
|
|
454
|
+
.option("--cmd <command>", "Explicit command string to run; avoids CLI parsing command flags")
|
|
455
|
+
.option("--command <command>", "Alias for --cmd")
|
|
456
|
+
.option("--shell-cmd <shell>", "Run --cmd through this shell, e.g. 'bash -lc'")
|
|
451
457
|
.option("--env <pair>", "Environment variable KEY=VALUE. Repeatable.", collectOption, [])
|
|
452
458
|
.option("--background", "Start the command in the background and return immediately")
|
|
453
459
|
.option("--detached", "Create a durable backend command and return command_id immediately")
|
|
@@ -465,7 +471,7 @@ export function register(program) {
|
|
|
465
471
|
await postAndPrint(`/sandboxes/${enc(id)}/exec`, opts, {});
|
|
466
472
|
return;
|
|
467
473
|
}
|
|
468
|
-
const cmd =
|
|
474
|
+
const cmd = resolveSandboxCommand(words, opts);
|
|
469
475
|
const effectiveCommand = opts.background
|
|
470
476
|
? backgroundCommand(cmd)
|
|
471
477
|
: cmd;
|
|
@@ -479,7 +485,7 @@ export function register(program) {
|
|
|
479
485
|
}
|
|
480
486
|
const env = parseEnvPairs(opts.env ?? []);
|
|
481
487
|
if (opts.detached) {
|
|
482
|
-
const result = await createSandboxCommand(id,
|
|
488
|
+
const result = await createSandboxCommand(id, cmd, {
|
|
483
489
|
cwd,
|
|
484
490
|
env,
|
|
485
491
|
user: opts.user,
|
|
@@ -510,12 +516,10 @@ export function register(program) {
|
|
|
510
516
|
.description("List listening TCP ports inside a Sandbox")
|
|
511
517
|
.option("--json", "Output as JSON")
|
|
512
518
|
.action((id, opts) => runAction(async () => {
|
|
513
|
-
const
|
|
514
|
-
const
|
|
515
|
-
const stdout = String(result["stdout"] ?? "");
|
|
516
|
-
const ports = parseListeningPorts(stdout);
|
|
519
|
+
const result = await client().apiGet(apiPath(`/sandboxes/${enc(id)}/ports`));
|
|
520
|
+
const ports = sandboxPortsFromResponse(result);
|
|
517
521
|
if (isJsonMode(opts)) {
|
|
518
|
-
console.log(JSON.stringify(
|
|
522
|
+
console.log(JSON.stringify(result, null, 2));
|
|
519
523
|
return;
|
|
520
524
|
}
|
|
521
525
|
if (ports.length === 0) {
|
|
@@ -523,6 +527,11 @@ export function register(program) {
|
|
|
523
527
|
return;
|
|
524
528
|
}
|
|
525
529
|
renderTable(ports, [
|
|
530
|
+
{
|
|
531
|
+
header: "PROTO",
|
|
532
|
+
key: (p) => p.protocol ?? "tcp",
|
|
533
|
+
width: 8,
|
|
534
|
+
},
|
|
526
535
|
{
|
|
527
536
|
header: "PORT",
|
|
528
537
|
key: "port",
|
|
@@ -533,8 +542,33 @@ export function register(program) {
|
|
|
533
542
|
key: "address",
|
|
534
543
|
width: 24,
|
|
535
544
|
},
|
|
545
|
+
{
|
|
546
|
+
header: "STATE",
|
|
547
|
+
key: (p) => p.state ?? "listen",
|
|
548
|
+
width: 10,
|
|
549
|
+
},
|
|
550
|
+
{
|
|
551
|
+
header: "PROCESS",
|
|
552
|
+
key: (p) => p.process?.name
|
|
553
|
+
? `${p.process.name}${p.process.pid ? `:${p.process.pid}` : ""}`
|
|
554
|
+
: chalk.dim("-"),
|
|
555
|
+
width: 28,
|
|
556
|
+
},
|
|
536
557
|
]);
|
|
537
558
|
}));
|
|
559
|
+
sandbox
|
|
560
|
+
.command("metrics <sandbox-id>")
|
|
561
|
+
.description("Show Sandbox resource, uptime, timeout, and readiness metrics")
|
|
562
|
+
.option("--window <window>", "Metrics window: 1h, 24h, or 7d", "1h")
|
|
563
|
+
.option("--json", "Output as JSON")
|
|
564
|
+
.action((id, opts) => runAction(async () => {
|
|
565
|
+
const result = await client().apiGet(apiPath(`/sandboxes/${enc(id)}/metrics?window=${enc(opts.window)}`));
|
|
566
|
+
if (isJsonMode(opts)) {
|
|
567
|
+
console.log(JSON.stringify(result, null, 2));
|
|
568
|
+
return;
|
|
569
|
+
}
|
|
570
|
+
renderResourceMetrics("Sandbox metrics", result);
|
|
571
|
+
}));
|
|
538
572
|
sandbox
|
|
539
573
|
.command("deploy [local-dir]")
|
|
540
574
|
.description("Upload an app directory, start it in a sandbox, expose a preview URL, and wait for readiness")
|
|
@@ -2062,37 +2096,93 @@ async function execSandboxRaw(c, sandboxId, command, cwd, timeout) {
|
|
|
2062
2096
|
body["timeout"] = timeout;
|
|
2063
2097
|
return unwrap(await c.apiPost(apiPath(`/sandboxes/${enc(sandboxId)}/exec`), body));
|
|
2064
2098
|
}
|
|
2065
|
-
function
|
|
2066
|
-
const
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
continue;
|
|
2076
|
-
const ss = ssLine.exec(line);
|
|
2077
|
-
if (ss && ss[2]) {
|
|
2078
|
-
const port = Number(ss[2]);
|
|
2079
|
-
if (!seen.has(port)) {
|
|
2080
|
-
seen.add(port);
|
|
2081
|
-
out.push({ port, address: ss[1] ?? "*" });
|
|
2082
|
-
}
|
|
2083
|
-
continue;
|
|
2084
|
-
}
|
|
2085
|
-
const proc = procLine.exec(line);
|
|
2086
|
-
if (proc && proc[3] === "0A" && proc[2]) {
|
|
2087
|
-
const port = parseInt(proc[2], 16);
|
|
2088
|
-
if (!Number.isNaN(port) && !seen.has(port)) {
|
|
2089
|
-
seen.add(port);
|
|
2090
|
-
out.push({ port, address: "*" });
|
|
2091
|
-
}
|
|
2092
|
-
}
|
|
2099
|
+
function sandboxPortsFromResponse(raw) {
|
|
2100
|
+
const root = unwrap(raw);
|
|
2101
|
+
if (Array.isArray(root))
|
|
2102
|
+
return root;
|
|
2103
|
+
if (root && typeof root === "object") {
|
|
2104
|
+
const row = root;
|
|
2105
|
+
if (Array.isArray(row["ports"]))
|
|
2106
|
+
return row["ports"];
|
|
2107
|
+
if (Array.isArray(row["data"]))
|
|
2108
|
+
return row["data"];
|
|
2093
2109
|
}
|
|
2094
|
-
|
|
2095
|
-
|
|
2110
|
+
return [];
|
|
2111
|
+
}
|
|
2112
|
+
function renderResourceMetrics(title, raw) {
|
|
2113
|
+
const root = unwrap(raw);
|
|
2114
|
+
if (!root || typeof root !== "object") {
|
|
2115
|
+
printValue(root, {});
|
|
2116
|
+
return;
|
|
2117
|
+
}
|
|
2118
|
+
const row = root;
|
|
2119
|
+
const current = row["current"] && typeof row["current"] === "object"
|
|
2120
|
+
? row["current"]
|
|
2121
|
+
: {};
|
|
2122
|
+
printBanner({ subtitle: title });
|
|
2123
|
+
console.log(kvPanel([
|
|
2124
|
+
{ label: "resource_id", value: String(row["resource_id"] ?? row["sandbox_id"] ?? "-") },
|
|
2125
|
+
{ label: "window", value: String(row["window"] ?? "1h") },
|
|
2126
|
+
{ label: "state", value: formatState(current["state"]) },
|
|
2127
|
+
{ label: "ready", value: formatBool(current["ready"]) },
|
|
2128
|
+
{ label: "cpu", value: formatMaybe(current["cpu_count"]) },
|
|
2129
|
+
{ label: "memory", value: formatMb(current["memory_mb"]) },
|
|
2130
|
+
{ label: "disk", value: formatMb(current["disk_size_mb"]) },
|
|
2131
|
+
{ label: "uptime", value: formatSeconds(current["uptime_sec"]) },
|
|
2132
|
+
{
|
|
2133
|
+
label: "timeout_remaining",
|
|
2134
|
+
value: formatSecondsOrAlwaysOn(current["timeout_remaining_sec"]),
|
|
2135
|
+
},
|
|
2136
|
+
{ label: "node", value: formatMaybe(current["node_id"]) },
|
|
2137
|
+
{ label: "ip", value: formatMaybe(current["ip_address"]) },
|
|
2138
|
+
{ label: "boot", value: formatMs(current["boot_ms"]) },
|
|
2139
|
+
{ label: "envd_ready", value: formatMs(current["envd_ready_ms"]) },
|
|
2140
|
+
]));
|
|
2141
|
+
}
|
|
2142
|
+
function formatState(value) {
|
|
2143
|
+
const state = String(value ?? "unknown");
|
|
2144
|
+
if (["running", "active", "healthy", "ready"].includes(state)) {
|
|
2145
|
+
return chalk.green(state);
|
|
2146
|
+
}
|
|
2147
|
+
if (["provisioning", "starting", "building", "pending"].includes(state)) {
|
|
2148
|
+
return chalk.yellow(state);
|
|
2149
|
+
}
|
|
2150
|
+
if (["failed", "error", "unhealthy"].includes(state)) {
|
|
2151
|
+
return chalk.red(state);
|
|
2152
|
+
}
|
|
2153
|
+
return state;
|
|
2154
|
+
}
|
|
2155
|
+
function formatBool(value) {
|
|
2156
|
+
if (value === true)
|
|
2157
|
+
return chalk.green("true");
|
|
2158
|
+
if (value === false)
|
|
2159
|
+
return chalk.red("false");
|
|
2160
|
+
return chalk.dim("-");
|
|
2161
|
+
}
|
|
2162
|
+
function formatMaybe(value) {
|
|
2163
|
+
if (value === null || value === undefined || value === "")
|
|
2164
|
+
return chalk.dim("-");
|
|
2165
|
+
return String(value);
|
|
2166
|
+
}
|
|
2167
|
+
function formatMb(value) {
|
|
2168
|
+
if (typeof value !== "number")
|
|
2169
|
+
return formatMaybe(value);
|
|
2170
|
+
return formatBytes(value * 1024 * 1024);
|
|
2171
|
+
}
|
|
2172
|
+
function formatMs(value) {
|
|
2173
|
+
if (typeof value !== "number")
|
|
2174
|
+
return formatMaybe(value);
|
|
2175
|
+
return `${value}ms`;
|
|
2176
|
+
}
|
|
2177
|
+
function formatSeconds(value) {
|
|
2178
|
+
if (typeof value !== "number")
|
|
2179
|
+
return formatMaybe(value);
|
|
2180
|
+
return formatDuration(value * 1000);
|
|
2181
|
+
}
|
|
2182
|
+
function formatSecondsOrAlwaysOn(value) {
|
|
2183
|
+
if (value === null || value === undefined)
|
|
2184
|
+
return chalk.dim("always-on/none");
|
|
2185
|
+
return formatSeconds(value);
|
|
2096
2186
|
}
|
|
2097
2187
|
// Stream exec output: run in background to a log file, poll-read new bytes
|
|
2098
2188
|
// until the process exits, then print the final exit code.
|
|
@@ -2382,6 +2472,15 @@ function backgroundCommand(command) {
|
|
|
2382
2472
|
const logPath = `/tmp/miosa-bg-${Date.now()}.log`;
|
|
2383
2473
|
return `nohup sh -lc ${shellQuote(command)} > ${shellQuote(logPath)} 2>&1 & echo $!`;
|
|
2384
2474
|
}
|
|
2475
|
+
function resolveSandboxCommand(words, opts) {
|
|
2476
|
+
const positional = words.length === 1 ? (words[0] ?? "") : joinCommandWords(words);
|
|
2477
|
+
const cmd = opts.cmd ?? opts.command ?? positional;
|
|
2478
|
+
if (!opts.shellCmd)
|
|
2479
|
+
return cmd;
|
|
2480
|
+
if (!cmd.trim())
|
|
2481
|
+
return opts.shellCmd;
|
|
2482
|
+
return `${opts.shellCmd} ${shellQuote(cmd)}`;
|
|
2483
|
+
}
|
|
2385
2484
|
function collectOption(value, previous) {
|
|
2386
2485
|
return [...previous, value];
|
|
2387
2486
|
}
|