void 0.20.0 → 0.20.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/{auth-cmd-CYVhSNFy.mjs → auth-cmd-CAH62yDU.mjs} +2 -2
  2. package/dist/{build-cmd-CkVD1uOh.mjs → build-cmd-CJvZvPQO.mjs} +1 -1
  3. package/dist/{cache-QcUfR-ff.mjs → cache-BlNeQjuP.mjs} +1 -1
  4. package/dist/{cancel-deploy-DsvWKFTe.mjs → cancel-deploy-CmlAZ9P6.mjs} +1 -1
  5. package/dist/cli/cli.mjs +164 -33
  6. package/dist/{client-CyCHWSO_.mjs → client-Clirrol3.mjs} +59 -0
  7. package/dist/{cloudflare-auth-DRkGe7-s.mjs → cloudflare-auth-B1QtTO1b.mjs} +51 -4
  8. package/dist/{cloudflare-cmd-D3ME2GAe.mjs → cloudflare-cmd-B6_OZx2V.mjs} +1 -1
  9. package/dist/{cloudflare-connect-BivMefMA.mjs → cloudflare-connect-j5D4hhrG.mjs} +1 -1
  10. package/dist/{connect-D9Yr-T5f.mjs → connect-C04Wdy_h.mjs} +4 -4
  11. package/dist/{create-project-DMV-csEm.mjs → create-project-ChGZ1DFd.mjs} +1 -1
  12. package/dist/{db-BxoUWL0F.mjs → db-D2d_mUsB.mjs} +31 -21
  13. package/dist/{delete-iJOqxBz1.mjs → delete-D8GigDk8.mjs} +1 -1
  14. package/dist/{deploy-CcDoeBIf.mjs → deploy-iXZ3F0N6.mjs} +20 -22
  15. package/dist/{domain-gu_iaHmn.mjs → domain-B1VmoSr0.mjs} +1 -1
  16. package/dist/email-uKyQYUVY.mjs +1016 -0
  17. package/dist/{env-DmU2To0C.mjs → env-BcQzYgoG.mjs} +1 -1
  18. package/dist/{gen-BKw6qHIg.mjs → gen-DI2YwdBM.mjs} +1 -1
  19. package/dist/generate-RTK8_kK1.mjs +47 -0
  20. package/dist/{github-cmd-DJS5Ab-H.mjs → github-cmd-xItS5Zwf.mjs} +1 -1
  21. package/dist/{inbound-CNKxb3FY.mjs → inbound-2d0zi2yS.mjs} +13 -1
  22. package/dist/{inbound-BJ70in1n.d.mts → inbound-afAcWeQ9.d.mts} +9 -0
  23. package/dist/index.mjs +20 -18
  24. package/dist/{init-Dx5cgKqK.mjs → init-BD-9THgn.mjs} +5 -5
  25. package/dist/{link-D_rm5sRH.mjs → link-RMdgjF1v.mjs} +2 -2
  26. package/dist/{list-M8XShti7.mjs → list-3F52R_yO.mjs} +1 -1
  27. package/dist/{local-d1-BE8KBbMy.mjs → local-d1-D2I6Ox5F.mjs} +1 -1
  28. package/dist/{login-C8-UuLnp.mjs → login-pV69H-ZO.mjs} +1 -1
  29. package/dist/{logs-DwFU7dMW.mjs → logs-DFHHD6wE.mjs} +1 -1
  30. package/dist/{node-BkaXcpAc.mjs → node-Dk3H2jmU.mjs} +1 -1
  31. package/dist/{platform-cmd-BEOVv1PN.mjs → platform-cmd-DxJ2FRwR.mjs} +1 -1
  32. package/dist/{platform-domain-BszUfiS8.mjs → platform-domain-ChvbJkdy.mjs} +2 -2
  33. package/dist/{platform-lifecycle-CjSr6xf0.mjs → platform-lifecycle-DN4MzJF_.mjs} +6 -6
  34. package/dist/{platform-management-W30iCaTL.mjs → platform-management-Db2PXw0B.mjs} +1 -1
  35. package/dist/{platform-recovery-pHHv4ZSg.mjs → platform-recovery-C_YO-tIs.mjs} +2 -2
  36. package/dist/{project-cmd-DCpk1cDt.mjs → project-cmd-Mo0V9yKS.mjs} +10 -10
  37. package/dist/{requests-Dn8Vheh1.mjs → requests-BcKOVpRg.mjs} +1 -1
  38. package/dist/{rollback-CtlPXEBi.mjs → rollback-Bx85-0xh.mjs} +1 -1
  39. package/dist/{runner-mysql-CgRFl3s6.mjs → runner-mysql-7BPUNGmL.mjs} +1 -1
  40. package/dist/{runner-pg-DCkWPsWS.mjs → runner-pg-BkEza-dX.mjs} +1 -1
  41. package/dist/runtime/email/testing.d.mts +1 -1
  42. package/dist/runtime/email/testing.mjs +1 -1
  43. package/dist/runtime/email.d.mts +1 -1
  44. package/dist/runtime/email.mjs +1 -1
  45. package/dist/{secret-BqTxGqki.mjs → secret-ByhJ9AMl.mjs} +1 -1
  46. package/dist/sqlite-validation-BzKMWnO4.mjs +25 -0
  47. package/dist/{validate-Bihr8WBi.mjs → validate-tBBN_dXH.mjs} +1 -0
  48. package/package.json +7 -7
  49. package/skills/void/docs/guide/email.md +34 -3
  50. package/skills/void/docs/guide/platform-development.md +29 -0
  51. package/skills/void/docs/reference/cli.md +51 -0
  52. package/dist/email-r6DHJyAB.mjs +0 -262
@@ -3,7 +3,7 @@ import { D as log, E as intro, O as note, k as outro, r as cliTitle } from "./ou
3
3
  import { b as readDeploymentPlatform, c as getToken, x as readProjectConfig } from "./auth-W9WII-mN.mjs";
4
4
  import { r as generateEnvTypes, t as findEnvFile } from "./env-types-BNPhro-M.mjs";
5
5
  import { c as fetchRemoteSecretNames, l as formatEnvReport, p as validateProdEnv } from "./env-validation-ENpMy6Ez.mjs";
6
- import { n as PlatformClient } from "./client-CyCHWSO_.mjs";
6
+ import { n as PlatformClient } from "./client-Clirrol3.mjs";
7
7
  import { mkdirSync, writeFileSync } from "node:fs";
8
8
  //#region src/cli/env.ts
