@boxes-dev/dvb 1.0.31 → 1.0.33

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="486da035-b076-5714-9506-a1430602ff22")}catch(e){}}();
3
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="cd199da5-5299-508f-a0e3-01c6aff7017e")}catch(e){}}();
4
4
 
5
5
  var __create = Object.create;
6
6
  var __defProp = Object.defineProperty;
@@ -88634,8 +88634,8 @@ var init_otel = __esm({
88634
88634
  return trimmed && trimmed.length > 0 ? trimmed : void 0;
88635
88635
  };
88636
88636
  readBuildMetadata = () => {
88637
- const rawPackageVersion = "1.0.31";
88638
- const rawGitSha = "06c2d04b41e250f9c4df9fddfaaa0ecf81c7a8d0";
88637
+ const rawPackageVersion = "1.0.33";
88638
+ const rawGitSha = "fa907b87a93b04d34b7fc28eae6436ee11a6a456";
88639
88639
  const packageVersion = typeof rawPackageVersion === "string" ? rawPackageVersion : void 0;
88640
88640
  const gitSha = typeof rawGitSha === "string" ? rawGitSha : void 0;
88641
88641
  return { packageVersion, gitSha };
@@ -120623,9 +120623,9 @@ var init_sentry = __esm({
120623
120623
  sentryEnabled = false;
120624
120624
  uncaughtExceptionMonitorInstalled = false;
120625
120625
  readBuildMetadata2 = () => {
120626
- const rawPackageVersion = "1.0.31";
120627
- const rawGitSha = "06c2d04b41e250f9c4df9fddfaaa0ecf81c7a8d0";
120628
- const rawSentryRelease = "boxes-dev-dvb@1.0.31+06c2d04b41e250f9c4df9fddfaaa0ecf81c7a8d0";
120626
+ const rawPackageVersion = "1.0.33";
120627
+ const rawGitSha = "fa907b87a93b04d34b7fc28eae6436ee11a6a456";
120628
+ const rawSentryRelease = "boxes-dev-dvb@1.0.33+fa907b87a93b04d34b7fc28eae6436ee11a6a456";
120629
120629
  const packageVersion = typeof rawPackageVersion === "string" ? rawPackageVersion : void 0;
120630
120630
  const gitSha = typeof rawGitSha === "string" ? rawGitSha : void 0;
120631
120631
  const sentryRelease = typeof rawSentryRelease === "string" ? rawSentryRelease : void 0;
@@ -133137,7 +133137,7 @@ function D(t3, e2, s2) {
133137
133137
  const i2 = t3 + e2, r2 = Math.max(s2.length - 1, 0), n2 = i2 < 0 ? r2 : i2 > r2 ? 0 : i2;
133138
133138
  return s2[n2].disabled ? D(n2, e2 < 0 ? -1 : 1, s2) : n2;
133139
133139
  }
133140
- var import_node_process, k, import_node_readline2, import_sisteransi, import_node_tty, at, lt, ht, O, y, M, P, L, ct, pt, X, ft, S, W, Z, Ft, j, Q, dt, tt, U, et, mt, st, it, gt, G, vt, Et, At, _, bt, z, rt, nt, x, kt, Mt, Wt, Tt;
133140
+ var import_node_process, k, import_node_readline2, import_sisteransi, import_node_tty, at, lt, ht, O, y, M, P, L, ct, pt, X, ft, S, W, Z, Ft, j, Q, dt, tt, U, et, mt, st, it, gt, G, vt, Et, At, _, bt, z, rt, nt, x, kt, Mt, Wt;
133141
133141
  var init_dist2 = __esm({
133142
133142
  "../../node_modules/@clack/core/dist/index.mjs"() {
133143
133143
  import_node_process = require("node:process");
@@ -133522,21 +133522,6 @@ var init_dist2 = __esm({
133522
133522
  });
133523
133523
  }
133524
133524
  };
133525
- Tt = class extends x {
133526
- options;
133527
- cursor = 0;
133528
- constructor(e2) {
133529
- super(e2, false), this.options = e2.options;
133530
- const s2 = e2.caseSensitive === true, i2 = this.options.map(({ value: [r2] }) => s2 ? r2 : r2?.toLowerCase());
133531
- this.cursor = Math.max(i2.indexOf(e2.initialValue), 0), this.on("key", (r2, n2) => {
133532
- if (!r2) return;
133533
- const u2 = s2 && n2.shift ? r2.toUpperCase() : r2;
133534
- if (!i2.includes(u2)) return;
133535
- const a2 = this.options.find(({ value: [l2] }) => s2 ? l2 === u2 : l2?.toLowerCase() === r2);
133536
- a2 && (this.value = a2.value, this.state = "submit", this.emit("submit"));
133537
- });
133538
- }
133539
- };
133540
133525
  }
133541
133526
  });
133542
133527
 
@@ -133551,7 +133536,7 @@ function q2(e2, r2, s2) {
133551
133536
  `).map((i2) => St(i2, r2, s2)).join(`
133552
133537
  `);
133553
133538
  }
133554
- var import_picocolors, import_node_process2, import_sisteransi2, ee, ue, Te, w, Me, ce, de, k2, $e, h, x2, Re, Oe, Y, K2, te, G2, z2, Pe, se, he, Ne, me, pe, We, ge, fe, Fe, ye, N2, Ee, mt2, pt2, gt2, ve, re, ie, Ae, ne, ft2, Ft2, Le, yt2, M2, ae, je, Et2, Ce, Ve, vt2, ke, we, Ge, At2, He, Ue, Ct2, Se, wt, St, It2, J2, Mt2, R2, Pt, jt, Vt2, kt2, Ut, Ie, Ye, oe, qt, Jt, ze, Yt, zt;
133539
+ var import_picocolors, import_node_process2, import_sisteransi2, ee, ue, Te, w, Me, ce, de, k2, $e, h, x2, Re, Oe, Y, K2, te, G2, z2, Pe, se, he, Ne, me, pe, We, ge, fe, Fe, ye, N2, Ee, mt2, pt2, gt2, ve, re, ie, Ae, ne, ft2, Ft2, Le, yt2, M2, ae, je, Et2, Ce, Ve, vt2, ke, we, Ge, At2, He, Ue, Ct2, Se, wt, St, It2, J2, Mt2, R2, Pt, jt, Vt2, kt2, Ut, Ie, Ye, oe, qt, ze, Yt, zt;
133555
133540
  var init_dist3 = __esm({
133556
133541
  "../../node_modules/@clack/prompts/dist/index.mjs"() {
133557
133542
  init_dist2();
@@ -133968,35 +133953,6 @@ ${import_picocolors.default.gray(h)}`;
133968
133953
  return `${o2}${u2}${J2({ output: e2.output, cursor: this.cursor, options: this.options, maxItems: e2.maxItems, columnPadding: u2.length, rowPadding: l2 + 2, style: (a2, d2) => r2(a2, a2.disabled ? "disabled" : d2 ? "active" : "inactive") }).join(`
133969
133954
  ${u2}`)}
133970
133955
  ${import_picocolors.default.cyan(x2)}
133971
- `;
133972
- }
133973
- }
133974
- } }).prompt();
133975
- };
133976
- Jt = (e2) => {
133977
- const r2 = (s2, i2 = "inactive") => {
133978
- const n2 = s2.label ?? String(s2.value);
133979
- return i2 === "selected" ? `${import_picocolors.default.dim(n2)}` : i2 === "cancelled" ? `${import_picocolors.default.strikethrough(import_picocolors.default.dim(n2))}` : i2 === "active" ? `${import_picocolors.default.bgCyan(import_picocolors.default.gray(` ${s2.value} `))} ${n2}${s2.hint ? ` ${import_picocolors.default.dim(`(${s2.hint})`)}` : ""}` : `${import_picocolors.default.gray(import_picocolors.default.bgWhite(import_picocolors.default.inverse(` ${s2.value} `)))} ${n2}${s2.hint ? ` ${import_picocolors.default.dim(`(${s2.hint})`)}` : ""}`;
133980
- };
133981
- return new Tt({ options: e2.options, signal: e2.signal, input: e2.input, output: e2.output, initialValue: e2.initialValue, caseSensitive: e2.caseSensitive, render() {
133982
- const s2 = `${import_picocolors.default.gray(h)}
133983
- ${N2(this.state)} ${e2.message}
133984
- `;
133985
- switch (this.state) {
133986
- case "submit": {
133987
- const i2 = `${import_picocolors.default.gray(h)} `, n2 = this.options.find((u2) => u2.value === this.value) ?? e2.options[0], o2 = Bt(e2.output, r2(n2, "selected"), i2);
133988
- return `${s2}${o2}`;
133989
- }
133990
- case "cancel": {
133991
- const i2 = `${import_picocolors.default.gray(h)} `, n2 = Bt(e2.output, r2(this.options[0], "cancelled"), i2);
133992
- return `${s2}${n2}
133993
- ${import_picocolors.default.gray(h)}`;
133994
- }
133995
- default: {
133996
- const i2 = `${import_picocolors.default.cyan(h)} `, n2 = this.options.map((o2, u2) => Bt(e2.output, r2(o2, u2 === this.cursor ? "active" : "inactive"), i2)).join(`
133997
- `);
133998
- return `${s2}${n2}
133999
- ${import_picocolors.default.cyan(x2)}
134000
133956
  `;
134001
133957
  }
134002
133958
  }
@@ -134089,8 +134045,21 @@ var init_logger3 = __esm({
134089
134045
  }
134090
134046
  });
134091
134047
 
134048
+ // src/devbox/ui/copyableUrl.ts
134049
+ var showCopyableUrl;
134050
+ var init_copyableUrl = __esm({
134051
+ "src/devbox/ui/copyableUrl.ts"() {
134052
+ "use strict";
134053
+ init_dist3();
134054
+ showCopyableUrl = (url, label) => {
134055
+ R2.info(`${label}:`);
134056
+ R2.message(url, { withGuide: false, spacing: 0 });
134057
+ };
134058
+ }
134059
+ });
134060
+
134092
134061
  // src/devbox/controlPlane.ts
134093
- var import_node_http2, import_node_crypto5, import_node_child_process2, resolveControlPlaneUrl2, resolveConvexUrl2, openBrowser, escapeHtml, CALLBACK_LOGO_MARK, renderCallbackPage, requestJson2, startCallbackServer, getControlPlaneUrl, getConvexUrl, signInWithBrowser, spriteTokenGet, spriteTokenSet, spriteDaemonReleaseGet, spriteDaemonTokenIssue, spriteDaemonSessionSummariesList, spriteDaemonSessionsList, helloViewerGet, withConvexClient, fetchViewerIdentity, storeSpriteToken, fetchSpriteDaemonRelease, issueSpriteDaemonToken, listSpriteDaemonSessionSummaries, listSpriteDaemonSessions, signOutControlPlane, refreshControlPlaneSession;
134062
+ var import_node_http2, import_node_crypto5, import_node_child_process2, resolveControlPlaneUrl2, resolveConvexUrl2, openBrowser, escapeHtml, CALLBACK_LOGO_MARK, CALLBACK_FULL_LOGO, renderCallbackPage, requestJson2, startCallbackServer, getControlPlaneUrl, getConvexUrl, signInWithBrowser, spriteTokenGet, spriteTokenSet, spriteDaemonReleaseGet, spriteDaemonTokenIssue, spriteDaemonSessionSummariesList, spriteDaemonSessionsList, helloViewerGet, withConvexClient, fetchViewerIdentity, storeSpriteToken, fetchSpriteDaemonRelease, issueSpriteDaemonToken, listSpriteDaemonSessionSummaries, listSpriteDaemonSessions, signOutControlPlane, refreshControlPlaneSession;
134094
134063
  var init_controlPlane = __esm({
134095
134064
  "src/devbox/controlPlane.ts"() {
134096
134065
  "use strict";
@@ -134101,6 +134070,7 @@ var init_controlPlane = __esm({
134101
134070
  init_index_node();
134102
134071
  init_server();
134103
134072
  init_logger3();
134073
+ init_copyableUrl();
134104
134074
  resolveControlPlaneUrl2 = () => {
134105
134075
  const envOverride = process.env.DEVBOX_CONTROL_PLANE_URL ?? process.env.CONVEX_SITE_URL;
134106
134076
  if (envOverride && envOverride.trim().length > 0) {
@@ -134153,6 +134123,7 @@ var init_controlPlane = __esm({
134153
134123
  <rect x="3" y="9" width="3" height="30" fill="#fff" />
134154
134124
  <rect x="9" y="3" width="30" height="3" fill="#fff" />
134155
134125
  </svg>`;
134126
+ CALLBACK_FULL_LOGO = `<svg width="3066.72" xmlns="http://www.w3.org/2000/svg" height="480" id="screenshot-2bc11706-71c4-8067-8007-89f57e8f9bba" viewBox="-168 0 3066.72 480" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1"><g id="shape-2bc11706-71c4-8067-8007-89f57e8f9bba" rx="0" ry="0"><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3cb" rx="0" ry="0"><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3cc" rx="0" ry="0"><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3d0"><g class="fills" id="fills-691a92d0-935c-80e0-8007-89f2879cb3d0"><rect rx="0" ry="0" x="56" y="56" transform="matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)" width="368" height="368"/></g><g id="strokes-039afc00-82cf-8044-8007-89f5d46fa80c-691a92d0-935c-80e0-8007-89f2879cb3d0" class="strokes"><g class="inner-stroke-shape" transform="matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)"><defs><clipPath id="inner-stroke-render-19-691a92d0-935c-80e0-8007-89f2879cb3d0-0"><use href="#stroke-shape-render-19-691a92d0-935c-80e0-8007-89f2879cb3d0-0"/></clipPath><rect rx="0" ry="0" x="56" y="56" width="368" height="368" id="stroke-shape-render-19-691a92d0-935c-80e0-8007-89f2879cb3d0-0" style="fill: none; stroke-width: 64; stroke: rgb(255, 255, 255); stroke-opacity: 1;"/></defs><use href="#stroke-shape-render-19-691a92d0-935c-80e0-8007-89f2879cb3d0-0" clip-path="url('#inner-stroke-render-19-691a92d0-935c-80e0-8007-89f2879cb3d0-0')"/></g></g></g><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3d1"><g class="fills" id="fills-691a92d0-935c-80e0-8007-89f2879cb3d1"><path d="M480,424L448,424L448,56L480,424" style="fill: rgb(255, 255, 255); fill-opacity: 1;"/></g><g id="strokes-039afc00-82cf-8044-8007-89f5d47002d4-691a92d0-935c-80e0-8007-89f2879cb3d1" class="strokes"><g class="inner-stroke-shape"><defs><clipPath id="inner-stroke-render-20-691a92d0-935c-80e0-8007-89f2879cb3d1-0"><use href="#stroke-shape-render-20-691a92d0-935c-80e0-8007-89f2879cb3d1-0"/></clipPath><path d="M480,424L448,424L448,56L480,424" id="stroke-shape-render-20-691a92d0-935c-80e0-8007-89f2879cb3d1-0" style="fill: none; stroke-width: 4; stroke: rgb(255, 255, 255); stroke-opacity: 1;"/></defs><use href="#stroke-shape-render-20-691a92d0-935c-80e0-8007-89f2879cb3d1-0" clip-path="url('#inner-stroke-render-20-691a92d0-935c-80e0-8007-89f2879cb3d1-0')"/></g></g></g><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3d2"><g class="fills" id="fills-691a92d0-935c-80e0-8007-89f2879cb3d2"><path d="M56,480L56,448L424,448L56,480" style="fill: rgb(255, 255, 255); fill-opacity: 1;"/></g><g id="strokes-039afc00-82cf-8044-8007-89f5d4707fab-691a92d0-935c-80e0-8007-89f2879cb3d2" class="strokes"><g class="inner-stroke-shape"><defs><clipPath id="inner-stroke-render-21-691a92d0-935c-80e0-8007-89f2879cb3d2-0"><use href="#stroke-shape-render-21-691a92d0-935c-80e0-8007-89f2879cb3d2-0"/></clipPath><path d="M56,480L56,448L424,448L56,480" id="stroke-shape-render-21-691a92d0-935c-80e0-8007-89f2879cb3d2-0" style="fill: none; stroke-width: 4; stroke: rgb(255, 255, 255); stroke-opacity: 1;"/></defs><use href="#stroke-shape-render-21-691a92d0-935c-80e0-8007-89f2879cb3d2-0" clip-path="url('#inner-stroke-render-21-691a92d0-935c-80e0-8007-89f2879cb3d2-0')"/></g></g></g><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3d3"><g class="fills" id="fills-691a92d0-935c-80e0-8007-89f2879cb3d3"><path d="M0,56L32,56L32,424L0,56" style="fill: rgb(255, 255, 255); fill-opacity: 1;"/></g><g id="strokes-039afc00-82cf-8044-8007-89f5d4709315-691a92d0-935c-80e0-8007-89f2879cb3d3" class="strokes"><g class="inner-stroke-shape"><defs><clipPath id="inner-stroke-render-22-691a92d0-935c-80e0-8007-89f2879cb3d3-0"><use href="#stroke-shape-render-22-691a92d0-935c-80e0-8007-89f2879cb3d3-0"/></clipPath><path d="M0,56L32,56L32,424L0,56" id="stroke-shape-render-22-691a92d0-935c-80e0-8007-89f2879cb3d3-0" style="fill: none; stroke-width: 4; stroke: rgb(255, 255, 255); stroke-opacity: 1;"/></defs><use href="#stroke-shape-render-22-691a92d0-935c-80e0-8007-89f2879cb3d3-0" clip-path="url('#inner-stroke-render-22-691a92d0-935c-80e0-8007-89f2879cb3d3-0')"/></g></g></g><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3d4"><g class="fills" id="fills-691a92d0-935c-80e0-8007-89f2879cb3d4"><path d="M424,0L424,32L56,32L424,0" style="fill: rgb(255, 255, 255); fill-opacity: 1;"/></g><g id="strokes-039afc00-82cf-8044-8007-89f5d470e827-691a92d0-935c-80e0-8007-89f2879cb3d4" class="strokes"><g class="inner-stroke-shape"><defs><clipPath id="inner-stroke-render-23-691a92d0-935c-80e0-8007-89f2879cb3d4-0"><use href="#stroke-shape-render-23-691a92d0-935c-80e0-8007-89f2879cb3d4-0"/></clipPath><path d="M424,0L424,32L56,32L424,0" id="stroke-shape-render-23-691a92d0-935c-80e0-8007-89f2879cb3d4-0" style="fill: none; stroke-width: 4; stroke: rgb(255, 255, 255); stroke-opacity: 1;"/></defs><use href="#stroke-shape-render-23-691a92d0-935c-80e0-8007-89f2879cb3d4-0" clip-path="url('#inner-stroke-render-23-691a92d0-935c-80e0-8007-89f2879cb3d4-0')"/></g></g></g></g></g><g id="shape-2bc11706-71c4-8067-8007-89f2ebcaa5b6"><g class="fills" id="fills-2bc11706-71c4-8067-8007-89f2ebcaa5b6"><path d="M644.1201171875,409.72021484375L644.1201171875,54.52001953125L705.5595703125,54.52001953125L705.5595703125,205.72021484375L708.919921875,205.72021484375C715.6396484375,190.68017578125,724.83984375,178.68017578125,736.51953125,169.72021484375C748.2001953125,160.759765625,763.6396484375,156.27978515625,782.83984375,156.27978515625L782.83984375,156.27978515625C796.919921875,156.27978515625,809.7998046875,158.919921875,821.48046875,164.2001953125C833.16015625,169.47998046875,843.16015625,177.47998046875,851.48046875,188.2001953125C859.7998046875,198.919921875,866.2001953125,212.43994140625,870.6796875,228.759765625C875.16015625,245.080078125,877.400390625,264.1201171875,877.400390625,285.8798828125L877.400390625,285.8798828125C877.400390625,307.64013671875,875.16015625,326.68017578125,870.6796875,343C866.2001953125,359.31982421875,859.7998046875,372.83984375,851.48046875,383.56005859375C843.16015625,394.27978515625,833.16015625,402.27978515625,821.48046875,407.56005859375C809.7998046875,412.83984375,796.919921875,415.47998046875,782.83984375,415.47998046875L782.83984375,415.47998046875C763.6396484375,415.47998046875,748.2001953125,411,736.51953125,402.0400390625C724.83984375,393.080078125,715.6396484375,381.080078125,708.919921875,366.0400390625L708.919921875,366.0400390625L705.5595703125,366.0400390625L705.5595703125,409.72021484375L644.1201171875,409.72021484375ZM756.919921875,366.52001953125L756.919921875,366.52001953125C774.83984375,366.52001953125,788.6796875,361.080078125,798.4404296875,350.2001953125C808.2001953125,339.31982421875,813.080078125,324.43994140625,813.080078125,305.56005859375L813.080078125,305.56005859375L813.080078125,266.2001953125C813.080078125,247.31982421875,808.2001953125,232.43994140625,798.4404296875,221.56005859375C788.6796875,210.68017578125,774.83984375,205.240234375,756.919921875,205.240234375L756.919921875,205.240234375C742.83984375,205.240234375,730.759765625,208.68017578125,720.6796875,215.56005859375C710.599609375,222.43994140625,705.5595703125,232.919921875,705.5595703125,247L705.5595703125,247L705.5595703125,324.76025390625C705.5595703125,338.83984375,710.599609375,349.31982421875,720.6796875,356.2001953125C730.759765625,363.080078125,742.83984375,366.52001953125,756.919921875,366.52001953125ZM1031,415.47998046875L1031,415.47998046875C1012.1201171875,415.47998046875,995.240234375,412.43994140625,980.3603515625,406.35986328125C965.48046875,400.27978515625,952.83984375,391.64013671875,942.4404296875,380.43994140625C932.0400390625,369.240234375,924.0400390625,355.64013671875,918.4404296875,339.64013671875C912.83984375,323.64013671875,910.0400390625,305.72021484375,910.0400390625,285.8798828125L910.0400390625,285.8798828125C910.0400390625,266.0400390625,912.83984375,248.1201171875,918.4404296875,232.1201171875C924.0400390625,216.1201171875,932.0400390625,202.52001953125,942.4404296875,191.31982421875C952.83984375,180.1201171875,965.48046875,171.47998046875,980.3603515625,165.39990234375C995.240234375,159.31982421875,1012.1201171875,156.27978515625,1031,156.27978515625L1031,156.27978515625C1049.5595703125,156.27978515625,1066.3603515625,159.31982421875,1081.400390625,165.39990234375C1096.4404296875,171.47998046875,1109.16015625,180.1201171875,1119.5595703125,191.31982421875C1129.9599609375,202.52001953125,1137.9599609375,216.1201171875,1143.5595703125,232.1201171875C1149.16015625,248.1201171875,1151.9599609375,266.0400390625,1151.9599609375,285.8798828125L1151.9599609375,285.8798828125C1151.9599609375,305.72021484375,1149.16015625,323.64013671875,1143.5595703125,339.64013671875C1137.9599609375,355.64013671875,1129.9599609375,369.240234375,1119.5595703125,380.43994140625C1109.16015625,391.64013671875,1096.4404296875,400.27978515625,1081.400390625,406.35986328125C1066.3603515625,412.43994140625,1049.5595703125,415.47998046875,1031,415.47998046875ZM1031,368.43994140625L1031,368.43994140625C1048.599609375,368.43994140625,1062.51953125,363.080078125,1072.759765625,352.35986328125C1083,341.64013671875,1088.1201171875,325.8798828125,1088.1201171875,305.080078125L1088.1201171875,305.080078125L1088.1201171875,266.68017578125C1088.1201171875,245.8798828125,1083,230.1201171875,1072.759765625,219.39990234375C1062.51953125,208.68017578125,1048.599609375,203.31982421875,1031,203.31982421875L1031,203.31982421875C1013.400390625,203.31982421875,999.48046875,208.68017578125,989.240234375,219.39990234375C979,230.1201171875,973.8798828125,245.8798828125,973.8798828125,266.68017578125L973.8798828125,266.68017578125L973.8798828125,305.080078125C973.8798828125,325.8798828125,979,341.64013671875,989.240234375,352.35986328125C999.48046875,363.080078125,1013.400390625,368.43994140625,1031,368.43994140625ZM1245.080078125,409.72021484375L1179.3203125,409.72021484375L1271.9599609375,283.9599609375L1184.599609375,162.0400390625L1255.16015625,162.0400390625L1284.919921875,205.72021484375L1307.9599609375,240.27978515625L1311.3203125,240.27978515625L1334.3603515625,205.72021484375L1364.1201171875,162.0400390625L1429.400390625,162.0400390625L1342.0400390625,281.080078125L1434.6796875,409.72021484375L1363.6396484375,409.72021484375L1329.5595703125,359.7998046875L1306.0400390625,324.76025390625L1302.6796875,324.76025390625L1279.16015625,359.7998046875L1245.080078125,409.72021484375ZM1588.759765625,415.47998046875L1588.759765625,415.47998046875C1568.919921875,415.47998046875,1551.3203125,412.43994140625,1535.9599609375,406.35986328125C1520.599609375,400.27978515625,1507.7197265625,391.64013671875,1497.3203125,380.43994140625C1486.919921875,369.240234375,1479,355.72021484375,1473.5595703125,339.8798828125C1468.1201171875,324.0400390625,1465.400390625,306.2001953125,1465.400390625,286.35986328125L1465.400390625,286.35986328125C1465.400390625,266.2001953125,1468.2001953125,248.1201171875,1473.7998046875,232.1201171875C1479.400390625,216.1201171875,1487.3203125,202.52001953125,1497.5595703125,191.31982421875C1507.7998046875,180.1201171875,1520.2001953125,171.47998046875,1534.759765625,165.39990234375C1549.3203125,159.31982421875,1565.7197265625,156.27978515625,1583.9599609375,156.27978515625L1583.9599609375,156.27978515625C1601.8798828125,156.27978515625,1618.0400390625,159.240234375,1632.4404296875,165.16015625C1646.83984375,171.080078125,1659.080078125,179.47998046875,1669.16015625,190.35986328125C1679.240234375,201.240234375,1687,214.35986328125,1692.439453125,229.72021484375C1697.8798828125,245.080078125,1700.599609375,262.0400390625,1700.599609375,280.60009765625L1700.599609375,280.60009765625L1700.599609375,300.76025390625L1526.83984375,300.76025390625L1526.83984375,307C1526.83984375,324.919921875,1532.4404296875,339.39990234375,1543.6396484375,350.43994140625C1554.83984375,361.47998046875,1570.51953125,367,1590.6796875,367L1590.6796875,367C1606.0400390625,367,1619.240234375,363.8798828125,1630.2802734375,357.64013671875C1641.3203125,351.39990234375,1650.51953125,343.16015625,1657.8798828125,332.919921875L1657.8798828125,332.919921875L1692.919921875,367.9599609375C1683.9599609375,381.080078125,1670.919921875,392.27978515625,1653.7998046875,401.56005859375C1636.6796875,410.83984375,1615,415.47998046875,1588.759765625,415.47998046875ZM1584.4404296875,201.39990234375L1584.4404296875,201.39990234375C1567.16015625,201.39990234375,1553.240234375,206.83984375,1542.6796875,217.72021484375C1532.1201171875,228.60009765625,1526.83984375,243,1526.83984375,260.919921875L1526.83984375,260.919921875L1526.83984375,264.27978515625L1639.16015625,264.27978515625L1639.16015625,259.9599609375C1639.16015625,242.0400390625,1634.2802734375,227.7998046875,1624.51953125,217.240234375C1614.759765625,206.68017578125,1601.400390625,201.39990234375,1584.4404296875,201.39990234375ZM1858.0400390625,415.47998046875L1858.0400390625,415.47998046875C1830.83984375,415.47998046875,1807.3203125,411.240234375,1787.48046875,402.759765625C1767.6396484375,394.27978515625,1752.1201171875,382.83984375,1740.919921875,368.43994140625L1740.919921875,368.43994140625L1776.919921875,335.7998046875C1787.16015625,347,1798.919921875,355.64013671875,1812.2001953125,361.72021484375C1825.48046875,367.7998046875,1840.919921875,370.83984375,1858.51953125,370.83984375L1858.51953125,370.83984375C1873.8798828125,370.83984375,1886.2001953125,368.27978515625,1895.48046875,363.16015625C1904.759765625,358.0400390625,1909.400390625,350.2001953125,1909.400390625,339.64013671875L1909.400390625,339.64013671875C1909.400390625,330.68017578125,1906.2802734375,324.60009765625,1900.0400390625,321.39990234375C1893.7998046875,318.2001953125,1885.560546875,315.7998046875,1875.3203125,314.2001953125L1875.3203125,314.2001953125L1835.48046875,307.9599609375C1825.240234375,306.35986328125,1815.240234375,304.0400390625,1805.48046875,301C1795.7197265625,297.9599609375,1787.080078125,293.72021484375,1779.560546875,288.27978515625C1772.0400390625,282.83984375,1766.0400390625,275.8798828125,1761.560546875,267.39990234375C1757.080078125,258.919921875,1754.83984375,248.60009765625,1754.83984375,236.43994140625L1754.83984375,236.43994140625C1754.83984375,210.52001953125,1764.51953125,190.68017578125,1783.8798828125,176.919921875C1803.240234375,163.16015625,1829.8798828125,156.27978515625,1863.7998046875,156.27978515625L1863.7998046875,156.27978515625C1887.7998046875,156.27978515625,1908.2001953125,159.64013671875,1925,166.35986328125C1941.7998046875,173.080078125,1955.6396484375,182.52001953125,1966.51953125,194.68017578125L1966.51953125,194.68017578125L1934.3603515625,230.2001953125C1927.3203125,222.52001953125,1917.9599609375,215.72021484375,1906.2802734375,209.7998046875C1894.599609375,203.8798828125,1879.7998046875,200.919921875,1861.8798828125,200.919921875L1861.8798828125,200.919921875C1830.51953125,200.919921875,1814.83984375,210.68017578125,1814.83984375,230.2001953125L1814.83984375,230.2001953125C1814.83984375,239.16015625,1818.0400390625,245.31982421875,1824.439453125,248.68017578125C1830.83984375,252.0400390625,1839.16015625,254.52001953125,1849.400390625,256.1201171875L1849.400390625,256.1201171875L1888.759765625,262.35986328125C1899.3203125,263.9599609375,1909.48046875,266.27978515625,1919.240234375,269.31982421875C1929,272.35986328125,1937.6396484375,276.60009765625,1945.16015625,282.0400390625C1952.6796875,287.47998046875,1958.6796875,294.35986328125,1963.16015625,302.68017578125C1967.6396484375,311,1969.8798828125,321.240234375,1969.8798828125,333.39990234375L1969.8798828125,333.39990234375C1969.8798828125,359,1960.0400390625,379.080078125,1940.3603515625,393.64013671875C1920.6796875,408.2001953125,1893.240234375,415.47998046875,1858.0400390625,415.47998046875Z" style="fill: rgb(255, 255, 255);"/></g></g><g id="shape-2bc11706-71c4-8067-8007-89f2f04df7fc"><g class="fills" id="fills-2bc11706-71c4-8067-8007-89f2f04df7fc"><path d="M2314.5595703125,409.72021484375L2314.5595703125,371.7998046875L2313.1201171875,371.7998046875C2307.3603515625,383.31982421875,2298.080078125,393.47998046875,2285.2802734375,402.27978515625C2272.48046875,411.080078125,2256,415.47998046875,2235.83984375,415.47998046875L2235.83984375,415.47998046875C2204.48046875,415.47998046875,2180,404.60009765625,2162.400390625,382.83984375C2144.7998046875,361.080078125,2136,328.76025390625,2136,285.8798828125L2136,285.8798828125C2136,243,2144.7998046875,210.68017578125,2162.400390625,188.919921875C2180,167.16015625,2204.48046875,156.27978515625,2235.83984375,156.27978515625L2235.83984375,156.27978515625C2256,156.27978515625,2272.48046875,160.68017578125,2285.2802734375,169.47998046875C2298.080078125,178.27978515625,2307.3603515625,188.43994140625,2313.1201171875,199.9599609375L2313.1201171875,199.9599609375L2314.5595703125,199.9599609375L2314.5595703125,54.52001953125L2331.3603515625,54.52001953125L2331.3603515625,409.72021484375L2314.5595703125,409.72021484375ZM2239.6796875,400.60009765625L2239.6796875,400.60009765625C2249.599609375,400.60009765625,2259.0400390625,399.16015625,2268,396.27978515625C2276.9599609375,393.39990234375,2284.8798828125,389.240234375,2291.759765625,383.7998046875C2298.6396484375,378.35986328125,2304.16015625,371.7998046875,2308.3203125,364.1201171875C2312.48046875,356.43994140625,2314.5595703125,347.9599609375,2314.5595703125,338.68017578125L2314.5595703125,338.68017578125L2314.5595703125,233.080078125C2314.5595703125,223.7998046875,2312.48046875,215.31982421875,2308.3203125,207.64013671875C2304.16015625,199.9599609375,2298.6396484375,193.39990234375,2291.759765625,187.9599609375C2284.8798828125,182.52001953125,2276.9599609375,178.35986328125,2268,175.47998046875C2259.0400390625,172.60009765625,2249.599609375,171.16015625,2239.6796875,171.16015625L2239.6796875,171.16015625C2212.16015625,171.16015625,2191.0400390625,180.2001953125,2176.3203125,198.27978515625C2161.599609375,216.35986328125,2154.240234375,240.919921875,2154.240234375,271.9599609375L2154.240234375,271.9599609375L2154.240234375,299.7998046875C2154.240234375,330.83984375,2161.599609375,355.39990234375,2176.3203125,373.47998046875C2191.0400390625,391.56005859375,2212.16015625,400.60009765625,2239.6796875,400.60009765625ZM2523.3603515625,415.47998046875L2523.3603515625,415.47998046875C2490.080078125,415.47998046875,2464.080078125,404.43994140625,2445.3603515625,382.35986328125C2426.6396484375,360.27978515625,2417.2802734375,328.1201171875,2417.2802734375,285.8798828125L2417.2802734375,285.8798828125C2417.2802734375,243.64013671875,2426.5595703125,211.47998046875,2445.1201171875,189.39990234375C2463.6796875,167.31982421875,2488.9599609375,156.27978515625,2520.9599609375,156.27978515625L2520.9599609375,156.27978515625C2537.599609375,156.27978515625,2552.3203125,159.240234375,2565.1201171875,165.16015625C2577.919921875,171.080078125,2588.6396484375,179.47998046875,2597.2802734375,190.35986328125C2605.919921875,201.240234375,2612.48046875,214.35986328125,2616.9599609375,229.72021484375C2621.4404296875,245.080078125,2623.6796875,262.0400390625,2623.6796875,280.60009765625L2623.6796875,280.60009765625L2623.6796875,287.31982421875L2435.51953125,287.31982421875L2435.51953125,299.7998046875C2435.51953125,330.83984375,2443.1201171875,355.39990234375,2458.3203125,373.47998046875C2473.51953125,391.56005859375,2495.2001953125,400.60009765625,2523.3603515625,400.60009765625L2523.3603515625,400.60009765625C2543.2001953125,400.60009765625,2560,395.9599609375,2573.759765625,386.68017578125C2587.51953125,377.39990234375,2598.080078125,363.47998046875,2605.4404296875,344.919921875L2605.4404296875,344.919921875L2618.8798828125,352.1201171875C2611.51953125,371.31982421875,2599.759765625,386.68017578125,2583.599609375,398.2001953125C2567.4404296875,409.72021484375,2547.3603515625,415.47998046875,2523.3603515625,415.47998046875ZM2520.9599609375,170.68017578125L2520.9599609375,170.68017578125C2493.759765625,170.68017578125,2472.7197265625,179.7998046875,2457.83984375,198.0400390625C2442.9599609375,216.27978515625,2435.51953125,240.919921875,2435.51953125,271.9599609375L2435.51953125,271.9599609375L2435.51953125,273.8798828125L2605.919921875,273.8798828125L2605.919921875,271.47998046875C2605.919921875,240.43994140625,2598.5595703125,215.8798828125,2583.83984375,197.7998046875C2569.1201171875,179.72021484375,2548.16015625,170.68017578125,2520.9599609375,170.68017578125ZM2806.5595703125,409.72021484375L2785.4404296875,409.72021484375L2693.2802734375,162.0400390625L2710.5595703125,162.0400390625L2795.51953125,393.39990234375L2796.9599609375,393.39990234375L2881.919921875,162.0400390625L2898.7197265625,162.0400390625L2806.5595703125,409.72021484375Z" style="fill: rgb(255, 255, 255);"/></g></g></g></svg>`.trim().length > 0 ? `<svg width="3066.72" xmlns="http://www.w3.org/2000/svg" height="480" id="screenshot-2bc11706-71c4-8067-8007-89f57e8f9bba" viewBox="-168 0 3066.72 480" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1"><g id="shape-2bc11706-71c4-8067-8007-89f57e8f9bba" rx="0" ry="0"><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3cb" rx="0" ry="0"><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3cc" rx="0" ry="0"><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3d0"><g class="fills" id="fills-691a92d0-935c-80e0-8007-89f2879cb3d0"><rect rx="0" ry="0" x="56" y="56" transform="matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)" width="368" height="368"/></g><g id="strokes-039afc00-82cf-8044-8007-89f5d46fa80c-691a92d0-935c-80e0-8007-89f2879cb3d0" class="strokes"><g class="inner-stroke-shape" transform="matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)"><defs><clipPath id="inner-stroke-render-19-691a92d0-935c-80e0-8007-89f2879cb3d0-0"><use href="#stroke-shape-render-19-691a92d0-935c-80e0-8007-89f2879cb3d0-0"/></clipPath><rect rx="0" ry="0" x="56" y="56" width="368" height="368" id="stroke-shape-render-19-691a92d0-935c-80e0-8007-89f2879cb3d0-0" style="fill: none; stroke-width: 64; stroke: rgb(255, 255, 255); stroke-opacity: 1;"/></defs><use href="#stroke-shape-render-19-691a92d0-935c-80e0-8007-89f2879cb3d0-0" clip-path="url('#inner-stroke-render-19-691a92d0-935c-80e0-8007-89f2879cb3d0-0')"/></g></g></g><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3d1"><g class="fills" id="fills-691a92d0-935c-80e0-8007-89f2879cb3d1"><path d="M480,424L448,424L448,56L480,424" style="fill: rgb(255, 255, 255); fill-opacity: 1;"/></g><g id="strokes-039afc00-82cf-8044-8007-89f5d47002d4-691a92d0-935c-80e0-8007-89f2879cb3d1" class="strokes"><g class="inner-stroke-shape"><defs><clipPath id="inner-stroke-render-20-691a92d0-935c-80e0-8007-89f2879cb3d1-0"><use href="#stroke-shape-render-20-691a92d0-935c-80e0-8007-89f2879cb3d1-0"/></clipPath><path d="M480,424L448,424L448,56L480,424" id="stroke-shape-render-20-691a92d0-935c-80e0-8007-89f2879cb3d1-0" style="fill: none; stroke-width: 4; stroke: rgb(255, 255, 255); stroke-opacity: 1;"/></defs><use href="#stroke-shape-render-20-691a92d0-935c-80e0-8007-89f2879cb3d1-0" clip-path="url('#inner-stroke-render-20-691a92d0-935c-80e0-8007-89f2879cb3d1-0')"/></g></g></g><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3d2"><g class="fills" id="fills-691a92d0-935c-80e0-8007-89f2879cb3d2"><path d="M56,480L56,448L424,448L56,480" style="fill: rgb(255, 255, 255); fill-opacity: 1;"/></g><g id="strokes-039afc00-82cf-8044-8007-89f5d4707fab-691a92d0-935c-80e0-8007-89f2879cb3d2" class="strokes"><g class="inner-stroke-shape"><defs><clipPath id="inner-stroke-render-21-691a92d0-935c-80e0-8007-89f2879cb3d2-0"><use href="#stroke-shape-render-21-691a92d0-935c-80e0-8007-89f2879cb3d2-0"/></clipPath><path d="M56,480L56,448L424,448L56,480" id="stroke-shape-render-21-691a92d0-935c-80e0-8007-89f2879cb3d2-0" style="fill: none; stroke-width: 4; stroke: rgb(255, 255, 255); stroke-opacity: 1;"/></defs><use href="#stroke-shape-render-21-691a92d0-935c-80e0-8007-89f2879cb3d2-0" clip-path="url('#inner-stroke-render-21-691a92d0-935c-80e0-8007-89f2879cb3d2-0')"/></g></g></g><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3d3"><g class="fills" id="fills-691a92d0-935c-80e0-8007-89f2879cb3d3"><path d="M0,56L32,56L32,424L0,56" style="fill: rgb(255, 255, 255); fill-opacity: 1;"/></g><g id="strokes-039afc00-82cf-8044-8007-89f5d4709315-691a92d0-935c-80e0-8007-89f2879cb3d3" class="strokes"><g class="inner-stroke-shape"><defs><clipPath id="inner-stroke-render-22-691a92d0-935c-80e0-8007-89f2879cb3d3-0"><use href="#stroke-shape-render-22-691a92d0-935c-80e0-8007-89f2879cb3d3-0"/></clipPath><path d="M0,56L32,56L32,424L0,56" id="stroke-shape-render-22-691a92d0-935c-80e0-8007-89f2879cb3d3-0" style="fill: none; stroke-width: 4; stroke: rgb(255, 255, 255); stroke-opacity: 1;"/></defs><use href="#stroke-shape-render-22-691a92d0-935c-80e0-8007-89f2879cb3d3-0" clip-path="url('#inner-stroke-render-22-691a92d0-935c-80e0-8007-89f2879cb3d3-0')"/></g></g></g><g id="shape-691a92d0-935c-80e0-8007-89f2879cb3d4"><g class="fills" id="fills-691a92d0-935c-80e0-8007-89f2879cb3d4"><path d="M424,0L424,32L56,32L424,0" style="fill: rgb(255, 255, 255); fill-opacity: 1;"/></g><g id="strokes-039afc00-82cf-8044-8007-89f5d470e827-691a92d0-935c-80e0-8007-89f2879cb3d4" class="strokes"><g class="inner-stroke-shape"><defs><clipPath id="inner-stroke-render-23-691a92d0-935c-80e0-8007-89f2879cb3d4-0"><use href="#stroke-shape-render-23-691a92d0-935c-80e0-8007-89f2879cb3d4-0"/></clipPath><path d="M424,0L424,32L56,32L424,0" id="stroke-shape-render-23-691a92d0-935c-80e0-8007-89f2879cb3d4-0" style="fill: none; stroke-width: 4; stroke: rgb(255, 255, 255); stroke-opacity: 1;"/></defs><use href="#stroke-shape-render-23-691a92d0-935c-80e0-8007-89f2879cb3d4-0" clip-path="url('#inner-stroke-render-23-691a92d0-935c-80e0-8007-89f2879cb3d4-0')"/></g></g></g></g></g><g id="shape-2bc11706-71c4-8067-8007-89f2ebcaa5b6"><g class="fills" id="fills-2bc11706-71c4-8067-8007-89f2ebcaa5b6"><path d="M644.1201171875,409.72021484375L644.1201171875,54.52001953125L705.5595703125,54.52001953125L705.5595703125,205.72021484375L708.919921875,205.72021484375C715.6396484375,190.68017578125,724.83984375,178.68017578125,736.51953125,169.72021484375C748.2001953125,160.759765625,763.6396484375,156.27978515625,782.83984375,156.27978515625L782.83984375,156.27978515625C796.919921875,156.27978515625,809.7998046875,158.919921875,821.48046875,164.2001953125C833.16015625,169.47998046875,843.16015625,177.47998046875,851.48046875,188.2001953125C859.7998046875,198.919921875,866.2001953125,212.43994140625,870.6796875,228.759765625C875.16015625,245.080078125,877.400390625,264.1201171875,877.400390625,285.8798828125L877.400390625,285.8798828125C877.400390625,307.64013671875,875.16015625,326.68017578125,870.6796875,343C866.2001953125,359.31982421875,859.7998046875,372.83984375,851.48046875,383.56005859375C843.16015625,394.27978515625,833.16015625,402.27978515625,821.48046875,407.56005859375C809.7998046875,412.83984375,796.919921875,415.47998046875,782.83984375,415.47998046875L782.83984375,415.47998046875C763.6396484375,415.47998046875,748.2001953125,411,736.51953125,402.0400390625C724.83984375,393.080078125,715.6396484375,381.080078125,708.919921875,366.0400390625L708.919921875,366.0400390625L705.5595703125,366.0400390625L705.5595703125,409.72021484375L644.1201171875,409.72021484375ZM756.919921875,366.52001953125L756.919921875,366.52001953125C774.83984375,366.52001953125,788.6796875,361.080078125,798.4404296875,350.2001953125C808.2001953125,339.31982421875,813.080078125,324.43994140625,813.080078125,305.56005859375L813.080078125,305.56005859375L813.080078125,266.2001953125C813.080078125,247.31982421875,808.2001953125,232.43994140625,798.4404296875,221.56005859375C788.6796875,210.68017578125,774.83984375,205.240234375,756.919921875,205.240234375L756.919921875,205.240234375C742.83984375,205.240234375,730.759765625,208.68017578125,720.6796875,215.56005859375C710.599609375,222.43994140625,705.5595703125,232.919921875,705.5595703125,247L705.5595703125,247L705.5595703125,324.76025390625C705.5595703125,338.83984375,710.599609375,349.31982421875,720.6796875,356.2001953125C730.759765625,363.080078125,742.83984375,366.52001953125,756.919921875,366.52001953125ZM1031,415.47998046875L1031,415.47998046875C1012.1201171875,415.47998046875,995.240234375,412.43994140625,980.3603515625,406.35986328125C965.48046875,400.27978515625,952.83984375,391.64013671875,942.4404296875,380.43994140625C932.0400390625,369.240234375,924.0400390625,355.64013671875,918.4404296875,339.64013671875C912.83984375,323.64013671875,910.0400390625,305.72021484375,910.0400390625,285.8798828125L910.0400390625,285.8798828125C910.0400390625,266.0400390625,912.83984375,248.1201171875,918.4404296875,232.1201171875C924.0400390625,216.1201171875,932.0400390625,202.52001953125,942.4404296875,191.31982421875C952.83984375,180.1201171875,965.48046875,171.47998046875,980.3603515625,165.39990234375C995.240234375,159.31982421875,1012.1201171875,156.27978515625,1031,156.27978515625L1031,156.27978515625C1049.5595703125,156.27978515625,1066.3603515625,159.31982421875,1081.400390625,165.39990234375C1096.4404296875,171.47998046875,1109.16015625,180.1201171875,1119.5595703125,191.31982421875C1129.9599609375,202.52001953125,1137.9599609375,216.1201171875,1143.5595703125,232.1201171875C1149.16015625,248.1201171875,1151.9599609375,266.0400390625,1151.9599609375,285.8798828125L1151.9599609375,285.8798828125C1151.9599609375,305.72021484375,1149.16015625,323.64013671875,1143.5595703125,339.64013671875C1137.9599609375,355.64013671875,1129.9599609375,369.240234375,1119.5595703125,380.43994140625C1109.16015625,391.64013671875,1096.4404296875,400.27978515625,1081.400390625,406.35986328125C1066.3603515625,412.43994140625,1049.5595703125,415.47998046875,1031,415.47998046875ZM1031,368.43994140625L1031,368.43994140625C1048.599609375,368.43994140625,1062.51953125,363.080078125,1072.759765625,352.35986328125C1083,341.64013671875,1088.1201171875,325.8798828125,1088.1201171875,305.080078125L1088.1201171875,305.080078125L1088.1201171875,266.68017578125C1088.1201171875,245.8798828125,1083,230.1201171875,1072.759765625,219.39990234375C1062.51953125,208.68017578125,1048.599609375,203.31982421875,1031,203.31982421875L1031,203.31982421875C1013.400390625,203.31982421875,999.48046875,208.68017578125,989.240234375,219.39990234375C979,230.1201171875,973.8798828125,245.8798828125,973.8798828125,266.68017578125L973.8798828125,266.68017578125L973.8798828125,305.080078125C973.8798828125,325.8798828125,979,341.64013671875,989.240234375,352.35986328125C999.48046875,363.080078125,1013.400390625,368.43994140625,1031,368.43994140625ZM1245.080078125,409.72021484375L1179.3203125,409.72021484375L1271.9599609375,283.9599609375L1184.599609375,162.0400390625L1255.16015625,162.0400390625L1284.919921875,205.72021484375L1307.9599609375,240.27978515625L1311.3203125,240.27978515625L1334.3603515625,205.72021484375L1364.1201171875,162.0400390625L1429.400390625,162.0400390625L1342.0400390625,281.080078125L1434.6796875,409.72021484375L1363.6396484375,409.72021484375L1329.5595703125,359.7998046875L1306.0400390625,324.76025390625L1302.6796875,324.76025390625L1279.16015625,359.7998046875L1245.080078125,409.72021484375ZM1588.759765625,415.47998046875L1588.759765625,415.47998046875C1568.919921875,415.47998046875,1551.3203125,412.43994140625,1535.9599609375,406.35986328125C1520.599609375,400.27978515625,1507.7197265625,391.64013671875,1497.3203125,380.43994140625C1486.919921875,369.240234375,1479,355.72021484375,1473.5595703125,339.8798828125C1468.1201171875,324.0400390625,1465.400390625,306.2001953125,1465.400390625,286.35986328125L1465.400390625,286.35986328125C1465.400390625,266.2001953125,1468.2001953125,248.1201171875,1473.7998046875,232.1201171875C1479.400390625,216.1201171875,1487.3203125,202.52001953125,1497.5595703125,191.31982421875C1507.7998046875,180.1201171875,1520.2001953125,171.47998046875,1534.759765625,165.39990234375C1549.3203125,159.31982421875,1565.7197265625,156.27978515625,1583.9599609375,156.27978515625L1583.9599609375,156.27978515625C1601.8798828125,156.27978515625,1618.0400390625,159.240234375,1632.4404296875,165.16015625C1646.83984375,171.080078125,1659.080078125,179.47998046875,1669.16015625,190.35986328125C1679.240234375,201.240234375,1687,214.35986328125,1692.439453125,229.72021484375C1697.8798828125,245.080078125,1700.599609375,262.0400390625,1700.599609375,280.60009765625L1700.599609375,280.60009765625L1700.599609375,300.76025390625L1526.83984375,300.76025390625L1526.83984375,307C1526.83984375,324.919921875,1532.4404296875,339.39990234375,1543.6396484375,350.43994140625C1554.83984375,361.47998046875,1570.51953125,367,1590.6796875,367L1590.6796875,367C1606.0400390625,367,1619.240234375,363.8798828125,1630.2802734375,357.64013671875C1641.3203125,351.39990234375,1650.51953125,343.16015625,1657.8798828125,332.919921875L1657.8798828125,332.919921875L1692.919921875,367.9599609375C1683.9599609375,381.080078125,1670.919921875,392.27978515625,1653.7998046875,401.56005859375C1636.6796875,410.83984375,1615,415.47998046875,1588.759765625,415.47998046875ZM1584.4404296875,201.39990234375L1584.4404296875,201.39990234375C1567.16015625,201.39990234375,1553.240234375,206.83984375,1542.6796875,217.72021484375C1532.1201171875,228.60009765625,1526.83984375,243,1526.83984375,260.919921875L1526.83984375,260.919921875L1526.83984375,264.27978515625L1639.16015625,264.27978515625L1639.16015625,259.9599609375C1639.16015625,242.0400390625,1634.2802734375,227.7998046875,1624.51953125,217.240234375C1614.759765625,206.68017578125,1601.400390625,201.39990234375,1584.4404296875,201.39990234375ZM1858.0400390625,415.47998046875L1858.0400390625,415.47998046875C1830.83984375,415.47998046875,1807.3203125,411.240234375,1787.48046875,402.759765625C1767.6396484375,394.27978515625,1752.1201171875,382.83984375,1740.919921875,368.43994140625L1740.919921875,368.43994140625L1776.919921875,335.7998046875C1787.16015625,347,1798.919921875,355.64013671875,1812.2001953125,361.72021484375C1825.48046875,367.7998046875,1840.919921875,370.83984375,1858.51953125,370.83984375L1858.51953125,370.83984375C1873.8798828125,370.83984375,1886.2001953125,368.27978515625,1895.48046875,363.16015625C1904.759765625,358.0400390625,1909.400390625,350.2001953125,1909.400390625,339.64013671875L1909.400390625,339.64013671875C1909.400390625,330.68017578125,1906.2802734375,324.60009765625,1900.0400390625,321.39990234375C1893.7998046875,318.2001953125,1885.560546875,315.7998046875,1875.3203125,314.2001953125L1875.3203125,314.2001953125L1835.48046875,307.9599609375C1825.240234375,306.35986328125,1815.240234375,304.0400390625,1805.48046875,301C1795.7197265625,297.9599609375,1787.080078125,293.72021484375,1779.560546875,288.27978515625C1772.0400390625,282.83984375,1766.0400390625,275.8798828125,1761.560546875,267.39990234375C1757.080078125,258.919921875,1754.83984375,248.60009765625,1754.83984375,236.43994140625L1754.83984375,236.43994140625C1754.83984375,210.52001953125,1764.51953125,190.68017578125,1783.8798828125,176.919921875C1803.240234375,163.16015625,1829.8798828125,156.27978515625,1863.7998046875,156.27978515625L1863.7998046875,156.27978515625C1887.7998046875,156.27978515625,1908.2001953125,159.64013671875,1925,166.35986328125C1941.7998046875,173.080078125,1955.6396484375,182.52001953125,1966.51953125,194.68017578125L1966.51953125,194.68017578125L1934.3603515625,230.2001953125C1927.3203125,222.52001953125,1917.9599609375,215.72021484375,1906.2802734375,209.7998046875C1894.599609375,203.8798828125,1879.7998046875,200.919921875,1861.8798828125,200.919921875L1861.8798828125,200.919921875C1830.51953125,200.919921875,1814.83984375,210.68017578125,1814.83984375,230.2001953125L1814.83984375,230.2001953125C1814.83984375,239.16015625,1818.0400390625,245.31982421875,1824.439453125,248.68017578125C1830.83984375,252.0400390625,1839.16015625,254.52001953125,1849.400390625,256.1201171875L1849.400390625,256.1201171875L1888.759765625,262.35986328125C1899.3203125,263.9599609375,1909.48046875,266.27978515625,1919.240234375,269.31982421875C1929,272.35986328125,1937.6396484375,276.60009765625,1945.16015625,282.0400390625C1952.6796875,287.47998046875,1958.6796875,294.35986328125,1963.16015625,302.68017578125C1967.6396484375,311,1969.8798828125,321.240234375,1969.8798828125,333.39990234375L1969.8798828125,333.39990234375C1969.8798828125,359,1960.0400390625,379.080078125,1940.3603515625,393.64013671875C1920.6796875,408.2001953125,1893.240234375,415.47998046875,1858.0400390625,415.47998046875Z" style="fill: rgb(255, 255, 255);"/></g></g><g id="shape-2bc11706-71c4-8067-8007-89f2f04df7fc"><g class="fills" id="fills-2bc11706-71c4-8067-8007-89f2f04df7fc"><path d="M2314.5595703125,409.72021484375L2314.5595703125,371.7998046875L2313.1201171875,371.7998046875C2307.3603515625,383.31982421875,2298.080078125,393.47998046875,2285.2802734375,402.27978515625C2272.48046875,411.080078125,2256,415.47998046875,2235.83984375,415.47998046875L2235.83984375,415.47998046875C2204.48046875,415.47998046875,2180,404.60009765625,2162.400390625,382.83984375C2144.7998046875,361.080078125,2136,328.76025390625,2136,285.8798828125L2136,285.8798828125C2136,243,2144.7998046875,210.68017578125,2162.400390625,188.919921875C2180,167.16015625,2204.48046875,156.27978515625,2235.83984375,156.27978515625L2235.83984375,156.27978515625C2256,156.27978515625,2272.48046875,160.68017578125,2285.2802734375,169.47998046875C2298.080078125,178.27978515625,2307.3603515625,188.43994140625,2313.1201171875,199.9599609375L2313.1201171875,199.9599609375L2314.5595703125,199.9599609375L2314.5595703125,54.52001953125L2331.3603515625,54.52001953125L2331.3603515625,409.72021484375L2314.5595703125,409.72021484375ZM2239.6796875,400.60009765625L2239.6796875,400.60009765625C2249.599609375,400.60009765625,2259.0400390625,399.16015625,2268,396.27978515625C2276.9599609375,393.39990234375,2284.8798828125,389.240234375,2291.759765625,383.7998046875C2298.6396484375,378.35986328125,2304.16015625,371.7998046875,2308.3203125,364.1201171875C2312.48046875,356.43994140625,2314.5595703125,347.9599609375,2314.5595703125,338.68017578125L2314.5595703125,338.68017578125L2314.5595703125,233.080078125C2314.5595703125,223.7998046875,2312.48046875,215.31982421875,2308.3203125,207.64013671875C2304.16015625,199.9599609375,2298.6396484375,193.39990234375,2291.759765625,187.9599609375C2284.8798828125,182.52001953125,2276.9599609375,178.35986328125,2268,175.47998046875C2259.0400390625,172.60009765625,2249.599609375,171.16015625,2239.6796875,171.16015625L2239.6796875,171.16015625C2212.16015625,171.16015625,2191.0400390625,180.2001953125,2176.3203125,198.27978515625C2161.599609375,216.35986328125,2154.240234375,240.919921875,2154.240234375,271.9599609375L2154.240234375,271.9599609375L2154.240234375,299.7998046875C2154.240234375,330.83984375,2161.599609375,355.39990234375,2176.3203125,373.47998046875C2191.0400390625,391.56005859375,2212.16015625,400.60009765625,2239.6796875,400.60009765625ZM2523.3603515625,415.47998046875L2523.3603515625,415.47998046875C2490.080078125,415.47998046875,2464.080078125,404.43994140625,2445.3603515625,382.35986328125C2426.6396484375,360.27978515625,2417.2802734375,328.1201171875,2417.2802734375,285.8798828125L2417.2802734375,285.8798828125C2417.2802734375,243.64013671875,2426.5595703125,211.47998046875,2445.1201171875,189.39990234375C2463.6796875,167.31982421875,2488.9599609375,156.27978515625,2520.9599609375,156.27978515625L2520.9599609375,156.27978515625C2537.599609375,156.27978515625,2552.3203125,159.240234375,2565.1201171875,165.16015625C2577.919921875,171.080078125,2588.6396484375,179.47998046875,2597.2802734375,190.35986328125C2605.919921875,201.240234375,2612.48046875,214.35986328125,2616.9599609375,229.72021484375C2621.4404296875,245.080078125,2623.6796875,262.0400390625,2623.6796875,280.60009765625L2623.6796875,280.60009765625L2623.6796875,287.31982421875L2435.51953125,287.31982421875L2435.51953125,299.7998046875C2435.51953125,330.83984375,2443.1201171875,355.39990234375,2458.3203125,373.47998046875C2473.51953125,391.56005859375,2495.2001953125,400.60009765625,2523.3603515625,400.60009765625L2523.3603515625,400.60009765625C2543.2001953125,400.60009765625,2560,395.9599609375,2573.759765625,386.68017578125C2587.51953125,377.39990234375,2598.080078125,363.47998046875,2605.4404296875,344.919921875L2605.4404296875,344.919921875L2618.8798828125,352.1201171875C2611.51953125,371.31982421875,2599.759765625,386.68017578125,2583.599609375,398.2001953125C2567.4404296875,409.72021484375,2547.3603515625,415.47998046875,2523.3603515625,415.47998046875ZM2520.9599609375,170.68017578125L2520.9599609375,170.68017578125C2493.759765625,170.68017578125,2472.7197265625,179.7998046875,2457.83984375,198.0400390625C2442.9599609375,216.27978515625,2435.51953125,240.919921875,2435.51953125,271.9599609375L2435.51953125,271.9599609375L2435.51953125,273.8798828125L2605.919921875,273.8798828125L2605.919921875,271.47998046875C2605.919921875,240.43994140625,2598.5595703125,215.8798828125,2583.83984375,197.7998046875C2569.1201171875,179.72021484375,2548.16015625,170.68017578125,2520.9599609375,170.68017578125ZM2806.5595703125,409.72021484375L2785.4404296875,409.72021484375L2693.2802734375,162.0400390625L2710.5595703125,162.0400390625L2795.51953125,393.39990234375L2796.9599609375,393.39990234375L2881.919921875,162.0400390625L2898.7197265625,162.0400390625L2806.5595703125,409.72021484375Z" style="fill: rgb(255, 255, 255);"/></g></g></g></svg>` : CALLBACK_LOGO_MARK;
134156
134127
  renderCallbackPage = (tone, title, message) => {
134157
134128
  const isSuccess = tone === "success";
134158
134129
  const badgeClass = isSuccess ? "badge success" : "badge error";
@@ -134223,20 +134194,20 @@ var init_controlPlane = __esm({
134223
134194
  0 4px 14px rgba(0, 0, 0, 0.05);
134224
134195
  }
134225
134196
  .brand {
134226
- display: flex;
134197
+ display: inline-flex;
134227
134198
  align-items: center;
134228
- gap: 12px;
134199
+ justify-content: center;
134200
+ width: min(100%, 360px);
134201
+ border-radius: 12px;
134202
+ border: 1px solid rgba(255, 255, 255, 0.08);
134203
+ background: #111827;
134204
+ padding: 12px 14px;
134229
134205
  margin-bottom: 18px;
134230
134206
  }
134231
134207
  .brand svg {
134232
- width: 34px;
134233
- height: 34px;
134234
- flex: none;
134235
- }
134236
- .wordmark {
134237
- font-size: 20px;
134238
- font-weight: 700;
134239
- letter-spacing: 0.2px;
134208
+ width: 100%;
134209
+ height: auto;
134210
+ display: block;
134240
134211
  }
134241
134212
  .badge {
134242
134213
  display: inline-flex;
@@ -134273,8 +134244,7 @@ var init_controlPlane = __esm({
134273
134244
  <body>
134274
134245
  <main>
134275
134246
  <div class="brand">
134276
- ${CALLBACK_LOGO_MARK}
134277
- <span class="wordmark">boxes.dev</span>
134247
+ ${CALLBACK_FULL_LOGO}
134278
134248
  </div>
134279
134249
  <span class="${badgeClass}">${badgeLabel}</span>
134280
134250
  <h1>${escapedTitle}</h1>
@@ -134410,20 +134380,20 @@ var init_controlPlane = __esm({
134410
134380
  if (!start.redirect || !start.verifier) {
134411
134381
  throw new Error("Control plane sign-in failed to start.");
134412
134382
  }
134413
- kt2(start.redirect, "Login URL");
134414
- const action = await Jt({
134383
+ showCopyableUrl(start.redirect, "Login URL");
134384
+ const action = await qt({
134415
134385
  message: "Open the login URL in your browser?",
134416
134386
  options: [
134417
- { value: "o", label: "Open in browser" },
134418
- { value: "s", label: "Skip" }
134387
+ { value: "open", label: "Open in browser" },
134388
+ { value: "skip", label: "Skip" }
134419
134389
  ],
134420
- initialValue: "o"
134390
+ initialValue: "open"
134421
134391
  });
134422
134392
  if (Ct(action)) {
134423
134393
  Pt("Sign-in canceled.");
134424
134394
  throw new Error("Control plane sign-in cancelled.");
134425
134395
  }
134426
- if (action === "o") {
134396
+ if (action === "open") {
134427
134397
  const opened = openBrowser(start.redirect);
134428
134398
  if (!opened) {
134429
134399
  R2.warn("Unable to open the browser automatically.");
@@ -143474,7 +143444,7 @@ var init_weztermMux = __esm({
143474
143444
  });
143475
143445
 
143476
143446
  // src/devbox/commands/init/remote.ts
143477
- var import_node_crypto9, DAEMON_DIR, DAEMON_TARBALL, DAEMON_BUNDLE_DIR, DAEMON_ENTRY, DAEMON_WRAPPER, DAEMON_SERVICE_NAME, DAEMON_CONFIG_FILE, DEFAULT_DAEMON_BASE_URL, DEFAULT_HEARTBEAT_MS, BOOTSTRAP_EXEC_TIMEOUT_MS, logger8, truncateTail, shellQuote3, expandHome2, execWithLog, writeRemoteFile, bootstrapDevbox, buildWeztermMuxConfig, buildWeztermMuxRunner, patchBashrc, writeRemoteCodexConfig, stageRemoteSetupArtifacts, resolveDaemonUrl, fetchDaemonBinary, buildDaemonConfig, isSameArgs, ensureSpriteDaemonService, installWeztermMux, ensureWeztermMuxService, hasWeztermMuxBinary, isWeztermMuxHealthy, installSpriteDaemon;
143447
+ var import_node_crypto9, DAEMON_DIR, DAEMON_TARBALL, DAEMON_BUNDLE_DIR, DAEMON_ENTRY, DAEMON_WRAPPER, DAEMON_SERVICE_NAME, DAEMON_CONFIG_FILE, DEFAULT_DAEMON_BASE_URL, DEFAULT_HEARTBEAT_MS, BOOTSTRAP_EXEC_TIMEOUT_MS, logger8, truncateTail, shellQuote3, expandHome2, execWithLog, writeRemoteFile, bootstrapDevbox, buildWeztermMuxConfig, buildWeztermMuxRunner, runRemoteInitScript, patchBashrc, patchZshrc, writeRemoteCodexConfig, stageRemoteSetupArtifacts, resolveDaemonUrl, fetchDaemonBinary, buildDaemonConfig, isSameArgs, ensureSpriteDaemonService, installWeztermMux, ensureWeztermMuxService, hasWeztermMuxBinary, isWeztermMuxHealthy, installSpriteDaemon;
143478
143448
  var init_remote = __esm({
143479
143449
  "src/devbox/commands/init/remote.ts"() {
143480
143450
  "use strict";
@@ -143607,6 +143577,7 @@ var init_remote = __esm({
143607
143577
  );
143608
143578
  }
143609
143579
  await patchBashrc(client, canonical);
143580
+ await patchZshrc(client, canonical);
143610
143581
  };
143611
143582
  buildWeztermMuxConfig = () => {
143612
143583
  const lines = [
@@ -143742,9 +143713,9 @@ var init_remote = __esm({
143742
143713
  'exec socat "TCP-LISTEN:${port},bind=127.0.0.1,reuseaddr,fork" "UNIX-CONNECT:${socket_path}"',
143743
143714
  ""
143744
143715
  ].join("\n");
143745
- patchBashrc = async (client, canonical) => {
143746
- const script = await loadInitScript("fix-bashrc.sh");
143747
- const remotePath = "/tmp/devbox-fix-bashrc.sh";
143716
+ runRemoteInitScript = async (client, canonical, options) => {
143717
+ const script = await loadInitScript(options.scriptName);
143718
+ const { remotePath } = options;
143748
143719
  const uploadId = (0, import_node_crypto9.randomUUID)();
143749
143720
  logger8.info("sprites_request", {
143750
143721
  requestId: uploadId,
@@ -143788,10 +143759,20 @@ var init_remote = __esm({
143788
143759
  if (result.exitCode !== 0) {
143789
143760
  const details = result.stderr || result.stdout || "";
143790
143761
  throw new Error(
143791
- details ? `bashrc patch failed: ${details}` : `bashrc patch failed (exit ${result.exitCode})`
143762
+ details ? `${options.errorLabel} patch failed: ${details}` : `${options.errorLabel} patch failed (exit ${result.exitCode})`
143792
143763
  );
143793
143764
  }
143794
143765
  };
143766
+ patchBashrc = async (client, canonical) => await runRemoteInitScript(client, canonical, {
143767
+ scriptName: "fix-bashrc.sh",
143768
+ remotePath: "/tmp/devbox-fix-bashrc.sh",
143769
+ errorLabel: "bashrc"
143770
+ });
143771
+ patchZshrc = async (client, canonical) => await runRemoteInitScript(client, canonical, {
143772
+ scriptName: "fix-zshrc.sh",
143773
+ remotePath: "/tmp/devbox-fix-zshrc.sh",
143774
+ errorLabel: "zshrc"
143775
+ });
143795
143776
  writeRemoteCodexConfig = async (client, canonical, repoName) => {
143796
143777
  const configPath = "/home/sprite/.codex/config.toml";
143797
143778
  const content = buildCodexConfig(repoName);
@@ -144527,6 +144508,7 @@ var init_state = __esm({
144527
144508
  "setupUploaded",
144528
144509
  "setupArtifactsStaged",
144529
144510
  "servicesEnabled",
144511
+ "codexCliEnsured",
144530
144512
  "sshdConfigured",
144531
144513
  "sshAuthConfigured",
144532
144514
  "weztermMuxInstalled",
@@ -146621,6 +146603,7 @@ var init_codex = __esm({
146621
146603
  init_dist3();
146622
146604
  init_src();
146623
146605
  init_daemonClient();
146606
+ init_copyableUrl();
146624
146607
  init_remote();
146625
146608
  init_remote2();
146626
146609
  init_plan();
@@ -146746,7 +146729,6 @@ var init_codex = __esm({
146746
146729
  }) => {
146747
146730
  status.stage("Checking Codex login");
146748
146731
  let loggedIn = await isRemoteCodexLoggedIn(client, canonical);
146749
- let upgraded = false;
146750
146732
  if (!loggedIn) {
146751
146733
  const synced = await syncLocalCodexAuthCacheToSprite({
146752
146734
  client,
@@ -146758,9 +146740,6 @@ var init_codex = __esm({
146758
146740
  }
146759
146741
  }
146760
146742
  if (!loggedIn) {
146761
- status.stage("Upgrading Codex");
146762
- await ensureRemoteCodexInstalled(client, canonical);
146763
- upgraded = true;
146764
146743
  await requireDaemonFeatures(socketInfo.socketPath, ["ports"]);
146765
146744
  status.stage("Waiting for Codex login");
146766
146745
  let openedUrl = false;
@@ -146787,20 +146766,20 @@ codex login`
146787
146766
  if (openedUrl) return;
146788
146767
  openedUrl = true;
146789
146768
  status.stop();
146790
- kt2(url, "Codex login URL");
146791
- const action = await Jt({
146769
+ showCopyableUrl(url, "Codex login URL");
146770
+ const action = await qt({
146792
146771
  message: "Open the Codex login URL in your browser?",
146793
146772
  options: [
146794
- { value: "o", label: "Open in browser" },
146795
- { value: "s", label: "Skip" }
146773
+ { value: "open", label: "Open in browser" },
146774
+ { value: "skip", label: "Skip" }
146796
146775
  ],
146797
- initialValue: "o"
146776
+ initialValue: "open"
146798
146777
  });
146799
146778
  if (Ct(action)) {
146800
146779
  Pt("Init canceled.");
146801
146780
  throw new Error("Init canceled.");
146802
146781
  }
146803
- if (action === "o") {
146782
+ if (action === "open") {
146804
146783
  const opened = await openBrowser4(url);
146805
146784
  if (opened) {
146806
146785
  R2.success("Opened browser for Codex login.");
@@ -146857,10 +146836,6 @@ codex login`
146857
146836
  );
146858
146837
  }
146859
146838
  }
146860
- if (!upgraded) {
146861
- status.stage("Upgrading Codex");
146862
- await ensureRemoteCodexInstalled(client, canonical);
146863
- }
146864
146839
  status.stage("Applying setup plan");
146865
146840
  const remotePrompt = await renderRemoteApplyPrompt({
146866
146841
  setupPath: remoteSetupPath,
@@ -147950,6 +147925,7 @@ var init_init = __esm({
147950
147925
  init_remote();
147951
147926
  init_ensureMux();
147952
147927
  init_registry2();
147928
+ init_copyableUrl();
147953
147929
  init_state();
147954
147930
  init_ssh();
147955
147931
  init_mountSsh();
@@ -148213,19 +148189,19 @@ var init_init = __esm({
148213
148189
  consequence
148214
148190
  }) => {
148215
148191
  if (!process.stdin.isTTY) return false;
148216
- kt2(url, title);
148217
- const choice = await Jt({
148192
+ showCopyableUrl(url, title);
148193
+ const choice = await qt({
148218
148194
  message: `Open ${title} in your browser?`,
148219
148195
  options: [
148220
- { value: "o", label: "Open in browser" },
148221
- { value: "s", label: "Skip" }
148196
+ { value: "open", label: "Open in browser" },
148197
+ { value: "skip", label: "Skip" }
148222
148198
  ],
148223
- initialValue: "o"
148199
+ initialValue: "open"
148224
148200
  });
148225
148201
  if (Ct(choice)) {
148226
148202
  throwInitCanceled();
148227
148203
  }
148228
- if (choice === "s") {
148204
+ if (choice === "skip") {
148229
148205
  R2.warn(consequence);
148230
148206
  return false;
148231
148207
  }
@@ -148867,6 +148843,26 @@ var init_init = __esm({
148867
148843
  });
148868
148844
  }
148869
148845
  });
148846
+ await runInitStep({
148847
+ enabled: progressEnabled,
148848
+ title: "Ensuring Codex CLI",
148849
+ fn: async ({ status, fail }) => {
148850
+ try {
148851
+ await retryInitStep({
148852
+ status,
148853
+ title: "Ensuring Codex CLI",
148854
+ fn: async () => await ensureRemoteCodexInstalled(client2, canonical2)
148855
+ });
148856
+ } catch (error2) {
148857
+ logger7.warn("codex_cli_ensure_failed", {
148858
+ box: canonical2,
148859
+ error: error2 instanceof Error ? error2.message : String(error2)
148860
+ });
148861
+ fail("Ensuring Codex CLI (failed)");
148862
+ throw error2;
148863
+ }
148864
+ }
148865
+ });
148870
148866
  await runInitStep({
148871
148867
  enabled: progressEnabled,
148872
148868
  title: "Applying setup plan",
@@ -149010,6 +149006,11 @@ var init_init = __esm({
149010
149006
  });
149011
149007
  const username = import_node_os11.default.userInfo().username;
149012
149008
  let canonical = (shouldResume && initState?.canonical ? initState.canonical : null) ?? canonicalHint ?? `${username}-${slug}`;
149009
+ const knownAssociatedCanonicals = new Set(
149010
+ [existingEntry?.canonical, initState?.canonical].filter(
149011
+ (value) => typeof value === "string" && value.length > 0
149012
+ )
149013
+ );
149013
149014
  const createSprite = async (name) => {
149014
149015
  try {
149015
149016
  await client.createSprite(name);
@@ -149025,6 +149026,19 @@ var init_init = __esm({
149025
149026
  }
149026
149027
  };
149027
149028
  const skipCreate = shouldResume && initState?.steps.spritesCreated && initState.canonical;
149029
+ if (!skipCreate) {
149030
+ const aliasLookup2 = await requestJson3(
149031
+ socketInfo.socketPath,
149032
+ "GET",
149033
+ `/registry/alias?alias=${encodeURIComponent(alias)}`,
149034
+ DAEMON_TIMEOUT_MS.registry
149035
+ );
149036
+ requireDaemonJsonOk(aliasLookup2, "Checking alias (/registry/alias)");
149037
+ const aliasCanonical = aliasLookup2.body.canonical;
149038
+ if (aliasCanonical && aliasCanonical !== canonical && !knownAssociatedCanonicals.has(aliasCanonical) && !parsed.force) {
149039
+ throw new Error(`Alias already in use: ${alias}`);
149040
+ }
149041
+ }
149028
149042
  if (!skipCreate) {
149029
149043
  canonical = await runInitStep({
149030
149044
  enabled: progressEnabled,
@@ -149032,16 +149046,43 @@ var init_init = __esm({
149032
149046
  fn: async ({ status }) => {
149033
149047
  let nextCanonical = canonical;
149034
149048
  const createResult = await createSprite(nextCanonical);
149035
- if (createResult === "exists" && !parsed.force) {
149036
- if (canonicalHint) {
149037
- throw new Error(`Sprite already exists: ${nextCanonical}`);
149038
- }
149039
- const suffix = fingerprint.slice(0, 6);
149040
- nextCanonical = `${nextCanonical}-${suffix}`;
149041
- status.stage("Resolving devbox name");
149042
- const second = await createSprite(nextCanonical);
149043
- if (second === "exists") {
149044
- throw new Error(`Sprite already exists: ${nextCanonical}`);
149049
+ if (createResult === "exists") {
149050
+ const associatedCanonical = knownAssociatedCanonicals.has(nextCanonical);
149051
+ if (parsed.force) {
149052
+ if (!associatedCanonical) {
149053
+ if (!process.stdin.isTTY || parsed.json) {
149054
+ throw new Error(
149055
+ `Sprite already exists: ${nextCanonical}. Refusing to reuse an unlinked sprite in non-interactive mode.`
149056
+ );
149057
+ }
149058
+ status.stop();
149059
+ const confirmedReuse = await Mt2({
149060
+ message: `Sprite "${nextCanonical}" already exists but is not linked to this repo. Reuse it with --force?`,
149061
+ active: "Reuse existing sprite",
149062
+ inactive: "Abort init",
149063
+ initialValue: false
149064
+ });
149065
+ if (Ct(confirmedReuse)) {
149066
+ throwInitCanceled();
149067
+ }
149068
+ if (!confirmedReuse) {
149069
+ throw new Error(
149070
+ `Sprite reuse canceled: ${nextCanonical}. Choose a different --name.`
149071
+ );
149072
+ }
149073
+ status.stage("Creating devbox");
149074
+ }
149075
+ } else {
149076
+ if (canonicalHint) {
149077
+ throw new Error(`Sprite already exists: ${nextCanonical}`);
149078
+ }
149079
+ const suffix = fingerprint.slice(0, 6);
149080
+ nextCanonical = `${nextCanonical}-${suffix}`;
149081
+ status.stage("Resolving devbox name");
149082
+ const second = await createSprite(nextCanonical);
149083
+ if (second === "exists") {
149084
+ throw new Error(`Sprite already exists: ${nextCanonical}`);
149085
+ }
149045
149086
  }
149046
149087
  }
149047
149088
  await updateInitState({
@@ -149243,6 +149284,7 @@ var init_init = __esm({
149243
149284
  const skipServicesEnable = shouldResume && initState?.steps.servicesEnabled;
149244
149285
  const skipSetupUpload = nonInteractive || shouldResume && initState?.steps.setupUploaded;
149245
149286
  const skipCodexApply = nonInteractive || shouldResume && initState?.steps.codexApplied;
149287
+ const skipCodexCliEnsure = skipCodexApply || shouldResume && initState?.steps.codexCliEnsured;
149246
149288
  let approvedPlan = null;
149247
149289
  const setupTempDir = await import_promises27.default.mkdtemp(
149248
149290
  import_node_path25.default.join(import_node_os11.default.tmpdir(), "devbox-setup-")
@@ -150222,6 +150264,9 @@ var init_init = __esm({
150222
150264
  "Skipping SSH auth setup. Configure git credentials for this repo manually before pulling or pushing."
150223
150265
  );
150224
150266
  }
150267
+ await updateInitState({
150268
+ steps: { sshAuthConfigured: true }
150269
+ });
150225
150270
  activeOrigin = "";
150226
150271
  } else {
150227
150272
  await runInitStep({
@@ -150453,6 +150498,30 @@ var init_init = __esm({
150453
150498
  });
150454
150499
  await updateInitState({ steps: { setupArtifactsStaged: true } });
150455
150500
  }
150501
+ if (!skipCodexCliEnsure) {
150502
+ await runInitStep({
150503
+ enabled: progressEnabled,
150504
+ title: "Ensuring Codex CLI",
150505
+ fn: async ({ status, fail }) => {
150506
+ try {
150507
+ await retryInitStep({
150508
+ status,
150509
+ title: "Ensuring Codex CLI",
150510
+ fn: async () => await ensureRemoteCodexInstalled(client, canonical)
150511
+ });
150512
+ await updateInitState({ steps: { codexCliEnsured: true } });
150513
+ } catch (error2) {
150514
+ logger7.warn("codex_cli_ensure_failed", {
150515
+ box: canonical,
150516
+ fingerprint,
150517
+ error: error2 instanceof Error ? error2.message : String(error2)
150518
+ });
150519
+ fail("Ensuring Codex CLI (failed)");
150520
+ throw error2;
150521
+ }
150522
+ }
150523
+ });
150524
+ }
150456
150525
  if (!skipCodexApply) {
150457
150526
  await runInitStep({
150458
150527
  enabled: progressEnabled,
@@ -153850,7 +153919,7 @@ var init_qr = __esm({
153850
153919
  });
153851
153920
 
153852
153921
  // src/devbox/commands/setup.ts
153853
- var import_node_crypto11, import_promises31, trim, normalizeSiteUrl, resolveSiteUrl, MOBILE_DOWNLOAD_LINK, parseSetupArgs, promptForValue, splitQrLines, printMobileDownloadQr, listSprites2, runSetup;
153922
+ var import_node_crypto11, import_promises31, trim, normalizeSiteUrl, resolveSiteUrl, MOBILE_DOWNLOAD_LINK, parseSetupArgs, promptForValue, splitQrLines, printMobileDownloadQr, printFirstSetupCompleteMessage, probeSpritesAccess, runSetup;
153854
153923
  var init_setup = __esm({
153855
153924
  "src/devbox/commands/setup.ts"() {
153856
153925
  "use strict";
@@ -153926,6 +153995,9 @@ var init_setup = __esm({
153926
153995
  }
153927
153996
  throw new Error(`Unknown setup flag: ${arg}`);
153928
153997
  }
153998
+ if (parsed.org && !parsed.token) {
153999
+ throw new Error("--org requires --token or --sprite-token");
154000
+ }
153929
154001
  return parsed;
153930
154002
  };
153931
154003
  promptForValue = async (label) => {
@@ -153952,7 +154024,19 @@ var init_setup = __esm({
153952
154024
  }
153953
154025
  console.log("");
153954
154026
  };
153955
- listSprites2 = async (apiBaseUrl, token) => {
154027
+ printFirstSetupCompleteMessage = () => {
154028
+ const isTty = process.stdout.isTTY;
154029
+ const heading = isTty ? `${colors.style("boxes.dev", ["bold", "cyan"])} ${colors.style(
154030
+ "setup complete!",
154031
+ ["bold", "green"]
154032
+ )}` : "boxes.dev setup complete!";
154033
+ const nextStep = isTty ? `Now run ${colors.style("`dvb init`", ["bold", "cyan"])} at the root of your project's git repo to get it running on a devbox.` : "Now run `dvb init` at the root of your project's git repo to get it running on a devbox.";
154034
+ console.log("");
154035
+ console.log(heading);
154036
+ console.log("");
154037
+ console.log(nextStep);
154038
+ };
154039
+ probeSpritesAccess = async (apiBaseUrl, token) => {
153956
154040
  const requestId = (0, import_node_crypto11.randomUUID)();
153957
154041
  const url = new URL("/v1/sprites", apiBaseUrl);
153958
154042
  url.searchParams.set("max_results", "1");
@@ -153977,7 +154061,9 @@ var init_setup = __esm({
153977
154061
  const payload = await response.json();
153978
154062
  const orgs = /* @__PURE__ */ new Set();
153979
154063
  for (const sprite of payload.sprites ?? []) {
153980
- if (sprite.org_slug) orgs.add(sprite.org_slug);
154064
+ if (typeof sprite.org_slug === "string" && sprite.org_slug.length > 0) {
154065
+ orgs.add(sprite.org_slug);
154066
+ }
153981
154067
  }
153982
154068
  return { orgs: [...orgs] };
153983
154069
  };
@@ -153990,6 +154076,7 @@ var init_setup = __esm({
153990
154076
  const homeDir = process.env.HOME;
153991
154077
  const configOptions = homeDir ? { homeDir } : void 0;
153992
154078
  const existingConfig = await loadConfig(configOptions);
154079
+ const isFirstSetup = existingConfig === null;
153993
154080
  const storeOptions = homeDir ? { homeDir } : void 0;
153994
154081
  const store = await createSecretStore(void 0, storeOptions);
153995
154082
  const apiBaseUrl = parsed.apiBaseUrl ?? resolveSpritesApiUrl(existingConfig);
@@ -154000,19 +154087,21 @@ var init_setup = __esm({
154000
154087
  );
154001
154088
  const token = tokenResult.token;
154002
154089
  const tokenSource = tokenResult.source;
154003
- let org = parsed.org ?? existingConfig?.org;
154090
+ let org = tokenSource === "flag" ? parsed.org ?? existingConfig?.org : void 0;
154004
154091
  if (parsed.verify) {
154005
154092
  status.stage("Verifying token");
154006
- const { orgs } = await listSprites2(apiBaseUrl, token);
154007
- if (!org && orgs.length === 1) {
154008
- org = orgs[0];
154009
- } else if (!org && orgs.length > 1) {
154010
- status.stop();
154011
- org = await promptForValue("Sprites org slug");
154012
- } else if (!org && orgs.length === 0) {
154013
- status.stop();
154014
- org = await promptForValue("Sprites org slug (optional)");
154015
- if (org.length === 0) org = void 0;
154093
+ const { orgs } = await probeSpritesAccess(apiBaseUrl, token);
154094
+ if (tokenSource === "flag") {
154095
+ if (!org && orgs.length === 1) {
154096
+ org = orgs[0];
154097
+ } else if (!org && orgs.length > 1) {
154098
+ status.stop();
154099
+ org = await promptForValue("Sprites org slug");
154100
+ } else if (!org && orgs.length === 0) {
154101
+ status.stop();
154102
+ org = await promptForValue("Sprites org slug (optional)");
154103
+ if (org.length === 0) org = void 0;
154104
+ }
154016
154105
  }
154017
154106
  }
154018
154107
  status.stage("Saving config");
@@ -154022,7 +154111,7 @@ var init_setup = __esm({
154022
154111
  tokenStore: store.kind,
154023
154112
  tokenUpdatedAt: (/* @__PURE__ */ new Date()).toISOString(),
154024
154113
  lastSetupAt: (/* @__PURE__ */ new Date()).toISOString(),
154025
- ...org ? { org } : {}
154114
+ ...tokenSource === "flag" && org ? { org } : {}
154026
154115
  };
154027
154116
  await saveConfig(config3, configOptions);
154028
154117
  status.stage("Starting dvbd");
@@ -154050,7 +154139,9 @@ var init_setup = __esm({
154050
154139
  }
154051
154140
  console.log(`config: ${resolveConfigPath(homeDir)}`);
154052
154141
  console.log(`secrets: ${resolveSecretsPath(homeDir)}`);
154053
- if (org) console.log(`org: ${org}`);
154142
+ if (tokenSource === "flag" && org) {
154143
+ console.log(`org: ${org}`);
154144
+ }
154054
154145
  console.log(`token store: ${store.kind}`);
154055
154146
  console.log(`token source: ${tokenSource}`);
154056
154147
  console.log(`daemon: pid ${daemon.pid}`);
@@ -154059,6 +154150,9 @@ var init_setup = __esm({
154059
154150
  printMobileDownloadQr();
154060
154151
  }
154061
154152
  await maybeOfferCompletionsInstall();
154153
+ if (isFirstSetup) {
154154
+ printFirstSetupCompleteMessage();
154155
+ }
154062
154156
  };
154063
154157
  try {
154064
154158
  await run2();
@@ -155681,4 +155775,4 @@ smol-toml/dist/index.js:
155681
155775
  */
155682
155776
  //# sourceMappingURL=dvb.cjs.map
155683
155777
 
155684
- //# debugId=486da035-b076-5714-9506-a1430602ff22
155778
+ //# debugId=cd199da5-5299-508f-a0e3-01c6aff7017e