@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.
@@ -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 restored = await client.create({ manifest: createManifest });
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-D5KU3QUC.js.map
3714
+ //# sourceMappingURL=chunk-HGQ252FL.js.map