seamless-cli 0.12.1 → 0.14.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 +98 -26
- package/dist/commands/adminShared.js +43 -0
- package/dist/commands/adminShared.js.map +1 -1
- package/dist/commands/check.js +67 -42
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/config.js +7 -2
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/helpTopics.js +35 -13
- package/dist/commands/helpTopics.js.map +1 -1
- package/dist/commands/init.js +71 -42
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/org.js +9 -3
- package/dist/commands/org.js.map +1 -1
- package/dist/commands/sessions.js +8 -3
- package/dist/commands/sessions.js.map +1 -1
- package/dist/commands/users.js +6 -10
- package/dist/commands/users.js.map +1 -1
- package/dist/commands/verify.js +3 -2
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/whoami.js +21 -3
- package/dist/commands/whoami.js.map +1 -1
- package/dist/core/admin.js +20 -4
- package/dist/core/admin.js.map +1 -1
- package/dist/core/authClient.js +71 -5
- package/dist/core/authClient.js.map +1 -1
- package/dist/core/config.js +55 -3
- package/dist/core/config.js.map +1 -1
- package/dist/core/errors.js +32 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/fetch.js +17 -1
- package/dist/core/fetch.js.map +1 -1
- package/dist/core/images.js +9 -3
- package/dist/core/images.js.map +1 -1
- package/dist/core/interactiveLogin.js +12 -13
- package/dist/core/interactiveLogin.js.map +1 -1
- package/dist/core/jwksKid.js +40 -0
- package/dist/core/jwksKid.js.map +1 -0
- package/dist/core/keychain.js +13 -26
- package/dist/core/keychain.js.map +1 -1
- package/dist/core/loginFlow.js +39 -14
- package/dist/core/loginFlow.js.map +1 -1
- package/dist/core/output.js +9 -29
- package/dist/core/output.js.map +1 -1
- package/dist/core/redact.js +68 -0
- package/dist/core/redact.js.map +1 -0
- package/dist/core/secrets.js +0 -3
- package/dist/core/secrets.js.map +1 -1
- package/dist/core/systemConfig.js +39 -4
- package/dist/core/systemConfig.js.map +1 -1
- package/dist/core/templates.js +6 -4
- package/dist/core/templates.js.map +1 -1
- package/dist/generators/admin/admin.js +102 -1
- package/dist/generators/admin/admin.js.map +1 -1
- package/dist/generators/auth/auth.js +2 -59
- package/dist/generators/auth/auth.js.map +1 -1
- package/dist/generators/docker/docker.js +0 -20
- package/dist/generators/docker/docker.js.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/prompts/projectSetup.js +1 -12
- package/dist/prompts/projectSetup.js.map +1 -1
- package/package.json +2 -2
- package/verify/adapter-app/package.json +1 -1
- package/verify/adapter-fastify-app/package.json +1 -1
- package/verify/docker-compose.verify.yml +22 -20
- package/dist/core/jwks.js +0 -19
- package/dist/core/jwks.js.map +0 -1
- package/dist/utils/writeEnv.js +0 -9
- package/dist/utils/writeEnv.js.map +0 -1
package/README.md
CHANGED
|
@@ -201,11 +201,12 @@ Depending on your selections, the CLI generates a project like this:
|
|
|
201
201
|
|
|
202
202
|
```text
|
|
203
203
|
my-app/
|
|
204
|
-
├─ auth/
|
|
205
|
-
├─ web/
|
|
206
|
-
├─ api/
|
|
207
|
-
├─
|
|
208
|
-
|
|
204
|
+
├─ auth/ # Seamless Auth server (local auth mode only)
|
|
205
|
+
├─ web/ # React web application (optional)
|
|
206
|
+
├─ api/ # Express or Fastify API server (optional)
|
|
207
|
+
├─ admin/ # Admin console source (--admin=source only)
|
|
208
|
+
├─ docker-compose.yml # not written for a managed project
|
|
209
|
+
└─ seamless.config.json
|
|
209
210
|
```
|
|
210
211
|
|
|
211
212
|
All services are preconfigured to work together.
|
|
@@ -228,14 +229,13 @@ If you choose Docker during setup:
|
|
|
228
229
|
docker compose up
|
|
229
230
|
```
|
|
230
231
|
|
|
231
|
-
This starts
|
|
232
|
-
|
|
233
|
-
- PostgreSQL
|
|
234
|
-
- Auth server
|
|
235
|
-
- API server
|
|
236
|
-
- Web app
|
|
232
|
+
This starts PostgreSQL, the auth server, the API server, and the web app, plus a
|
|
233
|
+
standalone admin console container under `--admin=image` or `--admin=source`.
|
|
237
234
|
|
|
238
235
|
All services are configured to communicate correctly inside the container network.
|
|
236
|
+
Ports are published on `127.0.0.1` only: the auth server returns OTP codes in the
|
|
237
|
+
response for local login, which would be an authentication bypass for anyone else
|
|
238
|
+
on the network.
|
|
239
239
|
|
|
240
240
|
---
|
|
241
241
|
|
|
@@ -256,11 +256,14 @@ cd auth
|
|
|
256
256
|
npm install
|
|
257
257
|
|
|
258
258
|
npm run db:create
|
|
259
|
-
npm run
|
|
259
|
+
npm run migrate:up
|
|
260
260
|
|
|
261
261
|
npm run dev
|
|
262
262
|
```
|
|
263
263
|
|
|
264
|
+
The Docker path runs both of these for you at container start, so they are only
|
|
265
|
+
needed when the auth server runs on the host.
|
|
266
|
+
|
|
264
267
|
---
|
|
265
268
|
|
|
266
269
|
#### 3. Start the API
|
|
@@ -283,6 +286,54 @@ npm run dev
|
|
|
283
286
|
|
|
284
287
|
---
|
|
285
288
|
|
|
289
|
+
## Checking and verifying
|
|
290
|
+
|
|
291
|
+
Two commands answer two different questions: is *this project* healthy, and does the
|
|
292
|
+
*whole auth surface* still behave.
|
|
293
|
+
|
|
294
|
+
### `seamless check`
|
|
295
|
+
|
|
296
|
+
Health-checks the project in the current directory, reading `seamless.config.json` to
|
|
297
|
+
decide what applies. A local project gets the Docker and Compose checks; a managed one
|
|
298
|
+
skips them and validates the remote instance instead. Every check runs, so one failure
|
|
299
|
+
never hides the rest.
|
|
300
|
+
|
|
301
|
+
```bash
|
|
302
|
+
seamless check # always exits 0, whatever it reported
|
|
303
|
+
seamless check --strict # exit 1 if any check failed, for a CI gate
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
The exit status is 0 without `--strict` because this output has been parsed by scripts
|
|
307
|
+
since before the flag existed.
|
|
308
|
+
|
|
309
|
+
### `seamless verify`
|
|
310
|
+
|
|
311
|
+
The cross-package conformance harness. It stands up the ecosystem with Docker Compose
|
|
312
|
+
(Postgres, the auth API, an Express adapter, a Fastify adapter, and the web starter),
|
|
313
|
+
runs a Playwright matrix over it, and prints a flow x layer pass/fail grid plus JUnit and
|
|
314
|
+
HTML reports. It ships with the package, so it needs no checkout of its own, but it does
|
|
315
|
+
need Docker and a sibling `seamless-auth-api` source tree to build the auth server from.
|
|
316
|
+
|
|
317
|
+
```bash
|
|
318
|
+
seamless verify # everything, against the published SDKs
|
|
319
|
+
seamless verify --api-only # fast pass: the API layer alone
|
|
320
|
+
seamless verify --no-react # skip the browser layer, keep the adapters
|
|
321
|
+
seamless verify --local # build @seamless-auth/* from source first
|
|
322
|
+
seamless verify --filter=passkey # one flow (the = form only)
|
|
323
|
+
seamless verify --keep-up # leave the stack running afterwards
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
`--local` is the pre-publish check: it builds and packs the local SDK source rather than
|
|
327
|
+
installing from npm, so an SDK regression surfaces before a release rather than after.
|
|
328
|
+
The browser layer runs once per web template in the registry, each scoped to the flows
|
|
329
|
+
its `template.json` declares.
|
|
330
|
+
|
|
331
|
+
Sibling repositories are resolved next to this one and can be pointed elsewhere with
|
|
332
|
+
`SEAMLESS_API_DIR`, `SEAMLESS_SERVER_DIR`, `SEAMLESS_REACT_SDK_DIR`, and
|
|
333
|
+
`SEAMLESS_TEMPLATES_DIR`.
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
286
337
|
## Creating the first admin
|
|
287
338
|
|
|
288
339
|
`init` asks for your email and writes it to the auth server as `OWNER_EMAIL`. The auth server grants
|
|
@@ -339,7 +390,12 @@ seamless profile remove local # delete a profile (also clears its keychain toke
|
|
|
339
390
|
```
|
|
340
391
|
|
|
341
392
|
`instanceUrl` is normalized: the trailing slash is stripped and `https` is required for any host
|
|
342
|
-
|
|
393
|
+
that is not local. Local means `localhost` and any `.localhost` subdomain, the loopback ranges
|
|
394
|
+
(`127.0.0.0/8`, `::1`), the unspecified addresses a dev server binds to (`0.0.0.0`, `::`), the
|
|
395
|
+
private IPv4 ranges (`10/8`, `172.16/12`, `192.168/16`), link-local (`169.254/16`, `fe80::/10`),
|
|
396
|
+
IPv6 unique-local (`fc00::/7`), and mDNS `.local` names. The same rule gates `--local` OTP
|
|
397
|
+
delivery, so a dev instance reached at a container or LAN address works the same way `localhost`
|
|
398
|
+
does.
|
|
343
399
|
|
|
344
400
|
### Logging in
|
|
345
401
|
|
|
@@ -370,15 +426,21 @@ the OTP rate limiter, and refreshes the code automatically if the five minute wi
|
|
|
370
426
|
```bash
|
|
371
427
|
seamless whoami # sub, email, roles, and instance URL for your portal session
|
|
372
428
|
seamless whoami --profile prod # the same for an instance session
|
|
429
|
+
seamless whoami --json # the same fields as JSON, for scripting
|
|
373
430
|
seamless logout # end the portal session and clear local tokens
|
|
374
431
|
seamless logout --profile prod # end an instance session instead
|
|
375
432
|
seamless logout --all # revoke every session for the user, then clear local tokens
|
|
376
433
|
|
|
377
434
|
seamless sessions # list active sessions (current one marked)
|
|
435
|
+
seamless sessions --json # the same list as JSON
|
|
378
436
|
seamless sessions revoke <id> # revoke one session (confirms if it is the current one)
|
|
379
437
|
seamless sessions revoke --all # revoke every session (confirms, then clears local tokens)
|
|
380
438
|
```
|
|
381
439
|
|
|
440
|
+
`--json` on either prints machine-readable output and nothing else, so an empty session list
|
|
441
|
+
is `[]` rather than a message. `whoami --json` reports a missing `sub` or `email` as `null`
|
|
442
|
+
instead of the `(unknown)` the table shows.
|
|
443
|
+
|
|
382
444
|
### Configuration as code
|
|
383
445
|
|
|
384
446
|
Read and write the instance system configuration (requires an admin role). This turns the
|
|
@@ -440,8 +502,11 @@ never in a plaintext file:
|
|
|
440
502
|
|
|
441
503
|
Tokens are keyed per profile (by name and instance URL) so multiple instances never collide, and
|
|
442
504
|
they are removed when you log out or remove the profile. Access tokens are refreshed transparently:
|
|
443
|
-
on a `401` the CLI
|
|
444
|
-
|
|
505
|
+
on a `401` the CLI refreshes via `/refresh`, stores what came back, and retries once. Concurrent
|
|
506
|
+
requests share a single refresh rather than racing, because the instance would read the second
|
|
507
|
+
use of the old token as reuse and revoke the session. A refresh that renews only the access token
|
|
508
|
+
keeps the existing refresh token instead of discarding the session. A rejected refresh token, or a
|
|
509
|
+
`401` that survives a refresh, clears the local session and prompts a fresh login.
|
|
445
510
|
|
|
446
511
|
### Headless and CI
|
|
447
512
|
|
|
@@ -455,8 +520,14 @@ export SEAMLESS_REFRESH_TOKEN=<refresh-token>
|
|
|
455
520
|
seamless whoami
|
|
456
521
|
```
|
|
457
522
|
|
|
458
|
-
|
|
459
|
-
|
|
523
|
+
`/refresh` rotates the refresh token on every call, and the instance treats a second use of a
|
|
524
|
+
spent one as theft: it revokes the whole session chain. So a token that has already been
|
|
525
|
+
refreshed once must not be sent again on a later run. The CLI keeps a rotated token in memory
|
|
526
|
+
for the process and deliberately does not write it to the keychain, since `SEAMLESS_REFRESH_TOKEN`
|
|
527
|
+
is read fresh on every run and would shadow it anyway.
|
|
528
|
+
|
|
529
|
+
Issue a fresh refresh token per job rather than reusing one across builds. If a stale one is sent,
|
|
530
|
+
the CLI says so and names the command that issues a new one.
|
|
460
531
|
|
|
461
532
|
No command will render a prompt when stdin is not a terminal. Each one stops instead, naming the
|
|
462
533
|
flag that answers the question, so a CI step fails immediately rather than hanging until its job
|
|
@@ -498,17 +569,18 @@ Everything is aligned across services so the system works immediately after setu
|
|
|
498
569
|
|
|
499
570
|
## Included projects
|
|
500
571
|
|
|
501
|
-
Seamless CLI
|
|
572
|
+
Seamless CLI scaffolds from, and conformance-tests against, these repositories:
|
|
502
573
|
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
-
|
|
507
|
-
|
|
574
|
+
| Repository | What it provides | How the CLI uses it |
|
|
575
|
+
| --- | --- | --- |
|
|
576
|
+
| [seamless-auth-api](https://github.com/fells-code/seamless-auth-api) | The auth server | Run as a pinned image (`--auth=docker`) or cloned into `auth/` (`--auth=local`) |
|
|
577
|
+
| [seamless-templates](https://github.com/fells-code/seamless-templates) | The web and API starters | Scaffolded from its registry at a pinned ref |
|
|
578
|
+
| [seamless-auth-server](https://github.com/fells-code/seamless-auth-server) | `@seamless-auth/core`, `/express`, `/fastify` | The adapters the scaffolded `api/` runs on |
|
|
579
|
+
| [seamless-auth-react](https://github.com/fells-code/seamless-auth-react) | `@seamless-auth/react` | The client SDK the scaffolded `web/` runs on |
|
|
508
580
|
|
|
509
581
|
The starters live in the templates monorepo and are listed in its registry, so the set of
|
|
510
582
|
frameworks the CLI offers grows there. Each project can be used independently, but the CLI connects
|
|
511
|
-
them into a working system.
|
|
583
|
+
them into a working system, and `seamless verify` checks that connection holds across all four.
|
|
512
584
|
|
|
513
585
|
---
|
|
514
586
|
|
|
@@ -524,8 +596,8 @@ Full documentation is available at:
|
|
|
524
596
|
|
|
525
597
|
Seamless Auth is built around a few principles:
|
|
526
598
|
|
|
527
|
-
- Passwordless authentication only
|
|
528
|
-
-
|
|
599
|
+
- Passwordless authentication only (passkeys, magic links, email and phone OTP)
|
|
600
|
+
- Optional OIDC sign-in, configured explicitly and self-hosted like everything else
|
|
529
601
|
- Self-hosted by default
|
|
530
602
|
- Production-shaped local development
|
|
531
603
|
- Explicit configuration over hidden behavior
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import kleur from "kleur";
|
|
2
2
|
import { ReauthRequiredError } from "../core/authClient.js";
|
|
3
3
|
import { AdminApiError, PermissionError } from "../core/admin.js";
|
|
4
|
+
import { extractFlag } from "../core/args.js";
|
|
5
|
+
const DEFAULT_LIMIT = 50;
|
|
6
|
+
const LIMIT_MAX = 100;
|
|
4
7
|
export function reportAdminError(err) {
|
|
5
8
|
if (err instanceof ReauthRequiredError) {
|
|
6
9
|
console.log(kleur.yellow(err.message));
|
|
@@ -20,4 +23,44 @@ export function parseList(value) {
|
|
|
20
23
|
.map((item) => item.trim())
|
|
21
24
|
.filter((item) => item.length > 0);
|
|
22
25
|
}
|
|
26
|
+
// The two flags do not share a range. `--offset 0` is the first page, but the API
|
|
27
|
+
// takes a limit of 1 to 100 and answers anything outside that with a 400 naming
|
|
28
|
+
// neither the flag nor the bound. Checking here says which flag was wrong and what
|
|
29
|
+
// it accepts, and a non-numeric page stays a typo the server would reinterpret.
|
|
30
|
+
function pageNumber(raw, flag, fallback, bounds) {
|
|
31
|
+
if (raw === undefined)
|
|
32
|
+
return fallback;
|
|
33
|
+
const value = Number(raw);
|
|
34
|
+
const { min, max } = bounds;
|
|
35
|
+
if (!Number.isInteger(value) || value < min || (max !== undefined && value > max)) {
|
|
36
|
+
console.error(kleur.red(max === undefined
|
|
37
|
+
? `--${flag} must be a whole number of ${min} or more.`
|
|
38
|
+
: `--${flag} must be a whole number between ${min} and ${max}.`));
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
/** Reads `--limit` and `--offset` off a list command, and the arguments left over. */
|
|
44
|
+
export function parseWindow(args) {
|
|
45
|
+
const limitFlag = extractFlag(args, "limit");
|
|
46
|
+
const offsetFlag = extractFlag(limitFlag.rest, "offset");
|
|
47
|
+
return {
|
|
48
|
+
limit: pageNumber(limitFlag.value, "limit", DEFAULT_LIMIT, {
|
|
49
|
+
min: 1,
|
|
50
|
+
max: LIMIT_MAX,
|
|
51
|
+
}),
|
|
52
|
+
offset: pageNumber(offsetFlag.value, "offset", 0, { min: 0 }),
|
|
53
|
+
rest: offsetFlag.rest,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* The position of the rows on screen within the whole result set.
|
|
58
|
+
*
|
|
59
|
+
* Printed rather than a bare count, because a list route returns one page and a
|
|
60
|
+
* count of every match. Reporting the count alone reads as though every row is on
|
|
61
|
+
* screen, which is how `org list` came to claim a total it had not shown.
|
|
62
|
+
*/
|
|
63
|
+
export function pagePosition(offset, shown, total, noun) {
|
|
64
|
+
return `Showing ${offset + 1}-${offset + shown} of ${total} ${noun}${total === 1 ? "" : "s"}.`;
|
|
65
|
+
}
|
|
23
66
|
//# sourceMappingURL=adminShared.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adminShared.js","sourceRoot":"","sources":["../../src/commands/adminShared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"adminShared.js","sourceRoot":"","sources":["../../src/commands/adminShared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,IAAI,GAAG,YAAY,mBAAmB,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,GAAG,YAAY,eAAe,IAAI,GAAG,YAAY,aAAa,EAAE,CAAC;QACnE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,GAAG,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO,KAAK;SACT,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,kFAAkF;AAClF,gFAAgF;AAChF,mFAAmF;AACnF,gFAAgF;AAChF,SAAS,UAAU,CACjB,GAAuB,EACvB,IAAY,EACZ,QAAgB,EAChB,MAAqC;IAErC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAEvC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IAE5B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC;QAClF,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,GAAG,KAAK,SAAS;YACf,CAAC,CAAC,KAAK,IAAI,8BAA8B,GAAG,WAAW;YACvD,CAAC,CAAC,KAAK,IAAI,mCAAmC,GAAG,QAAQ,GAAG,GAAG,CAClE,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,WAAW,CAAC,IAAc;IAKxC,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEzD,OAAO;QACL,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE;YACzD,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,SAAS;SACf,CAAC;QACF,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QAC7D,IAAI,EAAE,UAAU,CAAC,IAAI;KACtB,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAc,EACd,KAAa,EACb,KAAa,EACb,IAAY;IAEZ,OAAO,WAAW,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,KAAK,OAAO,KAAK,IAAI,IAAI,GAChE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GACrB,GAAG,CAAC;AACN,CAAC"}
|
package/dist/commands/check.js
CHANGED
|
@@ -1,88 +1,114 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
2
|
import path from "path";
|
|
3
3
|
import { execSync } from "child_process";
|
|
4
|
-
|
|
4
|
+
function createReport() {
|
|
5
|
+
let failures = 0;
|
|
6
|
+
return {
|
|
7
|
+
ok(message) {
|
|
8
|
+
console.log(`✔ ${message}`);
|
|
9
|
+
},
|
|
10
|
+
fail(message, remedy) {
|
|
11
|
+
failures++;
|
|
12
|
+
console.log(`✖ ${message}`);
|
|
13
|
+
if (remedy)
|
|
14
|
+
console.log(`→ ${remedy}`);
|
|
15
|
+
},
|
|
16
|
+
get failures() {
|
|
17
|
+
return failures;
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
// Without --strict the exit status stays 0 whatever the checks found: this output
|
|
22
|
+
// has been parsed by scripts since before the flag existed, and a sudden non-zero
|
|
23
|
+
// exit would break them.
|
|
24
|
+
function finish(report, strict) {
|
|
25
|
+
if (!strict || report.failures === 0)
|
|
26
|
+
return;
|
|
27
|
+
const { failures } = report;
|
|
28
|
+
console.error(`${failures} check${failures === 1 ? "" : "s"} failed.`);
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
export async function runCheck(args = []) {
|
|
32
|
+
const strict = args.includes("--strict");
|
|
33
|
+
const report = createReport();
|
|
5
34
|
console.log("\nSeamless Check\n");
|
|
6
35
|
const root = process.cwd();
|
|
7
36
|
const configPath = path.join(root, "seamless.config.json");
|
|
8
37
|
if (!fs.existsSync(configPath)) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
return;
|
|
38
|
+
report.fail("seamless.config.json not found", "Run: seamless init\n");
|
|
39
|
+
return finish(report, strict);
|
|
12
40
|
}
|
|
13
41
|
let config;
|
|
14
42
|
try {
|
|
15
43
|
config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
|
|
16
44
|
}
|
|
17
45
|
catch {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return;
|
|
46
|
+
report.fail("seamless.config.json is not valid JSON", "Fix the file, or re-run: seamless init\n");
|
|
47
|
+
return finish(report, strict);
|
|
21
48
|
}
|
|
22
|
-
|
|
23
|
-
checkStructure(root, config);
|
|
49
|
+
report.ok("Config file found");
|
|
50
|
+
checkStructure(root, config, report);
|
|
24
51
|
// Managed projects run the auth server remotely and ship no compose file, so the
|
|
25
52
|
// Docker/container checks don't apply — validate the remote instance instead.
|
|
26
53
|
if (config?.services?.auth?.mode === "managed") {
|
|
27
|
-
await checkManaged(config);
|
|
54
|
+
await checkManaged(config, report);
|
|
28
55
|
}
|
|
29
56
|
else {
|
|
30
|
-
checkDocker();
|
|
31
|
-
checkCompose(root, config);
|
|
32
|
-
checkContainers();
|
|
33
|
-
await checkHealth(config);
|
|
57
|
+
checkDocker(report);
|
|
58
|
+
checkCompose(root, config, report);
|
|
59
|
+
checkContainers(report);
|
|
60
|
+
await checkHealth(config, report);
|
|
34
61
|
}
|
|
35
62
|
console.log("\nCheck complete.\n");
|
|
63
|
+
return finish(report, strict);
|
|
36
64
|
}
|
|
37
|
-
function checkStructure(root, config) {
|
|
65
|
+
function checkStructure(root, config, report) {
|
|
38
66
|
const services = config?.services ?? {};
|
|
39
67
|
const webPath = services.web?.path;
|
|
40
68
|
if (webPath && fs.existsSync(path.join(root, webPath))) {
|
|
41
|
-
|
|
69
|
+
report.ok("Web project detected");
|
|
42
70
|
}
|
|
43
71
|
else {
|
|
44
|
-
|
|
72
|
+
report.fail("Web project missing");
|
|
45
73
|
}
|
|
46
74
|
const apiPath = services.api?.path;
|
|
47
75
|
if (apiPath && fs.existsSync(path.join(root, apiPath))) {
|
|
48
|
-
|
|
76
|
+
report.ok("API project detected");
|
|
49
77
|
}
|
|
50
78
|
else {
|
|
51
|
-
|
|
79
|
+
report.fail("API project missing");
|
|
52
80
|
}
|
|
53
81
|
}
|
|
54
|
-
function checkDocker() {
|
|
82
|
+
function checkDocker(report) {
|
|
55
83
|
try {
|
|
56
84
|
execSync("docker --version", { stdio: "ignore" });
|
|
57
|
-
|
|
85
|
+
report.ok("Docker is installed");
|
|
58
86
|
}
|
|
59
87
|
catch {
|
|
60
|
-
|
|
61
|
-
console.log("→ Install Docker: https://docs.docker.com/get-docker/");
|
|
88
|
+
report.fail("Docker not found", "Install Docker: https://docs.docker.com/get-docker/");
|
|
62
89
|
}
|
|
63
90
|
}
|
|
64
|
-
function checkCompose(root, config) {
|
|
91
|
+
function checkCompose(root, config, report) {
|
|
65
92
|
const composeFile = config?.docker?.composeFile;
|
|
66
93
|
if (composeFile && fs.existsSync(path.join(root, composeFile))) {
|
|
67
|
-
|
|
94
|
+
report.ok("Docker Compose file found");
|
|
68
95
|
}
|
|
69
96
|
else {
|
|
70
|
-
|
|
97
|
+
report.fail("docker-compose.yml missing");
|
|
71
98
|
}
|
|
72
99
|
}
|
|
73
|
-
function checkContainers() {
|
|
100
|
+
function checkContainers(report) {
|
|
74
101
|
try {
|
|
75
102
|
const output = execSync("docker ps --format '{{.Names}}'").toString();
|
|
76
103
|
if (!output.includes("api")) {
|
|
77
|
-
|
|
78
|
-
console.log("→ Run: docker compose up\n");
|
|
104
|
+
report.fail("API container not running", "Run: docker compose up\n");
|
|
79
105
|
}
|
|
80
106
|
else {
|
|
81
|
-
|
|
107
|
+
report.ok("Containers running");
|
|
82
108
|
}
|
|
83
109
|
}
|
|
84
110
|
catch {
|
|
85
|
-
|
|
111
|
+
report.fail("Failed to check containers");
|
|
86
112
|
}
|
|
87
113
|
}
|
|
88
114
|
// The console lives at a different URL per hosting mode: proxied by the API at
|
|
@@ -99,7 +125,7 @@ function consoleHealthCheck(config) {
|
|
|
99
125
|
}
|
|
100
126
|
return null;
|
|
101
127
|
}
|
|
102
|
-
async function checkHealth(config) {
|
|
128
|
+
async function checkHealth(config, report) {
|
|
103
129
|
const checks = [
|
|
104
130
|
{ name: "API", url: "http://localhost:3000/" },
|
|
105
131
|
{ name: "Auth", url: "http://localhost:5312/health/status" },
|
|
@@ -111,38 +137,37 @@ async function checkHealth(config) {
|
|
|
111
137
|
try {
|
|
112
138
|
const res = await fetch(check.url);
|
|
113
139
|
if (res.ok) {
|
|
114
|
-
|
|
140
|
+
report.ok(`${check.name} is healthy`);
|
|
115
141
|
}
|
|
116
142
|
else {
|
|
117
|
-
|
|
143
|
+
report.fail(`${check.name} returned ${res.status}`);
|
|
118
144
|
}
|
|
119
145
|
}
|
|
120
146
|
catch {
|
|
121
|
-
|
|
147
|
+
report.fail(`${check.name} not reachable`);
|
|
122
148
|
}
|
|
123
149
|
}
|
|
124
150
|
}
|
|
125
|
-
async function checkManaged(config) {
|
|
151
|
+
async function checkManaged(config, report) {
|
|
126
152
|
const auth = config?.services?.auth ?? {};
|
|
127
153
|
const instanceUrl = auth.instanceUrl;
|
|
128
|
-
|
|
129
|
-
(auth.applicationName || instanceUrl || "(unknown)"));
|
|
154
|
+
report.ok("Managed instance: " + (auth.applicationName || instanceUrl || "(unknown)"));
|
|
130
155
|
if (!instanceUrl) {
|
|
131
|
-
|
|
156
|
+
report.fail("No managed instance URL recorded in seamless.config.json");
|
|
132
157
|
return;
|
|
133
158
|
}
|
|
134
159
|
const healthUrl = `${instanceUrl.replace(/\/$/, "")}/health/status`;
|
|
135
160
|
try {
|
|
136
161
|
const res = await fetch(healthUrl);
|
|
137
162
|
if (res.ok) {
|
|
138
|
-
|
|
163
|
+
report.ok("Auth instance reachable");
|
|
139
164
|
}
|
|
140
165
|
else {
|
|
141
|
-
|
|
166
|
+
report.fail(`Auth instance returned ${res.status}`);
|
|
142
167
|
}
|
|
143
168
|
}
|
|
144
169
|
catch {
|
|
145
|
-
|
|
170
|
+
report.fail("Auth instance not reachable");
|
|
146
171
|
}
|
|
147
172
|
console.log("→ Managed project: the auth server runs remotely, so Docker and compose checks are skipped.");
|
|
148
173
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/config.js
CHANGED
|
@@ -2,7 +2,7 @@ import fs from "fs";
|
|
|
2
2
|
import kleur from "kleur";
|
|
3
3
|
import { extractFlag } from "../core/args.js";
|
|
4
4
|
import { createAuthClient, ReauthRequiredError } from "../core/authClient.js";
|
|
5
|
-
import { ConfigApiError, createOAuthProvider, deleteOAuthProvider, diffConfig, filterWritable, getRoles, getSystemConfig, listOAuthProviders, parseValue, patchSystemConfig, PermissionError, updateOAuthProvider, } from "../core/systemConfig.js";
|
|
5
|
+
import { ConfigApiError, createOAuthProvider, deleteOAuthProvider, diffConfig, filterWritable, getRoles, getSystemConfig, listOAuthProviders, isWritableKey, parseValue, patchSystemConfig, PermissionError, updateOAuthProvider, WRITABLE_KEYS, } from "../core/systemConfig.js";
|
|
6
6
|
import { confirmDestructive, hasForceFlag, } from "../core/confirmAction.js";
|
|
7
7
|
export async function runConfig(args) {
|
|
8
8
|
const sub = args[0];
|
|
@@ -77,7 +77,12 @@ async function configSet(client, rest) {
|
|
|
77
77
|
console.error(kleur.red("Usage: seamless config set <key> <value>"));
|
|
78
78
|
process.exit(1);
|
|
79
79
|
}
|
|
80
|
-
|
|
80
|
+
if (!isWritableKey(key)) {
|
|
81
|
+
console.error(kleur.red(`"${key}" is not a writable config key.`));
|
|
82
|
+
console.error(kleur.dim(`Writable keys: ${WRITABLE_KEYS.join(", ")}`));
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
const value = parseValue(valueParts.join(" "), key);
|
|
81
86
|
const result = await patchSystemConfig(client, { [key]: value });
|
|
82
87
|
if (result.updatedKeys.length) {
|
|
83
88
|
console.log(kleur.green(`Updated: ${result.updatedKeys.join(", ")}`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|