@dotrino/identity 0.60.1 → 0.60.3
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/package.json +1 -1
- package/vault/core.js +25 -2
- package/vault/remote.js +4 -0
package/package.json
CHANGED
package/vault/core.js
CHANGED
|
@@ -1709,11 +1709,34 @@ export async function createIdentityCore ({ kv: rawKv, peers, makeSync = null, k
|
|
|
1709
1709
|
/**
|
|
1710
1710
|
* Las actas que este master conserva desde `sinceSeq` (sin incluirla), para que un
|
|
1711
1711
|
* miembro que volvió pueda comprobar el encadenamiento. Vacío si se salió de la ventana.
|
|
1712
|
+
*
|
|
1713
|
+
* SOLO SE MANDA CUANDO HACE FALTA, que es casi nunca. `canAdopt` adopta el acta actual
|
|
1714
|
+
* DE UN SALTO —sin mirar un solo eslabón— siempre que la haya sellado quien el que
|
|
1715
|
+
* pregunta tiene por sellador; el `prev` solo se comprueba cuando la nueva es contigua,
|
|
1716
|
+
* donde por definición no hay cadena que mandar. El único caso en que los eslabones
|
|
1717
|
+
* resuelven algo es un TRASPASO de master durante el hueco: ahí el acta actual la firmó
|
|
1718
|
+
* alguien que él no conoce, y el acta del traspaso —firmada por el sellador que sí
|
|
1719
|
+
* conocía— es el puente.
|
|
1720
|
+
*
|
|
1721
|
+
* No es una optimización cosmética: cada acta es un snapshot COMPLETO de los miembros
|
|
1722
|
+
* (~940 bytes por miembro), así que la ventana crece con cambios × miembros y llegó a
|
|
1723
|
+
* pesar 991 KB de una respuesta de 1,03 MB. El proxio corta el frame a 1 MB, cerraba la
|
|
1724
|
+
* conexión de la bóveda con un 1009 y la dejaba muda para TODO el ecosistema, sin un
|
|
1725
|
+
* solo log de su lado (2026-08-24: el bot social dejó de publicar y eco se quedó sin un
|
|
1726
|
+
* eco que mostrar).
|
|
1712
1727
|
*/
|
|
1713
1728
|
async actaHistory ({ sinceSeq = 0 } = {}) {
|
|
1714
1729
|
const cur = loadActa()
|
|
1715
|
-
|
|
1716
|
-
const
|
|
1730
|
+
if (!cur || !(cur.seq > sinceSeq)) return { chain: [], window: ACTA_WINDOW }
|
|
1731
|
+
const hist = loadHistory()
|
|
1732
|
+
const mine = hist.find((a) => a.seq === sinceSeq) || null
|
|
1733
|
+
// Sin acta previa (`sinceSeq` 0, un agente headless) se adopta la actual por
|
|
1734
|
+
// «sin-acta-previa». Y si la suya se salió de la ventana, la cadena tampoco encadena
|
|
1735
|
+
// hasta ella: en los dos casos, mandarla es tirar cientos de KB por el transporte.
|
|
1736
|
+
if (!mine) return { chain: [], window: ACTA_WINDOW }
|
|
1737
|
+
// Puede dar el salto él solo: el sellador no cambió.
|
|
1738
|
+
if (cur.sealedBy === mine.sealer) return { chain: [], window: ACTA_WINDOW }
|
|
1739
|
+
const all = [...hist.filter((a) => a.seq > sinceSeq), cur]
|
|
1717
1740
|
return { chain: all.sort((a, b) => a.seq - b.seq), window: ACTA_WINDOW }
|
|
1718
1741
|
},
|
|
1719
1742
|
|
package/vault/remote.js
CHANGED
|
@@ -38,6 +38,10 @@ const MSG = {
|
|
|
38
38
|
// Renuncia: el miembro se quita capacidades a sí mismo y la bóveda la sella en el acta.
|
|
39
39
|
RENOUNCE: 'vault.renounce',
|
|
40
40
|
RENOUNCE_RESULT: 'vault.renounce.result',
|
|
41
|
+
// Pedidos de aprobación y llaves SSH del teléfono: van por el canal de secretos
|
|
42
|
+
// (`op: approvals | approve | deny | ssh.keys | ssh.key.add | ssh.key.rm`).
|
|
43
|
+
SECRETS: 'vault.secrets',
|
|
44
|
+
SECRETS_RESULT: 'vault.secrets.result',
|
|
41
45
|
ERROR: 'vault.error'
|
|
42
46
|
}
|
|
43
47
|
export { MSG as VAULT_MSG }
|