xonecode 0.17.2 → 0.20.1

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 (115) hide show
  1. package/apps/web/dist/assets/{index-BRVuyPBf.js → index-BvPUqjUm.js} +72 -72
  2. package/apps/web/dist/assets/{index-DLfF2uEK.css → index-CGEXMJBx.css} +1 -1
  3. package/apps/web/dist/assets/{php-B5LpMCn-.js → php-Dk28VW45.js} +1 -1
  4. package/apps/web/dist/assets/{ruby-Clm-qfwM.js → ruby-CPzEcmdp.js} +1 -1
  5. package/apps/web/dist/index.html +2 -2
  6. package/dist/agent/config/iconosEnRed.js +47 -0
  7. package/dist/agent/config/iconosEnRed.js.map +1 -0
  8. package/dist/agent/config/modelos.js +13 -8
  9. package/dist/agent/config/modelos.js.map +1 -1
  10. package/dist/agent/dispositivos/decodificarImagen.js +62 -0
  11. package/dist/agent/dispositivos/decodificarImagen.js.map +1 -0
  12. package/dist/agent/grafo/atributosXone.js +58 -0
  13. package/dist/agent/grafo/atributosXone.js.map +1 -0
  14. package/dist/agent/grafo/buscarIcono.js +92 -0
  15. package/dist/agent/grafo/buscarIcono.js.map +1 -0
  16. package/dist/agent/grafo/compararCapturas.js +103 -0
  17. package/dist/agent/grafo/compararCapturas.js.map +1 -0
  18. package/dist/agent/grafo/criticaVisual.js +23 -3
  19. package/dist/agent/grafo/criticaVisual.js.map +1 -1
  20. package/dist/agent/grafo/diferenciaDeCapturas.js +88 -0
  21. package/dist/agent/grafo/diferenciaDeCapturas.js.map +1 -0
  22. package/dist/agent/grafo/generarFondoSvg.js +83 -0
  23. package/dist/agent/grafo/generarFondoSvg.js.map +1 -0
  24. package/dist/agent/grafo/lectorDeReferencias.js +19 -0
  25. package/dist/agent/grafo/lectorDeReferencias.js.map +1 -0
  26. package/dist/agent/grafo/xoneAgent.js +11 -3
  27. package/dist/agent/grafo/xoneAgent.js.map +1 -1
  28. package/dist/agent/motores/trueforge/capacidades.js +49 -1
  29. package/dist/agent/motores/trueforge/capacidades.js.map +1 -1
  30. package/dist/agent/motores/trueforge/esperas.js +61 -0
  31. package/dist/agent/motores/trueforge/esperas.js.map +1 -0
  32. package/dist/agent/motores/trueforge/eventosTrueforge.js +11 -1
  33. package/dist/agent/motores/trueforge/eventosTrueforge.js.map +1 -1
  34. package/dist/agent/motores/trueforge/informesDeHijos.js +63 -0
  35. package/dist/agent/motores/trueforge/informesDeHijos.js.map +1 -0
  36. package/dist/agent/motores/trueforge/medidaAutomatica.js +118 -0
  37. package/dist/agent/motores/trueforge/medidaAutomatica.js.map +1 -0
  38. package/dist/agent/motores/trueforge/memoriaDeEspecialistas.js +186 -0
  39. package/dist/agent/motores/trueforge/memoriaDeEspecialistas.js.map +1 -0
  40. package/dist/agent/motores/trueforge/modeloLangchain.js +5 -0
  41. package/dist/agent/motores/trueforge/modeloLangchain.js.map +1 -1
  42. package/dist/agent/motores/trueforge/resumenSeguro.js +52 -0
  43. package/dist/agent/motores/trueforge/resumenSeguro.js.map +1 -0
  44. package/dist/agent/motores/trueforge/sesionTrueforge.js +545 -26
  45. package/dist/agent/motores/trueforge/sesionTrueforge.js.map +1 -1
  46. package/dist/agent/motores/trueforge/toolsDeFichero.js +69 -3
  47. package/dist/agent/motores/trueforge/toolsDeFichero.js.map +1 -1
  48. package/dist/agent/subagentes/agentesEnDisco.js +88 -19
  49. package/dist/agent/subagentes/agentesEnDisco.js.map +1 -1
  50. package/dist/agent/turno/diagnosticoDeTools.js +44 -3
  51. package/dist/agent/turno/diagnosticoDeTools.js.map +1 -1
  52. package/dist/agent/turno/informeDeTraza.js +66 -4
  53. package/dist/agent/turno/informeDeTraza.js.map +1 -1
  54. package/dist/agent/turno/registroDeFallos.js +6 -1
  55. package/dist/agent/turno/registroDeFallos.js.map +1 -1
  56. package/dist/agent/turno/resumenDeTool.js +12 -0
  57. package/dist/agent/turno/resumenDeTool.js.map +1 -1
  58. package/dist/agent/turno/turnoReal.js +8 -2
  59. package/dist/agent/turno/turnoReal.js.map +1 -1
  60. package/dist/cli/run.js +11 -0
  61. package/dist/cli/run.js.map +1 -1
  62. package/dist/core/agentes.js +36 -2
  63. package/dist/core/agentes.js.map +1 -1
  64. package/dist/core/analisisDeSesion.js +198 -0
  65. package/dist/core/analisisDeSesion.js.map +1 -0
  66. package/dist/core/atributosXone.js +187 -0
  67. package/dist/core/atributosXone.js.map +1 -0
  68. package/dist/core/compararCapturas.js +405 -0
  69. package/dist/core/compararCapturas.js.map +1 -0
  70. package/dist/core/esfuerzo.js +33 -0
  71. package/dist/core/esfuerzo.js.map +1 -1
  72. package/dist/core/fallos.js.map +1 -1
  73. package/dist/core/fondosSvg.js +223 -0
  74. package/dist/core/fondosSvg.js.map +1 -0
  75. package/dist/core/iconos.js +140 -0
  76. package/dist/core/iconos.js.map +1 -0
  77. package/dist/core/modoDeEscritura.js +40 -0
  78. package/dist/core/modoDeEscritura.js.map +1 -1
  79. package/dist/core/notify.js +8 -0
  80. package/dist/core/notify.js.map +1 -1
  81. package/dist/core/nucleoXone.js +113 -0
  82. package/dist/core/nucleoXone.js.map +1 -0
  83. package/dist/core/paqueteDeSoporte.js +118 -0
  84. package/dist/core/paqueteDeSoporte.js.map +1 -0
  85. package/dist/core/ports.js +31 -0
  86. package/dist/core/ports.js.map +1 -1
  87. package/dist/core/referenciasDeImagen.js +55 -0
  88. package/dist/core/referenciasDeImagen.js.map +1 -0
  89. package/dist/core/selectorDeCarpeta.js +15 -1
  90. package/dist/core/selectorDeCarpeta.js.map +1 -1
  91. package/dist/core/settings.js +19 -4
  92. package/dist/core/settings.js.map +1 -1
  93. package/dist/core/shellDeAgente.js +39 -0
  94. package/dist/core/shellDeAgente.js.map +1 -1
  95. package/dist/core/tareasDelPlan.js +69 -7
  96. package/dist/core/tareasDelPlan.js.map +1 -1
  97. package/dist/web/servidor/arranque.js +110 -0
  98. package/dist/web/servidor/arranque.js.map +1 -1
  99. package/dist/web/servidor/sesiones.js +8 -0
  100. package/dist/web/servidor/sesiones.js.map +1 -1
  101. package/dist/web/servidor/soporte.js +571 -0
  102. package/dist/web/servidor/soporte.js.map +1 -0
  103. package/dist/web/servidor/transporte.js.map +1 -1
  104. package/package.json +4 -1
  105. package/skills/xone-development/references/css/propiedades-y-herencia.md +2 -0
  106. package/skills/xone-development/references/datos/appdata-referencia-ampliada.md +2 -2
  107. package/skills/xone-development/references/datos/appdata.md +5 -3
  108. package/skills/xone-development/references/fundamentos/errores-comunes.md +49 -0
  109. package/skills/xone-development/references/xml-ui/prop-tipos-basicos.md +2 -0
  110. package/skills/xone-hotswap/SKILL.md +4 -0
  111. package/skills/xone-hotswap/scripts/xone-log-android +18 -1
  112. package/skills/xone-plan-builder/SKILL.md +18 -10
  113. package/skills/xone-plan-builder/references/TASKS-FORMAT.md +13 -5
  114. package/skills/xone-project-generator/references/fases-10-12-readmes-y-validacion.md +1 -0
  115. package/skills/xone-spec-builder/SKILL.md +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soporte.js","sourceRoot":"","sources":["../../../src/web/servidor/soporte.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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xonecode",
