xonecode 0.33.0 → 0.34.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.
Files changed (95) hide show
  1. package/apps/web/dist/assets/{EditorDeFichero-H_kGeZt2.js → EditorDeFichero-Cj0knNmP.js} +1 -1
  2. package/apps/web/dist/assets/index-Ga8fTlWp.js +499 -0
  3. package/apps/web/dist/assets/{index-CWBaotdZ.css → index-R3kXj69E.css} +1 -1
  4. package/apps/web/dist/assets/{php-CMFQiZgk.js → php-MVUx_K96.js} +1 -1
  5. package/apps/web/dist/assets/{ruby-Dj3BOBHc.js → ruby-n-r-AXdi.js} +1 -1
  6. package/apps/web/dist/index.html +2 -2
  7. package/dist/agent/config/fuentesEnRed.js +80 -0
  8. package/dist/agent/config/fuentesEnRed.js.map +1 -0
  9. package/dist/agent/dispositivos/cajasDeMaqueta.js +90 -2
  10. package/dist/agent/dispositivos/cajasDeMaqueta.js.map +1 -1
  11. package/dist/agent/dispositivos/geometriaEnDisco.js +85 -3
  12. package/dist/agent/dispositivos/geometriaEnDisco.js.map +1 -1
  13. package/dist/agent/grafo/criticaVisual.js +43 -37
  14. package/dist/agent/grafo/criticaVisual.js.map +1 -1
  15. package/dist/agent/grafo/fuentesDeGoogle.js +133 -0
  16. package/dist/agent/grafo/fuentesDeGoogle.js.map +1 -0
  17. package/dist/agent/grafo/incorporarAdjunto.js +52 -42
  18. package/dist/agent/grafo/incorporarAdjunto.js.map +1 -1
  19. package/dist/agent/grafo/perfiles.js +2 -0
  20. package/dist/agent/grafo/perfiles.js.map +1 -1
  21. package/dist/agent/motores/trueforge/capacidades.js +9 -6
  22. package/dist/agent/motores/trueforge/capacidades.js.map +1 -1
  23. package/dist/agent/motores/trueforge/informesDeHijos.js +39 -7
  24. package/dist/agent/motores/trueforge/informesDeHijos.js.map +1 -1
  25. package/dist/agent/motores/trueforge/memoriaDeEspecialistas.js +75 -37
  26. package/dist/agent/motores/trueforge/memoriaDeEspecialistas.js.map +1 -1
  27. package/dist/agent/motores/trueforge/memoriaTrueforge.js +24 -4
  28. package/dist/agent/motores/trueforge/memoriaTrueforge.js.map +1 -1
  29. package/dist/agent/motores/trueforge/modeloLangchain.js +28 -4
  30. package/dist/agent/motores/trueforge/modeloLangchain.js.map +1 -1
  31. package/dist/agent/motores/trueforge/proponerTareas.js +67 -0
  32. package/dist/agent/motores/trueforge/proponerTareas.js.map +1 -0
  33. package/dist/agent/motores/trueforge/sesionTrueforge.js +104 -11
  34. package/dist/agent/motores/trueforge/sesionTrueforge.js.map +1 -1
  35. package/dist/agent/sesiones/adjuntosDeSesion.js +68 -1
  36. package/dist/agent/sesiones/adjuntosDeSesion.js.map +1 -1
  37. package/dist/agent/subagentes/agentesEnDisco.js +12 -4
  38. package/dist/agent/subagentes/agentesEnDisco.js.map +1 -1
  39. package/dist/agent/tareas/aumentador.js +4 -3
  40. package/dist/agent/tareas/aumentador.js.map +1 -1
  41. package/dist/agent/turno/informeDeTraza.js +2 -1
  42. package/dist/agent/turno/informeDeTraza.js.map +1 -1
  43. package/dist/agent/turno/interrupts.js +12 -0
  44. package/dist/agent/turno/interrupts.js.map +1 -1
  45. package/dist/agent/turno/resumenDeTool.js +4 -0
  46. package/dist/agent/turno/resumenDeTool.js.map +1 -1
  47. package/dist/agent/turno/turnoReal.js +3 -0
  48. package/dist/agent/turno/turnoReal.js.map +1 -1
  49. package/dist/cli/consola.js.map +1 -1
  50. package/dist/cli/main.js +2 -0
  51. package/dist/cli/main.js.map +1 -1
  52. package/dist/cli/tui/transcript.js +5 -0
  53. package/dist/cli/tui/transcript.js.map +1 -1
  54. package/dist/core/actos.js.map +1 -1
  55. package/dist/core/agentes.js +10 -0
  56. package/dist/core/agentes.js.map +1 -1
  57. package/dist/core/analisisDeSesion.js +1 -1
  58. package/dist/core/analisisDeSesion.js.map +1 -1
  59. package/dist/core/descripcionDePantalla.js +26 -13
  60. package/dist/core/descripcionDePantalla.js.map +1 -1
  61. package/dist/core/estiloMedido.js +21 -1
  62. package/dist/core/estiloMedido.js.map +1 -1
  63. package/dist/core/fuentes.js +174 -0
  64. package/dist/core/fuentes.js.map +1 -0
  65. package/dist/core/geometriaDePantalla.js +101 -1
  66. package/dist/core/geometriaDePantalla.js.map +1 -1
  67. package/dist/core/notify.js +4 -0
  68. package/dist/core/notify.js.map +1 -1
  69. package/dist/core/ports.js +35 -0
  70. package/dist/core/ports.js.map +1 -1
  71. package/dist/core/repartoDeEncargo.js +87 -0
  72. package/dist/core/repartoDeEncargo.js.map +1 -0
  73. package/dist/core/shellDeAgente.js +23 -0
  74. package/dist/core/shellDeAgente.js.map +1 -1
  75. package/dist/core/tareas.js +7 -0
  76. package/dist/core/tareas.js.map +1 -1
  77. package/dist/core/turno.js +15 -0
  78. package/dist/core/turno.js.map +1 -1
  79. package/dist/web/servidor/arranque.js +117 -13
  80. package/dist/web/servidor/arranque.js.map +1 -1
  81. package/dist/web/servidor/consolaWeb.js +5 -0
  82. package/dist/web/servidor/consolaWeb.js.map +1 -1
  83. package/dist/web/servidor/interrupcion.js +52 -0
  84. package/dist/web/servidor/interrupcion.js.map +1 -0
  85. package/dist/web/servidor/pielWeb.js +36 -0
  86. package/dist/web/servidor/pielWeb.js.map +1 -1
  87. package/dist/web/servidor/transporte.js +1 -0
  88. package/dist/web/servidor/transporte.js.map +1 -1
  89. package/dist/web/servidor/vestibulo.js +30 -2
  90. package/dist/web/servidor/vestibulo.js.map +1 -1
  91. package/package.json +1 -1
  92. package/skills/xone-development/references/css/de-una-maqueta-a-xone.md +6 -4
  93. package/skills/xone-development/references/xml-ui/atributos-coll-group-frame.md +4 -4
  94. package/skills/xone-development/references/xml-ui/nodos-group-y-frame.md +4 -4
  95. package/apps/web/dist/assets/index-DnGuOvbb.js +0 -499
