@miosa/cli 1.0.52 → 1.0.54
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 +42 -65
- package/dist/app-manifest.d.ts +19 -0
- package/dist/app-manifest.d.ts.map +1 -1
- package/dist/app-manifest.js +39 -12
- package/dist/app-manifest.js.map +1 -1
- package/dist/bin/miosa.js +0 -9
- package/dist/bin/miosa.js.map +1 -1
- package/dist/commands/capabilities.d.ts.map +1 -1
- package/dist/commands/capabilities.js +5 -207
- package/dist/commands/capabilities.js.map +1 -1
- package/dist/commands/databases.d.ts.map +1 -1
- package/dist/commands/databases.js +0 -85
- package/dist/commands/databases.js.map +1 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +2 -109
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/docker-deploy.d.ts.map +1 -1
- package/dist/commands/docker-deploy.js +156 -0
- package/dist/commands/docker-deploy.js.map +1 -1
- package/dist/commands/enterprise-util.d.ts +1 -3
- package/dist/commands/enterprise-util.d.ts.map +1 -1
- package/dist/commands/enterprise-util.js +9 -25
- package/dist/commands/enterprise-util.js.map +1 -1
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +17 -171
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/{app.d.ts → machines.d.ts} +1 -1
- 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/new.js +2 -2
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/sandbox.d.ts.map +1 -1
- package/dist/commands/sandbox.js +42 -169
- package/dist/commands/sandbox.js.map +1 -1
- package/dist/config.d.ts +1 -24
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +0 -87
- package/dist/config.js.map +1 -1
- package/dist/miosa-linux-x64 +0 -0
- package/package.json +2 -3
- package/dist/app-advisor.d.ts +0 -80
- package/dist/app-advisor.d.ts.map +0 -1
- package/dist/app-advisor.js +0 -473
- package/dist/app-advisor.js.map +0 -1
- package/dist/commands/app.d.ts.map +0 -1
- package/dist/commands/app.js +0 -115
- package/dist/commands/app.js.map +0 -1
- package/dist/commands/command-overview.d.ts +0 -13
- package/dist/commands/command-overview.d.ts.map +0 -1
- package/dist/commands/command-overview.js +0 -50
- package/dist/commands/command-overview.js.map +0 -1
- package/dist/commands/context.d.ts +0 -3
- package/dist/commands/context.d.ts.map +0 -1
- package/dist/commands/context.js +0 -248
- package/dist/commands/context.js.map +0 -1
package/dist/app-advisor.js
DELETED
|
@@ -1,473 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { detectFramework, detectFrameworkAll, FRAMEWORK_LABELS, } from "./framework-detector.js";
|
|
4
|
-
import { loadAppManifest, manifestBuildCommand, manifestOutputPath, manifestPort, manifestProbePath, manifestRunCommand, manifestStartCommand, } from "./app-manifest.js";
|
|
5
|
-
const DEFAULT_PROBE_PATH = "/";
|
|
6
|
-
export function inspectApp(inputDir) {
|
|
7
|
-
const dir = path.resolve(inputDir);
|
|
8
|
-
const manifest = loadAppManifest(dir);
|
|
9
|
-
const best = detectFramework(dir);
|
|
10
|
-
const all = detectFrameworkAll(dir);
|
|
11
|
-
const frameworkId = manifest?.manifest.framework ?? best?.framework ?? "unknown";
|
|
12
|
-
const label = frameworkId === "unknown"
|
|
13
|
-
? "Unknown"
|
|
14
|
-
: FRAMEWORK_LABELS[frameworkId] ?? frameworkId;
|
|
15
|
-
const packageManager = detectPackageManager(dir);
|
|
16
|
-
const dockerfile = findDockerfile(dir);
|
|
17
|
-
const envKeys = detectEnvKeys(dir, best, manifest);
|
|
18
|
-
const needsDatabase = envKeys.includes("DATABASE_URL") || packageHintsDatabase(dir);
|
|
19
|
-
const port = manifestPort(manifest?.manifest) ?? best?.port ?? null;
|
|
20
|
-
const outputPath = manifestOutputPath(manifest?.manifest) ?? defaultOutputPath(best?.framework);
|
|
21
|
-
const buildCommand = manifestBuildCommand(manifest?.manifest) ||
|
|
22
|
-
packageScriptCommand(dir, packageManager, "build") ||
|
|
23
|
-
best?.buildCommand ||
|
|
24
|
-
null;
|
|
25
|
-
const devCommand = manifestStartCommand(manifest?.manifest) ||
|
|
26
|
-
packageScriptCommand(dir, packageManager, "dev", devScriptArgs(best?.framework, port)) ||
|
|
27
|
-
defaultDevCommand(best?.framework, port);
|
|
28
|
-
const runCommand = manifestRunCommand(manifest?.manifest) ||
|
|
29
|
-
packageScriptCommand(dir, packageManager, "start") ||
|
|
30
|
-
best?.runCommand ||
|
|
31
|
-
null;
|
|
32
|
-
const installCommand = manifest?.manifest.install ?? defaultInstallCommand(dir, packageManager);
|
|
33
|
-
const deployment = recommendDeployment(best, outputPath, needsDatabase, dockerfile);
|
|
34
|
-
const template = manifest?.manifest.template || templateFor(frameworkId, needsDatabase);
|
|
35
|
-
const risks = detectRisks(dir, best, port, runCommand, needsDatabase, dockerfile);
|
|
36
|
-
return {
|
|
37
|
-
path: dir,
|
|
38
|
-
manifest: manifest ? { path: manifest.path, data: manifest.manifest } : null,
|
|
39
|
-
framework: {
|
|
40
|
-
id: frameworkId,
|
|
41
|
-
label,
|
|
42
|
-
confidence: manifest?.manifest.framework ? 100 : best?.confidence ?? 0,
|
|
43
|
-
alternatives: all.slice(0, 4).map((result) => ({
|
|
44
|
-
id: result.framework,
|
|
45
|
-
label: FRAMEWORK_LABELS[result.framework],
|
|
46
|
-
confidence: result.confidence,
|
|
47
|
-
})),
|
|
48
|
-
files_examined: best?.filesExamined ?? [],
|
|
49
|
-
},
|
|
50
|
-
package_manager: packageManager,
|
|
51
|
-
dockerfile,
|
|
52
|
-
commands: {
|
|
53
|
-
install: installCommand,
|
|
54
|
-
dev: devCommand,
|
|
55
|
-
build: buildCommand,
|
|
56
|
-
start: runCommand,
|
|
57
|
-
},
|
|
58
|
-
runtime: {
|
|
59
|
-
port,
|
|
60
|
-
probe_path: manifestProbePath(manifest?.manifest) ?? DEFAULT_PROBE_PATH,
|
|
61
|
-
output_path: outputPath,
|
|
62
|
-
needs_database: needsDatabase,
|
|
63
|
-
env_keys: envKeys,
|
|
64
|
-
},
|
|
65
|
-
recommendation: {
|
|
66
|
-
template,
|
|
67
|
-
deployment,
|
|
68
|
-
reason: recommendationReason(deployment, best?.framework, needsDatabase),
|
|
69
|
-
},
|
|
70
|
-
risks,
|
|
71
|
-
next: [
|
|
72
|
-
`miosa app plan ${shellPath(dir)} --goal deploy --json`,
|
|
73
|
-
"miosa capabilities --json",
|
|
74
|
-
],
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
export function planApp(inputDir, options = {}) {
|
|
78
|
-
const inspect = inspectApp(inputDir);
|
|
79
|
-
const goal = options.goal ?? "deploy";
|
|
80
|
-
const slug = options.slug ?? "<slug>";
|
|
81
|
-
const workspaceFlag = options.workspace ? ` --workspace ${options.workspace}` : "";
|
|
82
|
-
const port = inspect.runtime.port ?? 3000;
|
|
83
|
-
const probePath = inspect.runtime.probe_path;
|
|
84
|
-
const buildCommand = inspect.commands.build;
|
|
85
|
-
const runCommand = inspect.commands.start;
|
|
86
|
-
const recommendedDeploy = options.preferDockerDeploy === false
|
|
87
|
-
? "standard_deploy"
|
|
88
|
-
: goal === "docker-deploy"
|
|
89
|
-
? "docker_deploy"
|
|
90
|
-
: inspect.recommendation.deployment;
|
|
91
|
-
const steps = [
|
|
92
|
-
{
|
|
93
|
-
id: "auth_health",
|
|
94
|
-
command: "miosa whoami --json",
|
|
95
|
-
purpose: "Verify the current API key is live before spending build time.",
|
|
96
|
-
json: true,
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
id: "inspect",
|
|
100
|
-
command: `miosa app inspect ${shellPath(inspect.path)} --json`,
|
|
101
|
-
purpose: "Persist the detected framework, commands, port, env, and risks.",
|
|
102
|
-
json: true,
|
|
103
|
-
},
|
|
104
|
-
];
|
|
105
|
-
if (inspect.runtime.needs_database) {
|
|
106
|
-
steps.push({
|
|
107
|
-
id: "database_create",
|
|
108
|
-
command: `miosa databases create --engine postgres --wait --timeout 300 --json${workspaceFlag}`,
|
|
109
|
-
purpose: "Create or select managed Postgres before preview/publish so DATABASE_URL can be injected.",
|
|
110
|
-
json: true,
|
|
111
|
-
wait: true,
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
steps.push({
|
|
115
|
-
id: "sandbox_deploy",
|
|
116
|
-
command: sandboxDeployCommand(inspect, port, probePath),
|
|
117
|
-
purpose: "Upload the app to a sandbox, start it, expose the port, and wait for external preview readiness.",
|
|
118
|
-
json: true,
|
|
119
|
-
wait: true,
|
|
120
|
-
}, {
|
|
121
|
-
id: "preview_doctor",
|
|
122
|
-
command: `miosa sandbox doctor <sandbox-id> --port ${port} --probe-path ${quote(probePath)} --json`,
|
|
123
|
-
purpose: "Verify sandbox state, internal HTTP, public route, TLS, and edge probe before publishing.",
|
|
124
|
-
json: true,
|
|
125
|
-
});
|
|
126
|
-
if (inspect.runtime.needs_database) {
|
|
127
|
-
steps.push({
|
|
128
|
-
id: "database_attach",
|
|
129
|
-
command: "miosa sandbox db attach <sandbox-id> <db-id> --json",
|
|
130
|
-
purpose: "Attach DATABASE_URL through encrypted sandbox env rather than writing secrets into files.",
|
|
131
|
-
json: true,
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
if (goal !== "preview") {
|
|
135
|
-
steps.push({
|
|
136
|
-
id: "publish",
|
|
137
|
-
command: publishCommand(recommendedDeploy, slug, buildCommand, runCommand, port, inspect.runtime.output_path),
|
|
138
|
-
purpose: recommendedDeploy === "docker_deploy"
|
|
139
|
-
? "Promote the sandbox workspace into the recommended Docker Deploy production runtime."
|
|
140
|
-
: "Promote the sandbox workspace into durable MIOSA app hosting.",
|
|
141
|
-
json: true,
|
|
142
|
-
wait: true,
|
|
143
|
-
});
|
|
144
|
-
steps.push({
|
|
145
|
-
id: "production_probe",
|
|
146
|
-
command: "curl -fsS <production-url>",
|
|
147
|
-
purpose: "Probe the returned production URL. Do not mark complete from control-plane state alone.",
|
|
148
|
-
json: false,
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
return {
|
|
152
|
-
goal,
|
|
153
|
-
recommended_deploy: recommendedDeploy,
|
|
154
|
-
template: inspect.recommendation.template,
|
|
155
|
-
port: inspect.runtime.port,
|
|
156
|
-
probe_path: probePath,
|
|
157
|
-
build_command: buildCommand,
|
|
158
|
-
run_command: runCommand,
|
|
159
|
-
output_path: inspect.runtime.output_path,
|
|
160
|
-
requires: {
|
|
161
|
-
database: inspect.runtime.needs_database,
|
|
162
|
-
env_keys: inspect.runtime.env_keys,
|
|
163
|
-
},
|
|
164
|
-
steps,
|
|
165
|
-
edge_cases: edgeCasesFor(inspect, recommendedDeploy),
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
function sandboxDeployCommand(inspect, port, probePath) {
|
|
169
|
-
const args = [
|
|
170
|
-
"miosa sandbox deploy",
|
|
171
|
-
shellPath(inspect.path),
|
|
172
|
-
`--template ${inspect.recommendation.template}`,
|
|
173
|
-
`--port ${port}`,
|
|
174
|
-
inspect.commands.dev ? `--start ${quote(inspect.commands.dev)}` : null,
|
|
175
|
-
`--probe-path ${quote(probePath)}`,
|
|
176
|
-
"--wait",
|
|
177
|
-
"--timeout 900",
|
|
178
|
-
"--json",
|
|
179
|
-
].filter(Boolean);
|
|
180
|
-
return args.join(" ");
|
|
181
|
-
}
|
|
182
|
-
function publishCommand(deployment, slug, buildCommand, runCommand, port, outputPath) {
|
|
183
|
-
const args = [
|
|
184
|
-
"miosa sandbox publish <sandbox-id>",
|
|
185
|
-
"--path /workspace",
|
|
186
|
-
`--slug ${slug}`,
|
|
187
|
-
deployment === "docker_deploy" ? "--docker-deploy" : null,
|
|
188
|
-
buildCommand ? `--build-command ${quote(buildCommand)}` : null,
|
|
189
|
-
runCommand ? `--run-command ${quote(runCommand)}` : null,
|
|
190
|
-
runCommand ? `--port ${port}` : null,
|
|
191
|
-
outputPath && !runCommand ? `--output ${quote(outputPath)}` : null,
|
|
192
|
-
"--wait",
|
|
193
|
-
"--timeout 900",
|
|
194
|
-
"--json",
|
|
195
|
-
].filter(Boolean);
|
|
196
|
-
return args.join(" ");
|
|
197
|
-
}
|
|
198
|
-
function detectPackageManager(dir) {
|
|
199
|
-
if (fs.existsSync(path.join(dir, "pnpm-lock.yaml")))
|
|
200
|
-
return "pnpm";
|
|
201
|
-
if (fs.existsSync(path.join(dir, "yarn.lock")))
|
|
202
|
-
return "yarn";
|
|
203
|
-
if (fs.existsSync(path.join(dir, "bun.lockb")) || fs.existsSync(path.join(dir, "bun.lock")))
|
|
204
|
-
return "bun";
|
|
205
|
-
if (fs.existsSync(path.join(dir, "package-lock.json")))
|
|
206
|
-
return "npm";
|
|
207
|
-
if (fs.existsSync(path.join(dir, "uv.lock")))
|
|
208
|
-
return "uv";
|
|
209
|
-
if (fs.existsSync(path.join(dir, "requirements.txt")))
|
|
210
|
-
return "pip";
|
|
211
|
-
if (fs.existsSync(path.join(dir, "package.json")))
|
|
212
|
-
return "npm";
|
|
213
|
-
return null;
|
|
214
|
-
}
|
|
215
|
-
function findDockerfile(dir) {
|
|
216
|
-
for (const file of ["Dockerfile", "dockerfile", "Containerfile"]) {
|
|
217
|
-
const fullPath = path.join(dir, file);
|
|
218
|
-
if (fs.existsSync(fullPath))
|
|
219
|
-
return fullPath;
|
|
220
|
-
}
|
|
221
|
-
return null;
|
|
222
|
-
}
|
|
223
|
-
function readPackageJson(dir) {
|
|
224
|
-
const fullPath = path.join(dir, "package.json");
|
|
225
|
-
try {
|
|
226
|
-
if (!fs.existsSync(fullPath))
|
|
227
|
-
return null;
|
|
228
|
-
return JSON.parse(fs.readFileSync(fullPath, "utf8"));
|
|
229
|
-
}
|
|
230
|
-
catch {
|
|
231
|
-
return null;
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
function packageScripts(dir) {
|
|
235
|
-
const pkg = readPackageJson(dir);
|
|
236
|
-
const scripts = pkg?.["scripts"];
|
|
237
|
-
if (!scripts || typeof scripts !== "object" || Array.isArray(scripts)) {
|
|
238
|
-
return {};
|
|
239
|
-
}
|
|
240
|
-
const result = {};
|
|
241
|
-
for (const [key, value] of Object.entries(scripts)) {
|
|
242
|
-
if (typeof value === "string" && value.trim())
|
|
243
|
-
result[key] = value.trim();
|
|
244
|
-
}
|
|
245
|
-
return result;
|
|
246
|
-
}
|
|
247
|
-
function packageScriptCommand(dir, packageManager, script, extraArgs = "") {
|
|
248
|
-
const scripts = packageScripts(dir);
|
|
249
|
-
if (!scripts[script])
|
|
250
|
-
return null;
|
|
251
|
-
const runner = packageManager === "pnpm"
|
|
252
|
-
? "pnpm"
|
|
253
|
-
: packageManager === "yarn"
|
|
254
|
-
? "yarn"
|
|
255
|
-
: packageManager === "bun"
|
|
256
|
-
? "bun"
|
|
257
|
-
: "npm run";
|
|
258
|
-
return `${runner} ${script}${extraArgs}`;
|
|
259
|
-
}
|
|
260
|
-
function packageHintsDatabase(dir) {
|
|
261
|
-
const pkg = readPackageJson(dir);
|
|
262
|
-
if (!pkg)
|
|
263
|
-
return false;
|
|
264
|
-
const deps = {
|
|
265
|
-
...(pkg["dependencies"] ?? {}),
|
|
266
|
-
...(pkg["devDependencies"] ?? {}),
|
|
267
|
-
};
|
|
268
|
-
return [
|
|
269
|
-
"pg",
|
|
270
|
-
"postgres",
|
|
271
|
-
"prisma",
|
|
272
|
-
"@prisma/client",
|
|
273
|
-
"drizzle-orm",
|
|
274
|
-
"better-sqlite3",
|
|
275
|
-
].some((dep) => dep in deps);
|
|
276
|
-
}
|
|
277
|
-
function devScriptArgs(framework, port) {
|
|
278
|
-
const p = port ?? 3000;
|
|
279
|
-
if (framework === "nextjs")
|
|
280
|
-
return ` -- -H 0.0.0.0 -p ${p}`;
|
|
281
|
-
if (framework === "vite-react")
|
|
282
|
-
return ` -- --host 0.0.0.0 --port ${p}`;
|
|
283
|
-
if (framework === "sveltekit")
|
|
284
|
-
return ` -- --host 0.0.0.0 --port ${p}`;
|
|
285
|
-
return "";
|
|
286
|
-
}
|
|
287
|
-
function defaultDevCommand(framework, port) {
|
|
288
|
-
const p = port ?? 3000;
|
|
289
|
-
if (framework === "nextjs")
|
|
290
|
-
return `npm run dev -- -H 0.0.0.0 -p ${p}`;
|
|
291
|
-
if (framework === "vite-react")
|
|
292
|
-
return `npm run dev -- --host 0.0.0.0 --port ${p}`;
|
|
293
|
-
if (framework === "sveltekit")
|
|
294
|
-
return `npm run dev -- --host 0.0.0.0 --port ${p}`;
|
|
295
|
-
return null;
|
|
296
|
-
}
|
|
297
|
-
function defaultInstallCommand(dir, packageManager) {
|
|
298
|
-
if (!packageManager)
|
|
299
|
-
return null;
|
|
300
|
-
if (packageManager === "pnpm")
|
|
301
|
-
return "pnpm install";
|
|
302
|
-
if (packageManager === "yarn")
|
|
303
|
-
return "yarn install";
|
|
304
|
-
if (packageManager === "bun")
|
|
305
|
-
return "bun install";
|
|
306
|
-
if (packageManager === "uv")
|
|
307
|
-
return "uv sync";
|
|
308
|
-
if (packageManager === "pip")
|
|
309
|
-
return "pip install -r requirements.txt";
|
|
310
|
-
if (fs.existsSync(path.join(dir, "package.json")))
|
|
311
|
-
return "npm install";
|
|
312
|
-
return null;
|
|
313
|
-
}
|
|
314
|
-
function defaultOutputPath(framework) {
|
|
315
|
-
if (framework === "vite-react")
|
|
316
|
-
return "dist";
|
|
317
|
-
if (framework === "sveltekit")
|
|
318
|
-
return "build";
|
|
319
|
-
if (framework === "static")
|
|
320
|
-
return ".";
|
|
321
|
-
return null;
|
|
322
|
-
}
|
|
323
|
-
function templateFor(framework, needsDatabase) {
|
|
324
|
-
if (framework === "nextjs")
|
|
325
|
-
return needsDatabase ? "nextjs-postgres" : "nextjs";
|
|
326
|
-
if (framework === "vite-react")
|
|
327
|
-
return "vite-react";
|
|
328
|
-
if (framework === "flask" || framework === "django")
|
|
329
|
-
return "python-fastapi";
|
|
330
|
-
if (framework === "static")
|
|
331
|
-
return "static-html";
|
|
332
|
-
if (framework === "unknown")
|
|
333
|
-
return "node-22";
|
|
334
|
-
return framework;
|
|
335
|
-
}
|
|
336
|
-
function recommendDeployment(best, outputPath, needsDatabase, dockerfile) {
|
|
337
|
-
if (dockerfile || needsDatabase)
|
|
338
|
-
return "docker_deploy";
|
|
339
|
-
if (best?.framework === "nextjs")
|
|
340
|
-
return "docker_deploy";
|
|
341
|
-
if (best?.framework === "static")
|
|
342
|
-
return "static_publish";
|
|
343
|
-
if (outputPath && ["vite-react", "sveltekit"].includes(best?.framework ?? "")) {
|
|
344
|
-
return "static_publish";
|
|
345
|
-
}
|
|
346
|
-
return "docker_deploy";
|
|
347
|
-
}
|
|
348
|
-
function recommendationReason(deployment, framework, needsDatabase) {
|
|
349
|
-
if (deployment === "docker_deploy") {
|
|
350
|
-
if (needsDatabase)
|
|
351
|
-
return "App needs server-side runtime/env; Docker Deploy is the recommended production path.";
|
|
352
|
-
if (framework === "nextjs")
|
|
353
|
-
return "Next.js commonly needs server/runtime support; Docker Deploy is the safest default.";
|
|
354
|
-
return "Docker Deploy gives a durable runtime with lower-resource app hosting.";
|
|
355
|
-
}
|
|
356
|
-
if (deployment === "static_publish") {
|
|
357
|
-
return "Detected build output can be served as static assets.";
|
|
358
|
-
}
|
|
359
|
-
return "Standard deploy selected by override or unknown runtime constraints.";
|
|
360
|
-
}
|
|
361
|
-
function detectEnvKeys(dir, best, manifest) {
|
|
362
|
-
const keys = new Set(best?.envKeysNeeded ?? []);
|
|
363
|
-
if (manifest?.manifest.framework?.includes("postgres"))
|
|
364
|
-
keys.add("DATABASE_URL");
|
|
365
|
-
for (const file of [".env.example", ".env.sample", "env.example"]) {
|
|
366
|
-
const fullPath = path.join(dir, file);
|
|
367
|
-
if (!fs.existsSync(fullPath))
|
|
368
|
-
continue;
|
|
369
|
-
const content = fs.readFileSync(fullPath, "utf8");
|
|
370
|
-
for (const line of content.split(/\r?\n/)) {
|
|
371
|
-
const match = /^\s*([A-Z][A-Z0-9_]+)\s*=/.exec(line);
|
|
372
|
-
if (match?.[1])
|
|
373
|
-
keys.add(match[1]);
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
if (packageHintsDatabase(dir))
|
|
377
|
-
keys.add("DATABASE_URL");
|
|
378
|
-
return [...keys].sort();
|
|
379
|
-
}
|
|
380
|
-
function detectRisks(dir, best, port, runCommand, needsDatabase, dockerfile) {
|
|
381
|
-
const risks = [];
|
|
382
|
-
if (!best)
|
|
383
|
-
risks.push("No known framework detected; commands may need explicit manifest overrides.");
|
|
384
|
-
if (!port)
|
|
385
|
-
risks.push("No port detected; preview/publish should pass --port explicitly.");
|
|
386
|
-
if (!runCommand)
|
|
387
|
-
risks.push("No start/run command detected; dynamic production deploy needs one.");
|
|
388
|
-
if (best?.framework &&
|
|
389
|
-
["nextjs", "vite-react", "sveltekit"].includes(best.framework)) {
|
|
390
|
-
const scripts = packageScripts(dir);
|
|
391
|
-
if (!scripts["dev"]) {
|
|
392
|
-
risks.push("package.json has no dev script; sandbox preview may need an explicit --start command.");
|
|
393
|
-
}
|
|
394
|
-
if (best.framework === "nextjs" && !scripts["start"]) {
|
|
395
|
-
risks.push("package.json has no start script; production publish may need an explicit --run-command.");
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
if (needsDatabase)
|
|
399
|
-
risks.push("DATABASE_URL required; create/attach managed Postgres before publish.");
|
|
400
|
-
if (port === 3000)
|
|
401
|
-
risks.push("Port 3000 is common; run sandbox ports before previewing to catch conflicts.");
|
|
402
|
-
if (!fs.existsSync(path.join(dir, "package.json")) && ["nextjs", "vite-react", "sveltekit"].includes(best?.framework ?? "")) {
|
|
403
|
-
risks.push("JavaScript framework detected without package.json; template may be runtime-only.");
|
|
404
|
-
}
|
|
405
|
-
if (dockerfile)
|
|
406
|
-
risks.push("Dockerfile present; verify build context and exposed port match MIOSA plan.");
|
|
407
|
-
return risks;
|
|
408
|
-
}
|
|
409
|
-
function edgeCasesFor(inspect, deployment) {
|
|
410
|
-
const cases = [
|
|
411
|
-
{
|
|
412
|
-
code: "AUTH_REVOKED",
|
|
413
|
-
meaning: "Cached identity can exist while live API calls fail.",
|
|
414
|
-
recovery: ["miosa whoami --json", "miosa login --api-key <fresh-key>"],
|
|
415
|
-
},
|
|
416
|
-
{
|
|
417
|
-
code: "PORT_NOT_LISTENING",
|
|
418
|
-
meaning: "The preview route exists but the app process is not listening.",
|
|
419
|
-
recovery: [
|
|
420
|
-
"miosa sandbox ports <sandbox-id> --json",
|
|
421
|
-
"miosa sandbox service logs <sandbox-id> web --lines 100 --json",
|
|
422
|
-
],
|
|
423
|
-
},
|
|
424
|
-
{
|
|
425
|
-
code: "GATEWAY_RESPONSE_DETECTED",
|
|
426
|
-
meaning: "Public preview returned MIOSA gateway JSON instead of the user app.",
|
|
427
|
-
recovery: [
|
|
428
|
-
"miosa sandbox doctor <sandbox-id> --port <port> --json",
|
|
429
|
-
"miosa sandbox ports <sandbox-id> --json",
|
|
430
|
-
],
|
|
431
|
-
},
|
|
432
|
-
{
|
|
433
|
-
code: "DEPLOY_STILL_BUILDING",
|
|
434
|
-
meaning: "A wait timeout does not mean the release failed.",
|
|
435
|
-
recovery: [
|
|
436
|
-
"miosa releases list <app-id-or-slug> --json",
|
|
437
|
-
"miosa logs --deployment <app-id> --lines 200 --json",
|
|
438
|
-
],
|
|
439
|
-
},
|
|
440
|
-
];
|
|
441
|
-
if (inspect.runtime.needs_database) {
|
|
442
|
-
cases.push({
|
|
443
|
-
code: "DATABASE_NOT_RUNNING",
|
|
444
|
-
meaning: "Do not inject or print a pending/failed database URL.",
|
|
445
|
-
recovery: [
|
|
446
|
-
"miosa databases get <db-id> --json",
|
|
447
|
-
"miosa databases logs <db-id> --lines 100 --json",
|
|
448
|
-
],
|
|
449
|
-
});
|
|
450
|
-
}
|
|
451
|
-
if (deployment === "docker_deploy") {
|
|
452
|
-
cases.push({
|
|
453
|
-
code: "DOCKER_DEPLOY_HOST_NOT_READY",
|
|
454
|
-
meaning: "Workspace Docker Deploy host must be active before app publish can finish.",
|
|
455
|
-
recovery: [
|
|
456
|
-
"miosa docker-deploy hosts --json",
|
|
457
|
-
"miosa docker-deploy templates --json",
|
|
458
|
-
],
|
|
459
|
-
});
|
|
460
|
-
}
|
|
461
|
-
return cases;
|
|
462
|
-
}
|
|
463
|
-
function shellPath(value) {
|
|
464
|
-
if (value === process.cwd())
|
|
465
|
-
return ".";
|
|
466
|
-
return quote(value);
|
|
467
|
-
}
|
|
468
|
-
function quote(value) {
|
|
469
|
-
if (/^[A-Za-z0-9_./:=@%+-]+$/.test(value))
|
|
470
|
-
return value;
|
|
471
|
-
return JSON.stringify(value);
|
|
472
|
-
}
|
|
473
|
-
//# sourceMappingURL=app-advisor.js.map
|
package/dist/app-advisor.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app-advisor.js","sourceRoot":"","sources":["../src/app-advisor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/commands/app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+EzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8D/C"}
|
package/dist/commands/app.js
DELETED
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
|
-
import { inspectApp, planApp, } from "../app-advisor.js";
|
|
3
|
-
import { handleError, isJsonMode, printJson } from "./util.js";
|
|
4
|
-
function validGoal(value) {
|
|
5
|
-
if (value === "preview" || value === "deploy" || value === "docker-deploy") {
|
|
6
|
-
return value;
|
|
7
|
-
}
|
|
8
|
-
throw new Error("Invalid goal. Expected preview, deploy, or docker-deploy.");
|
|
9
|
-
}
|
|
10
|
-
function printInspectHuman(result) {
|
|
11
|
-
console.log();
|
|
12
|
-
console.log(chalk.bold("MIOSA app inspection"));
|
|
13
|
-
console.log();
|
|
14
|
-
console.log(` Path: ${result.path}`);
|
|
15
|
-
console.log(` Framework: ${result.framework.label} (${result.framework.confidence}%)`);
|
|
16
|
-
console.log(` Template: ${result.recommendation.template}`);
|
|
17
|
-
console.log(` Deployment: ${result.recommendation.deployment}`);
|
|
18
|
-
console.log(` Port: ${result.runtime.port ?? "unknown"}`);
|
|
19
|
-
console.log(` Probe path: ${result.runtime.probe_path}`);
|
|
20
|
-
console.log(` Build: ${result.commands.build ?? "unknown"}`);
|
|
21
|
-
console.log(` Start: ${result.commands.start ?? "unknown"}`);
|
|
22
|
-
console.log(` Env keys: ${result.runtime.env_keys.join(", ") || "none"}`);
|
|
23
|
-
if (result.manifest)
|
|
24
|
-
console.log(` Manifest: ${result.manifest.path}`);
|
|
25
|
-
if (result.dockerfile)
|
|
26
|
-
console.log(` Dockerfile: ${result.dockerfile}`);
|
|
27
|
-
console.log();
|
|
28
|
-
console.log(chalk.bold("Recommendation"));
|
|
29
|
-
console.log(` ${result.recommendation.reason}`);
|
|
30
|
-
if (result.risks.length > 0) {
|
|
31
|
-
console.log();
|
|
32
|
-
console.log(chalk.bold("Risks"));
|
|
33
|
-
for (const risk of result.risks)
|
|
34
|
-
console.log(` - ${risk}`);
|
|
35
|
-
}
|
|
36
|
-
console.log();
|
|
37
|
-
console.log(chalk.dim("Machine-readable form: miosa app inspect . --json"));
|
|
38
|
-
console.log(chalk.dim("Next: miosa app plan . --goal deploy --json"));
|
|
39
|
-
console.log();
|
|
40
|
-
}
|
|
41
|
-
function printPlanHuman(result) {
|
|
42
|
-
console.log();
|
|
43
|
-
console.log(chalk.bold("MIOSA app plan"));
|
|
44
|
-
console.log();
|
|
45
|
-
console.log(` Goal: ${result.goal}`);
|
|
46
|
-
console.log(` Deploy: ${result.recommended_deploy}`);
|
|
47
|
-
console.log(` Template: ${result.template}`);
|
|
48
|
-
console.log(` Port: ${result.port ?? "unknown"}`);
|
|
49
|
-
console.log(` Probe path: ${result.probe_path}`);
|
|
50
|
-
console.log();
|
|
51
|
-
for (const [index, step] of result.steps.entries()) {
|
|
52
|
-
console.log(`${index + 1}. ${chalk.cyan(step.id)}`);
|
|
53
|
-
console.log(` ${step.purpose}`);
|
|
54
|
-
console.log(` ${chalk.dim(step.command)}`);
|
|
55
|
-
}
|
|
56
|
-
console.log();
|
|
57
|
-
console.log(chalk.dim("Machine-readable form: miosa app plan . --json"));
|
|
58
|
-
console.log();
|
|
59
|
-
}
|
|
60
|
-
export function register(program) {
|
|
61
|
-
const app = program
|
|
62
|
-
.command("app")
|
|
63
|
-
.description("Inspect local apps and generate agent-safe MIOSA plans");
|
|
64
|
-
app
|
|
65
|
-
.command("inspect")
|
|
66
|
-
.argument("[path]", "Local app directory", ".")
|
|
67
|
-
.description("Detect framework, commands, ports, env needs, and recommended MIOSA deployment path")
|
|
68
|
-
.option("--json", "Output compact machine-readable JSON")
|
|
69
|
-
.action((dir, opts) => {
|
|
70
|
-
try {
|
|
71
|
-
const result = inspectApp(dir);
|
|
72
|
-
if (isJsonMode(opts)) {
|
|
73
|
-
printJson({ ok: true, data: result, error: null });
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
printInspectHuman(result);
|
|
77
|
-
}
|
|
78
|
-
catch (err) {
|
|
79
|
-
handleError(err);
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
app
|
|
83
|
-
.command("plan")
|
|
84
|
-
.argument("[path]", "Local app directory", ".")
|
|
85
|
-
.description("Generate the exact MIOSA command sequence for an app")
|
|
86
|
-
.option("--goal <goal>", "Plan goal: preview, deploy, or docker-deploy", validGoal, "deploy")
|
|
87
|
-
.option("--slug <slug>", "Production app slug placeholder/value")
|
|
88
|
-
.option("--workspace <id>", "Workspace ID for scoped create commands")
|
|
89
|
-
.option("--docker-deploy", "Force Docker Deploy production path")
|
|
90
|
-
.option("--no-docker-deploy", "Prefer standard MIOSA Deploy path")
|
|
91
|
-
.option("--json", "Output compact machine-readable JSON")
|
|
92
|
-
.action((dir, opts) => {
|
|
93
|
-
try {
|
|
94
|
-
const result = planApp(dir, {
|
|
95
|
-
goal: opts.goal,
|
|
96
|
-
slug: opts.slug,
|
|
97
|
-
workspace: opts.workspace,
|
|
98
|
-
preferDockerDeploy: opts.dockerDeploy || opts.goal === "docker-deploy"
|
|
99
|
-
? true
|
|
100
|
-
: opts.noDockerDeploy
|
|
101
|
-
? false
|
|
102
|
-
: undefined,
|
|
103
|
-
});
|
|
104
|
-
if (isJsonMode(opts)) {
|
|
105
|
-
printJson({ ok: true, data: result, error: null });
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
printPlanHuman(result);
|
|
109
|
-
}
|
|
110
|
-
catch (err) {
|
|
111
|
-
handleError(err);
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
//# sourceMappingURL=app.js.map
|
package/dist/commands/app.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/commands/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { Command } from "commander";
|
|
2
|
-
interface CommandNode {
|
|
3
|
-
name: string;
|
|
4
|
-
path: string;
|
|
5
|
-
aliases: string[];
|
|
6
|
-
description: string;
|
|
7
|
-
options: string[];
|
|
8
|
-
children: CommandNode[];
|
|
9
|
-
}
|
|
10
|
-
export declare function commandTree(command: Command, parentPath?: string): CommandNode;
|
|
11
|
-
export declare function register(program: Command): void;
|
|
12
|
-
export {};
|
|
13
|
-
//# sourceMappingURL=command-overview.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-overview.d.ts","sourceRoot":"","sources":["../../src/commands/command-overview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAIjD,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB;AAMD,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,SAAK,GAAG,WAAW,CAc1E;AAeD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoB/C"}
|