xonecode 0.3.0 → 0.5.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/README.md +49 -7
- package/THIRD_PARTY_NOTICES.md +128 -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/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 +30 -8
- 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,166 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* El cuadro de entrada: el único sitio donde el usuario escribe.
|
|
4
|
+
*
|
|
5
|
+
* A mano y sin `ink-text-input`: el contrato es pequeño (texto, historial, Tab de
|
|
6
|
+
* comandos y @ficheros reutilizando el completer puro de `consola.ts`) y una
|
|
7
|
+
* dependencia más no lo acorta.
|
|
8
|
+
*/
|
|
9
|
+
import { Box, Text, useInput } from "ink";
|
|
10
|
+
import { useEffect, useState } from "react";
|
|
11
|
+
import { barra } from "./barra.js";
|
|
12
|
+
import { temaInk } from "./temaInk.js";
|
|
13
|
+
import { filasDe } from "./filas.js";
|
|
14
|
+
import { Fila } from "./tarjeta.js";
|
|
15
|
+
import { COMANDOS } from "../consola.js";
|
|
16
|
+
/** El cursor: un carácter que viaja DENTRO del texto para que el partido en filas lo cuente. */
|
|
17
|
+
const CURSOR = "▏";
|
|
18
|
+
const ESPERA_EN_COLA = ["◐", "◓", "◑", "◒"];
|
|
19
|
+
/** La cola vive junto a la entrada, no en el pasado del transcript que aún está creciendo. */
|
|
20
|
+
function DockDeCola({ pendientes, ancho }) {
|
|
21
|
+
const [paso, setPaso] = useState(0);
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
const reloj = setInterval(() => setPaso((actual) => (actual + 1) % ESPERA_EN_COLA.length), 360);
|
|
24
|
+
return () => clearInterval(reloj);
|
|
25
|
+
}, []);
|
|
26
|
+
const bruto = `${ESPERA_EN_COLA[paso]} ${pendientes.length} en cola · ${pendientes[0] ?? ""}`;
|
|
27
|
+
const texto = Array.from(bruto).slice(0, Math.max(1, ancho - 2)).join("");
|
|
28
|
+
return _jsx(Fila, { ancho: ancho, visible: Array.from(texto).length, color: temaInk.aviso, fondo: temaInk.fondoCola, children: texto });
|
|
29
|
+
}
|
|
30
|
+
const MAX_COMANDOS_VISIBLES = 8;
|
|
31
|
+
function MenuDeComandos({ opciones, seleccion, ancho }) {
|
|
32
|
+
const limite = Math.max(1, ancho - 2);
|
|
33
|
+
return (_jsx(Box, { flexDirection: "column", flexShrink: 0, children: opciones.map((opcion, indice) => {
|
|
34
|
+
const activo = indice === seleccion;
|
|
35
|
+
const bruto = `${activo ? "›" : " "} /${opcion.nombre.padEnd(16)} ${opcion.descripcion}`;
|
|
36
|
+
const texto = Array.from(bruto).slice(0, limite).join("");
|
|
37
|
+
return (_jsx(Fila, { ancho: ancho, visible: Array.from(texto).length, color: activo ? temaInk.fondoCola : temaInk.mudo, fondo: activo ? temaInk.fase : temaInk.fondoCola, children: texto }, opcion.nombre));
|
|
38
|
+
}) }));
|
|
39
|
+
}
|
|
40
|
+
export function Entrada({ alEnviar, completa, ocupado, pendientes = [], historial, modelo, ancho, }) {
|
|
41
|
+
const [valor, setValor] = useState("");
|
|
42
|
+
const [indiceHistorial, setIndice] = useState(-1); // -1 = la línea en edición
|
|
43
|
+
const [pista, setPista] = useState([]);
|
|
44
|
+
const [menuAbierto, setMenuAbierto] = useState(false);
|
|
45
|
+
const [seleccion, setSeleccion] = useState(0);
|
|
46
|
+
const opcionesDeMenu = menuAbierto && valor.startsWith("/")
|
|
47
|
+
? Object.entries(COMANDOS)
|
|
48
|
+
.filter(([nombre]) => nombre.startsWith(valor.slice(1).toLowerCase()))
|
|
49
|
+
.slice(0, MAX_COMANDOS_VISIBLES)
|
|
50
|
+
.map(([nombre, comando]) => ({ nombre, descripcion: comando.descripcion }))
|
|
51
|
+
: [];
|
|
52
|
+
useEffect(() => setSeleccion(0), [valor]);
|
|
53
|
+
useInput((entrada, tecla) => {
|
|
54
|
+
if (tecla.return) {
|
|
55
|
+
const opcion = opcionesDeMenu[seleccion];
|
|
56
|
+
// Un comando ya completo es una orden, no una sugerencia. Antes `/salir` con
|
|
57
|
+
// Enter se volvía a autocompletar (y, con renders lentos, parecía bloquearse).
|
|
58
|
+
if (opcion !== undefined && valor.trim() !== `/${opcion.nombre}`) {
|
|
59
|
+
setValor(`/${opcion.nombre}`);
|
|
60
|
+
setMenuAbierto(false);
|
|
61
|
+
setPista([]);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (valor.trim() === "")
|
|
65
|
+
return;
|
|
66
|
+
alEnviar(valor);
|
|
67
|
+
setValor("");
|
|
68
|
+
setIndice(-1);
|
|
69
|
+
setPista([]);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (tecla.upArrow) {
|
|
73
|
+
if (opcionesDeMenu.length > 0) {
|
|
74
|
+
setSeleccion((actual) => (actual - 1 + opcionesDeMenu.length) % opcionesDeMenu.length);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const siguiente = Math.min(historial.length - 1, indiceHistorial + 1);
|
|
78
|
+
if (historial[siguiente] !== undefined) {
|
|
79
|
+
setIndice(siguiente);
|
|
80
|
+
setValor(historial[siguiente]);
|
|
81
|
+
}
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (tecla.downArrow) {
|
|
85
|
+
if (opcionesDeMenu.length > 0) {
|
|
86
|
+
setSeleccion((actual) => (actual + 1) % opcionesDeMenu.length);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const siguiente = indiceHistorial - 1;
|
|
90
|
+
// Ya estás en la línea en edición (-1): no hay nada más abajo. Sin este guard,
|
|
91
|
+
// siguiente === -2 y `historial[-2]` es undefined — y lo tecleado después se
|
|
92
|
+
// pegaría detrás («undefinedhola») hasta llegar al modelo por Enter.
|
|
93
|
+
if (siguiente < -1)
|
|
94
|
+
return;
|
|
95
|
+
setIndice(siguiente);
|
|
96
|
+
setValor(siguiente === -1 ? "" : historial[siguiente]);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (tecla.tab) {
|
|
100
|
+
const opcion = opcionesDeMenu[seleccion];
|
|
101
|
+
if (opcion !== undefined) {
|
|
102
|
+
setValor(`/${opcion.nombre}`);
|
|
103
|
+
setMenuAbierto(false);
|
|
104
|
+
setPista([]);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const [candidatos, base] = completa(valor);
|
|
108
|
+
if (candidatos.length === 1) {
|
|
109
|
+
setValor(candidatos[0]);
|
|
110
|
+
setPista([]);
|
|
111
|
+
}
|
|
112
|
+
else if (candidatos.length > 1) {
|
|
113
|
+
setPista(candidatos.slice(0, 8).map((c) => c.replace(base, "")));
|
|
114
|
+
}
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
if (tecla.escape) {
|
|
118
|
+
setMenuAbierto(false);
|
|
119
|
+
setPista([]);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (tecla.backspace || tecla.delete) {
|
|
123
|
+
const siguiente = valor.slice(0, -1);
|
|
124
|
+
setValor(siguiente);
|
|
125
|
+
setMenuAbierto(siguiente.startsWith("/"));
|
|
126
|
+
setPista([]);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
if (entrada && !tecla.ctrl && !tecla.meta && !tecla.escape) {
|
|
130
|
+
const siguiente = valor + entrada;
|
|
131
|
+
setValor(siguiente);
|
|
132
|
+
setMenuAbierto(siguiente.startsWith("/"));
|
|
133
|
+
setPista([]);
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
// El turno activo no bloquea la escritura: Enter manda la línea a la cola de la
|
|
137
|
+
// consola. Preguntas y modales desmontan esta Entrada, así que sigue habiendo un
|
|
138
|
+
// único dueño del teclado para las decisiones sensibles.
|
|
139
|
+
{ isActive: true });
|
|
140
|
+
// Una celda de aire por lado: el texto se parte a `ancho - 2`.
|
|
141
|
+
const interior = Math.max(1, ancho - 2);
|
|
142
|
+
const filasDeTexto = filasDe(valor + CURSOR, interior);
|
|
143
|
+
const largo = (t) => Array.from(t).length;
|
|
144
|
+
return (
|
|
145
|
+
// La tarjeta de OpenCode: barra izquierda en acento (el navy casi no se ve sobre fondo
|
|
146
|
+
// oscuro, y esto es lo que hay que ver: dónde escribes), una fila de aire, el texto,
|
|
147
|
+
// otra de aire y el modelo. Los bloques de usuario del transcript siguen en navy: lo
|
|
148
|
+
// que escribes se distingue de lo que escribiste. Sin borde arriba/abajo: cuatro
|
|
149
|
+
// filas de contenido, y app.tsx cuenta con ellas en FILAS_FIJAS.
|
|
150
|
+
// `paddingLeft={0}`: el aire lo pone cada Fila por dentro, para que lleve fondo.
|
|
151
|
+
// `flexShrink={0}`: la fila de columnas tiene altura fija, y sin esto Ink encoge la
|
|
152
|
+
// Entrada antes que el transcript — la fila del modelo pisaba la línea en edición y
|
|
153
|
+
// el cursor desaparecía en cuanto había pista de Tab o el transcript se llenaba.
|
|
154
|
+
//
|
|
155
|
+
// El texto se parte AQUÍ (`filasDe`) y cada fila es su propio Text: no hay ningún
|
|
156
|
+
// Text que envuelva, y con eso sobra el `key={valor}` que remediaba la trampa de
|
|
157
|
+
// remedida de ink 5.2.1 (CLAUDE.md, «Trampas verificadas»); `app.test.tsx` la sigue
|
|
158
|
+
// vigilando con un prompt de dos filas.
|
|
159
|
+
_jsxs(Box, { flexDirection: "column", flexShrink: 0, ...barra(temaInk.acento), paddingLeft: 0, children: [opcionesDeMenu.length > 0 ? _jsx(MenuDeComandos, { opciones: opcionesDeMenu, seleccion: seleccion, ancho: ancho }) : null, ocupado ? (_jsx(Fila, { ancho: ancho, visible: largo(`turno en curso · Enter encola${pendientes.length > 0 ? ` · ${pendientes.length} pendiente${pendientes.length === 1 ? "" : "s"}` : ""}`), color: temaInk.mudo, children: `turno en curso · Enter encola${pendientes.length > 0 ? ` · ${pendientes.length} pendiente${pendientes.length === 1 ? "" : "s"}` : ""}` })) : _jsx(Fila, { ancho: ancho, visible: 0 }), pendientes.length > 0 ? _jsx(DockDeCola, { pendientes: pendientes, ancho: ancho }) : null, filasDeTexto.map((fila, i) => {
|
|
160
|
+
const conCursor = i === filasDeTexto.length - 1;
|
|
161
|
+
return (_jsxs(Fila, { ancho: ancho, visible: largo(fila), color: temaInk.texto, children: [conCursor ? fila.slice(0, -CURSOR.length) : fila, conCursor ? _jsx(Text, { color: temaInk.prompt, children: CURSOR }) : null] }, i));
|
|
162
|
+
}), _jsx(Fila, { ancho: ancho, visible: 0 }), filasDe(modelo, interior).map((fila, i) => (_jsx(Fila, { ancho: ancho, visible: largo(fila), color: temaInk.mudo, children: fila }, i))), pista.length > 0
|
|
163
|
+
? filasDe(` ${pista.join(" ")}`, interior).map((fila, i) => (_jsx(Fila, { ancho: ancho, visible: largo(fila), color: temaInk.mudo, children: fila }, i)))
|
|
164
|
+
: null] }));
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=entrada.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entrada.js","sourceRoot":"","sources":["../../../src/cli/tui/entrada.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Partir un texto en filas de una anchura dada, por caracteres.
|
|
3
|
+
*
|
|
4
|
+
* La Entrada pinta su fondo fila a fila (Ink 5.2.1 solo da fondo a `Text`, no a `Box`),
|
|
5
|
+
* así que necesita saber DÓNDE se parte el texto en vez de dejar que Ink lo envuelva.
|
|
6
|
+
* Se cuenta por puntos de código (`Array.from`), no por bytes ni por unidades UTF-16: una
|
|
7
|
+
* «ñ» o un emoji es UN carácter. Un emoji ancho ocupa dos celdas en el terminal y aquí
|
|
8
|
+
* cuenta una; el relleno de esa fila queda una celda corto y nada más — para una línea
|
|
9
|
+
* de prompt es un desajuste asumible frente a traer `string-width`.
|
|
10
|
+
*
|
|
11
|
+
* TypeScript puro, sin ink: se prueba como función.
|
|
12
|
+
*/
|
|
13
|
+
export function filasDe(texto, ancho) {
|
|
14
|
+
if (ancho <= 0)
|
|
15
|
+
return [texto];
|
|
16
|
+
const letras = Array.from(texto);
|
|
17
|
+
if (letras.length === 0)
|
|
18
|
+
return [""];
|
|
19
|
+
const filas = [];
|
|
20
|
+
for (let i = 0; i < letras.length; i += ancho)
|
|
21
|
+
filas.push(letras.slice(i, i + ancho).join(""));
|
|
22
|
+
return filas;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=filas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filas.js","sourceRoot":"","sources":["../../../src/cli/tui/filas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,OAAO,CAAC,KAAa,EAAE,KAAa;IAClD,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/F,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* El logotipo XONE en letras de bloque, para la cabecera de la sidebar.
|
|
3
|
+
*
|
|
4
|
+
* Un array de cadenas y no figlet: el logotipo es UN dibujo fijo, y una dependencia
|
|
5
|
+
* más para cinco filas no lo acorta (mismo criterio por el que la Entrada no usa
|
|
6
|
+
* `ink-text-input`). Cada letra mide 5 columnas, con 2 de separación: 26 en total,
|
|
7
|
+
* que caben en las 38 de contenido de la sidebar (42 menos 2 de padding por lado). Solo
|
|
8
|
+
* `█` y espacio: ningún carácter que un terminal pueda medir como doble ancho y
|
|
9
|
+
* descuadrar el bloque. No tiene umbral propio: se pinta siempre que hay sidebar, y la
|
|
10
|
+
* sidebar solo se monta cuando cabe (`cabeSidebar`, en sidebar.tsx).
|
|
11
|
+
*/
|
|
12
|
+
export const LOGO_XONE = [
|
|
13
|
+
"█ █ █████ █ █ █████",
|
|
14
|
+
" █ █ █ █ ██ █ █ ",
|
|
15
|
+
" █ █ █ █ █ █ ████ ",
|
|
16
|
+
" █ █ █ █ █ ██ █ ",
|
|
17
|
+
"█ █ █████ █ █ █████",
|
|
18
|
+
];
|
|
19
|
+
/** Trazos alternativos para la marca; la fuente real la elige el terminal del usuario. */
|
|
20
|
+
export const LOGOS_XONE = {
|
|
21
|
+
xone: LOGO_XONE,
|
|
22
|
+
clear: [
|
|
23
|
+
"X X OOO N N EEEEE",
|
|
24
|
+
" X X O O NN N E ",
|
|
25
|
+
" X O O N N N EEEE ",
|
|
26
|
+
" X X O O N NN E ",
|
|
27
|
+
"X X OOO N N EEEEE",
|
|
28
|
+
],
|
|
29
|
+
midnight: [
|
|
30
|
+
"█ █ █████ █ █ █████",
|
|
31
|
+
" █ █ █ █ ██ █ █ ",
|
|
32
|
+
" █ █ █ █ █ █ ████ ",
|
|
33
|
+
" █ █ █ █ █ ██ █ ",
|
|
34
|
+
"█ █ █████ █ █ █████",
|
|
35
|
+
],
|
|
36
|
+
graphite: [
|
|
37
|
+
"X X OOOOO N N EEEEE",
|
|
38
|
+
" X X O O NN N E ",
|
|
39
|
+
" X O O N N N EEEE ",
|
|
40
|
+
" X X O O N NN E ",
|
|
41
|
+
"X X OOOOO N N EEEEE",
|
|
42
|
+
],
|
|
43
|
+
ember: [
|
|
44
|
+
"╲ ╱ ╭─╮ ╱╲╱╲ ════",
|
|
45
|
+
" ╳ │ │ │╲ │ ══ ",
|
|
46
|
+
"╱ ╲ ╰─╯ │ ╲ │ ════",
|
|
47
|
+
],
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=logo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logo.js","sourceRoot":"","sources":["../../../src/cli/tui/logo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,SAAS,GAAsB;IAC1C,4BAA4B;IAC5B,4BAA4B;IAC5B,4BAA4B;IAC5B,4BAA4B;IAC5B,4BAA4B;CAC7B,CAAC;AAEF,0FAA0F;AAC1F,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE;QACL,4BAA4B;QAC5B,4BAA4B;QAC5B,4BAA4B;QAC5B,4BAA4B;QAC5B,4BAA4B;KAC7B;IACD,QAAQ,EAAE;QACR,4BAA4B;QAC5B,4BAA4B;QAC5B,4BAA4B;QAC5B,4BAA4B;QAC5B,4BAA4B;KAC7B;IACD,QAAQ,EAAE;QACR,4BAA4B;QAC5B,4BAA4B;QAC5B,4BAA4B;QAC5B,4BAA4B;QAC5B,4BAA4B;KAC7B;IACD,KAAK,EAAE;QACL,uBAAuB;QACvB,uBAAuB;QACvB,wBAAwB;KACzB;CACO,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function crearPielTui(store, modeloActual) {
|
|
2
|
+
return {
|
|
3
|
+
token: (texto) => store.token(texto),
|
|
4
|
+
cerrarLinea: () => store.cerrarLinea(),
|
|
5
|
+
linea: (texto) => store.linea(texto),
|
|
6
|
+
pausa: (_pendientes) => store.pausa(),
|
|
7
|
+
fin: (ms) => store.fin(ms, modeloActual?.()),
|
|
8
|
+
fase: (texto) => store.fase(texto),
|
|
9
|
+
// En TUI el panel de avisos no existe: el repintado es total y el aviso es una
|
|
10
|
+
// línea de sistema más.
|
|
11
|
+
notificacion: (texto) => store.linea(texto, "sistema"),
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=pielTui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pielTui.js","sourceRoot":"","sources":["../../../src/cli/tui/pielTui.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,YAAY,CAAC,KAAY,EAAE,YAA2B;IACpE,OAAO;QACL,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;QACpC,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE;QACtC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;QACpC,KAAK,EAAE,CAAC,WAAoC,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE;QAC9D,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,CAAC;QAC5C,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAClC,+EAA+E;QAC/E,wBAAwB;QACxB,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC;KACvD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* El ratón y los modos de terminal de la TUI. TypeScript puro: sin ink.
|
|
3
|
+
*
|
|
4
|
+
* La rueda del ratón la recibe el TERMINAL, no la aplicación, y mueve el scrollback
|
|
5
|
+
* entero — «todo scrollea», medido con el usuario. Para que mueva el panel central hay que
|
|
6
|
+
* pedirle al terminal los eventos de ratón (seguimiento SGR) y, como Ink lee stdin y
|
|
7
|
+
* trataría esas secuencias como teclas (acabarían como texto en la Entrada), el filtro
|
|
8
|
+
* va DELANTE de Ink: `crearStdinSinRaton` envuelve el stdin real con la superficie que
|
|
9
|
+
* Ink usa, quita el ratón y entrega las muescas de rueda por un emisor.
|
|
10
|
+
*
|
|
11
|
+
* La pantalla alternativa (la de vim o htop) va en el mismo sitio porque persigue lo
|
|
12
|
+
* mismo: mientras xonecode corre no hay scrollback que mover, y al salir el terminal
|
|
13
|
+
* recupera lo que tenía. Los modos SOLO se escriben con stdout TTY: sin él, ni un escape.
|
|
14
|
+
*/
|
|
15
|
+
import { EventEmitter } from "node:events";
|
|
16
|
+
// Las secuencias viven en tema.ts: es el ÚNICO fichero de producción con escapes ANSI
|
|
17
|
+
// (tema.test.ts lo vigila), y estas son control de terminal como `arriba` o `limpiarLinea`.
|
|
18
|
+
import { MODOS_DE_TERMINAL } from "../tema.js";
|
|
19
|
+
/** Las secuencias de modo, tal cual se escriben en stdout. */
|
|
20
|
+
export const MODOS = MODOS_DE_TERMINAL;
|
|
21
|
+
/** Una secuencia SGR completa (`ESC [ < b ; x ; y M|m`) o una X10 (`ESC [ M` + 3 bytes). */
|
|
22
|
+
const SECUENCIA = /\x1b\[<(\d+);\d+;\d+[Mm]|\x1b\[M[\s\S]{3}/g;
|
|
23
|
+
/** Un prefijo de secuencia SGR o X10 que se quedó a medias al final del chunk. */
|
|
24
|
+
const PREFIJO_INCOMPLETO = /\x1b(\[(<[\d;]*|M[\s\S]{0,2})?)?$/;
|
|
25
|
+
/** Los bits de modificador que el terminal suma al botón: shift 4, alt 8, ctrl 16. */
|
|
26
|
+
const MODIFICADORES = 4 | 8 | 16;
|
|
27
|
+
/**
|
|
28
|
+
* Separa un chunk de stdin en teclas (lo que Ink debe ver), muescas de rueda (+1 arriba,
|
|
29
|
+
* -1 abajo, sumadas) y el prefijo incompleto que hay que pegar al chunk siguiente.
|
|
30
|
+
* Pura y total: lo que no es ratón pasa tal cual, incluidos un ESC solo y las flechas.
|
|
31
|
+
*/
|
|
32
|
+
export function separarRaton(entrada) {
|
|
33
|
+
let rueda = 0;
|
|
34
|
+
const sinRaton = entrada.replace(SECUENCIA, (_, boton) => {
|
|
35
|
+
if (boton !== undefined) {
|
|
36
|
+
const base = Number(boton) & ~MODIFICADORES;
|
|
37
|
+
if (base === 64)
|
|
38
|
+
rueda += 1;
|
|
39
|
+
else if (base === 65)
|
|
40
|
+
rueda -= 1;
|
|
41
|
+
}
|
|
42
|
+
return "";
|
|
43
|
+
});
|
|
44
|
+
// Un ESC a secas es la tecla Escape, y `ESC [ A` una flecha: solo es prefijo de ratón lo
|
|
45
|
+
// que ya ha abierto `ESC [ <` o `ESC [ M` — el grupo 2 del patrón.
|
|
46
|
+
const m = PREFIJO_INCOMPLETO.exec(sinRaton);
|
|
47
|
+
const resto = m !== null && m[2] !== undefined ? m[0] : "";
|
|
48
|
+
return { teclas: sinRaton.slice(0, sinRaton.length - resto.length), rueda, resto };
|
|
49
|
+
}
|
|
50
|
+
/** Un emisor mínimo de muescas: quien monta lo crea, el filtro emite, el Transcript se suscribe. */
|
|
51
|
+
export function crearEmisorDeRueda() {
|
|
52
|
+
const suscriptores = [];
|
|
53
|
+
return {
|
|
54
|
+
emitir(delta) {
|
|
55
|
+
for (const s of [...suscriptores])
|
|
56
|
+
s(delta);
|
|
57
|
+
},
|
|
58
|
+
suscribir(f) {
|
|
59
|
+
suscriptores.push(f);
|
|
60
|
+
return () => {
|
|
61
|
+
const i = suscriptores.lastIndexOf(f);
|
|
62
|
+
if (i !== -1)
|
|
63
|
+
suscriptores.splice(i, 1);
|
|
64
|
+
};
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* El stdin que se le da a Ink: el real, con el ratón quitado. Lee del real en cada
|
|
70
|
+
* `readable`, guarda las teclas en una cola y emite su propio `readable` SOLO si hay
|
|
71
|
+
* teclas (un chunk que era solo ratón no despierta a Ink). Todo lo demás se delega.
|
|
72
|
+
*/
|
|
73
|
+
export function crearStdinSinRaton(real, alRueda) {
|
|
74
|
+
const cola = [];
|
|
75
|
+
let resto = "";
|
|
76
|
+
const filtrado = new EventEmitter();
|
|
77
|
+
Object.defineProperty(filtrado, "isTTY", { get: () => real.isTTY, enumerable: true });
|
|
78
|
+
filtrado.read = () => cola.shift() ?? null;
|
|
79
|
+
filtrado.setRawMode = (modo) => real.setRawMode(modo);
|
|
80
|
+
filtrado.setEncoding = (c) => real.setEncoding(c);
|
|
81
|
+
filtrado.resume = () => real.resume();
|
|
82
|
+
filtrado.pause = () => real.pause();
|
|
83
|
+
filtrado.ref = () => real.ref();
|
|
84
|
+
filtrado.unref = () => real.unref();
|
|
85
|
+
real.on("readable", () => {
|
|
86
|
+
let hayTeclas = false;
|
|
87
|
+
let chunk;
|
|
88
|
+
while ((chunk = real.read()) !== null) {
|
|
89
|
+
const separado = separarRaton(resto + String(chunk));
|
|
90
|
+
resto = separado.resto;
|
|
91
|
+
if (separado.rueda !== 0)
|
|
92
|
+
alRueda(separado.rueda);
|
|
93
|
+
if (separado.teclas !== "") {
|
|
94
|
+
cola.push(separado.teclas);
|
|
95
|
+
hayTeclas = true;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (hayTeclas)
|
|
99
|
+
filtrado.emit("readable");
|
|
100
|
+
});
|
|
101
|
+
return filtrado;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Entra en los modos (pantalla alternativa y, si se pide, ratón) y devuelve la salida,
|
|
105
|
+
* idempotente. Sin `isTTY` no escribe nada: los tests con stdout falso y las tuberías
|
|
106
|
+
* siguen byte-idénticos. La salida deshace en orden inverso, y quien la llama debe
|
|
107
|
+
* hacerlo DESPUÉS de desmontar Ink, para que el último frame no caiga fuera de la pantalla
|
|
108
|
+
* alternativa.
|
|
109
|
+
*/
|
|
110
|
+
export function entrarEnModos(stdout, opciones) {
|
|
111
|
+
if (stdout.isTTY !== true)
|
|
112
|
+
return () => { };
|
|
113
|
+
stdout.write(MODOS.entrarPantallaAlternativa);
|
|
114
|
+
if (opciones.raton)
|
|
115
|
+
stdout.write(MODOS.activarRaton);
|
|
116
|
+
let salido = false;
|
|
117
|
+
return () => {
|
|
118
|
+
if (salido)
|
|
119
|
+
return;
|
|
120
|
+
salido = true;
|
|
121
|
+
if (opciones.raton)
|
|
122
|
+
stdout.write(MODOS.desactivarRaton);
|
|
123
|
+
stdout.write(MODOS.salirPantallaAlternativa);
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=raton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raton.js","sourceRoot":"","sources":["../../../src/cli/tui/raton.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* La sidebar: lo que conviene tener delante sin pedirlo. Los datos entran por props —
|
|
4
|
+
* quien compone la sesión los resuelve (tope por `topeResuelto`, rama por git) y este
|
|
5
|
+
* componente solo pinta. El porcentaje SOLO con tope: la regla de `core/contextos.ts`.
|
|
6
|
+
*/
|
|
7
|
+
import { Box, Text } from "ink";
|
|
8
|
+
import { temaInk, temaInkActivo } from "./temaInk.js";
|
|
9
|
+
// El MISMO formato compacto que stdio (`cli/tokens.ts`): dos pieles, una cifra.
|
|
10
|
+
import { compacto, formatearTope } from "../tokens.js";
|
|
11
|
+
import { LOGOS_XONE } from "./logo.js";
|
|
12
|
+
/**
|
|
13
|
+
* El porcentaje de contexto, o `undefined` si no hay tope que dividir. La regla de
|
|
14
|
+
* `core/contextos.ts` («porcentaje SOLO con tope») en UNA función: la sidebar y el pie
|
|
15
|
+
* la enseñan en dos sitios, y dos copias de la misma cuenta se separan tarde o temprano.
|
|
16
|
+
* Un tope 0 es un tope que no se sabe: dividir daría `Infinity`, no un dato. Un
|
|
17
|
+
* porcentaje definido implica, pues, un tope definido: por eso los llamadores pueden
|
|
18
|
+
* afirmarlo al formatear el denominador.
|
|
19
|
+
*/
|
|
20
|
+
export function porcentaje(contexto, tope) {
|
|
21
|
+
if (tope === undefined || tope <= 0)
|
|
22
|
+
return undefined;
|
|
23
|
+
return Math.round((contexto / tope) * 100);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* La regla de anchura, copiada de OpenCode (`packages/tui/src/routes/session/index.tsx`):
|
|
27
|
+
* la sidebar NO se redimensiona — mide fijo y aparece solo con MÁS de 120 columnas de
|
|
28
|
+
* terminal (estricto, como allí). Por debajo, el transcript se queda con todo el ancho y
|
|
29
|
+
* el pie enseña `ruta:rama`. Quien decide es `App`, que es quien conoce `stdout.columns`.
|
|
30
|
+
*/
|
|
31
|
+
export const ANCHO_DE_SIDEBAR = 42;
|
|
32
|
+
export const ANCHO_MINIMO_PARA_SIDEBAR = 120;
|
|
33
|
+
export function cabeSidebar(columnas) {
|
|
34
|
+
return columnas > ANCHO_MINIMO_PARA_SIDEBAR;
|
|
35
|
+
}
|
|
36
|
+
export function Sidebar(d) {
|
|
37
|
+
const pct = porcentaje(d.contexto, d.tope);
|
|
38
|
+
const tokenIn = d.tokenIn ?? 0;
|
|
39
|
+
const tokenOut = d.tokenOut ?? 0;
|
|
40
|
+
const anchoInterior = ANCHO_DE_SIDEBAR - 4;
|
|
41
|
+
const fondo = temaInk.fondoSidebar;
|
|
42
|
+
const logos = LOGOS_XONE[temaInkActivo()];
|
|
43
|
+
const textoContexto = `Contexto ${compacto(d.contexto)}` +
|
|
44
|
+
(pct !== undefined ? `/${formatearTope(d.tope)} (${pct}%)` : " tokens");
|
|
45
|
+
const lineasTokens = (tokenIn > 0 ? 1 : 0) + (tokenOut > 0 ? 1 : 0) + (d.contexto > 0 ? 1 : 0);
|
|
46
|
+
const lineasRoles = Object.keys(d.modelosPorPapel).filter((papel) => papel !== "trabajo").length;
|
|
47
|
+
// Dos líneas de cabecera, logo, aire tras logo, posible bloque de tokens, bloque de
|
|
48
|
+
// modelo y pie. El resto se pinta explícitamente con fondo: Ink solo permite fondos
|
|
49
|
+
// sobre Text, no sobre Box, y el hueco no puede volver a confundirse con transcript.
|
|
50
|
+
const lineasOcupadas = 2 + logos.length + 1 + (lineasTokens > 0 ? 1 + lineasTokens + 1 : 0) + 2 + lineasRoles + 1;
|
|
51
|
+
const huecos = d.altura === undefined ? 0 : Math.max(0, d.altura - lineasOcupadas);
|
|
52
|
+
return (
|
|
53
|
+
// flexGrow para llenar la columna: el separador de abajo empuja el pie al fondo.
|
|
54
|
+
_jsxs(Box, { flexDirection: "column", flexGrow: 1, children: [_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { backgroundColor: temaInk.marca, bold: true, children: ` ${d.proyecto}`.padEnd(anchoInterior, " ") }), _jsx(Text, { backgroundColor: fondo, color: temaInk.mudo, wrap: "truncate-end", children: (d.rama !== undefined ? `${d.ruta}:${d.rama}` : d.ruta).padEnd(anchoInterior, " ") }), logos.map((fila, i) => (_jsx(Text, { backgroundColor: fondo, color: temaInk.acento, children: fila.padEnd(anchoInterior, " ") }, i)))] }), tokenIn > 0 || tokenOut > 0 || d.contexto > 0 ? (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { backgroundColor: fondo, bold: true, color: temaInk.acento, children: "Tokens".padEnd(anchoInterior, " ") }), tokenIn > 0 ? _jsx(Text, { backgroundColor: fondo, children: `Token In ${compacto(tokenIn)}`.padEnd(anchoInterior, " ") }) : null, tokenOut > 0 ? _jsx(Text, { backgroundColor: fondo, children: `Token Out ${compacto(tokenOut)}`.padEnd(anchoInterior, " ") }) : null, d.contexto > 0 ? (_jsx(Text, { backgroundColor: fondo, color: temaInk.mudo, children: textoContexto.padEnd(anchoInterior, " ") })) : null] })) : null, _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { backgroundColor: fondo, bold: true, color: temaInk.acento, children: "Modelo".padEnd(anchoInterior, " ") }), _jsx(Text, { backgroundColor: fondo, wrap: "truncate-end", children: d.modelo.padEnd(anchoInterior, " ") }), Object.entries(d.modelosPorPapel)
|
|
55
|
+
.filter(([papel]) => papel !== "trabajo")
|
|
56
|
+
.map(([papel, m]) => (_jsx(Text, { backgroundColor: fondo, color: temaInk.mudo, wrap: "truncate-end", children: `${papel}: ${m}`.padEnd(anchoInterior, " ") }, papel)))] }), _jsx(Box, { flexGrow: 1, flexDirection: "column", children: Array.from({ length: huecos }, (_, i) => (_jsx(Text, { backgroundColor: fondo, children: " ".repeat(anchoInterior) }, i))) }), _jsx(Box, { flexDirection: "column", children: _jsxs(Text, { backgroundColor: fondo, wrap: "truncate-end", children: [_jsx(Text, { color: temaInk.exito, children: "● " }), _jsx(Text, { color: temaInk.mudo, children: `xonecode ${d.version}` }), " ".repeat(anchoInterior)] }) })] }));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* El pie a dos extremos: la ruta a la izquierda; a la derecha las cifras de contexto y
|
|
60
|
+
* el recordatorio de `/ayuda`. Pura, para probar la composición sin montar Ink (mismo
|
|
61
|
+
* patrón que `ventanaDe` en transcript.tsx). `cifras` vive aparte de `derecha` porque
|
|
62
|
+
* se pinta en mudo y `/ayuda` en texto; `derecha` es la línea completa, para los tests.
|
|
63
|
+
* Porcentaje SOLO con tope, y sin medición (`contexto === 0`) ninguna cifra: las dos
|
|
64
|
+
* reglas de `core/contextos.ts` y de la sidebar. `rama` llega solo cuando NO hay
|
|
65
|
+
* sidebar que la enseñe (terminal estrecho): entonces la izquierda es `ruta:rama`.
|
|
66
|
+
*/
|
|
67
|
+
export function pie(d) {
|
|
68
|
+
let cifras = "";
|
|
69
|
+
if (d.contexto > 0) {
|
|
70
|
+
const pct = porcentaje(d.contexto, d.tope);
|
|
71
|
+
cifras = pct !== undefined ? `${compacto(d.contexto)} (${pct}%)` : `${compacto(d.contexto)} tokens`;
|
|
72
|
+
}
|
|
73
|
+
const izquierda = d.rama !== undefined ? `${d.ruta}:${d.rama}` : d.ruta;
|
|
74
|
+
return { izquierda, cifras, derecha: cifras === "" ? "/ayuda" : `${cifras} /ayuda` };
|
|
75
|
+
}
|
|
76
|
+
export function BarraDeEstado(d) {
|
|
77
|
+
const p = pie(d);
|
|
78
|
+
return (
|
|
79
|
+
// `flexShrink={0}` en el pie: la fila de columnas tiene altura fija y el pie NO es
|
|
80
|
+
// lo que cede — cede el transcript. Dentro, al revés: la ruta encoge (y se trunca
|
|
81
|
+
// por DELANTE, que la cola es la que identifica el proyecto) y las cifras no, para
|
|
82
|
+
// que un pie estrecho no se coma «/ayuda». El `marginLeft` deja el hueco que evita
|
|
83
|
+
// que una ruta truncada quede pegada a las cifras.
|
|
84
|
+
_jsxs(Box, { justifyContent: "space-between", flexShrink: 0, children: [_jsx(Box, { flexShrink: 1, minWidth: 0, children: _jsx(Text, { color: temaInk.mudo, wrap: "truncate-start", children: p.izquierda }) }), _jsxs(Box, { flexShrink: 0, marginLeft: 1, children: [p.cifras !== "" ? _jsx(Text, { color: temaInk.mudo, children: `${p.cifras} ` }) : null, _jsx(Text, { color: temaInk.texto, children: "/ayuda" })] })] }));
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=sidebar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar.js","sourceRoot":"","sources":["../../../src/cli/tui/sidebar.tsx"],"names":[],"mappings":"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"}
|