3
- "version": "0.17.2",
3
+ "version": "0.20.1",
4
4
  "description": "Consola CLI y harness de agente para desarrollar aplicaciones XOne",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -51,9 +51,11 @@
51
51
  "fflate": "^0.8.3",
52
52
  "ink": "^5.2.1",
53
53
  "ink-testing-library": "^4.0.0",
54
+ "jpeg-js": "^0.4.4",
54
55
  "langchain": "1.5.10",
55
56
  "marked": "^16.4.2",
56
57
  "micromatch": "4.0.8",
58
+ "pngjs": "^7.0.0",
57
59
  "react": "^18.3.1",
58
60
  "winston": "3.19.0",
59
61
  "ws": "^8.21.3",
@@ -64,6 +66,7 @@
64
66
  "@types/better-sqlite3": "^7.6.12",
65
67
  "@types/micromatch": "4.0.10",
66
68
  "@types/node": "^20.19.43",
69
+ "@types/pngjs": "^6.0.5",
67
70
  "@types/react": "^18.3.31",
68
71
  "@types/ws": "^8.18.1",
69
72
  "jsdom": "^25.0.1",
@@ -517,6 +517,8 @@ El atributo `visible` usa un sistema de mascara de bits que controla en que modo
517
517
 
518
518
  > **NOTA:** La propiedad `elevation` funciona principalmente en Android, donde genera una sombra real bajo el elemento. En iOS, el efecto puede variar o no ser visible. Como alternativa multiplataforma, se pueden usar bordes sutiles (`border: true; border-color: #E0E0E0;`) para dar sensacion de profundidad.
519
519
 
520
+ > **⚠️ `elevation` recorta el fondo de un botón con esquinas redondeadas.** Medido en un emulador Android: con `elevation: 4` y `border-corner-radius`, las teclas salen con la parte de abajo cortada en plano (forma de lápida: arco arriba, base recta); con `elevation: 0` salen rectángulos redondeados completos, y una tecla con otra clase que conservaba elevación seguía cortada. Ni el verificador (`validate` da verde) ni las medidas de las cajas lo ven: la tecla cabe en su fila. **En un control redondeado no pongas `elevation`; la sombra, si hace falta, se dibuja en el fondo** (un SVG generado, con la sombra hecha de capas). Sin medir en iOS.
521
+
520
522
  **Ejemplo - Footer fijo en la parte inferior (proyecto SocialNetwork):**
521
523
 
522
524
  ```css
@@ -119,8 +119,8 @@ let sFrameVersion = appData.getGlobalMacro("##FRAME_VERSION##");
119
119
  let valor = appData.getGlobalMacro("##MI_MACRO##");
120
120
  appData.setGlobalMacro("##MI_MACRO##", "mi_valor");
121
121
 
122
- // Escribir mensaje de debug
123
- appData.writeConsoleString("Debug: valor = " + valor);
122
+ // Escribir mensaje de debug: console.log (writeConsoleString es legacy y no llega al log de Android)
123
+ console.log("Debug: valor = " + valor);
124
124
 
125
125
  // Limpiar errores acumulados
126
126
  appData.error().clear();
@@ -372,8 +372,8 @@ appData.exit();
372
372
  // === Cerrar la ventana actual ===
373
373
  ui.getView(self).exit();
374
374
 
375
- // === Escribir en consola de debug ===
376
- appData.writeConsoleString("Debug: valor = " + valor);
375
+ // === Escribir en consola de debug: console.log (writeConsoleString es legacy) ===
376
+ console.log("Debug: valor = " + valor);
377
377
 
378
378
  // === Cargar archivos include (solo para casos dinámicos — preferir <include>/<script> en <app>; ver 4.11) ===
379
379
  appData.loadIncludeFile("scripts/miModulo.js", "javascript", "UTF-8");
@@ -456,7 +456,9 @@ if (error.getNumber() != 0) {
456
456
  }
457
457
  ```
