@supacloud/cli 0.112.0 → 0.112.2
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 +7 -3
- package/dist/index.js +62 -24
- package/dist/shared/tools/application-preview-tools.d.ts +11 -11
- package/dist/shared/tools/application-schemas.d.ts +1 -1
- package/dist/shared/tools/application-tools.d.ts +3 -3
- package/dist/shared/tools/application-workflow-schemas.d.ts +54 -54
- package/dist/shared/tools/lite-cli-tools.d.ts +8 -1
- package/dist/shared/tools/remote-dev-tools.d.ts +2 -2
- package/package.json +9 -9
- package/skills/supacloud/references/command-map.md +1 -1
package/README.md
CHANGED
|
@@ -492,7 +492,7 @@ Example configuration write file:
|
|
|
492
492
|
"configuration_id": "01234567-89ab-4def-8123-456789abcdef",
|
|
493
493
|
"expected_configuration_id": null,
|
|
494
494
|
"configuration": {
|
|
495
|
-
"bun_version": "1.4.
|
|
495
|
+
"bun_version": "1.4.4",
|
|
496
496
|
"targets": [
|
|
497
497
|
{
|
|
498
498
|
"name": "api",
|
|
@@ -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
|
@@ -6770,9 +6770,14 @@ function IsTime(value, strictTimeZone = true) {
|
|
|
6770
6770
|
}
|
|
6771
6771
|
|
|
6772
6772
|
// node_modules/typebox/build/format/date_time.mjs
|
|
6773
|
+
var DATE_TIME_SUFFIX = /^(?:\[!?(?:(?!\.{1,2}[/\]])[A-Za-z._][A-Za-z._0-9+-]{0,13}(?:\/(?!\.{1,2}[/\]])[A-Za-z._][A-Za-z._0-9+-]{0,13})*|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9])\](?:\[!?[a-z_][a-z_0-9-]*=[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*\])*|(?:\[!?[a-z_][a-z_0-9-]*=[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*\])*)$/;
|
|
6773
6774
|
function IsDateTime(value) {
|
|
6774
|
-
const
|
|
6775
|
-
|
|
6775
|
+
const index = value.indexOf("[");
|
|
6776
|
+
const datetime = index === -1 ? value : value.slice(0, index);
|
|
6777
|
+
if (index !== -1 && !DATE_TIME_SUFFIX.test(value.slice(index)))
|
|
6778
|
+
return false;
|
|
6779
|
+
const split = datetime.split(/T/i);
|
|
6780
|
+
return split.length === 2 && IsDate2(split[0]) && IsTime(split[1]);
|
|
6776
6781
|
}
|
|
6777
6782
|
|
|
6778
6783
|
// node_modules/typebox/build/format/duration.mjs
|
|
@@ -9313,6 +9318,7 @@ var ACTION_POLICY = {
|
|
|
9313
9318
|
"db_reset",
|
|
9314
9319
|
"db_diff",
|
|
9315
9320
|
"db_pull",
|
|
9321
|
+
"db_check",
|
|
9316
9322
|
"snapshot_create",
|
|
9317
9323
|
"snapshot_restore",
|
|
9318
9324
|
"upgrade",
|
|
@@ -16371,6 +16377,16 @@ Actions: list, get_config, deploy, deploy_bundle, config, source, activate, dele
|
|
|
16371
16377
|
const tmpFile = join5(tmpDir, "index.ts");
|
|
16372
16378
|
writeFileSync(tmpFile, sourceCode);
|
|
16373
16379
|
try {
|
|
16380
|
+
if (/@ts-(?:ignore|nocheck|expect-error)\b/.test(sourceCode)) {
|
|
16381
|
+
const { scanProductionSource } = await import("@supacloud/compiler");
|
|
16382
|
+
const suppression = scanProductionSource({ rootDir: tmpDir, include: ["index.ts"] }).find((diagnostic) => diagnostic.code === "source-type-suppression");
|
|
16383
|
+
if (suppression) {
|
|
16384
|
+
return {
|
|
16385
|
+
ok: false,
|
|
16386
|
+
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.`
|
|
16387
|
+
};
|
|
16388
|
+
}
|
|
16389
|
+
}
|
|
16374
16390
|
await runBunBuild([tmpFile, "--external", "*"]);
|
|
16375
16391
|
return { ok: true };
|
|
16376
16392
|
} catch (error) {
|
|
@@ -21413,6 +21429,9 @@ function buildLiteArgs(request) {
|
|
|
21413
21429
|
if (request.file)
|
|
21414
21430
|
args.push(request.file);
|
|
21415
21431
|
break;
|
|
21432
|
+
case "db_check":
|
|
21433
|
+
args.push("db", "check");
|
|
21434
|
+
break;
|
|
21416
21435
|
case "snapshot_create":
|
|
21417
21436
|
args.push("snapshot", "create");
|
|
21418
21437
|
break;
|
|
@@ -21451,6 +21470,17 @@ function buildLiteArgs(request) {
|
|
|
21451
21470
|
if (request.baseline && request.action !== "db_pull")
|
|
21452
21471
|
throw new Error("baseline requires db_pull");
|
|
21453
21472
|
booleanFlag(args, "--baseline", request.baseline);
|
|
21473
|
+
if (request.production && request.action !== "doctor")
|
|
21474
|
+
throw new Error("production requires doctor");
|
|
21475
|
+
booleanFlag(args, "--production", request.production);
|
|
21476
|
+
if (request.module_file && request.action !== "db_check")
|
|
21477
|
+
throw new Error("module_file requires db_check");
|
|
21478
|
+
optionalFlag(args, "--module-file", request.module_file);
|
|
21479
|
+
optionalFlag(args, "--runtime-mode", request.runtime_mode);
|
|
21480
|
+
optionalFlag(args, "--postgres-dir", request.postgres_dir);
|
|
21481
|
+
optionalFlag(args, "--identity-module", request.identity_module);
|
|
21482
|
+
optionalFlag(args, "--external-auth-proxy-issuer", request.external_auth_proxy_issuer);
|
|
21483
|
+
optionalFlag(args, "--external-auth-proxy-redirect-origin", request.external_auth_proxy_redirect_origin);
|
|
21454
21484
|
return args;
|
|
21455
21485
|
}
|
|
21456
21486
|
async function spawnLiteCommand(command, workdir, environment, inheritOutput) {
|
|
@@ -21533,7 +21563,8 @@ function registerLiteCliTools(server, options = {}) {
|
|
|
21533
21563
|
"snapshot_restore",
|
|
21534
21564
|
"upgrade",
|
|
21535
21565
|
"inspect",
|
|
21536
|
-
"doctor"
|
|
21566
|
+
"doctor",
|
|
21567
|
+
"db_check"
|
|
21537
21568
|
]), "Lite CLI action"),
|
|
21538
21569
|
workdir: optional(String2(), "[*] Process working directory (default: current directory)"),
|
|
21539
21570
|
project_dir: optional(String2(), "[*] Project containing supabase/"),
|
|
@@ -21561,7 +21592,14 @@ function registerLiteCliTools(server, options = {}) {
|
|
|
21561
21592
|
force: optional(Boolean2(), "[snapshot_restore] Replace non-empty restore targets"),
|
|
21562
21593
|
memory: optional(Boolean2(), "[*] Use an in-memory PGlite database"),
|
|
21563
21594
|
json: optional(Boolean2(), "[doctor] Emit machine-readable output"),
|
|
21564
|
-
baseline: optional(Boolean2(), "[db_pull] Record already-present schema in local migration history after review")
|
|
21595
|
+
baseline: optional(Boolean2(), "[db_pull] Record already-present schema in local migration history after review"),
|
|
21596
|
+
production: optional(Boolean2(), "[doctor] Add single-node production readiness checks"),
|
|
21597
|
+
runtime_mode: optional(stringEnum2(["development", "strict"]), "[*] Lite runtime mode"),
|
|
21598
|
+
postgres_dir: optional(String2(), "[native] Operator-managed PostgreSQL installation"),
|
|
21599
|
+
identity_module: optional(String2(), "[*] Trusted external identity bridge module"),
|
|
21600
|
+
external_auth_proxy_issuer: optional(String2(), "[start] Same-origin OAuth proxy issuer"),
|
|
21601
|
+
external_auth_proxy_redirect_origin: optional(String2(), "[start] Allowed logout redirect origins"),
|
|
21602
|
+
module_file: optional(String2(), "[db_check] Database module manifest")
|
|
21565
21603
|
}, async (request) => {
|
|
21566
21604
|
buildLiteArgs(request);
|
|
21567
21605
|
const execution = await execute(request);
|
|
@@ -21945,25 +21983,25 @@ var starter_metadata_default = {
|
|
|
21945
21983
|
generatedBy: "supacloud/starter-metadata-v1",
|
|
21946
21984
|
packages: {
|
|
21947
21985
|
compiler: {
|
|
21948
|
-
version: "0.52.
|
|
21986
|
+
version: "0.52.2"
|
|
21949
21987
|
},
|
|
21950
21988
|
app: {
|
|
21951
|
-
version: "0.
|
|
21989
|
+
version: "0.35.0",
|
|
21952
21990
|
dependencies: {
|
|
21953
21991
|
rxjs: "7.8.2"
|
|
21954
21992
|
}
|
|
21955
21993
|
},
|
|
21956
21994
|
elysia: {
|
|
21957
|
-
version: "0.
|
|
21995
|
+
version: "0.37.0"
|
|
21958
21996
|
},
|
|
21959
21997
|
commands: {
|
|
21960
|
-
version: "0.11.
|
|
21998
|
+
version: "0.11.2"
|
|
21961
21999
|
},
|
|
21962
22000
|
contracts: {
|
|
21963
|
-
version: "0.15.
|
|
22001
|
+
version: "0.15.2"
|
|
21964
22002
|
},
|
|
21965
22003
|
db: {
|
|
21966
|
-
version: "0.20.
|
|
22004
|
+
version: "0.20.3",
|
|
21967
22005
|
peerDependencies: {
|
|
21968
22006
|
"drizzle-orm": "1.0.0-rc.5-5935859"
|
|
21969
22007
|
},
|
|
@@ -21972,7 +22010,7 @@ var starter_metadata_default = {
|
|
|
21972
22010
|
}
|
|
21973
22011
|
},
|
|
21974
22012
|
sdk: {
|
|
21975
|
-
version: "0.45.
|
|
22013
|
+
version: "0.45.5",
|
|
21976
22014
|
peerDependencies: {
|
|
21977
22015
|
"@supabase/supabase-js": "^2.118.0"
|
|
21978
22016
|
}
|
|
@@ -22297,7 +22335,7 @@ function baseFiles(name, sdkDependencies) {
|
|
|
22297
22335
|
version: "0.0.0",
|
|
22298
22336
|
private: true,
|
|
22299
22337
|
type: "module",
|
|
22300
|
-
engines: { bun: ">=1.4.
|
|
22338
|
+
engines: { bun: ">=1.4.4" },
|
|
22301
22339
|
scripts: {
|
|
22302
22340
|
compile: "bun --no-env-file node_modules/@supacloud/compiler/dist/cli.js compile",
|
|
22303
22341
|
"check:generated": "bun --no-env-file node_modules/@supacloud/compiler/dist/cli.js check",
|
|
@@ -22321,7 +22359,7 @@ function baseFiles(name, sdkDependencies) {
|
|
|
22321
22359
|
},
|
|
22322
22360
|
devDependencies: {
|
|
22323
22361
|
"@supacloud/compiler": `^${compilerMetadata.version}`,
|
|
22324
|
-
"@types/bun": "^1.4.
|
|
22362
|
+
"@types/bun": "^1.4.4",
|
|
22325
22363
|
typescript: "^7.0.2"
|
|
22326
22364
|
}
|
|
22327
22365
|
}),
|
|
@@ -25452,7 +25490,7 @@ function appStarterFiles(name) {
|
|
|
25452
25490
|
version: "0.0.0",
|
|
25453
25491
|
private: true,
|
|
25454
25492
|
type: "module",
|
|
25455
|
-
engines: { bun: ">=1.4.
|
|
25493
|
+
engines: { bun: ">=1.4.4" },
|
|
25456
25494
|
scripts: {
|
|
25457
25495
|
compile: "bun --no-env-file node_modules/@supacloud/compiler/dist/cli.js compile",
|
|
25458
25496
|
"check:generated": "bun --no-env-file node_modules/@supacloud/compiler/dist/cli.js check",
|
|
@@ -25488,7 +25526,7 @@ function appStarterFiles(name) {
|
|
|
25488
25526
|
devDependencies: {
|
|
25489
25527
|
"@supacloud/compiler": `^${compilerMetadata2.version}`,
|
|
25490
25528
|
"drizzle-kit": dbMetadata.devDependencies["drizzle-kit"],
|
|
25491
|
-
"@types/bun": "^1.4.
|
|
25529
|
+
"@types/bun": "^1.4.4",
|
|
25492
25530
|
typescript: "^7.0.2"
|
|
25493
25531
|
}
|
|
25494
25532
|
}),
|
|
@@ -33581,7 +33619,7 @@ async function runProjectDeployment(http, args) {
|
|
|
33581
33619
|
// package.json
|
|
33582
33620
|
var package_default = {
|
|
33583
33621
|
name: "@supacloud/cli",
|
|
33584
|
-
version: "0.112.
|
|
33622
|
+
version: "0.112.2",
|
|
33585
33623
|
description: "Project-scoped CLI for SupaCloud users",
|
|
33586
33624
|
type: "module",
|
|
33587
33625
|
main: "./dist/index.js",
|
|
@@ -33633,20 +33671,20 @@ var package_default = {
|
|
|
33633
33671
|
directory: "packages/cli"
|
|
33634
33672
|
},
|
|
33635
33673
|
dependencies: {
|
|
33636
|
-
"@supacloud/compiler": "^0.52.
|
|
33637
|
-
"@supacloud/delivery": "0.23.
|
|
33638
|
-
"@supacloud/db": "0.20.
|
|
33639
|
-
typebox: "1.4.
|
|
33674
|
+
"@supacloud/compiler": "^0.52.2",
|
|
33675
|
+
"@supacloud/delivery": "0.23.1",
|
|
33676
|
+
"@supacloud/db": "0.20.3",
|
|
33677
|
+
typebox: "1.4.3"
|
|
33640
33678
|
},
|
|
33641
33679
|
overrides: {
|
|
33642
|
-
"@supacloud/contracts": "0.15.
|
|
33643
|
-
"@supacloud/delivery": "0.23.
|
|
33680
|
+
"@supacloud/contracts": "0.15.2",
|
|
33681
|
+
"@supacloud/delivery": "0.23.1",
|
|
33644
33682
|
"@graphql-tools/utils": "^12.0.4"
|
|
33645
33683
|
},
|
|
33646
33684
|
devDependencies: {
|
|
33647
33685
|
"@supabase/supabase-js": "2.118.0",
|
|
33648
|
-
"@supacloud/elysia": "0.
|
|
33649
|
-
"@types/bun": "^1.4.
|
|
33686
|
+
"@supacloud/elysia": "0.37.0",
|
|
33687
|
+
"@types/bun": "^1.4.4",
|
|
33650
33688
|
effect: "4.0.5",
|
|
33651
33689
|
elysia: "2.0.0-rc.0",
|
|
33652
33690
|
typescript: "^7.0.2"
|
|
@@ -5,7 +5,7 @@ export declare const APPLICATION_PREVIEW_FIELDS: {
|
|
|
5
5
|
preview_id: Type.TOptional<Type.TString>;
|
|
6
6
|
branch_ref: Type.TOptional<Type.TString>;
|
|
7
7
|
branch_name: Type.TOptional<Type.TString>;
|
|
8
|
-
data_mode: Type.TOptional<Type.TEnum<("
|
|
8
|
+
data_mode: Type.TOptional<Type.TEnum<("full_clone" | "schema_only")[]>>;
|
|
9
9
|
ttl_seconds: Type.TOptional<Type.TInteger>;
|
|
10
10
|
wait: Type.TOptional<Type.TBoolean>;
|
|
11
11
|
timeout_seconds: Type.TOptional<Type.TInteger>;
|
|
@@ -18,40 +18,40 @@ declare const receiptSchema: Type.TObject<{
|
|
|
18
18
|
environment_id: Type.TString;
|
|
19
19
|
release_id: Type.TString;
|
|
20
20
|
expires_at: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
|
|
21
|
-
status: Type.TEnum<("
|
|
21
|
+
status: Type.TEnum<("cleaned" | "failed" | "planned" | "provisioning" | "ready")[]>;
|
|
22
22
|
resources: Type.TObject<{
|
|
23
23
|
build_artifact: Type.TObject<{
|
|
24
|
-
status: Type.TEnum<("
|
|
24
|
+
status: Type.TEnum<("cleaned" | "failed" | "pending" | "ready")[]>;
|
|
25
25
|
release_id: Type.TString;
|
|
26
26
|
}>;
|
|
27
27
|
database_branch: Type.TObject<{
|
|
28
|
-
status: Type.TEnum<("
|
|
28
|
+
status: Type.TEnum<("cleaned" | "failed" | "pending" | "ready")[]>;
|
|
29
29
|
branch_ref: Type.TString;
|
|
30
|
-
data_mode: Type.TEnum<("
|
|
30
|
+
data_mode: Type.TEnum<("full_clone" | "schema_only")[]>;
|
|
31
31
|
}>;
|
|
32
32
|
queue_namespace: Type.TObject<{
|
|
33
|
-
status: Type.TEnum<("
|
|
33
|
+
status: Type.TEnum<("cleaned" | "failed" | "pending" | "ready")[]>;
|
|
34
34
|
namespace: Type.TString;
|
|
35
35
|
}>;
|
|
36
36
|
storage_namespace: Type.TObject<{
|
|
37
|
-
status: Type.TEnum<("
|
|
37
|
+
status: Type.TEnum<("cleaned" | "failed" | "pending" | "ready")[]>;
|
|
38
38
|
namespace: Type.TString;
|
|
39
39
|
}>;
|
|
40
40
|
test_secret: Type.TObject<{
|
|
41
|
-
status: Type.TEnum<("
|
|
41
|
+
status: Type.TEnum<("cleaned" | "failed" | "pending" | "ready")[]>;
|
|
42
42
|
name: Type.TString;
|
|
43
43
|
value_issued: Type.TLiteral<false>;
|
|
44
44
|
}>;
|
|
45
45
|
configuration_revision: Type.TObject<{
|
|
46
|
-
status: Type.TEnum<("
|
|
46
|
+
status: Type.TEnum<("cleaned" | "failed" | "pending" | "ready")[]>;
|
|
47
47
|
configuration_id: Type.TUnion<[Type.TString, Type.TNull]>;
|
|
48
48
|
}>;
|
|
49
49
|
application_activation: Type.TObject<{
|
|
50
|
-
status: Type.TEnum<("
|
|
50
|
+
status: Type.TEnum<("cleaned" | "failed" | "pending" | "ready")[]>;
|
|
51
51
|
activation_id: Type.TUnion<[Type.TString, Type.TNull]>;
|
|
52
52
|
}>;
|
|
53
53
|
smoke_test: Type.TObject<{
|
|
54
|
-
status: Type.TEnum<("
|
|
54
|
+
status: Type.TEnum<("cleaned" | "failed" | "pending" | "ready")[]>;
|
|
55
55
|
checks: Type.TArray<Type.TString>;
|
|
56
56
|
passed: Type.TArray<Type.TString>;
|
|
57
57
|
failed: Type.TArray<Type.TString>;
|
|
@@ -147,7 +147,7 @@ export declare const ApplicationPromotionPlanSchema: import("typebox").TObject<{
|
|
|
147
147
|
confirmed: import("typebox").TLiteral<false>;
|
|
148
148
|
}>;
|
|
149
149
|
action: import("typebox").TUnion<[import("typebox").TLiteral<"promote">, import("typebox").TLiteral<"no-op">, import("typebox").TLiteral<"blocked">]>;
|
|
150
|
-
blockers: import("typebox").TArray<import("typebox").TEnum<("
|
|
150
|
+
blockers: import("typebox").TArray<import("typebox").TEnum<("BACKUP_REQUIRED" | "MIGRATION_CONFLICT" | "MIGRATION_PENDING" | "OPERATOR_PROVISIONING_REQUIRED" | "SOURCE_NOT_ACTIVE" | "SOURCE_NOT_READY" | "SOURCE_RECEIPT_UNCONFIRMED" | "SOURCE_SMOKE_UNVERIFIED" | "TARGET_CONFIGURATION_MISMATCH" | "TARGET_CONFIGURATION_MISSING")[]>>;
|
|
151
151
|
steps: import("typebox").TArray<import("typebox").TString>;
|
|
152
152
|
execution_performed: import("typebox").TLiteral<false>;
|
|
153
153
|
data_recovery: import("typebox").TLiteral<"separate-required">;
|
|
@@ -5,11 +5,11 @@ export declare const APPLICATION_TOOL_SCHEMA: {
|
|
|
5
5
|
preview_id: Type.TOptional<Type.TString>;
|
|
6
6
|
branch_ref: Type.TOptional<Type.TString>;
|
|
7
7
|
branch_name: Type.TOptional<Type.TString>;
|
|
8
|
-
data_mode: Type.TOptional<Type.TEnum<("
|
|
8
|
+
data_mode: Type.TOptional<Type.TEnum<("full_clone" | "schema_only")[]>>;
|
|
9
9
|
ttl_seconds: Type.TOptional<Type.TInteger>;
|
|
10
10
|
wait: Type.TOptional<Type.TBoolean>;
|
|
11
11
|
timeout_seconds: Type.TOptional<Type.TInteger>;
|
|
12
|
-
action: Type.TEnum<("
|
|
12
|
+
action: Type.TEnum<("activate_release" | "cleanup_preview" | "create_preview" | "deploy_application" | "deploy_release" | "get_configuration" | "get_deploy_plan" | "get_deployment_evidence" | "get_history" | "get_preview" | "get_preview_plan" | "get_promotion_plan" | "get_promotion_status" | "get_release" | "get_release_transfer_plan" | "get_rollback_snapshot" | "get_runtime" | "list_previews" | "list_releases" | "logs" | "promote_application" | "put_configuration" | "reconcile_activation" | "reconcile_preview" | "reconcile_promotion" | "retire_activation" | "rollback_release" | "transfer_release" | "upload_release")[]>;
|
|
13
13
|
ref: Type.TString;
|
|
14
14
|
id: Type.TString;
|
|
15
15
|
environment_id: Type.TOptional<Type.TString>;
|
|
@@ -86,7 +86,7 @@ export declare const APPLICATION_TOOL_SCHEMA: {
|
|
|
86
86
|
confirmed: Type.TLiteral<false>;
|
|
87
87
|
}>;
|
|
88
88
|
action: Type.TUnion<[Type.TLiteral<"promote">, Type.TLiteral<"no-op">, Type.TLiteral<"blocked">]>;
|
|
89
|
-
blockers: Type.TArray<Type.TEnum<("
|
|
89
|
+
blockers: Type.TArray<Type.TEnum<("BACKUP_REQUIRED" | "MIGRATION_CONFLICT" | "MIGRATION_PENDING" | "OPERATOR_PROVISIONING_REQUIRED" | "SOURCE_NOT_ACTIVE" | "SOURCE_NOT_READY" | "SOURCE_RECEIPT_UNCONFIRMED" | "SOURCE_SMOKE_UNVERIFIED" | "TARGET_CONFIGURATION_MISMATCH" | "TARGET_CONFIGURATION_MISSING")[]>>;
|
|
90
90
|
steps: Type.TArray<Type.TString>;
|
|
91
91
|
execution_performed: Type.TLiteral<false>;
|
|
92
92
|
data_recovery: Type.TLiteral<"separate-required">;
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { Type } from "typebox";
|
|
2
2
|
export declare const ApplicationPromotionResultSchema: Type.TObject<{
|
|
3
|
+
project_ref: Type.TString;
|
|
4
|
+
application_id: Type.TString;
|
|
5
|
+
environment_id: Type.TString;
|
|
3
6
|
mutation_id: Type.TString;
|
|
4
7
|
activation_id: Type.TString;
|
|
5
8
|
plan_sha256: Type.TString;
|
|
6
9
|
action: Type.TLiteral<"promote">;
|
|
7
10
|
replayed: Type.TBoolean;
|
|
11
|
+
}>;
|
|
12
|
+
export declare const ApplicationPromotionStatusSchema: Type.TObject<{
|
|
8
13
|
project_ref: Type.TString;
|
|
9
14
|
application_id: Type.TString;
|
|
10
15
|
environment_id: Type.TString;
|
|
11
|
-
}>;
|
|
12
|
-
export declare const ApplicationPromotionStatusSchema: Type.TObject<{
|
|
13
16
|
mutation: Type.TUnknown;
|
|
14
17
|
promotion: Type.TObject<{
|
|
15
18
|
phase: Type.TUnion<[Type.TLiteral<"prepared">, Type.TLiteral<"transferring">, Type.TLiteral<"migrating">, Type.TLiteral<"activating">, Type.TLiteral<"verifying">, Type.TNull]>;
|
|
@@ -20,11 +23,12 @@ export declare const ApplicationPromotionStatusSchema: Type.TObject<{
|
|
|
20
23
|
backup_id: Type.TUnion<[Type.TString, Type.TNull]>;
|
|
21
24
|
data_recovery: Type.TLiteral<"separate-required">;
|
|
22
25
|
}>;
|
|
26
|
+
}>;
|
|
27
|
+
export declare const ApplicationPreviewReceiptSchema: Type.TObject<{
|
|
23
28
|
project_ref: Type.TString;
|
|
24
29
|
application_id: Type.TString;
|
|
25
30
|
environment_id: Type.TString;
|
|
26
|
-
|
|
27
|
-
export declare const ApplicationPreviewReceiptSchema: Type.TObject<{
|
|
31
|
+
schema: Type.TLiteral<"supacloud.application-preview.v1">;
|
|
28
32
|
preview_id: Type.TString;
|
|
29
33
|
release_id: Type.TString;
|
|
30
34
|
expires_at: Type.TUnion<[Type.TString, Type.TNull]>;
|
|
@@ -78,10 +82,6 @@ export declare const ApplicationPreviewReceiptSchema: Type.TObject<{
|
|
|
78
82
|
source_configuration_id: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
|
|
79
83
|
created_at: Type.TOptional<Type.TString>;
|
|
80
84
|
updated_at: Type.TOptional<Type.TString>;
|
|
81
|
-
project_ref: Type.TString;
|
|
82
|
-
application_id: Type.TString;
|
|
83
|
-
environment_id: Type.TString;
|
|
84
|
-
schema: Type.TLiteral<"supacloud.application-preview.v1">;
|
|
85
85
|
}>;
|
|
86
86
|
export interface ApplicationWorkflowScope {
|
|
87
87
|
project_ref: string;
|
|
@@ -91,19 +91,19 @@ export interface ApplicationWorkflowScope {
|
|
|
91
91
|
export declare function parsePromotionStatus(value: unknown, identity: ApplicationWorkflowScope & {
|
|
92
92
|
mutation_id: string;
|
|
93
93
|
}): {
|
|
94
|
-
mutation: import("../mutation-protocol").SafeMutationStatus;
|
|
95
94
|
project_ref: string;
|
|
96
95
|
application_id: string;
|
|
97
96
|
environment_id: string;
|
|
98
97
|
promotion: {
|
|
99
|
-
|
|
98
|
+
phase: "activating" | "migrating" | "prepared" | "transferring" | "verifying" | null;
|
|
99
|
+
plan_sha256: string | null;
|
|
100
100
|
activation_id: string | null;
|
|
101
101
|
release_id: string | null;
|
|
102
102
|
configuration_id: string | null;
|
|
103
|
-
|
|
103
|
+
backup_id: string | null;
|
|
104
104
|
data_recovery: "separate-required";
|
|
105
|
-
phase: "prepared" | "transferring" | "migrating" | "activating" | "verifying" | null;
|
|
106
105
|
};
|
|
106
|
+
mutation: import("../mutation-protocol").SafeMutationStatus;
|
|
107
107
|
};
|
|
108
108
|
export declare function parsePreviewReceipt(value: unknown, identity: ApplicationWorkflowScope & {
|
|
109
109
|
preview_id?: string;
|
|
@@ -112,125 +112,125 @@ export declare function parsePreviewReceipt(value: unknown, identity: Applicatio
|
|
|
112
112
|
data_mode?: string;
|
|
113
113
|
configuration_id?: string;
|
|
114
114
|
}): {
|
|
115
|
-
created_at?: string | undefined;
|
|
116
|
-
updated_at?: string | undefined;
|
|
117
|
-
branch_name?: string | undefined;
|
|
118
|
-
queue_name?: string | undefined;
|
|
119
|
-
test_secret_name?: string | undefined;
|
|
120
|
-
source_configuration_id?: string | null | undefined;
|
|
121
115
|
project_ref: string;
|
|
122
116
|
application_id: string;
|
|
123
117
|
environment_id: string;
|
|
124
|
-
status: "ready" | "failed" | "cleaned" | "planned" | "provisioning";
|
|
125
118
|
schema: "supacloud.application-preview.v1";
|
|
119
|
+
preview_id: string;
|
|
120
|
+
release_id: string;
|
|
121
|
+
expires_at: string | null;
|
|
122
|
+
status: "cleaned" | "failed" | "planned" | "provisioning" | "ready";
|
|
126
123
|
resources: {
|
|
127
124
|
build_artifact: {
|
|
128
|
-
status: "
|
|
125
|
+
status: "cleaned" | "failed" | "pending" | "ready";
|
|
129
126
|
release_id: string;
|
|
130
127
|
};
|
|
131
128
|
database_branch: {
|
|
132
|
-
status: "
|
|
129
|
+
status: "cleaned" | "failed" | "pending" | "ready";
|
|
133
130
|
branch_ref: string;
|
|
134
|
-
data_mode: "
|
|
131
|
+
data_mode: "full_clone" | "schema_only";
|
|
135
132
|
};
|
|
136
133
|
queue_namespace: {
|
|
137
|
-
status: "
|
|
134
|
+
status: "cleaned" | "failed" | "pending" | "ready";
|
|
138
135
|
namespace: string;
|
|
139
136
|
};
|
|
140
137
|
storage_namespace: {
|
|
141
|
-
status: "
|
|
138
|
+
status: "cleaned" | "failed" | "pending" | "ready";
|
|
142
139
|
namespace: string;
|
|
143
140
|
};
|
|
144
141
|
test_secret: {
|
|
142
|
+
status: "cleaned" | "failed" | "pending" | "ready";
|
|
145
143
|
name: string;
|
|
146
|
-
status: "pending" | "ready" | "failed" | "cleaned";
|
|
147
144
|
value_issued: false;
|
|
148
145
|
};
|
|
149
146
|
configuration_revision: {
|
|
150
|
-
status: "
|
|
147
|
+
status: "cleaned" | "failed" | "pending" | "ready";
|
|
151
148
|
configuration_id: string | null;
|
|
152
149
|
};
|
|
153
150
|
application_activation: {
|
|
154
|
-
status: "
|
|
151
|
+
status: "cleaned" | "failed" | "pending" | "ready";
|
|
155
152
|
activation_id: string | null;
|
|
156
153
|
};
|
|
157
154
|
smoke_test: {
|
|
158
|
-
status: "
|
|
155
|
+
status: "cleaned" | "failed" | "pending" | "ready";
|
|
159
156
|
checks: string[];
|
|
160
|
-
failed: string[];
|
|
161
157
|
passed: string[];
|
|
158
|
+
failed: string[];
|
|
162
159
|
};
|
|
163
160
|
};
|
|
164
|
-
release_id: string;
|
|
165
|
-
preview_id: string;
|
|
166
|
-
expires_at: string | null;
|
|
167
161
|
cleanup: {
|
|
168
162
|
required: boolean;
|
|
169
|
-
error: string | null;
|
|
170
163
|
completed: boolean;
|
|
164
|
+
error: string | null;
|
|
171
165
|
};
|
|
166
|
+
branch_name?: string | undefined;
|
|
167
|
+
queue_name?: string | undefined;
|
|
168
|
+
test_secret_name?: string | undefined;
|
|
169
|
+
source_configuration_id?: string | null | undefined;
|
|
170
|
+
created_at?: string | undefined;
|
|
171
|
+
updated_at?: string | undefined;
|
|
172
172
|
};
|
|
173
173
|
export declare function parsePreviewList(value: unknown, identity: ApplicationWorkflowScope): {
|
|
174
174
|
project_ref: string;
|
|
175
175
|
application_id: string;
|
|
176
176
|
environment_id: string;
|
|
177
177
|
previews: {
|
|
178
|
-
created_at?: string | undefined;
|
|
179
|
-
updated_at?: string | undefined;
|
|
180
|
-
branch_name?: string | undefined;
|
|
181
|
-
queue_name?: string | undefined;
|
|
182
|
-
test_secret_name?: string | undefined;
|
|
183
|
-
source_configuration_id?: string | null | undefined;
|
|
184
178
|
project_ref: string;
|
|
185
179
|
application_id: string;
|
|
186
180
|
environment_id: string;
|
|
187
|
-
status: "ready" | "failed" | "cleaned" | "planned" | "provisioning";
|
|
188
181
|
schema: "supacloud.application-preview.v1";
|
|
182
|
+
preview_id: string;
|
|
183
|
+
release_id: string;
|
|
184
|
+
expires_at: string | null;
|
|
185
|
+
status: "cleaned" | "failed" | "planned" | "provisioning" | "ready";
|
|
189
186
|
resources: {
|
|
190
187
|
build_artifact: {
|
|
191
|
-
status: "
|
|
188
|
+
status: "cleaned" | "failed" | "pending" | "ready";
|
|
192
189
|
release_id: string;
|
|
193
190
|
};
|
|
194
191
|
database_branch: {
|
|
195
|
-
status: "
|
|
192
|
+
status: "cleaned" | "failed" | "pending" | "ready";
|
|
196
193
|
branch_ref: string;
|
|
197
|
-
data_mode: "
|
|
194
|
+
data_mode: "full_clone" | "schema_only";
|
|
198
195
|
};
|
|
199
196
|
queue_namespace: {
|
|
200
|
-
status: "
|
|
197
|
+
status: "cleaned" | "failed" | "pending" | "ready";
|
|
201
198
|
namespace: string;
|
|
202
199
|
};
|
|
203
200
|
storage_namespace: {
|
|
204
|
-
status: "
|
|
201
|
+
status: "cleaned" | "failed" | "pending" | "ready";
|
|
205
202
|
namespace: string;
|
|
206
203
|
};
|
|
207
204
|
test_secret: {
|
|
205
|
+
status: "cleaned" | "failed" | "pending" | "ready";
|
|
208
206
|
name: string;
|
|
209
|
-
status: "pending" | "ready" | "failed" | "cleaned";
|
|
210
207
|
value_issued: false;
|
|
211
208
|
};
|
|
212
209
|
configuration_revision: {
|
|
213
|
-
status: "
|
|
210
|
+
status: "cleaned" | "failed" | "pending" | "ready";
|
|
214
211
|
configuration_id: string | null;
|
|
215
212
|
};
|
|
216
213
|
application_activation: {
|
|
217
|
-
status: "
|
|
214
|
+
status: "cleaned" | "failed" | "pending" | "ready";
|
|
218
215
|
activation_id: string | null;
|
|
219
216
|
};
|
|
220
217
|
smoke_test: {
|
|
221
|
-
status: "
|
|
218
|
+
status: "cleaned" | "failed" | "pending" | "ready";
|
|
222
219
|
checks: string[];
|
|
223
|
-
failed: string[];
|
|
224
220
|
passed: string[];
|
|
221
|
+
failed: string[];
|
|
225
222
|
};
|
|
226
223
|
};
|
|
227
|
-
release_id: string;
|
|
228
|
-
preview_id: string;
|
|
229
|
-
expires_at: string | null;
|
|
230
224
|
cleanup: {
|
|
231
225
|
required: boolean;
|
|
232
|
-
error: string | null;
|
|
233
226
|
completed: boolean;
|
|
227
|
+
error: string | null;
|
|
234
228
|
};
|
|
229
|
+
branch_name?: string | undefined;
|
|
230
|
+
queue_name?: string | undefined;
|
|
231
|
+
test_secret_name?: string | undefined;
|
|
232
|
+
source_configuration_id?: string | null | undefined;
|
|
233
|
+
created_at?: string | undefined;
|
|
234
|
+
updated_at?: string | undefined;
|
|
235
235
|
}[];
|
|
236
236
|
};
|
|
@@ -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;
|
|
@@ -19,8 +19,8 @@ export interface RemoteDevToolOptions {
|
|
|
19
19
|
runDatabase?: DatabaseCallback;
|
|
20
20
|
}
|
|
21
21
|
export declare const remoteDevToolSchema: {
|
|
22
|
-
action: Type.TEnum<("
|
|
23
|
-
target: Type.TOptional<Type.TEnum<("
|
|
22
|
+
action: Type.TEnum<("migrate" | "status" | "sync" | "watch")[]>;
|
|
23
|
+
target: Type.TOptional<Type.TEnum<("db" | "frontend" | "functions" | "project")[]>>;
|
|
24
24
|
project_dir: Type.TOptional<Type.TString>;
|
|
25
25
|
remote_root: Type.TOptional<Type.TString>;
|
|
26
26
|
remote_host: Type.TOptional<Type.TString>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@supacloud/cli",
|
|
3
|
-
"version": "0.112.
|
|
3
|
+
"version": "0.112.2",
|
|
4
4
|
"description": "Project-scoped CLI for SupaCloud users",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -52,20 +52,20 @@
|
|
|
52
52
|
"directory": "packages/cli"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@supacloud/compiler": "^0.52.
|
|
56
|
-
"@supacloud/delivery": "0.23.
|
|
57
|
-
"@supacloud/db": "0.20.
|
|
58
|
-
"typebox": "1.4.
|
|
55
|
+
"@supacloud/compiler": "^0.52.2",
|
|
56
|
+
"@supacloud/delivery": "0.23.1",
|
|
57
|
+
"@supacloud/db": "0.20.3",
|
|
58
|
+
"typebox": "1.4.3"
|
|
59
59
|
},
|
|
60
60
|
"overrides": {
|
|
61
|
-
"@supacloud/contracts": "0.15.
|
|
62
|
-
"@supacloud/delivery": "0.23.
|
|
61
|
+
"@supacloud/contracts": "0.15.2",
|
|
62
|
+
"@supacloud/delivery": "0.23.1",
|
|
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.
|
|
68
|
-
"@types/bun": "^1.4.
|
|
67
|
+
"@supacloud/elysia": "0.37.0",
|
|
68
|
+
"@types/bun": "^1.4.4",
|
|
69
69
|
"effect": "4.0.5",
|
|
70
70
|
"elysia": "2.0.0-rc.0",
|
|
71
71
|
"typescript": "^7.0.2"
|
|
@@ -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 |
|