@@ -7,8 +7,8 @@
7
7
  <!-- El icono oficial, servido por Vite desde `iconos/`. Es el mismo fichero que la
8
8
  marca de la barra superior: dos copias del logo acaban siendo dos logos. -->
9
9
  <link rel="icon" type="image/png" href="./iconos/xonecode.png" />
10
- <script type="module" crossorigin src="./assets/index-DnGuOvbb.js"></script>
11
- <link rel="stylesheet" crossorigin href="./assets/index-CWBaotdZ.css">
10
+ <script type="module" crossorigin src="./assets/index-Ga8fTlWp.js"></script>
11
+ <link rel="stylesheet" crossorigin href="./assets/index-R3kXj69E.css">
12
12
  </head>
13
13
  <!-- Sin el atributo aquí: el oscuro es SOLO del splash (el registro de entorno y
14
14
  modelo), no de la consola entera — `App.tsx` lo pone y lo quita él mismo, en el
@@ -0,0 +1,80 @@
1
+ import { buscarEnCatalogo, esTrueType, familiasDelCatalogo, TOPE_DE_CATALOGO_BYTES, TOPE_DE_CSS_BYTES, TOPE_DE_FUENTE_BYTES, TOPE_DE_FUENTES_MS, URL_DEL_CATALOGO, urlDeCss, urlDeTtfEnCss, } from "../../core/fuentes.js";
2
+ /**
3
+ * Google Fonts, de verdad, sin clave (lo medido está en `core/fuentes.ts`).
4
+ *
5
+ * **El catálogo se pide UNA vez por puerto** y se guarda: son 2,7 MB de un catálogo AJENO que no
6
+ * cambia en una sesión. No choca con «no cachear» de `xone_navegacion`, que habla del modelo del
7
+ * PROYECTO. Un fallo no se guarda: la siguiente llamada lo vuelve a intentar.
8
+ *
9
+ * Un fallo lleva el CÓDIGO HTTP o la palabra «red», nunca la URL ni el cuerpo remoto (mismo trato
10
+ * que `iconosEnRed`). `fetch` entra por parámetro para probarlo sin conexión.
11
+ */
12
+ export function fuentesEnRed(llamar = fetch, topeMs = TOPE_DE_FUENTES_MS) {
13
+ const pedir = async (url, tope) => {
14
+ let respuesta;
15
+ try {
16
+ respuesta = await llamar(url, { signal: AbortSignal.timeout(topeMs) });
17
+ }
18
+ catch {
19
+ throw new Error("no hay red o Google Fonts no responde");
20
+ }
21
+ if (!respuesta.ok)
22
+ throw new Error(`Google Fonts contestó ${respuesta.status}`);
23
+ const declarado = Number(respuesta.headers.get("content-length") ?? "0");
24
+ if (declarado > tope)
25
+ throw new Error("la respuesta supera el tope de tamaño");
26
+ let bytes;
27
+ try {
28
+ bytes = new Uint8Array(await respuesta.arrayBuffer());
29
+ }
30
+ catch {
31
+ throw new Error("no hay red o Google Fonts no responde");
32
+ }
33
+ if (bytes.length > tope)
34
+ throw new Error("la respuesta supera el tope de tamaño");
35
+ return bytes;
36
+ };
37
+ let catalogo;
38
+ const elCatalogo = () => {
39
+ catalogo ??= (async () => {
40
+ const bytes = await pedir(URL_DEL_CATALOGO, TOPE_DE_CATALOGO_BYTES);
41
+ let cuerpo;
42
+ try {
43
+ // Hoy llega JSON a secas; antes llevaba delante el `)]}'` contra el XSSI, y se tolera.
44
+ const texto = new TextDecoder().decode(bytes);
45
+ cuerpo = JSON.parse(texto.slice(texto.indexOf("{")));
46
+ }
47
+ catch {
48
+ throw new Error("respuesta incompatible de Google Fonts");
49
+ }
50
+ const familias = familiasDelCatalogo(cuerpo);
51
+ if (familias.length === 0)
52
+ throw new Error("respuesta incompatible de Google Fonts");
53
+ return familias;
54
+ })();
55
+ catalogo.catch(() => {
56
+ catalogo = undefined;
57
+ });
58
+ return catalogo;
59
+ };
60
+ return {
61
+ async buscar(consulta, limite) {
62
+ return buscarEnCatalogo(await elCatalogo(), consulta, limite);
63
+ },
64
+ async familia(nombre) {
65
+ const f = (await elCatalogo()).find((x) => x.familia === nombre);
66
+ return f === undefined ? undefined : { familia: f.familia, categoria: f.categoria, estilos: f.estilos };
67
+ },
68
+ async ttf(familia, peso, cursiva) {
69
+ const css = new TextDecoder().decode(await pedir(urlDeCss(familia, peso, cursiva), TOPE_DE_CSS_BYTES));
70
+ const url = urlDeTtfEnCss(css);
71
+ if (url === undefined)
72
+ throw new Error("Google Fonts no devolvió un .ttf para ese estilo");
73
+ const bytes = await pedir(url, TOPE_DE_FUENTE_BYTES);
74
+ if (!esTrueType(bytes))
75
+ throw new Error("lo que llegó no es un fichero TrueType");
76
+ return bytes;
77
+ },
78
+ };
79
+ }
80
+ //# sourceMappingURL=fuentesEnRed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fuentesEnRed.js","sourceRoot":"","sources":["../../../src/agent/config/fuentesEnRed.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAAE,UAAU,EAAE,mBAAmB,EAAwB,sBAAsB,EAAE,iBAAiB,EAClH,oBAAoB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,GACpF,MAAM,uBAAuB,CAAC;AAG/B;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAC1B,SAAuB,KAAK,EAC5B,SAAiB,kBAAkB;IAEnC,MAAM,KAAK,GAAG,KAAK,EAAE,GAAW,EAAE,IAAY,EAAuB,EAAE;QACrE,IAAI,SAAmB,CAAC;QACxB,IAAI,CAAC;YACH,SAAS,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QAChF,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,CAAC;QACzE,IAAI,SAAS,GAAG,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC/E,IAAI,KAAiB,CAAC;QACtB,IAAI,CAAC;YACH,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAClF,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,IAAI,QAA+E,CAAC;IACpF,MAAM,UAAU,GAAG,GAA8D,EAAE;QACjF,QAAQ,KAAK,CAAC,KAAK,IAAI,EAAE;YACvB,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CAAC;YACpE,IAAI,MAAe,CAAC;YACpB,IAAI,CAAC;gBACH,uFAAuF;gBACvF,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC9C,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACvD,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC5D,CAAC;YACD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YACrF,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC,EAAE,CAAC;QACL,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE;YAClB,QAAQ,GAAG,SAAS,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM;YAC3B,OAAO,gBAAgB,CAAC,MAAM,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChE,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,MAAM;YAClB,MAAM,CAAC,GAAG,CAAC,MAAM,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1G,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO;YAC9B,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC;YACvG,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,GAAG,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YAC3F,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;YACrD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAClF,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -27,8 +27,96 @@ import { navegadorParaImprimir } from "../exportarPdf.js";
27
27
  /** Lo que tarda como mucho un render: con red lenta, Tailwind y las fuentes son unos segundos. */