458
458
 
459
- #### writeConsoleString(message) - Consola de Depuracion
459
+ #### writeConsoleString(message) - Consola de Depuracion (legacy)
460
+
461
+ > **Legacy: para depurar, `console.log`.** Medido en un emulador Android: `console.log("X")` sale en el log del host como `V XOneJavaScript: X` (se lee con `xone-log-android --app`), y `appData.writeConsoleString` no deja nada en el log. No uses tampoco `ui.showToast` para depurar: el aviso desaparece y no deja rastro.
460
462
 
461
463
  ```javascript
462
464
  appData.writeConsoleString("App_log_xone->Mensaje de depuracion");
@@ -178,6 +178,21 @@ El formato más habitual es PNG por compatibilidad historica, pero SVG es perfec
178
178
 
179
179
  **Anti-patrón frecuente — NO renderizar SVG con un `type="WEB"`:** el soporte de SVG en XOne es nativo y completo. Un `.svg` es una imagen más: se refiere con `type="IMG"` (`path="dibujo.svg"`) o con los atributos `img`/`imgbk`, igual que un PNG. Envolverlo en un WebView (`type="WEB"`) para "que se vea" es innecesario, no aporta nada y rompe el escalado y la integración con el control. El control `WEB` es solo para contenido web remoto (URLs), nunca para imágenes locales.
180
180
 
181
+ **Cuando el proyecto no trae el icono, no lo dibujes a mano.** Si tienes la tool `buscar_icono` (no todos los agentes la tienen), consulta Iconify (más de 200 colecciones) en dos pasos: `buscar` con un texto —en inglés rinde más— y `obtener` con el id que salió, un **color hexadecimal** y una altura en píxeles. Solo lee: el SVG lo escribes tú con `write_file` en `icons/ic_<nombre>.svg` (la convención `ic_`, con guiones bajos), tal cual, y se aprueba como cualquier escritura. Se referencia con el **nombre a secas** —`img="ic_home.svg"`—, como el resto de imágenes: XOne lo busca en `icons/`. Sin la tool, pide el asset o deja el botón con texto.
182
+
183
+ **Un icono NO va en el `img` de un botón: se estira.** En un `type="B"`, `img` pinta la imagen llenando el botón entero (medido: un icono de 48 px en un botón ancho salió deformado hasta ocupar todo el ancho). El icono suelto va en su propio `type="IMG"` con `path="ic_home.svg"` y el tamaño que tenga, que sale nítido. El `img` de un botón sirve para un fondo del tamaño del botón (ver abajo).
184
+
185
+ - **Un solo estilo por app.** Elige UNA colección (`lucide`, `tabler`…) y quédate en ella: mezclar trazos de colecciones distintas se ve desigual.
186
+ - **El color va explícito, y el tamaño también.** Sin ellos Iconify devuelve `currentColor` y `width="1em"`, que esta documentación no dice cómo resuelve XOne; un icono sin tinte o sin tamaño válido no da error, sale mal en silencio. Por eso `obtener` los exige.
187
+ - **Sin red, la tool lo dice.** No inventes el `path` del SVG: pide el asset o deja el botón con texto.
188
+ - **Un icono referenciado que no está en `icons/` tampoco da error**: XOne lo ignora. Tras escribirlos, comprueba que cada `img`/`path` apunta a un fichero que existe.
189
+
190
+ **Degradados, sombras y resplandores: `imgbk` con un SVG generado.** XOne no los trae, y los filtros SVG (`feGaussianBlur`, `feDropShadow`) **se ignoran en silencio**: no los escribas. Si tienes la tool `generar_fondo_svg`, pásale el ancho y el alto **del control** que lleva el fondo (solo cuenta la proporción) y el tipo (`degradado-lineal`, `degradado-radial`, `sombra`, `glow`); escribe el SVG con `write_file` en `icons/bg_<nombre>.svg`. **En un frame o grupo se usa con `imgbk="bg_<nombre>.svg"`; en un botón (`type="B"`) con `img="bg_<nombre>.svg"`** (y `imgsel` para el pulsado): en un botón `imgbk` se IGNORA, ni como atributo ni desde una clase CSS, y sale el botón nativo gris. Las medidas se pasan como las declaras en el XML (`"90%"`, `"60p"`, `"120px"`); son una estimación sobre un aparato de 1080 px de ancho.
191
+
192
+ - **La esquina va DIBUJADA en el SVG.** `border-corner-radius` no recorta el `imgbk`, y un SVG de otra proporción que el control deforma la esquina: genera un fondo por cada tamaño de control.
193
+ - **Los colores van como en XOne, `#RRGGBB` o `#AARRGGBB`, con el alfa PRIMERO.** HTML y SVG lo ponen al final (`#RRGGBBAA`): un `#7F00FF00` copiado tal cual a un SVG saldría transparente y de otro color. La tool convierte; si escribes el SVG a mano, separa el alfa en `stop-opacity`/`fill-opacity`.
194
+ - **Sin la tool**, un degradado lineal o radial escrito a mano sí se pinta, pero la sombra y el desenfoque no: pide el asset.
195
+
181
196
  ---
182
197
 
183
198
  ### Error 9: Pensar que hay que declarar `ID` o `ROWID`
@@ -285,6 +300,40 @@ Declararlas explícitamente (`<prop name="ID">` / `<prop name="ROWID">`) **no ca
285
300
 
286
301
  **Lo que NO es valido:** dos `<coll>` con el mismo `name` en el proyecto.
287
302
 
