@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 +6 -2
- package/dist/index.js +59 -14
- package/dist/shared/tools/application-preview-tools.d.ts +4 -0
- package/dist/shared/tools/application-workflow-schemas.d.ts +12 -0
- package/dist/shared/tools/lite-cli-tools.d.ts +8 -1
- package/package.json +6 -6
- package/skills/supacloud/references/command-map.md +1 -1
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
|
|
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.
|
|
21998
|
+
version: "0.53.0"
|
|
21954
21999
|
},
|
|
21955
22000
|
app: {
|
|
21956
|
-
version: "0.
|
|
22001
|
+
version: "0.35.0",
|
|
21957
22002
|
dependencies: {
|
|
21958
22003
|
rxjs: "7.8.2"
|
|
21959
22004
|
}
|
|
21960
22005
|
},
|
|
21961
22006
|
elysia: {
|
|
21962
|
-
version: "0.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
33642
|
-
"@supacloud/delivery": "0.
|
|
33643
|
-
"@supacloud/db": "0.20.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
56
|
-
"@supacloud/delivery": "0.
|
|
57
|
-
"@supacloud/db": "0.20.
|
|
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.
|
|
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.
|
|
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 |
|