@supacloud/cli 0.29.0 → 0.31.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 +57 -0
- package/dist/index.js +1057 -61
- package/package.json +1 -1
- package/skills/supacloud-cli/references/command-map.md +2 -1
package/README.md
CHANGED
|
@@ -142,6 +142,9 @@ supacloud-cli release postgrest_status --ref abc123
|
|
|
142
142
|
supacloud-cli release postgrest_restart --ref abc123
|
|
143
143
|
supacloud-cli release release_canary_fixture_stage_replay --ref abc123 \
|
|
144
144
|
--subject <central-subject-uuid> --request_id <stage-request-uuid>
|
|
145
|
+
supacloud-cli release release_canary_fixture_disable_replay --ref abc123 \
|
|
146
|
+
--fixture_id <fixture-uuid> --disable_request_id <disable-request-uuid> \
|
|
147
|
+
--issuer <issuer-url> --subject <central-subject-uuid>
|
|
145
148
|
```
|
|
146
149
|
|
|
147
150
|
Backup creation reports success only after the CLI verifies exactly one new
|
|
@@ -171,6 +174,17 @@ reads the selected project's authoritative endpoint projection and requires the
|
|
|
171
174
|
configured application origin to match its API origin or alias. Production
|
|
172
175
|
confirmation is mandatory.
|
|
173
176
|
|
|
177
|
+
`release_canary_fixture_disable_replay` performs one non-retried call to the
|
|
178
|
+
fixed `fa_release_canary_fixture_disable` PostgREST RPC using the selected
|
|
179
|
+
project's application service-role origin. Its receipt must contain exactly
|
|
180
|
+
`fixtureId`, `state="disabled"`, and a boolean `idempotent`; both the first
|
|
181
|
+
disable (`idempotent=false`) and same-request replay (`idempotent=true`) are
|
|
182
|
+
valid. The CLI then calls the existing fixed
|
|
183
|
+
`fa_release_canary_fixture_pending` RPC with only the exact issuer and subject
|
|
184
|
+
query parameters and accepts only its authoritative JSON boolean `false`
|
|
185
|
+
read-back. The fixture binding comes from the validated disable receipt before
|
|
186
|
+
reporting success. Management endpoint projection is checked before and after.
|
|
187
|
+
|
|
174
188
|
The legacy `.env` fallback is unclassified and therefore does not enable the
|
|
175
189
|
production confirmation gate. Production automation must select a `prod` or
|
|
176
190
|
`production` profile, or set `SUPACLOUD_ENV=production` together with a complete
|
|
@@ -218,6 +232,7 @@ supacloud-cli task_events inspect_webhook --ref abc123
|
|
|
218
232
|
supacloud-cli database query --sql "select now()"
|
|
219
233
|
supacloud-cli database query --ref abc123 --file ./queries/vector-search.sql
|
|
220
234
|
supacloud-cli database migration_inventory --ref abc123
|
|
235
|
+
supacloud-cli database lint_migrations --dir supabase/migrations
|
|
221
236
|
supacloud-cli database push_migrations --ref abc123 --dir supabase/migrations --dry_run
|
|
222
237
|
supacloud-cli supabase migration_new --name add_accounts
|
|
223
238
|
supacloud-cli supabase db_diff --schema public --name add_accounts
|
|
@@ -263,6 +278,11 @@ it never empties a bucket. Mutation receipts bind `project_ref`, `bucket_id`,
|
|
|
263
278
|
name with another version, or a local version with another name, before either
|
|
264
279
|
dry-run reporting or apply can continue. This keeps the preview consistent with
|
|
265
280
|
the server conflict that would otherwise occur after deployment starts.
|
|
281
|
+
`push_migrations` requires canonical string migration identities; the narrower
|
|
282
|
+
`baseline_migrations` compatibility path also accepts historical safe-integer
|
|
283
|
+
versions and normalizes them before comparison. Repeated historical `cli_push`
|
|
284
|
+
names are treated as generic labels; version and exact content remain the
|
|
285
|
+
authority.
|
|
266
286
|
Mutation failures use the release-control receipt schema and never include the
|
|
267
287
|
server response body. `OUTCOME_UNKNOWN` requires a fresh migration inventory
|
|
268
288
|
read before deciding whether a retry is safe. A migration push failure also
|
|
@@ -271,6 +291,43 @@ can reconcile a partially completed sequence without exposing SQL. Baseline
|
|
|
271
291
|
success requires a bounded migration-inventory readback that confirms every
|
|
272
292
|
requested version, name, baseline marker, and checksum.
|
|
273
293
|
|
|
294
|
+
`database lint_migrations` is local-only and works without Management API
|
|
295
|
+
credentials. Inspect one source with `--sql`, `--file`, or `--dir`; these inputs
|
|
296
|
+
are mutually exclusive. `--strict` (or `--fail_on_high`) exits non-zero for HIGH
|
|
297
|
+
findings, `--fail_on_medium` also fails on MEDIUM findings, and `--json` emits a
|
|
298
|
+
structured report. The analyzer detects destructive DDL (`DROP TABLE`,
|
|
299
|
+
`DROP COLUMN`, `TRUNCATE`, `RENAME`), table-locking risks, opaque `DO` blocks,
|
|
300
|
+
procedural definitions/calls that require manual review, and statements that
|
|
301
|
+
cannot run in the transactional migration executor. Empty migrations,
|
|
302
|
+
unterminated strings/comments/dollar quotes, role or cluster management,
|
|
303
|
+
external database access, server file/process access, transaction-boundary or
|
|
304
|
+
session-identity control, advisory locks, public-schema rename/removal, and
|
|
305
|
+
direct migration-ledger schema, table, recorder, or privilege mutation fail
|
|
306
|
+
before the first remote migration write. Ledger indexes, triggers, rules,
|
|
307
|
+
policies, comments, security labels, and table maintenance commands are covered
|
|
308
|
+
by the same fail-closed rule. Top-level `COPY` is also rejected
|
|
309
|
+
because the HTTP migration executor cannot provide a safe client stream and
|
|
310
|
+
server-file targets cross the project boundary. Unicode-escaped identifiers
|
|
311
|
+
(`U&"..."`) are rejected because the policy cannot safely canonicalize protected
|
|
312
|
+
schema and ledger names. One matching outer `BEGIN`/`COMMIT` wrapper is removed
|
|
313
|
+
because the platform owns the transaction.
|
|
314
|
+
Adding a `NOT NULL` column is assessed per top-level `ALTER TABLE` subcommand;
|
|
315
|
+
function-based defaults remain MEDIUM risk because they may rewrite the table.
|
|
316
|
+
Dry-run exits non-zero for statements the transactional executor cannot apply,
|
|
317
|
+
even when strict destructive-risk mode is not enabled.
|
|
318
|
+
`CREATE/DROP INDEX CONCURRENTLY`, `VACUUM`, and other non-transactional work must
|
|
319
|
+
run through an approved maintenance path outside `push_migrations`.
|
|
320
|
+
|
|
321
|
+
Migration applications and DDL executions send PostgREST schema reload
|
|
322
|
+
notifications (`NOTIFY pgrst_<ref>, 'reload schema'`) so schema changes become
|
|
323
|
+
visible without a manual PostgREST restart. Responses distinguish `notified`
|
|
324
|
+
from `notification_failed` and include `ddl_committed=true` when the platform
|
|
325
|
+
can prove the DDL committed. Admin SQL with explicit transaction control or
|
|
326
|
+
indirect `CALL`/`DO` execution omits `ddl_committed`; for
|
|
327
|
+
`database create_table_rls`, a committed DDL batch followed by a failed reload
|
|
328
|
+
returns `PARTIAL_SUCCESS` instead of claiming complete success or an unknown DDL
|
|
329
|
+
outcome.
|
|
330
|
+
|
|
274
331
|
`edge_functions deploy --path` bundles local TypeScript and dependencies with
|
|
275
332
|
Bun and runs a local syntax check before upload. The Management API validates and
|
|
276
333
|
normalizes the final server-side artifact against the multi-tenant Edge Runtime
|