@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 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
@@ -1 +1 @@
1
- {"version":3,"file":"miosa.js","sourceRoot":"","sources":["../../src/bin/miosa.ts"],"names":[],"mappings":"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"}
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;AAwJzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqF/C"}
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"}
@@ -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(chalk.bold("Authorize MIOSA CLI"));
52
+ console.log(` ${banner({ subtitle: "Sign in" })}`);
51
53
  console.log();
52
- console.log(` Open: ${chalk.cyan(flow.verification_uri_complete)}`);
53
- console.log(` Code: ${chalk.bold(flow.user_code)}`);
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(" Browser opened. Waiting for approval..."));
61
+ console.log(` ${icon.pending} ${chalk.dim("Browser opened. Waiting for approval")}`);
58
62
  }
59
63
  catch {
60
- console.log(chalk.dim(" Could not open a browser automatically."));
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
- console.log(chalk.green(`Logged in as ${tenant.name}`) +
79
- chalk.dim(` (${tenant.plan} plan)`));
85
+ tenantName = tenant.name;
86
+ tenantPlan = tenant.plan;
80
87
  }
81
88
  catch {
82
- // Cache unavailable — not fatal; `whoami` will fall back to network
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.error(chalk.red(`Error: ${err.message}`));
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 spinner = spin("Validating API key...");
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.succeed(`Authenticated as ${tenant.name}` +
158
- chalk.dim(` (${tenant.plan} plan)`));
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.fail("Authentication failed");
162
- if (err instanceof AuthError) {
163
- console.error(` ${err.message}`);
164
- }
165
- else {
166
- console.error(` ${err instanceof Error ? err.message : String(err)}`);
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;AAIzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAe/C"}
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"}
@@ -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(chalk.dim("Not logged in."));
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
- clearApiKey(); // also clears auth cache via clearAuthCache()
14
- console.log(chalk.green("Logged out. Credentials removed from ~/.miosa/"));
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,KAAK,MAAM,OAAO,CAAC;AAE1B,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,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QACD,WAAW,EAAE,CAAC,CAAC,8CAA8C;QAC7D,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAC9D,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC"}
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":"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"}
@@ -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;AAWzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyF/C"}
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"}