wlmaker 1.8.1 → 1.9.1

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.
Files changed (3) hide show
  1. package/README.md +87 -3
  2. package/dist/cli.mjs +1821 -187
  3. package/package.json +3 -2
package/README.md CHANGED
@@ -60,8 +60,9 @@ Te va a recibir un menú interactivo con todas las opciones disponibles:
60
60
  ```
61
61
  ┌ wlmaker ┐
62
62
  │ │
63
- ◇ What do you want to create?
64
- │ ● App
63
+ ◇ What do you want to do?
64
+ │ ● Vault NEW — sync encrypted STG/PROD…
65
+ │ ○ App
65
66
  │ ○ BLoC
66
67
  │ ○ Widget
67
68
  │ ○ Widgetbook Use-Case
@@ -69,7 +70,6 @@ Te va a recibir un menú interactivo con todas las opciones disponibles:
69
70
  │ ○ Endpoint
70
71
  │ ○ Package
71
72
  │ ○ Env Var
72
- │ ○ Personal Information
73
73
  │ ○ Collaborative
74
74
  │ ○ Docs
75
75
  └ ┘
@@ -534,6 +534,89 @@ packages/personal_information/lib/countries/<code>/
534
534
 
535
535
  ---
536
536
 
537
+ ### 4.14 Vault — Compartir Variables de Entorno Cifradas
538
+
539
+ > **Guía para el día a día:** [`docs/VAULT.md`](docs/VAULT.md) — onboarding, cuándo hacer apply/capture y FAQ (español neutro).
540
+
541
+ **Cuándo usarlo:** cuando necesitás distribuir valores reales de `development.env.json`
542
+ (STG) y `production.env.json` (PROD) entre el equipo sin mandarlos por Slack ni 1Password,
543
+ y sin perder el rastro de quién tiene acceso. Vault guarda cada valor cifrado dentro del
544
+ repo (`.wlmaker.vault.json`) y solo lo materializa en texto plano en tu máquina cuando vos
545
+ lo pedís explícitamente con Apply.
546
+
547
+ Vault **complementa** a `wlmaker env-var` (4.7), no lo reemplaza: primero declarás la
548
+ variable con `env-var` (eso la agrega a `example.env.json`, la plantilla committeada), y
549
+ recién después la capturás en el Vault con el valor real. `example.env.json` sigue siendo
550
+ el allowlist — Capture rechaza cualquier clave que no esté ahí, porque los nombres viajan
551
+ en texto plano dentro del ciphertext y en v1 todo el equipo aprobado puede descifrar STG y
552
+ PROD.
553
+
554
+ #### Identidad local (una sola vez por persona)
555
+
556
+ Cada persona tiene un par de llaves X25519 en `~/.wlmaker/identity`, cifrado en disco con
557
+ una passphrase que vos elegís (scrypt + AES-256-GCM). Nadie más puede usar tu identidad sin
558
+ esa passphrase, y no existe una "llave maestra": perder el archivo *y* la passphrase te deja
559
+ sin acceso hasta que alguien te vuelva a aprobar.
560
+
561
+ #### Modo interactivo
562
+
563
+ ```bash
564
+ wlmaker
565
+ # → Vault (primera opción del menú)
566
+ # o: wlmaker vault
567
+ ```
568
+
569
+ El submenú de Vault ofrece:
570
+
571
+ | Acción | Qué hace |
572
+ |--------|----------|
573
+ | Status | Apps capturadas, cantidad de recipients/pendientes, tu estado de acceso |
574
+ | Init | Crea el vault (una sola vez por monorepo) con vos como primer recipient |
575
+ | Capture | Sella los valores locales de un app en el vault (respeta el allowlist de `example.env.json`) |
576
+ | Apply | Descifra y escribe los valores del vault en `development.env.json` / `production.env.json` locales |
577
+ | Diff | Compara tus archivos locales contra el vault sin mostrar valores descifrados |
578
+ | Request Access | Pide unirte al keyring compartido (no necesita tener acceso previo) |
579
+ | Approve | Aprueba una solicitud pendiente y le da acceso a STG + PROD juntos |
580
+ | Who | Lista recipients y solicitudes pendientes (sin exponer llaves) |
581
+ | Identity | Muestra tu fingerprint y clave pública (para compartir al pedir acceso) |
582
+ | Revoke | Saca a un recipient y rota la data key compartida, invalidando su copia anterior |
583
+
584
+ #### Modo directo
585
+
586
+ ```bash
587
+ wlmaker vault status
588
+ wlmaker vault init
589
+ wlmaker vault capture --app co_jumbo
590
+ wlmaker vault apply --app co_jumbo --env production
591
+ wlmaker vault diff --app co_jumbo
592
+ wlmaker vault who
593
+ wlmaker vault identity
594
+ wlmaker vault revoke
595
+ ```
596
+
597
+ | Opción | Aplica a | Descripción |
598
+ |--------|----------|-------------|
599
+ | `--app <name>` | `capture`, `apply`, `diff` | App a targetear (si se omite, te lo pregunta) |
600
+ | `--env <development\|production>` | `capture`, `apply`, `diff` | Limita a un solo entorno (default: ambos) |
601
+ | `--force` | `capture` | Sella claves no declaradas en `example.env.json` sin la confirmación tipeada |
602
+
603
+ Si corrés `wlmaker vault` sin una acción, se abre el mismo submenú interactivo.
604
+ (`wlmaker app vault` sigue funcionando como alias.)
605
+
606
+ #### Qué se commitea y qué no
607
+
608
+ | Archivo | Se commitea | Contenido |
609
+ |---------|-------------|-----------|
610
+ | `.wlmaker.vault.json` (raíz del monorepo) | **Sí** | Ciphertext AES-256-GCM por valor, nombres de variable en texto plano, recipients y su llave pública |
611
+ | `apps/<app>/env/example.env.json` | **Sí** | Plantilla — nombres de variables permitidas, sin valores reales |
612
+ | `apps/<app>/env/development.env.json` / `production.env.json` | **No** (gitignored) | Valores reales en texto plano, escritos solo por Apply |
613
+ | `~/.wlmaker/identity` | **No** — vive fuera del repo | Tu llave privada X25519, cifrada con tu passphrase |
614
+
615
+ Antes de escribir un archivo, Apply verifica que el `.gitignore` de `apps/<app>/env/` lo
616
+ cubra (`*.json` + `!example.env.json`); si no puede probarlo, aborta sin escribir nada.
617
+
618
+ ---
619
+
537
620
  ## 5. Herramientas de Documentación
538
621
 
539
622
  ### 5.1 Servir Documentación (Docusaurus)
@@ -708,6 +791,7 @@ El scaffold de Personal Information requiere al menos un AppType definido en
708
791
  | `wlmaker endpoint` | — | — | Stack completa de endpoint BFF |
709
792
  | `wlmaker package` | — | — | Crear paquete en el monorepo |
710
793
  | `wlmaker env-var` | — | — | Agregar variable de entorno |
794
+ | `wlmaker vault` | `[status\|init\|capture\|apply\|diff\|request-access\|approve\|who\|identity\|revoke]` | `--app`, `--env`, `--force` | Vault: sincronizar env cifrados entre el equipo |
711
795
  | `wlmaker app` | — | — | Crear y gestionar apps |
712
796
 
713
797
  ### Comandos colaborativos