@miosa/cli 0.2.0
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 +327 -0
- package/dist/bin/miosa.d.ts +3 -0
- package/dist/bin/miosa.d.ts.map +1 -0
- package/dist/bin/miosa.js +139 -0
- package/dist/bin/miosa.js.map +1 -0
- package/dist/client.d.ts +74 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +523 -0
- package/dist/client.js.map +1 -0
- package/dist/commands/agent.d.ts +18 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +468 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/alerts.d.ts +3 -0
- package/dist/commands/alerts.d.ts.map +1 -0
- package/dist/commands/alerts.js +41 -0
- package/dist/commands/alerts.js.map +1 -0
- package/dist/commands/api-keys.d.ts +3 -0
- package/dist/commands/api-keys.d.ts.map +1 -0
- package/dist/commands/api-keys.js +119 -0
- package/dist/commands/api-keys.js.map +1 -0
- package/dist/commands/api-resource.d.ts +20 -0
- package/dist/commands/api-resource.d.ts.map +1 -0
- package/dist/commands/api-resource.js +120 -0
- package/dist/commands/api-resource.js.map +1 -0
- package/dist/commands/apps.d.ts +3 -0
- package/dist/commands/apps.d.ts.map +1 -0
- package/dist/commands/apps.js +218 -0
- package/dist/commands/apps.js.map +1 -0
- package/dist/commands/audit.d.ts +3 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +25 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/auth.d.ts +3 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +363 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/backups.d.ts +3 -0
- package/dist/commands/backups.d.ts.map +1 -0
- package/dist/commands/backups.js +23 -0
- package/dist/commands/backups.js.map +1 -0
- package/dist/commands/checkpoints.d.ts +3 -0
- package/dist/commands/checkpoints.d.ts.map +1 -0
- package/dist/commands/checkpoints.js +33 -0
- package/dist/commands/checkpoints.js.map +1 -0
- package/dist/commands/computers.d.ts +3 -0
- package/dist/commands/computers.d.ts.map +1 -0
- package/dist/commands/computers.js +118 -0
- package/dist/commands/computers.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +114 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/connect.d.ts +3 -0
- package/dist/commands/connect.d.ts.map +1 -0
- package/dist/commands/connect.js +96 -0
- package/dist/commands/connect.js.map +1 -0
- package/dist/commands/containers.d.ts +3 -0
- package/dist/commands/containers.d.ts.map +1 -0
- package/dist/commands/containers.js +20 -0
- package/dist/commands/containers.js.map +1 -0
- package/dist/commands/cp.d.ts +3 -0
- package/dist/commands/cp.d.ts.map +1 -0
- package/dist/commands/cp.js +102 -0
- package/dist/commands/cp.js.map +1 -0
- package/dist/commands/cron.d.ts +3 -0
- package/dist/commands/cron.d.ts.map +1 -0
- package/dist/commands/cron.js +65 -0
- package/dist/commands/cron.js.map +1 -0
- package/dist/commands/databases.d.ts +3 -0
- package/dist/commands/databases.d.ts.map +1 -0
- package/dist/commands/databases.js +222 -0
- package/dist/commands/databases.js.map +1 -0
- package/dist/commands/db.d.ts +3 -0
- package/dist/commands/db.d.ts.map +1 -0
- package/dist/commands/db.js +174 -0
- package/dist/commands/db.js.map +1 -0
- package/dist/commands/deploy.d.ts +3 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +579 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/desktop.d.ts +3 -0
- package/dist/commands/desktop.d.ts.map +1 -0
- package/dist/commands/desktop.js +276 -0
- package/dist/commands/desktop.js.map +1 -0
- package/dist/commands/dev.d.ts +3 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +246 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/doctor.d.ts +3 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +241 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/domains.d.ts +3 -0
- package/dist/commands/domains.d.ts.map +1 -0
- package/dist/commands/domains.js +31 -0
- package/dist/commands/domains.js.map +1 -0
- package/dist/commands/enterprise-util.d.ts +37 -0
- package/dist/commands/enterprise-util.d.ts.map +1 -0
- package/dist/commands/enterprise-util.js +185 -0
- package/dist/commands/enterprise-util.js.map +1 -0
- package/dist/commands/exec.d.ts +3 -0
- package/dist/commands/exec.d.ts.map +1 -0
- package/dist/commands/exec.js +68 -0
- package/dist/commands/exec.js.map +1 -0
- package/dist/commands/functions.d.ts +3 -0
- package/dist/commands/functions.d.ts.map +1 -0
- package/dist/commands/functions.js +47 -0
- package/dist/commands/functions.js.map +1 -0
- package/dist/commands/gha-runners.d.ts +3 -0
- package/dist/commands/gha-runners.d.ts.map +1 -0
- package/dist/commands/gha-runners.js +33 -0
- package/dist/commands/gha-runners.js.map +1 -0
- package/dist/commands/groups.d.ts +3 -0
- package/dist/commands/groups.d.ts.map +1 -0
- package/dist/commands/groups.js +38 -0
- package/dist/commands/groups.js.map +1 -0
- package/dist/commands/host.d.ts +3 -0
- package/dist/commands/host.d.ts.map +1 -0
- package/dist/commands/host.js +74 -0
- package/dist/commands/host.js.map +1 -0
- package/dist/commands/hosts.d.ts +3 -0
- package/dist/commands/hosts.d.ts.map +1 -0
- package/dist/commands/hosts.js +90 -0
- package/dist/commands/hosts.js.map +1 -0
- package/dist/commands/link.d.ts +8 -0
- package/dist/commands/link.d.ts.map +1 -0
- package/dist/commands/link.js +124 -0
- package/dist/commands/link.js.map +1 -0
- package/dist/commands/login.d.ts +3 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +172 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +3 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +17 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/logs.d.ts +3 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +94 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/ls.d.ts +3 -0
- package/dist/commands/ls.d.ts.map +1 -0
- package/dist/commands/ls.js +67 -0
- package/dist/commands/ls.js.map +1 -0
- package/dist/commands/machines.d.ts +3 -0
- package/dist/commands/machines.d.ts.map +1 -0
- package/dist/commands/machines.js +29 -0
- package/dist/commands/machines.js.map +1 -0
- package/dist/commands/mcp.d.ts +21 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +1021 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/meshes.d.ts +3 -0
- package/dist/commands/meshes.d.ts.map +1 -0
- package/dist/commands/meshes.js +27 -0
- package/dist/commands/meshes.js.map +1 -0
- package/dist/commands/network-policy.d.ts +3 -0
- package/dist/commands/network-policy.d.ts.map +1 -0
- package/dist/commands/network-policy.js +40 -0
- package/dist/commands/network-policy.js.map +1 -0
- package/dist/commands/project.d.ts +4 -0
- package/dist/commands/project.d.ts.map +1 -0
- package/dist/commands/project.js +25 -0
- package/dist/commands/project.js.map +1 -0
- package/dist/commands/pull.d.ts +3 -0
- package/dist/commands/pull.d.ts.map +1 -0
- package/dist/commands/pull.js +155 -0
- package/dist/commands/pull.js.map +1 -0
- package/dist/commands/regions.d.ts +3 -0
- package/dist/commands/regions.d.ts.map +1 -0
- package/dist/commands/regions.js +67 -0
- package/dist/commands/regions.js.map +1 -0
- package/dist/commands/releases.d.ts +3 -0
- package/dist/commands/releases.d.ts.map +1 -0
- package/dist/commands/releases.js +176 -0
- package/dist/commands/releases.js.map +1 -0
- package/dist/commands/rm.d.ts +3 -0
- package/dist/commands/rm.d.ts.map +1 -0
- package/dist/commands/rm.js +42 -0
- package/dist/commands/rm.js.map +1 -0
- package/dist/commands/run.d.ts +3 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +131 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/sandbox.d.ts +3 -0
- package/dist/commands/sandbox.d.ts.map +1 -0
- package/dist/commands/sandbox.js +352 -0
- package/dist/commands/sandbox.js.map +1 -0
- package/dist/commands/schedules.d.ts +3 -0
- package/dist/commands/schedules.d.ts.map +1 -0
- package/dist/commands/schedules.js +37 -0
- package/dist/commands/schedules.js.map +1 -0
- package/dist/commands/secrets.d.ts +3 -0
- package/dist/commands/secrets.d.ts.map +1 -0
- package/dist/commands/secrets.js +194 -0
- package/dist/commands/secrets.js.map +1 -0
- package/dist/commands/services.d.ts +3 -0
- package/dist/commands/services.d.ts.map +1 -0
- package/dist/commands/services.js +70 -0
- package/dist/commands/services.js.map +1 -0
- package/dist/commands/shell.d.ts +16 -0
- package/dist/commands/shell.d.ts.map +1 -0
- package/dist/commands/shell.js +527 -0
- package/dist/commands/shell.js.map +1 -0
- package/dist/commands/snapshot.d.ts +10 -0
- package/dist/commands/snapshot.d.ts.map +1 -0
- package/dist/commands/snapshot.js +181 -0
- package/dist/commands/snapshot.js.map +1 -0
- package/dist/commands/ssh.d.ts +3 -0
- package/dist/commands/ssh.d.ts.map +1 -0
- package/dist/commands/ssh.js +37 -0
- package/dist/commands/ssh.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +300 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/storage.d.ts +3 -0
- package/dist/commands/storage.d.ts.map +1 -0
- package/dist/commands/storage.js +180 -0
- package/dist/commands/storage.js.map +1 -0
- package/dist/commands/tenant.d.ts +3 -0
- package/dist/commands/tenant.d.ts.map +1 -0
- package/dist/commands/tenant.js +87 -0
- package/dist/commands/tenant.js.map +1 -0
- package/dist/commands/tunnel.d.ts +3 -0
- package/dist/commands/tunnel.d.ts.map +1 -0
- package/dist/commands/tunnel.js +418 -0
- package/dist/commands/tunnel.js.map +1 -0
- package/dist/commands/up.d.ts +14 -0
- package/dist/commands/up.d.ts.map +1 -0
- package/dist/commands/up.js +703 -0
- package/dist/commands/up.js.map +1 -0
- package/dist/commands/util.d.ts +19 -0
- package/dist/commands/util.d.ts.map +1 -0
- package/dist/commands/util.js +116 -0
- package/dist/commands/util.js.map +1 -0
- package/dist/commands/volumes.d.ts +3 -0
- package/dist/commands/volumes.d.ts.map +1 -0
- package/dist/commands/volumes.js +196 -0
- package/dist/commands/volumes.js.map +1 -0
- package/dist/commands/watch.d.ts +3 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +398 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/commands/webhooks.d.ts +3 -0
- package/dist/commands/webhooks.d.ts.map +1 -0
- package/dist/commands/webhooks.js +23 -0
- package/dist/commands/webhooks.js.map +1 -0
- package/dist/commands/whoami.d.ts +3 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +84 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/commands/workspaces.d.ts +3 -0
- package/dist/commands/workspaces.d.ts.map +1 -0
- package/dist/commands/workspaces.js +87 -0
- package/dist/commands/workspaces.js.map +1 -0
- package/dist/config.d.ts +28 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +129 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +22 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +62 -0
- package/dist/errors.js.map +1 -0
- package/dist/framework-detector.d.ts +22 -0
- package/dist/framework-detector.d.ts.map +1 -0
- package/dist/framework-detector.js +373 -0
- package/dist/framework-detector.js.map +1 -0
- package/dist/pty/raw-mode.d.ts +7 -0
- package/dist/pty/raw-mode.d.ts.map +1 -0
- package/dist/pty/raw-mode.js +22 -0
- package/dist/pty/raw-mode.js.map +1 -0
- package/dist/pty/ws-pty-client.d.ts +12 -0
- package/dist/pty/ws-pty-client.d.ts.map +1 -0
- package/dist/pty/ws-pty-client.js +69 -0
- package/dist/pty/ws-pty-client.js.map +1 -0
- package/dist/types.d.ts +326 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +16 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/progress.d.ts +10 -0
- package/dist/ui/progress.d.ts.map +1 -0
- package/dist/ui/progress.js +36 -0
- package/dist/ui/progress.js.map +1 -0
- package/dist/ui/spinner.d.ts +4 -0
- package/dist/ui/spinner.d.ts.map +1 -0
- package/dist/ui/spinner.js +7 -0
- package/dist/ui/spinner.js.map +1 -0
- package/dist/ui/table.d.ts +8 -0
- package/dist/ui/table.d.ts.map +1 -0
- package/dist/ui/table.js +46 -0
- package/dist/ui/table.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { addDataOption, deleteAndPrint, enc, getAndPrint, patchAndPrint, postAndPrint, requireAction, runAction, } from "./enterprise-util.js";
|
|
2
|
+
const actions = ["pull", "open-terminal", "run", "expose"];
|
|
3
|
+
export function register(program) {
|
|
4
|
+
const workspaces = program
|
|
5
|
+
.command("workspaces")
|
|
6
|
+
.description("Manage tenant workspaces and open-computer host workspaces");
|
|
7
|
+
// ── Tenant workspace CRUD (/workspaces) ─────────────────────────────────
|
|
8
|
+
workspaces
|
|
9
|
+
.command("list")
|
|
10
|
+
.description("List tenant workspaces")
|
|
11
|
+
.option("--json", "Output as JSON")
|
|
12
|
+
.action((opts) => runAction(() => getAndPrint("/workspaces", opts)));
|
|
13
|
+
addDataOption(workspaces
|
|
14
|
+
.command("create")
|
|
15
|
+
.description("Create a tenant workspace")
|
|
16
|
+
.option("--name <name>", "Workspace name")
|
|
17
|
+
.option("--description <desc>", "Workspace description"))
|
|
18
|
+
.option("--json", "Output as JSON")
|
|
19
|
+
.action((opts) => runAction(async () => {
|
|
20
|
+
const base = opts.data
|
|
21
|
+
? JSON.parse(opts.data)
|
|
22
|
+
: {};
|
|
23
|
+
if (opts.name)
|
|
24
|
+
base["name"] = opts.name;
|
|
25
|
+
if (opts.description)
|
|
26
|
+
base["description"] = opts.description;
|
|
27
|
+
await postAndPrint("/workspaces", { ...opts, data: JSON.stringify(base) }, {});
|
|
28
|
+
}));
|
|
29
|
+
workspaces
|
|
30
|
+
.command("show <workspace-id>")
|
|
31
|
+
.description("Show a tenant workspace")
|
|
32
|
+
.option("--json", "Output as JSON")
|
|
33
|
+
.action((id, opts) => runAction(() => getAndPrint(`/workspaces/${enc(id)}`, opts)));
|
|
34
|
+
addDataOption(workspaces
|
|
35
|
+
.command("update <workspace-id>")
|
|
36
|
+
.description("Update a tenant workspace"))
|
|
37
|
+
.option("--json", "Output as JSON")
|
|
38
|
+
.action((id, opts) => runAction(() => patchAndPrint(`/workspaces/${enc(id)}`, opts)));
|
|
39
|
+
workspaces
|
|
40
|
+
.command("delete <workspace-id>")
|
|
41
|
+
.description("Delete a tenant workspace")
|
|
42
|
+
.option("--json", "Output as JSON")
|
|
43
|
+
.action((id, opts) => runAction(() => deleteAndPrint(`/workspaces/${enc(id)}`, opts)));
|
|
44
|
+
workspaces
|
|
45
|
+
.command("computers <workspace-id>")
|
|
46
|
+
.description("List computers that belong to a tenant workspace")
|
|
47
|
+
.option("--json", "Output as JSON")
|
|
48
|
+
.action((id, opts) => runAction(() => getAndPrint(`/workspaces/${enc(id)}/computers`, opts)));
|
|
49
|
+
// ── Open-computer host workspaces (/opencomputers/hosts/:id/workspaces) ─
|
|
50
|
+
// These use the `host-*` prefix to avoid collision with the tenant commands above.
|
|
51
|
+
workspaces
|
|
52
|
+
.command("host-list [host-id]")
|
|
53
|
+
.description("List open-computer host workspaces (omit host-id to list all hosts)")
|
|
54
|
+
.option("--json", "Output as JSON")
|
|
55
|
+
.action((hostId, opts) => runAction(() => getAndPrint(hostId
|
|
56
|
+
? `/opencomputers/hosts/${enc(hostId)}/workspaces`
|
|
57
|
+
: "/opencomputers/workspaces", opts)));
|
|
58
|
+
addDataOption(workspaces
|
|
59
|
+
.command("host-create <host-id>")
|
|
60
|
+
.description("Create a host workspace"))
|
|
61
|
+
.option("--json", "Output as JSON")
|
|
62
|
+
.action((hostId, opts) => runAction(() => postAndPrint(`/opencomputers/hosts/${enc(hostId)}/workspaces`, opts, {})));
|
|
63
|
+
workspaces
|
|
64
|
+
.command("host-show <host-id> <workspace-id>")
|
|
65
|
+
.description("Show a host workspace")
|
|
66
|
+
.option("--json", "Output as JSON")
|
|
67
|
+
.action((hostId, workspaceId, opts) => runAction(() => getAndPrint(`/opencomputers/hosts/${enc(hostId)}/workspaces/${enc(workspaceId)}`, opts)));
|
|
68
|
+
workspaces
|
|
69
|
+
.command("host-delete <host-id> <workspace-id>")
|
|
70
|
+
.description("Delete a host workspace")
|
|
71
|
+
.option("--json", "Output as JSON")
|
|
72
|
+
.action((hostId, workspaceId, opts) => runAction(() => deleteAndPrint(`/opencomputers/hosts/${enc(hostId)}/workspaces/${enc(workspaceId)}`, opts)));
|
|
73
|
+
addDataOption(workspaces
|
|
74
|
+
.command("host-action <host-id> <workspace-id> <action>")
|
|
75
|
+
.description("Run workspace action: pull, open-terminal, run, expose"))
|
|
76
|
+
.option("--json", "Output as JSON")
|
|
77
|
+
.action((hostId, workspaceId, action, opts) => runAction(async () => {
|
|
78
|
+
requireAction(action, actions);
|
|
79
|
+
await postAndPrint(`/opencomputers/hosts/${enc(hostId)}/workspaces/${enc(workspaceId)}/${enc(action)}`, opts);
|
|
80
|
+
}));
|
|
81
|
+
workspaces
|
|
82
|
+
.command("host-events <host-id> <workspace-id>")
|
|
83
|
+
.description("Show host workspace events")
|
|
84
|
+
.option("--json", "Output as JSON")
|
|
85
|
+
.action((hostId, workspaceId, opts) => runAction(() => getAndPrint(`/opencomputers/hosts/${enc(hostId)}/workspaces/${enc(workspaceId)}/events`, opts)));
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=workspaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../../src/commands/workspaces.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { MiosaConfig } from "./types.js";
|
|
2
|
+
export declare function loadConfig(): MiosaConfig;
|
|
3
|
+
export declare function saveConfig(updates: Partial<MiosaConfig>): void;
|
|
4
|
+
export declare function clearApiKey(): void;
|
|
5
|
+
export declare function getConfigPath(): string;
|
|
6
|
+
export declare function getConfigDir(): string;
|
|
7
|
+
export declare function configExists(): boolean;
|
|
8
|
+
export declare function redactKey(key: string | null | undefined): string;
|
|
9
|
+
export interface AuthCache {
|
|
10
|
+
email: string | null;
|
|
11
|
+
name: string;
|
|
12
|
+
slug: string;
|
|
13
|
+
plan: string;
|
|
14
|
+
credit_balance: number;
|
|
15
|
+
region: string | null;
|
|
16
|
+
cached_at: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function saveAuthCache(cache: AuthCache): void;
|
|
19
|
+
export declare function loadAuthCache(): AuthCache | null;
|
|
20
|
+
export declare function clearAuthCache(): void;
|
|
21
|
+
export type ConfigKey = "api_url" | "region" | "output" | "default_host";
|
|
22
|
+
export declare const CONFIG_KEYS: ConfigKey[];
|
|
23
|
+
export declare const CONFIG_KEY_DESCRIPTIONS: Record<ConfigKey, string>;
|
|
24
|
+
/** Map from the user-facing key name to the internal MiosaConfig field name. */
|
|
25
|
+
export declare function configKeyToField(key: ConfigKey): keyof MiosaConfig;
|
|
26
|
+
export declare function getConfigValue(key: ConfigKey): string;
|
|
27
|
+
export declare function setConfigValue(key: ConfigKey, value: string): void;
|
|
28
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAU,WAAW,EAAE,MAAM,YAAY,CAAC;AActD,wBAAgB,UAAU,IAAI,WAAW,CAyBxC;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAkB9D;AAED,wBAAgB,WAAW,IAAI,IAAI,CAGlC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAGD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAIhE;AAKD,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAKpD;AAED,wBAAgB,aAAa,IAAI,SAAS,GAAG,IAAI,CAQhD;AAED,wBAAgB,cAAc,IAAI,IAAI,CAMrC;AAID,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,cAAc,CAAC;AAEzE,eAAO,MAAM,WAAW,EAAE,SAAS,EAKlC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAK7D,CAAC;AAEF,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,WAAW,CAGlE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAMrD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAGlE"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
const CONFIG_DIR = path.join(os.homedir(), ".miosa");
|
|
5
|
+
const CONFIG_FILE = path.join(CONFIG_DIR, "config.json");
|
|
6
|
+
const AUTH_CACHE_FILE = path.join(CONFIG_DIR, "auth-cache.json");
|
|
7
|
+
const DEFAULTS = {
|
|
8
|
+
endpoint: "https://api.miosa.ai",
|
|
9
|
+
api_key: null,
|
|
10
|
+
default_host: null,
|
|
11
|
+
region: null,
|
|
12
|
+
output: "text",
|
|
13
|
+
};
|
|
14
|
+
export function loadConfig() {
|
|
15
|
+
let fileConfig = {};
|
|
16
|
+
try {
|
|
17
|
+
if (fs.existsSync(CONFIG_FILE)) {
|
|
18
|
+
const raw = fs.readFileSync(CONFIG_FILE, "utf8");
|
|
19
|
+
fileConfig = JSON.parse(raw);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
// Corrupt config — treat as empty, will warn on access
|
|
24
|
+
}
|
|
25
|
+
const config = {
|
|
26
|
+
endpoint: process.env["MIOSA_ENDPOINT"] ?? fileConfig.endpoint ?? DEFAULTS.endpoint,
|
|
27
|
+
api_key: process.env["MIOSA_API_KEY"] ??
|
|
28
|
+
fileConfig.api_key ??
|
|
29
|
+
null,
|
|
30
|
+
default_host: fileConfig.default_host ?? null,
|
|
31
|
+
region: process.env["MIOSA_REGION"] ?? fileConfig.region ?? null,
|
|
32
|
+
output: fileConfig.output ?? DEFAULTS.output,
|
|
33
|
+
};
|
|
34
|
+
return config;
|
|
35
|
+
}
|
|
36
|
+
export function saveConfig(updates) {
|
|
37
|
+
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
38
|
+
let existing = {};
|
|
39
|
+
try {
|
|
40
|
+
if (fs.existsSync(CONFIG_FILE)) {
|
|
41
|
+
existing = JSON.parse(fs.readFileSync(CONFIG_FILE, "utf8"));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// Start fresh on corrupt config
|
|
46
|
+
}
|
|
47
|
+
const merged = { ...existing, ...updates };
|
|
48
|
+
fs.writeFileSync(CONFIG_FILE, JSON.stringify(merged, null, 2) + "\n", {
|
|
49
|
+
mode: 0o600,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
export function clearApiKey() {
|
|
53
|
+
saveConfig({ api_key: null });
|
|
54
|
+
clearAuthCache();
|
|
55
|
+
}
|
|
56
|
+
export function getConfigPath() {
|
|
57
|
+
return CONFIG_FILE;
|
|
58
|
+
}
|
|
59
|
+
export function getConfigDir() {
|
|
60
|
+
return CONFIG_DIR;
|
|
61
|
+
}
|
|
62
|
+
export function configExists() {
|
|
63
|
+
return fs.existsSync(CONFIG_FILE);
|
|
64
|
+
}
|
|
65
|
+
// Redact API key for safe logging/display
|
|
66
|
+
export function redactKey(key) {
|
|
67
|
+
if (!key)
|
|
68
|
+
return "(none)";
|
|
69
|
+
if (key.length <= 12)
|
|
70
|
+
return "***";
|
|
71
|
+
return key.slice(0, 8) + "..." + key.slice(-4);
|
|
72
|
+
}
|
|
73
|
+
export function saveAuthCache(cache) {
|
|
74
|
+
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
75
|
+
fs.writeFileSync(AUTH_CACHE_FILE, JSON.stringify(cache, null, 2) + "\n", {
|
|
76
|
+
mode: 0o600,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
export function loadAuthCache() {
|
|
80
|
+
try {
|
|
81
|
+
if (!fs.existsSync(AUTH_CACHE_FILE))
|
|
82
|
+
return null;
|
|
83
|
+
const raw = fs.readFileSync(AUTH_CACHE_FILE, "utf8");
|
|
84
|
+
return JSON.parse(raw);
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
export function clearAuthCache() {
|
|
91
|
+
try {
|
|
92
|
+
if (fs.existsSync(AUTH_CACHE_FILE))
|
|
93
|
+
fs.unlinkSync(AUTH_CACHE_FILE);
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
// Ignore — cache may already be gone
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
export const CONFIG_KEYS = [
|
|
100
|
+
"api_url",
|
|
101
|
+
"region",
|
|
102
|
+
"output",
|
|
103
|
+
"default_host",
|
|
104
|
+
];
|
|
105
|
+
export const CONFIG_KEY_DESCRIPTIONS = {
|
|
106
|
+
api_url: "API base URL",
|
|
107
|
+
region: "Default deployment region",
|
|
108
|
+
output: "Output format (text | json)",
|
|
109
|
+
default_host: "Default OpenComputers host",
|
|
110
|
+
};
|
|
111
|
+
/** Map from the user-facing key name to the internal MiosaConfig field name. */
|
|
112
|
+
export function configKeyToField(key) {
|
|
113
|
+
if (key === "api_url")
|
|
114
|
+
return "endpoint";
|
|
115
|
+
return key;
|
|
116
|
+
}
|
|
117
|
+
export function getConfigValue(key) {
|
|
118
|
+
const config = loadConfig();
|
|
119
|
+
const field = configKeyToField(key);
|
|
120
|
+
const val = config[field];
|
|
121
|
+
if (val === null || val === undefined)
|
|
122
|
+
return "";
|
|
123
|
+
return String(val);
|
|
124
|
+
}
|
|
125
|
+
export function setConfigValue(key, value) {
|
|
126
|
+
const field = configKeyToField(key);
|
|
127
|
+
saveConfig({ [field]: value === "" ? null : value });
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type ApiErrorBody } from "./types.js";
|
|
2
|
+
export declare class MiosaError extends Error {
|
|
3
|
+
readonly exitCode: number;
|
|
4
|
+
readonly hint?: string | undefined;
|
|
5
|
+
constructor(message: string, exitCode: number, hint?: string | undefined);
|
|
6
|
+
}
|
|
7
|
+
export declare class AuthError extends MiosaError {
|
|
8
|
+
constructor(message?: string, hint?: string);
|
|
9
|
+
}
|
|
10
|
+
export declare class NetworkError extends MiosaError {
|
|
11
|
+
constructor(message: string, hint?: string);
|
|
12
|
+
}
|
|
13
|
+
export declare class UserError extends MiosaError {
|
|
14
|
+
constructor(message: string, hint?: string);
|
|
15
|
+
}
|
|
16
|
+
export declare class ServerError extends MiosaError {
|
|
17
|
+
readonly statusCode: number;
|
|
18
|
+
readonly body?: unknown | undefined;
|
|
19
|
+
constructor(message: string, statusCode: number, body?: unknown | undefined);
|
|
20
|
+
}
|
|
21
|
+
export declare function mapHttpError(status: number, body: ApiErrorBody, rawBody: string): MiosaError;
|
|
22
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,YAAY,CAAC;AAEpB,qBAAa,UAAW,SAAQ,KAAK;aAGjB,QAAQ,EAAE,MAAM;aAChB,IAAI,CAAC,EAAE,MAAM;gBAF7B,OAAO,EAAE,MAAM,EACC,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,YAAA;CAKhC;AAED,qBAAa,SAAU,SAAQ,UAAU;gBAErC,OAAO,SAAiD,EACxD,IAAI,SAAsF;CAI7F;AAED,qBAAa,YAAa,SAAQ,UAAU;gBAC9B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAG3C;AAED,qBAAa,SAAU,SAAQ,UAAU;gBAC3B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAG3C;AAED,qBAAa,WAAY,SAAQ,UAAU;aAGvB,UAAU,EAAE,MAAM;aAClB,IAAI,CAAC,EAAE,OAAO;gBAF9B,OAAO,EAAE,MAAM,EACC,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,OAAO,YAAA;CAIjC;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,MAAM,GACd,UAAU,CA0CZ"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { EXIT_AUTH_ERROR, EXIT_NETWORK_ERROR, EXIT_SERVER_ERROR, EXIT_USER_ERROR, } from "./types.js";
|
|
2
|
+
export class MiosaError extends Error {
|
|
3
|
+
exitCode;
|
|
4
|
+
hint;
|
|
5
|
+
constructor(message, exitCode, hint) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.exitCode = exitCode;
|
|
8
|
+
this.hint = hint;
|
|
9
|
+
this.name = "MiosaError";
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export class AuthError extends MiosaError {
|
|
13
|
+
constructor(message = "Authentication failed. Run: miosa auth login", hint = "If this terminal was revoked, run `miosa auth login` again to create a new token.") {
|
|
14
|
+
super(message, EXIT_AUTH_ERROR, hint);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export class NetworkError extends MiosaError {
|
|
18
|
+
constructor(message, hint) {
|
|
19
|
+
super(message, EXIT_NETWORK_ERROR, hint);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export class UserError extends MiosaError {
|
|
23
|
+
constructor(message, hint) {
|
|
24
|
+
super(message, EXIT_USER_ERROR, hint);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export class ServerError extends MiosaError {
|
|
28
|
+
statusCode;
|
|
29
|
+
body;
|
|
30
|
+
constructor(message, statusCode, body) {
|
|
31
|
+
super(message, EXIT_SERVER_ERROR);
|
|
32
|
+
this.statusCode = statusCode;
|
|
33
|
+
this.body = body;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export function mapHttpError(status, body, rawBody) {
|
|
37
|
+
const msg = body.error?.message ?? body.message ?? `HTTP ${status}`;
|
|
38
|
+
switch (status) {
|
|
39
|
+
case 401:
|
|
40
|
+
case 403:
|
|
41
|
+
if (/revoked|expired|invalid|not found|unauthorized|forbidden/i.test(msg)) {
|
|
42
|
+
return new AuthError(`This terminal connection is no longer authorized (${status}): ${msg}`, "Run `miosa auth login` to reconnect this terminal, or manage tokens at https://miosa.ai/account.");
|
|
43
|
+
}
|
|
44
|
+
return new AuthError(`Access denied (${status}): ${msg}`, "Run `miosa auth login` to connect this terminal.");
|
|
45
|
+
case 402:
|
|
46
|
+
return new UserError(`Insufficient credits: ${msg}`, "Top up at https://miosa.ai/billing");
|
|
47
|
+
case 404:
|
|
48
|
+
return new UserError(`Not found: ${msg}`);
|
|
49
|
+
case 422:
|
|
50
|
+
return new UserError(`Validation error: ${msg}`, body.error?.details ? JSON.stringify(body.error.details) : undefined);
|
|
51
|
+
case 429:
|
|
52
|
+
return new UserError("Rate limited. Wait a moment and retry.");
|
|
53
|
+
case 501:
|
|
54
|
+
return new ServerError(`Feature not available: ${msg}`, status, rawBody);
|
|
55
|
+
default:
|
|
56
|
+
if (status >= 500) {
|
|
57
|
+
return new ServerError(`Server error (${status}): ${msg}`, status, rawBody);
|
|
58
|
+
}
|
|
59
|
+
return new MiosaError(msg, EXIT_USER_ERROR);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,GAEhB,MAAM,YAAY,CAAC;AAEpB,MAAM,OAAO,UAAW,SAAQ,KAAK;IAGjB;IACA;IAHlB,YACE,OAAe,EACC,QAAgB,EAChB,IAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,aAAQ,GAAR,QAAQ,CAAQ;QAChB,SAAI,GAAJ,IAAI,CAAS;QAG7B,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,OAAO,SAAU,SAAQ,UAAU;IACvC,YACE,OAAO,GAAG,8CAA8C,EACxD,IAAI,GAAG,mFAAmF;QAE1F,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,UAAU;IAC1C,YAAY,OAAe,EAAE,IAAa;QACxC,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF;AAED,MAAM,OAAO,SAAU,SAAQ,UAAU;IACvC,YAAY,OAAe,EAAE,IAAa;QACxC,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,UAAU;IAGvB;IACA;IAHlB,YACE,OAAe,EACC,UAAkB,EAClB,IAAc;QAE9B,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAHlB,eAAU,GAAV,UAAU,CAAQ;QAClB,SAAI,GAAJ,IAAI,CAAU;IAGhC,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAC1B,MAAc,EACd,IAAkB,EAClB,OAAe;IAEf,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,QAAQ,MAAM,EAAE,CAAC;IAEpE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACN,IAAI,2DAA2D,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1E,OAAO,IAAI,SAAS,CAClB,qDAAqD,MAAM,MAAM,GAAG,EAAE,EACtE,kGAAkG,CACnG,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,SAAS,CAClB,kBAAkB,MAAM,MAAM,GAAG,EAAE,EACnC,kDAAkD,CACnD,CAAC;QACJ,KAAK,GAAG;YACN,OAAO,IAAI,SAAS,CAClB,yBAAyB,GAAG,EAAE,EAC9B,oCAAoC,CACrC,CAAC;QACJ,KAAK,GAAG;YACN,OAAO,IAAI,SAAS,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC;QAC5C,KAAK,GAAG;YACN,OAAO,IAAI,SAAS,CAClB,qBAAqB,GAAG,EAAE,EAC1B,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CACrE,CAAC;QACJ,KAAK,GAAG;YACN,OAAO,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;QACjE,KAAK,GAAG;YACN,OAAO,IAAI,WAAW,CAAC,0BAA0B,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3E;YACE,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;gBAClB,OAAO,IAAI,WAAW,CACpB,iBAAiB,MAAM,MAAM,GAAG,EAAE,EAClC,MAAM,EACN,OAAO,CACR,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,UAAU,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAChD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type Framework = "nextjs" | "sveltekit" | "vite-react" | "phoenix" | "django" | "flask" | "rails" | "go" | "rust" | "static";
|
|
2
|
+
export interface DetectionResult {
|
|
3
|
+
framework: Framework;
|
|
4
|
+
confidence: number;
|
|
5
|
+
buildCommand: string;
|
|
6
|
+
runCommand: string;
|
|
7
|
+
port?: number;
|
|
8
|
+
envKeysNeeded: string[];
|
|
9
|
+
filesExamined: string[];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Run all detectors against `dir` and return the highest-confidence result,
|
|
13
|
+
* or null if nothing was detected with confidence >= 50.
|
|
14
|
+
*/
|
|
15
|
+
export declare function detectFramework(dir: string): DetectionResult | null;
|
|
16
|
+
/**
|
|
17
|
+
* Run all detectors and return all results sorted by confidence,
|
|
18
|
+
* useful for debugging or showing alternatives.
|
|
19
|
+
*/
|
|
20
|
+
export declare function detectFrameworkAll(dir: string): DetectionResult[];
|
|
21
|
+
export declare const FRAMEWORK_LABELS: Record<Framework, string>;
|
|
22
|
+
//# sourceMappingURL=framework-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"framework-detector.d.ts","sourceRoot":"","sources":["../src/framework-detector.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,WAAW,GACX,YAAY,GACZ,SAAS,GACT,QAAQ,GACR,OAAO,GACP,OAAO,GACP,IAAI,GACJ,MAAM,GACN,QAAQ,CAAC;AAEb,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAiXD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAiBnE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,EAAE,CAYjE;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAWtD,CAAC"}
|