@devdogsuga/backstage 0.1.7 → 0.1.8

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/README.md CHANGED
@@ -78,8 +78,7 @@ DevDogsUGA, as a `smoke` field on each app's entry in `workers.json`:
78
78
  "protectedPath": "/console/permissions",
79
79
  "protectedRedirectPrefix": "/auth"
80
80
  }
81
- },
82
- "apps/sandbox"
81
+ }
83
82
  ]
84
83
  ```
85
84
 
@@ -1,6 +1,6 @@
1
- import { A as YES, D as DRY_RUN, O as JSON_FLAG, j as createCatalog, k as SCOPES, v as noteRan, w as findRepoRoot } from "./telemetry-Bjoz29Hl.js";
2
- import { n as isDryRun } from "./dry-run-3IxPmCtW.js";
3
- import { o as unwrap } from "./ui-CdKo8mLw.js";
1
+ import { A as YES, D as DRY_RUN, O as JSON_FLAG, j as createCatalog, k as SCOPES, v as noteRan, w as findRepoRoot } from "./telemetry-Be_lbB5c.js";
2
+ import { n as isDryRun } from "./dry-run-CFCZUpjb.js";
3
+ import { o as unwrap } from "./ui-Bb69ZfVv.js";
4
4
  import { n as positionals } from "./args-Cjr_Iqts.js";
5
5
  import { t as EXPORTS } from "./queries-DeEwfe2c.js";
6
6
  import { r as qrCatalogOptions } from "./options-DCaqm8BI.js";
@@ -1099,7 +1099,6 @@ const deployCommand = {
1099
1099
  subcommands: [
1100
1100
  app("platform"),
1101
1101
  app("schedule-builder"),
1102
- app("sandbox"),
1103
1102
  {
1104
1103
  name: "write-env",
1105
1104
  summary: "Compose .env.<DEPLOY_ENV> from the GitHub environment.",
@@ -1,6 +1,6 @@
1
- import { C as discoverRepoRoot, p as isNonInteractive } from "./telemetry-Bjoz29Hl.js";
1
+ import { C as discoverRepoRoot, p as isNonInteractive } from "./telemetry-Be_lbB5c.js";
2
2
  import { t as nonEmpty } from "./connection-D3XsOE3S.js";
3
- import { a as explainError, i as explain, o as unwrap, t as UsageError } from "./ui-CdKo8mLw.js";
3
+ import { a as explainError, i as explain, o as unwrap, t as UsageError } from "./ui-Bb69ZfVv.js";
4
4
  import { t as EnvDocument } from "./document-DumoZXoO.js";
5
5
  import { resolve } from "node:path";
6
6
  import { confirm, log, text } from "@clack/prompts";
@@ -31,7 +31,7 @@ async function readProductionKey(key) {
31
31
  const value = nonEmpty(EnvDocument.parse(text).get(key));
32
32
  if (value) return value;
33
33
  } catch {}
34
- const { listSecrets, projectIdFor } = await import("./client-DwDGjalU.js");
34
+ const { listSecrets, projectIdFor } = await import("./client-A6pJcxSE.js");
35
35
  const secrets = await listSecrets(await projectIdFor(PRODUCTION_PROJECT));
36
36
  return nonEmpty(secrets.find((s) => s.key === key)?.value);
37
37
  }
@@ -1,13 +1,13 @@
1
- import { C as discoverRepoRoot, T as cliName, b as ownPackageDir, c as reportDevtoolsError, f as isNoEnv, l as reportDevtoolsFailure, n as captureDevtoolsError, o as initDevtoolsTelemetry, p as isNonInteractive, w as findRepoRoot, x as ownVersion } from "./telemetry-Bjoz29Hl.js";
2
- import { a as recordEnteredTier, f as helpPath, i as beginInvocation, l as dbPush, m as renderHelp, n as bareGroupStartPath, o as recordResolved, p as renderCommandList, r as runMenu, s as reproducibleCommand, t as catalog, u as dbPushDryRun } from "./catalog-BiXI0wyi.js";
3
- import { a as repoPeerUrl, n as loadEnv, r as loadEnvLoad, t as getEnvSync } from "./peers-B0KDkI6a.js";
1
+ import { C as discoverRepoRoot, T as cliName, b as ownPackageDir, c as reportDevtoolsError, f as isNoEnv, l as reportDevtoolsFailure, n as captureDevtoolsError, o as initDevtoolsTelemetry, p as isNonInteractive, w as findRepoRoot, x as ownVersion } from "./telemetry-Be_lbB5c.js";
2
+ import { a as recordEnteredTier, f as helpPath, i as beginInvocation, l as dbPush, m as renderHelp, n as bareGroupStartPath, o as recordResolved, p as renderCommandList, r as runMenu, s as reproducibleCommand, t as catalog, u as dbPushDryRun } from "./catalog-BWtUtxMF.js";
3
+ import { a as repoPeerUrl, n as loadEnv, r as loadEnvLoad, t as getEnvSync } from "./peers-u1zxe-Ub.js";
4
4
  import { t as nonEmpty } from "./connection-D3XsOE3S.js";
5
- import { a as wouldRunLine, n as isDryRun, t as dryRunKind } from "./dry-run-3IxPmCtW.js";
6
- import { a as explainError, i as explain, n as bail, o as unwrap, r as errorMessage } from "./ui-CdKo8mLw.js";
5
+ import { a as wouldRunLine, n as isDryRun, t as dryRunKind } from "./dry-run-CFCZUpjb.js";
6
+ import { a as explainError, i as explain, n as bail, o as unwrap, r as errorMessage } from "./ui-Bb69ZfVv.js";
7
7
  import { n as positionals, t as flagValue } from "./args-Cjr_Iqts.js";
8
8
  import { t as DONE } from "./dispatch-D048O65I.js";
9
9
  import { t as EnvDocument } from "./document-DumoZXoO.js";
10
- import { a as listSecrets$1, c as updateSecret, i as createSecret, o as projectIdFor, r as byKey, s as setExplicitAccessToken } from "./client-B_MY9kVI.js";
10
+ import { a as listSecrets$1, c as updateSecret, i as createSecret, o as projectIdFor, r as byKey, s as setExplicitAccessToken } from "./client-NuoKMQmV.js";
11
11
  import { register } from "node:module";
12
12
  import { pathToFileURL } from "node:url";
13
13
  import { appendFileSync, existsSync, mkdtempSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs";
@@ -249,16 +249,12 @@ async function importRepoTs(absolutePath) {
249
249
  * Most workspace packages declare nothing, so "no env.ts found" means
250
250
  * not-a-manifest rather than an error.
251
251
  *
252
- * ⚠️ `apps/sandbox` was once listed here as having no manifest ON PURPOSE, on
253
- * the grounds that a Worker reads bindings that arrive as a function argument
254
- * rather than `process.env`. That premise is still true and the conclusion
255
- * drawn from it was still wrong: a manifest is also the only thing that routes
256
- * a credential to a deployed environment and the only thing that tells
257
- * `env audit` a Worker secret is supposed to be there. Without one,
258
- * `SANDBOX_PROXY_TOKEN`, minted at deploy time and therefore in no Bitwarden
259
- * project by design, was reported as an orphan, i.e. as safe for the §3.6 prune
260
- * path to delete. `apps/sandbox/env.ts` exists now, and states that reasoning
261
- * at length.
252
+ * ⚠️ A Worker still needs a manifest, even though its bindings arrive as a
253
+ * function argument rather than `process.env`: a manifest is the only thing
254
+ * that routes a credential to a deployed environment and the only thing that
255
+ * tells `env audit` a Worker secret is supposed to be there. Without one, a
256
+ * minted secret (in no Bitwarden project by design) is reported as an orphan,
257
+ * i.e. as safe for the §3.6 prune path to delete.
262
258
  */
263
259
  /**
264
260
  * The single in-flight (or settled) load.
@@ -847,8 +843,7 @@ async function runPreflight(deps = {}) {
847
843
  * ## Minted keys are refused, not filled
848
844
  *
849
845
  * A `secrecy: "secret"` key `storableKeys()` excludes is "minted": signed at
850
- * deploy time rather than stored anywhere, which is what `SANDBOX_PROXY_TOKEN`
851
- * is declared as. This has no minter of its own — there is nothing in
846
+ * deploy time rather than stored anywhere. This has no minter of its own — there is nothing in
852
847
  * this repository that produces one — so a declared minted key is always a
853
848
  * hard failure here rather than a silent omission: a Worker that expects a
854
849
  * value substituted fails loudly at the file it never got, not at whatever
@@ -1661,8 +1656,7 @@ function renderWriteEnvReport(result) {
1661
1656
  * which leaves a Wrangler "config redirect" at `.wrangler/deploy/config.json`
1662
1657
  * pointing at the generated `dist/server/wrangler.json`; a bare `wrangler