303
+ ### Error 12: Pedir un control con `getControl` cuando todavía no existe
304
+
305
+ ```javascript
306
+ // MAL: en <create> la vista aún no está montada
307
+ function calcInit() {
308
+ var c = getControl("MAP_EXPRESION"); // LANZA
309
+ c.setText("0");
310
+ }
311
+ ```
312
+
313
+ `getControl("X")` **lanza** una `IllegalArgumentException` («Cannot find control "X"») si el control no existe, y **un
314
+ `try/catch` de JavaScript no la detiene**: viene del puente nativo, aborta el evento entero (`CXoneDataObject::OnCreate
315
+ failed`) y deja un diálogo de error encima de la pantalla. Medido en un emulador Android.
316
+
317
+ **No existen** los controles de la vista durante `<create>` (todavía no está montada) ni los hijos de un frame
318
+ **oculto** (`visible="0"`), como un cajón cerrado.
319
+
320
+ ```javascript
321
+ // BIEN: en <create> solo estado y valores
322
+ function calcInit() {
323
+ self.MAP_EXPRESION = "0";
324
+ }
325
+
326
+ // BIEN: una sonda que NO lanza, para un control que puede no existir
327
+ function calcControl(nombre) {
328
+ var v = ui.getView(self);
329
+ return v ? (v[nombre] || null) : null; // ui.getView(self)["X"] da undefined, no lanza
330
+ }
331
+ ```
332
+
333
+ La documentación de `getControl` y la indexación de la vista (`ui.getView(self)["X"]`) las presenta como equivalentes:
334
+ para acceder no lo son, y esa diferencia es la que evita el diálogo. **Y un texto que cambia desde JavaScript no va en
335
+ un `L`/`TL`** (pintan su `title`): usa un `T` con `labelwidth="0"` y `locked="true"`.
336
+
288
337
  ---
289
338
 
290
339
  Esta guía ha cubierto los conceptos fundamentales de XOne:
@@ -80,6 +80,8 @@ Texto de solo lectura. Ideal para títulos, etiquetas y textos informativos.
80
80
 
81
81
  > **No pongas `labelwidth="0"` en un label.** En un `L`/`TL` el texto es el propio `title`, que se pinta dentro del ancho reservado para la etiqueta; con `labelwidth="0"` no hay sitio y el texto desaparece (queda un control vacío). Deja `labelwidth` por defecto y, si necesitas centrar o alinear el texto, usa `label-align="left|center|right"`. El `labelwidth="0"` solo es correcto en campos cuyo contenido va en el *valor* (`T`, `N`…) o que no tienen texto (`IMG`, botón de icono).
82
82
 
83
+ > **⚠️ Un `L`/`TL` NO se repinta al escribir su valor: pinta su `title`.** Medido en un emulador Android con una calculadora: el JavaScript hacía `self.lblResultado = "15"; ui.refreshValue("lblResultado")` sobre un `TL` y `getText` devolvía `15`, pero el display seguía enseñando `0`, con toques reales y capturas. Cambia el VALOR del campo, no el `title`, que es lo que pinta el label, y `refreshValue` no lo remedia (probado con un nombre y con varios). Con `setAttribute` sobre `title` sí cambia lo visible. **Para un texto que cambia desde JavaScript no uses `L`/`TL`: usa un `T` de solo lectura** (`type="T"`, `labelwidth="0"`, `locked="true"`), cuyo contenido es el valor; el color y el tamaño de ese valor van en `text-forecolor` y `textfont-size`, porque `forecolor` y `fontsize` son del label, que ahí va oculto. `locked` impide editarlo por la interfaz y no la escritura desde JavaScript; `readonly` solo lo excluye del UPDATE a base de datos. Sin medir en iOS.
84
+
83
85
  #### 5.9.3 Numérico (N, N2..N6, TN, TN2..TN6)
84
86
 
