@boxes-dev/dvb 1.0.59 → 1.0.60

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]="2abd239d-3084-5a69-b772-ab46c3dbd477")}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]="785204a7-1bc2-5318-801f-4ad682a364a7")}catch(e){}}();
4
4
 
5
5
  var __create = Object.create;
6
6
  var __defProp = Object.defineProperty;
@@ -88683,8 +88683,8 @@ var init_otel = __esm({
88683
88683
  return trimmed && trimmed.length > 0 ? trimmed : void 0;
88684
88684
  };
88685
88685
  readBuildMetadata = () => {
88686
- const rawPackageVersion = "1.0.59";
88687
- const rawGitSha = "9310fc020995a5ac4c4f9ee04ca291a3799a24c1";
88686
+ const rawPackageVersion = "1.0.60";
88687
+ const rawGitSha = "5d6099c6753665655e7ad622e1aa388d91ea0bf7";
88688
88688
  const packageVersion = typeof rawPackageVersion === "string" ? rawPackageVersion : void 0;
88689
88689
  const gitSha = typeof rawGitSha === "string" ? rawGitSha : void 0;
88690
88690
  return { packageVersion, gitSha };
@@ -120672,9 +120672,9 @@ var init_sentry = __esm({
120672
120672
  sentryEnabled = false;
120673
120673
  uncaughtExceptionMonitorInstalled = false;
120674
120674
  readBuildMetadata2 = () => {
120675
- const rawPackageVersion = "1.0.59";
120676
- const rawGitSha = "9310fc020995a5ac4c4f9ee04ca291a3799a24c1";
120677
- const rawSentryRelease = "boxes-dev-dvb@1.0.59+9310fc020995a5ac4c4f9ee04ca291a3799a24c1";
120675
+ const rawPackageVersion = "1.0.60";
120676
+ const rawGitSha = "5d6099c6753665655e7ad622e1aa388d91ea0bf7";
120677
+ const rawSentryRelease = "boxes-dev-dvb@1.0.60+5d6099c6753665655e7ad622e1aa388d91ea0bf7";
120678
120678
  const packageVersion = typeof rawPackageVersion === "string" ? rawPackageVersion : void 0;
120679
120679
  const gitSha = typeof rawGitSha === "string" ? rawGitSha : void 0;
120680
120680
  const sentryRelease = typeof rawSentryRelease === "string" ? rawSentryRelease : void 0;
@@ -189911,21 +189911,8 @@ var init_logger3 = __esm({
189911
189911
  }
189912
189912
  });
189913
189913
 
189914
- // src/devbox/ui/copyableUrl.ts
189915
- var showCopyableUrl;
189916
- var init_copyableUrl = __esm({
189917
- "src/devbox/ui/copyableUrl.ts"() {
189918
- "use strict";
189919
- init_dist5();
189920
- showCopyableUrl = (url, label) => {
189921
- R2.info(`${label}:`);
189922
- R2.message(url, { withGuide: false, spacing: 0 });
189923
- };
189924
- }
189925
- });
189926
-
189927
189914
  // src/devbox/controlPlane.ts
189928
- var import_node_http2, import_node_crypto6, import_node_child_process2, resolveControlPlaneUrl2, resolveConvexUrl2, openBrowser, escapeHtml, CALLBACK_LOGO_MARK, CALLBACK_FULL_LOGO, renderCallbackPage, requestJson2, startCallbackServer, getControlPlaneUrl, getConvexUrl, signInWithBrowser, spriteTokenGet, spriteTokenSet, spriteTokenClear, modalTokenGet, modalTokenSet, modalTokenClear, modalTokenResolvedGet2, modalDevboxUpsert, modalDevboxRemove, modalDevboxEnsureActive2, modalDevboxShellConnectionOpened, modalDevboxShellConnectionClosed, modalDevboxProxyConnectionOpened2, modalDevboxProxyConnectionClosed2, modalDevboxStatusesList, spriteDaemonReleaseGet, spriteDaemonTokenIssue, spriteDaemonSessionSummariesList, spriteDaemonSessionsList, helloViewerGet, withConvexClient, fetchSpriteTokenStatus, fetchResolvedModalCredentials2, fetchViewerIdentity, storeSpriteToken, clearSpriteToken, storeModalCredentials, clearModalCredentials, upsertModalDevboxLifecycle, ensureModalDevboxActive2, fetchSpriteDaemonRelease, issueSpriteDaemonToken, listSpriteDaemonSessionSummaries, listSpriteDaemonSessions, signOutControlPlane, refreshControlPlaneSession;
189915
+ var import_node_http2, import_node_crypto6, import_node_child_process2, resolveControlPlaneUrl2, resolveConvexUrl2, openBrowser, waitForAnyKeypress, escapeHtml, CALLBACK_LOGO_MARK, CALLBACK_FULL_LOGO, renderCallbackPage, requestJson2, startCallbackServer, getControlPlaneUrl, getConvexUrl, signInWithBrowser, spriteTokenGet, spriteTokenSet, spriteTokenClear, modalTokenGet, modalTokenSet, modalTokenClear, modalTokenResolvedGet2, modalDevboxUpsert, modalDevboxRemove, modalDevboxEnsureActive2, modalDevboxShellConnectionOpened, modalDevboxShellConnectionClosed, modalDevboxProxyConnectionOpened2, modalDevboxProxyConnectionClosed2, modalDevboxStatusesList, spriteDaemonReleaseGet, spriteDaemonTokenIssue, spriteDaemonSessionSummariesList, spriteDaemonSessionsList, helloViewerGet, withConvexClient, fetchSpriteTokenStatus, fetchResolvedModalCredentials2, fetchViewerIdentity, storeSpriteToken, clearSpriteToken, storeModalCredentials, clearModalCredentials, upsertModalDevboxLifecycle, ensureModalDevboxActive2, fetchSpriteDaemonRelease, issueSpriteDaemonToken, listSpriteDaemonSessionSummaries, listSpriteDaemonSessions, signOutControlPlane, refreshControlPlaneSession;
189929
189916
  var init_controlPlane = __esm({
189930
189917
  "src/devbox/controlPlane.ts"() {
189931
189918
  "use strict";
@@ -189936,7 +189923,6 @@ var init_controlPlane = __esm({
189936
189923
  init_index_node();
189937
189924
  init_server();
189938
189925
  init_logger3();
189939
- init_copyableUrl();
189940
189926
  resolveControlPlaneUrl2 = () => {
189941
189927
  const envOverride = process.env.DEVBOX_CONTROL_PLANE_URL ?? process.env.CONVEX_SITE_URL;
189942
189928
  if (envOverride && envOverride.trim().length > 0) {
@@ -189980,6 +189966,70 @@ var init_controlPlane = __esm({
189980
189966
  return false;
189981
189967
  }
189982
189968
  };
189969
+ waitForAnyKeypress = () => {
189970
+ const stdin = process.stdin;
189971
+ const wasPaused = stdin.isPaused();
189972
+ let stopRawMode = null;
189973
+ let stopped = false;
189974
+ let resolvePromise = null;
189975
+ let rejectPromise = null;
189976
+ const stop = () => {
189977
+ if (stopped) return;
189978
+ stopped = true;
189979
+ stdin.off("data", onData);
189980
+ stdin.off("error", onError);
189981
+ stopRawMode?.();
189982
+ if (wasPaused) {
189983
+ stdin.pause();
189984
+ }
189985
+ };
189986
+ const settle = (value) => {
189987
+ if (stopped) return;
189988
+ const resolve2 = resolvePromise;
189989
+ stop();
189990
+ resolve2?.(value);
189991
+ };
189992
+ const reject = (error2) => {
189993
+ if (stopped) return;
189994
+ const rejectFn = rejectPromise;
189995
+ stop();
189996
+ rejectFn?.(error2);
189997
+ };
189998
+ const onData = (chunk) => {
189999
+ const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
190000
+ if (buffer.includes(3)) {
190001
+ settle("cancel");
190002
+ return;
190003
+ }
190004
+ settle("open_browser");
190005
+ };
190006
+ const onError = (error2) => {
190007
+ reject(error2);
190008
+ };
190009
+ const promise = new Promise((resolve2, reject2) => {
190010
+ resolvePromise = resolve2;
190011
+ rejectPromise = reject2;
190012
+ });
190013
+ if (stdin.isTTY) {
190014
+ const wasRaw = stdin.isRaw;
190015
+ if (wasRaw !== true) {
190016
+ try {
190017
+ stdin.setRawMode(true);
190018
+ stopRawMode = () => {
190019
+ try {
190020
+ stdin.setRawMode(false);
190021
+ } catch {
190022
+ }
190023
+ };
190024
+ } catch {
190025
+ }
190026
+ }
190027
+ }
190028
+ stdin.resume();
190029
+ stdin.on("data", onData);
190030
+ stdin.on("error", onError);
190031
+ return { promise, stop };
190032
+ };
189983
190033
  escapeHtml = (value) => value.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll('"', "&quot;").replaceAll("'", "&#39;");
189984
190034
  CALLBACK_LOGO_MARK = `<svg viewBox="0 0 48 48" aria-hidden="true" focusable="false">
189985
190035
  <rect x="1.5" y="1.5" width="45" height="45" rx="8" fill="#111" />
@@ -190246,34 +190296,50 @@ var init_controlPlane = __esm({
190246
190296
  if (!start.redirect || !start.verifier) {
190247
190297
  throw new Error("Control plane sign-in failed to start.");
190248
190298
  }
190249
- showCopyableUrl(start.redirect, "Login URL");
190250
- const action = await qt({
190251
- message: "Open the login URL in your browser?",
190252
- options: [
190253
- { value: "open", label: "Open in browser" },
190254
- { value: "skip", label: "Skip" }
190255
- ],
190256
- initialValue: "open"
190257
- });
190258
- if (Ct(action)) {
190259
- Pt("Sign-in canceled.");
190260
- throw new Error("Control plane sign-in cancelled.");
190261
- }
190262
- if (action === "open") {
190263
- const opened = openBrowser(start.redirect);
190264
- if (!opened) {
190265
- R2.warn("Unable to open the browser automatically.");
190266
- R2.info("Open the URL above to continue login.");
190267
- }
190268
- } else {
190269
- R2.warn(
190270
- "Skipping browser open. Open the URL above to continue login."
190299
+ R2.info("Sign in to boxes.dev to continue. Log in here:");
190300
+ R2.message(start.redirect, { withGuide: false, spacing: 0 });
190301
+ const codePromise = callback.waitForCode();
190302
+ const keypress = waitForAnyKeypress();
190303
+ const listeningSpinner = Ie();
190304
+ let code2 = "";
190305
+ try {
190306
+ listeningSpinner.start(
190307
+ "Listening for login. Press any key to open in your browser..."
190271
190308
  );
190309
+ const firstResult = await Promise.race([
190310
+ codePromise.then((value) => ({ type: "code", value })),
190311
+ keypress.promise.then((value) => ({
190312
+ type: "keypress",
190313
+ value
190314
+ }))
190315
+ ]);
190316
+ listeningSpinner.clear();
190317
+ if (firstResult.type === "code") {
190318
+ code2 = firstResult.value;
190319
+ } else {
190320
+ if (firstResult.value === "cancel") {
190321
+ Pt("Sign-in canceled.");
190322
+ throw new Error("Control plane sign-in cancelled.");
190323
+ }
190324
+ const opened = openBrowser(start.redirect);
190325
+ if (!opened) {
190326
+ R2.warn("Unable to open the browser automatically.");
190327
+ R2.info("Open the URL above to continue login.");
190328
+ }
190329
+ const waitSpinner = Ie();
190330
+ waitSpinner.start(
190331
+ "Listening for login. Complete sign-in in your browser..."
190332
+ );
190333
+ try {
190334
+ code2 = await codePromise;
190335
+ } finally {
190336
+ waitSpinner.clear();
190337
+ }
190338
+ }
190339
+ } finally {
190340
+ listeningSpinner.clear();
190341
+ keypress.stop();
190272
190342
  }
190273
- R2.step(
190274
- "Waiting for browser login. Complete sign-in in your browser."
190275
- );
190276
- const code2 = await callback.waitForCode();
190277
190343
  const finish = await requestJson2(
190278
190344
  baseUrl,
190279
190345
  "POST",
@@ -190286,6 +190352,18 @@ var init_controlPlane = __esm({
190286
190352
  if (!finish.token) {
190287
190353
  throw new Error("Control plane sign-in failed to complete.");
190288
190354
  }
190355
+ const viewer = await fetchViewerIdentity(finish.token).catch((error2) => {
190356
+ logger7.warn("control_plane_viewer_identity_failed", {
190357
+ error: error2 instanceof Error ? error2.message : String(error2)
190358
+ });
190359
+ return null;
190360
+ });
190361
+ const email = typeof viewer?.email === "string" ? viewer.email.trim() : "";
190362
+ if (email.length > 0) {
190363
+ R2.success(`Signed in as ${email}.`);
190364
+ } else {
190365
+ R2.success("Signed in.");
190366
+ }
190289
190367
  return finish.refresh_token ? { token: finish.token, refreshToken: finish.refresh_token } : { token: finish.token };
190290
190368
  } finally {
190291
190369
  await callback.close();
@@ -190966,13 +191044,14 @@ var init_daemonClient = __esm({
190966
191044
  });
190967
191045
 
190968
191046
  // src/devbox/auth.ts
190969
- var TOKEN_REFRESH_BUFFER_MS2, decodeJwtPayload4, parseTokenExpiresAt2, shouldRefreshToken2, isUnauthorizedError2, clearControlPlaneSession2, updateControlPlaneSession, refreshControlPlaneToken, ensureControlPlaneToken, ensureSpritesToken;
191047
+ var CONTROL_PLANE_INTERACTIVE_SIGNIN_STAGE, TOKEN_REFRESH_BUFFER_MS2, decodeJwtPayload4, parseTokenExpiresAt2, shouldRefreshToken2, isUnauthorizedError2, clearControlPlaneSession2, updateControlPlaneSession, refreshControlPlaneToken, ensureControlPlaneToken, ensureSpritesToken;
190970
191048
  var init_auth = __esm({
190971
191049
  "src/devbox/auth.ts"() {
190972
191050
  "use strict";
190973
191051
  init_src();
190974
191052
  init_logger3();
190975
191053
  init_controlPlane();
191054
+ CONTROL_PLANE_INTERACTIVE_SIGNIN_STAGE = "Opening browser to sign in";
190976
191055
  TOKEN_REFRESH_BUFFER_MS2 = 5 * 60 * 1e3;
190977
191056
  decodeJwtPayload4 = (token) => {
190978
191057
  const parts = token.split(".");
@@ -191070,7 +191149,7 @@ var init_auth = __esm({
191070
191149
  if (!process.stdin.isTTY) {
191071
191150
  return null;
191072
191151
  }
191073
- stage?.("Opening browser to sign in");
191152
+ stage?.(CONTROL_PLANE_INTERACTIVE_SIGNIN_STAGE);
191074
191153
  const tokens = await signInWithBrowser();
191075
191154
  await updateControlPlaneSession(store, tokens.token, tokens.refreshToken);
191076
191155
  logger7.info("control_plane_signed_in");
@@ -204003,6 +204082,19 @@ ${combined}` : "";
204003
204082
  }
204004
204083
  });
204005
204084
 
204085
+ // src/devbox/ui/copyableUrl.ts
204086
+ var showCopyableUrl;
204087
+ var init_copyableUrl = __esm({
204088
+ "src/devbox/ui/copyableUrl.ts"() {
204089
+ "use strict";
204090
+ init_dist5();
204091
+ showCopyableUrl = (url, label) => {
204092
+ R2.info(`${label}:`);
204093
+ R2.message(url, { withGuide: false, spacing: 0 });
204094
+ };
204095
+ }
204096
+ });
204097
+
204006
204098
  // src/devbox/commands/init/codex/template.ts
204007
204099
  var renderTemplate;
204008
204100
  var init_template = __esm({
@@ -211246,7 +211338,7 @@ Tip: re-run with DEVBOX_LOG_LEVEL=info to see Sprite exec logs on stderr.`
211246
211338
  });
211247
211339
 
211248
211340
  // src/devbox/commands/list.ts
211249
- var buildListColumns, parseListArgs, resolveBoxStateStyle, resolveBoxStatus, resolveSetupCell, fetchSpritesRemoteStates, resolveRemoteStates, runList;
211341
+ var buildListColumns, parseListArgs, resolveBoxStateStyle, resolveBoxStatus, resolveSetupCell, resolveSpritesLookupAlias, fetchSpritesRemoteStates, resolveRemoteStates, runList;
211250
211342
  var init_list = __esm({
211251
211343
  "src/devbox/commands/list.ts"() {
211252
211344
  "use strict";
@@ -211323,17 +211415,32 @@ var init_list = __esm({
211323
211415
  }
211324
211416
  return makeCell("-", colors.dim);
211325
211417
  };
211418
+ resolveSpritesLookupAlias = (box) => {
211419
+ const alias = box.alias?.trim();
211420
+ return alias ? alias : null;
211421
+ };
211326
211422
  fetchSpritesRemoteStates = async (client2, boxes) => {
211327
211423
  const states = /* @__PURE__ */ new Map();
211328
- const canonicals = Array.from(
211329
- new Set(
211330
- boxes.filter((box) => box.computeProvider !== "modal").map((box) => box.canonical).filter((canonical) => canonical.trim().length > 0)
211331
- )
211332
- );
211424
+ const canonicalLookups = /* @__PURE__ */ new Map();
211425
+ for (const box of boxes) {
211426
+ if (box.computeProvider === "modal") continue;
211427
+ const canonical = box.canonical.trim();
211428
+ if (!canonical || canonicalLookups.has(canonical)) continue;
211429
+ const lookupAlias = resolveSpritesLookupAlias(box);
211430
+ if (!lookupAlias) {
211431
+ logger7.warn("sprites_status_lookup_missing_alias", { canonical });
211432
+ states.set(canonical, {
211433
+ remote: "error",
211434
+ note: "alias metadata missing"
211435
+ });
211436
+ continue;
211437
+ }
211438
+ canonicalLookups.set(canonical, lookupAlias);
211439
+ }
211333
211440
  await Promise.all(
211334
- canonicals.map(async (canonical) => {
211441
+ [...canonicalLookups.entries()].map(async ([canonical, lookupName]) => {
211335
211442
  try {
211336
- const sprite = await client2.getSprite(canonical);
211443
+ const sprite = await client2.getSprite(lookupName);
211337
211444
  if (!sprite) {
211338
211445
  states.set(canonical, { remote: "missing" });
211339
211446
  return;
@@ -211345,6 +211452,7 @@ var init_list = __esm({
211345
211452
  } catch (error2) {
211346
211453
  logger7.warn("sprites_status_lookup_failed", {
211347
211454
  canonical,
211455
+ lookupName,
211348
211456
  error: String(error2)
211349
211457
  });
211350
211458
  states.set(canonical, { remote: "error" });
@@ -215124,9 +215232,16 @@ var init_setup = __esm({
215124
215232
  const store = await createSecretStore(void 0, storeOptions);
215125
215233
  const apiBaseUrl = resolveSpritesApiUrl(existingConfig);
215126
215234
  const requireControlPlaneToken2 = parsed.spriteAuthMode ? true : parsed.verify;
215235
+ const authStage = (message) => {
215236
+ if (message === CONTROL_PLANE_INTERACTIVE_SIGNIN_STAGE) {
215237
+ status.stop();
215238
+ return;
215239
+ }
215240
+ status.stage(message);
215241
+ };
215127
215242
  const tokenResult = await ensureSpritesToken(
215128
215243
  store,
215129
- (message) => status.stage(message),
215244
+ authStage,
215130
215245
  parsed.token ? {
215131
215246
  tokenOverride: parsed.token,
215132
215247
  requireControlPlaneToken: requireControlPlaneToken2,
@@ -216968,4 +217083,4 @@ smol-toml/dist/index.js:
216968
217083
  */
216969
217084
  //# sourceMappingURL=dvb.cjs.map
216970
217085
 
216971
- //# debugId=2abd239d-3084-5a69-b772-ab46c3dbd477
217086
+ //# debugId=785204a7-1bc2-5318-801f-4ad682a364a7