xonecode 0.17.1 → 0.19.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.
- package/apps/web/dist/assets/{index-BRVuyPBf.js → index-BvPUqjUm.js} +72 -72
- package/apps/web/dist/assets/{index-DLfF2uEK.css → index-CGEXMJBx.css} +1 -1
- package/apps/web/dist/assets/{php-B5LpMCn-.js → php-Dk28VW45.js} +1 -1
- package/apps/web/dist/assets/{ruby-Clm-qfwM.js → ruby-CPzEcmdp.js} +1 -1
- package/apps/web/dist/index.html +2 -2
- package/dist/agent/config/iconosEnRed.js +47 -0
- package/dist/agent/config/iconosEnRed.js.map +1 -0
- package/dist/agent/dispositivos/decodificarImagen.js +62 -0
- package/dist/agent/dispositivos/decodificarImagen.js.map +1 -0
- package/dist/agent/grafo/buscarIcono.js +92 -0
- package/dist/agent/grafo/buscarIcono.js.map +1 -0
- package/dist/agent/grafo/compararCapturas.js +103 -0
- package/dist/agent/grafo/compararCapturas.js.map +1 -0
- package/dist/agent/grafo/criticaVisual.js +23 -3
- package/dist/agent/grafo/criticaVisual.js.map +1 -1
- package/dist/agent/grafo/diferenciaDeCapturas.js +88 -0
- package/dist/agent/grafo/diferenciaDeCapturas.js.map +1 -0
- package/dist/agent/grafo/generarFondoSvg.js +83 -0
- package/dist/agent/grafo/generarFondoSvg.js.map +1 -0
- package/dist/agent/grafo/lectorDeReferencias.js +19 -0
- package/dist/agent/grafo/lectorDeReferencias.js.map +1 -0
- package/dist/agent/grafo/xoneAgent.js +8 -1
- package/dist/agent/grafo/xoneAgent.js.map +1 -1
- package/dist/agent/motores/trueforge/eventosTrueforge.js +11 -1
- package/dist/agent/motores/trueforge/eventosTrueforge.js.map +1 -1
- package/dist/agent/motores/trueforge/modeloLangchain.js +5 -0
- package/dist/agent/motores/trueforge/modeloLangchain.js.map +1 -1
- package/dist/agent/motores/trueforge/sesionTrueforge.js +67 -6
- package/dist/agent/motores/trueforge/sesionTrueforge.js.map +1 -1
- package/dist/agent/subagentes/agentesEnDisco.js +26 -2
- package/dist/agent/subagentes/agentesEnDisco.js.map +1 -1
- package/dist/agent/turno/diagnosticoDeTools.js +32 -3
- package/dist/agent/turno/diagnosticoDeTools.js.map +1 -1
- package/dist/agent/turno/informeDeTraza.js +54 -4
- package/dist/agent/turno/informeDeTraza.js.map +1 -1
- package/dist/agent/turno/registroDeFallos.js +6 -1
- package/dist/agent/turno/registroDeFallos.js.map +1 -1
- package/dist/agent/turno/resumenDeTool.js +9 -0
- package/dist/agent/turno/resumenDeTool.js.map +1 -1
- package/dist/agent/turno/turnoReal.js +8 -2
- package/dist/agent/turno/turnoReal.js.map +1 -1
- package/dist/cli/run.js +11 -0
- package/dist/cli/run.js.map +1 -1
- package/dist/core/agentes.js +29 -1
- package/dist/core/agentes.js.map +1 -1
- package/dist/core/analisisDeSesion.js +198 -0
- package/dist/core/analisisDeSesion.js.map +1 -0
- package/dist/core/compararCapturas.js +339 -0
- package/dist/core/compararCapturas.js.map +1 -0
- package/dist/core/fallos.js.map +1 -1
- package/dist/core/fondosSvg.js +223 -0
- package/dist/core/fondosSvg.js.map +1 -0
- package/dist/core/iconos.js +135 -0
- package/dist/core/iconos.js.map +1 -0
- package/dist/core/modoDeEscritura.js +22 -0
- package/dist/core/modoDeEscritura.js.map +1 -1
- package/dist/core/notify.js +8 -0
- package/dist/core/notify.js.map +1 -1
- package/dist/core/nucleoXone.js +111 -0
- package/dist/core/nucleoXone.js.map +1 -0
- package/dist/core/paqueteDeSoporte.js +118 -0
- package/dist/core/paqueteDeSoporte.js.map +1 -0
- package/dist/core/ports.js +31 -0
- package/dist/core/ports.js.map +1 -1
- package/dist/core/referenciasDeImagen.js +55 -0
- package/dist/core/referenciasDeImagen.js.map +1 -0
- package/dist/web/servidor/arranque.js +110 -0
- package/dist/web/servidor/arranque.js.map +1 -1
- package/dist/web/servidor/sesiones.js +8 -0
- package/dist/web/servidor/sesiones.js.map +1 -1
- package/dist/web/servidor/soporte.js +571 -0
- package/dist/web/servidor/soporte.js.map +1 -0
- package/dist/web/servidor/transporte.js.map +1 -1
- package/package.json +4 -1
- package/skills/artifacts-builder/reference/estilo.md +3 -6
- package/skills/xone-development/SKILL.md +1 -5
- package/skills/xone-development/references/css/propiedades-y-herencia.md +2 -0
- package/skills/xone-development/references/fundamentos/errores-comunes.md +15 -3
- package/skills/xone-development/references/xml-ui/prop-tipos-basicos.md +2 -0
- package/skills/xone-hotswap/SKILL.md +10 -0
- package/skills/xone-hotswap/references/comandos.md +14 -0
- package/skills/xone-hotswap/scripts/xone-recargar-android +269 -0
- package/skills/xone-plan-builder/SKILL.md +8 -0
- package/skills/xone-plan-builder/references/TASKS-FORMAT.md +8 -0
- package/skills/xone-project-generator/SKILL.md +1 -1
- package/skills/xone-project-generator/references/fases-10-12-readmes-y-validacion.md +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"soporte.js","sourceRoot":"","sources":["../../../src/web/servidor/soporte.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAClH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAyB,MAAM,gCAAgC,CAAC;AAEvF,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,2BAA2B,EAC3B,cAAc,GAIf,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAsB,MAAM,eAAe,CAAC;AAE1H,2GAA2G;AAC3G,MAAM,2BAA2B,GAAG,wBAAwB,CAAC;AAE7D,kFAAkF;AAClF,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAEtC,0FAA0F;AAC1F,MAAM,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAC;AACrC,oFAAoF;AACpF,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,yFAAyF;AACzF,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAuClD,gGAAgG;AAChG,UAAU;AACV,gGAAgG;AAEhG,4FAA4F;AAC5F,KAAK,UAAU,SAAS,CAAC,IAAY;IACnC,IAAI,KAAa,CAAC;IAClB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,SAAS;QAClC,IAAI,CAAC;YACH,MAAM,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAC;QAC1H,CAAC;QAAC,MAAM,CAAC;YACP,uEAAuE;QACzE,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AASD,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9G,MAAM,OAAO,GAAG,CAAC,MAAiC,EAA0C,EAAE;QAC5F,MAAM,IAAI,GAAG,IAAI,GAAG,EAAqC,CAAC;QAC1D,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;gBAAE,SAAS;YACzC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,OAAO;QACL,KAAK;QACL,MAAM;QACN,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClB,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;YACnC,MAAM,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAC5C,CAAC,CAAC,EAAkD,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,CACtF;SACvB,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,EAAU;IACvC,IAAI,CAAC;QACH,OAAO,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,uDAAuD;AACvD,SAAS,MAAM,CAAC,KAAsB,EAAE,MAAuB;IAC7D,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1D,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACpB,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,cAAc,CAAC,MAAuB,EAAE,MAAyB,EAAE,EAAU,EAAE,KAAa;IACnG,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACnC,OAAO,cAAc,CAAC;QACpB,KAAK;QACL,MAAM,EAAE,KAAK;QACb,MAAM;QACN,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;QACzC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9F,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;KACxD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,MAAc;IAC7C,OAAO,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;SAC7B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;SAChG,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACtB,CAAC;AAED,kGAAkG;AAClG,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAuB,EAAE,SAAiB,mBAAmB;IAC/F,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAiB,EAAE,CAAC,CAAC;QACtE,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,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,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,QAAQ,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;KAC/C,CAAC,CAAC,CAAC;IACJ,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;SAC9B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;SAChD,GAAG,CAAC,CAAC,CAAC,EAAiB,EAAE;QACxB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QACrF,MAAM,QAAQ,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5H,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;YAC3C,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,QAAQ;SACT,CAAC;IACJ,CAAC,CAAC,CAAC;IACL,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED,gGAAgG;AAChG,uBAAuB;AACvB,gGAAgG;AAEhG,MAAM,KAAK,GAAG,GAAkB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvE,2EAA2E;AAC3E,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C;QACE,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,8EAA8E;AAC9E,MAAM,cAAc;IAMW;IALZ,GAAG,CAAM;IAClB,KAAK,CAAoB;IACxB,SAAS,GAAa,EAAE,CAAC;IAC1B,SAAS,CAAgB;IAEjC,YAA6B,OAAiB;QAAjB,YAAO,GAAP,OAAO,CAAU;QAC5C,IAAI,QAAqB,CAAC;QAC1B,IAAI,QAA6B,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,OAAO,CAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;YAC5C,QAAQ,GAAG,EAAE,CAAC;YACd,QAAQ,GAAG,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,0FAA0F;QAC1F,2FAA2F;QAC3F,uFAAuF;QACvF,qCAAqC;QACrC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACzC,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAChB,OAAO;YACT,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,KAAK,KAAK,IAAI,sBAAsB,EAAE,CAAC;gBAC5C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,KAAK;gBAAE,QAAQ,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,MAAM;QAClB,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,IAAI,CAAC,KAAK,CAAC;QAC/C,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,sBAAsB,EAAE,CAAC,CAAC;QAC9E,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;YACnC,MAAM,IAAI,OAAO,CAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;gBACjC,MAAM,OAAO,GAAG,GAAS,EAAE;oBACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACtC,CAAC,CAAC;gBACF,MAAM,QAAQ,GAAG,GAAS,EAAE;oBAC1B,OAAO,EAAE,CAAC;oBACV,EAAE,EAAE,CAAC;gBACP,CAAC,CAAC;gBACF,MAAM,QAAQ,GAAG,GAAS,EAAE;oBAC1B,OAAO,EAAE,CAAC;oBACV,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,sBAAsB,EAAE,CAAC,CAAC,CAAC;gBAClD,CAAC,CAAC;gBACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,KAAK,EAAE,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,KAA0B,EAAE,QAAgB,IAAI,CAAC,GAAG,EAAE;QAC9E,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACrE,wFAAwF;QACxF,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;QACtD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,KAAc;QACrC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,4CAA4C;IAC5C,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,QAAgB,EAAE,KAAa;QACzD,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACrE,wFAAwF;QACxF,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;QACtD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtB,IAAI,MAA0B,CAAC;QAC/B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,gBAAgB,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;YAC1F,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC5B,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACtB,CAAC;YACD,MAAM,GAAG,KAAe,CAAC;QAC3B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACf,MAAM,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;CACF;AASD;;;;GAIG;AACH,SAAS,QAAQ,CAAC,UAAkB,EAAE,QAAgB,EAAE,OAAe,EAAE,MAA0B;IACjG,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,MAAM,EAAE,CAAC;QAC/D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;YAAE,SAAS;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC;QACT,IAAI,CAAC;YACH,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,EAAE;YAAE,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;aAC5D,IAAI,IAAI,CAAC,MAAM,EAAE;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,GAAG,GAAG,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACrH,CAAC;AACH,CAAC;AAED,0GAA0G;AAC1G,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;AACnK,CAAC;AAED,gGAAgG;AAChG,gBAAgB;AAChB,gGAAgG;AAEhG,yFAAyF;AACzF,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,OAAe;IAC3D,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAUD,4FAA4F;AAC5F,MAAM,qBAAqB,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAU,CAAC;AAEjE;;;;;;;;;;GAUG;AACH,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,EAAU,EAAE,QAAgB;IACpE,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,KAAK,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,YAAY,GAAG,KAAK;aACvB,OAAO,CAAC,gFAAgF,qBAAqB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;aAC3I,GAAG,CAAC,GAAG,qBAAqB,CAAoC,CAAC;QACpE,IAAI,YAAY,CAAC,MAAM,KAAK,qBAAqB,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAC3E,KAAK,MAAM,CAAC,IAAI,YAAY;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChD,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;YACrB,KAAK,MAAM,KAAK,IAAI,qBAAqB,EAAE,CAAC;gBAC1C,KAAK,CAAC,OAAO,CAAC,oBAAoB,KAAK,yBAAyB,KAAK,sBAAsB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvG,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACrC,QAAQ,GAAI,KAAK,CAAC,OAAO,CAAC,kEAAkE,CAAC,CAAC,GAAG,EAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5I,CAAC;YAAS,CAAC;QACT,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC;QACH,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC5F,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,cAAc,IAAI,EAAE,CAA4B,CAAC;gBACpF,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;YACjE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YACpG,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACtC,CAAC;AAQD,gHAAgH;AAChH,MAAM,UAAU,oBAAoB,CAAC,MAAuB,EAAE,MAAuB;IACnF,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;QAAE,OAAO,4CAA4C,CAAC;IAChJ,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;QAAE,OAAO,kCAAkC,CAAC;IACzH,OAAO,SAAS,CAAC;AACnB,CAAC;AAOD,KAAK,UAAU,gBAAgB,CAAC,GAAmB,EAAE,UAA8B,EAAE,SAAoB,EAAE,IAAY;IACrH,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC/D,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,oBAAqB,KAA+B,CAAC,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC,CAAC;QAC7H,CAAC;IACH,CAAC;AACH,CAAC;AAED,wGAAwG;AACxG,KAAK,UAAU,UAAU,CACvB,GAAmB,EACnB,MAAuB,EACvB,EAAU,EACV,OAAe,EACf,SAAoB,EACpB,QAAgB,EAChB,KAAa;IAEb,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACrE,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,qBAAqB,EAAE,OAAO,CAAC,CAAC;IAEpF,MAAM,UAAU,GAAuB,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACnD,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9B,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,oBAAoB,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACpH,CAAC;IACD,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAC1F,MAAM,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,2BAA2B,CAAC,CAAC;IAEhF,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC3D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,yFAAyF;YACzF,uFAAuF;YACvF,sDAAsD;YACtD,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,2BAA2B,CAAC,CAAC,CAAC;YACrG,SAAS,CAAC,MAAM,CAAC,IAAI,CACnB,UAAU;gBACR,CAAC,CAAC,8CAA8C,OAAO,kBAAkB,2BAA2B,GAAG;gBACvG,CAAC,CAAC,gFAAgF,CACrF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,0BAA0B,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACjE,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,sBAAsB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC;gBAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,kGAAkG,CAAC,CAAC;QAC3J,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,0BAA0B,EAAE,MAAM,EAAE,8BAA+B,KAA+B,CAAC,IAAI,IAAK,KAAe,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IACnL,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,oBAAoB,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3I,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,qBAAqB,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAE9I,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,qBAAqB,EAAE,MAAM,CAAC,CAAC;QACxD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,SAAS;YACjC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC7D,IAAI,MAAM,KAAK,SAAS;oBAAE,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,mBAAmB,CAAC,CAAC,IAAI,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YACvG,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,mBAAmB,CAAC,CAAC,IAAI,QAAQ,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC;YACjH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,eAAe,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,GAAmB,EAAE,MAAuB,EAAE,KAAY,EAAE,OAAe,EAAE,SAAoB;IAC1H,8FAA8F;IAC9F,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;IACrC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,YAAY,EAAE,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7G,MAAM,OAAO,GAAG,MAAM,CAAC,wBAAwB,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAuB,EAAE,CAAC;QAC1C,QAAQ,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,OAAO,WAAW,EAAE,UAAU,CAAC,CAAC;QACzD,MAAM,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,2BAA2B,CAAC,CAAC;IAClF,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAuB,EACvB,MAAuB,EACvB,OAAiB,EACjB,QAAc,IAAI,IAAI,EAAE;IAExB,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,SAAS,GAAc,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;IACxE,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAClE,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,KAAyB,CAAC;IAC9B,IAAI,CAAC;QACH,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAChD,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;YAC3E,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACpE,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAE,CAAC;YAC7D,OAAO,GAAG,KAAK,CAAC,MAAM,KAAK,YAAY,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YACpH,MAAM,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC3D,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjG,MAAM,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YACnF,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;gBAC5E,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC;YACrF,MAAM,UAAU,GAAuB,EAAE,CAAC;YAC1C,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;YACnD,MAAM,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,2BAA2B,CAAC,CAAC;YAChF,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;gBAClD,IAAI,MAAM,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;oBAC/C,MAAM,GAAG,CAAC,OAAO,CAAC,sCAAsC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC/E,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,sCAAsC,EAAE,MAAM,EAAE,8BAA+B,KAA+B,CAAC,IAAI,IAAK,KAAe,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;YACrL,CAAC;YACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM;gBAAE,MAAM,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,KAAK,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;YAC3G,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACjD,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACxC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACpC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAC3C,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;YAC9E,IAAI,OAAO,GAAG,CAAC;gBAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,uBAAuB,KAAK,OAAO,aAAa,CAAC,CAAC;YAC5F,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,OAAO;YAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEnD,MAAM,UAAU,GAAwB;YACtC,CAAC,EAAE,CAAC;YACJ,IAAI,EAAE,MAAM,CAAC,IAAqB;YAClC,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;YACpE,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE;YAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;YACxD,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;YACzC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,SAAS,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,EAAE,iBAAiB,CAAC;YAChD,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,MAAM,EAAE,SAAS,CAAC,MAAM;SACzB,CAAC;QACF,MAAM,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;QAC9C,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,UAAU,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transporte.js","sourceRoot":"","sources":["../../../src/web/servidor/transporte.ts"],"names":[],"mappings":"AA4HA;;;;;;;;;;;;;;;;;;;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;AAy9BrG;;;;;;;;;;;;;;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,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;
|
|
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.
|
|
3
|
+
"version": "0.19.0",
|
|
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",
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
# El estilo es un SISTEMA: pega los tokens, elige un carácter
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
(2026-09-01): decía «evita Inter» y salió `Inter`; decía «evita los morados» y salieron índigo
|
|
5
|
-
`#6366f1` + púrpura + rosa; decía «una escala» y salieron cuatro radios sueltos; y cero
|
|
6
|
-
variables CSS. **Un consejo no es un sistema**: lo que sigue se pega y se acabó.
|
|
3
|
+
**Un consejo no es un sistema**: lo que sigue se pega y se acabó.
|
|
7
4
|
|
|
8
5
|
## Los tokens, y el tema en TRES bloques
|
|
9
6
|
|
|
10
|
-
**El de por omisión
|
|
7
|
+
**El de por omisión**: fondo casi blanco frío, tinta negra
|
|
11
8
|
azulada, acento azul petróleo y el **cuerpo en SERIF**, que es lo que le quita la cara de
|
|
12
9
|
plantilla. Pega el bloque tal cual y no uses ningún color más.
|
|
13
10
|
|
|
@@ -82,7 +79,7 @@ CSS. Dos cosas que no son negociables en esa fila:
|
|
|
82
79
|
**El artifact se pinta en un panel, no en una ventana de navegador**, y su ancho lo decide quien
|
|
83
80
|
mira — puede ser 1.700 px. Un `max-w-7xl mx-auto` en el contenedor exterior (que es lo que sale
|
|
84
81
|
por defecto) son **1.280 px centrados**: en ese panel deja **460 px de margen muerto** a los
|
|
85
|
-
lados, con el diagrama encogido en medio.
|
|
82
|
+
lados, con el diagrama encogido en medio.
|
|
86
83
|
|
|
87
84
|
- **Nada de `max-w-*` ni `mx-auto` en el envoltorio de la página.** Se respira con `padding`
|
|
88
85
|
(`p-6 md:p-8`), no estrechando.
|
|
@@ -8,11 +8,7 @@ Estas son las reglas que aplican a cualquier trabajo sobre un proyecto XOne, sea
|
|
|
8
8
|
|
|
9
9
|
## Referencias
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
omisión trae **100 líneas** (`DEFAULT_READ_LIMIT` de deepagents) y este fichero tenía 395, así
|
|
13
|
-
que el índice y los anti-patrones no se leían salvo que el modelo pidiera `limit=1000` — lo
|
|
14
|
-
hacía la mitad de las veces (dorado con control, 2026-08-24). Ahora todo lo consultable vive
|
|
15
|
-
al lado, y cada fichero cabe entero:
|
|
11
|
+
Consulta estos ficheros según lo que busques:
|
|
16
12
|
|
|
17
13
|
| Qué buscas | Dónde |
|
|
18
14
|
|---|---|
|
|
@@ -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
|
|
@@ -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`
|
|
@@ -307,6 +322,3 @@ Esta guía ha cubierto los conceptos fundamentales de XOne:
|
|
|
307
322
|
- **03 - API JavaScript**: Documentación detallada de `ui.*`, `self.*`, `appData.*` y más
|
|
308
323
|
- **05 - Eventos, Patrones y FAQ**: Tutorial paso a paso para crear proyectos completos
|
|
309
324
|
|
|
310
|
-
---
|
|
311
|
-
|
|
312
|
-
*Este documento forma parte del sistema de ayuda XOne. Basado en el análisis de 224 proyectos de ejemplo reales, 5 proyectos sinteticos documentados y la documentación oficial de la plataforma.*
|
|
@@ -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
|
|
@@ -32,6 +32,8 @@ No cuestan lo mismo, ni de lejos. Por orden de lo que vas a necesitar:
|
|
|
32
32
|
| **qué hay en la pantalla** | `elements` | SOLO para explorar: decenas de miles de caracteres |
|
|
33
33
|
| **si algo se VE mal** | `shot name=MAP_X` | y solo aquí |
|
|
34
34
|
|
|
35
|
+
**`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.
|
|
36
|
+
|
|
35
37
|
**Y la captura del CANAL no pinta los diálogos.** Lo dice la referencia del equipo del
|
|
36
38
|
framework: `getScreenshot` dibuja la ventana de la ACTIVIDAD, así que un diálogo abierto —el
|
|
37
39
|
«Error loading initial config» de XOne, por ejemplo— **no sale en ella** aunque la persona lo
|
|
@@ -98,6 +100,14 @@ xone-desplegar-android
|
|
|
98
100
|
xone-desplegar-android --captura # …y además captura: solo si quieres VERLO
|
|
99
101
|
xone-desplegar-android --app MiApp --serie emulator-5554
|
|
100
102
|
|
|
103
|
+
# «cambié un botón / una función / un color»: NO despliegues entero. Compara el proyecto con el
|
|
104
|
+
# aparato, sube SOLO lo que difiere y lo aplica por la vía más barata (1-2 s si es una colección):
|
|
105
|
+
# colección (.xne) → recarga en caliente JavaScript (.js) → recarga del include
|
|
106
|
+
# CSS, app.xml, app.ini, mappings → relanza la app (unos 6 s)
|
|
107
|
+
# Necesita la app YA desplegada. Lo que no sabe aplicar (iconos, bd) lo dice y manda a desplegar.
|
|
108
|
+
xone-recargar-android
|
|
109
|
+
xone-recargar-android MenuPrincipal.xne functions.js # solo esos, sin comparar
|
|
110
|
+
|
|
101
111
|
# Cualquier comando del catálogo de más abajo (varios en orden, si le pasas varios):
|
|
102
112
|
xone-hotswap elements # atajo de getAllElements format=xone
|
|
103
113
|
xone-hotswap shot # atajo de getScreenshot, a $XONECODE_ARTEFACTOS
|
|
@@ -536,6 +536,20 @@ Carga o recarga una colección XML en caliente. **Entrada:** `xmlNode` (XML en *
|
|
|
536
536
|
`encoding` (default `ISO-8859-15`). **Error:** `ResultMessage(exception)` si el XML es inválido;
|
|
537
537
|
`"App is not running"` si la app no está iniciada.
|
|
538
538
|
|
|
539
|
+
**Medido en Android, framework 5.0.5.5dev — qué se aplica en caliente y qué no:**
|
|
540
|
+
|
|
541
|
+
| Cambio | Vía | Resultado |
|
|
542
|
+
|---|---|---|
|
|
543
|
+
| Colección `.xne` | `loadCollection` con el fichero entero en Base64 y `encoding=UTF-8` | Se repinta en ~2 s, **solo en memoria**: al relanzar la app vuelve la versión de disco. Para que persista, subir también el fichero con `uploadFile`. |
|
|
544
|
+
| JavaScript | `uploadFile` y luego `loadIncludeFile` con `compile=true` | Se aplica al instante. Solo subirlo, o `loadCollection`, **no** lo recarga. |
|
|
545
|
+
| CSS | `uploadFile` y luego `launchApplication` | Se aplica al relanzar. `setCssAttribute`, `relayout`, `refresh` y `loadCollection` contestan `result:true` y el color **no cambia**; `loadIncludeFile` no admite css (`Unknown script language css`). |
|
|
546
|
+
|
|
547
|
+
`uploadFile`: `destinationPath` cuelga del directorio de datos del framework, no del de la app.
|
|
548
|
+
La app vive en `app_<nombre en minúsculas>/`, así que hay que dar `app_holamundo/functions.js`; con
|
|
549
|
+
`functions.js` a secas escribe un fichero suelto fuera de la app. `getFileChecksum` y `listAppFiles`
|
|
550
|
+
piden el nombre en minúsculas, y `getFileChecksum` falla entero si UNO de los ficheros no existe.
|
|
551
|
+
Todo esto lo hace `xone-recargar-android`.
|
|
552
|
+
|
|
539
553
|
### `setAttribute` — las dos plataformas
|
|
540
554
|
**Entrada:** `collectionName`, `nodeType`, `name`, `attributeName`, `attributeValue`. Provoca
|
|
541
555
|
relayout o refresh según el atributo. **(iOS)** también es legado: solo WebSocket.
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Llevar al Android los ficheros que CAMBIARON, sin desplegar el proyecto entero.
|
|
4
|
+
*
|
|
5
|
+
* POR QUÉ EXISTE. `xone-desplegar-android` empaqueta, sube, concede permisos y reinicia el
|
|
6
|
+
* framework: es la cadena entera y está bien para el primer arranque. Para «cambié un botón» es
|
|
7
|
+
* desproporcionado. Este script compara los ficheros del proyecto con los del aparato
|
|
8
|
+
* (`getFileChecksum`), sube SOLO los que difieren (`uploadFile`) y los aplica por la vía más
|
|
9
|
+
* barata que se MIDIÓ que funciona, contra el framework 5.0.5.5dev:
|
|
10
|
+
*
|
|
11
|
+
* colección (.xne con <coll>) → `loadCollection`: se repinta en el acto, PERO solo en memoria.
|
|
12
|
+
* Por eso también se sube a disco: sin eso, relanzar la app la
|
|
13
|
+
* devuelve a la versión anterior.
|
|
14
|
+
* JavaScript (.js) → `loadIncludeFile` con compile=true. Subir el fichero NO basta,
|
|
15
|
+
* y `loadCollection` tampoco lo recarga.
|
|
16
|
+
* CSS, .ini, app.xml, mappings → relanzar la app (`launchApplication`). Medido: `setCssAttribute`,
|
|
17
|
+
* `relayout`, `refresh` y `loadCollection` contestan `result:true`
|
|
18
|
+
* y el color NO cambia; `loadIncludeFile` no admite css.
|
|
19
|
+
*
|
|
20
|
+
* **`result:true` es «aceptado», no «aplicado».** Lo que dice si funcionó es el árbol de
|
|
21
|
+
* controles, y por eso el script lo pide al acabar. Un atributo que XOne no conoce tampoco da
|
|
22
|
+
* error: comprueba lo que cambiaste, no el código de respuesta.
|
|
23
|
+
*
|
|
24
|
+
* USO (desde la raíz del proyecto, que es el `cwd`):
|
|
25
|
+
* xone-recargar-android compara todo y aplica lo que difiera
|
|
26
|
+
* xone-recargar-android MenuPrincipal.xne solo esos ficheros (sin comparar)
|
|
27
|
+
* xone-recargar-android --app MiApp
|
|
28
|
+
*
|
|
29
|
+
* **Necesita la app YA desplegada y el túnel puesto** (`xone-desplegar-android` la primera vez).
|
|
30
|
+
* Lo que no sabe aplicar —iconos, la base de datos, ficheros nuevos que la app no declara— lo
|
|
31
|
+
* dice y manda a desplegar entero, en vez de fingir.
|
|
32
|
+
*
|
|
33
|
+
* NO usa `adb`: habla solo con el canal hotswap, así que sirve igual en Windows.
|
|
34
|
+
*/
|
|
35
|
+
import { execFileSync } from "node:child_process";
|
|
36
|
+
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
37
|
+
import { basename, extname, join, relative, sep } from "node:path";
|
|
38
|
+
import { NODE, dormir } from "../lib/dispositivo.mjs";
|
|
39
|
+
|
|
40
|
+
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
|
|
41
|
+
process.removeAllListeners("warning");
|
|
42
|
+
process.on("warning", (aviso) => {
|
|
43
|
+
if (!String(aviso.message).includes("NODE_TLS_REJECT_UNAUTHORIZED")) console.warn(aviso);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
/** Lo que se sincroniza. El resto (iconos, `bd/`, `files/`) se dice, no se sube. */
|
|
47
|
+
const EXTENSIONES = new Set([".xne", ".js", ".css", ".ini", ".xml"]);
|
|
48
|
+
/** Carpetas que nunca viajan. */
|
|
49
|
+
const FUERA = [".xonecode", ".git", "node_modules", "bd", "files", "icons"];
|
|
50
|
+
/**
|
|
51
|
+
* Tope de lo que cabe en una línea de órdenes de Windows (32.767 caracteres en total). En otros
|
|
52
|
+
* sistemas el límite es de megas, así que solo se aplica allí.
|
|
53
|
+
*/
|
|
54
|
+
const TOPE_BASE64_WINDOWS = 24_000;
|
|
55
|
+
|
|
56
|
+
const args = process.argv.slice(2);
|
|
57
|
+
const opcion = (nombre) => {
|
|
58
|
+
const i = args.indexOf(`--${nombre}`);
|
|
59
|
+
return i >= 0 ? args[i + 1] : undefined;
|
|
60
|
+
};
|
|
61
|
+
const posicionales = args.filter((a, i) => !a.startsWith("--") && !(i > 0 && args[i - 1] === "--app"));
|
|
62
|
+
|
|
63
|
+
if (args.includes("--help") || args.includes("-h")) {
|
|
64
|
+
// Tiene que existir: una orden que no entiende una opción no puede ejecutar nada.
|
|
65
|
+
console.error(`xone-recargar-android — lleva al Android SOLO lo que cambió, sin desplegar entero.
|
|
66
|
+
|
|
67
|
+
xone-recargar-android compara el proyecto con el aparato y aplica lo distinto
|
|
68
|
+
xone-recargar-android A.xne functions.js solo esos ficheros
|
|
69
|
+
xone-recargar-android --app MiApp nombre explícito de la app
|
|
70
|
+
|
|
71
|
+
Colección → recarga en caliente. JavaScript → recarga del include. CSS, app.xml, app.ini y
|
|
72
|
+
mappings → relanza la app. Necesita la app ya desplegada (xone-desplegar-android) y el túnel.`);
|
|
73
|
+
process.exit(0);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const cliente = join(import.meta.dirname, "xone-hotswap");
|
|
77
|
+
|
|
78
|
+
/** Un comando del canal, en `clave=valor`. Devuelve el JSON de la respuesta. */
|
|
79
|
+
function mandar(comando, campos = {}) {
|
|
80
|
+
const pares = Object.entries(campos).map(([k, v]) =>
|
|
81
|
+
`${k}=${typeof v === "object" && v !== null ? JSON.stringify(v) : String(v)}`,
|
|
82
|
+
);
|
|
83
|
+
const salida = execFileSync(NODE, [cliente, comando, ...pares], { encoding: "utf8", maxBuffer: 64 * 1024 * 1024 }).trim();
|
|
84
|
+
try {
|
|
85
|
+
return JSON.parse(salida);
|
|
86
|
+
} catch {
|
|
87
|
+
throw new Error(`el canal no devolvió JSON para ${comando}: ${salida.slice(0, 160)}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/** Como en el despliegue: `app.ini` (`name=`) y, si no, la carpeta. */
|
|
92
|
+
function nombreDeLaApp() {
|
|
93
|
+
const dicho = opcion("app");
|
|
94
|
+
if (dicho !== undefined) return dicho;
|
|
95
|
+
if (existsSync("app.ini")) {
|
|
96
|
+
const m = /^\s*name\s*=\s*(.+?)\s*$/im.exec(readFileSync("app.ini", "latin1"));
|
|
97
|
+
if (m !== null && m[1] !== "") return m[1];
|
|
98
|
+
}
|
|
99
|
+
return basename(process.cwd());
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
const TABLA_CRC = (() => {
|
|
103
|
+
const t = new Uint32Array(256);
|
|
104
|
+
for (let i = 0; i < 256; i++) {
|
|
105
|
+
let c = i;
|
|
106
|
+
for (let k = 0; k < 8; k++) c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;
|
|
107
|
+
t[i] = c >>> 0;
|
|
108
|
+
}
|
|
109
|
+
return t;
|
|
110
|
+
})();
|
|
111
|
+
function crc32(buf) {
|
|
112
|
+
let c = 0xffffffff;
|
|
113
|
+
for (let i = 0; i < buf.length; i++) c = TABLA_CRC[(c ^ buf[i]) & 0xff] ^ (c >>> 8);
|
|
114
|
+
return (c ^ 0xffffffff) >>> 0;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/** Los ficheros del proyecto, en rutas relativas con `/`. Devuelve también los que no se sincronizan. */
|
|
118
|
+
function ficherosDelProyecto(dentro = process.cwd(), salida = { sincronizables: [], otros: [] }) {
|
|
119
|
+
for (const entrada of readdirSync(dentro, { withFileTypes: true })) {
|
|
120
|
+
const completa = join(dentro, entrada.name);
|
|
121
|
+
const rel = relative(process.cwd(), completa).split(sep).join("/");
|
|
122
|
+
if (FUERA.some((f) => rel === f || rel.startsWith(`${f}/`))) continue;
|
|
123
|
+
if (entrada.isSymbolicLink()) continue;
|
|
124
|
+
if (entrada.isDirectory()) ficherosDelProyecto(completa, salida);
|
|
125
|
+
else if (entrada.isFile()) (EXTENSIONES.has(extname(rel).toLowerCase()) ? salida.sincronizables : salida.otros).push(rel);
|
|
126
|
+
}
|
|
127
|
+
return salida;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
const app = nombreDeLaApp();
|
|
131
|
+
/** Cómo guarda el framework lo que sube: `app_<nombre en minúsculas>` (medido). */
|
|
132
|
+
const carpetaEnElAparato = `app_${app.toLowerCase()}`;
|
|
133
|
+
|
|
134
|
+
/** ¿Está la app viva? El árbol de controles es la única comprobación que vale. */
|
|
135
|
+
function estaViva() {
|
|
136
|
+
try {
|
|
137
|
+
const r = mandar("getAllElements", { format: "xone" });
|
|
138
|
+
return r.result === true;
|
|
139
|
+
} catch {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
if (!estaViva()) {
|
|
145
|
+
console.error(`la app «${app}» no contesta en el canal hotswap.`);
|
|
146
|
+
console.error("Esto solo recarga lo cambiado: la primera vez (o si el aparato se reinició) hay que");
|
|
147
|
+
console.error("desplegar entera con xone-desplegar-android.");
|
|
148
|
+
process.exit(1);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
const { sincronizables, otros } = ficherosDelProyecto();
|
|
152
|
+
let cambiados;
|
|
153
|
+
const nuevos = new Set();
|
|
154
|
+
|
|
155
|
+
if (posicionales.length > 0) {
|
|
156
|
+
cambiados = posicionales.map((p) => p.replaceAll("\\", "/"));
|
|
157
|
+
const ausentes = cambiados.filter((f) => !existsSync(f));
|
|
158
|
+
if (ausentes.length > 0) {
|
|
159
|
+
console.error(`no existe en el proyecto: ${ausentes.join(", ")}`);
|
|
160
|
+
process.exit(1);
|
|
161
|
+
}
|
|
162
|
+
} else {
|
|
163
|
+
/**
|
|
164
|
+
* Un fichero que el aparato no tiene hace FALLAR la llamada entera (`ENOENT` con su ruta), así
|
|
165
|
+
* que se va quitando de la petición y se cuenta como NUEVO. Es un bucle acotado: cada vuelta
|
|
166
|
+
* saca uno, y con 500 ficheros nuevos son 500 viajes — para eso está el despliegue entero.
|
|
167
|
+
*/
|
|
168
|
+
let pedir = [...sincronizables];
|
|
169
|
+
let remotos = {};
|
|
170
|
+
for (let vuelta = 0; pedir.length > 0 && vuelta < 25; vuelta++) {
|
|
171
|
+
const r = mandar("getFileChecksum", { appName: app.toLowerCase(), files: pedir, checksumType: "crc32" });
|
|
172
|
+
if (r.result !== false && typeof r.result === "object") {
|
|
173
|
+
remotos = r.result;
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
const falta = /app_[^/\\]+[/\\](.+?): open failed/.exec(String(r.exceptionMessage ?? ""))?.[1];
|
|
177
|
+
if (falta === undefined || !pedir.includes(falta)) {
|
|
178
|
+
console.error(`no pude comparar con el aparato: ${r.exceptionMessage ?? r.status ?? "sin motivo"}`);
|
|
179
|
+
process.exit(1);
|
|
180
|
+
}
|
|
181
|
+
nuevos.add(falta);
|
|
182
|
+
pedir = pedir.filter((f) => f !== falta);
|
|
183
|
+
}
|
|
184
|
+
if (nuevos.size >= 25) {
|
|
185
|
+
console.error("hay demasiados ficheros nuevos para el aparato: despliega entero con xone-desplegar-android.");
|
|
186
|
+
process.exit(1);
|
|
187
|
+
}
|
|
188
|
+
cambiados = sincronizables.filter(
|
|
189
|
+
(f) => nuevos.has(f) || String(remotos[f]) !== String(crc32(readFileSync(f))),
|
|
190
|
+
);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
if (cambiados.length === 0) {
|
|
194
|
+
console.log("nada que recargar: los ficheros del proyecto ya son los del aparato.");
|
|
195
|
+
if (otros.length > 0 && posicionales.length === 0) {
|
|
196
|
+
console.log(`(no se comparan ${otros.length} fichero(s) que no son xne/js/css/ini/xml: iconos, bd, files…)`);
|
|
197
|
+
}
|
|
198
|
+
process.exit(0);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/** Cómo se aplica cada uno. */
|
|
202
|
+
function clase(rel) {
|
|
203
|
+
const ext = extname(rel).toLowerCase();
|
|
204
|
+
if (ext === ".js") return "js";
|
|
205
|
+
if (ext === ".xne") return /<coll[\s>]/.test(readFileSync(rel, "latin1")) ? "coleccion" : "relanzar";
|
|
206
|
+
return "relanzar";
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// 1. Subir a disco (siempre): lo que solo está en memoria se pierde al relanzar.
|
|
210
|
+
const subidos = [];
|
|
211
|
+
for (const rel of cambiados) {
|
|
212
|
+
const base64 = readFileSync(rel).toString("base64");
|
|
213
|
+
if (process.platform === "win32" && base64.length > TOPE_BASE64_WINDOWS) {
|
|
214
|
+
console.error(`«${rel}» es demasiado grande para mandarlo por la línea de órdenes de Windows: despliega entero.`);
|
|
215
|
+
process.exit(1);
|
|
216
|
+
}
|
|
217
|
+
const r = mandar("uploadFile", { destinationPath: `${carpetaEnElAparato}/${rel}`, fileData: base64 });
|
|
218
|
+
if (r.result !== true) {
|
|
219
|
+
console.error(`no se pudo subir «${rel}»: ${r.exceptionMessage ?? r.status ?? "sin motivo"}`);
|
|
220
|
+
process.exit(1);
|
|
221
|
+
}
|
|
222
|
+
subidos.push(rel);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// 2. Aplicar. Si algo obliga a relanzar, el relanzamiento carga TODO desde disco y sobra el resto.
|
|
226
|
+
const clases = new Map(subidos.map((f) => [f, clase(f)]));
|
|
227
|
+
const hayQueRelanzar = [...clases.values()].includes("relanzar");
|
|
228
|
+
const fallos = [];
|
|
229
|
+
|
|
230
|
+
if (hayQueRelanzar) {
|
|
231
|
+
const r = mandar("launchApplication", { appName: app });
|
|
232
|
+
if (r.result !== true) fallos.push(`launchApplication: ${r.exceptionMessage ?? r.status ?? "sin motivo"}`);
|
|
233
|
+
for (let intento = 0; intento < 12; intento++) {
|
|
234
|
+
dormir(1);
|
|
235
|
+
if (estaViva()) break;
|
|
236
|
+
}
|
|
237
|
+
for (const [f] of clases) console.log(` ${f} → relanzada la app`);
|
|
238
|
+
} else {
|
|
239
|
+
for (const [f, c] of clases) {
|
|
240
|
+
if (c === "coleccion") {
|
|
241
|
+
const r = mandar("loadCollection", { xmlNode: readFileSync(f).toString("base64"), encoding: "UTF-8" });
|
|
242
|
+
if (r.result !== true) fallos.push(`${f}: loadCollection ${r.exceptionMessage ?? r.status ?? "sin motivo"}`);
|
|
243
|
+
else console.log(` ${f} → colección recargada en caliente`);
|
|
244
|
+
} else {
|
|
245
|
+
const r = mandar("loadIncludeFile", { file: f, language: "javascript", encoding: "UTF-8", compile: true });
|
|
246
|
+
if (r.result !== true) fallos.push(`${f}: loadIncludeFile ${r.exceptionMessage ?? r.status ?? "sin motivo"}`);
|
|
247
|
+
else console.log(` ${f} → JavaScript recargado`);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
dormir(1);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
if (fallos.length > 0) {
|
|
254
|
+
console.error("");
|
|
255
|
+
for (const f of fallos) console.error(`FALLÓ ${f}`);
|
|
256
|
+
console.error("Lo subido está en el aparato; para aplicarlo del todo, xone-desplegar-android.");
|
|
257
|
+
process.exit(1);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// 3. Comprobar: el árbol de controles, no el `result:true`.
|
|
261
|
+
if (!estaViva()) {
|
|
262
|
+
console.error("");
|
|
263
|
+
console.error("Se aplicó, pero la app YA NO responde: puede haber reventado al cargar lo nuevo.");
|
|
264
|
+
console.error("Mira el log con xone-log-android.");
|
|
265
|
+
process.exit(1);
|
|
266
|
+
}
|
|
267
|
+
const pantalla = mandar("getCurrentScreen");
|
|
268
|
+
console.log(`\nviva. ${typeof pantalla.status === "string" ? pantalla.status : ""}`);
|
|
269
|
+
console.log("Recuerda: result:true es «aceptado». Comprueba con `xone-hotswap elements` o `shot` que lo cambiado se ve.");
|
|
@@ -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.
|
|
@@ -105,6 +112,7 @@ 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
118
|
- **Validación al final de cada hito.** Si el plan tiene varios hitos, cada uno cierra con una tarea de validación `xone-review`.
|
|
@@ -53,6 +53,13 @@
|
|
|
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
|
|
@@ -77,6 +84,7 @@
|
|
|
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
86
|
- **Criterios de aceptación verificables.** Cada criterio debe poder comprobarse —con `xone-review`, con un smoke, 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.
|
|
80
88
|
- **La validación es una tarea.** Cada hito cierra con una tarea `xone-review`, o al menos una al final del plan.
|
|
81
89
|
|
|
82
90
|
## Ejemplo: feature sobre existente
|
|
@@ -36,7 +36,7 @@ Respondes preguntas, depuras problemas y guías el desarrollo en XOne:
|
|
|
36
36
|
## Archivos de Referencia
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
Consulta SIEMPRE estos archivos antes de responder.
|
|
39
|
+
Consulta SIEMPRE estos archivos antes de responder. Están incluidos en la carpeta `references/` de este skill:
|
|
40
40
|
|
|
41
41
|
| Fase / tema | Archivo |
|
|
42
42
|
|---|---|
|
|
@@ -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
|