1663
1658
  * deploy` from the app dir resolves through it with no `--config` needed.
1664
- * Sandbox (plain Worker) always used this shape, so all three apps share one
1665
- * deploy step.
1659
+ * Both apps share one deploy step.
1666
1660
  *
1667
1661
  * Steps (`write-env`, `preflight`, `plan`, `migrate`, `smoke`, `reconcile`,
1668
1662
  * `prune-monitors`) are individually addressable for jobs that run only one.
@@ -2738,9 +2732,9 @@ async function listWorkerSecrets(target) {
2738
2732
  *
2739
2733
  * The expected set is derived from the app's own manifest: every key it
2740
2734
  * declares with `secrecy: "secret"`. That deliberately includes the MINTED
2741
- * ones. `SANDBOX_PROXY_TOKEN` has no copy in Bitwarden or GitHub by design, and
2742
- * an audit that reasoned from stored copies alone would report the live proxy
2743
- * credential as safe to delete. (`env audit` had exactly that bug; see
2735
+ * ones. A minted key has no copy in Bitwarden or GitHub by design, and an
2736
+ * audit that reasoned from stored copies alone would report a live credential
2737
+ * as safe to delete. (`env audit` had exactly that bug; see
2744
2738
  * `EnvMeta.minted`.)
2745
2739
  *
2746
2740
  * ## Report always, prune almost never (security plan §3.6)
@@ -5386,12 +5380,12 @@ const HANDLERS = {
5386
5380
  },
5387
5381
  completions: handleCompletions,
5388
5382
  github: handleGithub,
5389
- graphics: async (rest) => (await import("./commands-Dv5TXjvb.js")).handleGraphics(rest),
5390
- qr: async (rest) => (await import("./commands-Sx1fDNNn.js")).handleQr(rest),
5391
- newsletter: async (rest) => (await import("./commands-D345F-Od.js")).handleNewsletter(rest),
5392
- creds: async (rest) => (await import("./commands-zPSnOGzH.js")).handleCreds(rest),
5393
- import: async (rest) => (await import("./commands-DzALVX5g.js")).handleImport(rest),
5394
- export: async (rest) => (await import("./commands-5Ou8xJw5.js")).handleExport(rest)
5383
+ graphics: async (rest) => (await import("./commands-CQ-vbNe9.js")).handleGraphics(rest),
5384
+ qr: async (rest) => (await import("./commands-DQYH_m6i.js")).handleQr(rest),
5385
+ newsletter: async (rest) => (await import("./commands-35rBJ1R0.js")).handleNewsletter(rest),
5386
+ creds: async (rest) => (await import("./commands-BF5eptEi.js")).handleCreds(rest),
5387
+ import: async (rest) => (await import("./commands-zApyD2Rk.js")).handleImport(rest),
5388
+ export: async (rest) => (await import("./commands-D4FcDQuh.js")).handleExport(rest)
5395
5389
  };
5396
5390
  /**
5397
5391
  * Names that were commands of the contributor CLI, refused with where they
@@ -0,0 +1,2 @@
1
+ import { a as listSecrets, o as projectIdFor } from "./client-NuoKMQmV.js";
2
+ export { listSecrets, projectIdFor };
@@ -1,8 +1,8 @@
1
- import { w as findRepoRoot } from "./telemetry-Bjoz29Hl.js";
2
- import { n as loadEnv } from "./peers-B0KDkI6a.js";
3
- import { o as unwrap } from "./ui-CdKo8mLw.js";
1
+ import { w as findRepoRoot } from "./telemetry-Be_lbB5c.js";
2
+ import { n as loadEnv } from "./peers-u1zxe-Ub.js";
3
+ import { o as unwrap } from "./ui-Bb69ZfVv.js";
4
4
  import { t as EnvDocument } from "./document-DumoZXoO.js";
5
- import { a as readTokenFromVault, o as saveTokenToVault, t as VAULT_ITEM_NAME } from "./vault-CsBC-1Mq.js";
5
+ import { a as readTokenFromVault, o as saveTokenToVault, t as VAULT_ITEM_NAME } from "./vault-DFV0zjbT.js";
6
6
  import { dirname, join, resolve } from "node:path";
7
7
  import { log, password, select, text } from "@clack/prompts";
8
8
  import { mkdir, readFile, writeFile } from "node:fs/promises";
@@ -1,5 +1,5 @@
1
- import { p as isNonInteractive } from "./telemetry-Bjoz29Hl.js";
2
- import { a as explainError, o as unwrap, r as errorMessage, t as UsageError } from "./ui-CdKo8mLw.js";
1
+ import { p as isNonInteractive } from "./telemetry-Be_lbB5c.js";
2
+ import { a as explainError, o as unwrap, r as errorMessage, t as UsageError } from "./ui-Bb69ZfVv.js";
3
3
  import { t as DONE } from "./dispatch-D048O65I.js";
4
4
  import { dirname, join, resolve } from "node:path";
5
5
  import { confirm, log, multiselect, spinner, text } from "@clack/prompts";
@@ -1,9 +1,9 @@
1
- import { C as discoverRepoRoot, p as isNonInteractive } from "./telemetry-Bjoz29Hl.js";
1
+ import { C as discoverRepoRoot, p as isNonInteractive } from "./telemetry-Be_lbB5c.js";
2
2
  import { t as nonEmpty } from "./connection-D3XsOE3S.js";
3
- import { a as explainError, i as explain, o as unwrap, r as errorMessage, t as UsageError } from "./ui-CdKo8mLw.js";
3
+ import { a as explainError, i as explain, o as unwrap, r as errorMessage, t as UsageError } from "./ui-Bb69ZfVv.js";
4
4
  import { t as DONE } from "./dispatch-D048O65I.js";
5
5
  import { t as EnvDocument } from "./document-DumoZXoO.js";
6
- import { i as readPasswordFromVault, n as bwArgs, r as openVault, s as bwCommand } from "./vault-CsBC-1Mq.js";
6
+ import { i as readPasswordFromVault, n as bwArgs, r as openVault, s as bwCommand } from "./vault-DFV0zjbT.js";
7
7
  import { resolve } from "node:path";
8
8
  import { confirm, log, multiselect, note, password, select, text } from "@clack/prompts";
9
9
  import { readFile } from "node:fs/promises";
@@ -632,7 +632,7 @@ async function readCheckoutDbUrl() {
632
632
  }
633
633
  }
634
634
  async function readSecretsManagerDbUrl() {
635
- const { listSecrets, projectIdFor } = await import("./client-DwDGjalU.js");
635
+ const { listSecrets, projectIdFor } = await import("./client-A6pJcxSE.js");
636
636
  const secrets = await listSecrets(await projectIdFor(PRODUCTION_PROJECT));
637
637
  return nonEmpty(secrets.find((s) => s.key === "DB_URL")?.value);
638
638
  }
@@ -1,5 +1,5 @@
1
- import { p as isNonInteractive } from "./telemetry-Bjoz29Hl.js";
2
- import { a as explainError, o as unwrap, r as errorMessage, t as UsageError } from "./ui-CdKo8mLw.js";
1
+ import { p as isNonInteractive } from "./telemetry-Be_lbB5c.js";
2
+ import { a as explainError, o as unwrap, r as errorMessage, t as UsageError } from "./ui-Bb69ZfVv.js";
3
3
  import { n as positionals } from "./args-Cjr_Iqts.js";
4
4
  import { t as DONE } from "./dispatch-D048O65I.js";
5
5
  import { dirname, relative, resolve } from "node:path";
@@ -1,9 +1,9 @@
1
- import { n as isDryRun } from "./dry-run-3IxPmCtW.js";
2
- import { o as unwrap, r as errorMessage, t as UsageError } from "./ui-CdKo8mLw.js";
1
+ import { n as isDryRun } from "./dry-run-CFCZUpjb.js";
2
+ import { o as unwrap, r as errorMessage, t as UsageError } from "./ui-Bb69ZfVv.js";
3
3
  import { t as DONE } from "./dispatch-D048O65I.js";
4
- import { a as reportFailure, c as connect, d as withConnection, i as readInputFile, n as confirmWrite, o as say, r as plural, s as ProductionError, t as canPrompt, u as requireProductionKey } from "./cli-Do2nWD7W.js";
5
- import { a as createAccounts, i as createAccountFor, n as accountFinder, r as accountsWith, t as parseCsv } from "./read-B-aJJewb.js";
6
- import { n as findMeetingsWith, r as pickMeeting, t as describeMeeting } from "./meetings-DfU867eV.js";
4
+ import { a as reportFailure, c as connect, d as withConnection, i as readInputFile, n as confirmWrite, o as say, r as plural, s as ProductionError, t as canPrompt, u as requireProductionKey } from "./cli-D6swhEN-.js";
5
+ import { a as createAccounts, i as createAccountFor, n as accountFinder, r as accountsWith, t as parseCsv } from "./read-BLyKoe4l.js";
6
+ import { n as findMeetingsWith, r as pickMeeting, t as describeMeeting } from "./meetings-CtBMT_25.js";
7
7
  import { text } from "@clack/prompts";
8
8
  import { parseArgs } from "node:util";
9
9
  //#region src/attendance/plan.ts
@@ -1,9 +1,9 @@
1
- import { n as isDryRun } from "./dry-run-3IxPmCtW.js";
2
- import { r as errorMessage, t as UsageError } from "./ui-CdKo8mLw.js";
1
+ import { n as isDryRun } from "./dry-run-CFCZUpjb.js";
2
+ import { r as errorMessage, t as UsageError } from "./ui-Bb69ZfVv.js";
3
3
  import { i as exportParams, n as EXPORT_KINDS, r as auditFilters, t as EXPORTS } from "./queries-DeEwfe2c.js";
4
4
  import { t as DONE } from "./dispatch-D048O65I.js";
5
- import { a as reportFailure, c as connect, l as dbError, o as say, r as plural, s as ProductionError, u as requireProductionKey } from "./cli-Do2nWD7W.js";
6
- import { i as parseBound, n as findMeetingsWith, r as pickMeeting, t as describeMeeting } from "./meetings-DfU867eV.js";
5
+ import { a as reportFailure, c as connect, l as dbError, o as say, r as plural, s as ProductionError, u as requireProductionKey } from "./cli-D6swhEN-.js";
6
+ import { i as parseBound, n as findMeetingsWith, r as pickMeeting, t as describeMeeting } from "./meetings-CtBMT_25.js";
7
7
  import { open, rm } from "node:fs/promises";
8
8
  import { execFile } from "node:child_process";
9
9
  import { parseArgs, promisify } from "node:util";
@@ -1,6 +1,6 @@
1
- import { p as isNonInteractive } from "./telemetry-Bjoz29Hl.js";
2
- import { n as isDryRun } from "./dry-run-3IxPmCtW.js";
3
- import { a as explainError, o as unwrap, t as UsageError } from "./ui-CdKo8mLw.js";
1
+ import { p as isNonInteractive } from "./telemetry-Be_lbB5c.js";
2
+ import { n as isDryRun } from "./dry-run-CFCZUpjb.js";
3
+ import { a as explainError, o as unwrap, t as UsageError } from "./ui-Bb69ZfVv.js";
4
4
  import { i as qrParseOptions, n as QR_FLAGS, t as QR_EXTRA_FLAGS } from "./options-DCaqm8BI.js";
5
5
  import { t as DONE } from "./dispatch-D048O65I.js";
6
6
  import { dirname, extname, relative, resolve } from "node:path";
@@ -1,8 +1,8 @@
1
- import { n as isDryRun } from "./dry-run-3IxPmCtW.js";
2
- import { r as errorMessage, t as UsageError } from "./ui-CdKo8mLw.js";
1
+ import { n as isDryRun } from "./dry-run-CFCZUpjb.js";
2
+ import { r as errorMessage, t as UsageError } from "./ui-Bb69ZfVv.js";
3
3
  import { t as DONE } from "./dispatch-D048O65I.js";
4
- import { a as reportFailure, d as withConnection, i as readInputFile, n as confirmWrite, o as say, r as plural, t as canPrompt, u as requireProductionKey } from "./cli-Do2nWD7W.js";
5
- import { a as createAccounts, i as createAccountFor, n as accountFinder, o as readAccounts, t as parseCsv } from "./read-B-aJJewb.js";
4
+ import { a as reportFailure, d as withConnection, i as readInputFile, n as confirmWrite, o as say, r as plural, t as canPrompt, u as requireProductionKey } from "./cli-D6swhEN-.js";
5
+ import { a as createAccounts, i as createAccountFor, n as accountFinder, o as readAccounts, t as parseCsv } from "./read-BLyKoe4l.js";
6
6
  import { parseArgs } from "node:util";
7
7
  //#region src/involvement/csv.ts
8
8
  /**
@@ -1,9 +1,9 @@
1
- import { i as explain } from "./ui-CdKo8mLw.js";
1
+ import { i as explain } from "./ui-Bb69ZfVv.js";
2
2
  //#region src/import/commands.ts
3
3
  const handleImport = async (rest) => {
4
4
  const [what, ...args] = rest;
5
- if (what === "involvement") return (await import("./commands-CLSxKz-l.js")).handleInvolvement(args);
6
- if (what === "attendance") return (await import("./commands-BQ2NIqub.js")).handleAttendance(args);
5
+ if (what === "involvement") return (await import("./commands-Dwr4_CSu.js")).handleInvolvement(args);
6
+ if (what === "attendance") return (await import("./commands-D-sNogNX.js")).handleAttendance(args);
7
7
  explain(what ? `Unknown import "${what}". Try involvement or attendance.` : "Name the import: involvement or attendance.", "");
8
8
  process.exitCode = 1;
9
9
  return null;
@@ -1,4 +1,4 @@
1
- import { T as cliName } from "./telemetry-Bjoz29Hl.js";
1
+ import { T as cliName } from "./telemetry-Be_lbB5c.js";
2
2
  //#region ../cli-core/src/dry-run.ts
3
3
  const DRY_RUN_FLAG = "--dry-run";
4
4
  /** Commands that forward everything after their name to another tool. */
package/dist/launch.js CHANGED
@@ -1,9 +1,9 @@
1
- import { C as discoverRepoRoot, E as setCliName, S as RepoNotFoundError, T as cliName, _ as installFailureLog, d as hasYes, g as stripTierFlag, h as stripNoEnvFlag, m as setNoEnv, n as captureDevtoolsError, o as initDevtoolsTelemetry, p as isNonInteractive, s as lastSentryEventId } from "./telemetry-Bjoz29Hl.js";
2
- import { c as setMenuEnvHook, d as formatCommand, f as helpPath, n as bareGroupStartPath, t as catalog } from "./catalog-BiXI0wyi.js";
3
- import { i as loadEnvSession, r as loadEnvLoad } from "./peers-B0KDkI6a.js";
1
+ import { C as discoverRepoRoot, E as setCliName, S as RepoNotFoundError, T as cliName, _ as installFailureLog, d as hasYes, g as stripTierFlag, h as stripNoEnvFlag, m as setNoEnv, n as captureDevtoolsError, o as initDevtoolsTelemetry, p as isNonInteractive, s as lastSentryEventId } from "./telemetry-Be_lbB5c.js";
2
+ import { c as setMenuEnvHook, d as formatCommand, f as helpPath, n as bareGroupStartPath, t as catalog } from "./catalog-BWtUtxMF.js";
3
+ import { i as loadEnvSession, r as loadEnvLoad } from "./peers-u1zxe-Ub.js";
4
4
  import { t as nonEmpty } from "./connection-D3XsOE3S.js";
5
- import { i as setDryRun, n as isDryRun, r as resolveDryRun } from "./dry-run-3IxPmCtW.js";
6
- import { o as unwrap, r as errorMessage } from "./ui-CdKo8mLw.js";
5
+ import { i as setDryRun, n as isDryRun, r as resolveDryRun } from "./dry-run-CFCZUpjb.js";
6
+ import { o as unwrap, r as errorMessage } from "./ui-Bb69ZfVv.js";
7
7
  import { confirm } from "@clack/prompts";
8
8
  //#region ../cli-core/src/pipes.ts
9
9
  /**
@@ -322,7 +322,7 @@ async function launchWith(argv, options) {
322
322
  */
323
323
  async function launch(argv) {
324
324
  await launchWith(argv, { dispatch: async (args) => {
325
- const { main } = await import("./cli-Cz8faASC.js");
325
+ const { main } = await import("./cli-J_avqnlu.js");
326
326
  await main(args);
327
327
  } });
328
328
  }
@@ -1,5 +1,5 @@
1
- import { t as UsageError } from "./ui-CdKo8mLw.js";
2
- import "./cli-Do2nWD7W.js";
1
+ import { t as UsageError } from "./ui-Bb69ZfVv.js";
2
+ import "./cli-D6swhEN-.js";
3
3
  //#region src/production/time.ts
4
4
  /**
5
5
  * Dates as officers type them. Meetings happen in Athens, so a bare
@@ -1,4 +1,4 @@
1
- import { S as RepoNotFoundError, w as findRepoRoot } from "./telemetry-Bjoz29Hl.js";
1
+ import { S as RepoNotFoundError, w as findRepoRoot } from "./telemetry-Be_lbB5c.js";
2
2
  import { createRequire } from "node:module";
3
3
  import { pathToFileURL } from "node:url";
4
4
  import { existsSync, readFileSync, readdirSync } from "node:fs";
@@ -1,5 +1,5 @@
1
- import { r as errorMessage } from "./ui-CdKo8mLw.js";
2
- import { d as withConnection, s as ProductionError } from "./cli-Do2nWD7W.js";
1
+ import { r as errorMessage } from "./ui-Bb69ZfVv.js";
2
+ import { d as withConnection, s as ProductionError } from "./cli-D6swhEN-.js";
3
3
  //#region src/production/accounts.ts
4
4
  /**
5
5
  * Production accounts: reading them, finding one by email, and creating the
@@ -438,8 +438,8 @@ function isNoEnv() {
438
438
  //#region ../cli-core/src/telemetry.ts
439
439
  /**
440
440
  * devtools' own Sentry wiring — the CLI is a consumer of
441
- * `@devdogsuga/telemetry` like `apps/platform`, `apps/schedule-builder`, and
442
- * `apps/sandbox`, but on `@sentry/node` rather than a framework SDK: a CLI
441
+ * `@devdogsuga/telemetry` like `apps/platform` and `apps/schedule-builder`,
442
+ * but on `@sentry/node` rather than a framework SDK: a CLI
443
443
  * process starts, runs one command, and exits, with none of a server's
444
444
  * request lifecycle for a framework integration to hook into.
445
445
  *
package/dist/telemetry.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as hasRealCaller, c as reportDevtoolsError, i as devtoolsTelemetryEnabled, l as reportDevtoolsFailure, n as captureDevtoolsError, o as initDevtoolsTelemetry, r as devtoolsEnvironment, s as lastSentryEventId, t as captureDevtoolsDeprecation, u as resolveDevtoolsDsn } from "./telemetry-Bjoz29Hl.js";
1
+ import { a as hasRealCaller, c as reportDevtoolsError, i as devtoolsTelemetryEnabled, l as reportDevtoolsFailure, n as captureDevtoolsError, o as initDevtoolsTelemetry, r as devtoolsEnvironment, s as lastSentryEventId, t as captureDevtoolsDeprecation, u as resolveDevtoolsDsn } from "./telemetry-Be_lbB5c.js";
2
2
  export { captureDevtoolsDeprecation, captureDevtoolsError, devtoolsEnvironment, devtoolsTelemetryEnabled, hasRealCaller, initDevtoolsTelemetry, lastSentryEventId, reportDevtoolsError, reportDevtoolsFailure, resolveDevtoolsDsn };
@@ -1,4 +1,4 @@
1
- import { c as reportDevtoolsError, p as isNonInteractive, y as suppressFailureLog } from "./telemetry-Bjoz29Hl.js";
1
+ import { c as reportDevtoolsError, p as isNonInteractive, y as suppressFailureLog } from "./telemetry-Be_lbB5c.js";
2
2
  import { cancel, isCancel, log, note } from "@clack/prompts";
3
3
  //#region ../cli-core/src/ui.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { o as unwrap } from "./ui-CdKo8mLw.js";
1
+ import { o as unwrap } from "./ui-Bb69ZfVv.js";
2
2
  import { createRequire } from "node:module";
3
3
  import { dirname, join } from "node:path";
4
4
  import { confirm, log, spinner } from "@clack/prompts";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devdogsuga/backstage",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Officer and production CLI for DevDogsUGA: deploys, env sync with Bitwarden and GitHub, the migration planner role, club graphics and QR codes, GitHub rulesets and settings, and the newsletter. Ships built JS; run it anywhere with `pnpm dlx @devdogsuga/backstage` (no checkout needed to start; commands that read a checkout say so).",
@@ -40,10 +40,10 @@
40
40
  "tsx": "^4.23.12",
41
41
  "typescript": "^6.0.3",
42
42
  "zod": "4.4.3",
43
- "@devdogsuga/brand": "0.1.5",
44
43
  "@devdogsuga/events": "0.1.5",
45
44
  "@devdogsuga/newsletter": "0.1.10",
46
- "@devdogsuga/telemetry": "0.1.3"
45
+ "@devdogsuga/brand": "0.1.5",
46
+ "@devdogsuga/telemetry": "0.1.4"
47
47
  },
48
48
  "peerDependencies": {
49
49
  "@devdogsuga/db": "*",
@@ -64,9 +64,9 @@
64
64
  "eslint": "^9.39.5",
65
65
  "tsdown": "^0.23.0",
66
66
  "vitest": "^4.1.11",
67
- "@devdogsuga/cli-core": "0.0.0",
68
- "@devdogsuga/db": "0.1.3",
69
67
  "@devdogsuga/config": "0.1.2",
68
+ "@devdogsuga/db": "0.1.3",
69
+ "@devdogsuga/cli-core": "0.0.0",
70
70
  "@devdogsuga/env": "0.1.5"
71
71
  },
72
72
  "scripts": {
@@ -1,2 +0,0 @@
1
- import { a as listSecrets, o as projectIdFor } from "./client-B_MY9kVI.js";
2
- export { listSecrets, projectIdFor };