85
87
  ```xml
@@ -26,12 +26,15 @@ No cuestan lo mismo, ni de lejos. Por orden de lo que vas a necesitar:
26
26
  |---|---|---|
27
27
  | **dónde estoy** | `screen` | una línea: colección activa, diálogos abiertos, ventana con el foco |
28
28
  | **qué está fallando** | `xone-log-android` | un error de JavaScript o una excepción salen ahí con su mensaje y su línea |
29
+ | **qué ha pasado tras una acción** | `xone-log-android --limpiar`, la acción, `xone-log-android --app` | trae SOLO los `console.log` de la app, sus errores y qué manejador corrió (`Executing script: [MenuPrincipal][btnD8][onclick]`): casi siempre basta sin captura |
29
30
  | **el valor de un campo** | `getText name=X` | un viaje, una respuesta corta |
30
31
  | **varios campos** | `getFields names=A,B,C` | UN viaje; un campo que falle no tumba a los demás |
31
32
  | **el contenido de una lista** | `getRows content=X fields=…` | alcanza todas las filas, no solo las pintadas |
32
33
  | **qué hay en la pantalla** | `elements` | SOLO para explorar: decenas de miles de caracteres |
33
34
  | **si algo se VE mal** | `shot name=MAP_X` | y solo aquí |
34
35
 
36
+ **`getText` devuelve el VALOR del campo, no lo que se ve, y comprobar con él engaña.** En un `L`/`TL` el texto pintado es su `title`: el código puede escribir `15` en el campo, `getText` contestar `15` y la pantalla seguir en `0` (medido con una calculadora). Para saber lo PINTADO, el árbol (`elements`, campo `text` de cada control) o una captura nativa tras un toque real (`adb shell input tap`) comparando los píxeles del sitio que debe cambiar antes y después. Otra trampa de lo mismo: en la misma conexión, leer o capturar justo tras un `click` da el valor anterior en 2 de 12 lecturas y ninguna 100–200 ms después, porque el repintado es asíncrono; un hash idéntico entre dos capturas tras un cambio NO prueba que la captura esté cacheada, puede ser que el display no se repinte.
37
+
35
38
  **Y la captura del CANAL no pinta los diálogos.** Lo dice la referencia del equipo del
36
39
  framework: `getScreenshot` dibuja la ventana de la ACTIVIDAD, así que un diálogo abierto —el
37
40
  «Error loading initial config» de XOne, por ejemplo— **no sale en ella** aunque la persona lo
@@ -115,6 +118,7 @@ xone-hotswap waitForElement name=BTN_OK timeout=5000 -- click name=BTN_OK # UN
115
118
  # Por qué algo no se pinta o la app se muere: las excepciones del aparato.
116
119
  xone-log-android
117
120
  xone-log-android --limpiar # aísla lo que pase a partir de ahora
121
+ xone-log-android --app # SOLO los console.log de la app, sus errores y qué manejador corrió
118
122
 
119
123
  # RESPALDO de la captura, para cuando el canal no contesta: `adb exec-out screencap` pero
120
124
  # guardándola donde toca. Nunca redirijas ese `adb` tú: el `cwd` es la raíz del proyecto.
@@ -17,6 +17,7 @@
17
17
  * xone-log-android errores y excepciones recientes
18
18
  * xone-log-android --lineas 400 más cola
19
19
  * xone-log-android --todo todo lo del host, no solo errores
20
+ * xone-log-android --app SOLO lo que escribió la app con console.log, más sus errores
20
21
  * xone-log-android --limpiar vacía el buffer y sale (para aislar lo siguiente)
21
22
  * xone-log-android --serie emulator-5554
22
23
  */
@@ -32,6 +33,7 @@ if (args.includes("--help") || args.includes("-h")) {
32
33
  xone-log-android errores y excepciones recientes (por omisión, 200 líneas)
33
34
  xone-log-android --lineas 400 más cola
34
35
  xone-log-android --todo todo lo del host, no solo errores
36
+ xone-log-android --app SOLO los console.log de la app (etiqueta XOneJavaScript) y sus errores
35
37
  xone-log-android --limpiar vacía el buffer y sale, para aislar lo que pase después
36
38
  xone-log-android --serie <id> con varios aparatos conectados
37
39
 
@@ -62,6 +64,13 @@ if (args.includes("--limpiar")) {
62
64
 
63
65
  const lineas = Number(opcion("lineas") ?? 200);
64
66
  const todo = args.includes("--todo");
67
+ /**
68
+ * `--app`: lo que la APP escribió con `console.log`, y sus errores, sin el resto del host. Medido en el emulador: un
69
+ * `console.log("X")` de un script sale como `V XOneJavaScript: X` en el log del host, y la vista por omisión —solo
70
+ * errores— lo tira; `--todo` lo entierra entre cientos de líneas del sistema. `appData.writeConsoleString` (legacy) no
71
+ * deja nada en el log de Android. Es lo que hay que leer para saber qué ha pasado tras una acción, antes que una captura.
72
+ */
73
+ const app = args.includes("--app");
65
74
 
66
75
  /** El PID del host, si está vivo. Sin él no se puede acotar por proceso: se dice y se sigue. */
67
76
  let pid;
@@ -76,7 +85,7 @@ const salida = [];
76
85
  if (pid !== undefined && pid !== "") {
77
86
  const suyo = adb("logcat", "-d", "--pid", pid, "-t", String(lineas));
78
87
  salida.push(`--- ${PAQUETE} (pid ${pid}) ---`);
79
- salida.push(todo ? suyo : soloInteresante(suyo));
88
+ salida.push(todo ? suyo : app ? soloDeLaApp(suyo) : soloInteresante(suyo));
80
89
  } else {
81
90
  salida.push(`--- ${PAQUETE} no está vivo ahora mismo: solo queda lo que dejó escrito ---`);
82
91
  }
@@ -91,6 +100,14 @@ if (caidas !== "") {
91
100
  salida.push("", "--- caídas duras (cualquier proceso) ---", caidas);
92
101
  }
93
102
 
103
+ /** Los `console.log` de la app (etiqueta XOneJavaScript) y los errores del host, en su orden. */
104
+ function soloDeLaApp(texto) {
105
+ const filas = texto.split("\n").filter((l) => /\sXOneJavaScript\s*:/.test(l) || /\s[EF]\s/.test(l) || /Caused by:|Exception/.test(l));
106
+ return filas.length === 0
107
+ ? "(la app no ha escrito nada con console.log ni ha dado errores en esas líneas; si esperabas una línea, no se ejecutó ese código)"
108
+ : filas.join("\n");
109
+ }
110
+
94
111
  /** Lo que merece la pena leer de un volcado del host: errores, avisos y trazas de excepción. */
95
112
  function soloInteresante(texto) {
96
113
  const filas = texto.split("\n").filter((l) => {
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: xone-plan-builder
3
- description: "Descomponer el PLAN.md (spec) de xone-spec-builder en un plan de ejecución (TASKS.md): tareas tracer-bullet verticales con dependencias explícitas. Valida el spec, descompone en cortes verticales (coll + pantalla + eventos + estilo), cada uno demoable y verificable con xone-review. Dependencias naturales XOne: mappings.xne → colls base → colls negocio → pantallas entidad → pantallas especiales → integraciones dispositivo (GPS, cámara, firma DR, escáner, biometría) → estilo → sincronización → validación. Prefactoring: reestructuras que facilitan el cambio. Refactors amplios: expand-contract. Quiz al usuario: granularidad, dependencias, partición. Tareas: una por context window, qué entrega (no cómo), bloqueada por, criterios verificables. Hitos con validación xone-review. Es análisis, no entrevista: no toma decisiones de diseño, si el spec tiene huecos lo devuelve a xone-spec-builder."
3
+ description: "Descomponer el PLAN.md (spec) de xone-spec-builder en un plan de ejecución (TASKS.md): tareas tracer-bullet verticales con dependencias explícitas. Valida el spec, descompone en cortes verticales (coll + pantalla + eventos + estilo), cada uno demoable y comprobable en el aparato. Dependencias naturales XOne: mappings.xne → colls base → colls negocio → pantallas entidad → pantallas especiales → integraciones dispositivo (GPS, cámara, firma DR, escáner, biometría) → estilo → sincronización → validación. Prefactoring: reestructuras que facilitan el cambio. Refactors amplios: expand-contract. Quiz al usuario: granularidad, dependencias, partición. Tareas: una por context window, qué entrega (no cómo), bloqueada por, criterios verificables. Hitos que cierran con una comprobación en el aparato. Es análisis, no entrevista: no toma decisiones de diseño, si el spec tiene huecos lo devuelve a xone-spec-builder."
4
4
  ---
5
5
 
6
6
  # XOne Plan Builder
@@ -17,7 +17,7 @@ Esta skill es **análisis y descomposición**, no entrevista. No afina el domini
17
17
  xone-spec-builder → PLAN.md (el spec)
18
18
  xone-plan-builder → TASKS.md (el plan de ejecución) ← esta skill
19
19
  xone-project-generator / xone-development → ejecutan una tarea cada vez
20
- xone-review → valida con xone-simulator
20
+ arnés + device-controller → valida: el verificador al cerrar el turno, el aparato con toques reales
21
21
  ```
