openboot 0.1.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.
Files changed (79) hide show
  1. package/LICENSE +110 -0
  2. package/README.md +273 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +132 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/clean.d.ts +7 -0
  8. package/dist/commands/clean.d.ts.map +1 -0
  9. package/dist/commands/clean.js +173 -0
  10. package/dist/commands/clean.js.map +1 -0
  11. package/dist/commands/dev.d.ts +7 -0
  12. package/dist/commands/dev.d.ts.map +1 -0
  13. package/dist/commands/dev.js +92 -0
  14. package/dist/commands/dev.js.map +1 -0
  15. package/dist/commands/down.d.ts +5 -0
  16. package/dist/commands/down.d.ts.map +1 -0
  17. package/dist/commands/down.js +33 -0
  18. package/dist/commands/down.js.map +1 -0
  19. package/dist/commands/init.d.ts +5 -0
  20. package/dist/commands/init.d.ts.map +1 -0
  21. package/dist/commands/init.js +560 -0
  22. package/dist/commands/init.js.map +1 -0
  23. package/dist/commands/logs.d.ts +14 -0
  24. package/dist/commands/logs.d.ts.map +1 -0
  25. package/dist/commands/logs.js +243 -0
  26. package/dist/commands/logs.js.map +1 -0
  27. package/dist/commands/reboot.d.ts +5 -0
  28. package/dist/commands/reboot.d.ts.map +1 -0
  29. package/dist/commands/reboot.js +15 -0
  30. package/dist/commands/reboot.js.map +1 -0
  31. package/dist/commands/setup.d.ts +5 -0
  32. package/dist/commands/setup.d.ts.map +1 -0
  33. package/dist/commands/setup.js +200 -0
  34. package/dist/commands/setup.js.map +1 -0
  35. package/dist/commands/status.d.ts +5 -0
  36. package/dist/commands/status.d.ts.map +1 -0
  37. package/dist/commands/status.js +200 -0
  38. package/dist/commands/status.js.map +1 -0
  39. package/dist/commands/up.d.ts +7 -0
  40. package/dist/commands/up.d.ts.map +1 -0
  41. package/dist/commands/up.js +325 -0
  42. package/dist/commands/up.js.map +1 -0
  43. package/dist/lib/config.d.ts +18 -0
  44. package/dist/lib/config.d.ts.map +1 -0
  45. package/dist/lib/config.js +95 -0
  46. package/dist/lib/config.js.map +1 -0
  47. package/dist/lib/docker.d.ts +19 -0
  48. package/dist/lib/docker.d.ts.map +1 -0
  49. package/dist/lib/docker.js +511 -0
  50. package/dist/lib/docker.js.map +1 -0
  51. package/dist/lib/health.d.ts +5 -0
  52. package/dist/lib/health.d.ts.map +1 -0
  53. package/dist/lib/health.js +80 -0
  54. package/dist/lib/health.js.map +1 -0
  55. package/dist/lib/log.d.ts +11 -0
  56. package/dist/lib/log.d.ts.map +1 -0
  57. package/dist/lib/log.js +51 -0
  58. package/dist/lib/log.js.map +1 -0
  59. package/dist/lib/ports.d.ts +13 -0
  60. package/dist/lib/ports.d.ts.map +1 -0
  61. package/dist/lib/ports.js +45 -0
  62. package/dist/lib/ports.js.map +1 -0
  63. package/dist/lib/prereqs.d.ts +8 -0
  64. package/dist/lib/prereqs.d.ts.map +1 -0
  65. package/dist/lib/prereqs.js +78 -0
  66. package/dist/lib/prereqs.js.map +1 -0
  67. package/dist/lib/process.d.ts +38 -0
  68. package/dist/lib/process.d.ts.map +1 -0
  69. package/dist/lib/process.js +285 -0
  70. package/dist/lib/process.js.map +1 -0
  71. package/dist/lib/tail.d.ts +12 -0
  72. package/dist/lib/tail.d.ts.map +1 -0
  73. package/dist/lib/tail.js +136 -0
  74. package/dist/lib/tail.js.map +1 -0
  75. package/dist/types.d.ts +71 -0
  76. package/dist/types.d.ts.map +1 -0
  77. package/dist/types.js +3 -0
  78. package/dist/types.js.map +1 -0
  79. package/package.json +29 -0
