xonecode 0.35.0 → 0.37.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 (89) hide show
  1. package/THIRD_PARTY_NOTICES.md +30 -0
  2. package/apps/web/dist/assets/{EditorDeFichero-CGZ6uZPa.js → EditorDeFichero-DoFEF88O.js} +1 -1
  3. package/apps/web/dist/assets/index-DRNhZyYF.css +1 -0
  4. package/apps/web/dist/assets/index-WcouJw-n.js +506 -0
  5. package/apps/web/dist/assets/{php-DTPkbJvq.js → php-D_qKPndv.js} +1 -1
  6. package/apps/web/dist/assets/{ruby-D1wBOK7G.js → ruby-Dbo7pTDa.js} +1 -1
  7. package/apps/web/dist/index.html +2 -2
  8. package/dist/agent/config/settingsEnDisco.js +30 -0
  9. package/dist/agent/config/settingsEnDisco.js.map +1 -1
  10. package/dist/agent/motores/trueforge/sesionTrueforge.js +39 -1
  11. package/dist/agent/motores/trueforge/sesionTrueforge.js.map +1 -1
  12. package/dist/agent/remoto/ngrokEnMaquina.js +103 -0
  13. package/dist/agent/remoto/ngrokEnMaquina.js.map +1 -0
  14. package/dist/agent/remoto/puenteWebSocket.js +175 -0
  15. package/dist/agent/remoto/puenteWebSocket.js.map +1 -0
  16. package/dist/agent/remoto/tunelNgrok.js +158 -0
  17. package/dist/agent/remoto/tunelNgrok.js.map +1 -0
  18. package/dist/core/idiomaDeLaRespuesta.js +38 -0
  19. package/dist/core/idiomaDeLaRespuesta.js.map +1 -0
  20. package/dist/core/panorama.js +93 -0
  21. package/dist/core/panorama.js.map +1 -0
  22. package/dist/core/ports.js +100 -0
  23. package/dist/core/ports.js.map +1 -1
  24. package/dist/core/remoto.js +117 -0
  25. package/dist/core/remoto.js.map +1 -0
  26. package/dist/core/settings.js +83 -0
  27. package/dist/core/settings.js.map +1 -1
  28. package/dist/core/tunel.js +101 -0
  29. package/dist/core/tunel.js.map +1 -0
  30. package/dist/web/servidor/arranque.js +587 -71
  31. package/dist/web/servidor/arranque.js.map +1 -1
  32. package/dist/web/servidor/consolaWeb.js +52 -2
  33. package/dist/web/servidor/consolaWeb.js.map +1 -1
  34. package/dist/web/servidor/puenteRemoto.js +272 -0
  35. package/dist/web/servidor/puenteRemoto.js.map +1 -0
  36. package/dist/web/servidor/transporte.js.map +1 -1
  37. package/dist/web/servidor/vestibulo.js +39 -1
  38. package/dist/web/servidor/vestibulo.js.map +1 -1
  39. package/node_modules/@xone/xonecode-remoto/dist/base64url.d.ts +2 -0
  40. package/node_modules/@xone/xonecode-remoto/dist/base64url.js +19 -0
  41. package/node_modules/@xone/xonecode-remoto/dist/cifrado.d.ts +25 -0
  42. package/node_modules/@xone/xonecode-remoto/dist/cifrado.js +75 -0
  43. package/node_modules/@xone/xonecode-remoto/dist/contenido.d.ts +121 -0
  44. package/node_modules/@xone/xonecode-remoto/dist/contenido.js +191 -0
  45. package/node_modules/@xone/xonecode-remoto/dist/index.d.ts +6 -0
  46. package/node_modules/@xone/xonecode-remoto/dist/index.js +6 -0
  47. package/node_modules/@xone/xonecode-remoto/dist/servidor/salas.d.ts +46 -0
  48. package/node_modules/@xone/xonecode-remoto/dist/servidor/salas.js +128 -0
  49. package/node_modules/@xone/xonecode-remoto/dist/servidor/servidor.d.ts +31 -0
  50. package/node_modules/@xone/xonecode-remoto/dist/servidor/servidor.js +198 -0
  51. package/node_modules/@xone/xonecode-remoto/dist/sobre.d.ts +53 -0
  52. package/node_modules/@xone/xonecode-remoto/dist/sobre.js +69 -0
  53. package/node_modules/@xone/xonecode-remoto/dist/url.d.ts +12 -0
  54. package/node_modules/@xone/xonecode-remoto/dist/url.js +35 -0
  55. package/node_modules/@xone/xonecode-remoto/dist/version.d.ts +2 -0
  56. package/node_modules/@xone/xonecode-remoto/dist/version.js +2 -0
  57. package/node_modules/@xone/xonecode-remoto/package.json +41 -0
  58. package/node_modules/@xone/xonecode-remoto/web/assets/index-Bfa2gK3J.css +1 -0
  59. package/node_modules/@xone/xonecode-remoto/web/assets/index-qBo9eRDN.js +77 -0
  60. package/node_modules/@xone/xonecode-remoto/web/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  61. package/node_modules/@xone/xonecode-remoto/web/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  62. package/node_modules/@xone/xonecode-remoto/web/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  63. package/node_modules/@xone/xonecode-remoto/web/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  64. package/node_modules/@xone/xonecode-remoto/web/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  65. package/node_modules/@xone/xonecode-remoto/web/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  66. package/node_modules/@xone/xonecode-remoto/web/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  67. package/node_modules/@xone/xonecode-remoto/web/index.html +14 -0
  68. package/node_modules/ws/LICENSE +20 -0
  69. package/node_modules/ws/README.md +548 -0
  70. package/node_modules/ws/browser.js +8 -0
  71. package/node_modules/ws/index.js +22 -0
  72. package/node_modules/ws/lib/buffer-util.js +131 -0
  73. package/node_modules/ws/lib/constants.js +19 -0
  74. package/node_modules/ws/lib/event-target.js +292 -0
  75. package/node_modules/ws/lib/extension.js +203 -0
  76. package/node_modules/ws/lib/limiter.js +55 -0
  77. package/node_modules/ws/lib/permessage-deflate.js +530 -0
  78. package/node_modules/ws/lib/receiver.js +743 -0
  79. package/node_modules/ws/lib/sender.js +607 -0
  80. package/node_modules/ws/lib/stream.js +161 -0
  81. package/node_modules/ws/lib/subprotocol.js +62 -0
  82. package/node_modules/ws/lib/validation.js +152 -0
  83. package/node_modules/ws/lib/websocket-server.js +562 -0
  84. package/node_modules/ws/lib/websocket.js +1407 -0
  85. package/node_modules/ws/package.json +74 -0
  86. package/node_modules/ws/wrapper.mjs +21 -0
  87. package/package.json +7 -1
  88. package/apps/web/dist/assets/index-BBQH-l_3.css +0 -1
  89. package/apps/web/dist/assets/index-DqYXrrxo.js +0 -499