22
22
 
23
23
  ## Estructura de archivos
@@ -50,6 +50,13 @@ todas sus casillas están marcadas, y es lo que la pestaña Planes resume.
50
50
 
51
51
  Cada tarea es una cabecera `### NN — Título` (no `## T1`), con sus casillas debajo.
52
52
 
53
+ **El plan también recuerda lo grave.** `TASKS.md` lleva una sección `## Hallazgos` (vacía al crear
54
+ el plan): quien descubre algo que cambia cómo se trabaja —con su causa medida, no una sospecha— lo
55
+ apunta ahí en cuanto lo sabe, y quien empiece un encargo con plan la lee primero. Cada sesión empieza
56
+ sin memoria: en una calculadora hecha por los agentes, un display que no se repintaba se diagnosticó
57
+ en una sesión que se cortó antes de arreglarlo, no quedó escrito, y siguió sin funcionar siete
58
+ pasadas más. Y si el encargo trae un diseño, se destila UNA vez en `DISENO.md` al lado del plan.
59
+
53
60
  Ésa es la razón de que el plan viva en `/planes/` y no entre los artefactos: no es un documento
54
61
  que se entrega una vez, es el estado compartido entre quien planifica y quien desarrolla, a lo
55
62
  largo de varios turnos y varias sesiones.
@@ -72,7 +79,7 @@ Si algo falta, no lo inventes: devuelve a `xone-spec-builder` con una nota espec
72
79
  Una tarea es un **corte vertical** que atraviesa todas las capas que necesite para entregar un comportamiento completo y verificable:
73
80
 
74
81
  - **Vertical, no horizontal.** «Crear coll Clientes + su pantalla de lista + su pantalla de edición + su estilo» es vertical. «Crear todas las colls» es horizontal —no es una tarea, es una capa.
75
- - **Demoable o verificable por sí sola.** Al cerrar la tarea, hay algo que funciona de principio a fin y se puede validar con `xone-review`.
82
+ - **Demoable o verificable por sí sola.** Al cerrar la tarea, hay algo que funciona de principio a fin y se puede comprobar: el verificador del arnés (corre `xone-simulator validate` solo, al cerrar cada turno que escribió) y la comprobación en el aparato de `device-controller`.
76
83
  - **Cabe en una sesión de agente.** Si una tarea es tan grande que no cabe en un context window, pártela.
77
84
  - **Declara sus dependencias.** Qué tareas deben cerrarse antes de que ésta pueda empezar.
78
85
 
@@ -97,7 +104,7 @@ El orden de ejecución sigue las dependencias del framework:
97
104
  ↓ — puede ir en paralelo desde el principio; ajuste fino al final
98
105
  8. Sincronización y seguridad (réplica, OAuth2, tokens…)
99
106
  ↓ — si el desarrollo la toca
100
- 9. Validación con xone-review (xone-simulator validate + smoke)
107
+ 9. Comprobación en el aparato (device-controller; el verificador del arnés corre solo)
101
108
  ```
102
109
 
103
110
  ### Reglas de secuenciación
@@ -105,9 +112,10 @@ El orden de ejecución sigue las dependencias del framework:
105
112
  - **`mappings.xne` primero.** Empresas y Usuarios deben existir antes que cualquier coll de negocio que haga combo a Empresas.
106
113
  - **Una coll antes que su pantalla.** No se puede crear la pantalla de edición de Pedidos sin que la coll Pedidos exista.
107
114
  - **`inherits`/`<include-layout>` antes que las colls que los consumen.** Si se define una coll base `special="true"` para herencia, va antes que las colls que heredan de ella.
115
+ - **El comportamiento se comprueba ANTES que el pulido.** En una pantalla interactiva, la tarea «la app reacciona a un toque» —una captura antes y otra después de la zona que debe cambiar— va justo detrás del esqueleto visual y antes de cualquier tarea de aspecto fino. Si no, se pule algo que no funciona: medido, un display que no se repintaba vivió siete pasadas de retoques visuales.
108
116
  - **Estilo en paralelo.** `default.css` con las clases base puede empezar desde la tarea 1, pero el ajuste fino de pantallas específicas va después de que la pantalla exista.
109
117
  - **Integraciones después de su contenedor.** La firma DR en Pedidos va en una tarea que depende de que Pedidos (coll + pantalla de edición) ya exista.
110
- - **Validación al final de cada hito.** Si el plan tiene varios hitos, cada uno cierra con una tarea de validación `xone-review`.
118
+ - **Comprobación al final de cada hito.** Si el plan tiene varios hitos, cada uno cierra con una tarea de comprobación en el aparato (`device-controller`); la validación estática la hace el verificador del arnés solo.
111
119
 
112
120
  ### Prefactoring
113
121
 
@@ -120,7 +128,7 @@ Solo propón prefactor si el spec lo justifica o si al leer el proyecto existent
120
128
  Un **refactor amplio** es un cambio mecánico cuyo **radio de explosión** cubre todo el proyecto —renombrar una coll, cambiar el tipo de un campo compartido, migrar de `load` a `before-edit` en todas las colls—. No se puede partir en un corte vertical porque un solo edit rompe miles de sitios. Secuenciálo como **expand–contract**:
121
129
 
122
130
  1. **Expand:** añade la nueva forma junto a la vieja, sin romper nada.
123
- 2. **Migra** los sitios de uso en lotes (por carpeta, por módulo), cada lote su propia tarea bloqueada por el expand, manteniendo `xone-review` verde lote a lote.
131
+ 2. **Migra** los sitios de uso en lotes (por carpeta, por módulo), cada lote su propia tarea bloqueada por el expand, manteniendo el verificador del arnés en verde lote a lote.
124
132
  3. **Contract:** borra la forma vieja cuando nadie la usa, en una tarea bloqueada por todos los lotes.
125
133
 
126
134
  Si el spec no describe un refactor amplio, no lo fuerces. Es excepción, no regla.
@@ -174,7 +182,7 @@ Ver [TASKS-FORMAT.md](references/TASKS-FORMAT.md) para la plantilla completa. Re
174
182
 
175
183
  ## Hitos
176
184
 
177
- {si aplica: qué conjunto de tareas forma un hito verificable con xone-review}
185
+ {si aplica: qué conjunto de tareas forma un hito comprobable en el aparato}
178
186
  ```