9
9
  async function runEnvCommand(root, args) {
@@ -3,7 +3,7 @@ import { C as cancel, D as log, E as intro, F as isCancel, j as select, k as out
3
3
  import { n as readProjectPaths } from "./project-paths-SK8nMHPp.mjs";
4
4
  import { c as getDatabaseDialect, f as readConfig } from "./config-BQFq7QvD.mjs";
5
5
  import { n as ensureProjectTsconfig } from "./project-tsconfig-Ql2XsSQp.mjs";
6
- import { c as collectMigrations, n as listDrizzleArtifacts, t as assertJournalCoherence, u as readJournal } from "./validate-Bihr8WBi.mjs";
6
+ import { c as collectMigrations, n as listDrizzleArtifacts, t as assertJournalCoherence, u as readJournal } from "./validate-tBBN_dXH.mjs";
7
7
  import { n as writeDrizzleConfig } from "./config-NOG_U1aK.mjs";
8
8
  import { t as buildDrizzleKitSpawnEnv } from "./yarn-pnp-DxSInkzL.mjs";
9
9
  import { existsSync, mkdirSync, readFileSync, readdirSync, unlinkSync, writeFileSync } from "node:fs";
@@ -0,0 +1,47 @@
1
+ import { n as dirname, o as join } from "./dist-BrsS7cai.mjs";
2
+ import { c as collectMigrations } from "./validate-tBBN_dXH.mjs";
3
+ import { n as openMigrationValidationDatabase } from "./sqlite-validation-BzKMWnO4.mjs";
4
+ import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs";
5
+ //#region src/drizzle/generate.ts
6
+ function snapshotFiles(root) {
7
+ const files = /* @__PURE__ */ new Map();
8
+ if (existsSync(root)) {
9
+ for (const entry of readdirSync(root, {
10
+ recursive: true,
11
+ withFileTypes: true
12
+ })) if (entry.isFile()) {
13
+ const path = join(entry.parentPath, entry.name);
14
+ files.set(path, readFileSync(path));
15
+ }
16
+ }
17
+ return files;
18
+ }
19
+ /** Keep SQL and Drizzle's snapshot/journal together when generation fails validation. */
20
+ async function generateValidatedSqliteMigrations(migrationsDir, generate) {
21
+ try {
22
+ (await openMigrationValidationDatabase(collectMigrations(migrationsDir))).close();
23
+ } catch (cause) {
24
+ throw new Error(`${cause instanceof Error ? cause.message : String(cause)}\nRepair the unapplied migration before generating again. Drizzle diffs snapshots; rerunning generation does not repair existing SQL.`, { cause });
25
+ }
26
+ const existed = existsSync(migrationsDir);
27
+ const previous = snapshotFiles(migrationsDir);
28
+ try {
29
+ generate();
30
+ (await openMigrationValidationDatabase(collectMigrations(migrationsDir))).close();
31
+ } catch (cause) {
32
+ if (!existed) rmSync(migrationsDir, {
33
+ recursive: true,
34
+ force: true
35
+ });
36
+ else {
37
+ for (const path of snapshotFiles(migrationsDir).keys()) if (!previous.has(path)) rmSync(path);
38
+ for (const [path, contents] of previous) {
39
+ mkdirSync(dirname(path), { recursive: true });
40
+ writeFileSync(path, contents);
41
+ }
42
+ }
43
+ throw new Error(`${cause instanceof Error ? cause.message : String(cause)}\nMigration generation failed; previous SQL, snapshots and journal were restored. Review the schema change before retrying. For additive changes, use an additive migration rather than rebuilding existing tables.`, { cause });
44
+ }
45
+ }
46
+ //#endregion
47
+ export { generateValidatedSqliteMigrations };
@@ -1,6 +1,6 @@
1
1
  import { C as cancel, D as log, F as isCancel, N as text, c as import_picocolors, j as select, w as confirm } from "./output-tFQLLj26.mjs";
2
2
  import { c as getToken, d as openBrowser, i as createCodeVerifier, n as awaitBrowserCallback, r as createCodeChallenge, x as readProjectConfig } from "./auth-W9WII-mN.mjs";
3
- import { n as PlatformClient, o as parsePlatformErrorBody, t as PlatformApiError } from "./client-CyCHWSO_.mjs";
3
+ import { n as PlatformClient, o as parsePlatformErrorBody, t as PlatformApiError } from "./client-Clirrol3.mjs";
4
4
  import { r as resolveProjectBySlug, t as getRequestedProjectSlug } from "./resolve-project--Vxawf7z.mjs";
5
5
  import { t as collectGitDeployMetadata } from "./git-metadata-D-gurjzG.mjs";
6
6
  import { randomBytes } from "node:crypto";
@@ -75,6 +75,10 @@ function tryReadEmailDomain() {
75
75
  }
76
76
  return typeof raw === "string" && raw.length > 0 ? raw : void 0;
77
77
  }
78
+ function readRelayDomain(message) {
79
+ const raw = message.__voidRelayDomain;
80
+ return typeof raw === "string" && raw.length > 0 ? raw : void 0;
81
+ }
78
82
  /**
79
83
  * Identity helper that types the inbound email handler. Use as the default
80
84
  * export of `email/<address>.ts` or `email/_default.ts`.
@@ -246,7 +250,8 @@ function bytesToReadableStream(bytes) {
246
250
  function createMessageProxy(envelope, opts = {}) {
247
251
  const actions = [];
248
252
  const headers = new Headers(envelope.headers);
249
- const userVisibleTo = stripSlugFromAddress(envelope.to, opts.slug);
253
+ const slug = envelope.viaDomain === void 0 || envelope.viaDomain === "" ? opts.slug : void 0;
254
+ const userVisibleTo = stripSlugFromAddress(envelope.to, slug);
250
255
  let cachedRaw;
251
256
  let bufferingPromise;
252
257
  function readRawOnce() {
@@ -362,6 +367,12 @@ function createMessageProxy(envelope, opts = {}) {
362
367
  writable: false,
363
368
  configurable: false
364
369
  });
370
+ if (typeof envelope.viaDomain === "string" && envelope.viaDomain.length > 0) Object.defineProperty(message, "__voidRelayDomain", {
371
+ value: envelope.viaDomain,
372
+ enumerable: false,
373
+ writable: false,
374
+ configurable: false
375
+ });
365
376
  proxyRawCache.set(message, { read: readRawOnce });
366
377
  return {
367
378
  message,
@@ -592,6 +603,7 @@ async function buildReplyMessage(message, opts) {
592
603
  const originalReferences = headers.get("References") ?? "";
593
604
  let fromAddr;
594
605
  if (opts.from !== void 0) fromAddr = opts.from;
606
+ else if (readRelayDomain(message) !== void 0) fromAddr = message.to;
595
607
  else {
596
608
  const slug = tryReadProjectSlug();
597
609
  if (slug) {
@@ -215,6 +215,15 @@ interface EmailEnvelope {
215
215
  */
216
216
  raw: ReadableStream<Uint8Array> | Uint8Array;
217
217
  rawSize: number;
218
+ /**
219
+ * The registered custom domain this message arrived on, set only by the
220
+ * platform's relay lane (`POST /email/relay` — design doc 0078, "Custom
221
+ * domains on Cloudflare"). Undefined on the platform mail zone. A relayed
222
+ * recipient carries no `<slug>+` prefix, so the generated dispatcher runs
223
+ * in no-prefix mode for it (Mode B item 4) and `replyEmail` defaults
224
+ * `from` to the address that received it, on this domain.
225
+ */
226
+ viaDomain?: string;
218
227
  }