@@ -0,0 +1,243 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.logs = logs;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const child_process_1 = require("child_process");
40
+ const config_1 = require("../lib/config");
41
+ const log_1 = require("../lib/log");
42
+ const LOGS_DIR = path.join(".boot", "logs");
43
+ /**
44
+ * `boot logs` — view logs for services.
45
+ *
46
+ * boot logs → show recent logs for all services
47
+ * boot logs api → show logs for "api" service
48
+ * boot logs api -f → follow (tail -f) logs for "api"
49
+ * boot logs api -n 50 → last 50 lines of "api" logs
50
+ * boot logs --all → show all docker + app logs
51
+ */
52
+ async function logs(service, options = {}) {
53
+ let config;
54
+ try {
55
+ config = (0, config_1.loadConfig)();
56
+ }
57
+ catch {
58
+ config = null;
59
+ }
60
+ const lineCount = options.lines || "40";
61
+ // If no service specified, list available logs or show all
62
+ if (!service) {
63
+ return showAllLogs(lineCount);
64
+ }
65
+ // Find the matching log file
66
+ const logFile = findLogFile(service);
67
+ if (!logFile) {
68
+ // Check if it's a Docker service
69
+ if (config?.docker) {
70
+ const containers = [
71
+ ...(config.docker.services || []).map((s) => ({
72
+ name: s.name,
73
+ container: s.container || s.name,
74
+ })),
75
+ ...(config.docker.containers || []).map((c) => ({
76
+ name: c.name,
77
+ container: c.name,
78
+ })),
79
+ ];
80
+ const match = containers.find((c) => c.name.toLowerCase().includes(service.toLowerCase()) ||
81
+ c.container.toLowerCase().includes(service.toLowerCase()));
82
+ if (match) {
83
+ return showDockerLogs(match.container, options.follow, lineCount);
84
+ }
85
+ }
86
+ log_1.log.error(`No logs found for "${service}"`);
87
+ log_1.log.step("Available services:");
88
+ listAvailableLogs();
89
+ return;
90
+ }
91
+ if (options.follow) {
92
+ // Follow mode — use tail -f (blocks until Ctrl+C)
93
+ log_1.log.info(`Following ${service} logs (Ctrl+C to stop)...`);
94
+ log_1.log.blank();
95
+ const child = (0, child_process_1.spawn)("tail", ["-f", "-n", lineCount, logFile], {
96
+ stdio: "inherit",
97
+ });
98
+ await new Promise((resolve) => {
99
+ child.on("close", () => resolve());
100
+ });
101
+ }
102
+ else {
103
+ // Just show last N lines
104
+ log_1.log.header(`${service} logs`);
105
+ try {
106
+ const output = (0, child_process_1.execSync)(`tail -n ${lineCount} "${logFile}"`, {
107
+ stdio: "pipe",
108
+ })
109
+ .toString()
110
+ .trim();
111
+ if (output) {
112
+ console.log(output);
113
+ }
114
+ else {
115
+ log_1.log.step("(empty log file)");
116
+ }
117
+ }
118
+ catch {
119
+ log_1.log.step("(empty log file)");
120
+ }
121
+ log_1.log.blank();
122
+ log_1.log.step(`Full log: ${logFile}`);
123
+ log_1.log.step(`Follow: boot logs ${service} -f`);
124
+ log_1.log.blank();
125
+ }
126
+ }
127
+ /**
128
+ * Show recent logs for all services.
129
+ */
130
+ function showAllLogs(lineCount) {
131
+ if (!fs.existsSync(LOGS_DIR)) {
132
+ log_1.log.warn("No logs found. Run 'boot up' first.");
133
+ return;
134
+ }
135
+ const files = fs
136
+ .readdirSync(LOGS_DIR)
137
+ .filter((f) => f.endsWith(".log"))
138
+ .sort();
139
+ if (files.length === 0) {
140
+ log_1.log.warn("No log files found.");
141
+ return;
142
+ }
143
+ for (const file of files) {
144
+ const name = file.replace(".log", "");
145
+ const fullPath = path.join(LOGS_DIR, file);
146
+ const stat = fs.statSync(fullPath);
147
+ const sizeKb = (stat.size / 1024).toFixed(1);
148
+ const modified = stat.mtime.toLocaleTimeString();
149
+ log_1.log.header(`${name}`);
150
+ log_1.log.step(`${fullPath} (${sizeKb}KB, last modified: ${modified})`);
151
+ log_1.log.blank();
152
+ try {
153
+ const output = (0, child_process_1.execSync)(`tail -n ${lineCount} "${fullPath}"`, {
154
+ stdio: "pipe",
155
+ })
156
+ .toString()
157
+ .trim();
158
+ if (output) {
159
+ console.log(output);
160
+ }
161
+ else {
162
+ log_1.log.step("(empty)");
163
+ }
164
+ }
165
+ catch {
166
+ log_1.log.step("(empty)");
167
+ }
168
+ log_1.log.blank();
169
+ }
170
+ }
171
+ /**
172
+ * Show Docker container logs.
173
+ */
174
+ function showDockerLogs(container, follow, lineCount) {
175
+ const args = ["logs"];
176
+ if (follow)
177
+ args.push("-f");
178
+ args.push("--tail", lineCount || "40", container);
179
+ if (follow) {
180
+ log_1.log.info(`Following ${container} Docker logs (Ctrl+C to stop)...`);
181
+ log_1.log.blank();
182
+ const child = (0, child_process_1.spawn)("docker", args, { stdio: "inherit" });
183
+ child.on("close", () => { });
184
+ }
185
+ else {
186
+ log_1.log.header(`${container} (Docker)`);
187
+ try {
188
+ (0, child_process_1.execSync)(`docker logs --tail ${lineCount || "40"} ${container}`, {
189
+ stdio: "inherit",
190
+ });
191
+ }
192
+ catch {
193
+ log_1.log.step("(no logs available)");
194
+ }
195
+ log_1.log.blank();
196
+ }
197
+ }
198
+ /**
199
+ * Find a log file by service name (fuzzy match).
200
+ */
201
+ function findLogFile(service) {
202
+ if (!fs.existsSync(LOGS_DIR))
203
+ return null;
204
+ const files = fs.readdirSync(LOGS_DIR).filter((f) => f.endsWith(".log"));
205
+ // Exact match
206
+ const exact = files.find((f) => f === `${service}.log`);
207
+ if (exact)
208
+ return path.join(LOGS_DIR, exact);
209
+ // Partial match
210
+ const partial = files.find((f) => f.toLowerCase().includes(service.toLowerCase()));
211
+ if (partial)
212
+ return path.join(LOGS_DIR, partial);
213
+ return null;
214
+ }
215
+ /**
216
+ * List available log files.
217
+ */
218
+ function listAvailableLogs() {
219
+ if (fs.existsSync(LOGS_DIR)) {
220
+ const files = fs.readdirSync(LOGS_DIR).filter((f) => f.endsWith(".log"));
221
+ for (const f of files) {
222
+ log_1.log.step(` ${f.replace(".log", "")}`);
223
+ }
224
+ }
225
+ // Also mention Docker services
226
+ try {
227
+ const config = (0, config_1.loadConfig)();
228
+ if (config.docker?.services) {
229
+ for (const s of config.docker.services) {
230
+ log_1.log.step(` ${s.name} (docker)`);
231
+ }
232
+ }
233
+ if (config.docker?.containers) {
234
+ for (const c of config.docker.containers) {
235
+ log_1.log.step(` ${c.name} (docker)`);
236
+ }
237
+ }
238
+ }
239
+ catch {
240
+ // no config
241
+ }
242
+ }
243
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * `boot reboot` — stop then start all services.
3
+ */
4
+ export declare function reboot(): Promise<void>;
5
+ //# sourceMappingURL=reboot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reboot.d.ts","sourceRoot":"","sources":["../../src/commands/reboot.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAI5C"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.reboot = reboot;
4
+ const down_1 = require("./down");
5
+ const up_1 = require("./up");
6
+ const log_1 = require("../lib/log");
7
+ /**
8
+ * `boot reboot` — stop then start all services.
9
+ */
10
+ async function reboot() {
11
+ log_1.log.info("Rebooting...");
12
+ await (0, down_1.down)();
13
+ await (0, up_1.up)();
14
+ }
15
+ //# sourceMappingURL=reboot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reboot.js","sourceRoot":"","sources":["../../src/commands/reboot.ts"],"names":[],"mappings":";;AAOA,wBAIC;AAXD,iCAA8B;AAC9B,6BAA0B;AAC1B,oCAAiC;AAEjC;;GAEG;AACI,KAAK,UAAU,MAAM;IAC1B,SAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACzB,MAAM,IAAA,WAAI,GAAE,CAAC;IACb,MAAM,IAAA,OAAE,GAAE,CAAC;AACb,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * `boot setup` — run one-time setup steps.
3
+ */
4
+ export declare function setup(): Promise<void>;
5
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,wBAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAmD3C"}
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.setup = setup;
37
+ const child_process_1 = require("child_process");
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const config_1 = require("../lib/config");
41
+ const docker_1 = require("../lib/docker");
42
+ const prereqs_1 = require("../lib/prereqs");
43
+ const log_1 = require("../lib/log");
44
+ /**
45
+ * `boot setup` — run one-time setup steps.
46
+ */
47
+ async function setup() {
48
+ const config = (0, config_1.loadConfig)();
49
+ log_1.log.header(`Setting up ${config.name}`);
50
+ // Check prerequisites
51
+ const needsDocker = !!(config.docker?.composeFile ||
52
+ config.docker?.services?.length ||
53
+ config.docker?.containers?.length);
54
+ if (!(0, prereqs_1.checkPrerequisites)({ needsDocker })) {
55
+ process.exit(1);
56
+ }
57
+ // Auto-create .env from template if missing
58
+ autoCreateEnv();
59
+ // Start Docker first (DB needs to be up for migrations/seeds)
60
+ if (config.docker) {
61
+ (0, docker_1.startDocker)(config);
62
+ }
63
+ // Run setup commands with smart handling
64
+ if (config.setup && config.setup.length > 0) {
65
+ for (const cmd of config.setup) {
66
+ log_1.log.info(`Running: ${cmd}`);
67
+ try {
68
+ (0, child_process_1.execSync)(cmd, { stdio: "inherit", cwd: process.cwd() });
69
+ log_1.log.success(`Done: ${cmd}`);
70
+ }
71
+ catch {
72
+ // Try fallback for known commands
73
+ if (handleCommandFallback(cmd)) {
74
+ continue;
75
+ }
76
+ log_1.log.error(`Failed: ${cmd}`);
77
+ process.exit(1);
78
+ }
79
+ }
80
+ }
81
+ else {
82
+ log_1.log.step("No setup steps defined in boot.yaml");
83
+ }
84
+ // Smart Prisma handling — generate + migrate with fallback
85
+ smartPrismaSetup();
86
+ log_1.log.blank();
87
+ log_1.log.success("Setup complete!");
88
+ log_1.log.blank();
89
+ log_1.log.step("Next: boot up");
90
+ log_1.log.blank();
91
+ }
92
+ /**
93
+ * Auto-create .env from template if missing.
94
+ */
95
+ function autoCreateEnv() {
96
+ if (fs.existsSync(".env"))
97
+ return;
98
+ const templates = ["env.example", ".env.example", ".env.sample", "env.template"];
99
+ const template = templates.find((t) => fs.existsSync(t));
100
+ if (template) {
101
+ fs.copyFileSync(template, ".env");
102
+ log_1.log.success(`Created .env from ${template}`);
103
+ log_1.log.warn("Review and update the values in .env");
104
+ }
105
+ }
106
+ /**
107
+ * Handle fallback for known commands that fail.
108
+ */
109
+ function handleCommandFallback(cmd) {
110
+ // Prisma migrate deploy → db push fallback
111
+ if (cmd.includes("migrate deploy") || cmd.includes("db:migrate")) {
112
+ log_1.log.warn("Migration failed — falling back to db push...");
113
+ try {
114
+ const fallback = cmd
115
+ .replace("migrate deploy", "db push --accept-data-loss")
116
+ .replace("db:migrate", "db:push");
117
+ (0, child_process_1.execSync)(fallback, { stdio: "inherit", cwd: process.cwd() });
118
+ log_1.log.success("Database schema pushed (fallback)");
119
+ return true;
120
+ }
121
+ catch {
122
+ return false;
123
+ }
124
+ }
125
+ // Prisma db:generate — try npx fallback
126
+ if (cmd.includes("db:generate") || cmd.includes("prisma generate")) {
127
+ log_1.log.warn("Prisma generate failed — trying npx fallback...");
128
+ try {
129
+ (0, child_process_1.execSync)("npx prisma generate", { stdio: "inherit", cwd: process.cwd() });
130
+ log_1.log.success("Prisma client generated (fallback)");
131
+ return true;
132
+ }
133
+ catch {
134
+ return false;
135
+ }
136
+ }
137
+ // Seed commands — non-fatal
138
+ if (cmd.includes("seed") || cmd.includes("db:seed")) {
139
+ log_1.log.warn("Seed failed — skipping (non-fatal)");
140
+ return true;
141
+ }
142
+ return false;
143
+ }
144
+ /**
145
+ * Smart Prisma setup — detect Prisma directories and run generate + migrate.
146
+ * Uses fallback pattern: migrate deploy || db push --accept-data-loss
147
+ */
148
+ function smartPrismaSetup() {
149
+ const cwd = process.cwd();
150
+ const prismaLocations = [
151
+ "prisma",
152
+ "apps/api/prisma",
153
+ "apps/server/prisma",
154
+ "apps/backend/prisma",
155
+ ];
156
+ for (const loc of prismaLocations) {
157
+ const prismaDir = path.resolve(cwd, loc);
158
+ if (!fs.existsSync(prismaDir))
159
+ continue;
160
+ const appDir = path.dirname(prismaDir);
161
+ const pm = (0, config_1.getPackageManager)();
162
+ // Generate Prisma client
163
+ const prismaClient = path.join(appDir, "node_modules", ".prisma");
164
+ if (!fs.existsSync(prismaClient)) {
165
+ log_1.log.info(`Generating Prisma client (${loc})...`);
166
+ const runCmd = pm === "npm" ? "npx" : pm;
167
+ try {
168
+ (0, child_process_1.execSync)(`${runCmd} prisma generate`, { cwd: appDir, stdio: "inherit" });
169
+ log_1.log.success("Prisma client generated");
170
+ }
171
+ catch {
172
+ log_1.log.warn("Failed to generate Prisma client — continuing");
173
+ }
174
+ }
175
+ // Run migrations with fallback
176
+ log_1.log.info(`Running database migrations (${loc})...`);
177
+ const runCmd = pm === "npm" ? "npx" : pm;
178
+ try {
179
+ (0, child_process_1.execSync)(`${runCmd} prisma migrate deploy`, {
180
+ cwd: appDir,
181
+ stdio: "inherit",
182
+ });
183
+ log_1.log.success("Migrations applied");
184
+ }
185
+ catch {
186
+ log_1.log.warn("migrate deploy failed — trying db push...");
187
+ try {
188
+ (0, child_process_1.execSync)(`${runCmd} prisma db push`, {
189
+ cwd: appDir,
190
+ stdio: "inherit",
191
+ });
192
+ log_1.log.success("Database schema pushed (fallback)");
193
+ }
194
+ catch {
195
+ log_1.log.warn("Database schema push also failed — continuing");
196
+ }
197
+ }
198
+ }
199
+ }
200
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * `boot status` — show what's running, with health checks and PID mismatch warnings.
3
+ */
4
+ export declare function status(): Promise<void>;
5
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAaA;;GAEG;AACH,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAmH5C"}