179
187
 
180
188
  ## Reglas
@@ -184,7 +192,7 @@ Ver [TASKS-FORMAT.md](references/TASKS-FORMAT.md) para la plantilla completa. Re
184
192
  - **Nombres consistentes con el spec**, y el `MAP_` según `xone-development`.
185
193
  - **No inventes lo que el spec no dice.** Si falta algo para descomponer, devuelve a `xone-spec-builder`.
186
194
  - **Evita rutas de archivo o snippets de código específicos** —envejecen rápido. Excepción: si un prototipo o el spec produjo un snippet que codifica una decisión más preciso que prosa (esquema, state machine), inclúyelo y nota su origen.
187
- - **La validación es una tarea.** Si el plan tiene hitos, cada hito cierra con una tarea `xone-review`. Si no, al menos una tarea de validación al final.
195
+ - **La comprobación es una tarea.** Si el plan tiene hitos, cada hito cierra con una tarea de comprobación en el aparato. Si no, al menos una al final. No nombres herramientas que no estén en las skills de los especialistas: quien ejecuta las buscará.
188
196
 
189
197
  ## Cierre
190
198
 
@@ -195,9 +203,9 @@ Antes de entregar `TASKS.md`:
195
203
  - [ ] El orden de ejecución respeta las dependencias naturales de XOne (mappings → colls → pantallas → integraciones → estilo → validación).
196
204
  - [ ] No hay tareas que dependan de cosas que el spec no especifica —o están marcadas como notas.
197
205
  - [ ] El usuario aprobó el desglose.
198
- - [ ] Las tareas de validación `xone-review` están en su sitio.
206
+ - [ ] Las tareas de comprobación en el aparato están en su sitio.
199
207
 
200
- Al entregar, señala el siguiente paso: `xone-project-generator` (app nueva) o `xone-development` (sobre existente) ejecutan una tarea cada vez, y `xone-review` valida los hitos.
208
+ Al entregar, señala el siguiente paso: `xone-project-generator` (app nueva) o `xone-development` (sobre existente) ejecutan una tarea cada vez, y el verificador del arnés (al cerrar cada turno) y device-controller en el aparato validan los hitos.
201
209
 
202
210
  ## Referencias
203
211
 
@@ -43,16 +43,23 @@
43
43
  6. 06 — Integración GPS + ClientesMapa (bloqueada por 02)
44
44
  7. 07 — Firma DR en Pedidos (bloqueada por 03)
45
45
  8. 08 — Estilo: default.css completo + variantes (en paralelo desde 01)
46
- 9. 09 — Validación xone-review (bloqueada por 02-08)
46
+ 9. 09 — Comprobación en el aparato con device-controller (bloqueada por 02-08)
47
47
 
48
48
  ## Hitos
49
49
 
50
50
  {si aplica: qué conjunto de tareas forma un hito verificable. Ejemplo:}
51
51
 
52
- - **Hito 1 — CRUD básico:** tareas 01-04. Al cerrar, validar con xone-review.
52
+ - **Hito 1 — CRUD básico:** tareas 01-04. Al cerrar, comprobarlo en el aparato con device-controller.
53
53
  - **Hito 2 — App completa:** tareas 05-09. Validación final.
54
54
  ```
55
55
 
56
+ ## Hallazgos
57
+
58
+ {Vacío al crear el plan. Quien descubre algo grave lo apunta aquí con su CAUSA MEDIDA, no una sospecha,
59
+ y quien empiece un encargo con este plan lo lee primero. Ejemplo:}
60
+
61
+ - `lblResultado` es un `TL`, que pinta su `title`: escribir su valor no repinta. Se cambió a `T` de solo lectura.
62
+
56
63
  ## Plantilla por tarea
57
64
 
58
65
  ```md
@@ -76,8 +83,9 @@
76
83
  - **Decisiones, no código.** Sin XML/JS/CSS pegado. Excepción: si un snippet codifica una decisión más preciso que prosa (esquema, state machine), inclúyelo y nota su origen.
77
84
  - **Nombres consistentes con el spec**, y el `MAP_` según `xone-development`.
78
85
  - **Evita rutas de archivo específicas.** Envejecen rápido. El ejecutor las infiere del spec y del proyecto.
79
- - **Criterios de aceptación verificables.** Cada criterio debe poder comprobarse —con `xone-review`, con un smoke, o con un comportamiento observable.
80
- - **La validación es una tarea.** Cada hito cierra con una tarea `xone-review`, o al menos una al final del plan.
86
+ - **Criterios de aceptación verificables.** Cada criterio debe poder comprobarse —en el aparato con un toque y lo que dice el log, o con un comportamiento observable.
87
+ - **El comportamiento antes que el pulido.** En una pantalla interactiva, «reacciona a un toque» (captura antes y después) va tras el esqueleto visual y antes del aspecto fino.
88
+ - **La comprobación es una tarea.** Cada hito cierra con una tarea de comprobación en el aparato (`device-controller`). La validación estática no es una tarea: la hace el verificador del arnés solo, al cerrar cada turno. No nombres herramientas que no estén en esta skill ni en las de los especialistas: quien ejecuta las buscará.
81
89
 
82
90
  ## Ejemplo: feature sobre existente
83
91
 
