@miosa/cli 1.0.5 → 1.0.6
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/dist/bin/miosa.js +5 -0
- package/dist/bin/miosa.js.map +1 -1
- package/dist/commands/dashboard.d.ts +13 -0
- package/dist/commands/dashboard.d.ts.map +1 -0
- package/dist/commands/dashboard.js +54 -0
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +89 -21
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +27 -4
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/menu.d.ts +16 -0
- package/dist/commands/menu.d.ts.map +1 -0
- package/dist/commands/menu.js +113 -0
- package/dist/commands/menu.js.map +1 -0
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +76 -19
- package/dist/commands/whoami.js.map +1 -1
- package/dist/tui/dashboard.d.ts +35 -0
- package/dist/tui/dashboard.d.ts.map +1 -0
- package/dist/tui/dashboard.js +191 -0
- package/dist/tui/dashboard.js.map +1 -0
- package/dist/ui/picker.d.ts +41 -0
- package/dist/ui/picker.d.ts.map +1 -0
- package/dist/ui/picker.js +77 -0
- package/dist/ui/picker.js.map +1 -0
- package/dist/ui/render.d.ts +91 -0
- package/dist/ui/render.d.ts.map +1 -0
- package/dist/ui/render.js +138 -0
- package/dist/ui/render.js.map +1 -0
- package/package.json +4 -1
package/dist/bin/miosa.js
CHANGED
|
@@ -113,6 +113,11 @@ const commandModules = [
|
|
|
113
113
|
"../commands/teams.js",
|
|
114
114
|
"../commands/billing.js",
|
|
115
115
|
"../commands/templates.js",
|
|
116
|
+
"../commands/dashboard.js",
|
|
117
|
+
// Keep last — registers the default `program.action()` that fires only
|
|
118
|
+
// when no other subcommand matched. Registering earlier would risk it
|
|
119
|
+
// intercepting commands that haven't been wired up yet.
|
|
120
|
+
"../commands/menu.js",
|
|
116
121
|
];
|
|
117
122
|
async function main() {
|
|
118
123
|
// Register all commands
|
package/dist/bin/miosa.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"miosa.js","sourceRoot":"","sources":["../../src/bin/miosa.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,iEAAiE;AACjE,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,CACrC,CAAC;AAEzB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CACV,6IAA6I,CAC9I;KACA,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,+BAA+B,CAAC;KACtE,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BH,CACE,CAAC;AAEJ,oEAAoE;AACpE,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEL,sDAAsD;AACtD,MAAM,cAAc,GAAG;IACrB,qBAAqB;IACrB,sBAAsB;IACtB,uBAAuB;IACvB,uBAAuB;IACvB,uBAAuB;IACvB,uBAAuB;IACvB,sBAAsB;IACtB,qBAAqB;IACrB,0BAA0B;IAC1B,yBAAyB;IACzB,wBAAwB;IACxB,wBAAwB;IACxB,oBAAoB;IACpB,qBAAqB;IACrB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,uBAAuB;IACvB,sBAAsB;IACtB,sBAAsB;IACtB,uBAAuB;IACvB,mBAAmB;IACnB,uBAAuB;IACvB,qBAAqB;IACrB,qBAAqB;IACrB,yBAAyB;IACzB,wBAAwB;IACxB,wBAAwB;IACxB,wBAAwB;IACxB,uBAAuB;IACvB,uBAAuB;IACvB,0BAA0B;IAC1B,uBAAuB;IACvB,sBAAsB;IACtB,yBAAyB;IACzB,4BAA4B;IAC5B,wBAAwB;IACxB,2BAA2B;IAC3B,yBAAyB;IACzB,2BAA2B;IAC3B,0BAA0B;IAC1B,qBAAqB;IACrB,sBAAsB;IACtB,oBAAoB;IACpB,qBAAqB;IACrB,qBAAqB;IACrB,oBAAoB;IACpB,oBAAoB;IACpB,uBAAuB;IACvB,mBAAmB;IACnB,oBAAoB;IACpB,sBAAsB;IACtB,yBAAyB;IACzB,uBAAuB;IACvB,wBAAwB;IACxB,0BAA0B;IAC1B,sBAAsB;IACtB,wBAAwB;IACxB,0BAA0B;
|
|
1
|
+
{"version":3,"file":"miosa.js","sourceRoot":"","sources":["../../src/bin/miosa.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `miosa dashboard` — mount the ink-based live dashboard.
|
|
3
|
+
*
|
|
4
|
+
* Kept minimal on purpose: this file is the bridge between commander
|
|
5
|
+
* (which knows about CLI options + help text) and ink (which owns the
|
|
6
|
+
* actual rendering). All UI logic lives in `src/tui/dashboard.tsx`.
|
|
7
|
+
*
|
|
8
|
+
* NOTE: don't confuse with `miosa watch <computer-id>` — that's the
|
|
9
|
+
* per-computer SSE event stream. This is the tenant-wide live snapshot.
|
|
10
|
+
*/
|
|
11
|
+
import type { Command } from "commander";
|
|
12
|
+
export declare function register(program: Command): void;
|
|
13
|
+
//# sourceMappingURL=dashboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgD/C"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `miosa dashboard` — mount the ink-based live dashboard.
|
|
3
|
+
*
|
|
4
|
+
* Kept minimal on purpose: this file is the bridge between commander
|
|
5
|
+
* (which knows about CLI options + help text) and ink (which owns the
|
|
6
|
+
* actual rendering). All UI logic lives in `src/tui/dashboard.tsx`.
|
|
7
|
+
*
|
|
8
|
+
* NOTE: don't confuse with `miosa watch <computer-id>` — that's the
|
|
9
|
+
* per-computer SSE event stream. This is the tenant-wide live snapshot.
|
|
10
|
+
*/
|
|
11
|
+
import React from "react";
|
|
12
|
+
import chalk from "chalk";
|
|
13
|
+
import { loadConfig } from "../config.js";
|
|
14
|
+
import { errorEnvelope } from "../ui/render.js";
|
|
15
|
+
export function register(program) {
|
|
16
|
+
program
|
|
17
|
+
.command("dashboard")
|
|
18
|
+
.description("Live terminal dashboard — running computers, sandboxes, deployments, credits")
|
|
19
|
+
.action(async () => {
|
|
20
|
+
const config = loadConfig();
|
|
21
|
+
if (!config.api_key) {
|
|
22
|
+
console.log();
|
|
23
|
+
console.log(errorEnvelope({
|
|
24
|
+
title: "Not signed in",
|
|
25
|
+
body: "The live dashboard needs an API key to query the platform.",
|
|
26
|
+
suggest: ["miosa login"],
|
|
27
|
+
}));
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
if (!process.stdout.isTTY) {
|
|
31
|
+
console.log();
|
|
32
|
+
console.log(errorEnvelope({
|
|
33
|
+
title: "TTY required",
|
|
34
|
+
body: "The dashboard renders interactively and cannot be piped.",
|
|
35
|
+
suggest: ["miosa status # one-shot snapshot, scriptable"],
|
|
36
|
+
}));
|
|
37
|
+
process.exit(2);
|
|
38
|
+
}
|
|
39
|
+
// Ink is loaded dynamically so cold-starting `miosa --help`
|
|
40
|
+
// doesn't pay the React import cost on every invocation.
|
|
41
|
+
const { render } = await import("ink");
|
|
42
|
+
const { Dashboard } = await import("../tui/dashboard.js");
|
|
43
|
+
const { waitUntilExit } = render(React.createElement(Dashboard, { config }));
|
|
44
|
+
try {
|
|
45
|
+
await waitUntilExit();
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
49
|
+
console.error(chalk.red(`dashboard crashed: ${msg}`));
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=dashboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,UAAU,QAAQ,CAAC,OAAgB;IACvC,OAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CACV,8EAA8E,CAC/E;SACA,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CACT,aAAa,CAAC;gBACZ,KAAK,EAAE,eAAe;gBACtB,IAAI,EAAE,4DAA4D;gBAClE,OAAO,EAAE,CAAC,aAAa,CAAC;aACzB,CAAC,CACH,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CACT,aAAa,CAAC;gBACZ,KAAK,EAAE,cAAc;gBACrB,IAAI,EAAE,0DAA0D;gBAChE,OAAO,EAAE,CAAC,+CAA+C,CAAC;aAC3D,CAAC,CACH,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,4DAA4D;QAC5D,yDAAyD;QACzD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAE1D,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAC9B,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAC3C,CAAC;QACF,IAAI,CAAC;YACH,MAAM,aAAa,EAAE,CAAC;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmMzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqI/C"}
|
package/dist/commands/login.js
CHANGED
|
@@ -2,6 +2,7 @@ import { loadConfig, saveConfig, saveAuthCache } from "../config.js";
|
|
|
2
2
|
import { MiosaClient } from "../client.js";
|
|
3
3
|
import { AuthError, UserError } from "../errors.js";
|
|
4
4
|
import { spin } from "../ui/spinner.js";
|
|
5
|
+
import { banner, errorEnvelope, hintBlock, icon, kvPanel, printElapsed, formatDuration, } from "../ui/render.js";
|
|
5
6
|
import { request } from "undici";
|
|
6
7
|
import { spawn } from "node:child_process";
|
|
7
8
|
import chalk from "chalk";
|
|
@@ -46,18 +47,21 @@ async function browserLogin(config) {
|
|
|
46
47
|
throw new UserError(`Could not start CLI auth flow: HTTP ${start.status}`);
|
|
47
48
|
}
|
|
48
49
|
const flow = start.body;
|
|
50
|
+
const flowStart = Date.now();
|
|
49
51
|
console.log();
|
|
50
|
-
console.log(
|
|
52
|
+
console.log(` ${banner({ subtitle: "Sign in" })}`);
|
|
51
53
|
console.log();
|
|
52
|
-
console.log(
|
|
53
|
-
|
|
54
|
+
console.log(kvPanel([
|
|
55
|
+
{ label: "Open", value: chalk.cyan(flow.verification_uri_complete) },
|
|
56
|
+
{ label: "Code", value: chalk.bold(flow.user_code) },
|
|
57
|
+
]));
|
|
54
58
|
console.log();
|
|
55
59
|
try {
|
|
56
60
|
openUrl(flow.verification_uri_complete);
|
|
57
|
-
console.log(chalk.dim("
|
|
61
|
+
console.log(` ${icon.pending} ${chalk.dim("Browser opened. Waiting for approval…")}`);
|
|
58
62
|
}
|
|
59
63
|
catch {
|
|
60
|
-
console.log(chalk.dim("
|
|
64
|
+
console.log(` ${icon.warn} ${chalk.dim("Could not open a browser automatically.")}`);
|
|
61
65
|
}
|
|
62
66
|
const deadline = Date.now() + flow.expires_in * 1000;
|
|
63
67
|
const intervalMs = Math.max(flow.interval || 3, 1) * 1000;
|
|
@@ -69,19 +73,43 @@ async function browserLogin(config) {
|
|
|
69
73
|
if (poll.status === 200 && poll.body.api_key) {
|
|
70
74
|
const apiKey = poll.body.api_key;
|
|
71
75
|
saveConfig({ api_key: apiKey });
|
|
72
|
-
// Fetch and cache identity for instant `whoami
|
|
76
|
+
// Fetch and cache identity for instant `whoami`. Cache failure is
|
|
77
|
+
// non-fatal — the key still works, `whoami` will refetch on demand.
|
|
78
|
+
let tenantName;
|
|
79
|
+
let tenantPlan;
|
|
73
80
|
try {
|
|
74
81
|
const freshConfig = { ...config, api_key: apiKey };
|
|
75
82
|
const client = new MiosaClient(freshConfig);
|
|
76
83
|
const tenant = await client.getTenant();
|
|
77
84
|
cacheIdentity(tenant, freshConfig);
|
|
78
|
-
|
|
79
|
-
|
|
85
|
+
tenantName = tenant.name;
|
|
86
|
+
tenantPlan = tenant.plan;
|
|
80
87
|
}
|
|
81
88
|
catch {
|
|
82
|
-
|
|
83
|
-
console.log(chalk.green("Logged in. API key saved to ~/.miosa/config.json"));
|
|
89
|
+
/* cache unavailable */
|
|
84
90
|
}
|
|
91
|
+
console.log();
|
|
92
|
+
console.log(kvPanel([
|
|
93
|
+
{
|
|
94
|
+
icon: icon.ok,
|
|
95
|
+
label: "Authenticated",
|
|
96
|
+
value: tenantName
|
|
97
|
+
? `${chalk.bold(tenantName)}${tenantPlan ? chalk.dim(` · ${tenantPlan} plan`) : ""}`
|
|
98
|
+
: chalk.dim("(identity cache unavailable)"),
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
icon: icon.ok,
|
|
102
|
+
label: "Token saved",
|
|
103
|
+
value: chalk.dim("~/.miosa/config.json"),
|
|
104
|
+
},
|
|
105
|
+
]));
|
|
106
|
+
console.log();
|
|
107
|
+
console.log(hintBlock("Next", [
|
|
108
|
+
"miosa whoami",
|
|
109
|
+
"miosa mcp install",
|
|
110
|
+
"miosa computers list",
|
|
111
|
+
]));
|
|
112
|
+
printElapsed(formatDuration(Date.now() - flowStart));
|
|
85
113
|
return;
|
|
86
114
|
}
|
|
87
115
|
if (poll.status === 428 || poll.body.error === "authorization_pending") {
|
|
@@ -137,7 +165,16 @@ export function register(program) {
|
|
|
137
165
|
}
|
|
138
166
|
catch (err) {
|
|
139
167
|
if (err instanceof UserError || err instanceof AuthError) {
|
|
140
|
-
console.
|
|
168
|
+
console.log();
|
|
169
|
+
console.log(errorEnvelope({
|
|
170
|
+
title: "Sign-in failed",
|
|
171
|
+
body: err.message,
|
|
172
|
+
suggest: [
|
|
173
|
+
"miosa login # try again",
|
|
174
|
+
"miosa login --api-key msk_u_… # paste a key instead",
|
|
175
|
+
],
|
|
176
|
+
withDebugHint: true,
|
|
177
|
+
}));
|
|
141
178
|
process.exit(3);
|
|
142
179
|
}
|
|
143
180
|
throw err;
|
|
@@ -149,22 +186,53 @@ export function register(program) {
|
|
|
149
186
|
const config = loadConfig();
|
|
150
187
|
const testConfig = { ...config, api_key: key };
|
|
151
188
|
const client = new MiosaClient(testConfig);
|
|
152
|
-
const
|
|
189
|
+
const validateStart = Date.now();
|
|
190
|
+
const spinner = spin("Validating API key…");
|
|
153
191
|
try {
|
|
154
192
|
const tenant = await client.getTenant();
|
|
155
193
|
saveConfig({ api_key: key });
|
|
156
194
|
cacheIdentity(tenant, testConfig);
|
|
157
|
-
spinner.
|
|
158
|
-
|
|
195
|
+
spinner.stop();
|
|
196
|
+
console.log();
|
|
197
|
+
console.log(` ${banner({ subtitle: "Sign in" })}`);
|
|
198
|
+
console.log();
|
|
199
|
+
console.log(kvPanel([
|
|
200
|
+
{
|
|
201
|
+
icon: icon.ok,
|
|
202
|
+
label: "Authenticated",
|
|
203
|
+
value: chalk.bold(tenant.name) + chalk.dim(` · ${tenant.plan} plan`),
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
icon: icon.ok,
|
|
207
|
+
label: "Token saved",
|
|
208
|
+
value: chalk.dim("~/.miosa/config.json"),
|
|
209
|
+
},
|
|
210
|
+
]));
|
|
211
|
+
console.log();
|
|
212
|
+
console.log(hintBlock("Next", [
|
|
213
|
+
"miosa whoami",
|
|
214
|
+
"miosa mcp install",
|
|
215
|
+
"miosa computers list",
|
|
216
|
+
]));
|
|
217
|
+
printElapsed(formatDuration(Date.now() - validateStart));
|
|
159
218
|
}
|
|
160
219
|
catch (err) {
|
|
161
|
-
spinner.
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
220
|
+
spinner.stop();
|
|
221
|
+
const message = err instanceof AuthError
|
|
222
|
+
? err.message
|
|
223
|
+
: err instanceof Error
|
|
224
|
+
? err.message
|
|
225
|
+
: String(err);
|
|
226
|
+
console.log();
|
|
227
|
+
console.log(errorEnvelope({
|
|
228
|
+
title: "Authentication failed",
|
|
229
|
+
body: message,
|
|
230
|
+
suggest: [
|
|
231
|
+
"miosa login # use browser device flow instead",
|
|
232
|
+
"https://miosa.ai/dashboard/api-keys # rotate your key",
|
|
233
|
+
],
|
|
234
|
+
withDebugHint: true,
|
|
235
|
+
}));
|
|
168
236
|
process.exit(3);
|
|
169
237
|
}
|
|
170
238
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyC/C"}
|
package/dist/commands/logout.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { clearApiKey, loadConfig } from "../config.js";
|
|
2
1
|
import chalk from "chalk";
|
|
2
|
+
import { clearApiKey, loadConfig } from "../config.js";
|
|
3
|
+
import { hintBlock, icon, kvPanel } from "../ui/render.js";
|
|
3
4
|
export function register(program) {
|
|
4
5
|
program
|
|
5
6
|
.command("logout")
|
|
@@ -7,11 +8,33 @@ export function register(program) {
|
|
|
7
8
|
.action(() => {
|
|
8
9
|
const config = loadConfig();
|
|
9
10
|
if (!config.api_key) {
|
|
10
|
-
console.log(
|
|
11
|
+
console.log();
|
|
12
|
+
console.log(` ${icon.info} ${chalk.dim("Not logged in.")}`);
|
|
13
|
+
console.log();
|
|
14
|
+
console.log(hintBlock("Sign in", ["miosa login"]));
|
|
11
15
|
return;
|
|
12
16
|
}
|
|
13
|
-
|
|
14
|
-
|
|
17
|
+
// Note: this only clears the LOCAL cache. The msk_u_ key remains
|
|
18
|
+
// valid server-side until explicitly revoked from the dashboard.
|
|
19
|
+
clearApiKey();
|
|
20
|
+
console.log();
|
|
21
|
+
console.log(kvPanel([
|
|
22
|
+
{
|
|
23
|
+
icon: icon.ok,
|
|
24
|
+
label: "Signed out",
|
|
25
|
+
value: chalk.dim("local credentials cleared"),
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
icon: icon.warn,
|
|
29
|
+
label: "Server-side",
|
|
30
|
+
value: chalk.dim("key NOT revoked — visit dashboard to revoke"),
|
|
31
|
+
},
|
|
32
|
+
]));
|
|
33
|
+
console.log();
|
|
34
|
+
console.log(hintBlock("Next", [
|
|
35
|
+
"miosa login",
|
|
36
|
+
"https://miosa.ai/dashboard/api-keys # to revoke server-side",
|
|
37
|
+
]));
|
|
15
38
|
});
|
|
16
39
|
}
|
|
17
40
|
//# sourceMappingURL=logout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE3D,MAAM,UAAU,QAAQ,CAAC,OAAgB;IACvC,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,iEAAiE;QACjE,iEAAiE;QACjE,WAAW,EAAE,CAAC;QAEd,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACT,OAAO,CAAC;YACN;gBACE,IAAI,EAAE,IAAI,CAAC,EAAE;gBACb,KAAK,EAAE,YAAY;gBACnB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC;aAC9C;YACD;gBACE,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,aAAa;gBACpB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC;aAChE;SACF,CAAC,CACH,CAAC;QACF,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACT,SAAS,CAAC,MAAM,EAAE;YAChB,aAAa;YACb,8DAA8D;SAC/D,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `miosa` (no args) → contextual interactive menu.
|
|
3
|
+
*
|
|
4
|
+
* When the user types just `miosa` from a TTY, we show a brand banner +
|
|
5
|
+
* their current sign-in state + a list of common actions. Picking one
|
|
6
|
+
* recursively re-invokes the CLI as if they'd typed that command — so
|
|
7
|
+
* the dispatched command gets all the normal argv parsing, help text,
|
|
8
|
+
* and error handling for free.
|
|
9
|
+
*
|
|
10
|
+
* In a non-TTY (CI, pipe, redirected stdin) we skip the menu and fall
|
|
11
|
+
* back to the default Commander help screen, since prompting would
|
|
12
|
+
* just hang.
|
|
13
|
+
*/
|
|
14
|
+
import type { Command } from "commander";
|
|
15
|
+
export declare function register(program: Command): void;
|
|
16
|
+
//# sourceMappingURL=menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/commands/menu.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiDzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkE/C"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `miosa` (no args) → contextual interactive menu.
|
|
3
|
+
*
|
|
4
|
+
* When the user types just `miosa` from a TTY, we show a brand banner +
|
|
5
|
+
* their current sign-in state + a list of common actions. Picking one
|
|
6
|
+
* recursively re-invokes the CLI as if they'd typed that command — so
|
|
7
|
+
* the dispatched command gets all the normal argv parsing, help text,
|
|
8
|
+
* and error handling for free.
|
|
9
|
+
*
|
|
10
|
+
* In a non-TTY (CI, pipe, redirected stdin) we skip the menu and fall
|
|
11
|
+
* back to the default Commander help screen, since prompting would
|
|
12
|
+
* just hang.
|
|
13
|
+
*/
|
|
14
|
+
import chalk from "chalk";
|
|
15
|
+
import { loadAuthCache, loadConfig } from "../config.js";
|
|
16
|
+
import { banner, icon } from "../ui/render.js";
|
|
17
|
+
/**
|
|
18
|
+
* Build the action list based on current sign-in state. Authenticated
|
|
19
|
+
* users get the full workflow; unauthenticated users only see sign-in.
|
|
20
|
+
*/
|
|
21
|
+
function buildChoices(authenticated) {
|
|
22
|
+
if (!authenticated) {
|
|
23
|
+
return [
|
|
24
|
+
{
|
|
25
|
+
label: "Sign in to MIOSA",
|
|
26
|
+
argv: ["login"],
|
|
27
|
+
hint: "opens browser",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
label: "Read the docs",
|
|
31
|
+
argv: [],
|
|
32
|
+
hint: "https://miosa.ai/docs",
|
|
33
|
+
},
|
|
34
|
+
];
|
|
35
|
+
}
|
|
36
|
+
return [
|
|
37
|
+
{ label: "Show platform status", argv: ["status"], hint: "live snapshot" },
|
|
38
|
+
{ label: "List my computers", argv: ["computers", "list"] },
|
|
39
|
+
{ label: "List my sandboxes", argv: ["sandbox", "list"] },
|
|
40
|
+
{ label: "List my deployments", argv: ["deploy", "list"] },
|
|
41
|
+
{
|
|
42
|
+
label: "Install MCP into Claude Code",
|
|
43
|
+
argv: ["mcp", "install"],
|
|
44
|
+
hint: "one-command setup",
|
|
45
|
+
},
|
|
46
|
+
{ label: "Manage API tokens", argv: ["auth", "token", "list"] },
|
|
47
|
+
{ label: "Who am I?", argv: ["whoami"] },
|
|
48
|
+
{ label: "Sign out", argv: ["logout"] },
|
|
49
|
+
];
|
|
50
|
+
}
|
|
51
|
+
export function register(program) {
|
|
52
|
+
program.action(async () => {
|
|
53
|
+
// We only run the menu when Commander dispatched here because no
|
|
54
|
+
// subcommand matched. If argv is longer than "node miosa", the user
|
|
55
|
+
// typed something that Commander has already handled (or errored on).
|
|
56
|
+
if (process.argv.length > 2)
|
|
57
|
+
return;
|
|
58
|
+
// Non-TTY → fall back to default help text. Prompting would hang.
|
|
59
|
+
if (!process.stdin.isTTY) {
|
|
60
|
+
program.help();
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const config = loadConfig();
|
|
64
|
+
const cache = config.api_key ? loadAuthCache() : null;
|
|
65
|
+
const authenticated = Boolean(config.api_key);
|
|
66
|
+
console.log();
|
|
67
|
+
console.log(` ${banner({})}`);
|
|
68
|
+
console.log();
|
|
69
|
+
if (authenticated) {
|
|
70
|
+
const who = cache
|
|
71
|
+
? `${chalk.bold(cache.name)}${chalk.dim(` · ${cache.plan} plan`)}`
|
|
72
|
+
: chalk.dim("(identity cache empty — try `miosa whoami --refresh`)");
|
|
73
|
+
console.log(` ${icon.ok} Signed in as ${who}`);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
console.log(` ${icon.warn} Not signed in`);
|
|
77
|
+
}
|
|
78
|
+
console.log();
|
|
79
|
+
const choices = buildChoices(authenticated);
|
|
80
|
+
const { default: inquirer } = await import("inquirer");
|
|
81
|
+
const { picked } = await inquirer.prompt([
|
|
82
|
+
{
|
|
83
|
+
type: "list",
|
|
84
|
+
name: "picked",
|
|
85
|
+
message: "What would you like to do?",
|
|
86
|
+
pageSize: Math.min(10, choices.length),
|
|
87
|
+
choices: choices.map((c, i) => ({
|
|
88
|
+
name: c.hint ? `${c.label} ${chalk.dim(c.hint)}` : c.label,
|
|
89
|
+
value: i,
|
|
90
|
+
short: c.label,
|
|
91
|
+
})),
|
|
92
|
+
},
|
|
93
|
+
]);
|
|
94
|
+
const chosen = choices[picked];
|
|
95
|
+
if (!chosen)
|
|
96
|
+
return;
|
|
97
|
+
// Docs is special — no argv to dispatch; just print the link.
|
|
98
|
+
if (chosen.argv.length === 0) {
|
|
99
|
+
console.log();
|
|
100
|
+
console.log(` ${icon.arrow} ${chalk.cyan("https://miosa.ai/docs")}`);
|
|
101
|
+
console.log();
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
// Re-invoke Commander with the chosen argv. This goes through the
|
|
105
|
+
// normal command lifecycle (option parsing, help, error handling) —
|
|
106
|
+
// we don't need to duplicate any of that here.
|
|
107
|
+
console.log();
|
|
108
|
+
await program.parseAsync(["node", "miosa", ...chosen.argv], {
|
|
109
|
+
from: "user",
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/commands/menu.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAW/C;;;GAGG;AACH,SAAS,YAAY,CAAC,aAAsB;IAC1C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO;YACL;gBACE,KAAK,EAAE,kBAAkB;gBACzB,IAAI,EAAE,CAAC,OAAO,CAAC;gBACf,IAAI,EAAE,eAAe;aACtB;YACD;gBACE,KAAK,EAAE,eAAe;gBACtB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,uBAAuB;aAC9B;SACF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,EAAE,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE;QAC1E,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;QAC3D,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;QACzD,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;QAC1D;YACE,KAAK,EAAE,8BAA8B;YACrC,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;YACxB,IAAI,EAAE,mBAAmB;SAC1B;QACD,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE;QAC/D,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE;QACxC,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE;KACxC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAgB;IACvC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;QACxB,iEAAiE;QACjE,oEAAoE;QACpE,sEAAsE;QACtE,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO;QAEpC,kEAAkE;QAClE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACtD,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE9C,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,KAAK;gBACf,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,EAAE;gBAClE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,EAAE,kBAAkB,GAAG,EAAE,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,iBAAiB,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;QAE5C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAqB;YAC3D;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,4BAA4B;gBACrC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC;gBACtC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC9B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;oBAC3D,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC,CAAC,KAAK;iBACf,CAAC,CAAC;aACJ;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,8DAA8D;QAC9D,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;YACtE,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,kEAAkE;QAClE,oEAAoE;QACpE,+CAA+C;QAC/C,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE;YAC1D,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyG/C"}
|