219
228
  /**
220
229
  * What the user handler decided to do with a message. Returned from the
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { r as __toESM } from "./rolldown-runtime-rQ84J-ij.mjs";
2
2
  import { c as relative, l as resolve, n as dirname, o as join } from "./dist-BrsS7cai.mjs";
3
3
  import { st as require_picocolors } from "./output-tFQLLj26.mjs";
4
- import { D as resolveAssetRoutingPolicy, E as hasDocumentRoutes, T as hasApiRoutes, _ as scanDurableObjectModules, c as resolveDistDir, d as generateQueueResolverSource, f as prerenderPages, g as hasRevalidate, h as collectRevalidate, l as resolveWorkerDirName, m as collectPages, p as prerenderPagesNode, v as SEND_EMAIL_BINDING } from "./deploy-CcDoeBIf.mjs";
4
+ import { D as resolveAssetRoutingPolicy, E as hasDocumentRoutes, T as hasApiRoutes, _ as scanDurableObjectModules, c as resolveDistDir, d as generateQueueResolverSource, f as prerenderPages, g as hasRevalidate, h as collectRevalidate, l as resolveWorkerDirName, m as collectPages, p as prerenderPagesNode, v as SEND_EMAIL_BINDING } from "./deploy-iXZ3F0N6.mjs";
5
5
  import { i as resolveProjectPaths, n as readProjectPaths, t as assertNoRootSourceConventionConflicts } from "./project-paths-SK8nMHPp.mjs";
6
6
  import { a as scanQueuesSync, c as loadVoidAuthConfig, i as scanWebSocketRoutesSync, n as scanRoutePatternsSync, o as scanJobsSync, r as scanRoutes, s as findVoidAuthConfig, t as scanMiddlewareSync } from "./scan-BMH4rzlv.mjs";
7
7
  import { a as getApiUrl, b as readDeploymentPlatform, c as getToken, o as getProxyUrl, u as isStagingMode, x as readProjectConfig } from "./auth-W9WII-mN.mjs";
@@ -12,7 +12,7 @@ import { n as lintDuplicateSources, r as mergeRoutingRules, t as lintDestination
12
12
  import { n as ensureProjectTsconfig, r as writeFileIfChanged } from "./project-tsconfig-Ql2XsSQp.mjs";
13
13
  import { a as inferBindingsFromSource, i as inferProjectBindings, n as FRAMEWORK_SCAN_DIRS, o as walk, r as detectFramework, t as DEFAULT_SCAN_DIRS } from "./plugin-inference-BDRfZngg.mjs";
14
14
  import { a as validateSsrEntries, c as isIdentifier, l as isLiteral, n as SSR_SERVER_ENTRY_RELATIVE_PATHS, o as validateSsrEntry, t as SSR_CLIENT_ENTRY_RELATIVE_PATHS, u as isMemberExpression } from "./entry-DU3oDoQ3.mjs";
15
- import { n as writeLocalD1PersistState, t as resolveLocalD1Target } from "./local-d1-BE8KBbMy.mjs";
15
+ import { n as writeLocalD1PersistState, t as resolveLocalD1Target } from "./local-d1-D2I6Ox5F.mjs";
16
16
  import { n as parseDotenvFile } from "./dotenv-VQxupEUv.mjs";
17
17
  import { i as generateVoidAuthDrizzleSchema, n as generateQueueTypes, o as DRIZZLE_OPERATORS, r as generateVoidAuthDatabaseModule, s as generateDbDts, t as generateRouteTypes } from "./route-types-Da-DpyUp.mjs";
18
18
  import { t as discoverSchema } from "./discover-xvfrgJeo.mjs";
@@ -701,7 +701,7 @@ export function createDb(d1) {
701
701
  const migrationsDir = paths.migrationsDir;
702
702
  if (!(existsSync(migrationsDir) && readdirSync(migrationsDir).some((f) => f.endsWith(".sql")))) {
703
703
  if (dialect === "sqlite") {
704
- const { getApplicationTables, getMiniflareDatabasePath } = await import("./local-d1-BE8KBbMy.mjs").then((n) => n.i);
704
+ const { getApplicationTables, getMiniflareDatabasePath } = await import("./local-d1-D2I6Ox5F.mjs").then((n) => n.i);
705
705
  if ((await getApplicationTables(getMiniflareDatabasePath(options.localD1PersistRoot ?? join(root, ".void"), options.localD1DatabaseId ?? "local")).catch(() => [])).length > 0) return;
706
706
  }
707
707
  voidWarn(`Schema found but no migrations in ${paths.sourceRelative("db/migrations")}/.\n \`void db push\` syncs the schema to your local DB without creating migration files.
@@ -1982,10 +1982,10 @@ function migrationPlugin(root, dialect, databaseId = "local", persistRoot = join
1982
1982
  else warn();
1983
1983
  return;
1984
1984
  }
1985
- const { collectMigrations } = await import("./validate-Bihr8WBi.mjs").then((n) => n.l);
1986
- const { validateMigrations } = await import("./validate-Bihr8WBi.mjs").then((n) => n.i);
1985
+ const { collectMigrations } = await import("./validate-tBBN_dXH.mjs").then((n) => n.l);
1986
+ const { validateMigrations } = await import("./validate-tBBN_dXH.mjs").then((n) => n.i);
1987
1987
  const allMigrations = collectMigrations(migrationsDir);
1988
- const appliedNames = dialect === "mysql" ? await import("./runner-mysql-CgRFl3s6.mjs").then((n) => n.n).then((runner) => runner.getMySqlAppliedMigrations(url)) : await import("./runner-pg-DCkWPsWS.mjs").then((n) => n.n).then((runner) => runner.getPgAppliedMigrations(url));
1988
+ const appliedNames = dialect === "mysql" ? await import("./runner-mysql-7BPUNGmL.mjs").then((n) => n.n).then((runner) => runner.getMySqlAppliedMigrations(url)) : await import("./runner-pg-BkEza-dX.mjs").then((n) => n.n).then((runner) => runner.getPgAppliedMigrations(url));
1989
1989
  const appliedSet = new Set(appliedNames);
1990
1990
  const pending = allMigrations.filter((migration) => !appliedSet.has(migration.name));
1991
1991
  if (pending.length > 0) try {
@@ -1993,12 +1993,12 @@ function migrationPlugin(root, dialect, databaseId = "local", persistRoot = join
1993
1993
  } catch (err) {
1994
1994
  voidWarn(err instanceof Error ? err.message : String(err));
1995
1995
  }
1996
- const applied = dialect === "mysql" ? await import("./runner-mysql-CgRFl3s6.mjs").then((n) => n.n).then((runner) => runner.runMySqlMigrations(migrationsDir, url)) : await import("./runner-pg-DCkWPsWS.mjs").then((n) => n.n).then((runner) => runner.runPgMigrations(migrationsDir, url));
1996
+ const applied = dialect === "mysql" ? await import("./runner-mysql-7BPUNGmL.mjs").then((n) => n.n).then((runner) => runner.runMySqlMigrations(migrationsDir, url)) : await import("./runner-pg-BkEza-dX.mjs").then((n) => n.n).then((runner) => runner.runPgMigrations(migrationsDir, url));
1997
1997
  if (applied.length > 0) voidLog(`Applied ${applied.length} migration(s): ${applied.join(", ")}`);
1998
1998
  } else if (hasSqlMigrations) {
1999
- const { runMigrations, getMiniflareDatabasePath, getAppliedMigrations } = await import("./local-d1-BE8KBbMy.mjs").then((n) => n.i);
2000
- const { collectMigrations } = await import("./validate-Bihr8WBi.mjs").then((n) => n.l);
2001
- const { validateMigrations } = await import("./validate-Bihr8WBi.mjs").then((n) => n.i);
1999
+ const { runMigrations, getMiniflareDatabasePath, getAppliedMigrations } = await import("./local-d1-D2I6Ox5F.mjs").then((n) => n.i);
2000
+ const { collectMigrations } = await import("./validate-tBBN_dXH.mjs").then((n) => n.l);
2001
+ const { validateMigrations } = await import("./validate-tBBN_dXH.mjs").then((n) => n.i);
2002
2002
  const dbPath = getMiniflareDatabasePath(persistRoot, databaseId);
2003
2003
  const allMigrations = collectMigrations(migrationsDir);
2004
2004
  const appliedRows = await getAppliedMigrations(dbPath);
@@ -2013,7 +2013,7 @@ function migrationPlugin(root, dialect, databaseId = "local", persistRoot = join
2013
2013
  if (applied.length > 0) voidLog(`Applied ${applied.length} migration(s): ${applied.join(", ")}`);
2014
2014
  }
2015
2015
  if (auth?.enabled) {
2016
- const { runLocalVoidAuthMigrations } = await import("./node-BkaXcpAc.mjs");
2016
+ const { runLocalVoidAuthMigrations } = await import("./node-Dk3H2jmU.mjs");
2017
2017
  await runLocalVoidAuthMigrations(root, dialect, persistRoot, databaseId, auth.configPath);
2018
2018
  voidLog("Applied Better Auth migrations");
2019
2019
  }
@@ -4148,7 +4148,8 @@ ${envValidateCall}${isrDeploymentStamp} const userEnv = __filterInternalBinding
4148
4148
  const emailHandler = hasEmail ? remotePath ? `async function handleEmail(envelope, env, ctx) {
4149
4149
  ${envValidateCall} if (env.__VOID_REMOTE === "1") env = ${createRemoteEnvCall};
4150
4150
  const userEnv = __filterInternalBindings(env);
4151
- const __slug = typeof env.__VOID_PROJECT_SLUG === "string" && env.__VOID_PROJECT_SLUG.length > 0 ? env.__VOID_PROJECT_SLUG : undefined;
4151
+ const __relayed = typeof envelope.viaDomain === "string" && envelope.viaDomain.length > 0;
4152
+ const __slug = __relayed ? undefined : (typeof env.__VOID_PROJECT_SLUG === "string" && env.__VOID_PROJECT_SLUG.length > 0 ? env.__VOID_PROJECT_SLUG : undefined);
4152
4153
  const { message, getActions } = __createMessageProxy(envelope, { slug: __slug });
4153
4154
  await __withRawEnv(env, () => withRuntimeEnv(env, () => __emailHandler(message, userEnv, ctx, { slug: __slug })));
4154
4155
  const __actions = getActions();
@@ -4156,7 +4157,8 @@ ${envValidateCall} if (env.__VOID_REMOTE === "1") env = ${createRemoteEnvCall};
4156
4157
  return __actions;
4157
4158
  }` : `async function handleEmail(envelope, env, ctx) {
4158
4159
  ${envValidateCall} const userEnv = __filterInternalBindings(env);
4159
- const __slug = typeof env.__VOID_PROJECT_SLUG === "string" && env.__VOID_PROJECT_SLUG.length > 0 ? env.__VOID_PROJECT_SLUG : undefined;
4160
+ const __relayed = typeof envelope.viaDomain === "string" && envelope.viaDomain.length > 0;
4161
+ const __slug = __relayed ? undefined : (typeof env.__VOID_PROJECT_SLUG === "string" && env.__VOID_PROJECT_SLUG.length > 0 ? env.__VOID_PROJECT_SLUG : undefined);
4160
4162
  const { message, getActions } = __createMessageProxy(envelope, { slug: __slug });
4161
4163
  await __withRawEnv(env, () => withRuntimeEnv(env, () => __emailHandler(message, userEnv, ctx, { slug: __slug })));
4162
4164
  const __actions = getActions();
@@ -4995,8 +4997,8 @@ function routingPlugin(root, options) {
4995
4997
  if (!options.target) {
4996
4998
  const migrationsDir = paths.migrationsDir;
4997
4999
  if (existsSync(migrationsDir) || compileOptions.auth) {
4998
- const { collectMigrations } = await import("./validate-Bihr8WBi.mjs").then((n) => n.l);
4999
- const { buildMigrationPlanBundle } = await import("./validate-Bihr8WBi.mjs").then((n) => n.s);
5000
+ const { collectMigrations } = await import("./validate-tBBN_dXH.mjs").then((n) => n.l);
5001
+ const { buildMigrationPlanBundle } = await import("./validate-tBBN_dXH.mjs").then((n) => n.s);
5000
5002
  const migrations = existsSync(migrationsDir) ? collectMigrations(migrationsDir) : [];
5001
5003
  const dialect = getDatabaseDialect(readConfig(root));
5002
5004
  compileOptions.migrationHandlerPath = resolveFile(dialect === "postgresql" ? "#self/runtime/migration-handler-pg" : dialect === "mysql" ? "#self/runtime/migration-handler-mysql" : "#self/runtime/migration-handler");
@@ -5536,7 +5538,7 @@ function readVoidDevCredentials(root) {
5536
5538
  */
