@dotrino/remote-agent 0.18.1 → 0.18.2
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/src/discover.js +11 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dotrino/remote-agent",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.2",
|
|
4
4
|
"description": "Middleware compartido del ecosistema Dotrino para apps de agente remoto cifrado punto a punto (handshake E2E, emparejamiento SAS con vault, revocación, descubrimiento). Lo consumen dotrino-terminal (PTY) y dotrino-ia (chat con IA).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./index.js",
|
package/src/discover.js
CHANGED
|
@@ -29,14 +29,22 @@ import { PING, PONG } from '../protocol.js'
|
|
|
29
29
|
* `'ia-agent'`). Omitir = todos los que tengan nameOf y no sean `'cli'` (un navegador
|
|
30
30
|
* enrolado queda como `cli` y no atiende a nadie).
|
|
31
31
|
* @returns {Promise<Array<{sub:string,label:string,cn:string|null}>>} uno por miembro.
|
|
32
|
+
* @throws `code: 'no-acta'` si ni la bóveda ni lo guardado dan el acta: no se sabe, y no es «ninguno».
|
|
32
33
|
*/
|
|
33
34
|
export async function listAgentsByLabel (id, label) {
|
|
34
35
|
// Por su efecto: trae el acta vigente y la adopta. La lista de aparatos que devuelva —si
|
|
35
36
|
// devuelve alguna— no se mira: quién es de la cuenta lo dice el acta.
|
|
36
37
|
let acta = null
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
let why = null
|
|
39
|
+
try { acta = (await id.listVaultDevices())?.acta || null } catch (e) { why = e }
|
|
40
|
+
// La bóveda no contestó: vale el acta que ya se tiene guardada.
|
|
41
|
+
if (!acta) acta = (await id.profileActa?.().catch((e) => { why = why || e; return null }))?.acta || null
|
|
42
|
+
// SIN ACTA NO SE SABE quién es de la cuenta, y eso no es «no hay nadie». Devolver una lista
|
|
43
|
+
// vacía aquí hacía que una máquina con la bóveda inalcanzable dijera «no tienes otras
|
|
44
|
+
// máquinas» con toda tranquilidad. Se para y se dice.
|
|
45
|
+
if (!acta) {
|
|
46
|
+
throw Object.assign(new Error(`could not get the account record (acta) from the vault${why ? `: ${why.message}` : ''}`), { code: 'no-acta', cause: why || undefined })
|
|
47
|
+
}
|
|
40
48
|
|
|
41
49
|
const mine = id.me?.publickey
|
|
42
50
|
const nameOf = (m) => m.cn || m.label || null
|