@zitadel/cli 1.0.0-alpha.23 → 1.0.0-alpha.24
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 +513 -655
- package/SKILLS.md +52 -45
- package/dist/index.mjs +230 -512
- package/dist/index.mjs.map +1 -1
- package/oclif.manifest.json +25 -581
- package/package.json +9 -6
package/SKILLS.md
CHANGED
|
@@ -57,10 +57,10 @@ Each invocation prints one JSON object:
|
|
|
57
57
|
see what setup created versus merged into (your `package.json` is an
|
|
58
58
|
`update`). `data.files_written` remains the flat list — deduplicated file
|
|
59
59
|
paths only, covering both scaffolded and `.zitadel/` resource files.
|
|
60
|
-
- `setup`
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
- `setup` never writes `.zitadel/branding/` or publishes a branding
|
|
61
|
+
revision: the login renders the maintained `<zitadel-login>` component.
|
|
62
|
+
Taking ownership of the widget template is the separate, opt-in
|
|
63
|
+
`branding eject` command.
|
|
64
64
|
- `E_LOCAL_SERVER_NOT_RUNNING`: start the local runtime with
|
|
65
65
|
`npx @zitadel/cli@alpha start`, then retry with `--server local`.
|
|
66
66
|
- `E_NOT_FOUND`: an HTTP 404 from the target server. With the platform's
|
|
@@ -151,7 +151,7 @@ over reading `--help` per command. It contacts no server.
|
|
|
151
151
|
out field by field on a terminal and prints the whole object when piped;
|
|
152
152
|
`--json` is unchanged either way.
|
|
153
153
|
- `create` / `update <id>` take the body either as one flag per schema field
|
|
154
|
-
(`--name`, `--
|
|
154
|
+
(`--name`, `--relation`, …; run `<resource> create --help` for the
|
|
155
155
|
list, where required fields are marked `(required)`) or as a whole JSON
|
|
156
156
|
object via `--data '<json>'` / `--file <path>` (`--file -` reads stdin). A
|
|
157
157
|
field flag overrides the same key in `--data`. A user's schema-defined
|
|
@@ -189,7 +189,18 @@ The groups below mirror the ones `zitadel --help` prints.
|
|
|
189
189
|
default user schema and login flow into
|
|
190
190
|
`.zitadel/schemas/default-human-user.json` and
|
|
191
191
|
`.zitadel/flows/default-login.json`, uploads them through the schema and flow
|
|
192
|
-
APIs, then seeds `.zitadel/state.json` so `plan` is immediately empty.
|
|
192
|
+
APIs, then seeds `.zitadel/state.json` so `plan` is immediately empty.
|
|
193
|
+
Against a local server that hosts the platform project and has a local admin
|
|
194
|
+
(the default `start` configuration), setup also attaches the project to the
|
|
195
|
+
local admin's team: it writes `team_id` and `claimed_at` into
|
|
196
|
+
`.zitadel/secret` and prints
|
|
197
|
+
`Project owned by admin@zitadel.localhost (team ...)`, so a later `claim`
|
|
198
|
+
returns `status: "skipped"` with `reason: "already-claimed"`. The step is
|
|
199
|
+
best-effort. When the attempt fails on a platform-hosting runtime, setup
|
|
200
|
+
warns and the normal claim nudge applies. When `start` opted out of the
|
|
201
|
+
platform bootstrap there is no local admin and no claim surface, so setup
|
|
202
|
+
skips the step silently, emits no nudge, and the project has no owning
|
|
203
|
+
team. Agents
|
|
193
204
|
must pass `--framework` when scaffolding into a fresh directory; interactive
|
|
194
205
|
humans can omit it and choose from the prompt. Supported floors: Next.js 15+
|
|
195
206
|
and React 18+ — `setup` and `doctor` fail with `E_UNSUPPORTED_PROJECT_SHAPE`
|
|
@@ -217,12 +228,9 @@ The groups below mirror the ones `zitadel --help` prints.
|
|
|
217
228
|
email only; `consumer` adds given and family name; `business` also adds a
|
|
218
229
|
`companyName` attribute and overlays work-email copy on the generated auth
|
|
219
230
|
pages via the SDK's `businessLocales`; asked before `--preset` and recorded
|
|
220
|
-
in `zitadel.json`), `--
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
the interactive wizard asks this as its final question with the built-in
|
|
224
|
-
template preselected — omit the flag in non-interactive runs to keep the
|
|
225
|
-
built-in template and no branding files), `--skip-install`.
|
|
231
|
+
in `zitadel.json`), `--skip-install`. Setup does not ask about or apply a
|
|
232
|
+
login design: it writes no `.zitadel/branding/` files and publishes no
|
|
233
|
+
branding revision (`branding eject` is the opt-in for that).
|
|
226
234
|
On Next and Nuxt, the scaffolded auth/profile pages derive their embedding
|
|
227
235
|
posture from the app: a fresh scaffold (setup created the skeleton) pins
|
|
228
236
|
`variant="page"` full-page chrome, while a pre-existing app embeds
|
|
@@ -241,11 +249,8 @@ The groups below mirror the ones `zitadel --help` prints.
|
|
|
241
249
|
link color `--zl-link`); the `suppress-header` attribute
|
|
242
250
|
(wrapper prop `suppressHeader`) visually hides the widget's own heading
|
|
243
251
|
block when the page already carries one, keeping it in the accessibility
|
|
244
|
-
tree.
|
|
245
|
-
|
|
246
|
-
`hero_url`, from `.zitadel/branding/branding.json`; `hero` falls back to
|
|
247
|
-
editable text), and setup warns when a widget-posture app picks `split`
|
|
248
|
-
or `split-right`.
|
|
252
|
+
tree. Page layout around the widget (split screens, hero panes) is the
|
|
253
|
+
app's own code, not a Zitadel template.
|
|
249
254
|
- `claim` — claim the project for a team to make it permanent. Mints a
|
|
250
255
|
short-lived link, opens it in a browser, and blocks until the developer
|
|
251
256
|
finishes signing in there, then records `claimed_at` and `team_id` in
|
|
@@ -399,38 +404,41 @@ docker --image <ref>` remains the explicit image override for debugging.
|
|
|
399
404
|
`liquid_template`) renders as `(<n> lines, sha256:…)` when it is created or
|
|
400
405
|
unchanged, and as a changed-line diff when it moved — not as one escaped
|
|
401
406
|
line. Read the file itself for full content.
|
|
407
|
+
- No command takes `--environment` (`-e`, `--env`). `plan`, `apply` and the
|
|
408
|
+
resource commands work on the project's resources and never selected an
|
|
409
|
+
environment; `variables` names its owner with `--project-level`. The flag
|
|
410
|
+
returns when the platform's environments settle, and `deploy` (ADR 035) is
|
|
411
|
+
what will put config onto one.
|
|
402
412
|
- `schemas list` — inspect the revision history of a user-schema, filtered by
|
|
403
413
|
`--object-type` (e.g. `human-user`). Non-interactive/`--json` prints one row
|
|
404
414
|
per revision (newest first); interactive adds a picker that fetches and
|
|
405
415
|
pretty-prints the selected revision body.
|
|
406
416
|
- `branding eject` — take ownership of the login template: scaffold
|
|
407
417
|
`.zitadel/branding/` (a `branding.json` descriptor plus the `login.liquid`
|
|
408
|
-
template) from a shipped design, `--design centered|
|
|
409
|
-
or an interactive picker on a TTY. `plan`/`apply` then publish every edit as
|
|
418
|
+
template) from a shipped design, `--design centered|minimal` (the default card, or
|
|
419
|
+
the same form without card chrome) or an interactive picker on a TTY. `plan`/`apply` then publish every edit as
|
|
410
420
|
a new branding revision.
|
|
411
|
-
- `variables list|get|set|delete` — manage the
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
`
|
|
431
|
-
|
|
432
|
-
which reads the project's environments); `delete` needs `--force` when
|
|
433
|
-
non-interactive.
|
|
421
|
+
- `variables list|get|set|delete` — manage the variables and secrets a
|
|
422
|
+
configuration document references as `${{ NAME }}`. Every command addresses
|
|
423
|
+
one owner, and `--project-level` is the only one the CLI can name today, so it
|
|
424
|
+
is **required**: a run without it fails with `E_VALIDATION`, on a terminal as
|
|
425
|
+
in a script. The platform also keeps variables per environment, but the CLI
|
|
426
|
+
cannot address those until the platform's environments settle; `--environment`
|
|
427
|
+
returns then, and every command written today keeps its meaning because the
|
|
428
|
+
owner was named rather than assumed. Owners do not inherit from one another —
|
|
429
|
+
a value entered at the project level is **not** seen by an environment
|
|
430
|
+
(ADR 062 §4). `set` takes its value from a prompt or from stdin and never from
|
|
431
|
+
a flag, so a credential never reaches `argv`; `--secret` stores it encrypted,
|
|
432
|
+
after which it can be replaced but never read back (`list` reports it as held,
|
|
433
|
+
and `--json` omits the value key entirely). `set --as number|boolean` stores a
|
|
434
|
+
JSON number or boolean instead of a string, so a whole-field `${{ NAME }}`
|
|
435
|
+
reference resolves to that type; it is refused with `--secret`, and an integer
|
|
436
|
+
too large to store exactly is refused rather than rounded. Output follows the
|
|
437
|
+
resource commands: on a pipe, `list` prints tab-separated `name`/`value` rows
|
|
438
|
+
(a secret's value is `(secret)`) and `get` prints the whole record as JSON,
|
|
439
|
+
which carries no `value` key for a secret. There is no `pull` and no bulk
|
|
440
|
+
import. `set` and `delete` honour `--dry-run` and make no change; `delete`
|
|
441
|
+
needs `--force` when non-interactive.
|
|
434
442
|
|
|
435
443
|
## Golden path
|
|
436
444
|
|
|
@@ -501,9 +509,8 @@ then re-run `plan` and `apply`. Schema and flow files are synced from
|
|
|
501
509
|
(branding) are synced from `.zitadel/branding/`: a single `branding.json`
|
|
502
510
|
descriptor (layout, asset URLs) plus a sibling `login.liquid` LiquidJS
|
|
503
511
|
template referenced as `"liquid_template": { "$file": "./login.liquid" }`. Scaffold them with the
|
|
504
|
-
`branding eject` command (`--design centered|
|
|
505
|
-
interactive picker on a TTY)
|
|
506
|
-
`setup --design <name>`, which also publishes revision 1. Branding is
|
|
512
|
+
`branding eject` command (`--design centered|minimal`,
|
|
513
|
+
interactive picker on a TTY); setup never scaffolds them. Branding is
|
|
507
514
|
revisioned and immutable: every edit — including a `.liquid`-only edit —
|
|
508
515
|
plans as a `revise` and `apply` publishes a new revision; the login serves
|
|
509
516
|
the newest one. `plan` validates templates with the authoritative LiquidJS
|