28
28
  export const TOPE_DE_RENDER_MS = 45_000;
29
29
  const MARCA = "__xonecode_cajas";
30
- /** El script que mide, DENTRO de la maqueta: mira sus propios botones y se lo pasa al envoltorio. */
31
- const MEDIDOR = `<script>addEventListener("load",function(){setTimeout(function(){var o=[];var es=document.querySelectorAll("button,[role=button]");for(var i=0;i<es.length;i++){var r=es[i].getBoundingClientRect();if(r.width>0&&r.height>0)o.push({texto:(es[i].innerText||"").trim().replace(/\\s+/g," "),caja:{x:r.left,y:r.top,ancho:r.width,alto:r.height}});}var b=[];var cs=document.querySelectorAll("header,nav,section,main,footer,div");for(var j=0;j<cs.length;j++){var q=cs[j].getBoundingClientRect();if(q.width<innerWidth*0.85||q.height<24||q.height>innerHeight*0.6)continue;var rep=false;for(var k=0;k<b.length;k++){if(Math.abs(b[k].y-q.top)<3&&Math.abs(b[k].alto-q.height)<3)rep=true;}if(!rep)b.push({x:q.left,y:q.top,ancho:q.width,alto:q.height});}parent.postMessage(JSON.stringify({ancho:innerWidth,alto:innerHeight,tailwind:typeof tailwind!=="undefined",pideTailwind:!!document.querySelector('script[src*="tailwindcss"]'),elementos:o,bloques:b}),"*");},1200);});</script>`;
30
+ /**
31
+ * Qué se mide de la maqueta: los TEXTOS que se ven, cada uno con su caja. Se ejecuta DENTRO de la página (se
32
+ * inyecta con `toString()`), así que es JavaScript que el navegador entiende tal cual y no puede usar nada de fuera.
33
+ * Exportada para probarla con un DOM de pruebas.
34
+ *
35
+ * Antes se medían solo los `<button>`, cada uno con TODO su texto pegado. En la calculadora valía —cada tecla es un
36
+ * botón con un texto—, pero en una pantalla de tarjetas (Maset) cada tarjeta es un botón con título, badge,
37
+ * subtítulo y contador dentro: salía UN elemento «ENTREGAS PRIORIDAD Reparto de pedidos… 12 pend.» que no coincide
38
+ * con ningún control del aparato (BLOQUEANTE falso), y todo lo que no es botón —cabecera, banda, sección, pie— no se
39
+ * veía. Ahora:
40
+ * - un botón con UN texto (sin contar los iconos de Material) es un elemento, con la caja del BOTÓN: su forma es la
41
+ * de la tecla, no la de las letras;
42
+ * - un botón con VARIOS textos se parte en ellos;
43
+ * - fuera de los botones, cada elemento con texto propio es uno.
44
+ * Cada uno dice si es un botón (`boton`): lo que no lo es y no tiene letras es un dato de ejemplo («12», «09:41»).
45
+ */
46
+ export function medirElementos(doc) {
47
+ var ICONO = /material-(symbols|icons)/;
48
+ var FUERA = /^(SCRIPT|STYLE|NOSCRIPT|TEMPLATE|TITLE|HEAD)$/;
49
+ var limpio = function (t) {
50
+ return (t || "").replace(/\s+/g, " ").trim();
51
+ };
52
+ var cajaDe = function (el) {
53
+ var r = el.getBoundingClientRect();
54
+ return r.width > 0 && r.height > 0 ? { x: r.left, y: r.top, ancho: r.width, alto: r.height } : undefined;
55
+ };
56
+ var propio = function (el) {
57
+ var t = "";
58
+ for (var n = el.firstChild; n; n = n.nextSibling)
59
+ if (n.nodeType === 3)
60
+ t += n.nodeValue;
61
+ return limpio(t);
62
+ };
63
+ // Todos sus textos, unidos con un espacio: `innerText` pegaría «content_copyCOPY» si el HTML no deja hueco entre ellos.
64
+ var todoElTexto = function (el) {
65
+ var partes = [];
66
+ var recorrer = function (n) {
67
+ for (var c = n.firstChild; c; c = c.nextSibling) {
68
+ if (c.nodeType === 3)
69
+ partes.push(c.nodeValue);
70
+ else if (c.nodeType === 1 && !FUERA.test(c.tagName))
71
+ recorrer(c);
72
+ }
73
+ };
74
+ recorrer(el);
75
+ return limpio(partes.join(" "));
76
+ };
77
+ var esIcono = function (el) {
78
+ return typeof el.className === "string" && ICONO.test(el.className);
79
+ };
80
+ var hojas = [];
81
+ var todos = doc.body.querySelectorAll("*");
82
+ for (var i = 0; i < todos.length; i++)
83
+ if (!FUERA.test(todos[i].tagName) && propio(todos[i]) !== "")
84
+ hojas.push(todos[i]);
85
+ var salida = [];
86
+ var cubiertas = [];
87
+ var botones = doc.querySelectorAll("button,[role=button]");
88
+ for (var j = 0; j < botones.length; j++) {
89
+ var b = botones[j];
90
+ var dentro = hojas.filter(function (h) {
91
+ return b === h || b.contains(h);
92
+ });
93
+ var textos = dentro.filter(function (h) {
94
+ return !esIcono(h);
95
+ });
96
+ if (textos.length > 1)
97
+ continue;
98
+ var cb = cajaDe(b);
99
+ // La caja de SU texto, si va en un elemento propio: la letra (color, tamaño, recorte) se mide ahí, no en el botón
100
+ // entero, donde también está el icono (medido en Maset: el gris del cuadro del icono salía como color del texto).
101
+ var ct = textos.length === 1 && textos[0] !== b ? cajaDe(textos[0]) : undefined;
102
+ if (cb !== undefined)
103
+ salida.push(ct === undefined ? { texto: todoElTexto(b), caja: cb, boton: true } : { texto: todoElTexto(b), caja: cb, boton: true, cajaDelTexto: ct });
104
+ for (var k = 0; k < dentro.length; k++)
105
+ cubiertas.push(dentro[k]);
106
+ }
107
+ for (var m = 0; m < hojas.length; m++) {
108
+ if (cubiertas.indexOf(hojas[m]) >= 0)
109
+ continue;
110
+ var ch = cajaDe(hojas[m]);
111
+ if (ch !== undefined)
112
+ salida.push({ texto: propio(hojas[m]), caja: ch });
113
+ }
114
+ return salida;
115
+ }
116
+ /** El script que mide, DENTRO de la maqueta: sus textos (`medirElementos`) y sus bloques anchos, al envoltorio. */
117
+ // `var __name`: bajo `tsx`, esbuild envuelve cada función con `__name(fn, "nombre")` (keepNames), y ese ayudante no existe
118
+ // dentro de la página: sin él la medida no volvía nunca, en silencio. Con el build de `tsc` no aparece y esto no estorba.
119
+ const MEDIDOR = `<script>var __name=function(f){return f};addEventListener("load",function(){setTimeout(function(){var o=(${medirElementos.toString()})(document);var b=[];var cs=document.querySelectorAll("header,nav,section,main,footer,div");for(var j=0;j<cs.length;j++){var q=cs[j].getBoundingClientRect();if(q.width<innerWidth*0.85||q.height<24||q.height>innerHeight*0.6)continue;var rep=false;for(var k=0;k<b.length;k++){if(Math.abs(b[k].y-q.top)<3&&Math.abs(b[k].alto-q.height)<3)rep=true;}if(!rep)b.push({x:q.left,y:q.top,ancho:q.width,alto:q.height});}parent.postMessage(JSON.stringify({ancho:innerWidth,alto:innerHeight,tailwind:typeof tailwind!=="undefined",pideTailwind:!!document.querySelector('script[src*="tailwindcss"]'),elementos:o,bloques:b}),"*");},1200);});</script>`;
32
120
  function envoltorio(ancho, alto) {
33
121
  return `<!doctype html><html><body style="margin:0"><iframe src="maqueta.html" style="border:0;width:${ancho}px;height:${alto}px"></iframe><script>addEventListener("message",function(e){var p=document.createElement("pre");p.id="${MARCA}";p.textContent=e.data;document.body.appendChild(p);});</script></body></html>`;
34
122
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cajasDeMaqueta.js","sourceRoot":"","sources":["../../../src/agent/dispositivos/cajasDeMaqueta.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cajasDeMaqueta.js","sourceRoot":"","sources":["../../../src/agent/dispositivos/cajasDeMaqueta.ts"],"names":[],"mappings":"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"}
@@ -5,21 +5,103 @@
5
5
  * Se empareja por el NOMBRE de la captura, nunca por la fecha de los ficheros: emparejar por fecha cruzó
6
6
  * una vez el árbol de una ronda con la captura de otra. Nunca lanza: lo que no está o no se entiende es
7
7
  * `undefined`, y el crítico lo dice.
8
+ *
9
+ * **Y, si el nombre no la encuentra, por el CONTENIDO** (`geometriaPorContenido`). Medido en Maset: el conductor
10
+ * sacaba `xone-hotswap shot` (`captura-1791288505460.jpg`, con su geometría) y la convertía con `sips` a
11
+ * `menu_ronda7.png`; el crítico, sin árbol que leer, se quedaba en la opinión del modelo dos rondas seguidas. La
12
+ * geometría se acepta solo si la captura ORIGINAL que nombra sigue en `/artefactos/` con los MISMOS píxeles que la
13
+ * que se juzga: una conversión o un renombrado la conservan; una captura de otro momento, no. La fecha solo acota
14
+ * cuántas se miran, nunca decide.
8
15
  */
9
- import { readFileSync } from "node:fs";
16
+ import { readdirSync, readFileSync, statSync } from "node:fs";
10
17
  import { join } from "node:path";
11
18
  /** El nombre del fichero de geometría de una captura. La MISMA regla que `nombreDeGeometria` del script. */
12
19
  export function nombreDeGeometria(nombreDeCaptura) {
13
20
  const base = nombreDeCaptura.slice(nombreDeCaptura.lastIndexOf("/") + 1);
14
21
  return `${base.replace(/\.[A-Za-z0-9]{2,4}$/, "")}.geometria.json`;
15
22
  }
16
- export async function geometriaDeCaptura(carpetaDeHotswap, nombreDeCaptura) {
23
+ /** Cuántas geometrías, de las más recientes, se miran al buscar por contenido. */
24
+ export const GEOMETRIAS_A_MIRAR = 12;
25
+ /**
26
+ * Cuántos píxeles DISTINTOS se toleran, en fracción de la imagen. Una captura reconvertida (JPEG → PNG) repite los
27
+ * píxeles exactos; dos rondas distintas de la MISMA pantalla difieren en poco —la banda movida unos píxeles—, y por eso
28
+ * no vale una diferencia MEDIA: medido en Maset, la ronda 6 pasaba por la ronda 7 con una media por debajo de 2.
29
+ * Medido con las capturas reales (con `UMBRAL_DE_CANAL` 40): la misma captura reconvertida por `sips` difiere en un
30
+ * 0,02 % de los píxeles —dos decodificadores de JPEG no redondean igual en los bordes—, y dos rondas consecutivas en un
31
+ * 0,72 %. El tope va en medio, más cerca de la misma.
32
+ */
33
+ const PIXELES_DISTINTOS_TOLERADOS = 0.001;
34
+ /** Un píxel es distinto si algún canal se aparta más de esto: la holgura del ruido entre decodificadores de JPEG (medido). */
35
+ const UMBRAL_DE_CANAL = 40;
36
+ /** Cuántos píxeles distintos hay, en fracción; `Infinity` si no tienen el mismo tamaño. Recorre la imagen ENTERA. Pura. */
37
+ export function fraccionDistinta(a, b) {
38
+ if (a.ancho !== b.ancho || a.alto !== b.alto)
39
+ return Infinity;
40
+ let distintos = 0;
41
+ for (let i = 0; i < a.datos.length; i += 4) {
42
+ if (Math.abs(a.datos[i] - b.datos[i]) > UMBRAL_DE_CANAL ||
43
+ Math.abs(a.datos[i + 1] - b.datos[i + 1]) > UMBRAL_DE_CANAL ||
44
+ Math.abs(a.datos[i + 2] - b.datos[i + 2]) > UMBRAL_DE_CANAL) {
45
+ distintos += 1;
46
+ }
47
+ }
48
+ return distintos / (a.ancho * a.alto);
49
+ }
50
+ /** ¿Son la MISMA imagen (la misma captura, quizá reconvertida)? Pura. */
51
+ export function mismaImagen(a, b) {
52
+ return fraccionDistinta(a, b) <= PIXELES_DISTINTOS_TOLERADOS;
53
+ }
54
+ const leerGeometria = (ruta) => {
17
55
  try {
18
- const leido = JSON.parse(readFileSync(join(carpetaDeHotswap, nombreDeGeometria(nombreDeCaptura)), "utf8"));
56
+ const leido = JSON.parse(readFileSync(ruta, "utf8"));
19
57
  return leido["v"] === 1 ? leido : undefined;
20
58
  }
21
59
  catch {
22
60
  return undefined;
23
61
  }
62
+ };
63
+ /** La geometría de otra captura con los mismos píxeles que ésta, o `undefined`. Nunca lanza. */
64
+ export function geometriaPorContenido(carpetaDeHotswap, nombreDeCaptura, busqueda) {
65
+ try {
66
+ const base = nombreDeCaptura.slice(nombreDeCaptura.lastIndexOf("/") + 1);
67
+ const juzgada = busqueda.decodificar(readFileSync(join(busqueda.carpetaDeArtefactos, base)));
68
+ const candidatas = readdirSync(carpetaDeHotswap)
69
+ .filter((n) => n.endsWith(".geometria.json"))
70
+ .map((n) => ({ n, t: statSync(join(carpetaDeHotswap, n)).mtimeMs }))
71
+ .sort((a, b) => b.t - a.t)
72
+ .slice(0, GEOMETRIAS_A_MIRAR);
73
+ let mejor;
74
+ for (const { n } of candidatas) {
75
+ const g = leerGeometria(join(carpetaDeHotswap, n));
76
+ const original = g?.["captura"];
77
+ if (g === undefined || typeof original !== "string" || original === base)
78
+ continue;
79
+ const pantalla = g["pantalla"];
80
+ if (pantalla !== undefined && (pantalla.ancho !== juzgada.ancho || pantalla.alto !== juzgada.alto))
81
+ continue;
82
+ try {
83
+ const otra = busqueda.decodificar(readFileSync(join(busqueda.carpetaDeArtefactos, original.slice(original.lastIndexOf("/") + 1))));
84
+ const f = fraccionDistinta(juzgada, otra);
85
+ if (f <= PIXELES_DISTINTOS_TOLERADOS && (mejor === undefined || f < mejor.f))
86
+ mejor = { g, f };
87
+ }
88
+ catch {
89
+ // La original ya no está o no se lee: esa no.
90
+ }
91
+ }
92
+ // La MÁS parecida de las que pasan, no la primera: la más reciente no tiene por qué ser la suya.
93
+ if (mejor !== undefined)
94
+ return mejor.g;
95
+ }
96
+ catch {
97
+ // Sin captura que leer o sin carpeta: sin geometría.
98
+ }
99
+ return undefined;
100
+ }
101
+ export async function geometriaDeCaptura(carpetaDeHotswap, nombreDeCaptura, busqueda) {
102
+ const porNombre = leerGeometria(join(carpetaDeHotswap, nombreDeGeometria(nombreDeCaptura)));
103
+ if (porNombre !== undefined || busqueda === undefined)
104
+ return porNombre;
105
+ return geometriaPorContenido(carpetaDeHotswap, nombreDeCaptura, busqueda);
24
106
  }
25
107
  //# sourceMappingURL=geometriaEnDisco.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"geometriaEnDisco.js","sourceRoot":"","sources":["../../../src/agent/dispositivos/geometriaEnDisco.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,4GAA4G;AAC5G,MAAM,UAAU,iBAAiB,CAAC,eAAuB;IACvD,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACzE,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,iBAAiB,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,gBAAwB,EAAE,eAAuB;IACxF,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,CAA4B,CAAC;QACtI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"geometriaEnDisco.js","sourceRoot":"","sources":["../../../src/agent/dispositivos/geometriaEnDisco.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,8 @@ import { tool } from "@langchain/core/tools";
2
2
  import { z } from "zod";
3
3
  import { esRutaDeArtefacto, mimeDeArtefacto, nombreDeArtefacto, rutaRelativaDeArtefacto, } from "../../core/artefactos.js";
4
4
  import { imagenReferida } from "../../core/referenciasDeImagen.js";
5
- import { compararConMaqueta, controlesDelArbol, filas as filasDeCajas, filasDelAparato, hallazgosDeGeometria, informeDeGeometria, } from "../../core/geometriaDePantalla.js";
6
- import { compararDescripciones, hayQueArreglar, htmlComoAparato, informeDeComparacion, maquetaDeLaDescripcion, } from "../../core/descripcionDePantalla.js";
5
+ import { cajaParaElEstilo, compararConMaqueta, controlesDelArbol, filas as filasDeCajas, filasDelAparato, hallazgosDeGeometria, informeDeGeometria, } from "../../core/geometriaDePantalla.js";
6
+ import { compararDescripciones, hayQueArreglar, informeDeComparacion, maquetaDeLaDescripcion, } from "../../core/descripcionDePantalla.js";
7
7
  import { compararBloques, pantallaMedida } from "../../core/estiloMedido.js";
8
8
  import { juzgarPantalla, TOPE_DE_PETICIONES, } from "../dispositivos/juezVisual.js";
9
9
  /**
@@ -59,7 +59,12 @@ const Entrada = z.object({
59
59
  * La geometría de esta captura (`core/geometriaDePantalla.ts`), o `undefined` si este montaje no la tiene.
60
60
  * Nunca lanza: lo que no se puede medir se dice en el bloque, y el crítico sigue con su opinión.
61
61
  */
62
- async function geometriaDe(entrada, referida, referencia, deps, descrita) {
62
+ async function geometriaDe(entrada, referida, referencia, deps,
63
+ /**
64
+ * Describir la maqueta con un modelo, SOLO si hace falta: cuando no trae `code.html` medible es su única
65
+ * estructura. Con `code.html` ya no se pide (ver `estructuraDescrita`).
66
+ */
67
+ describir) {
63
68
  if (deps.leerGeometria === undefined)
64
69
  return undefined;
65
70
  let crudo;
@@ -105,7 +110,7 @@ async function geometriaDe(entrada, referida, referencia, deps, descrita) {
105
110
  controles,
106
111
  };
107
112
  let maqueta;
108
- const notas = [];
113
+ let sinCajas;
109
114
  if (referida !== undefined && referencia !== undefined && deps.cajasDeMaqueta !== undefined) {
110
115
  let medida;
111
116
  try {
@@ -114,18 +119,20 @@ async function geometriaDe(entrada, referida, referencia, deps, descrita) {
114
119
  catch {
115
120
  medida = { motivo: "no se pudo medir" };
116
121
  }
117
- const conDescripcion = descrita === undefined ? "" : " (la estructura de la maqueta va abajo, según su descripción)";
118
122
  if (medida === undefined)
119
- notas.push(`la maqueta es solo una imagen (sin code.html al lado): aquí, solo lo que se ve en el propio aparato${conDescripcion}.`);
123
+ sinCajas = "la maqueta es solo una imagen (sin code.html al lado): aquí, solo lo que se ve en el propio aparato";
120
124
  else if ("motivo" in medida)
121
- notas.push(`no pude medir las cajas de la maqueta: ${medida.motivo}. Aquí, solo lo del propio aparato${conDescripcion}.`);
125
+ sinCajas = `no pude medir las cajas de la maqueta: ${medida.motivo}. Aquí, solo lo del propio aparato`;
122
126
  else
123
127
  maqueta = medida;
124
128
  }
129
+ // Sin cajas medidas, la descripción es la única estructura de la maqueta; con ellas no se pide (`estructuraDescrita`).
130
+ const descrita = maqueta === undefined ? await describir() : undefined;
131
+ const notas = sinCajas === undefined ? [] : [`${sinCajas}${descrita === undefined ? "" : " (la estructura de la maqueta va abajo, según su descripción)"}.`];
125
132
  const h = hallazgosDeGeometria(aparato, maqueta);
126
133
  const lineas = informeDeGeometria({ ...h, notas: [...h.notas, ...notas] }, maqueta !== undefined);
127
134
  if (descrita !== undefined)
128
- lineas.push(...estructuraDescrita(descrita, aparato, maqueta));
135
+ lineas.push(...estructuraDescrita(descrita, aparato));
129
136
  return {
130
137
  lineas,
131
138
  hechos: [...h.bloqueantes, ...h.diferencias],
@@ -135,28 +142,15 @@ async function geometriaDe(entrada, referida, referencia, deps, descrita) {
135
142
  };
136
143
  }
137
144
  /**
138
- * Lo que aporta la maqueta DESCRITA, en un bloque APARTE del medido: nunca decide el rojo.
145
+ * Lo que aporta la maqueta DESCRITA, en un bloque APARTE del medido: nunca decide el rojo. Solo existe **sin
146
+ * `code.html`**: es la única estructura de la maqueta que hay, sus filas, orden y anchos contra el árbol medido. Así
147
+ * una maqueta que es solo un PNG también dice «la = va en otra fila».
139
148
  *
140
- * - **Sin `code.html`**, es la única estructura de la maqueta que hay: sus filas, orden y anchos contra el
141
- * árbol medido. Así una maqueta que es solo un PNG también dice «la = va en otra fila».
142
- * - **Con `code.html`**, la estructura la dan las cajas medidas, y la descripción solo VIGILA que la imagen
143
- * y el HTML cuenten lo mismo: la imagen es lo que se aprobó, y si el HTML se aparta, alguien tiene que
144
- * decirlo.
149
+ * **Con `code.html` la maqueta ya no se describe.** Antes la descripción vigilaba que la imagen y el HTML contaran lo
150
+ * mismo, en un bloque que no decidía nada y costaba una llamada a un modelo por crítica; y como lo decía un modelo,
151
+ * se equivocaba: en la calculadora daba «DEC de la imagen no está en su code.html», y sí estaba.
145
152
  */
146
- function estructuraDescrita(descrita, aparato, maqueta) {
147
- if (maqueta !== undefined) {
148
- const h = compararConMaqueta(maquetaDeLaDescripcion(descrita, false), htmlComoAparato(maqueta), {
149
- aproximada: true,
150
- nombres: { maqueta: "la imagen de la maqueta", aparato: "su code.html" },
151
- });
152
- if (h.diferencias.length === 0)
153
- return [];
154
- return [
155
- "",
156
- "LA IMAGEN DE LA MAQUETA Y SU code.html NO CUENTAN LO MISMO (según la descripción de la imagen, que hizo un modelo; míralo):",
157
- ...h.diferencias.map((d) => `- ${d}`),
158
- ];
159
- }
153
+ function estructuraDescrita(descrita, aparato) {
160
154
  const h = compararConMaqueta(maquetaDeLaDescripcion(descrita), aparato, { aproximada: true });
161
155
  return [
162
156
  "",
@@ -249,7 +243,12 @@ function medirEstilo(captura, referencia, geometria, deps) {
249
243
  if (deps.decodificar === undefined || geometria?.aparato === undefined)
250
244
  return undefined;
251
245
  try {
252
- const comoMedir = (fila) => fila.map((c) => ({ texto: c.texto ?? `[${c.nombre ?? "sin nombre"}]`, caja: c.caja }));
246
+ // El estilo de un texto se mide en la caja de su ENVOLTORIO si lo tiene (`cajaParaElEstilo`): el frame que hace de
247
+ // botón o de píldora, que es donde están el borde y el fondo.
248
+ const comoMedir = (fila) => fila.map((c) => {
249
+ const envoltorio = cajaParaElEstilo(c, geometria.aparato);
250
+ return { texto: c.texto ?? `[${c.nombre ?? "sin nombre"}]`, caja: c.caja, ...(envoltorio === c.caja ? {} : { envoltorio }) };
251
+ });
253
252
  const imagenDeLaCaptura = deps.decodificar(Buffer.from(captura.base64, "base64"));
254
253
  const vista = pantallaMedida(imagenDeLaCaptura, filasDelAparato(geometria.aparato).map(comoMedir));
255
254
  if (referencia === undefined || geometria.maqueta === undefined) {
@@ -263,8 +262,14 @@ function medirEstilo(captura, referencia, geometria, deps) {
263
262
  const indice = filasDeCajas(m.elementos.map((e) => e.caja));
264
263
  const porFila = new Map();
265
264
  m.elementos.forEach((e, i) => {
266
- const caja = { x: e.caja.x * escala, y: e.caja.y * escala, ancho: e.caja.ancho * escala, alto: e.caja.alto * escala };
267
- porFila.set(indice[i], [...(porFila.get(indice[i]) ?? []), { texto: e.texto, caja }]);
265
+ const aEscala = (c) => ({ x: c.x * escala, y: c.y * escala, ancho: c.ancho * escala, alto: c.alto * escala });
266
+ const caja = aEscala(e.caja);
267
+ // Un botón con su texto en un elemento propio: la letra en la caja del texto y la forma en la del botón, como el
268
+ // envoltorio del lado del aparato. Una caja que abraza su texto no dice nada de su alineación.
269
+ const control = e.cajaDelTexto !== undefined
270
+ ? { texto: e.texto, caja: aEscala(e.cajaDelTexto), envoltorio: caja, ajustado: true }
271
+ : { texto: e.texto, caja, ...(e.boton === true ? {} : { ajustado: true }) };
272
+ porFila.set(indice[i], [...(porFila.get(indice[i]) ?? []), control]);
268
273
  });
269
274
  const filasDeLaMaqueta = [...porFila.entries()].sort((a, b) => a[0] - b[0]).map(([, f]) => f.sort((a, b) => a.caja.x - b.caja.x));
270
275
  const comparacion = compararDescripciones(pantallaMedida(imagen, filasDeLaMaqueta), vista);
@@ -326,16 +331,17 @@ export function crearCriticaVisual(deps) {
326
331
  // Lo MEDIDO primero: el modelo lo recibe como hechos y no tiene que adivinar la estructura.
327
332
  // La maqueta, DESCRITA aparte y antes —geometría y luego estilo—: sin ella, el estilo queda a la memoria
328
333
  // del modelo y una maqueta sin code.html no tiene estructura. No poder describirla no impide juzgar.
329
- let descrita;
330
- if (referencia !== undefined && deps.describirPantalla !== undefined) {
334
+ const describir = async () => {
335
+ if (referencia === undefined || deps.describirPantalla === undefined)
336
+ return undefined;
331
337
  try {
332
- descrita = await deps.describirPantalla(referencia);
338
+ return await deps.describirPantalla(referencia);
333
339
  }
334
340
  catch {
335
- descrita = undefined;
341
+ return undefined;
336
342
  }
337
- }
338
- const geometria = await geometriaDe(entrada, referida, referencia, deps, descrita);
343
+ };
344
+ const geometria = await geometriaDe(entrada, referida, referencia, deps, describir);
339
345
  /**
340
346
  * **Con maqueta, la foto de UN CONTROL no se juzga**: la maqueta es la pantalla entera, y comparar contra un
341
347
  * trozo es la opinión de un modelo sobre lo que falta alrededor. Medido en la calculadora: el desarrollador pasaba
@@ -1 +1 @@
1
- {"version":3,"file":"criticaVisual.js","sourceRoot":"","sources":["../../../src/agent/grafo/criticaVisual.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"criticaVisual.js","sourceRoot":"","sources":["../../../src/agent/grafo/criticaVisual.ts"],"names":[],"mappings":"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"}