@boxes-dev/dvb 0.2.43 → 0.2.45
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/dvb.cjs +527 -202
- package/dist/bin/dvbd.cjs +102 -33
- package/dist/devbox/cli.d.ts.map +1 -1
- package/dist/devbox/cli.js +20 -0
- package/dist/devbox/cli.js.map +1 -1
- package/dist/devbox/commands/init/codex/plan.d.ts.map +1 -1
- package/dist/devbox/commands/init/codex/plan.js +34 -19
- package/dist/devbox/commands/init/codex/plan.js.map +1 -1
- package/dist/devbox/commands/init/remote.d.ts.map +1 -1
- package/dist/devbox/commands/init/remote.js +22 -5
- package/dist/devbox/commands/init/remote.js.map +1 -1
- package/dist/devbox/commands/init/scripts.d.ts.map +1 -1
- package/dist/devbox/commands/init/scripts.js +20 -5
- package/dist/devbox/commands/init/scripts.js.map +1 -1
- package/dist/devbox/commands/version.d.ts +2 -0
- package/dist/devbox/commands/version.d.ts.map +1 -0
- package/dist/devbox/commands/version.js +119 -0
- package/dist/devbox/commands/version.js.map +1 -0
- package/dist/devbox/controlPlane.d.ts.map +1 -1
- package/dist/devbox/controlPlane.js +55 -0
- package/dist/devbox/controlPlane.js.map +1 -1
- package/dist/devbox/daemonClient.d.ts.map +1 -1
- package/dist/devbox/daemonClient.js +21 -1
- package/dist/devbox/daemonClient.js.map +1 -1
- package/package.json +1 -1
package/dist/bin/dvbd.cjs
CHANGED
|
@@ -859,7 +859,7 @@ var init_sprites = __esm({
|
|
|
859
859
|
await internalServicesRequest(apiBaseUrl, token, name, command);
|
|
860
860
|
return [];
|
|
861
861
|
};
|
|
862
|
-
execCommand = async (apiBaseUrl, token, name, cmd, requestId) => {
|
|
862
|
+
execCommand = async (apiBaseUrl, token, name, cmd, requestId, options) => {
|
|
863
863
|
const path6 = `/v1/sprites/${name}/exec`;
|
|
864
864
|
const url = toWsUrl(apiBaseUrl, path6);
|
|
865
865
|
cmd.forEach((part) => url.searchParams.append("cmd", part));
|
|
@@ -870,11 +870,28 @@ var init_sprites = __esm({
|
|
|
870
870
|
const stderr = [];
|
|
871
871
|
let exitCode = null;
|
|
872
872
|
let resolved = false;
|
|
873
|
+
const timeoutMs = options?.timeoutMs;
|
|
874
|
+
const handshakeTimeoutMs = options?.handshakeTimeoutMs ?? (typeof timeoutMs === "number" ? Math.min(timeoutMs, 6e4) : void 0);
|
|
875
|
+
const timeoutHandle = typeof timeoutMs === "number" && timeoutMs > 0 ? setTimeout(() => {
|
|
876
|
+
if (resolved) return;
|
|
877
|
+
resolved = true;
|
|
878
|
+
logger.warn("sprites_exec_timeout", {
|
|
879
|
+
requestId,
|
|
880
|
+
path: path6,
|
|
881
|
+
timeoutMs
|
|
882
|
+
});
|
|
883
|
+
try {
|
|
884
|
+
ws.terminate();
|
|
885
|
+
} catch {
|
|
886
|
+
}
|
|
887
|
+
reject(new Error(`Exec websocket timed out after ${timeoutMs}ms`));
|
|
888
|
+
}, timeoutMs) : null;
|
|
873
889
|
const ws = new import_ws.default(url.toString(), {
|
|
874
890
|
headers: {
|
|
875
891
|
Authorization: `Bearer ${token}`,
|
|
876
892
|
"x-request-id": requestId
|
|
877
|
-
}
|
|
893
|
+
},
|
|
894
|
+
...typeof handshakeTimeoutMs === "number" && handshakeTimeoutMs > 0 ? { handshakeTimeout: handshakeTimeoutMs } : {}
|
|
878
895
|
});
|
|
879
896
|
const readResponseSnippet = async (response, limit = 800) => new Promise((resolveBody) => {
|
|
880
897
|
let body = "";
|
|
@@ -900,6 +917,8 @@ var init_sprites = __esm({
|
|
|
900
917
|
bodySnippet: snippet ? snippet.slice(0, 800) : void 0
|
|
901
918
|
});
|
|
902
919
|
if (!resolved) {
|
|
920
|
+
if (timeoutHandle) clearTimeout(timeoutHandle);
|
|
921
|
+
resolved = true;
|
|
903
922
|
const suffix = snippet ? ` (${snippet.slice(0, 800)})` : "";
|
|
904
923
|
reject(new Error(`Exec websocket error: Unexpected server response: ${status}${suffix}`));
|
|
905
924
|
}
|
|
@@ -908,6 +927,7 @@ var init_sprites = __esm({
|
|
|
908
927
|
const finish = (code2) => {
|
|
909
928
|
if (resolved) return;
|
|
910
929
|
resolved = true;
|
|
930
|
+
if (timeoutHandle) clearTimeout(timeoutHandle);
|
|
911
931
|
logger.info("sprites_exec_response", { requestId, path: path6, status: code2 });
|
|
912
932
|
resolve({
|
|
913
933
|
exitCode: code2,
|
|
@@ -965,6 +985,8 @@ var init_sprites = __esm({
|
|
|
965
985
|
errorStack: errorInfo.stack
|
|
966
986
|
});
|
|
967
987
|
if (!resolved) {
|
|
988
|
+
if (timeoutHandle) clearTimeout(timeoutHandle);
|
|
989
|
+
resolved = true;
|
|
968
990
|
reject(new Error(`Exec websocket error: ${errorMessage}`));
|
|
969
991
|
}
|
|
970
992
|
};
|
|
@@ -1019,7 +1041,7 @@ var init_sprites = __esm({
|
|
|
1019
1041
|
await writeFile(apiBaseUrl, token, name, remotePath, data);
|
|
1020
1042
|
},
|
|
1021
1043
|
readFile: async (name, options) => readFile(apiBaseUrl, token, name, options),
|
|
1022
|
-
exec: async (name, cmd) => {
|
|
1044
|
+
exec: async (name, cmd, options) => {
|
|
1023
1045
|
const requestId = (0, import_node_crypto.randomUUID)();
|
|
1024
1046
|
logger.info("sprites_exec", {
|
|
1025
1047
|
requestId,
|
|
@@ -1027,7 +1049,7 @@ var init_sprites = __esm({
|
|
|
1027
1049
|
cmd,
|
|
1028
1050
|
path: `/v1/sprites/${name}/exec`
|
|
1029
1051
|
});
|
|
1030
|
-
return execCommand(apiBaseUrl, token, name, cmd, requestId);
|
|
1052
|
+
return execCommand(apiBaseUrl, token, name, cmd, requestId, options);
|
|
1031
1053
|
},
|
|
1032
1054
|
listExecSessions: async (name) => listExecSessions(apiBaseUrl, token, name),
|
|
1033
1055
|
listServices: async (name) => USE_INTERNAL_SERVICE_API ? listServicesInternal(apiBaseUrl, token, name) : listServices(apiBaseUrl, token, name),
|
|
@@ -10494,7 +10516,7 @@ var init_server = __esm({
|
|
|
10494
10516
|
});
|
|
10495
10517
|
|
|
10496
10518
|
// ../daemon/src/spritesRegistry.ts
|
|
10497
|
-
var import_node_crypto2, import_node_fs, import_promises4, registryGet, registryReplace, registryUpsert, registryUsage, registryRemove, logger4, TOKEN_REFRESH_BUFFER_MS, clientCache, migrationPromise, migrationCompleted, trimEnv, resolveConvexUrl, resolveControlPlaneUrl, requireConvexConfig, decodeJwtPayload, parseTokenExpiresAt, shouldRefreshToken, isUnauthorizedError, clearControlPlaneSession, handleUnauthorized, refreshSession, loadControlPlaneToken, getClient, spritePortsList, logRequest, logResponse, parseTimestamp, pickEarlier, pickLater, mergeBoxes, mergeProjects, mergeRegistry, getRegistryFromConvex, replaceRegistry, migrateLocalRegistry, backfillInitStatus, fetchRegistry, upsertRegistry, recordRegistryUsage, removeRegistryEntry, subscribeSpritePorts;
|
|
10519
|
+
var import_node_crypto2, import_node_fs, import_promises4, registryGet, registryReplace, registryUpsert, registryUsage, registryRemove, logger4, TOKEN_REFRESH_BUFFER_MS, clientCache, migrationPromise, migrationCompleted, trimEnv, normalizeConvexDeployment, stripDevPrefix, resolveFromDeployment, resolveFromUrl, resolveConvexUrl, resolveControlPlaneUrl, requireConvexConfig, decodeJwtPayload, parseTokenExpiresAt, shouldRefreshToken, isUnauthorizedError, clearControlPlaneSession, handleUnauthorized, refreshSession, loadControlPlaneToken, requireControlPlaneToken, getClient, spritePortsList, logRequest, logResponse, parseTimestamp, pickEarlier, pickLater, mergeBoxes, mergeProjects, mergeRegistry, getRegistryFromConvex, replaceRegistry, migrateLocalRegistry, backfillInitStatus, fetchRegistry, upsertRegistry, recordRegistryUsage, removeRegistryEntry, subscribeSpritePorts;
|
|
10498
10520
|
var init_spritesRegistry = __esm({
|
|
10499
10521
|
"../daemon/src/spritesRegistry.ts"() {
|
|
10500
10522
|
"use strict";
|
|
@@ -10516,13 +10538,55 @@ var init_spritesRegistry = __esm({
|
|
|
10516
10538
|
migrationPromise = null;
|
|
10517
10539
|
migrationCompleted = false;
|
|
10518
10540
|
trimEnv = (value) => value?.trim() ?? "";
|
|
10541
|
+
normalizeConvexDeployment = (value) => {
|
|
10542
|
+
const normalized = trimEnv(value).replace(/\r/g, "");
|
|
10543
|
+
if (!normalized) return "";
|
|
10544
|
+
if (normalized.includes(":")) {
|
|
10545
|
+
const [prefix, rest] = normalized.split(":", 2);
|
|
10546
|
+
return `${prefix}:${trimEnv(rest ?? "")}`;
|
|
10547
|
+
}
|
|
10548
|
+
return normalized;
|
|
10549
|
+
};
|
|
10550
|
+
stripDevPrefix = (value) => {
|
|
10551
|
+
if (value.startsWith("dev:")) {
|
|
10552
|
+
return trimEnv(value.slice(4));
|
|
10553
|
+
}
|
|
10554
|
+
return value;
|
|
10555
|
+
};
|
|
10556
|
+
resolveFromDeployment = (deploymentRaw, suffix) => {
|
|
10557
|
+
const deployment = stripDevPrefix(normalizeConvexDeployment(deploymentRaw));
|
|
10558
|
+
if (!deployment) return "";
|
|
10559
|
+
if (deployment.includes("://")) {
|
|
10560
|
+
return deployment;
|
|
10561
|
+
}
|
|
10562
|
+
if (deployment.includes(".")) {
|
|
10563
|
+
const host = suffix === "cloud" ? deployment.replace(".convex.site", ".convex.cloud") : deployment.replace(".convex.cloud", ".convex.site");
|
|
10564
|
+
return `https://${host}`;
|
|
10565
|
+
}
|
|
10566
|
+
return `https://${deployment}.convex.${suffix}`;
|
|
10567
|
+
};
|
|
10568
|
+
resolveFromUrl = (raw, suffix) => {
|
|
10569
|
+
const value = trimEnv(raw).replace(/\r/g, "");
|
|
10570
|
+
if (!value) return "";
|
|
10571
|
+
try {
|
|
10572
|
+
const url = new URL(value);
|
|
10573
|
+
const host = suffix === "cloud" ? url.host.replace(".convex.site", ".convex.cloud") : url.host.replace(".convex.cloud", ".convex.site");
|
|
10574
|
+
return `${url.protocol}//${host}`;
|
|
10575
|
+
} catch {
|
|
10576
|
+
return "";
|
|
10577
|
+
}
|
|
10578
|
+
};
|
|
10519
10579
|
resolveConvexUrl = () => {
|
|
10520
10580
|
const url = trimEnv(process.env.DEVBOX_CONVEX_URL) || trimEnv(process.env.VITE_CONVEX_URL);
|
|
10521
|
-
|
|
10581
|
+
if (url.length > 0) return url;
|
|
10582
|
+
const derived = resolveFromDeployment(process.env.CONVEX_DEPLOYMENT ?? "", "cloud") || resolveFromUrl(process.env.CONVEX_SITE_URL ?? "", "cloud");
|
|
10583
|
+
return derived ? derived : null;
|
|
10522
10584
|
};
|
|
10523
10585
|
resolveControlPlaneUrl = () => {
|
|
10524
10586
|
const url = trimEnv(process.env.DEVBOX_CONTROL_PLANE_URL) || trimEnv(process.env.CONVEX_SITE_URL);
|
|
10525
|
-
|
|
10587
|
+
if (url.length > 0) return url;
|
|
10588
|
+
const derived = resolveFromDeployment(process.env.CONVEX_DEPLOYMENT ?? "", "site") || resolveFromUrl(process.env.VITE_CONVEX_URL ?? "", "site");
|
|
10589
|
+
return derived ? derived : null;
|
|
10526
10590
|
};
|
|
10527
10591
|
requireConvexConfig = () => {
|
|
10528
10592
|
if (!resolveControlPlaneUrl()) {
|
|
@@ -10658,26 +10722,35 @@ var init_spritesRegistry = __esm({
|
|
|
10658
10722
|
if (!token) {
|
|
10659
10723
|
const refreshToken = await store.getControlPlaneRefreshToken();
|
|
10660
10724
|
if (refreshToken) {
|
|
10661
|
-
|
|
10662
|
-
|
|
10663
|
-
|
|
10664
|
-
|
|
10665
|
-
|
|
10666
|
-
|
|
10667
|
-
|
|
10668
|
-
|
|
10669
|
-
|
|
10670
|
-
|
|
10671
|
-
|
|
10725
|
+
try {
|
|
10726
|
+
const refreshed = await refreshSession(refreshToken);
|
|
10727
|
+
token = refreshed.token;
|
|
10728
|
+
await store.setControlPlaneToken(token);
|
|
10729
|
+
if (refreshed.refreshToken) {
|
|
10730
|
+
await store.setControlPlaneRefreshToken(refreshed.refreshToken);
|
|
10731
|
+
}
|
|
10732
|
+
const nextExpiresAt = parseTokenExpiresAt(token);
|
|
10733
|
+
if (nextExpiresAt) {
|
|
10734
|
+
await store.setControlPlaneTokenExpiresAt(nextExpiresAt);
|
|
10735
|
+
} else {
|
|
10736
|
+
await store.clearControlPlaneTokenExpiresAt();
|
|
10737
|
+
}
|
|
10738
|
+
} catch (error) {
|
|
10739
|
+
logger4.warn("control_plane_refresh_failed", { error: String(error) });
|
|
10672
10740
|
}
|
|
10673
10741
|
}
|
|
10674
10742
|
}
|
|
10743
|
+
return token ?? null;
|
|
10744
|
+
};
|
|
10745
|
+
requireControlPlaneToken = async () => {
|
|
10746
|
+
const token = await loadControlPlaneToken();
|
|
10675
10747
|
if (!token) {
|
|
10676
10748
|
throw new Error("Control plane auth missing. Run `dvb setup` to sign in.");
|
|
10677
10749
|
}
|
|
10678
10750
|
return token;
|
|
10679
10751
|
};
|
|
10680
10752
|
getClient = async () => {
|
|
10753
|
+
await requireControlPlaneToken();
|
|
10681
10754
|
const convexUrl = requireConvexConfig();
|
|
10682
10755
|
if (clientCache && clientCache.url === convexUrl) {
|
|
10683
10756
|
return clientCache.client;
|
|
@@ -11485,7 +11558,7 @@ __export(src_exports, {
|
|
|
11485
11558
|
runDaemon: () => runDaemon,
|
|
11486
11559
|
startDaemon: () => startDaemon
|
|
11487
11560
|
});
|
|
11488
|
-
var import_node_http, import_promises5, import_node_fs2, import_node_crypto4, import_node_net2, import_node_path5, logger6, startedAt, DAEMON_API_VERSION, DAEMON_FEATURES, allowShutdown, buildBoxSummaries, readBody, readRequestPath, writeJson, handleRequestError, isSocketAlive, ensureRuntimeDir, startDaemon, runDaemon;
|
|
11561
|
+
var import_node_http, import_promises5, import_node_fs2, import_node_crypto4, import_node_net2, import_node_path5, logger6, startedAt, DAEMON_API_VERSION, DAEMON_FEATURES, allowShutdown, buildBoxSummaries, readBody, readRequestPath, writeJson, handleRequestError, isSocketAlive, waitForSocketAlive, ensureRuntimeDir, startDaemon, runDaemon;
|
|
11489
11562
|
var init_src2 = __esm({
|
|
11490
11563
|
"../daemon/src/index.ts"() {
|
|
11491
11564
|
import_node_http = require("node:http");
|
|
@@ -11598,6 +11671,15 @@ var init_src2 = __esm({
|
|
|
11598
11671
|
socket.once("error", () => done(false));
|
|
11599
11672
|
socket.setTimeout(250, () => done(false));
|
|
11600
11673
|
});
|
|
11674
|
+
waitForSocketAlive = async (socketPath, timeoutMs) => {
|
|
11675
|
+
const deadline = Date.now() + timeoutMs;
|
|
11676
|
+
while (Date.now() < deadline) {
|
|
11677
|
+
if (!(0, import_node_fs2.existsSync)(socketPath)) return false;
|
|
11678
|
+
if (await isSocketAlive(socketPath)) return true;
|
|
11679
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
11680
|
+
}
|
|
11681
|
+
return false;
|
|
11682
|
+
};
|
|
11601
11683
|
ensureRuntimeDir = async (runtimeDir) => {
|
|
11602
11684
|
await import_promises5.default.mkdir(runtimeDir, { recursive: true, mode: 448 });
|
|
11603
11685
|
try {
|
|
@@ -11613,7 +11695,7 @@ var init_src2 = __esm({
|
|
|
11613
11695
|
const { socketPath, runtimeDir } = socketInfo;
|
|
11614
11696
|
await ensureRuntimeDir(runtimeDir);
|
|
11615
11697
|
if ((0, import_node_fs2.existsSync)(socketPath)) {
|
|
11616
|
-
const alive = await
|
|
11698
|
+
const alive = await waitForSocketAlive(socketPath, 1e3);
|
|
11617
11699
|
if (alive) {
|
|
11618
11700
|
throw new Error(`dvbd already running at ${socketPath}`);
|
|
11619
11701
|
}
|
|
@@ -11621,19 +11703,6 @@ var init_src2 = __esm({
|
|
|
11621
11703
|
}
|
|
11622
11704
|
const portManager = new PortManager();
|
|
11623
11705
|
portManager.start();
|
|
11624
|
-
void fetchRegistry().then((registry) => {
|
|
11625
|
-
for (const canonical of Object.keys(registry.boxes)) {
|
|
11626
|
-
portManager.noteBox(canonical);
|
|
11627
|
-
}
|
|
11628
|
-
for (const canonical of Object.values(registry.aliases)) {
|
|
11629
|
-
portManager.noteBox(canonical);
|
|
11630
|
-
}
|
|
11631
|
-
for (const project of Object.values(registry.projects)) {
|
|
11632
|
-
portManager.noteBox(project.canonical);
|
|
11633
|
-
}
|
|
11634
|
-
}).catch((error) => {
|
|
11635
|
-
logger6.warn("ports_registry_load_failed", { error: String(error) });
|
|
11636
|
-
});
|
|
11637
11706
|
const server = (0, import_node_http.createServer)((req, res) => {
|
|
11638
11707
|
const requestId = req.headers["x-request-id"] ?? (0, import_node_crypto4.randomUUID)();
|
|
11639
11708
|
const path6 = readRequestPath(req);
|
package/dist/devbox/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/devbox/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/devbox/cli.ts"],"names":[],"mappings":"AA8EA,eAAO,MAAM,IAAI,qBA8HhB,CAAC"}
|
package/dist/devbox/cli.js
CHANGED
|
@@ -10,10 +10,12 @@ import { runPorts } from "./commands/ports.js";
|
|
|
10
10
|
import { runSessions } from "./commands/sessions.js";
|
|
11
11
|
import { runServices } from "./commands/services.js";
|
|
12
12
|
import { runSetup } from "./commands/setup.js";
|
|
13
|
+
import { runVersion } from "./commands/version.js";
|
|
13
14
|
import { runWezterm } from "./commands/wezterm.js";
|
|
14
15
|
import { maybeAutoUpdateCompletions, runComplete, runCompletions, } from "./completions/index.js";
|
|
15
16
|
const printUsage = () => {
|
|
16
17
|
console.log("Usage:");
|
|
18
|
+
console.log(" dvb --version");
|
|
17
19
|
console.log(" dvb setup [--token <token>] [--org <slug>]");
|
|
18
20
|
console.log(" [--api-base-url <url>] [--no-verify] [--json]");
|
|
19
21
|
console.log(" dvb logout [--json]");
|
|
@@ -50,6 +52,7 @@ const printUsage = () => {
|
|
|
50
52
|
console.log(" dvb wezterm proxy [<box>] [--port <port>] [--version <ver>] [--asset-url <url>]");
|
|
51
53
|
console.log(" dvb wezterm setup [<box>] [--port <port>] [--domain <name>] [--path <path>]");
|
|
52
54
|
console.log(" dvb wezterm [<box>] [--port <port>] [--domain <name>] [--path <path>]");
|
|
55
|
+
console.log(" dvb version [--json]");
|
|
53
56
|
};
|
|
54
57
|
export const main = async () => {
|
|
55
58
|
const args = process.argv.slice(2);
|
|
@@ -57,9 +60,26 @@ export const main = async () => {
|
|
|
57
60
|
printUsage();
|
|
58
61
|
return;
|
|
59
62
|
}
|
|
63
|
+
if (args[0] === "--version") {
|
|
64
|
+
await runVersion([]);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
60
67
|
if (args[0] !== "complete" && args[0] !== "completions") {
|
|
61
68
|
await maybeAutoUpdateCompletions();
|
|
62
69
|
}
|
|
70
|
+
if (args[0] === "version") {
|
|
71
|
+
try {
|
|
72
|
+
await runVersion(args.slice(1));
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
if (error instanceof Error && error.message === "help_requested") {
|
|
76
|
+
printUsage();
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
63
83
|
if (args[0] === "setup") {
|
|
64
84
|
await runSetup(args.slice(1));
|
|
65
85
|
return;
|
package/dist/devbox/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/devbox/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/devbox/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../../../src/devbox/commands/init/codex/plan.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../../../src/devbox/commands/init/codex/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,38 +1,53 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import fs from "node:fs
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import fsPromises from "node:fs/promises";
|
|
3
4
|
const resolveSchemaPath = (fileName) => {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
// Prefer resolving relative to the real dvb entrypoint, since `process.argv[1]`
|
|
6
|
+
// may be a bin shim (e.g. ~/.nvm/.../bin/dvb) rather than `.../dist/bin/dvb.cjs`.
|
|
7
|
+
const argv1 = typeof process.argv[1] === "string" ? process.argv[1] : "";
|
|
8
|
+
if (argv1) {
|
|
9
|
+
try {
|
|
10
|
+
const real = fs.realpathSync(argv1);
|
|
11
|
+
return path.resolve(path.dirname(real), "..", "codex", fileName);
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
// ignore and fall back
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
return path.resolve(path.dirname(argv1), "..", "codex", fileName);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
// ignore and fall back
|
|
21
|
+
}
|
|
7
22
|
}
|
|
8
23
|
return path.resolve(process.cwd(), "codex", fileName);
|
|
9
24
|
};
|
|
10
25
|
const writeSetupEnvSecretsSchema = async (dir) => {
|
|
11
26
|
const sourceSchemaPath = resolveSchemaPath("setup-env-secrets-schema.json");
|
|
12
|
-
const schemaContents = await
|
|
27
|
+
const schemaContents = await fsPromises.readFile(sourceSchemaPath, "utf8");
|
|
13
28
|
const schemaPath = path.join(dir, "setup-env-secrets-schema.json");
|
|
14
|
-
await
|
|
29
|
+
await fsPromises.writeFile(schemaPath, schemaContents, "utf8");
|
|
15
30
|
return schemaPath;
|
|
16
31
|
};
|
|
17
32
|
const writeSetupExternalSchema = async (dir) => {
|
|
18
33
|
const sourceSchemaPath = resolveSchemaPath("setup-external-schema.json");
|
|
19
|
-
const schemaContents = await
|
|
34
|
+
const schemaContents = await fsPromises.readFile(sourceSchemaPath, "utf8");
|
|
20
35
|
const schemaPath = path.join(dir, "setup-external-schema.json");
|
|
21
|
-
await
|
|
36
|
+
await fsPromises.writeFile(schemaPath, schemaContents, "utf8");
|
|
22
37
|
return schemaPath;
|
|
23
38
|
};
|
|
24
39
|
const writeSetupExtraArtifactsSchema = async (dir) => {
|
|
25
40
|
const sourceSchemaPath = resolveSchemaPath("setup-extra-artifacts-schema.json");
|
|
26
|
-
const schemaContents = await
|
|
41
|
+
const schemaContents = await fsPromises.readFile(sourceSchemaPath, "utf8");
|
|
27
42
|
const schemaPath = path.join(dir, "setup-extra-artifacts-schema.json");
|
|
28
|
-
await
|
|
43
|
+
await fsPromises.writeFile(schemaPath, schemaContents, "utf8");
|
|
29
44
|
return schemaPath;
|
|
30
45
|
};
|
|
31
46
|
const writeServicesSchema = async (dir) => {
|
|
32
47
|
const sourceSchemaPath = resolveSchemaPath("services-schema.json");
|
|
33
|
-
const schemaContents = await
|
|
48
|
+
const schemaContents = await fsPromises.readFile(sourceSchemaPath, "utf8");
|
|
34
49
|
const schemaPath = path.join(dir, "services-schema.json");
|
|
35
|
-
await
|
|
50
|
+
await fsPromises.writeFile(schemaPath, schemaContents, "utf8");
|
|
36
51
|
return schemaPath;
|
|
37
52
|
};
|
|
38
53
|
const isObject = (value) => typeof value === "object" && value !== null;
|
|
@@ -85,7 +100,7 @@ const isServicesPlan = (value) => {
|
|
|
85
100
|
Array.isArray(value.backgroundServices));
|
|
86
101
|
};
|
|
87
102
|
const readSetupPlan = async (setupPath) => {
|
|
88
|
-
const raw = await
|
|
103
|
+
const raw = await fsPromises.readFile(setupPath, "utf8");
|
|
89
104
|
const parsed = JSON.parse(raw);
|
|
90
105
|
if (!isSetupPlan(parsed)) {
|
|
91
106
|
throw new Error(`Invalid setup plan: ${setupPath}`);
|
|
@@ -93,7 +108,7 @@ const readSetupPlan = async (setupPath) => {
|
|
|
93
108
|
return parsed;
|
|
94
109
|
};
|
|
95
110
|
const readSetupEnvSecretsPlan = async (scanPath) => {
|
|
96
|
-
const raw = await
|
|
111
|
+
const raw = await fsPromises.readFile(scanPath, "utf8");
|
|
97
112
|
const parsed = JSON.parse(raw);
|
|
98
113
|
if (!isSetupEnvSecretsPlan(parsed)) {
|
|
99
114
|
throw new Error(`Invalid env/secrets scan: ${scanPath}`);
|
|
@@ -101,7 +116,7 @@ const readSetupEnvSecretsPlan = async (scanPath) => {
|
|
|
101
116
|
return parsed;
|
|
102
117
|
};
|
|
103
118
|
const readSetupExternalPlan = async (scanPath) => {
|
|
104
|
-
const raw = await
|
|
119
|
+
const raw = await fsPromises.readFile(scanPath, "utf8");
|
|
105
120
|
const parsed = JSON.parse(raw);
|
|
106
121
|
if (!isSetupExternalPlan(parsed)) {
|
|
107
122
|
throw new Error(`Invalid external scan: ${scanPath}`);
|
|
@@ -109,7 +124,7 @@ const readSetupExternalPlan = async (scanPath) => {
|
|
|
109
124
|
return parsed;
|
|
110
125
|
};
|
|
111
126
|
const readSetupExtraArtifactsPlan = async (scanPath) => {
|
|
112
|
-
const raw = await
|
|
127
|
+
const raw = await fsPromises.readFile(scanPath, "utf8");
|
|
113
128
|
const parsed = JSON.parse(raw);
|
|
114
129
|
if (!isSetupExtraArtifactsPlan(parsed)) {
|
|
115
130
|
throw new Error(`Invalid extra artifacts scan: ${scanPath}`);
|
|
@@ -117,7 +132,7 @@ const readSetupExtraArtifactsPlan = async (scanPath) => {
|
|
|
117
132
|
return parsed;
|
|
118
133
|
};
|
|
119
134
|
const readServicesPlan = async (servicesPath) => {
|
|
120
|
-
const raw = await
|
|
135
|
+
const raw = await fsPromises.readFile(servicesPath, "utf8");
|
|
121
136
|
const parsed = JSON.parse(raw);
|
|
122
137
|
if (!isServicesPlan(parsed)) {
|
|
123
138
|
throw new Error(`Invalid services plan: ${servicesPath}`);
|
|
@@ -125,7 +140,7 @@ const readServicesPlan = async (servicesPath) => {
|
|
|
125
140
|
return parsed;
|
|
126
141
|
};
|
|
127
142
|
const writeSetupPlan = async (setupPath, plan) => {
|
|
128
|
-
await
|
|
143
|
+
await fsPromises.writeFile(setupPath, JSON.stringify(plan, null, 2), "utf8");
|
|
129
144
|
};
|
|
130
145
|
const mergeSetupScans = ({ envSecrets, external, extraArtifacts, services, }) => {
|
|
131
146
|
const dedupeBy = (items, key) => {
|
|
@@ -167,7 +182,7 @@ const mergeSetupScans = ({ envSecrets, external, extraArtifacts, services, }) =>
|
|
|
167
182
|
};
|
|
168
183
|
};
|
|
169
184
|
const writeServicesPlan = async (servicesPath, plan) => {
|
|
170
|
-
await
|
|
185
|
+
await fsPromises.writeFile(servicesPath, JSON.stringify(plan, null, 2), "utf8");
|
|
171
186
|
};
|
|
172
187
|
export { readSetupPlan, readSetupEnvSecretsPlan, readSetupExternalPlan, readSetupExtraArtifactsPlan, readServicesPlan, writeSetupPlan, mergeSetupScans, writeSetupEnvSecretsSchema, writeSetupExternalSchema, writeSetupExtraArtifactsSchema, writeServicesPlan, writeServicesSchema, };
|
|
173
188
|
//# sourceMappingURL=plan.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../../../src/devbox/commands/init/codex/plan.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../../../src/devbox/commands/init/codex/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../../../src/devbox/commands/init/remote.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAgBrD,KAAK,mBAAmB,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB,CAAC;
|
|
1
|
+
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../../../src/devbox/commands/init/remote.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAgBrD,KAAK,mBAAmB,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB,CAAC;AAsBF,QAAA,MAAM,UAAU,GAAI,OAAO,MAAM,WACI,CAAC;AAEtC,QAAA,MAAM,UAAU,GAAI,OAAO,MAAM,WAKhC,CAAC;AAiFF,QAAA,MAAM,eAAe,GAAU,QAAQ,aAAa,EAAE,WAAW,MAAM,kBAqEtE,CAAC;AAgMF,QAAA,MAAM,sBAAsB,GAC1B,QAAQ,aAAa,EACrB,WAAW,MAAM,EACjB,UAAU,MAAM,kBAsBjB,CAAC;AAEF,QAAA,MAAM,yBAAyB,GAAU,6EAMtC;IACD,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;CAC/B,kBA+HA,CAAC;AAqCF,QAAA,MAAM,yBAAyB,GAAU,yBAGtC;IACD,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,kBA2BA,CAAC;AAEF,QAAA,MAAM,iBAAiB,GAAU,uDAM9B;IACD,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,KAAG,OAAO,CAAC,OAAO,CAqIlB,CAAC;AAEF,QAAA,MAAM,uBAAuB,GAAU,yBAGpC;IACD,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,kBA2BA,CAAC;AAEF,QAAA,MAAM,mBAAmB,GAAU,yBAGhC;IACD,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,qBAwBA,CAAC;AAEF,QAAA,MAAM,mBAAmB,GAAU,yBAGhC;IACD,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,qBAoCA,CAAC;AAEF,QAAA,MAAM,mBAAmB,GAAU,6DAMhC;IACD,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB,kBAwCA,CAAC;AAEF,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,GAC1B,CAAC"}
|
|
@@ -12,6 +12,8 @@ const DAEMON_SERVICE_NAME = "devbox-sprite-daemon";
|
|
|
12
12
|
const DAEMON_CONFIG_FILE = `${DAEMON_DIR}/config.json`;
|
|
13
13
|
const DEFAULT_DAEMON_BASE_URL = process.env.SPRITE_DAEMON_BASE_URL?.trim() || "https://deploy-dev.boxes.dev";
|
|
14
14
|
const DEFAULT_HEARTBEAT_MS = 30_000;
|
|
15
|
+
const BOOTSTRAP_EXEC_TIMEOUT_MS = 90_000;
|
|
16
|
+
const BOOTSTRAP_EXEC_RETRY_DELAY_MS = 10_000;
|
|
15
17
|
const logger = createLogger("devbox-init");
|
|
16
18
|
const truncateTail = (value, maxChars) => {
|
|
17
19
|
if (value.length <= maxChars)
|
|
@@ -26,7 +28,7 @@ const expandHome = (value) => {
|
|
|
26
28
|
}
|
|
27
29
|
return value;
|
|
28
30
|
};
|
|
29
|
-
const execWithLog = async (client, canonical, script, stage) => {
|
|
31
|
+
const execWithLog = async (client, canonical, script, stage, options) => {
|
|
30
32
|
const requestId = randomUUID();
|
|
31
33
|
const startedAt = Date.now();
|
|
32
34
|
logger.info("sprites_request", {
|
|
@@ -36,7 +38,7 @@ const execWithLog = async (client, canonical, script, stage) => {
|
|
|
36
38
|
box: canonical,
|
|
37
39
|
stage,
|
|
38
40
|
});
|
|
39
|
-
const result = await client.exec(canonical, ["/bin/bash", "-lc", script]);
|
|
41
|
+
const result = await client.exec(canonical, ["/bin/bash", "-lc", script], options);
|
|
40
42
|
const durationMs = Date.now() - startedAt;
|
|
41
43
|
logger.info("sprites_response", {
|
|
42
44
|
requestId,
|
|
@@ -58,6 +60,10 @@ const execWithLog = async (client, canonical, script, stage) => {
|
|
|
58
60
|
});
|
|
59
61
|
return result;
|
|
60
62
|
};
|
|
63
|
+
const isExecTimeoutError = (error) => error instanceof Error &&
|
|
64
|
+
typeof error.message === "string" &&
|
|
65
|
+
error.message.startsWith("Exec websocket timed out after ");
|
|
66
|
+
const delay = async (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
61
67
|
const writeRemoteFile = async (client, canonical, path, content, stage) => {
|
|
62
68
|
const requestId = randomUUID();
|
|
63
69
|
logger.info("sprites_request", {
|
|
@@ -89,7 +95,18 @@ const bootstrapDevbox = async (client, canonical) => {
|
|
|
89
95
|
" sudo -n chown -R sprite:sprite /home/sprite/.devbox || true",
|
|
90
96
|
"fi",
|
|
91
97
|
].join("\n");
|
|
92
|
-
|
|
98
|
+
let permsResult = await execWithLog(client, canonical, permissionsScript, "bootstrap-permissions", { timeoutMs: BOOTSTRAP_EXEC_TIMEOUT_MS }).catch(async (error) => {
|
|
99
|
+
if (!isExecTimeoutError(error))
|
|
100
|
+
throw error;
|
|
101
|
+
// New sprites can take a bit to warm up; retry once before failing.
|
|
102
|
+
logger.warn("sprites_exec_retry_after_timeout", {
|
|
103
|
+
stage: "bootstrap-permissions",
|
|
104
|
+
timeoutMs: BOOTSTRAP_EXEC_TIMEOUT_MS,
|
|
105
|
+
delayMs: BOOTSTRAP_EXEC_RETRY_DELAY_MS,
|
|
106
|
+
});
|
|
107
|
+
await delay(BOOTSTRAP_EXEC_RETRY_DELAY_MS);
|
|
108
|
+
return await execWithLog(client, canonical, permissionsScript, "bootstrap-permissions", { timeoutMs: BOOTSTRAP_EXEC_TIMEOUT_MS });
|
|
109
|
+
});
|
|
93
110
|
if (permsResult.exitCode !== 0) {
|
|
94
111
|
const details = permsResult.stderr || permsResult.stdout || "";
|
|
95
112
|
throw new Error(details
|
|
@@ -105,7 +122,7 @@ const bootstrapDevbox = async (client, canonical) => {
|
|
|
105
122
|
"EOF",
|
|
106
123
|
"fi",
|
|
107
124
|
].join("\n");
|
|
108
|
-
const ipv4Result = await execWithLog(client, canonical, ipv4PreferenceScript, "bootstrap-ipv4-preference");
|
|
125
|
+
const ipv4Result = await execWithLog(client, canonical, ipv4PreferenceScript, "bootstrap-ipv4-preference", { timeoutMs: BOOTSTRAP_EXEC_TIMEOUT_MS });
|
|
109
126
|
if (ipv4Result.exitCode !== 0) {
|
|
110
127
|
const details = ipv4Result.stderr || ipv4Result.stdout || "";
|
|
111
128
|
throw new Error(details
|
|
@@ -695,7 +712,7 @@ const installSpriteDaemon = async ({ client, spriteName, release, convexUrl, hea
|
|
|
695
712
|
`--config-path ${DAEMON_CONFIG_FILE}`,
|
|
696
713
|
].join(" "),
|
|
697
714
|
].join("\n"),
|
|
698
|
-
]);
|
|
715
|
+
], { timeoutMs: 120_000 });
|
|
699
716
|
if (result.exitCode !== 0) {
|
|
700
717
|
throw new Error(result.stderr || result.stdout || "Daemon install failed.");
|
|
701
718
|
}
|