5537
5539
  async function runAiSetupPrompt(root, token, apiUrl, server) {
5538
5540
  const { select, text, isCancel, log } = await import("./output-tFQLLj26.mjs").then((n) => n.T);
5539
- const { PlatformClient } = await import("./client-CyCHWSO_.mjs").then((n) => n.r);
5541
+ const { PlatformClient } = await import("./client-Clirrol3.mjs").then((n) => n.r);
5540
5542
  const { attachSelectedPlatform, writeProjectConfig } = await import("./auth-W9WII-mN.mjs").then((n) => n.y);
5541
5543
  const { inferDefaultSlug } = await import("./resolve-project--Vxawf7z.mjs").then((n) => n.i);
5542
5544
  const client = new PlatformClient(token, apiUrl);
@@ -5564,8 +5566,8 @@ async function runAiSetupPrompt(root, token, apiUrl, server) {
5564
5566
  let projectId;
5565
5567
  let slug;
5566
5568
  if (result === "__create__") {
5567
- const { validateProjectSlug } = await import("./create-project-DMV-csEm.mjs").then((n) => n.a);
5568
- const { createProjectWithSlugRetry } = await import("./create-project-DMV-csEm.mjs").then((n) => n.t);
5569
+ const { validateProjectSlug } = await import("./create-project-ChGZ1DFd.mjs").then((n) => n.a);
5570
+ const { createProjectWithSlugRetry } = await import("./create-project-ChGZ1DFd.mjs").then((n) => n.t);
5569
5571
  let created;
5570
5572
  try {
5571
5573
  created = await createProjectWithSlugRetry(client, inferDefaultSlug(root), async (defaultSlug) => {
@@ -9,12 +9,12 @@ import { r as detectFramework } from "./plugin-inference-BDRfZngg.mjs";
9
9
  import { n as parseDotenvFile, t as expandDotenv } from "./dotenv-VQxupEUv.mjs";
10
10
  import { t as MagicString } from "./dist-BR1quN_w.mjs";
11
11
  import { n as writeDrizzleConfig } from "./config-NOG_U1aK.mjs";
12
- import { n as PlatformClient } from "./client-CyCHWSO_.mjs";
12
+ import { n as PlatformClient } from "./client-Clirrol3.mjs";
13
13
  import { r as formatProjectCommand } from "./preset-lAy0B0BQ.mjs";
14
- import { n as promptAndCreateProject, r as promptProjectSelection } from "./create-project-DMV-csEm.mjs";
15
- import { t as promptForLoginToken } from "./login-C8-UuLnp.mjs";
16
- import { t as connectCloudflare } from "./cloudflare-connect-BivMefMA.mjs";
17
- import { discoverPlatform, saveDiscoveredPlatform } from "./platform-cmd-BEOVv1PN.mjs";
14
+ import { n as promptAndCreateProject, r as promptProjectSelection } from "./create-project-ChGZ1DFd.mjs";
15
+ import { t as promptForLoginToken } from "./login-pV69H-ZO.mjs";
16
+ import { t as connectCloudflare } from "./cloudflare-connect-j5D4hhrG.mjs";
17
+ import { discoverPlatform, saveDiscoveredPlatform } from "./platform-cmd-DxJ2FRwR.mjs";
18
18
  import { n as findInstalledYarnPnpRuntime, r as hasLocalLockfile, t as buildDrizzleKitSpawnEnv } from "./yarn-pnp-DxSInkzL.mjs";
19
19
  import { createRequire } from "node:module";
20
20
  import { existsSync, mkdirSync, readFileSync, readdirSync, rmdirSync, unlinkSync, writeFileSync } from "node:fs";
@@ -1,7 +1,7 @@
1
1
  import { C as cancel, D as log, E as intro, c as import_picocolors, k as outro, r as cliTitle } from "./output-tFQLLj26.mjs";
2
2
  import { T as writeProjectConfig, c as getToken, s as getSiteDomain, v as attachSelectedPlatform, x as readProjectConfig } from "./auth-W9WII-mN.mjs";
3
- import { n as PlatformClient } from "./client-CyCHWSO_.mjs";
4
- import { n as promptAndCreateProject, r as promptProjectSelection } from "./create-project-DMV-csEm.mjs";
3
+ import { n as PlatformClient } from "./client-Clirrol3.mjs";
4
+ import { n as promptAndCreateProject, r as promptProjectSelection } from "./create-project-ChGZ1DFd.mjs";
5
5
  import { r as resolveProjectBySlug } from "./resolve-project--Vxawf7z.mjs";
6
6
  //#region src/cli/link.ts
7
7
  function projectLabel(slug, root, url) {
@@ -1,6 +1,6 @@
1
1
  import { D as log, E as intro, a as dim, c as import_picocolors, k as outro, o as ensureUtc, r as cliTitle, u as tablePrefix } from "./output-tFQLLj26.mjs";
2
2
  import { b as readDeploymentPlatform, c as getToken, x as readProjectConfig } from "./auth-W9WII-mN.mjs";
3
- import { n as PlatformClient } from "./client-CyCHWSO_.mjs";
3
+ import { n as PlatformClient } from "./client-Clirrol3.mjs";
4
4
  import { r as resolveProjectBySlug } from "./resolve-project--Vxawf7z.mjs";
5
5
  //#region src/cli/list.ts
6
6
  async function runListCommand(root, slug) {
@@ -2,7 +2,7 @@ import { n as __exportAll } from "./rolldown-runtime-rQ84J-ij.mjs";
2
2
  import { a as isAbsolute, l as resolve, n as dirname, o as join } from "./dist-BrsS7cai.mjs";
3
3
  import { v as readRootWranglerConfig } from "./wrangler--imS8n0d.mjs";
4
4
  import { n as hasPackageDependency, r as readNearestPackageJson } from "./package-json-CPoWX79C.mjs";
5
- import { c as collectMigrations, o as classifyMigration } from "./validate-Bihr8WBi.mjs";
5
+ import { c as collectMigrations, o as classifyMigration } from "./validate-tBBN_dXH.mjs";
6
6
  import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
7
7
  import { createHash, createHmac } from "node:crypto";
8
8
  //#region src/migrations/runner.ts
@@ -1,6 +1,6 @@
1
1
  import { C as cancel, D as log, E as intro, F as isCancel, c as import_picocolors, i as createSpinner, j as select, k as outro, r as cliTitle } from "./output-tFQLLj26.mjs";
2
2
  import { _ as saveToken, c as getToken, g as savePlatformToken, h as runPlatformLogin, l as getTokenSource, m as runLogin, p as removeToken, u as isStagingMode } from "./auth-W9WII-mN.mjs";
3
- import { a as isExpiredTokenError, n as PlatformClient } from "./client-CyCHWSO_.mjs";
3
+ import { a as isExpiredTokenError, n as PlatformClient } from "./client-Clirrol3.mjs";
4
4
  //#region src/cli/login.ts
5
5
  async function promptForLoginToken(root = process.cwd(), platform) {
6
6
  const providers = platform?.authenticationProviders ?? ["github", "google"];
@@ -1,6 +1,6 @@
1
1
  import { D as log, E as intro, a as dim, c as import_picocolors, k as outro, r as cliTitle } from "./output-tFQLLj26.mjs";
2
2
  import { b as readDeploymentPlatform, c as getToken, x as readProjectConfig } from "./auth-W9WII-mN.mjs";
3
- import { n as PlatformClient } from "./client-CyCHWSO_.mjs";
3
+ import { n as PlatformClient } from "./client-Clirrol3.mjs";
4
4
  //#region src/cli/logs.ts
5
5
  async function runLogsCommand(root, filter, range, deployment, level) {
6
6
  console.log();
@@ -1,7 +1,7 @@
1
1
  import { o as join } from "./dist-BrsS7cai.mjs";
2
2
  import { c as loadVoidAuthConfig, s as findVoidAuthConfig } from "./scan-BMH4rzlv.mjs";
3
3
  import { f as readConfig } from "./config-BQFq7QvD.mjs";
4
- import { r as getMiniflareDatabasePath } from "./local-d1-BE8KBbMy.mjs";
4
+ import { r as getMiniflareDatabasePath } from "./local-d1-D2I6Ox5F.mjs";
5
5
  import { a as resolveVoidAuthMigrationSchema } from "./route-types-Da-DpyUp.mjs";
6
6
  import { a as loadLocalEnv } from "./env-D4Emu-M_.mjs";
7
7
  import { n as applyPgAuthMigrations, r as applySqliteAuthMigrations, t as applyMySqlAuthMigrations } from "./auth-migrations-9vif1uj8.mjs";
@@ -116,7 +116,7 @@ async function runPlatformCommand(_root, args) {
116
116
  console.log(`Capabilities: ${Object.entries(discovery.capabilities).filter(([, enabled]) => enabled).map(([name]) => name).join(", ")}`);
117
117
  return;
118
118
  }
119
- const { runPlatformLifecycleCommand } = await import("./platform-lifecycle-CjSr6xf0.mjs");
119
+ const { runPlatformLifecycleCommand } = await import("./platform-lifecycle-DN4MzJF_.mjs");
120
120
  await runPlatformLifecycleCommand(args);
121
121
  }
122
122
  //#endregion
@@ -1,7 +1,7 @@
1
1
  import { D as log, F as isCancel, N as text, O as note, Y as readInstallationRecoverySecrets, et as savePlatformConnection, nt as writeInstallationManifest, w as confirm, z as acquirePlatformLifecycleLock } from "./output-tFQLLj26.mjs";
2
2
  import { t as cfAccessHeaders } from "./cf-access-AJ1ehiFR.mjs";
3
- import { S as resolvePlatformCloudflareCredential, assertNoninteractivePlatformMutationAcknowledged, d as createPlatformInstallPlan, g as PlatformCloudflareClient, l as recordPlatformWorkerTraffic, n as acquirePlatformDatabaseLifecycleLock, r as createPlatformHealthProbeToken, resolvePlatformInstallDatabaseUrl, s as recordResource, x as assertPlatformOperatorCredentialCanApplyPlan } from "./platform-lifecycle-CjSr6xf0.mjs";
4
- import { resolveInstalledPlatformManifest, selectAuthoritativePlatformManifest, verifyPlatformInstallationOwnership } from "./platform-management-W30iCaTL.mjs";
3
+ import { S as resolvePlatformCloudflareCredential, assertNoninteractivePlatformMutationAcknowledged, d as createPlatformInstallPlan, g as PlatformCloudflareClient, l as recordPlatformWorkerTraffic, n as acquirePlatformDatabaseLifecycleLock, r as createPlatformHealthProbeToken, resolvePlatformInstallDatabaseUrl, s as recordResource, x as assertPlatformOperatorCredentialCanApplyPlan } from "./platform-lifecycle-DN4MzJF_.mjs";
4
+ import { resolveInstalledPlatformManifest, selectAuthoritativePlatformManifest, verifyPlatformInstallationOwnership } from "./platform-management-Db2PXw0B.mjs";
5
5
  import { randomUUID } from "node:crypto";
6
6
  import { PLATFORM_APPLICATION_KEY, PLATFORM_REMOTE_INSTALLATION_MANIFEST_KEY, createApplicationRoutes, createPlatformDeploymentManifest, normalizeApplicationDomain } from "@void/platform";
7
7
  //#region src/cli/platform-domain.ts
@@ -4,7 +4,7 @@ import { $ as resolveInstallationManifest, A as password, B as assertPlatformIns
4
4
  import { t as cfAccessHeaders } from "./cf-access-AJ1ehiFR.mjs";
5
5
  import { d as openBrowser } from "./auth-W9WII-mN.mjs";
6
6
  import { o as resolveWranglerArgv } from "./preset-lAy0B0BQ.mjs";
7
- import { c as runCloudflareAuthCommand, n as announceCloudflareLogin } from "./cloudflare-auth-DRkGe7-s.mjs";
7
+ import { l as runCloudflareAuthCommand, n as announceCloudflareLogin } from "./cloudflare-auth-B1QtTO1b.mjs";
8
8
  import { n as createDefaultRunWrangler, o as resolvePinnedApiBaseUrl } from "./provision-Blnstcm2.mjs";
9
9
  import { mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
10
10
  import { createHash, randomBytes, randomUUID } from "node:crypto";
@@ -3992,14 +3992,14 @@ function resolvePlatformInstallDatabaseUrl(checkpoint, manifest = null) {
3992
3992
  }
3993
3993
  async function runPlatformLifecycleCommand(args) {
3994
3994
  if (args.subcommand === "domain") {
3995
- const { runPlatformDomainCommand } = await import("./platform-domain-BszUfiS8.mjs");
3995
+ const { runPlatformDomainCommand } = await import("./platform-domain-ChvbJkdy.mjs");
3996
3996
  await runPlatformDomainCommand(args);
3997
3997
  return;
3998
3998
  }
3999
3999
  if (args.subcommand === "discover") {
4000
4000
  const client = new PlatformCloudflareClient((await resolvePlatformCloudflareCredential()).token);
4001
4001
  const accountId = await selectAccount(await readAccounts(client), args.account);
4002
- const { recoverPlatformInstallations } = await import("./platform-recovery-pHHv4ZSg.mjs");
4002
+ const { recoverPlatformInstallations } = await import("./platform-recovery-C_YO-tIs.mjs");
4003
4003
  const recovered = await recoverPlatformInstallations(client, accountId, void 0, args.selector);
4004
4004
  if (recovered.length === 0) {
4005
4005
  log.info(`No recoverable Void platform installations were found in ${accountId}.`);
@@ -4009,7 +4009,7 @@ async function runPlatformLifecycleCommand(args) {
4009
4009
  return;
4010
4010
  }
4011
4011
  if (args.subcommand !== "install") {
4012
- const { runInstalledPlatformCommand } = await import("./platform-management-W30iCaTL.mjs");
4012
+ const { runInstalledPlatformCommand } = await import("./platform-management-Db2PXw0B.mjs");
4013
4013
  await runInstalledPlatformCommand(args);
4014
4014
  return;
4015
4015
  }
@@ -4159,7 +4159,7 @@ async function runPlatformLifecycleCommand(args) {
4159
4159
  progress?.stop("Read the saved installation.");
4160
4160
  progress = void 0;
4161
4161
  if (authoritative) {
4162
- const { selectAuthoritativePlatformManifest } = await import("./platform-management-W30iCaTL.mjs");
4162
+ const { selectAuthoritativePlatformManifest } = await import("./platform-management-Db2PXw0B.mjs");
4163
4163
  const selected = selectAuthoritativePlatformManifest(existing, authoritative);
4164
4164
  authoritativeProvisionIntents = true;
4165
4165
  if (!args.plan && JSON.stringify(selected) !== JSON.stringify(existing)) writeInstallationManifest(selected);
@@ -4318,7 +4318,7 @@ async function runPlatformLifecycleCommand(args) {
4318
4318
  })).actions.filter((action) => action.kind === "worker"),
4319
4319
  revalidateBeforeWorkerDeploy: (manifest, action) => revalidatePlatformInstallAction(client, plan, manifest, action),
4320
4320
  verifyExistingOwnership: async (manifest, databaseCheckpointExists) => {
4321
- const { verifyPlatformInstallationOwnership } = await import("./platform-management-W30iCaTL.mjs");
4321
+ const { verifyPlatformInstallationOwnership } = await import("./platform-management-Db2PXw0B.mjs");
4322
4322
  const retainedReplacementKeys = new Set(plan.actions.filter((action) => {
4323
4323
  const previous = manifest.resources.find((resource) => resource.key === action.key);
4324
4324
  return action.action === "create" && previous && previous.name !== action.name;
@@ -1,5 +1,5 @@
1
1
  import { $ as resolveInstallationManifest, D as log, F as isCancel, O as note, Q as removePlatformConnectionForInstallation, U as listInstallationManifests, Y as readInstallationRecoverySecrets, Z as removeInstallationRecoverySecrets, i as createSpinner, j as select, k as outro, nt as writeInstallationManifest, w as confirm, z as acquirePlatformLifecycleLock } from "./output-tFQLLj26.mjs";
2
- import { S as resolvePlatformCloudflareCredential, _ as hyperdriveOriginConfigHash, a as installPlatform, assertNoninteractivePlatformMutationAcknowledged, b as verifyPlatformRuntimeTokenPermissions, c as resolveBootstrapGitHubId, d as createPlatformInstallPlan, f as formatPlatformInstallPlan, g as PlatformCloudflareClient, h as revalidatePlatformInstallAction, i as createPlatformInstallationSecrets, m as platformProvisionIntentHash, n as acquirePlatformDatabaseLifecycleLock, o as loadPlatformRuntime, p as platformAdoptionIntentHash, resolvePlatformInstallDatabaseUrl, t as REMOTE_INSTALLATION_MANIFEST_KEY, u as trackedPlatformWorkerTraffic, v as hyperdriveOriginFromConnectionString, x as assertPlatformOperatorCredentialCanApplyPlan, y as hyperdriveOriginMatches } from "./platform-lifecycle-CjSr6xf0.mjs";
2
+ import { S as resolvePlatformCloudflareCredential, _ as hyperdriveOriginConfigHash, a as installPlatform, assertNoninteractivePlatformMutationAcknowledged, b as verifyPlatformRuntimeTokenPermissions, c as resolveBootstrapGitHubId, d as createPlatformInstallPlan, f as formatPlatformInstallPlan, g as PlatformCloudflareClient, h as revalidatePlatformInstallAction, i as createPlatformInstallationSecrets, m as platformProvisionIntentHash, n as acquirePlatformDatabaseLifecycleLock, o as loadPlatformRuntime, p as platformAdoptionIntentHash, resolvePlatformInstallDatabaseUrl, t as REMOTE_INSTALLATION_MANIFEST_KEY, u as trackedPlatformWorkerTraffic, v as hyperdriveOriginFromConnectionString, x as assertPlatformOperatorCredentialCanApplyPlan, y as hyperdriveOriginMatches } from "./platform-lifecycle-DN4MzJF_.mjs";
3
3
  import { createHash } from "node:crypto";
4
4
  import { PLATFORM_DISABLED_KEY, PLATFORM_DISABLED_VALUE, PLATFORM_R2_OWNERSHIP_MARKER_KEY, createPlatformResourceOwnershipMarker, parsePlatformInstallationManifest, parsePlatformResourceOwnershipMarker, recordInstallationResource, recordInstallationStep, setInstallationDesiredState, transitionInstallation } from "@void/platform";
5
5
  //#region src/cli/platform-management.ts
@@ -1,7 +1,7 @@
1
1
  import { U as listInstallationManifests, et as savePlatformConnection, nt as writeInstallationManifest, z as acquirePlatformLifecycleLock } from "./output-tFQLLj26.mjs";
2
2
  import { t as cfAccessHeaders } from "./cf-access-AJ1ehiFR.mjs";
3
- import { d as createPlatformInstallPlan, t as REMOTE_INSTALLATION_MANIFEST_KEY } from "./platform-lifecycle-CjSr6xf0.mjs";
4
- import { isPlatformManifestMonotonicExtension, recoverDurablyMarkedProvisionIntents, verifyPlatformInstallationOwnership } from "./platform-management-W30iCaTL.mjs";
3
+ import { d as createPlatformInstallPlan, t as REMOTE_INSTALLATION_MANIFEST_KEY } from "./platform-lifecycle-DN4MzJF_.mjs";
4
+ import { isPlatformManifestMonotonicExtension, recoverDurablyMarkedProvisionIntents, verifyPlatformInstallationOwnership } from "./platform-management-Db2PXw0B.mjs";
5
5
  import { parsePlatformInstallationManifest, setInstallationEndpoints } from "@void/platform";
6
6
  //#region src/cli/platform-recovery.ts
7
7
  async function recoverPlatformInstallations(client, accountId, verifyEndpoint = verifyInstallationEndpoint, selector = "") {
@@ -1,6 +1,6 @@
1
1
  import { D as log, E as intro, a as dim, c as import_picocolors, k as outro, r as cliTitle, u as tablePrefix } from "./output-tFQLLj26.mjs";
2
2
  import { b as readDeploymentPlatform, c as getToken, s as getSiteDomain } from "./auth-W9WII-mN.mjs";
3
- import { n as PlatformClient } from "./client-CyCHWSO_.mjs";
3
+ import { n as PlatformClient } from "./client-Clirrol3.mjs";
4
4
  //#region src/cli/projects.ts
5
5
  async function runProjectsCommand(root) {
6
6
  console.log();
@@ -35,47 +35,47 @@ async function runProjectsCommand(root) {
35
35
  async function runProjectCommand(root, args) {
36
36
  const cloudflare = readDeploymentPlatform(root) === "cloudflare";
37
37
  if (args.subcommand === "status") {
38
- const { runListCommand } = await import("./list-M8XShti7.mjs");
38
+ const { runListCommand } = await import("./list-3F52R_yO.mjs");
39
39
  return runListCommand(root, args.name || void 0);
40
40
  }
41
41
  if (args.subcommand === "link") {
42
42
  if (cloudflare) throw new Error("project: Direct Cloudflare apps are identified by the name in wrangler.jsonc and do not need linking.");
43
- const { runLink } = await import("./link-D_rm5sRH.mjs");
43
+ const { runLink } = await import("./link-RMdgjF1v.mjs");
44
44
  return runLink(root, args.name || void 0);
45
45
  }
46
46
  if (args.subcommand === "list") {
47
47
  if (cloudflare) {
48
- const { runListCommand } = await import("./list-M8XShti7.mjs");
48
+ const { runListCommand } = await import("./list-3F52R_yO.mjs");
49
49
  return runListCommand(root);
50
50
  }
51
51
  return runProjectsCommand(root);
52
52
  }
53
53
  if (args.subcommand === "logs") {
54
- const { runLogsCommand } = await import("./logs-DwFU7dMW.mjs");
54
+ const { runLogsCommand } = await import("./logs-DFHHD6wE.mjs");
55
55
  return runLogsCommand(root, args.filter, args.range, args.deployment || void 0, args.level || void 0);
56
56
  }
57
57
  if (args.subcommand === "requests") {
58
58
  if (cloudflare) throw new Error("project: Historical request analytics require the Void platform. Use `void project logs` for a live Cloudflare tail.");
59
- const { runRequestsCommand } = await import("./requests-Dn8Vheh1.mjs");
59
+ const { runRequestsCommand } = await import("./requests-BcKOVpRg.mjs");
60
60
  return runRequestsCommand(root, args.range, args.status || void 0);
61
61
  }
62
62
  if (args.subcommand === "rollback") {
63
- const { runRollbackCommand } = await import("./rollback-CtlPXEBi.mjs");
63
+ const { runRollbackCommand } = await import("./rollback-Bx85-0xh.mjs");
64
64
  return runRollbackCommand(root, args.deployId || void 0);
65
65
  }
66
66
  if (args.subcommand === "cancel") {
67
67
  if (cloudflare) throw new Error("project: Direct Cloudflare deploys activate only after readiness succeeds, so there is no remote build to cancel.");
68
- const { runCancelDeployCommand } = await import("./cancel-deploy-DsvWKFTe.mjs");
68
+ const { runCancelDeployCommand } = await import("./cancel-deploy-CmlAZ9P6.mjs");
69
69
  return runCancelDeployCommand(root, args.deployId || void 0);
70
70
  }
71
71
  if (args.subcommand === "delete") {
72
72
  if (cloudflare) throw new Error("project: Refusing to delete Cloudflare resources through this command. Direct deployments are additive and existing resources may be shared.");
73
- const { runDeleteCommand } = await import("./delete-iJOqxBz1.mjs");
73
+ const { runDeleteCommand } = await import("./delete-D8GigDk8.mjs");
74
74
  return runDeleteCommand(root, args.name || void 0, { force: args.force });
75
75
  }
76
76
  if (args.subcommand === "purge-cache") {
77
77
  if (cloudflare) throw new Error("project: Direct Cloudflare ISR cache purge is not available yet; redeploy or purge the configured KV namespace explicitly.");
78
- const { runPurgeCacheCommand } = await import("./cache-QcUfR-ff.mjs");
78
+ const { runPurgeCacheCommand } = await import("./cache-BlNeQjuP.mjs");
79
79
  return runPurgeCacheCommand(root, args.projectSlug || void 0);
80
80
  }
81
81
  }
@@ -1,6 +1,6 @@
1
1
  import { D as log, E as intro, a as dim, c as import_picocolors, k as outro, r as cliTitle } from "./output-tFQLLj26.mjs";
2
2
  import { c as getToken, x as readProjectConfig } from "./auth-W9WII-mN.mjs";
3
- import { n as PlatformClient } from "./client-CyCHWSO_.mjs";
3
+ import { n as PlatformClient } from "./client-Clirrol3.mjs";
4
4
  //#region src/cli/requests.ts
5
5
  async function runRequestsCommand(root, range, status) {
6
6
  console.log();
@@ -1,6 +1,6 @@
1
1
  import { C as cancel, D as log, E as intro, F as isCancel, a as dim, c as import_picocolors, i as createSpinner, j as select, k as outro, o as ensureUtc, r as cliTitle, w as confirm } from "./output-tFQLLj26.mjs";
2
2
  import { b as readDeploymentPlatform, c as getToken, x as readProjectConfig } from "./auth-W9WII-mN.mjs";
3
- import { n as PlatformClient } from "./client-CyCHWSO_.mjs";
3
+ import { n as PlatformClient } from "./client-Clirrol3.mjs";
4
4
  //#region src/cli/rollback.ts
5
5
  async function runRollbackCommand(root, deployId) {
6
6
  console.log();
@@ -1,5 +1,5 @@
1
1
  import { n as __exportAll } from "./rolldown-runtime-rQ84J-ij.mjs";
2
- import { c as collectMigrations } from "./validate-Bihr8WBi.mjs";
2
+ import { c as collectMigrations } from "./validate-tBBN_dXH.mjs";
3
3
  //#region src/migrations/runner-mysql.ts
4
4
  var runner_mysql_exports = /* @__PURE__ */ __exportAll({
5
5
  applyMySqlMigrations: () => applyMySqlMigrations,
@@ -1,5 +1,5 @@
1
1
  import { n as __exportAll } from "./rolldown-runtime-rQ84J-ij.mjs";
2
- import { c as collectMigrations } from "./validate-Bihr8WBi.mjs";
2
+ import { c as collectMigrations } from "./validate-tBBN_dXH.mjs";
3
3
  //#region src/migrations/runner-pg.ts
4
4
  var runner_pg_exports = /* @__PURE__ */ __exportAll({
5
5
  applyPgMigrations: () => applyPgMigrations,
@@ -1,5 +1,5 @@
1
1
  /// <reference types="@cloudflare/workers-types" />
2
- import { r as EmailHandler } from "../../inbound-BJ70in1n.mjs";
2
+ import { r as EmailHandler } from "../../inbound-afAcWeQ9.mjs";
3
3
  //#region src/runtime/email/dev-inbox.d.ts
4
4
  interface CapturedMessage {
5
5
  id: string;
@@ -1,7 +1,7 @@
1
1
  import { i as normalizeEmail, r as buildMime } from "../../mime-BJD7d_qL.mjs";
2
2
  import { y as registerEmailSink } from "../../dev-inbox-DkgRWLkW.mjs";
3
3
  import { n as compileEmailPattern, t as compareEmailRoutes } from "../../email-Ce6SQq-i.mjs";
4
- import { i as createMessageProxy, n as MAX_INBOUND_HEADERS, t as MAX_INBOUND_BYTES } from "../../inbound-CNKxb3FY.mjs";
4
+ import { i as createMessageProxy, n as MAX_INBOUND_HEADERS, t as MAX_INBOUND_BYTES } from "../../inbound-2d0zi2yS.mjs";
5
5
  //#region src/runtime/email/testing.ts
6
6
  /**
7
7
  * Test harnesses for void/email.
@@ -1,5 +1,5 @@
1
1
  /// <reference types="@cloudflare/workers-types" />
2
- import { C as SendEmailRecipientResult, S as SendEmailOptions, _ as Attachment, a as MessageProxy, b as SendEmailError, c as ParsedEmail, d as defineEmail, f as enactEmailActions, g as Address, h as replyEmail, i as EmailHandlerInfo, l as ReplyEmailOptions, m as parseEmail, n as EmailEnvelope, o as ParseEmailError, p as isForwardableEmailMessage, r as EmailHandler, s as ParseEmailErrorCode, t as EmailAction, u as createMessageProxy, v as NormalizedEmail, w as SendEmailResult, x as SendEmailErrorCode, y as SendEmailDelivery } from "../inbound-BJ70in1n.mjs";
2
+ import { C as SendEmailRecipientResult, S as SendEmailOptions, _ as Attachment, a as MessageProxy, b as SendEmailError, c as ParsedEmail, d as defineEmail, f as enactEmailActions, g as Address, h as replyEmail, i as EmailHandlerInfo, l as ReplyEmailOptions, m as parseEmail, n as EmailEnvelope, o as ParseEmailError, p as isForwardableEmailMessage, r as EmailHandler, s as ParseEmailErrorCode, t as EmailAction, u as createMessageProxy, v as NormalizedEmail, w as SendEmailResult, x as SendEmailErrorCode, y as SendEmailDelivery } from "../inbound-afAcWeQ9.mjs";
3
3
  //#region src/runtime/email/mime.d.ts
4
4
  type MimeErrorCode = "INVALID_FROM" | "INVALID_TO" | "MIME_ERROR";
5
5
  export declare class MimeError extends Error {
@@ -1,7 +1,7 @@
1
1
  import { i as normalizeEmail, n as MimeError, r as buildMime } from "../mime-BJD7d_qL.mjs";
2
2
  import { a as DEV_INBOX_ENV_VAR, b as serializeCapturedMessage, c as DEV_INBOX_TOKEN_ENV_VAR, d as captureMessage, h as hasActiveSink, i as DEV_INBOX_CAPTURE_URL, p as dispatchToSinks } from "../dev-inbox-DkgRWLkW.mjs";
3
3
  import { a as getRawRuntimeEnv } from "../env-raw-Cx8ElDdj.mjs";
4
- import { a as defineEmail, c as parseEmail, i as createMessageProxy, l as replyEmail, o as enactEmailActions, r as ParseEmailError, s as isForwardableEmailMessage } from "../inbound-CNKxb3FY.mjs";
4
+ import { a as defineEmail, c as parseEmail, i as createMessageProxy, l as replyEmail, o as enactEmailActions, r as ParseEmailError, s as isForwardableEmailMessage } from "../inbound-2d0zi2yS.mjs";
5
5
  //#region src/runtime/email.ts
6
6
  const VALID_SLUG = /^[a-z0-9](?:[a-z0-9-]{0,54}[a-z0-9])?$/;
7
7
  function makeError(code, message, cause) {
@@ -1,7 +1,7 @@
1
1
  import { A as password, C as cancel, D as log, E as intro, F as isCancel, O as note, k as outro, r as cliTitle, w as confirm } from "./output-tFQLLj26.mjs";
2
2
  import { b as readDeploymentPlatform, c as getToken, x as readProjectConfig } from "./auth-W9WII-mN.mjs";
3
3
  import { m as validateSecretValues } from "./env-validation-ENpMy6Ez.mjs";
4
- import { n as PlatformClient } from "./client-CyCHWSO_.mjs";
4
+ import { n as PlatformClient } from "./client-Clirrol3.mjs";
5
5
  import { r as resolveProjectBySlug, t as getRequestedProjectSlug } from "./resolve-project--Vxawf7z.mjs";
6
6
  import { readFileSync } from "node:fs";
7
7
  //#region src/cli/secret.ts