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,478 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* El montaje de la TUI: la Consola que la app Ink implementa y el arranque/desmontaje.
|
|
3
|
+
* Todo lo demás (el lazo de comandos, el estado de sesión, el ejecutor real) es EL MISMO de
|
|
4
|
+
* `consola.ts` y `main.ts` — entra INYECTADO, porque `main.ts` importa este fichero y un
|
|
5
|
+
* import al revés sería un ciclo: la TUI solo aporta piel, entrada, preguntas y
|
|
6
|
+
* aprobaciones.
|
|
7
|
+
*/
|
|
8
|
+
import { readFileSync } from "node:fs";
|
|
9
|
+
import { randomUUID } from "node:crypto";
|
|
10
|
+
import { basename, sep } from "node:path";
|
|
11
|
+
import { homedir } from "node:os";
|
|
12
|
+
import { execFileSync } from "node:child_process";
|
|
13
|
+
import { render } from "ink";
|
|
14
|
+
import { createElement } from "react";
|
|
15
|
+
import { createTokenTracker } from "../../vendor/tokenTracking.js";
|
|
16
|
+
import { PAPELES, resolver } from "../../core/modelos.js";
|
|
17
|
+
import { PISTA_DE_DECISION } from "../aprobar.js";
|
|
18
|
+
import { ficherosDelProyecto } from "../../agent/turnoReal.js";
|
|
19
|
+
import { inspeccionar } from "../../agent/entorno.js";
|
|
20
|
+
import { correrConsola, configurarModoInicial, crearCompleter, ejecutarTurnoGuionizado, hayCredencial, hayEstadoDeProyecto, MENSAJE_BIENVENIDA, MENSAJE_REANUDANDO, PETICION_REANUDAR_PROYECTO, } from "../consola.js";
|
|
21
|
+
import { asistenteDeModelo } from "../wizardInicial.js";
|
|
22
|
+
import { guardarCredencial } from "../../agent/authEnDisco.js";
|
|
23
|
+
import { aplicarCredencialAlProceso, cargar } from "../../agent/configEnDisco.js";
|
|
24
|
+
import { modeloDeAcuse } from "../acuseDeModelo.js";
|
|
25
|
+
import { crearStore, crearRanura, vistaInicial } from "./store.js";
|
|
26
|
+
import { crearPielTui } from "./pielTui.js";
|
|
27
|
+
import { aplicarTemaInk } from "./temaInk.js";
|
|
28
|
+
import { seleccionarTema, temaActivo } from "../tema.js";
|
|
29
|
+
import { pedirDecisionesTui } from "./aprobarTui.js";
|
|
30
|
+
import { App } from "./app.js";
|
|
31
|
+
import { crearEmisorDeRueda, crearStdinSinRaton, entrarEnModos } from "./raton.js";
|
|
32
|
+
/**
|
|
33
|
+
* La raíz con el HOME abreviado a `~`, para el pie: `/Users/x/dev/MinitMT` sale como
|
|
34
|
+
* `~/dev/MinitMT`. La ruta absoluta entera es ruido —y en una captura de pantalla, el
|
|
35
|
+
* nombre de usuario— y el pie tiene sitio contado. Pura, con `home` inyectable: así se
|
|
36
|
+
* prueba sin depender del HOME de quien corre los tests.
|
|
37
|
+
*
|
|
38
|
+
* Solo el PREFIJO, y solo si es el home entero o el home seguido de separador:
|
|
39
|
+
* `/Users/xy` no empieza por `/Users/x` como carpeta, aunque sí como texto.
|
|
40
|
+
*/
|
|
41
|
+
export function abreviarHome(ruta, home = homedir()) {
|
|
42
|
+
if (ruta === home)
|
|
43
|
+
return "~";
|
|
44
|
+
if (home !== "" && ruta.startsWith(home + sep))
|
|
45
|
+
return `~${ruta.slice(home.length)}`;
|
|
46
|
+
return ruta;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* La versión, para la sidebar. Tres niveles arriba tanto desde `src/cli/tui/` (tsx en
|
|
50
|
+
* desarrollo) como desde `dist/cli/tui/` (el build): misma profundidad, misma lectura.
|
|
51
|
+
*/
|
|
52
|
+
function versionDePaquete() {
|
|
53
|
+
try {
|
|
54
|
+
const paquete = JSON.parse(readFileSync(new URL("../../../package.json", import.meta.url), "utf8"));
|
|
55
|
+
return paquete.version ?? "?";
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return "?";
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const VERSION = versionDePaquete();
|
|
62
|
+
/**
|
|
63
|
+
* La rama git del proyecto, leída UNA vez al montar (una sesión no cambia de rama sin
|
|
64
|
+
* que el agente pase por ahí, y refrescarla en cada repintado sería un `git` por frame).
|
|
65
|
+
* Un fallo —no es repo, no hay git— es simplemente «sin rama»: la sidebar la omite.
|
|
66
|
+
*/
|
|
67
|
+
function ramaDeGit(raiz) {
|
|
68
|
+
try {
|
|
69
|
+
return (execFileSync("git", ["rev-parse", "--abbrev-ref", "HEAD"], {
|
|
70
|
+
cwd: raiz,
|
|
71
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
72
|
+
})
|
|
73
|
+
.toString()
|
|
74
|
+
.trim() || undefined);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* La envoltura de ocupación: un turno más, Ctrl-C pasa a cancelarlo y la Entrada puede
|
|
82
|
+
* encolar seguimiento. Exportada para probarla sin montar Ink — y aplicada a LOS DOS caminos de
|
|
83
|
+
* ejecutor (el real y el guionizado por omisión): `--guion` fuerza `crearEjecutor` a
|
|
84
|
+
* undefined, y un envoltorio solo para la rama real dejaba el turno guionizado sin
|
|
85
|
+
* ocupación nunca.
|
|
86
|
+
*/
|
|
87
|
+
export function envolverConOcupacion(ejecutor, ocupar) {
|
|
88
|
+
return (peticion, estadoTurno, consolaTurno) => {
|
|
89
|
+
ocupar(true);
|
|
90
|
+
return ejecutor(peticion, estadoTurno, consolaTurno).finally(() => ocupar(false));
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* La Consola completa que la TUI implementa: una cola async de líneas (lo que entra por
|
|
95
|
+
* la Entrada), un `escribir` que cae en el store, la piel TUI, las preguntas por la
|
|
96
|
+
* misma entrada y las aprobaciones por el modal. Devuelve también las piezas que `App`
|
|
97
|
+
* necesita pintar, porque todas comparten ESTE cierre (store, cola, historial): quien
|
|
98
|
+
* reparte a mano acabarían siendo dos mundos.
|
|
99
|
+
*/
|
|
100
|
+
export function crearConsolaTui(opciones) {
|
|
101
|
+
const { raiz, fuentes = {}, rama, topeDe, catalogoModelos, guardarModeloGlobal, guardarTemaDeProyecto, conectarCloudStudio, guardarCloudStudioDeProyecto, guardarModoDeProyecto, guardarProyectoCloudStudioDeProyecto, ramasDeCloudStudio, guardarRamaDeProyecto, guardarModelosDeProyecto, sincronizar, } = opciones;
|
|
102
|
+
const store = crearStore();
|
|
103
|
+
const vista = crearRanura(vistaInicial());
|
|
104
|
+
// main ya resolvió el tema del config de proyecto antes de cargar Ink.
|
|
105
|
+
aplicarTemaInk(temaActivo());
|
|
106
|
+
// La cola de `lineas`: lo que la Entrada envía y `correrConsola` consume. Si nadie
|
|
107
|
+
// espera todavía, la línea espera en `cola`; si hay un `next` colgado, se despierta.
|
|
108
|
+
const cola = [];
|
|
109
|
+
const esperando = [];
|
|
110
|
+
// Contrato de Entrada: historial[0] es la MÁS RECIENTE. Se guarda ya invertido y se
|
|
111
|
+
// pasa por REFERENCIA (la app lo lee en cada render, no una copia congelada).
|
|
112
|
+
const historial = [];
|
|
113
|
+
// Lo que la sidebar enseña. `tracker` empieza en cero y se REASIGNA al de la sesión
|
|
114
|
+
// real cuando el ejecutor la abre (mismo patrón que `entrarEnConsola`); el modelo
|
|
115
|
+
// cambia EN CALIENTE con /modelo, y el eco de `escribir` es la única costura que
|
|
116
|
+
// tienen los manejadores de consola.ts para avisar — las mismas frases que stdio.
|
|
117
|
+
const elegido = resolver(fuentes).trabajo;
|
|
118
|
+
let modeloTrabajo = `${elegido.proveedor}/${elegido.modelo}`;
|
|
119
|
+
const papeles = { trabajo: modeloTrabajo };
|
|
120
|
+
let tracker = createTokenTracker();
|
|
121
|
+
let cancelarReal;
|
|
122
|
+
let cancelarPendiente = false;
|
|
123
|
+
const cancelarTurno = () => {
|
|
124
|
+
cancelarPendiente = true;
|
|
125
|
+
cancelarReal?.();
|
|
126
|
+
};
|
|
127
|
+
const enviar = (linea) => {
|
|
128
|
+
const enCola = vista.ver().ocupado;
|
|
129
|
+
historial.unshift(linea);
|
|
130
|
+
// Salir no puede quedarse detrás de una llamada al modelo que ya no progresa. Se
|
|
131
|
+
// descartan los seguimientos y se deja este comando el primero que verá el lazo tras
|
|
132
|
+
// abortar el stream activo.
|
|
133
|
+
if (enCola && linea.trim() === "/salir") {
|
|
134
|
+
cola.length = 0;
|
|
135
|
+
cola.push({ linea, diferida: false });
|
|
136
|
+
vista.mutar({ enCola: [] });
|
|
137
|
+
cancelarTurno();
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
// El eco de lo escrito: el turno no repite la petición, y el transcript se lo debe
|
|
141
|
+
// a quien la tecleó, no al motor.
|
|
142
|
+
// Una petición diferida NO entra aún en el transcript: el turno actual puede seguir
|
|
143
|
+
// escribiendo durante minutos y separaría su futura respuesta de la pregunta.
|
|
144
|
+
if (enCola) {
|
|
145
|
+
cola.push({ linea, diferida: true });
|
|
146
|
+
vista.mutar({ enCola: [...vista.ver().enCola, linea] });
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
store.usuario(linea);
|
|
150
|
+
const despertar = esperando.shift();
|
|
151
|
+
if (despertar !== undefined)
|
|
152
|
+
despertar({ value: linea, done: false });
|
|
153
|
+
else
|
|
154
|
+
cola.push({ linea, diferida: false });
|
|
155
|
+
};
|
|
156
|
+
// La piel conserva este punto cooperativo para el guionizado; la sesión real además
|
|
157
|
+
// recibe un AbortSignal, que corta incluso si el modelo no produce más eventos.
|
|
158
|
+
const puntoDeCancelacion = () => {
|
|
159
|
+
if (!cancelarPendiente)
|
|
160
|
+
return;
|
|
161
|
+
cancelarPendiente = false;
|
|
162
|
+
throw new Error("turno cancelado (Ctrl-C)");
|
|
163
|
+
};
|
|
164
|
+
const detectarCambiosDeModelo = (texto) => {
|
|
165
|
+
// El acuse de /modelo se escribe y se lee por el MISMO módulo que `consola.ts`
|
|
166
|
+
// (`acuseDeModelo.ts`): aquí solo se le aplica a la sidebar.
|
|
167
|
+
const acuse = modeloDeAcuse(texto);
|
|
168
|
+
if (acuse === undefined)
|
|
169
|
+
return;
|
|
170
|
+
if (acuse.papel === undefined) {
|
|
171
|
+
modeloTrabajo = acuse.modelo;
|
|
172
|
+
for (const p of PAPELES)
|
|
173
|
+
papeles[p] = modeloTrabajo;
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
papeles[acuse.papel] = acuse.modelo;
|
|
177
|
+
if (acuse.papel === "trabajo")
|
|
178
|
+
modeloTrabajo = acuse.modelo;
|
|
179
|
+
};
|
|
180
|
+
const consola = {
|
|
181
|
+
interactivo: true,
|
|
182
|
+
lineas: {
|
|
183
|
+
[Symbol.asyncIterator]() {
|
|
184
|
+
return {
|
|
185
|
+
next: () => cola.length > 0
|
|
186
|
+
? Promise.resolve().then(() => {
|
|
187
|
+
const entrada = cola.shift();
|
|
188
|
+
if (entrada.diferida) {
|
|
189
|
+
store.usuario(entrada.linea);
|
|
190
|
+
vista.mutar({ enCola: vista.ver().enCola.slice(1) });
|
|
191
|
+
}
|
|
192
|
+
return { value: entrada.linea, done: false };
|
|
193
|
+
})
|
|
194
|
+
: new Promise((resuelto) => esperando.push(resuelto)),
|
|
195
|
+
};
|
|
196
|
+
},
|
|
197
|
+
},
|
|
198
|
+
catalogoModelos,
|
|
199
|
+
guardarModeloGlobal,
|
|
200
|
+
guardarTemaDeProyecto,
|
|
201
|
+
conectarCloudStudio,
|
|
202
|
+
guardarCloudStudioDeProyecto,
|
|
203
|
+
guardarModoDeProyecto,
|
|
204
|
+
guardarProyectoCloudStudioDeProyecto,
|
|
205
|
+
ramasDeCloudStudio,
|
|
206
|
+
guardarRamaDeProyecto,
|
|
207
|
+
guardarModelosDeProyecto,
|
|
208
|
+
sincronizar,
|
|
209
|
+
aplicarTema: (tema) => {
|
|
210
|
+
seleccionarTema(tema);
|
|
211
|
+
aplicarTemaInk(tema);
|
|
212
|
+
// La paleta Ink es un objeto estable; esta mutación observable obliga a React a
|
|
213
|
+
// repintar todos los consumidores que lo importan.
|
|
214
|
+
vista.mutar({ ocupado: vista.ver().ocupado });
|
|
215
|
+
},
|
|
216
|
+
seleccionar: async (selector) => new Promise((resuelto) => {
|
|
217
|
+
vista.mutar({
|
|
218
|
+
selector: {
|
|
219
|
+
...selector,
|
|
220
|
+
responder: resuelto,
|
|
221
|
+
},
|
|
222
|
+
});
|
|
223
|
+
}),
|
|
224
|
+
escribir: (texto) => {
|
|
225
|
+
// El guard cubre whitespace, no solo la cadena vacía: un `escribir("\n")`
|
|
226
|
+
// (la forma de «línea sin contenido») partía en un acto sistema vacío.
|
|
227
|
+
if (texto.trim() === "")
|
|
228
|
+
return;
|
|
229
|
+
detectarCambiosDeModelo(texto);
|
|
230
|
+
// El chunk de consola puede traer varias líneas (los comandos escriben bloques):
|
|
231
|
+
// cada una es un acto, como lo sería en el scrollback de stdio.
|
|
232
|
+
for (const linea of texto.replace(/\n$/, "").split("\n"))
|
|
233
|
+
store.linea(linea, "sistema");
|
|
234
|
+
},
|
|
235
|
+
preguntar: async (pregunta, decision) => {
|
|
236
|
+
// El enunciado queda en el transcript (como el prompt de stdio) y la respuesta
|
|
237
|
+
// entra por la misma TUI: un solo teclado a la vez. La pista de tecleo la añade
|
|
238
|
+
// esta piel y no quien pregunta —ver `PISTA_DE_DECISION`—, porque es la pista de
|
|
239
|
+
// un sitio donde se escribe, y eso solo lo sabe la piel que tiene el teclado.
|
|
240
|
+
const enunciado = decision === undefined ? pregunta : `${pregunta}${PISTA_DE_DECISION}`;
|
|
241
|
+
store.linea(enunciado, "sistema");
|
|
242
|
+
return new Promise((resuelto) => {
|
|
243
|
+
vista.mutar({ pregunta: { texto: enunciado, oculto: false, responder: resuelto } });
|
|
244
|
+
});
|
|
245
|
+
},
|
|
246
|
+
leerSecreto: async (pregunta) => {
|
|
247
|
+
store.linea(pregunta, "sistema");
|
|
248
|
+
return new Promise((resuelto) => {
|
|
249
|
+
vista.mutar({ pregunta: { texto: pregunta, oculto: true, responder: resuelto } });
|
|
250
|
+
});
|
|
251
|
+
},
|
|
252
|
+
piel: () => {
|
|
253
|
+
// REARME por turno: ambos ejecutores (real y guionizado) llaman `piel()` UNA vez
|
|
254
|
+
// al empezar el turno y antes de ningún acto, así que este es el inicio exacto del
|
|
255
|
+
// turno nuevo. Una Ctrl-C que aterrizó tarde en el turno ANTERIOR (tras su último
|
|
256
|
+
// acto) muere aquí en vez de matar el primer acto del turno que no la pidió; y una
|
|
257
|
+
// Ctrl-C DURANTE el turno actual vuelve a poner el flag después de este rearme.
|
|
258
|
+
cancelarPendiente = false;
|
|
259
|
+
// El modelo que etiqueta el «■ modelo · Ns» del fin: el de trabajo VIGENTE, leído
|
|
260
|
+
// cuando el fin ocurre (ver pielTui.ts).
|
|
261
|
+
const base = crearPielTui(store, () => modeloTrabajo);
|
|
262
|
+
return {
|
|
263
|
+
token: (t) => {
|
|
264
|
+
puntoDeCancelacion();
|
|
265
|
+
base.token(t);
|
|
266
|
+
},
|
|
267
|
+
linea: (t) => {
|
|
268
|
+
puntoDeCancelacion();
|
|
269
|
+
base.linea(t);
|
|
270
|
+
},
|
|
271
|
+
fase: (t) => {
|
|
272
|
+
puntoDeCancelacion();
|
|
273
|
+
base.fase?.(t);
|
|
274
|
+
},
|
|
275
|
+
fin: (ms) => {
|
|
276
|
+
puntoDeCancelacion();
|
|
277
|
+
base.fin(ms);
|
|
278
|
+
},
|
|
279
|
+
notificacion: (t) => {
|
|
280
|
+
puntoDeCancelacion();
|
|
281
|
+
base.notificacion?.(t);
|
|
282
|
+
},
|
|
283
|
+
// cerrarLinea NUNCA cancela: la llama el `finally` del motor para no dejar la
|
|
284
|
+
// línea de tokens abierta, y un lanzamiento ahí sustituiría el error real.
|
|
285
|
+
cerrarLinea: () => base.cerrarLinea(),
|
|
286
|
+
// En la pausa manda el MODAL: su Ctrl-C ya es fail-closed (rechazo).
|
|
287
|
+
pausa: (p) => base.pausa(p),
|
|
288
|
+
};
|
|
289
|
+
},
|
|
290
|
+
aprobacionesTui: (pendientes, ficheros, diffs) => pedirDecisionesTui(pendientes, ficheros, diffs, (props) => {
|
|
291
|
+
// El cierre del modal es quien sabe que ya no hay nada pendiente: desmonta el
|
|
292
|
+
// modal y rearma el store. Tolerante a doble `alTerminar` (ráfaga de teclas).
|
|
293
|
+
vista.mutar({
|
|
294
|
+
modal: {
|
|
295
|
+
...props,
|
|
296
|
+
alTerminar: (decisiones) => {
|
|
297
|
+
vista.mutar({ modal: null });
|
|
298
|
+
store.rearmar();
|
|
299
|
+
props.alTerminar(decisiones);
|
|
300
|
+
},
|
|
301
|
+
},
|
|
302
|
+
});
|
|
303
|
+
store.pausa();
|
|
304
|
+
}),
|
|
305
|
+
};
|
|
306
|
+
const datosSidebar = () => {
|
|
307
|
+
const tope = topeDe?.(modeloTrabajo);
|
|
308
|
+
return {
|
|
309
|
+
contexto: tracker.contexto,
|
|
310
|
+
tokenIn: tracker.input,
|
|
311
|
+
tokenOut: tracker.output,
|
|
312
|
+
// Un tope 0 es un tope que no se sabe: porcentaje sobre cero es NaN, así que no
|
|
313
|
+
// hay tope — la regla «porcentaje SOLO con tope» de core/contextos.ts.
|
|
314
|
+
tope: tope !== undefined && tope > 0 ? tope : undefined,
|
|
315
|
+
modelo: modeloTrabajo,
|
|
316
|
+
modelosPorPapel: { ...papeles },
|
|
317
|
+
proyecto: basename(raiz),
|
|
318
|
+
ruta: abreviarHome(raiz),
|
|
319
|
+
rama,
|
|
320
|
+
version: VERSION,
|
|
321
|
+
};
|
|
322
|
+
};
|
|
323
|
+
return {
|
|
324
|
+
consola,
|
|
325
|
+
store,
|
|
326
|
+
vista,
|
|
327
|
+
enviar,
|
|
328
|
+
/** Lo que la Entrada/Pregunta llama con la línea final: resuelve la pregunta viva. */
|
|
329
|
+
responder: (linea) => {
|
|
330
|
+
const pregunta = vista.ver().pregunta;
|
|
331
|
+
if (pregunta === null)
|
|
332
|
+
return;
|
|
333
|
+
vista.mutar({ pregunta: null });
|
|
334
|
+
pregunta.responder(linea);
|
|
335
|
+
},
|
|
336
|
+
/** Resuelve el selector visible; Enter entrega un id y Escape `undefined`. */
|
|
337
|
+
seleccionar: (id) => {
|
|
338
|
+
const selector = vista.ver().selector;
|
|
339
|
+
if (selector === null)
|
|
340
|
+
return;
|
|
341
|
+
vista.mutar({ selector: null });
|
|
342
|
+
selector.responder(id);
|
|
343
|
+
},
|
|
344
|
+
/** Ctrl-C durante un turno: la piel del turno en curso lanza en su próximo acto. */
|
|
345
|
+
cancelar: () => {
|
|
346
|
+
cancelarTurno();
|
|
347
|
+
},
|
|
348
|
+
/** La costura por la que el ejecutor real apunta la sidebar a su tracker. */
|
|
349
|
+
alAbrirSesion: (sesion) => {
|
|
350
|
+
tracker = sesion.tracker;
|
|
351
|
+
cancelarReal = () => sesion.cancelar();
|
|
352
|
+
},
|
|
353
|
+
actos: () => store.estado().actos,
|
|
354
|
+
historial,
|
|
355
|
+
// El completer SIN voz propia: `crearCompleter` pinta las pistas él mismo cuando hay
|
|
356
|
+
// varios candidatos, y aquí las pinta la Entrada — escribir nulo, o saldrían dos veces.
|
|
357
|
+
completa: crearCompleter(() => { }, () => ficherosDelProyecto(raiz)),
|
|
358
|
+
datosSidebar,
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
export async function correrConsolaTui(opciones) {
|
|
362
|
+
const { fuentes, raiz, guion, catalogoModelos, guardarModeloGlobal, guardarTemaDeProyecto, conectarCloudStudio, guardarCloudStudioDeProyecto, guardarModoDeProyecto, guardarProyectoCloudStudioDeProyecto, ramasDeCloudStudio, guardarRamaDeProyecto, guardarModelosDeProyecto, sincronizar, inspeccionarProyecto = inspeccionar, ofrecer, crearEjecutor, topeDe, raton = true, asistenteInicial = false, } = opciones;
|
|
363
|
+
const montaje = crearConsolaTui({
|
|
364
|
+
raiz,
|
|
365
|
+
fuentes,
|
|
366
|
+
catalogoModelos,
|
|
367
|
+
guardarModeloGlobal,
|
|
368
|
+
guardarTemaDeProyecto,
|
|
369
|
+
conectarCloudStudio,
|
|
370
|
+
guardarCloudStudioDeProyecto,
|
|
371
|
+
guardarModoDeProyecto,
|
|
372
|
+
guardarProyectoCloudStudioDeProyecto,
|
|
373
|
+
ramasDeCloudStudio,
|
|
374
|
+
guardarRamaDeProyecto,
|
|
375
|
+
guardarModelosDeProyecto,
|
|
376
|
+
sincronizar,
|
|
377
|
+
rama: ramaDeGit(raiz),
|
|
378
|
+
topeDe,
|
|
379
|
+
});
|
|
380
|
+
const { consola, store, vista, enviar, responder, seleccionar, cancelar, completa, historial, datosSidebar } = montaje;
|
|
381
|
+
// Los modos de terminal (pantalla alternativa y ratón) ANTES de montar Ink, para que el
|
|
382
|
+
// primer frame ya caiga en la pantalla alternativa. Sin stdout TTY no escribe nada.
|
|
383
|
+
const conRaton = raton && process.stdin.isTTY === true;
|
|
384
|
+
const salirDeModos = entrarEnModos(process.stdout, { raton: conRaton });
|
|
385
|
+
// «Nunca un terminal roto» también si el proceso muere por una excepción que no pasa
|
|
386
|
+
// por aquí o por un `process.exit()` ajeno: sin esto el usuario se queda en la pantalla
|
|
387
|
+
// alternativa, sin scrollback y con cada clic escupiendo secuencias. `exit` cubre eso
|
|
388
|
+
// (los writes a un TTY son síncronos y llegan antes de morir); no cubre SIGTERM, y
|
|
389
|
+
// Ctrl-C en modo crudo no es SIGINT sino una tecla. `salirDeModos` es idempotente.
|
|
390
|
+
process.once("exit", salirDeModos);
|
|
391
|
+
// El stdin que Ink lee lleva el ratón ya quitado: una secuencia de rueda que llegara a
|
|
392
|
+
// `useInput` acabaría como texto en la Entrada. Sin ratón, el stdin real tal cual.
|
|
393
|
+
const rueda = conRaton ? crearEmisorDeRueda() : undefined;
|
|
394
|
+
const stdin = rueda === undefined ? undefined : crearStdinSinRaton(process.stdin, rueda.emitir);
|
|
395
|
+
// exitOnCtrlC: false OBLIGATORIO — Ctrl-C es un gesto con significado aquí (cancelar
|
|
396
|
+
// el turno, rechazar en el modal), no «mata la app y deja la promesa del modal colgada».
|
|
397
|
+
const instancia = render(createElement(App, {
|
|
398
|
+
store: montaje.store,
|
|
399
|
+
vista,
|
|
400
|
+
alEnviar: enviar,
|
|
401
|
+
responder,
|
|
402
|
+
responderSelector: seleccionar,
|
|
403
|
+
completa,
|
|
404
|
+
historial,
|
|
405
|
+
datosSidebar,
|
|
406
|
+
alCancelarTurno: cancelar,
|
|
407
|
+
rueda,
|
|
408
|
+
}), { exitOnCtrlC: false, ...(stdin === undefined ? {} : { stdin: stdin }) });
|
|
409
|
+
try {
|
|
410
|
+
// El prólogo que `entrarEnConsola` hace en stdio, pero contra la TUI YA montada:
|
|
411
|
+
// los avisos y las preguntas del asistente de creación salen por el store y la
|
|
412
|
+
// ranura de pregunta, no por stdout (que ensuciaría la pantalla de ink).
|
|
413
|
+
//
|
|
414
|
+
// El asistente de cuenta va ANTES del alta de proyecto: es configuración de la
|
|
415
|
+
// persona, no de la carpeta. Aquí (a diferencia de stdio) `consola.seleccionar` SÍ
|
|
416
|
+
// existe, así que es la única piel donde este paso llega a preguntar algo hoy.
|
|
417
|
+
// `let`: si el asistente o el alta escriben modelo (global o de proyecto), la sesión
|
|
418
|
+
// tiene que arrancar sobre las fuentes YA recargadas, no las de antes de esa escritura
|
|
419
|
+
// — es la misma regla que sigue `entrarEnConsola` en stdio.
|
|
420
|
+
let fuentesDeSesion = fuentes;
|
|
421
|
+
if (asistenteInicial) {
|
|
422
|
+
await asistenteDeModelo(consola, {
|
|
423
|
+
origenDeTrabajo: resolver(fuentes).trabajo.origen,
|
|
424
|
+
hayCredencial: (proveedor) => hayCredencial(proveedor, raiz),
|
|
425
|
+
guardarCredencial: (proveedor, clave) => guardarCredencial(proveedor, clave),
|
|
426
|
+
// Igual que en `main.ts`: probar la clave antes de escribirla exige poder ponerla
|
|
427
|
+
// en el proceso sin tocar `auth.json`.
|
|
428
|
+
aplicarCredencial: aplicarCredencialAlProceso,
|
|
429
|
+
});
|
|
430
|
+
await configurarModoInicial(raiz, consola);
|
|
431
|
+
const recargado = cargar(raiz);
|
|
432
|
+
fuentesDeSesion = { ...fuentes, proyecto: recargado.config.proyecto, global: recargado.config.global };
|
|
433
|
+
}
|
|
434
|
+
let entorno = await inspeccionarProyecto(raiz);
|
|
435
|
+
if (!entorno.esProyectoXone) {
|
|
436
|
+
consola.escribir(`✗ ${basename(raiz)} no es un proyecto XOne (falta app.xml)\n`);
|
|
437
|
+
if (ofrecer !== undefined && process.stdin.isTTY === true && (await ofrecer(raiz, consola))) {
|
|
438
|
+
entorno = await inspeccionarProyecto(raiz);
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
// Mismo patrón de prefijo que run.ts y el manejador /nuevo de consola.ts.
|
|
442
|
+
const estado = { hilo: `xonecode-${randomUUID()}`, raiz, fuentes: fuentesDeSesion };
|
|
443
|
+
const ejecutorBase = guion || crearEjecutor === undefined ? undefined : crearEjecutor(montaje.alAbrirSesion);
|
|
444
|
+
// La envoltura de ocupación cubre LOS DOS caminos: el ejecutor real si lo hay, y
|
|
445
|
+
// el guionizado por omisión si no — `--guion` fuerza `crearEjecutor` a undefined,
|
|
446
|
+
// y sin envolver el default no habría turno marcado como activo ni cola durante ese modo.
|
|
447
|
+
const ejecutar = envolverConOcupacion(ejecutorBase ?? ejecutarTurnoGuionizado, (ocupado) => vista.mutar({ ocupado }));
|
|
448
|
+
// El estado de proyecto decide el prólogo. La petición de reanudación es de lectura
|
|
449
|
+
// acotada y se pinta como un turno normal; nunca entra como mensaje del usuario.
|
|
450
|
+
if (hayEstadoDeProyecto(raiz) && !guion && ejecutorBase !== undefined) {
|
|
451
|
+
consola.escribir(MENSAJE_REANUDANDO);
|
|
452
|
+
try {
|
|
453
|
+
await ejecutar(PETICION_REANUDAR_PROYECTO, estado, consola);
|
|
454
|
+
}
|
|
455
|
+
catch (e) {
|
|
456
|
+
consola.escribir(`${e instanceof Error ? `${e.constructor.name}: ${e.message}` : String(e)}\n`);
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
else {
|
|
460
|
+
// Saludo estático, común a stdio y TUI. No llega al LLM ni consume tokens.
|
|
461
|
+
consola.escribir(MENSAJE_BIENVENIDA);
|
|
462
|
+
}
|
|
463
|
+
return await correrConsola(consola, estado, ejecutar);
|
|
464
|
+
}
|
|
465
|
+
finally {
|
|
466
|
+
// Nunca un terminal roto: se desmonta también si revienta el prólogo o un turno, y
|
|
467
|
+
// DESPUÉS se sale de los modos — el último frame de Ink debe caer aún en la pantalla
|
|
468
|
+
// alternativa, y el terminal recuperar lo que tenía con el ratón ya suelto.
|
|
469
|
+
try {
|
|
470
|
+
instancia.unmount();
|
|
471
|
+
}
|
|
472
|
+
finally {
|
|
473
|
+
salirDeModos();
|
|
474
|
+
process.off("exit", salirDeModos);
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
//# sourceMappingURL=correrTui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"correrTui.js","sourceRoot":"","sources":["../../../src/cli/tui/correrTui.ts"],"names":[],"mappings":"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"}
|