@opengeni/runtime 0.3.0 → 0.3.1
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/{chunk-D5KU3QUC.js → chunk-HGQ252FL.js} +22 -3
- package/dist/chunk-HGQ252FL.js.map +1 -0
- package/dist/index-CSGkld-v.d.ts +1801 -0
- package/dist/index.d.ts +7 -3
- package/dist/index.js +160 -37
- package/dist/index.js.map +1 -1
- package/dist/sandbox/index.d.ts +4 -1784
- package/dist/sandbox/index.js +1 -1
- package/package.json +3 -3
- package/src/history-sanitizer.ts +35 -38
- package/src/index.ts +67 -6
- package/src/metrics.ts +5 -0
- package/src/sandbox/display-stack.ts +25 -4
- package/src/sandbox/index.ts +28 -1
- package/src/sandbox-computer.ts +167 -36
- package/src/screenshot-error-card.ts +25 -0
- package/dist/chunk-D5KU3QUC.js.map +0 -1
|
@@ -1508,6 +1508,7 @@ var DISPLAY_STACK_TIMEOUT_MS = 9e4;
|
|
|
1508
1508
|
var PAINT_PROBE_ATTEMPTS = 150;
|
|
1509
1509
|
var PAINT_PROBE_INTERVAL_S = 0.2;
|
|
1510
1510
|
var PAINT_MIN_BYTES = 6e4;
|
|
1511
|
+
var PAINT_SETTLE_DELTA_BYTES = 2e3;
|
|
1511
1512
|
var DEFAULT_DESKTOP_GEOMETRY = { width: 1280, height: 800, dpi: 96 };
|
|
1512
1513
|
var DisplayStackError = class extends Error {
|
|
1513
1514
|
exitCode;
|
|
@@ -1532,7 +1533,7 @@ function buildDisplayStackScript(options = {}) {
|
|
|
1532
1533
|
const port = options.port ?? DESKTOP_STREAM_PORT4;
|
|
1533
1534
|
const env = `DESKTOP_W=${geometry.width} DESKTOP_H=${geometry.height} DESKTOP_DPI=${geometry.dpi} STREAM_PORT=${port}`;
|
|
1534
1535
|
const bringUp = `if nc -z 127.0.0.1 ${port} >/dev/null 2>&1 && nc -z 127.0.0.1 5900 >/dev/null 2>&1; then echo "OPENGENI_DESKTOP_UP port=${port} geometry=${geometry.width}x${geometry.height} dpi=${geometry.dpi} (precheck)"; else mkdir -p /tmp/opengeni-desktop && flock -w 45 /tmp/opengeni-desktop/up.outer.lock env ${env} opengeni-desktop-up; fi`;
|
|
1535
|
-
const paintProbe = `p=/tmp/opengeni-desktop/paint-probe.png; for i in $(seq 1 ${PAINT_PROBE_ATTEMPTS}); do if DISPLAY=:0 scrot -o "$p" >/dev/null 2>&1; then sz=$(wc -c < "$p" 2>/dev/null || echo 0); else sz=0; fi; rm -f "$p"; if [ "$sz" -ge ${PAINT_MIN_BYTES} ]; then break; fi; if [ "$i" = "${PAINT_PROBE_ATTEMPTS}" ]; then echo "OPENGENI_DESKTOP_NOT_PAINTING scrot below ${PAINT_MIN_BYTES}B after warmup (last=$sz)"; exit 14; fi; sleep ${PAINT_PROBE_INTERVAL_S}; done`;
|
|
1536
|
+
const paintProbe = `p=/tmp/opengeni-desktop/paint-probe.png; prev=0; for i in $(seq 1 ${PAINT_PROBE_ATTEMPTS}); do if DISPLAY=:0 scrot -o "$p" >/dev/null 2>&1; then sz=$(wc -c < "$p" 2>/dev/null || echo 0); else sz=0; fi; rm -f "$p"; if [ "$sz" -ge ${PAINT_MIN_BYTES} ] && [ "$prev" -ge ${PAINT_MIN_BYTES} ]; then d=$((sz-prev)); [ "$d" -lt 0 ] && d=$((0-d)); [ "$d" -le ${PAINT_SETTLE_DELTA_BYTES} ] && break; fi; prev=$sz; if [ "$i" = "${PAINT_PROBE_ATTEMPTS}" ]; then echo "OPENGENI_DESKTOP_NOT_PAINTING scrot below ${PAINT_MIN_BYTES}B or unsettled after warmup (last=$sz)"; exit 14; fi; sleep ${PAINT_PROBE_INTERVAL_S}; done`;
|
|
1536
1537
|
return `mkdir -p /tmp/opengeni-desktop; { ${bringUp} ; } && { ${paintProbe} ; }`;
|
|
1537
1538
|
}
|
|
1538
1539
|
function execResultOutput(result) {
|
|
@@ -3488,7 +3489,15 @@ async function establishSandboxSessionFromEnvelope(settings, envelope, opts) {
|
|
|
3488
3489
|
const envelopeSessionState = envelope && typeof envelope === "object" ? envelope.sessionState : void 0;
|
|
3489
3490
|
const workspaceArchive = readWorkspaceArchiveFromEnvelopeSessionState(envelopeSessionState);
|
|
3490
3491
|
const coldRestore = async (resumeFallbackState) => {
|
|
3491
|
-
const
|
|
3492
|
+
const createStarted = Date.now();
|
|
3493
|
+
let restored;
|
|
3494
|
+
try {
|
|
3495
|
+
restored = await client.create({ manifest: createManifest });
|
|
3496
|
+
recordSandboxCreateMetric(opts.metrics, client.backendId, "completed", createStarted);
|
|
3497
|
+
} catch (error) {
|
|
3498
|
+
recordSandboxCreateMetric(opts.metrics, client.backendId, "failed", createStarted);
|
|
3499
|
+
throw error;
|
|
3500
|
+
}
|
|
3492
3501
|
let restoredState = restored.state;
|
|
3493
3502
|
let established = {
|
|
3494
3503
|
client,
|
|
@@ -3569,6 +3578,16 @@ async function establishSandboxSessionFromEnvelope(settings, envelope, opts) {
|
|
|
3569
3578
|
}
|
|
3570
3579
|
return await coldRestore();
|
|
3571
3580
|
}
|
|
3581
|
+
function recordSandboxCreateMetric(metrics, backend, outcome, startedMs) {
|
|
3582
|
+
try {
|
|
3583
|
+
metrics?.onSandboxCreate?.({
|
|
3584
|
+
backend,
|
|
3585
|
+
outcome,
|
|
3586
|
+
durationSeconds: Math.max(0, (Date.now() - startedMs) / 1e3)
|
|
3587
|
+
});
|
|
3588
|
+
} catch {
|
|
3589
|
+
}
|
|
3590
|
+
}
|
|
3572
3591
|
async function serializeEstablishedSandboxEnvelope(established) {
|
|
3573
3592
|
const client = established.client;
|
|
3574
3593
|
if (!client || typeof client.serializeSessionState !== "function") {
|
|
@@ -3692,4 +3711,4 @@ export {
|
|
|
3692
3711
|
collectSandboxEnvironment2 as collectSandboxEnvironment,
|
|
3693
3712
|
parseExposedPorts2 as parseExposedPorts
|
|
3694
3713
|
};
|
|
3695
|
-
//# sourceMappingURL=chunk-
|
|
3714
|
+
//# sourceMappingURL=chunk-HGQ252FL.js.map
|