@@ -128,5 +136,5 @@ Antes de entregar el plan:
128
136
  - [ ] El orden respeta las dependencias naturales de XOne (mappings → colls → pantallas → integraciones → estilo → validación).
129
137
  - [ ] No hay tareas que dependan de cosas que el spec no especifica —o están marcadas como notas.
130
138
  - [ ] El usuario aprobó el desglose.
131
- - [ ] Las tareas de validación xone-review están en su sitio.
139
+ - [ ] Las tareas de comprobación en el aparato están en su sitio.
132
140
  - [ ] Los hitos (si los hay) están definidos y cierran con validación.
@@ -95,6 +95,7 @@ GUID sin guiones: python3 -c "import uuid; print(uuid.uuid4().hex)"
95
95
 
96
96
  Fuente: Google Material Icons via Iconify API
97
97
  URL: https://api.iconify.design/ic/baseline-{nombre}.svg?color={color}
98
+ Los iconos los consigue quien tiene la tool `buscar_icono` (`designer-xone` o `developer-xone`), no quien ejecuta comandos: no hace falta montar la URL: `buscar` da el id y `obtener` el SVG con color y altura ya fijados (el color, siempre hexadecimal).
98
99
 
99
100
  XOne soporta PNG, JPG y SVG — no es necesario convertir SVG a PNG.
100
101
  Iconos comunes: home, search, arrow-back, save, settings, person, add, delete, edit, check, close, menu
@@ -18,7 +18,7 @@ El spec builder es el primer paso de cualquier trabajo XOne. Lo que sigue:
18
18
  - **`xone-plan-builder`** lee el `PLAN.md` y lo descompone en tareas tracer-bullet con dependencias (`TASKS.md`).
19
19
  - **App nueva** → `xone-project-generator` lee el `PLAN.md` y genera el proyecto completo.
20
20
  - **Feature, refactor, integración, cambio de modelo, rediseño** sobre un proyecto existente → `xone-development` aplica el `PLAN.md` sobre los `.xne`, `.js` y `.css` que ya viven en el repo.
21
- - **Validación final** → `xone-review` con `xone-simulator` en ambos casos.
21
+ - **Validación final** → el verificador del arnés (corre `xone-simulator validate` solo, al cerrar cada turno que escribió) y la comprobación en el aparato de `device-controller`, en ambos casos.
22
22
 
23
23
  `xone-spec-builder` es **especificación**: produce decisiones de diseño y un spec, no código ni tareas. La tentación de empezar a generar archivos o a descomponer el trabajo es la señal de que has llegado al borde del spec; para ahí y entrega el `PLAN.md`.
24
24
 
@@ -76,7 +76,7 @@ No toda petición necesita una entrevista de 8 rounds. Antes de empezar, clasifi
76
76
 
77
77
  | Nivel | Cuándo | Qué hace el spec-builder |
78
78
  |---|---|---|
79
- | **Trivial** | Una sola acción mecánica, sin decisiones de diseño. Ej: «añadir un prop EMAIL (T) a Clientes», «cambiar el color del header», «añadir un botón de salir». | **No produces PLAN.md.** Confirmas la petición en 1-2 preguntas, ejecutas con `xone-development` o `xone-project-generator` directamente, y validas con `xone-review`. Sin `CONTEXT.md` ni ADRs. |
79
+ | **Trivial** | Una sola acción mecánica, sin decisiones de diseño. Ej: «añadir un prop EMAIL (T) a Clientes», «cambiar el color del header», «añadir un botón de salir». | **No produces PLAN.md.** Confirmas la petición en 1-2 preguntas, ejecutas con `xone-development` o `xone-project-generator` directamente; lo valida el verificador del arnés (al cerrar cada turno) y device-controller en el aparato. Sin `CONTEXT.md` ni ADRs. |
80
80
  | **Simple** | Un cambio acotado con alguna decisión menor. Ej: «añadir campo IVA a LineasPedido con formula», «pasar Clientes a mapa», «añadir escáner QR en una pantalla». | **Spec ligero.** Entrevista reducida: solo los rounds que apliquen (típicamente 1, 3 y/o 4 y/o 5). `PLAN.md` en formato condensado —una sección por round, sin secciones vacías—. `CONTEXT.md` solo si hay término de dominio nuevo; ADR solo si hay decisión dura. |
81
81
  | **Normal** | Feature con varias colls/pantallas, refactor, integración multi-pantalla. Ej: «firma de entrega en Pedidos», «login con OAuth2», «módulo de incidencias con fotos». | **Spec completo.** Entrevista con los rounds que apliquen al tipo. `PLAN.md` con las secciones condicionales del formato. `CONTEXT.md` y ADRs según se resuelvan. |
82
82
  | **Grande** | App nueva completa, re-arquitectura, o un desarrollo que no cabe en una sesión de plan-builder. | **Spec completo + considerar wayfinder.** Entrevista los 8 rounds. Si el scope es tan grande que ni el spec cabe en una sesión, considera dividir el esfuerzo con un enfoque tipo wayfinder (chart el mapa de decisiones primero, luego spec por contexto). |
@@ -209,7 +209,7 @@ Revisa el `PLAN.md` completo contra el checklist de [PLAN-FORMAT.md](references/
209
209
  - ¿Los términos de dominio nuevos están en `CONTEXT.md` y las decisiones duras en ADRs?
210
210
  - ¿Quedan preguntas abiertas? Márcalas en `PLAN.md` §Pendientes; no las resuelvas tú.
211
211
 
212
- Si falta algo, vuelve al round correspondiente. Si todo está, entrega el spec y señala el siguiente paso: `xone-plan-builder` para descomponer en tareas, después `xone-project-generator` (app nueva) o `xone-development` (sobre existente), y `xone-review` para validar al final.
212
+ Si falta algo, vuelve al round correspondiente. Si todo está, entrega el spec y señala el siguiente paso: `xone-plan-builder` para descomponer en tareas, después `xone-project-generator` (app nueva) o `xone-development` (sobre existente), y el verificador del arnés (al cerrar cada turno) y device-controller en el aparato para validar.
213
213
 
214
214
  ## Disciplina durante la entrevista
215
215