xonecode 0.3.0 → 0.5.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.
- package/README.md +50 -8
- package/THIRD_PARTY_NOTICES.md +160 -0
- package/apps/web/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/apps/web/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/apps/web/dist/assets/c-BIGW1oBm.js +1 -0
- package/apps/web/dist/assets/cpp-DddhVWhK.js +1 -0
- package/apps/web/dist/assets/csharp-DSvCPggb.js +1 -0
- package/apps/web/dist/assets/css-CLj8gQPS.js +1 -0
- package/apps/web/dist/assets/go-C27-OAKa.js +1 -0
- package/apps/web/dist/assets/html-CfGypltT.js +1 -0
- package/apps/web/dist/assets/index-BB3SamhR.css +1 -0
- package/apps/web/dist/assets/index-CFYAoHdw.js +477 -0
- package/apps/web/dist/assets/ini-BEwlwnbL.js +1 -0
- package/apps/web/dist/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- package/apps/web/dist/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- package/apps/web/dist/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- package/apps/web/dist/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- package/apps/web/dist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- package/apps/web/dist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- package/apps/web/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- package/apps/web/dist/assets/java-CylS5w8V.js +1 -0
- package/apps/web/dist/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
- package/apps/web/dist/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
- package/apps/web/dist/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
- package/apps/web/dist/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
- package/apps/web/dist/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
- package/apps/web/dist/assets/kotlin-BdnUsdx6.js +1 -0
- package/apps/web/dist/assets/less-B1dDrJ26.js +1 -0
- package/apps/web/dist/assets/lua-BaeVxFsk.js +1 -0
- package/apps/web/dist/assets/markdown-Cvjx9yec.js +1 -0
- package/apps/web/dist/assets/mdx-Cmh6b_Ma.js +1 -0
- package/apps/web/dist/assets/php-D_2--9WK.js +1 -0
- package/apps/web/dist/assets/python-B6aJPvgy.js +1 -0
- package/apps/web/dist/assets/ruby-DSHSDbk1.js +1 -0
- package/apps/web/dist/assets/rust-B1yitclQ.js +1 -0
- package/apps/web/dist/assets/scss-D5BDwBP9.js +1 -0
- package/apps/web/dist/assets/sql-CRqJ_cUM.js +1 -0
- package/apps/web/dist/assets/swift-C2oV4EkX.js +1 -0
- package/apps/web/dist/assets/toml-vGWfd6FD.js +1 -0
- package/apps/web/dist/assets/xml-sdJ4AIDG.js +1 -0
- package/apps/web/dist/assets/yaml-Buea-lGh.js +1 -0
- package/apps/web/dist/iconos/xonecode.png +0 -0
- package/apps/web/dist/index.html +20 -0
- package/dist/agent/agentesEnDisco.js +539 -0
- package/dist/agent/agentesEnDisco.js.map +1 -0
- package/dist/agent/arbolDeProyecto.js +245 -0
- package/dist/agent/arbolDeProyecto.js.map +1 -0
- package/dist/agent/artefactosEnDisco.js +139 -0
- package/dist/agent/artefactosEnDisco.js.map +1 -0
- package/dist/agent/aumentador.js +175 -0
- package/dist/agent/aumentador.js.map +1 -0
- package/dist/agent/authEnDisco.js +76 -1
- package/dist/agent/authEnDisco.js.map +1 -1
- package/dist/agent/busquedaRegex.js +92 -0
- package/dist/agent/busquedaRegex.js.map +1 -0
- package/dist/agent/catalogoModelos.js +345 -0
- package/dist/agent/catalogoModelos.js.map +1 -0
- package/dist/agent/checkpointer.js +127 -0
- package/dist/agent/checkpointer.js.map +1 -0
- package/dist/agent/cloudstudioClient.js +194 -0
- package/dist/agent/cloudstudioClient.js.map +1 -0
- package/dist/agent/cloudstudioMcp.js +722 -0
- package/dist/agent/cloudstudioMcp.js.map +1 -0
- package/dist/agent/configEnDisco.js +309 -11
- package/dist/agent/configEnDisco.js.map +1 -1
- package/dist/agent/consumoExterno.js +99 -0
- package/dist/agent/consumoExterno.js.map +1 -0
- package/dist/agent/descarga.js +149 -0
- package/dist/agent/descarga.js.map +1 -0
- package/dist/agent/diagnosticoDeTools.js +51 -0
- package/dist/agent/diagnosticoDeTools.js.map +1 -0
- package/dist/agent/dispositivosEnMaquina.js +596 -0
- package/dist/agent/dispositivosEnMaquina.js.map +1 -0
- package/dist/agent/escrituraDeCodex.js +134 -0
- package/dist/agent/escrituraDeCodex.js.map +1 -0
- package/dist/agent/escrituraDeOpencode.js +80 -0
- package/dist/agent/escrituraDeOpencode.js.map +1 -0
- package/dist/agent/escrituraExterna.js +742 -0
- package/dist/agent/escrituraExterna.js.map +1 -0
- package/dist/agent/gemini.js +81 -0
- package/dist/agent/gemini.js.map +1 -0
- package/dist/agent/git.js +83 -0
- package/dist/agent/git.js.map +1 -0
- package/dist/agent/gitSync.js +441 -0
- package/dist/agent/gitSync.js.map +1 -0
- package/dist/agent/hotswap.js +448 -0
- package/dist/agent/hotswap.js.map +1 -0
- package/dist/agent/instalacionEnMaquina.js +252 -0
- package/dist/agent/instalacionEnMaquina.js.map +1 -0
- package/dist/agent/instantanea.js +7 -10
- package/dist/agent/instantanea.js.map +1 -1
- package/dist/agent/interrupts.js +11 -2
- package/dist/agent/interrupts.js.map +1 -1
- package/dist/agent/juezDeTarea.js +345 -0
- package/dist/agent/juezDeTarea.js.map +1 -0
- package/dist/agent/lanzamientoEnMaquina.js +377 -0
- package/dist/agent/lanzamientoEnMaquina.js.map +1 -0
- package/dist/agent/manifiesto.js +59 -0
- package/dist/agent/manifiesto.js.map +1 -0
- package/dist/agent/memoriaDeProyecto.js +60 -0
- package/dist/agent/memoriaDeProyecto.js.map +1 -0
- package/dist/agent/modelos.js +105 -17
- package/dist/agent/modelos.js.map +1 -1
- package/dist/agent/modelosDeMotor.js +204 -0
- package/dist/agent/modelosDeMotor.js.map +1 -0
- package/dist/agent/paqueteDelProyecto.js +181 -0
- package/dist/agent/paqueteDelProyecto.js.map +1 -0
- package/dist/agent/perfiles.js +92 -31
- package/dist/agent/perfiles.js.map +1 -1
- package/dist/agent/persona.js +40 -0
- package/dist/agent/persona.js.map +1 -0
- package/dist/agent/procesosEnMaquina.js +204 -0
- package/dist/agent/procesosEnMaquina.js.map +1 -0
- package/dist/agent/proyecto.js +311 -13
- package/dist/agent/proyecto.js.map +1 -1
- package/dist/agent/puente.js +63 -6
- package/dist/agent/puente.js.map +1 -1
- package/dist/agent/resumenDeContexto.js +30 -0
- package/dist/agent/resumenDeContexto.js.map +1 -0
- package/dist/agent/resumenDeTool.js +64 -18
- package/dist/agent/resumenDeTool.js.map +1 -1
- package/dist/agent/sesionGit.js +481 -0
- package/dist/agent/sesionGit.js.map +1 -0
- package/dist/agent/settingsEnDisco.js +189 -0
- package/dist/agent/settingsEnDisco.js.map +1 -0
- package/dist/agent/subagenteCodex.js +368 -0
- package/dist/agent/subagenteCodex.js.map +1 -0
- package/dist/agent/subagenteExterno.js +423 -0
- package/dist/agent/subagenteExterno.js.map +1 -0
- package/dist/agent/subagenteOpencode.js +389 -0
- package/dist/agent/subagenteOpencode.js.map +1 -0
- package/dist/agent/subida.js +202 -0
- package/dist/agent/subida.js.map +1 -0
- package/dist/agent/tareasEnDisco.js +466 -0
- package/dist/agent/tareasEnDisco.js.map +1 -0
- package/dist/agent/turnoReal.js +663 -50
- package/dist/agent/turnoReal.js.map +1 -1
- package/dist/agent/versionEnDisco.js +48 -0
- package/dist/agent/versionEnDisco.js.map +1 -0
- package/dist/agent/xoneAgent.js +290 -49
- package/dist/agent/xoneAgent.js.map +1 -1
- package/dist/agent/zip.js +52 -0
- package/dist/agent/zip.js.map +1 -0
- package/dist/cli/acuseDeModelo.js +30 -0
- package/dist/cli/acuseDeModelo.js.map +1 -0
- package/dist/cli/aprobar.js +55 -2
- package/dist/cli/aprobar.js.map +1 -1
- package/dist/cli/config.js +9 -13
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/consola.js +750 -19
- package/dist/cli/consola.js.map +1 -1
- package/dist/cli/main.js +740 -81
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/markdown.js +188 -2
- package/dist/cli/markdown.js.map +1 -1
- package/dist/cli/run.js +32 -4
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/stdio.js +46 -19
- package/dist/cli/stdio.js.map +1 -1
- package/dist/cli/tema.js +96 -8
- package/dist/cli/tema.js.map +1 -1
- package/dist/cli/tokens.js +29 -0
- package/dist/cli/tokens.js.map +1 -0
- package/dist/cli/tui/app.js +171 -0
- package/dist/cli/tui/app.js.map +1 -0
- package/dist/cli/tui/aprobarTui.js +80 -0
- package/dist/cli/tui/aprobarTui.js.map +1 -0
- package/dist/cli/tui/barra.js +37 -0
- package/dist/cli/tui/barra.js.map +1 -0
- package/dist/cli/tui/correrTui.js +478 -0
- package/dist/cli/tui/correrTui.js.map +1 -0
- package/dist/cli/tui/entrada.js +166 -0
- package/dist/cli/tui/entrada.js.map +1 -0
- package/dist/cli/tui/filas.js +24 -0
- package/dist/cli/tui/filas.js.map +1 -0
- package/dist/cli/tui/logo.js +49 -0
- package/dist/cli/tui/logo.js.map +1 -0
- package/dist/cli/tui/pielTui.js +14 -0
- package/dist/cli/tui/pielTui.js.map +1 -0
- package/dist/cli/tui/raton.js +126 -0
- package/dist/cli/tui/raton.js.map +1 -0
- package/dist/cli/tui/sidebar.js +86 -0
- package/dist/cli/tui/sidebar.js.map +1 -0
- package/dist/cli/tui/store.js +143 -0
- package/dist/cli/tui/store.js.map +1 -0
- package/dist/cli/tui/tarjeta.js +19 -0
- package/dist/cli/tui/tarjeta.js.map +1 -0
- package/dist/cli/tui/temaInk.js +114 -0
- package/dist/cli/tui/temaInk.js.map +1 -0
- package/dist/cli/tui/transcript.js +254 -0
- package/dist/cli/tui/transcript.js.map +1 -0
- package/dist/cli/wizardInicial.js +240 -0
- package/dist/cli/wizardInicial.js.map +1 -0
- package/dist/core/actos.js +113 -0
- package/dist/core/actos.js.map +1 -0
- package/dist/core/adjuntos.js +97 -0
- package/dist/core/adjuntos.js.map +1 -0
- package/dist/core/agentes.js +227 -0
- package/dist/core/agentes.js.map +1 -0
- package/dist/core/artefactos.js +149 -0
- package/dist/core/artefactos.js.map +1 -0
- package/dist/core/cloudstudio.js +7 -0
- package/dist/core/cloudstudio.js.map +1 -0
- package/dist/core/config.js +212 -5
- package/dist/core/config.js.map +1 -1
- package/dist/core/contextos.js +53 -1
- package/dist/core/contextos.js.map +1 -1
- package/dist/core/descargas.js +106 -0
- package/dist/core/descargas.js.map +1 -0
- package/dist/core/descriptoresDeApp.js +279 -0
- package/dist/core/descriptoresDeApp.js.map +1 -0
- package/dist/core/dispositivos.js +466 -0
- package/dist/core/dispositivos.js.map +1 -0
- package/dist/core/entrega.js +141 -0
- package/dist/core/entrega.js.map +1 -0
- package/dist/core/entrelazar.js +90 -0
- package/dist/core/entrelazar.js.map +1 -0
- package/dist/core/esqueleto.js +10 -0
- package/dist/core/esqueleto.js.map +1 -1
- package/dist/core/modelos.js +235 -3
- package/dist/core/modelos.js.map +1 -1
- package/dist/core/notify.js +27 -9
- package/dist/core/notify.js.map +1 -1
- package/dist/core/planDeSubida.js +127 -0
- package/dist/core/planDeSubida.js.map +1 -0
- package/dist/core/ports.js +189 -1
- package/dist/core/ports.js.map +1 -1
- package/dist/core/puedeLanzarse.js +239 -0
- package/dist/core/puedeLanzarse.js.map +1 -0
- package/dist/core/rutaVirtual.js +42 -0
- package/dist/core/rutaVirtual.js.map +1 -0
- package/dist/core/settings.js +246 -0
- package/dist/core/settings.js.map +1 -0
- package/dist/core/tareas.js +230 -0
- package/dist/core/tareas.js.map +1 -0
- package/dist/core/textos.js +36 -0
- package/dist/core/textos.js.map +1 -0
- package/dist/core/turno.js +56 -8
- package/dist/core/turno.js.map +1 -1
- package/dist/core/version.js +31 -0
- package/dist/core/version.js.map +1 -0
- package/dist/vendor/sqliteSaver.js +389 -0
- package/dist/vendor/sqliteSaver.js.map +1 -0
- package/dist/vendor/tokenTracking.js +22 -1
- package/dist/vendor/tokenTracking.js.map +1 -1
- package/dist/web/servidor/arranque.js +3964 -0
- package/dist/web/servidor/arranque.js.map +1 -0
- package/dist/web/servidor/consolaDeTarea.js +161 -0
- package/dist/web/servidor/consolaDeTarea.js.map +1 -0
- package/dist/web/servidor/consolaWeb.js +389 -0
- package/dist/web/servidor/consolaWeb.js.map +1 -0
- package/dist/web/servidor/corredorDeTareas.js +1119 -0
- package/dist/web/servidor/corredorDeTareas.js.map +1 -0
- package/dist/web/servidor/pielWeb.js +269 -0
- package/dist/web/servidor/pielWeb.js.map +1 -0
- package/dist/web/servidor/servidor.js +257 -0
- package/dist/web/servidor/servidor.js.map +1 -0
- package/dist/web/servidor/sesiones.js +440 -0
- package/dist/web/servidor/sesiones.js.map +1 -0
- package/dist/web/servidor/transporte.js +169 -0
- package/dist/web/servidor/transporte.js.map +1 -0
- package/dist/web/servidor/vestibulo.js +1276 -0
- package/dist/web/servidor/vestibulo.js.map +1 -0
- package/package.json +33 -9
- package/skills/archify/LICENSE +22 -0
- package/skills/archify/SKILL.md +109 -0
- package/skills/archify/THIRD_PARTY_NOTICES.md +56 -0
- package/skills/archify/assets/template.html +14787 -0
- package/skills/archify/bin/archify.mjs +1990 -0
- package/skills/archify/bin/open-artifact.mjs +86 -0
- package/skills/archify/bin/preview.mjs +648 -0
- package/skills/archify/bin/visual-check.mjs +829 -0
- package/skills/archify/brand-marks/README.md +31 -0
- package/skills/archify/brand-marks/catalog.json +131 -0
- package/skills/archify/delta/architecture-delta.mjs +1214 -0
- package/skills/archify/examples/agent-run.lifecycle.json +71 -0
- package/skills/archify/examples/agent-tool-call.workflow.json +94 -0
- package/skills/archify/examples/async-job-roundtrip.sequence.json +61 -0
- package/skills/archify/examples/brand-aware-delivery.architecture.json +47 -0
- package/skills/archify/examples/cache-miss-request.sequence.json +81 -0
- package/skills/archify/examples/checkout-platform.base.architecture.json +31 -0
- package/skills/archify/examples/checkout-platform.head.architecture.json +31 -0
- package/skills/archify/examples/dataflow-product-analytics.html +14898 -0
- package/skills/archify/examples/deployment-release.lifecycle.json +49 -0
- package/skills/archify/examples/event-stream.dataflow.json +57 -0
- package/skills/archify/examples/incident-response.workflow.json +64 -0
- package/skills/archify/examples/lifecycle-agent-run.html +14847 -0
- package/skills/archify/examples/product-analytics.dataflow.json +76 -0
- package/skills/archify/examples/production-deployment.architecture.json +71 -0
- package/skills/archify/examples/release-delivery.workflow.json +62 -0
- package/skills/archify/examples/sequence-cache-miss-request.html +14913 -0
- package/skills/archify/examples/web-app-rendered.html +14862 -0
- package/skills/archify/examples/web-app.architecture.json +46 -0
- package/skills/archify/examples/workflow-agent-tool-call-rendered.html +14904 -0
- package/skills/archify/migrations/workflow-v2.mjs +279 -0
- package/skills/archify/package.json +17 -0
- package/skills/archify/recipes/scenarios.mjs +391 -0
- package/skills/archify/references/authoring-contract.md +198 -0
- package/skills/archify/references/brand-marks.md +69 -0
- package/skills/archify/references/delivery-contract.md +116 -0
- package/skills/archify/references/viewer-runtime.md +45 -0
- package/skills/archify/renderers/architecture/grid.mjs +62 -0
- package/skills/archify/renderers/architecture/render-architecture.mjs +1078 -0
- package/skills/archify/renderers/dataflow/README.md +104 -0
- package/skills/archify/renderers/dataflow/render-dataflow.mjs +483 -0
- package/skills/archify/renderers/lifecycle/README.md +115 -0
- package/skills/archify/renderers/lifecycle/render-lifecycle.mjs +561 -0
- package/skills/archify/renderers/sequence/README.md +114 -0
- package/skills/archify/renderers/sequence/render-sequence.mjs +453 -0
- package/skills/archify/renderers/shared/brand-marks.mjs +563 -0
- package/skills/archify/renderers/shared/cli.mjs +218 -0
- package/skills/archify/renderers/shared/desktop-readability.mjs +26 -0
- package/skills/archify/renderers/shared/diagnostics.mjs +127 -0
- package/skills/archify/renderers/shared/engineering-profiles.mjs +157 -0
- package/skills/archify/renderers/shared/generated-brand-marks.mjs +2003 -0
- package/skills/archify/renderers/shared/generated-validators.mjs +13 -0
- package/skills/archify/renderers/shared/geometry.mjs +1423 -0
- package/skills/archify/renderers/shared/i18n.mjs +594 -0
- package/skills/archify/renderers/shared/layout-report.mjs +40 -0
- package/skills/archify/renderers/shared/legend.mjs +217 -0
- package/skills/archify/renderers/shared/output-path.mjs +321 -0
- package/skills/archify/renderers/shared/repository-evidence.mjs +235 -0
- package/skills/archify/renderers/shared/text-fit.mjs +49 -0
- package/skills/archify/renderers/shared/utils.mjs +232 -0
- package/skills/archify/renderers/shared/validator.mjs +86 -0
- package/skills/archify/renderers/workflow/README.md +223 -0
- package/skills/archify/renderers/workflow/render-workflow.mjs +35 -0
- package/skills/archify/renderers/workflow/workflow-compiler.mjs +4400 -0
- package/skills/archify/renderers/workflow/workflow-migration-geometry.mjs +144 -0
- package/skills/archify/schemas/README.md +211 -0
- package/skills/archify/schemas/architecture.schema.json +176 -0
- package/skills/archify/schemas/common.schema.json +115 -0
- package/skills/archify/schemas/dataflow.schema.json +243 -0
- package/skills/archify/schemas/lifecycle.schema.json +266 -0
- package/skills/archify/schemas/sequence.schema.json +223 -0
- package/skills/archify/schemas/workflow.schema.json +428 -0
- package/skills/archify/scripts/check-render-output.mjs +835 -0
- package/skills/archify/scripts/check-update.mjs +1667 -0
- package/skills/archify/scripts/render-examples.mjs +26 -0
- package/skills/archify/scripts/update-contract.mjs +182 -0
- package/skills/archify/skill-release.json +10 -0
- package/skills/artifacts-builder/SKILL.md +120 -0
- package/skills/artifacts-builder/reference/diagramas.md +123 -0
- package/skills/artifacts-builder/reference/estilo.md +123 -0
- package/skills/artifacts-builder/reference/exportar-pdf.md +56 -0
- package/skills/artifacts-builder/reference/graficas.md +22 -0
- package/skills/artifacts-builder/scripts/bundle_artifact.py +109 -0
- package/skills/artifacts-builder/scripts/validate_artifact.py +345 -0
- package/skills/xone-hotswap/SKILL.md +185 -0
- package/skills/xone-hotswap/references/comandos.md +706 -0
- package/skills/xone-hotswap/references/conexion-y-despliegue.md +226 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# Llegar al dispositivo, desplegar una app y aplicar los cambios
|
|
2
|
+
|
|
3
|
+
Las dos plataformas hacen lo mismo conceptualmente —subir los ficheros del proyecto, reiniciar,
|
|
4
|
+
mirar— pero **por caminos completamente distintos**, y ahí es donde se pierde más tiempo. Los
|
|
5
|
+
comandos, uno a uno: [comandos.md](comandos.md).
|
|
6
|
+
|
|
7
|
+
## 1. Llegar
|
|
8
|
+
|
|
9
|
+
### Android: `adb forward`
|
|
10
|
+
|
|
11
|
+
El servidor escucha en `localhost` del dispositivo. Para alcanzarlo desde el PC:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
adb devices -l
|
|
15
|
+
adb forward tcp:8443 tcp:8443 # reaplicar tras cada reconexión o reinicio del demonio
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
A partir de ahí la IP de destino es **`127.0.0.1`** (el localhost del PC, que adb tuneliza).
|
|
19
|
+
Con varios dispositivos: `adb -s <serial> forward tcp:8443 tcp:8443`. Para deshacerlo:
|
|
20
|
+
`adb forward --remove tcp:8443`.
|
|
21
|
+
|
|
22
|
+
**El canal de los comandos es un WebSocket, y vive en `/hotswap`.** Medido el 16-sep-2026 contra
|
|
23
|
+
`com.xone.android.framework` **5.0.2.2dev** (flavor standalone, Android): `wss://127.0.0.1:8443/hotswap`
|
|
24
|
+
contesta `101`, mientras que `/`, `/ws` y `/api` contestan `400`. Y **el servidor habla primero**: al
|
|
25
|
+
abrir manda `{"command":"server_hello","protocol_version":2}`, así que el cliente ESPERA el saludo en
|
|
26
|
+
vez de provocarlo. En esta versión `POST /command` por HTTP da **404** — los comandos van por el
|
|
27
|
+
WebSocket—, y por eso el `curl` de más abajo es solo para iOS.
|
|
28
|
+
|
|
29
|
+
**Si el puerto no responde**, normalmente es que el proceso de la app no está vivo. Lanzar la
|
|
30
|
+
pantalla del servidor hotswap arranca la app —y con ella el servidor— y muestra IP y puerto:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# flavor standalone
|
|
34
|
+
adb shell am start -n com.xone.android.framework/com.xone.android.hotswap.activities.SetupActivity
|
|
35
|
+
# flavor playStoreDeveloper
|
|
36
|
+
adb shell am start -n com.xone.android.developer.framework/com.xone.android.hotswap.activities.SetupActivity
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**El puerto puede cambiar.** Si 8443 está ocupado (otra APK del framework instalada), el
|
|
40
|
+
servidor coge el siguiente libre; el real se ve en la pestaña **Información** de esa pantalla.
|
|
41
|
+
Ajusta el forward: `adb forward tcp:<local> tcp:<remoto>`.
|
|
42
|
+
|
|
43
|
+
### iOS: sin túnel
|
|
44
|
+
|
|
45
|
+
**No hay `adb` ni nada equivalente, y no hace falta.** El simulador comparte la pila de red del
|
|
46
|
+
Mac, así que el servidor de la app es alcanzable en `localhost` directamente. En dispositivo
|
|
47
|
+
físico se llega por la **IP de la LAN** que muestra la propia app en su barra de conexión.
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
xcrun simctl list devices booted
|
|
51
|
+
xcrun simctl launch <UDID> es.xone.studioapp.swift # arrancar el host levanta el servidor
|
|
52
|
+
curl -sk -X POST https://localhost:8443/command -d '{"command":"getAllElements","format":"xone"}'
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
El servidor solo lo levanta el runtime **en modo desarrollo**: en una app de producción no
|
|
56
|
+
existe, igual que en Android solo existe en builds *debuggable*.
|
|
57
|
+
|
|
58
|
+
### Las dos: TLS con certificado autofirmado
|
|
59
|
+
|
|
60
|
+
Todas las URLs son `https://`. Con `curl`, `-k` (`--insecure`); desde un navegador, aceptar la
|
|
61
|
+
advertencia. Solo si alguien desactiva la conexión segura escucha en `http://`.
|
|
62
|
+
|
|
63
|
+
## 2. Desplegar una app
|
|
64
|
+
|
|
65
|
+
### Android: un ZIP llamado exactamente `debug_app_update.zip`
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
PUT|POST /file_upload?file=debug_app_update.zip&appName=<nombreApp>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
El comportamiento especial se dispara **solo** con ese nombre de fichero exacto:
|
|
72
|
+
|
|
73
|
+
1. `appName` pasa a ser **obligatorio** (si falta → `400` y se descarta el ZIP).
|
|
74
|
+
2. Se extrae en **`app_<appName-en-minúsculas>`** dentro del directorio de datos.
|
|
75
|
+
3. Si el directorio no existe, se crea; se valida que quede dentro del directorio de datos.
|
|
76
|
+
4. **El ZIP se elimina siempre al terminar**, tanto en éxito como en fallo de extracción.
|
|
77
|
+
5. Tras una extracción correcta, la app aparece o se actualiza en la lista.
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
curl -k -X POST --data-binary @debug_app_update.zip \
|
|
81
|
+
"https://127.0.0.1:8443/file_upload?file=debug_app_update.zip&appName=MiApp"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
> **El ZIP no limpia el destino.** La extracción añade y sobrescribe, pero no borra lo que ya
|
|
85
|
+
> hubiera en `app_<appName>`. Para un despliegue desde cero, vaciar el directorio antes.
|
|
86
|
+
|
|
87
|
+
### iOS: copiar la carpeta al contenedor
|
|
88
|
+
|
|
89
|
+
**No hay `/file_upload`.** El host lee las apps de `<DataContainer>/Documents/<appName>/`, y
|
|
90
|
+
**solo aparecen las carpetas que tienen `app.ini`** (no basta `app.xml`). El `name=` del
|
|
91
|
+
`app.ini` es el `appName` con el que se lanza.
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
C=$(xcrun simctl get_app_container <UDID> es.xone.studioapp.swift data)
|
|
95
|
+
ditto ruta/a/MiApp "$C/Documents/MiApp"
|
|
96
|
+
xcrun simctl terminate <UDID> es.xone.studioapp.swift
|
|
97
|
+
xcrun simctl launch <UDID> es.xone.studioapp.swift
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
El **terminate + launch** no es opcional: la lista de apps se construye en `viewDidLoad`, así que
|
|
101
|
+
un `launch` sobre una app ya viva solo la trae a primer plano y no refresca la lista.
|
|
102
|
+
|
|
103
|
+
Y ojo con el coste si hay un modelo LiteRT-LM (~2,4 GB) en el contenedor: copiarlo en cada
|
|
104
|
+
redespliegue es lo que convierte una iteración de segundos en una de minutos.
|
|
105
|
+
|
|
106
|
+
## 3. Lanzar la app XONE
|
|
107
|
+
|
|
108
|
+
En las dos plataformas es un comando, y el nombre va en **camelCase**:
|
|
109
|
+
`{"command":"launchApplication","appName":"<nombre>"}`. Medido el 16-sep-2026 contra 5.0.2.2dev: con
|
|
110
|
+
la minúscula contesta `Unknown command: launchapplication` y con esta grafía `{"result":true,"status":""}`.
|
|
111
|
+
|
|
112
|
+
> **`result: true` no significa «arrancó»: significa «aceptado».** El framework acusa el lanzamiento y
|
|
113
|
+
> no espera a que la app cargue. Medido: a un proyecto al que le falta el fichero que declara su
|
|
114
|
+
> `connstring` en `app.xml` (`bd/gestion.db`) le contesta `true` y la app muere en un diálogo «Error
|
|
115
|
+
> opening database / Database not found». Lo que dice si está VIVA es un comando de lectura:
|
|
116
|
+
> `getAllElements` contesta `App is not running` y `getScreenshot` `No activity is visible`. Es la
|
|
117
|
+
> misma regla que ««Terminó bien» y «ya está» son dos cosas»: la medida manda sobre el acuse.
|
|
118
|
+
|
|
119
|
+
**En iOS este comando es legado y va solo por WebSocket** — los manejadores legados responden
|
|
120
|
+
escribiendo en el socket, que en una petición HTTP no existe. Por HTTP, `/command` sirve solo los
|
|
121
|
+
comandos de automatización —los de los bloques **Ver la pantalla** y **Tocar**—, y con un legado
|
|
122
|
+
contesta `Unknown command '<x>'`; cuál es cuál lo dice la columna **Canal (iOS)** de la
|
|
123
|
+
[matriz de disponibilidad](comandos.md#matriz-de-disponibilidad). Lanzar la app en iOS pide,
|
|
124
|
+
por tanto, un cliente WebSocket — y no un `POST /command`.
|
|
125
|
+
|
|
126
|
+
## 4. Aplicar los cambios: reiniciar
|
|
127
|
+
|
|
128
|
+
Subir un fichero **no lo aplica**: el proceso tiene cargado en memoria lo de antes.
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# Android
|
|
132
|
+
adb shell am force-stop com.xone.android.framework
|
|
133
|
+
adb shell am start -n com.xone.android.framework/.mainEntry
|
|
134
|
+
|
|
135
|
+
# iOS
|
|
136
|
+
xcrun simctl terminate <UDID> es.xone.studioapp.swift
|
|
137
|
+
xcrun simctl launch <UDID> es.xone.studioapp.swift
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
El arranque no es inmediato (carga del proyecto, motor de scripting). Espera al control que marca
|
|
141
|
+
la pantalla lista con `waitForElement`, no a un temporizador.
|
|
142
|
+
|
|
143
|
+
Para verificar que un fichero aterrizó donde se esperaba, en Android y build *debuggable*:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
adb shell run-as com.xone.android.framework sh -c 'ls -l app_miapp/objects.xml'
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## 5. Bajar ficheros del dispositivo
|
|
150
|
+
|
|
151
|
+
### Android: `/file_download`
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
GET /file_download?appName=<nombreApp>&file=<rutaRelativa>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**La raíz NO es la misma que en la subida.** En `/file_upload` la ruta se resuelve contra el
|
|
158
|
+
**directorio de datos** (por eso se escribe `file=app_miapp/objects.xml`); en `/file_download` se
|
|
159
|
+
resuelve contra el **directorio de la app** que indica `appName`, así que la misma ruta se pide
|
|
160
|
+
como `file=objects.xml`. Aquí `appName` es obligatorio siempre.
|
|
161
|
+
|
|
162
|
+
Si falta un parámetro, la app no existe, el fichero no existe o no es un fichero regular →
|
|
163
|
+
**`404`**.
|
|
164
|
+
|
|
165
|
+
**Caso especial `.db`:** si el nombre termina en `.db` no se devuelve el fichero suelto, sino un
|
|
166
|
+
**ZIP** generado al vuelo con la base de datos, sus auxiliares `-shm`/`-wal`/`-journal` que
|
|
167
|
+
existan, y un fichero **`db.key`** con la **clave SQLCipher en claro** en el formato `x'<hex>'`
|
|
168
|
+
que espera un `PRAGMA key`.
|
|
169
|
+
|
|
170
|
+
> **Implicación de seguridad:** ese endpoint entrega la clave de cifrado en claro a quien pueda
|
|
171
|
+
> alcanzarlo. En disco el `.key` está protegido por el almacén seguro del dispositivo, pero en el
|
|
172
|
+
> ZIP viaja descifrado. El servidor solo existe en builds *debuggable*, pero conviene no exponer
|
|
173
|
+
> el puerto fuera de `localhost` / del túnel ADB.
|
|
174
|
+
|
|
175
|
+
### iOS: no hay
|
|
176
|
+
|
|
177
|
+
La ruta `/file_download` **está declarada pero es un esqueleto muerto**: parsea la query en dos
|
|
178
|
+
variables que no usa y devuelve `403` incondicionalmente. No hay forma de bajar ficheros por este
|
|
179
|
+
canal; para inspeccionar el contenedor del simulador, ve al sistema de ficheros directamente con
|
|
180
|
+
`xcrun simctl get_app_container`.
|
|
181
|
+
|
|
182
|
+
## 6. Reemplazar una base de datos (Android)
|
|
183
|
+
|
|
184
|
+
Sustituir un `.db` tiene dos trampas que no da ningún código de error:
|
|
185
|
+
|
|
186
|
+
**1. Ninguna de las vías HTTP cierra las conexiones abiertas a la base de datos.** Si se sube un
|
|
187
|
+
`.db` con la app viva, la subida responde `200 OK` y el fichero se escribe, pero el proceso sigue
|
|
188
|
+
usando el descriptor anterior: los cambios no aparecen, o se pierden cuando la app cierre y
|
|
189
|
+
vuelque lo suyo. **Parar la app antes de subir.**
|
|
190
|
+
|
|
191
|
+
**2. Los `-wal` / `-shm` antiguos siguen ahí** con transacciones de la base vieja. Hay que
|
|
192
|
+
borrarlos tras reemplazarla, o la app arrancará con estado inconsistente:
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
adb shell run-as com.xone.android.framework sh -c 'rm -f app_miapp/bd/gestion.db-wal app_miapp/bd/gestion.db-shm'
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
**Y va cifrada con SQLCipher.** La app no cifra una base plana al abrirla: espera encontrarla ya
|
|
199
|
+
cifrada con la clave que le corresponde (y si falta el `.key`, genera una nueva y espera la base
|
|
200
|
+
cifrada con *esa*). Subir una base sin cifrar termina en
|
|
201
|
+
`SQLiteDatabaseCorruptException: database disk image is malformed (code 11)`. Para editarla fuera
|
|
202
|
+
del dispositivo: bajarla con `/file_download` (que entrega el `db.key`), abrirla con esa clave,
|
|
203
|
+
editar, y volver a subirla cifrada con la misma clave.
|
|
204
|
+
|
|
205
|
+
En iOS no hay endpoints de fichero, así que este flujo no aplica; además, el `.xcframework` de
|
|
206
|
+
SQLCipher del repo solo trae slice `x86_64` para simulador, de modo que una app con base cifrada
|
|
207
|
+
falla en tiempo de ejecución al correr en simulador.
|
|
208
|
+
|
|
209
|
+
## 7. Códigos de respuesta HTTP (Android, endpoints de fichero)
|
|
210
|
+
|
|
211
|
+
| Código | Situación |
|
|
212
|
+
|---|---|
|
|
213
|
+
| `200 OK` | Subida (y extracción, si aplica) o descarga correcta |
|
|
214
|
+
| `404 Not Found` | (`/file_download`) Falta `appName` o `file`, la app no existe, o el fichero no existe |
|
|
215
|
+
| `400 Bad Request` | Falta `file`, `Content-Length` inválido, body más corto de lo declarado, o falta `appName` con `debug_app_update.zip` |
|
|
216
|
+
| `403 Forbidden` | Ruta absoluta, path-traversal, o `appName` inválido |
|
|
217
|
+
| `405 Method Not Allowed` | Método distinto de PUT/POST |
|
|
218
|
+
| `409 Conflict` | El destino es un directorio |
|
|
219
|
+
| `411 Length Required` | Falta la cabecera `Content-Length` |
|
|
220
|
+
| `413 Payload Too Large` | El cuerpo supera 512 MiB |
|
|
221
|
+
| `500 Internal Server Error` | No se pudo crear el directorio, extraer, reemplazar o mover el fichero |
|
|
222
|
+
|
|
223
|
+
En iOS, `POST /command` responde con el JSON del comando (incluido el de error), y con un cuerpo
|
|
224
|
+
que supere su tope responde también JSON en vez de cortar la conexión. **Un cuerpo enviado sin
|
|
225
|
+
`Content-Length` (`Transfer-Encoding: chunked`) funciona**: es el modo por defecto de varios
|
|
226
|
+
clientes HTTP, entre ellos el `http` de Node.
|