@supacloud/cli 0.112.1 → 0.113.0

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
@@ -1002,10 +1002,14 @@ supacloud lite db_pull --project_dir . --file remote_schema
1002
1002
  supacloud lite db_pull --project_dir . --file reviewed_schema --baseline
1003
1003
  supacloud lite gen_types --project_dir . --output src/database.types.ts
1004
1004
  supacloud lite snapshot_create --project_dir . --output backups/lite.tar.gz
1005
- supacloud lite doctor --project_dir . --json
1006
- supacloud lite start --project_dir . --port 54321
1005
+ supacloud lite doctor --project_dir . --json --production --runtime_mode strict
1006
+ supacloud lite db_check --project_dir . --module_file supabase/db/modules.ts
1007
+ supacloud lite start --project_dir . --port 54321 --runtime_mode strict
1007
1008
  ```
1008
1009
 
1010
+ `auth create-user` is not exposed here. The standalone `supacloud-lite` binary
1011
+ reads the password from stdin and rejects password arguments.
1012
+
1009
1013
  The adapter resolves the executable in this order:
1010
1014
 
1011
1015
  1. `SUPACLOUD_LITE_CLI_BIN`
package/dist/index.js CHANGED
@@ -9318,6 +9318,7 @@ var ACTION_POLICY = {
9318
9318
  "db_reset",
9319
9319
  "db_diff",
9320
9320
  "db_pull",
9321
+ "db_check",
9321
9322
  "snapshot_create",
9322
9323
  "snapshot_restore",
9323
9324
  "upgrade",
@@ -10841,6 +10842,10 @@ var ApplicationPreviewReceiptSchema = _Object_({
10841
10842
  status: phaseStatus,
10842
10843
  activation_id: Union([ApplicationActivationIdSchema, Null()])
10843
10844
  }, closed4),
10845
+ functions: Optional(_Object_({
10846
+ status: phaseStatus,
10847
+ slugs: _Array_(String2({ pattern: "^[A-Za-z0-9_-]{1,128}$" }), { maxItems: 64 })
10848
+ }, closed4)),
10844
10849
  smoke_test: _Object_({
10845
10850
  status: phaseStatus,
10846
10851
  checks: _Array_(String2({ minLength: 1, maxLength: 64 }), { maxItems: 32 }),
@@ -16376,6 +16381,16 @@ Actions: list, get_config, deploy, deploy_bundle, config, source, activate, dele
16376
16381
  const tmpFile = join5(tmpDir, "index.ts");
16377
16382
  writeFileSync(tmpFile, sourceCode);
16378
16383
  try {
16384
+ if (/@ts-(?:ignore|nocheck|expect-error)\b/.test(sourceCode)) {
16385
+ const { scanProductionSource } = await import("@supacloud/compiler");
16386
+ const suppression = scanProductionSource({ rootDir: tmpDir, include: ["index.ts"] }).find((diagnostic) => diagnostic.code === "source-type-suppression");
16387
+ if (suppression) {
16388
+ return {
16389
+ ok: false,
16390
+ err: `Vibecoding guardrail violation: Type suppression directive at line ${suppression.line} is disallowed in Edge Functions. Please fix the underlying type mismatch instead of suppressing it.`
16391
+ };
16392
+ }
16393
+ }
16379
16394
  await runBunBuild([tmpFile, "--external", "*"]);
16380
16395
  return { ok: true };
16381
16396
  } catch (error) {
@@ -17937,6 +17952,10 @@ var ApplicationPreviewReceiptSchema2 = _Object_({
17937
17952
  test_secret: _Object_({ status: phase, name, value_issued: Literal(false) }, closed9),
17938
17953
  configuration_revision: _Object_({ status: phase, configuration_id: Union([ApplicationConfigurationIdSchema2, Null()]) }, closed9),
17939
17954
  application_activation: _Object_({ status: phase, activation_id: nullableUuid }, closed9),
17955
+ functions: Optional(_Object_({
17956
+ status: phase,
17957
+ slugs: _Array_(String2({ pattern: "^[A-Za-z0-9_-]{1,128}$" }), { maxItems: 64, uniqueItems: true })
17958
+ }, closed9)),
17940
17959
  smoke_test: _Object_({ status: phase, checks, passed: checks, failed: checks }, closed9)
17941
17960
  }, closed9),
17942
17961
  cleanup: _Object_({
@@ -18109,6 +18128,10 @@ var receiptSchema = _Object_({
18109
18128
  test_secret: _Object_({ status: phase2, name: String2({ pattern: "^[A-Z0-9_-]{1,128}$" }), value_issued: Literal(false) }, strict),
18110
18129
  configuration_revision: _Object_({ status: phase2, configuration_id: revision }, strict),
18111
18130
  application_activation: _Object_({ status: phase2, activation_id: Union([previewIdSchema, Null()]) }, strict),
18131
+ functions: Optional(_Object_({
18132
+ status: phase2,
18133
+ slugs: _Array_(String2({ pattern: "^[A-Za-z0-9_-]{1,128}$" }), { maxItems: 64, uniqueItems: true })
18134
+ }, strict)),
18112
18135
  smoke_test: _Object_({ status: phase2, checks: checks2, passed: checks2, failed: checks2 }, strict)
18113
18136
  }, strict),
18114
18137
  cleanup: _Object_({
@@ -18163,7 +18186,7 @@ function receipt(value, identity) {
18163
18186
  throw new Error("Incomplete preview readiness");
18164
18187
  }
18165
18188
  }
18166
- if (value.status === "cleaned" && (!value.cleanup.completed || value.cleanup.required || [
18189
+ if (value.status === "cleaned" && (!value.cleanup.completed || value.cleanup.required || value.resources.functions !== undefined && value.resources.functions.status !== "cleaned" || [
18167
18190
  value.resources.database_branch,
18168
18191
  value.resources.queue_namespace,
18169
18192
  value.resources.storage_namespace,
@@ -21418,6 +21441,9 @@ function buildLiteArgs(request) {
21418
21441
  if (request.file)
21419
21442
  args.push(request.file);
21420
21443
  break;
21444
+ case "db_check":
21445
+ args.push("db", "check");
21446
+ break;
21421
21447
  case "snapshot_create":
21422
21448
  args.push("snapshot", "create");
21423
21449
  break;
@@ -21456,6 +21482,17 @@ function buildLiteArgs(request) {
21456
21482
  if (request.baseline && request.action !== "db_pull")
21457
21483
  throw new Error("baseline requires db_pull");
21458
21484
  booleanFlag(args, "--baseline", request.baseline);
21485
+ if (request.production && request.action !== "doctor")
21486
+ throw new Error("production requires doctor");
21487
+ booleanFlag(args, "--production", request.production);
21488
+ if (request.module_file && request.action !== "db_check")
21489
+ throw new Error("module_file requires db_check");
21490
+ optionalFlag(args, "--module-file", request.module_file);
21491
+ optionalFlag(args, "--runtime-mode", request.runtime_mode);
21492
+ optionalFlag(args, "--postgres-dir", request.postgres_dir);
21493
+ optionalFlag(args, "--identity-module", request.identity_module);
21494
+ optionalFlag(args, "--external-auth-proxy-issuer", request.external_auth_proxy_issuer);
21495
+ optionalFlag(args, "--external-auth-proxy-redirect-origin", request.external_auth_proxy_redirect_origin);
21459
21496
  return args;
21460
21497
  }
21461
21498
  async function spawnLiteCommand(command, workdir, environment, inheritOutput) {
@@ -21538,7 +21575,8 @@ function registerLiteCliTools(server, options = {}) {
21538
21575
  "snapshot_restore",
21539
21576
  "upgrade",
21540
21577
  "inspect",
21541
- "doctor"
21578
+ "doctor",
21579
+ "db_check"
21542
21580
  ]), "Lite CLI action"),
21543
21581
  workdir: optional(String2(), "[*] Process working directory (default: current directory)"),
21544
21582
  project_dir: optional(String2(), "[*] Project containing supabase/"),
@@ -21566,7 +21604,14 @@ function registerLiteCliTools(server, options = {}) {
21566
21604
  force: optional(Boolean2(), "[snapshot_restore] Replace non-empty restore targets"),
21567
21605
  memory: optional(Boolean2(), "[*] Use an in-memory PGlite database"),
21568
21606
  json: optional(Boolean2(), "[doctor] Emit machine-readable output"),
21569
- baseline: optional(Boolean2(), "[db_pull] Record already-present schema in local migration history after review")
21607
+ baseline: optional(Boolean2(), "[db_pull] Record already-present schema in local migration history after review"),
21608
+ production: optional(Boolean2(), "[doctor] Add single-node production readiness checks"),
21609
+ runtime_mode: optional(stringEnum2(["development", "strict"]), "[*] Lite runtime mode"),
21610
+ postgres_dir: optional(String2(), "[native] Operator-managed PostgreSQL installation"),
21611
+ identity_module: optional(String2(), "[*] Trusted external identity bridge module"),
21612
+ external_auth_proxy_issuer: optional(String2(), "[start] Same-origin OAuth proxy issuer"),
21613
+ external_auth_proxy_redirect_origin: optional(String2(), "[start] Allowed logout redirect origins"),
21614
+ module_file: optional(String2(), "[db_check] Database module manifest")
21570
21615
  }, async (request) => {
21571
21616
  buildLiteArgs(request);
21572
21617
  const execution = await execute(request);
@@ -21950,16 +21995,16 @@ var starter_metadata_default = {
21950
21995
  generatedBy: "supacloud/starter-metadata-v1",
21951
21996
  packages: {
21952
21997
  compiler: {
21953
- version: "0.52.1"
21998
+ version: "0.53.0"
21954
21999
  },
21955
22000
  app: {
21956
- version: "0.34.1",
22001
+ version: "0.35.0",
21957
22002
  dependencies: {
21958
22003
  rxjs: "7.8.2"
21959
22004
  }
21960
22005
  },
21961
22006
  elysia: {
21962
- version: "0.36.3"
22007
+ version: "0.37.0"
21963
22008
  },
21964
22009
  commands: {
21965
22010
  version: "0.11.2"
@@ -21968,7 +22013,7 @@ var starter_metadata_default = {
21968
22013
  version: "0.15.2"
21969
22014
  },
21970
22015
  db: {
21971
- version: "0.20.2",
22016
+ version: "0.20.3",
21972
22017
  peerDependencies: {
21973
22018
  "drizzle-orm": "1.0.0-rc.5-5935859"
21974
22019
  },
@@ -21977,7 +22022,7 @@ var starter_metadata_default = {
21977
22022
  }
21978
22023
  },
21979
22024
  sdk: {
21980
- version: "0.45.4",
22025
+ version: "0.45.5",
21981
22026
  peerDependencies: {
21982
22027
  "@supabase/supabase-js": "^2.118.0"
21983
22028
  }
@@ -33586,7 +33631,7 @@ async function runProjectDeployment(http, args) {
33586
33631
  // package.json
33587
33632
  var package_default = {
33588
33633
  name: "@supacloud/cli",
33589
- version: "0.112.1",
33634
+ version: "0.113.0",
33590
33635
  description: "Project-scoped CLI for SupaCloud users",
33591
33636
  type: "module",
33592
33637
  main: "./dist/index.js",
@@ -33638,19 +33683,19 @@ var package_default = {
33638
33683
  directory: "packages/cli"
33639
33684
  },
33640
33685
  dependencies: {
33641
- "@supacloud/compiler": "^0.52.1",
33642
- "@supacloud/delivery": "0.23.1",
33643
- "@supacloud/db": "0.20.2",
33686
+ "@supacloud/compiler": "^0.53.0",
33687
+ "@supacloud/delivery": "0.24.0",
33688
+ "@supacloud/db": "0.20.3",
33644
33689
  typebox: "1.4.3"
33645
33690
  },
33646
33691
  overrides: {
33647
33692
  "@supacloud/contracts": "0.15.2",
33648
- "@supacloud/delivery": "0.23.1",
33693
+ "@supacloud/delivery": "0.24.0",
33649
33694
  "@graphql-tools/utils": "^12.0.4"
33650
33695
  },
33651
33696
  devDependencies: {
33652
33697
  "@supabase/supabase-js": "2.118.0",
33653
- "@supacloud/elysia": "0.36.3",
33698
+ "@supacloud/elysia": "0.37.0",
33654
33699
  "@types/bun": "^1.4.4",
33655
33700
  effect: "4.0.5",
33656
33701
  elysia: "2.0.0-rc.0",
@@ -50,6 +50,10 @@ declare const receiptSchema: Type.TObject<{
50
50
  status: Type.TEnum<("cleaned" | "failed" | "pending" | "ready")[]>;
51
51
  activation_id: Type.TUnion<[Type.TString, Type.TNull]>;
52
52
  }>;
53
+ functions: Type.TOptional<Type.TObject<{
54
+ status: Type.TEnum<("cleaned" | "failed" | "pending" | "ready")[]>;
55
+ slugs: Type.TArray<Type.TString>;
56
+ }>>;
53
57
  smoke_test: Type.TObject<{
54
58
  status: Type.TEnum<("cleaned" | "failed" | "pending" | "ready")[]>;
55
59
  checks: Type.TArray<Type.TString>;
@@ -64,6 +64,10 @@ export declare const ApplicationPreviewReceiptSchema: Type.TObject<{
64
64
  status: Type.TUnion<[Type.TLiteral<"pending">, Type.TLiteral<"ready">, Type.TLiteral<"failed">, Type.TLiteral<"cleaned">]>;
65
65
  activation_id: Type.TUnion<[Type.TString, Type.TNull]>;
66
66
  }>;
67
+ functions: Type.TOptional<Type.TObject<{
68
+ status: Type.TUnion<[Type.TLiteral<"pending">, Type.TLiteral<"ready">, Type.TLiteral<"failed">, Type.TLiteral<"cleaned">]>;
69
+ slugs: Type.TArray<Type.TString>;
70
+ }>>;
67
71
  smoke_test: Type.TObject<{
68
72
  status: Type.TUnion<[Type.TLiteral<"pending">, Type.TLiteral<"ready">, Type.TLiteral<"failed">, Type.TLiteral<"cleaned">]>;
69
73
  checks: Type.TArray<Type.TString>;
@@ -151,6 +155,10 @@ export declare function parsePreviewReceipt(value: unknown, identity: Applicatio
151
155
  status: "cleaned" | "failed" | "pending" | "ready";
152
156
  activation_id: string | null;
153
157
  };
158
+ functions?: {
159
+ status: "cleaned" | "failed" | "pending" | "ready";
160
+ slugs: string[];
161
+ } | undefined;
154
162
  smoke_test: {
155
163
  status: "cleaned" | "failed" | "pending" | "ready";
156
164
  checks: string[];
@@ -214,6 +222,10 @@ export declare function parsePreviewList(value: unknown, identity: ApplicationWo
214
222
  status: "cleaned" | "failed" | "pending" | "ready";
215
223
  activation_id: string | null;
216
224
  };
225
+ functions?: {
226
+ status: "cleaned" | "failed" | "pending" | "ready";
227
+ slugs: string[];
228
+ } | undefined;
217
229
  smoke_test: {
218
230
  status: "cleaned" | "failed" | "pending" | "ready";
219
231
  checks: string[];
@@ -1,6 +1,6 @@
1
1
  export { resolveLiteCommand } from "./lite-cli-command";
2
2
  import { type ToolServer } from "../tool-server";
3
- export type LiteCliAction = "version" | "start" | "migrate" | "status" | "keys" | "gen_types" | "db_reset" | "db_diff" | "db_pull" | "snapshot_create" | "snapshot_restore" | "upgrade" | "inspect" | "doctor";
3
+ export type LiteCliAction = "version" | "start" | "migrate" | "status" | "keys" | "gen_types" | "db_reset" | "db_diff" | "db_pull" | "db_check" | "snapshot_create" | "snapshot_restore" | "upgrade" | "inspect" | "doctor";
4
4
  export interface LiteCliArgs {
5
5
  action: LiteCliAction;
6
6
  workdir?: string;
@@ -30,6 +30,13 @@ export interface LiteCliArgs {
30
30
  memory?: boolean;
31
31
  json?: boolean;
32
32
  baseline?: boolean;
33
+ production?: boolean;
34
+ runtime_mode?: "development" | "strict";
35
+ postgres_dir?: string;
36
+ identity_module?: string;
37
+ external_auth_proxy_issuer?: string;
38
+ external_auth_proxy_redirect_origin?: string;
39
+ module_file?: string;
33
40
  }
34
41
  export interface LiteCliExecutionResult {
35
42
  exitCode: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@supacloud/cli",
3
- "version": "0.112.1",
3
+ "version": "0.113.0",
4
4
  "description": "Project-scoped CLI for SupaCloud users",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -52,19 +52,19 @@
52
52
  "directory": "packages/cli"
53
53
  },
54
54
  "dependencies": {
55
- "@supacloud/compiler": "^0.52.1",
56
- "@supacloud/delivery": "0.23.1",
57
- "@supacloud/db": "0.20.2",
55
+ "@supacloud/compiler": "^0.53.0",
56
+ "@supacloud/delivery": "0.24.0",
57
+ "@supacloud/db": "0.20.3",
58
58
  "typebox": "1.4.3"
59
59
  },
60
60
  "overrides": {
61
61
  "@supacloud/contracts": "0.15.2",
62
- "@supacloud/delivery": "0.23.1",
62
+ "@supacloud/delivery": "0.24.0",
63
63
  "@graphql-tools/utils": "^12.0.4"
64
64
  },
65
65
  "devDependencies": {
66
66
  "@supabase/supabase-js": "2.118.0",
67
- "@supacloud/elysia": "0.36.3",
67
+ "@supacloud/elysia": "0.37.0",
68
68
  "@types/bun": "^1.4.4",
69
69
  "effect": "4.0.5",
70
70
  "elysia": "2.0.0-rc.0",
@@ -19,7 +19,7 @@ Load this reference when selecting a command surface or when a user asks an AI t
19
19
  | Pull official Supabase configuration | `supabase config_pull` | Preview by default; local write requires `dry_run=false` and `yes`; not SupaCloud settings |
20
20
  | Run the official local stack | `supabase stack_start`, `stack_prepare`, `stack_status`, `stack_stop` | Docker default; native alpha requires `SUPACLOUD_ENABLE_NATIVE_STACK=1` |
21
21
  | Remove the official local stack | `supabase stack_destroy` | Local data loss; requires `confirm_destroy` and `yes` |
22
- | Capture Lite drift | `lite db_diff`, `lite db_pull` | Draft outside migrations; only reviewed already-present DDL may use `baseline` |
22
+ | Capture Lite drift | `lite db_diff`, `lite db_pull`, `lite db_check` | Draft outside migrations; only reviewed already-present DDL may use `baseline`; `db_check` is read-only |
23
23
  | Rebuild local database | `supabase db_reset` | Local only; preserve required seed behavior |
24
24
  | Inspect or back up a remote database | `supabase db_pull`, `migration_list`, `db_dump`, `gen_types` | Requires explicit PostgreSQL DSN; redact it |
25
25
  | Replay the release-canary fixture stage receipt | `release release_canary_fixture_stage_replay` | Dual-bind Management project context and that project's service-role application origin; accepts only the exact subject/request UUID pair and a strict idempotent receipt |