@@ -64,19 +64,24 @@ function comoRegistro(mapa) {
64
64
  * en cabeza se comería la respuesta de la espera SIGUIENTE —que sí está viva— y la dejaría
65
65
  * colgada hasta su propio plazo.
66
66
  */
67
- function esperarAUnHumano(cola, alVencer, ms) {
67
+ function esperarAUnHumano(cola, alVencer, ms, alEncolar,
68
+ /** Cuando la espera se resuelve, por la vía que sea, y ya FUERA de la cola. */
69
+ alTerminar) {
68
70
  return new Promise((resuelto) => {
69
71
  const responder = (valor) => {
70
72
  clearTimeout(temporizador);
71
73
  resuelto(valor);
74
+ alTerminar?.();
72
75
  };
73
76
  const temporizador = setTimeout(() => {
74
77
  const indice = cola.indexOf(responder);
75
78
  if (indice >= 0)
76
79
  cola.splice(indice, 1);
77
80
  resuelto(alVencer);
81
+ alTerminar?.();
78
82
  }, ms);
79
83
  cola.push(responder);
84
+ alEncolar?.(responder);
80
85
  });
81
86
  }
82
87
  export function crearConsolaWeb(opciones = {}) {
@@ -123,6 +128,11 @@ export function crearConsolaWeb(opciones = {}) {
123
128
  // Colas FIFO de quien espera respuesta. Son colas y no una ranura única porque dos
124
129
  // preguntas encadenadas (el alta de proyecto las hace) no pueden pisarse.
125
130
  const esperandoTexto = [];
131
+ /**
132
+ * Las esperas de `esperandoTexto` cuya `pregunta` llevaba una `decision`. El escritorio las
133
+ * contesta como siempre; un móvil NUNCA (`responderDesdeElMovil`), porque no las ha visto.
134
+ */
135
+ const esperasConDecision = new WeakSet();
126
136
  const esperandoSecreto = [];
127
137
  const esperandoSeleccion = [];
128
138
  /**
@@ -132,6 +142,22 @@ export function crearConsolaWeb(opciones = {}) {
132
142
  */
133
143
  const esperandoDecision = [];
134
144
  let aprobacionEnVuelo;
145
+ /**
146
+ * Quien quiere enterarse de que nació o terminó una espera de humano (`alCambiarEspera`). Un
147
+ * oyente que lanza no puede romper la espera: el aviso va DENTRO de `terminar` y del
148
+ * resolutor, y un lanzamiento ahí dejaría la aprobación sin resolver.
149
+ */
150
+ const oyentesDeEspera = new Set();
151
+ const avisarDeLaEspera = () => {
152
+ for (const oyente of [...oyentesDeEspera]) {
153
+ try {
154
+ oyente();
155
+ }
156
+ catch {
157
+ // Lo de fuera no tumba la espera.
158
+ }
159
+ }
160
+ };
135
161
  // Sin cliente, TODO el que espera responde lo que responde un readline cerrado: cadena
136
162
  // vacía (o `undefined`, que es cancelar el selector). Medido en el e2e de un pipe que se
137
163
  // agota a mitad de turno: `aprobar.ts` ya trata esa cadena vacía como rechazo.
@@ -226,7 +252,9 @@ export function crearConsolaWeb(opciones = {}) {
226
252
  // texto libre la ponen `politicaInteractiva` antes de subir y `/connect-studio` sin
227
253
  // URL, y sin plazo colgaban la sesión web entera. Cadena vacía al vencer, que es lo
228
254
  // que `interpretAnswer` trata como rechazo.
229
- const espera = esperarAUnHumano(esperandoTexto, "", msDeEspera);
255
+ // Solo la de texto libre AVISA de que nace y de que termina: la de `decision` es un diálogo
256
+ // del escritorio y no cuenta como pregunta pendiente (`hayPreguntaDeTextoPendiente`).
257
+ const espera = esperarAUnHumano(esperandoTexto, "", msDeEspera, decision === undefined ? undefined : (responder) => esperasConDecision.add(responder), decision === undefined ? avisarDeLaEspera : undefined);
230
258
  // La FORMA viaja con la pregunta, o no viaja: `decision` ausente es una pregunta de
231
259
  // texto libre y el cliente le pone su campo. No se manda un `{lineas: []}` — una
232
260
  // decisión sin plan no es una pregunta abierta, y una pregunta abierta con una lista
@@ -234,6 +262,8 @@ export function crearConsolaWeb(opciones = {}) {
234
262
  transporte.emitir(decision === undefined
235
263
  ? { clase: "pregunta", texto: pregunta }
236
264
  : { clase: "pregunta", texto: pregunta, decision });
265
+ if (decision === undefined)
266
+ avisarDeLaEspera();
237
267
  return espera;
238
268
  },
239
269
  /**
@@ -294,11 +324,13 @@ export function crearConsolaWeb(opciones = {}) {
294
324
  // Soltarlo ANTES de resolver es lo que hace que una decisión tardía no tenga
295
325
  // nada que ascender, y que el contenido no sobreviva a la decisión.
296
326
  aprobacionEnVuelo = undefined;
327
+ avisarDeLaEspera();
297
328
  resuelto(decisiones);
298
329
  },
299
330
  };
300
331
  aprobacionEnVuelo = enVuelo;
301
332
  transporte.emitir(enVuelo.mensaje);
333
+ avisarDeLaEspera();
302
334
  });
303
335
  },
304
336
  // Un catálogo VIVO no se puede inventar: sin uno inyectado queda el doble de
@@ -433,9 +465,20 @@ export function crearConsolaWeb(opciones = {}) {
433
465
  enVuelo.terminar();
434
466
  }
435
467
  };
468
+ const responderDesdeElMovil = (texto) => {
469
+ // Ni `esperandoDecision` ni una espera con `decision`: la PRIMERA de texto libre, aunque
470
+ // haya una decisión delante en la cola (esa sigue esperando al escritorio).
471
+ const indice = esperandoTexto.findIndex((espera) => !esperasConDecision.has(espera));
472
+ if (indice < 0)
473
+ return false;
474
+ const [espera] = esperandoTexto.splice(indice, 1);
475
+ espera(texto);
476
+ return true;
477
+ };
436
478
  return {
437
479
  consola,
438
480
  recibir,
481
+ responderDesdeElMovil,
439
482
  turno: (activo, detenible) => transporte.emitir({ clase: "turno", activo, ...(activo && detenible === true ? { detenible: true } : {}) }),
440
483
  encolar: (linea, sustituye) => {
441
484
  if (cerrada)
@@ -505,6 +548,13 @@ export function crearConsolaWeb(opciones = {}) {
505
548
  anotar,
506
549
  eventosEmitidos: () => transporte.emitidos(),
507
550
  mensajesDeAprobacion: () => (aprobacionEnVuelo === undefined ? [] : [aprobacionEnVuelo.mensaje]),
551
+ hayPreguntaDeTextoPendiente: () => esperandoTexto.some((espera) => !esperasConDecision.has(espera)),
552
+ alCambiarEspera: (oyente) => {
553
+ oyentesDeEspera.add(oyente);
554
+ return () => {
555
+ oyentesDeEspera.delete(oyente);
556
+ };
557
+ },
508
558
  };
509
559
  }
510
560
  //# sourceMappingURL=consolaWeb.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"consolaWeb.js","sourceRoot":"","sources":["../../../src/web/servidor/consolaWeb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consolaWeb.js","sourceRoot":"","sources":["../../../src/web/servidor/consolaWeb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,272 @@
1
+ import { MOTIVOS_DEL_TUNEL } from "../../core/tunel.js";
2
+ import { ajustarATope, filtrarSalida, TOPE_DE_SALIDA_BYTES, validarEntradaDelMovil } from "../../core/remoto.js";
3
+ export const MOTIVO_NO_ABRIO = "no se pudo abrir la sesión remota";
4
+ /** Lo que puede llegar al terminal de la clase de un mensaje rechazado del móvil. */
5
+ const CLASE_LEGIBLE = /^[a-zA-Z.]{1,32}$/;
6
+ export const SIN_PAQUETE = "la sesión remota no está disponible en esta instalación";
7
+ const MOTIVOS_FIJOS_DEL_TUNEL = new Set(Object.values(MOTIVOS_DEL_TUNEL));
8
+ /** Lo que ngrok o el sistema digan no cruza: solo un texto nuestro, o el genérico. */
9
+ export const motivoFijoDelTunel = (texto) => typeof texto === "string" && MOTIVOS_FIJOS_DEL_TUNEL.has(texto) ? texto : MOTIVOS_DEL_TUNEL.otro;
10
+ export function crearSesionRemota(o) {
11
+ let estado = { estado: "apagada" };
12
+ let canal;
13
+ let url;
14
+ let reconectando = false;
15
+ const moviles = new Map();
16
+ /** El túnel abierto, si lo hay. Es de la SESIÓN y no de una generación: revocar lo conserva. */
17
+ let tunel;
18
+ let cierreDelTunel = Promise.resolve();
19
+ /** Un `abrir` de túnel que aún no ha vuelto, sea de la generación que sea. */
20
+ let aperturaEnVuelo;
21
+ const cerrarTunel = () => {
22
+ const t = tunel;
23
+ tunel = undefined;
24
+ if (t !== undefined)
25
+ cierreDelTunel = t.cerrar().catch(() => { });
26
+ return cierreDelTunel;
27
+ };
28
+ const poner = (e) => {
29
+ estado = e;
30
+ o.alCambiar(e);
31
+ };
32
+ const ponerActiva = () => {
33
+ if (url !== undefined)
34
+ poner({ estado: reconectando ? "reconectando" : "activa", url, moviles: moviles.size });
35
+ // Antes de la primera `abierta` no hay enlace que enseñar, pero sí un intento que se repite:
36
+ // quedarse en «abriendo» para siempre escondía que el relé no contesta.
37
+ else if (reconectando)
38
+ poner({ estado: "reconectando", moviles: moviles.size });
39
+ };
40
+ /** Lo que sale hacia UN móvil: filtrado y ajustado al tope, como todo lo que cruza. */
41
+ const enviarA = (id, mensaje) => {
42
+ const filtrado = filtrarSalida(mensaje);
43
+ if (filtrado === undefined)
44
+ return;
45
+ // Pasarse del tope no da un error legible: el relé cierra la conexión. Se ajusta aquí.
46
+ const salida = ajustarATope(filtrado, o.topeDeSalida ?? TOPE_DE_SALIDA_BYTES);
47
+ if (salida === undefined) {
48
+ o.informar(`sesión remota: un mensaje no cabe en el tope y no se envía (clase ${filtrado.clase})`);
49
+ return;
50
+ }
51
+ void canal?.enviar(id, salida).catch(() => { });
52
+ };
53
+ const soltarTodos = () => {
54
+ for (const s of moviles.values())
55
+ o.soltarCliente(s);
56
+ moviles.clear();
57
+ };
58
+ // Cada encendido es una GENERACIÓN: un canal viejo (apagado, revocado o aún abriéndose) puede
59
+ // seguir hablando, y sin esta marca su `cerrada` borraría el estado del canal nuevo.
60
+ let generacion = 0;
61
+ let abriendo = false;
62
+ /** `anunciar: false` solo para revocar: el apagado de en medio no es un estado que la consola
63
+ * deba ver (su diálogo se cierra al pasar a «apagada»), y le sigue «abriendo» en el acto. */
64
+ const apagar = (anunciar = true) => {
65
+ generacion += 1;
66
+ abriendo = false;
67
+ soltarTodos();
68
+ const cierreDelCanal = canal?.cerrar().catch(() => { });
69
+ canal = undefined;
70
+ url = undefined;
71
+ reconectando = false;
72
+ if (anunciar)
73
+ poner({ estado: "apagada" });
74
+ else
75
+ estado = { estado: "apagada" };
76
+ // Revocar (`anunciar: false`) conserva el túnel: el `encender` que le sigue lo reutiliza.
77
+ if (!anunciar)
78
+ return cierreDelTunel;
79
+ // Por la vía ngrok el «cerrada» que el relé manda a los móviles viaja por el túnel: se mata
80
+ // cuando el canal ya cerró, no en el mismo instante. El túnel deja de ser de la sesión YA,
81
+ // así que un `encender` de justo después espera a este cierre (y no abre un segundo ngrok).
82
+ const t = tunel;
83
+ if (t === undefined || cierreDelCanal === undefined)
84
+ return cerrarTunel();
85
+ tunel = undefined;
86
+ cierreDelTunel = cierreDelCanal.then(() => t.cerrar()).catch(() => { });
87
+ return cierreDelTunel;
88
+ };
89
+ /** Lo que hace la caída de ESTE túnel, si sigue siendo el de la sesión. */
90
+ const alCaerDe = (este) => (motivo) => {
91
+ if (tunel !== este)
92
+ return;
93
+ tunel = undefined;
94
+ generacion += 1;
95
+ abriendo = false;
96
+ soltarTodos();
97
+ void canal?.cerrar().catch(() => { });
98
+ canal = undefined;
99
+ url = undefined;
100
+ reconectando = false;
101
+ poner({ estado: "error", motivo: motivoFijoDelTunel(motivo) });
102
+ };
103
+ const encender = async () => {
104
+ // Idempotente también MIENTRAS abre: un segundo clic abriría un canal que nadie cerraría.
105
+ if (canal !== undefined || abriendo)
106
+ return;
107
+ const mia = ++generacion;
108
+ abriendo = true;
109
+ poner({ estado: "abriendo" });
110
+ try {
111
+ const puerto = await o.puerto();
112
+ if (mia !== generacion)
113
+ return;
114
+ if (puerto === undefined) {
115
+ abriendo = false;
116
+ void cerrarTunel();
117
+ poner({ estado: "error", motivo: SIN_PAQUETE });
118
+ return;
119
+ }
120
+ let servidor;
121
+ const conTunel = o.tunel?.();
122
+ if (conTunel === undefined) {
123
+ // La vía cambió desde que se abrió el que quedaba de un revocar: ya no es de nadie.
124
+ void cerrarTunel();
125
+ servidor = o.servidor();
126
+ }
127
+ else {
128
+ // Un ngrok a la vez: si el de un encendido anterior (apagado a medias) aún está
129
+ // arrancando, se espera a que llegue y a que se cierre. Dos ngrok de la misma cuenta a la
130
+ // vez los rechaza el propio ngrok (ERR_NGROK_108). Lo mismo si el de antes ya estaba ACTIVO
131
+ // y el apagado de justo antes aún no ha terminado de cerrarlo.
132
+ while (tunel === undefined) {
133
+ const vuelo = aperturaEnVuelo;
134
+ if (vuelo !== undefined)
135
+ await vuelo;
136
+ await cierreDelTunel;
137
+ if (mia !== generacion)
138
+ return;
139
+ if (vuelo === undefined)
140
+ break;
141
+ }
142
+ if (tunel === undefined) {
143
+ let terminar;
144
+ const vuelo = new Promise((r) => (terminar = r));
145
+ aperturaEnVuelo = vuelo;
146
+ const acabar = () => {
147
+ if (aperturaEnVuelo === vuelo)
148
+ aperturaEnVuelo = undefined;
149
+ terminar();
150
+ };
151
+ let nuevo;
152
+ try {
153
+ nuevo = await conTunel.abrir();
154
+ }
155
+ catch (error) {
156
+ acabar();
157
+ if (mia !== generacion)
158
+ return;
159
+ abriendo = false;
160
+ poner({ estado: "error", motivo: motivoFijoDelTunel(error?.message) });
161
+ return;
162
+ }
163
+ if (mia !== generacion) {
164
+ // Se apagó (o revocó) mientras ngrok arrancaba: este túnel ya no es de nadie. Su cierre
165
+ // queda en `cierreDelTunel` ANTES de soltar a quien espera, que lo espera también.
166
+ cierreDelTunel = nuevo.cerrar().catch(() => { });
167
+ acabar();
168
+ return;
169
+ }
170
+ tunel = nuevo;
171
+ acabar();
172
+ nuevo.alCaer(alCaerDe(nuevo));
173
+ }
174
+ servidor = tunel.servidor;
175
+ }
176
+ const abierto = await puerto.abrir(servidor, {
177
+ alEstado: (e) => {
178
+ if (mia !== generacion)
179
+ return;
180
+ if (e.estado === "abierta") {
181
+ url = e.url;
182
+ reconectando = false;
183
+ ponerActiva();
184
+ }
185
+ else if (e.estado === "reconectando") {
186
+ reconectando = true;
187
+ ponerActiva();
188
+ }
189
+ else {
190
+ // Un canal que se cierra por su cuenta es de una generación acabada, también si aún
191
+ // no había terminado de abrir (entonces se cierra al resolver).
192
+ generacion += 1;
193
+ abriendo = false;
194
+ soltarTodos();
195
+ canal = undefined;
196
+ url = undefined;
197
+ void cerrarTunel();
198
+ poner(e.motivo === undefined ? { estado: "apagada" } : { estado: "error", motivo: e.motivo });
199
+ }
200
+ },
201
+ alPresencia: (ids) => {
202
+ if (mia !== generacion)
203
+ return;
204
+ for (const [id, s] of moviles) {
205
+ if (!ids.includes(id)) {
206
+ moviles.delete(id);
207
+ o.soltarCliente(s);
208
+ }
209
+ }
210
+ for (const id of ids) {
211
+ if (moviles.has(id))
212
+ continue;
213
+ const sumidero = (mensaje) => enviarA(id, mensaje);
214
+ moviles.set(id, sumidero);
215
+ o.engancharCliente(sumidero);
216
+ o.alEntrarMovil?.((m) => {
217
+ if (moviles.get(id) === sumidero)
218
+ enviarA(id, m);
219
+ });
220
+ }
221
+ ponerActiva();
222
+ },
223
+ alMensaje: (de, mensaje) => {
224
+ if (mia !== generacion || !moviles.has(de))
225
+ return;
226
+ const entrada = validarEntradaDelMovil(mensaje);
227
+ if (entrada === undefined) {
228
+ // La clase la escribe el MÓVIL y va al terminal de quien desarrolla: solo un nombre
229
+ // limpio, o una secuencia de escape (OSC 52, que escribe el portapapeles) llegaría tal cual.
230
+ const bruta = typeof mensaje === "object" && mensaje !== null ? mensaje.clase : undefined;
231
+ const clase = typeof bruta === "string" && CLASE_LEGIBLE.test(bruta) ? bruta : "desconocida";
232
+ o.informar(`sesión remota: se rechazó un mensaje del móvil (clase ${clase})`);
233
+ return;
234
+ }
235
+ o.despachar(entrada);
236
+ },
237
+ });
238
+ if (mia !== generacion) {
239
+ // Se apagó (o revocó) mientras abría: este canal ya no es de nadie.
240
+ void abierto.cerrar().catch(() => { });
241
+ return;
242
+ }
243
+ abriendo = false;
244
+ canal = abierto;
245
+ }
246
+ catch (error) {
247
+ if (mia !== generacion)
248
+ return;
249
+ abriendo = false;
250
+ canal = undefined;
251
+ void cerrarTunel();
252
+ // Al cable no cruza un mensaje de Node (lleva rutas de la máquina): solo su `code`.
253
+ const codigo = error?.code;
254
+ poner({ estado: "error", motivo: typeof codigo === "string" ? codigo : MOTIVO_NO_ABRIO });
255
+ }
256
+ };
257
+ return {
258
+ encender,
259
+ apagar: () => apagar(),
260
+ async revocar() {
261
+ apagar(false);
262
+ await encender();
263
+ },
264
+ estado: () => estado,
265
+ hayMoviles: () => moviles.size > 0,
266
+ difundir(mensaje) {
267
+ for (const id of moviles.keys())
268
+ enviarA(id, mensaje);
269
+ },
270
+ };
271
+ }
272
+ //# sourceMappingURL=puenteRemoto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"puenteRemoto.js","sourceRoot":"","sources":["../../../src/web/servidor/puenteRemoto.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"transporte.js","sourceRoot":"","sources":["../../../src/web/servidor/transporte.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transporte.js","sourceRoot":"","sources":["../../../src/web/servidor/transporte.ts"],"names":[],"mappings":"AA6HA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,aAAa;IACb,cAAc;IACd,UAAU;IACV,aAAa;IACb,UAAU;IACV,sBAAsB;CACd,CAAC;AAGX,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAU,CAAC;AA+lCrG;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,WAAW,CAAC,CAAQ;IAClC,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,uFAAuF;QACvF,uCAAuC;QACvC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE;QACvB,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM;QACjC,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;QACvD,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;QACvD,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACjD,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC7D,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1D,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACtE,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC7D,GAAG,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS;YAC3B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,SAAS,EAAE;oBACT,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS;oBAChC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO;oBAC5B,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;oBACpF,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;iBAClF;aACF,CAAC;QACN,GAAG,CAAC,CAAC,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;KAChF,CAAC;AACJ,CAAC;AA4wBD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,gBAAgB,GAA2C,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAE/G,MAAM,UAAU,eAAe,CAAC,KAA4B;IAC1D,MAAM,KAAK,GAAuB,EAAE,CAAC;IACrC,MAAM,eAAe,GAAmB,EAAE,CAAC;IAC3C;8FAC0F;IAC1F,MAAM,SAAS,GAAG,IAAI,GAAG,EAAY,CAAC;IACtC;;;OAGG;IACH,MAAM,OAAO,GAAG,IAAI,GAAG,EAAY,CAAC;IACpC;;;;OAIG;IACH,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,OAAO;QACL,QAAQ,CAAC,MAAM;YACb,UAAU,GAAG,IAAI,CAAC;YAClB,IAAI,MAAM,KAAK,SAAS;gBAAE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;QACtB,CAAC;QACD,WAAW,CAAC,MAAM;YAChB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACzB,iFAAiF;gBACjF,sCAAsC;gBACtC,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC;oBAAE,OAAO;YACjC,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,KAAK,EAAE,CAAC;gBAClB,mFAAmF;gBACnF,+EAA+E;gBAC/E,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,CAAC;YACD,UAAU,GAAG,KAAK,CAAC;YACnB,KAAK,MAAM,OAAO,IAAI,eAAe;gBAAE,OAAO,EAAE,CAAC;QACnD,CAAC;QACD,MAAM,CAAC,MAAM;YACX,IAAI,MAAM,KAAK,SAAS;gBAAE,SAAS,CAAC,KAAK,EAAE,CAAC;;gBACvC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QACD,SAAS,EAAE,GAAG,EAAE,CAAC,UAAU;QAC3B,KAAK,CAAC,MAAM;YACV,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;QACtB,CAAC;QACD,YAAY,CAAC,MAAM;YACjB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QACD,MAAM,CAAC,OAAO;YACZ,IAAI,OAAO,CAAC,KAAK,KAAK,YAAY;gBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxD,sFAAsF;YACtF,kCAAkC;YAClC,KAAK,MAAM,QAAQ,IAAI,SAAS;gBAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YACpD,+DAA+D;YAC/D,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAO;YACjD,KAAK,MAAM,KAAK,IAAI,OAAO;gBAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;QACD,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK;QACrB,aAAa,CAAC,OAAO;YACnB,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -307,6 +307,18 @@ export function crearVestibulo(opciones) {
307
307
  let escuchaDeTurno;
308
308
  /** Y de que la sesión en foco ha consumido más tokens. */
309
309
  let escuchaDeConsumo;
310
+ /** Y de que cambió algo de lo que el panel remoto enseña. Varias: ver `alCambiarEsperas`. */
311
+ const escuchasDeEsperas = new Set();
312
+ const avisarDeLasEsperas = () => {
313
+ for (const escucha of [...escuchasDeEsperas]) {
314
+ try {
315
+ escucha();
316
+ }
317
+ catch {
318
+ // Una escucha que lanza no tumba ni el turno ni la aprobación de donde sale el aviso.
319
+ }
320
+ }
321
+ };
310
322
  /**
311
323
  * Avisa de que algo cambió en las consolas de persona: un turno empieza o acaba —en
312
324
  * CUALQUIERA de ellas— o una de segundo plano se cierra.
@@ -328,6 +340,9 @@ export function crearVestibulo(opciones) {
328
340
  ? deLaDeAhora.turnoEnVuelo
329
341
  : consolaEnFoco()?.turnoEnVuelo === true;
330
342
  escuchaDeTurno?.(enfocada);
343
+ // Los mismos disparadores —un flanco de turno de cualquier consola de persona, o una de
344
+ // segundo plano que se cierra— cambian lo que el panel remoto enseña.
345
+ avisarDeLasEsperas();
331
346
  };
332
347
  const entornoPorId = (id) => {
333
348
  const encontrado = registrados.find((e) => e.id === id);
@@ -412,6 +427,7 @@ export function crearVestibulo(opciones) {
412
427
  abiertas.delete(raiz);
413
428
  if (enFoco === raiz)
414
429
  enFoco = undefined;
430
+ avisarDeLasEsperas();
415
431
  };
416
432
  /** Todas: lo que hacen `cancelar()` y `cerrar()`. Un fallo al cerrar una no puede dejar a
417
433
  * las demás vivas — es la misma regla que `cerrarLasDeTareas`. */
@@ -500,7 +516,7 @@ export function crearVestibulo(opciones) {
500
516
  * con menos barreras que una persona, y eso no se ve — se descubre cuando el agente ya
501
517
  * escribió. Lo único que `alCable` apaga son los dos AVISOS al navegador; ni una regla.
502
518
  */
503
- const construirConsolaDeProyecto = async ({ raiz, sesion, adjuntos, tarea, enElCable, alFlancoDeTurno, conModoPorDefecto, }) => {
519
+ const construirConsolaDeProyecto = async ({ raiz, sesion, adjuntos, tarea, enElCable, alFlancoDeTurno, alCambiarParaElPanel, conModoPorDefecto, }) => {
504
520
  const reabierta = sesion === undefined ? undefined : sesiones.reabrir(raiz, sesion);
505
521
  /**
506
522
  * Lo que costó esta conversación ANTES de este proceso, leído de los `fin` que el
@@ -584,6 +600,11 @@ export function crearVestibulo(opciones) {
584
600
  // `Partial<Consola>` sobre el objeto recién creado: lo que depende de la raíz (`/sync`,
585
601
  // los escritores del proyecto) no lo puede saber `consolaWeb`, que no conoce ninguna.
586
602
  Object.assign(consolaWeb.consola, opciones.dependenciasDeProyecto?.(raiz) ?? {});
603
+ // Una aprobación o una pregunta que nace o termina AQUÍ, en foco o no: el panel remoto la
604
+ // enseña. Solo si la puerta lo pide (la de las personas); la consola vive lo que vive este
605
+ // objeto, así que la baja no hace falta.
606
+ if (alCambiarParaElPanel !== undefined)
607
+ consolaWeb.alCambiarEspera(alCambiarParaElPanel);
587
608
  // La foto del ANTES se toma AQUÍ, al abrir, no en el primer volcado: para entonces el
588
609
  // agente ya habría escrito y el «antes» incluiría su trabajo. Se nombra más abajo,
589
610
  // cuando el id existe. Se lanza sin esperar —abrir no puede quedarse esperando a git— y
@@ -726,6 +747,8 @@ export function crearVestibulo(opciones) {
726
747
  for (const acto of todos.slice(volcados))
727
748
  sesiones.anotar(raiz, idSesion, acto);
728
749
  volcados = todos.length;
750
+ // Actos nuevos en el índice: el título y la última actividad que el panel remoto enseña.
751
+ alCambiarParaElPanel?.();
729
752
  // El dispositivo elegido ANTES de que la sesión estuviera en el índice se anota
730
753
  // ahora, que es la primera vez que hay una entrada a la que apuntarlo. Sin esto,
731
754
  // elegir dispositivo y hablar después perdía la elección al reabrir.
@@ -1067,6 +1090,9 @@ export function crearVestibulo(opciones) {
1067
1090
  get turnoDetenible() {
1068
1091
  return turnoEnVuelo && sesionReal?.detener !== undefined;
1069
1092
  },
1093
+ get preguntaPendiente() {
1094
+ return consolaWeb.hayPreguntaDeTextoPendiente();
1095
+ },
1070
1096
  consola: consolaWeb,
1071
1097
  cancelarTurno: () => {
1072
1098
  if (sesionReal?.cancelar === undefined)
@@ -1074,6 +1100,7 @@ export function crearVestibulo(opciones) {
1074
1100
  sesionReal.cancelar();
1075
1101
  return true;
1076
1102
  },
1103
+ responderDesdeElMovil: (texto) => consolaWeb.responderDesdeElMovil(texto),
1077
1104
  recibir: (mensaje) => {
1078
1105
  consolaWeb.recibir(mensaje);
1079
1106
  /**
@@ -1203,6 +1230,8 @@ export function crearVestibulo(opciones) {
1203
1230
  if (laMisma || volverALoQueTrabaja) {
1204
1231
  enFoco = apertura.raiz;
1205
1232
  await cerrarLasOciosasSalvo(apertura.raiz);
1233
+ // El foco se ha movido aunque no se haya abierto nada.
1234
+ avisarDeLasEsperas();
1206
1235
  return yaAbierta;
1207
1236
  }
1208
1237
  /**
@@ -1242,8 +1271,11 @@ export function crearVestibulo(opciones) {
1242
1271
  if (!activo)
1243
1272
  cerrarSiSobra(raiz);
1244
1273
  },
1274
+ alCambiarParaElPanel: avisarDeLasEsperas,
1245
1275
  });
1246
1276
  abiertas.set(raiz, consolaDeProyecto);
1277
+ // Una consola más, y el foco en ella.
1278
+ avisarDeLasEsperas();
1247
1279
  return consolaDeProyecto;
1248
1280
  };
1249
1281
  /**
@@ -1409,6 +1441,12 @@ export function crearVestibulo(opciones) {
1409
1441
  alCambiarConsumo(escucha) {
1410
1442
  escuchaDeConsumo = escucha;
1411
1443
  },
1444
+ alCambiarEsperas(escucha) {
1445
+ escuchasDeEsperas.add(escucha);
1446
+ return () => {
1447
+ escuchasDeEsperas.delete(escucha);
1448
+ };
1449
+ },
1412
1450
  // La del FOCO, igual que `proyectoAbierto()`: es la sesión que se está mirando.
1413
1451
  consumoDeSesion: () => consolaEnFoco()?.consumo?.(),
1414
1452
  opcionesDeEntorno: () => [...ENTORNOS_OFICIALES, ENTORNO_OTRO],