@dotrino/identity 0.74.1 → 0.75.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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/vault/acta.js +16 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dotrino/identity",
3
- "version": "0.74.1",
3
+ "version": "0.75.0",
4
4
  "description": "Identidad y rating de usuarios compartidos entre apps de Dotrino (vault iframe + postMessage)",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
package/vault/acta.js CHANGED
@@ -103,7 +103,7 @@ const conCampoSellador = (acta) => Number(acta?.v) < V_SIN_CAMPO_SELLADOR
103
103
  * el rol de master, que no se delega. Así un dispositivo con `admin` robado hace daño
104
104
  * acotado y **reversible** (se le revoca), en vez de poder dejarte fuera de tu cuenta.
105
105
  */
106
- export const CAPS = Object.freeze(['sign', 'store', 'read', 'secrets', 'admin', 'approve', 'passwords', 'sealer'])
106
+ export const CAPS = Object.freeze(['sign', 'store', 'read', 'secrets', 'admin', 'approve', 'passwords', 'sealer', 'unattended'])
107
107
 
108
108
  /** Capacidades de un DISPOSITIVO (sin CN): acceso a todo lo del usuario. */
109
109
  /**
@@ -116,8 +116,22 @@ export const CAPS = Object.freeze(['sign', 'store', 'read', 'secrets', 'admin',
116
116
  * dominio; nunca lista la bóveda. Va aquí y no en una lista aparte porque quién puede
117
117
  * pedirle algo a la bóveda es exactamente lo que decide el acta — tener dos registros
118
118
  * de lo mismo obliga a acordarse de los dos al quitar un aparato.
119
+ *
120
+ * `unattended` es RECIBIR CLAVES PRIVADAS SIN QUE NADIE APRUEBE. Sin él, la bóveda no
121
+ * entrega nada hasta que un aparato con `approve` lo firme — una vez por arranque del
122
+ * servicio, no por petición.
123
+ *
124
+ * El defecto es al revés que antes, y esa es la gracia (dueño, 2026-09-01): antes había
125
+ * que marcar a mano quién NECESITA aprobación, así que un aparato nuevo nacía pudiendo
126
+ * llevarse las claves y nadie se enteraba de que esa era la elección. Ahora hay que
127
+ * conceder a propósito quién puede llevárselas SOLO — y si el dato falta, se pide permiso,
128
+ * que es lo que hay que hacer cuando no se sabe.
129
+ *
130
+ * Y va EN EL ACTA, no en una marca local de una máquina: así lo respeta cualquier bóveda
131
+ * de la cuenta, se ve en la pantalla de permisos como los demás, y se quita quitándolo —
132
+ * sin acordarse de un segundo registro escondido.
119
133
  */
120
- export const DEVICE_CAPS = Object.freeze(['sign', 'store', 'read', 'admin', 'approve', 'passwords', 'sealer'])
134
+ export const DEVICE_CAPS = Object.freeze(['sign', 'store', 'read', 'admin', 'approve', 'passwords', 'sealer', 'unattended'])
121
135
 
122
136
  /**
123
137
  * Lo que recibe un dispositivo recién emparejado. `admin` **no está**: no se