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,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* El estado de presentación de la TUI, SIN React.
|
|
3
|
+
*
|
|
4
|
+
* Los componentes solo pintan; la semántica (qué cierra una fase, cuándo una línea
|
|
5
|
+
* confirmada es definitiva) vive aquí y se prueba sin montar nada. Es el mismo pacto
|
|
6
|
+
* que la piel stdio —tokens a colchón, cascada de fases— pero el destino es el estado,
|
|
7
|
+
* no stdout: en TUI el repintado es total y no hay append-only que respetar.
|
|
8
|
+
*/
|
|
9
|
+
import { conLineaDeTool } from "../../core/actos.js";
|
|
10
|
+
export { conLineaDeTool };
|
|
11
|
+
export function crearStore(opciones = {}) {
|
|
12
|
+
const ahora = opciones.ahora ?? Date.now;
|
|
13
|
+
let estado = { actos: [], colchon: "", aprobacionPendiente: false };
|
|
14
|
+
const suscriptores = [];
|
|
15
|
+
const mutar = (cambio) => {
|
|
16
|
+
estado = { ...estado, ...cambio };
|
|
17
|
+
for (const s of suscriptores)
|
|
18
|
+
s();
|
|
19
|
+
};
|
|
20
|
+
/** La cascada, versión TUI: cualquier acto cierra la fase viva con su duración. */
|
|
21
|
+
const cerrarFase = () => {
|
|
22
|
+
if (estado.faseActiva === undefined)
|
|
23
|
+
return [];
|
|
24
|
+
const { texto, t0 } = estado.faseActiva;
|
|
25
|
+
mutar({ faseActiva: undefined });
|
|
26
|
+
return [{ tipo: "fase", texto, ms: Math.max(0, ahora() - t0) }];
|
|
27
|
+
};
|
|
28
|
+
const aniadir = (nuevos) => {
|
|
29
|
+
if (nuevos.length === 0)
|
|
30
|
+
return;
|
|
31
|
+
mutar({ actos: [...estado.actos, ...cerrarFase(), ...nuevos] });
|
|
32
|
+
};
|
|
33
|
+
/** La baja de un suscriptor, tolerante a doble llamada (React puede repetir el cleanup). */
|
|
34
|
+
const baja = (suscriptor) => {
|
|
35
|
+
const indice = suscriptores.lastIndexOf(suscriptor);
|
|
36
|
+
if (indice !== -1)
|
|
37
|
+
suscriptores.splice(indice, 1);
|
|
38
|
+
return () => baja(suscriptor);
|
|
39
|
+
};
|
|
40
|
+
return {
|
|
41
|
+
estado: () => estado,
|
|
42
|
+
/** Devuelve la función de desuscripción: el cleanup del useEffect es su llamador natural. */
|
|
43
|
+
suscribir(suscriptor) {
|
|
44
|
+
suscriptores.push(suscriptor);
|
|
45
|
+
return () => baja(suscriptor);
|
|
46
|
+
},
|
|
47
|
+
token(texto) {
|
|
48
|
+
let colchon = estado.colchon + texto;
|
|
49
|
+
const confirmados = [];
|
|
50
|
+
for (;;) {
|
|
51
|
+
const salto = colchon.indexOf("\n");
|
|
52
|
+
if (salto === -1)
|
|
53
|
+
break;
|
|
54
|
+
confirmados.push({ tipo: "asistente", texto: colchon.slice(0, salto) });
|
|
55
|
+
colchon = colchon.slice(salto + 1);
|
|
56
|
+
}
|
|
57
|
+
mutar({
|
|
58
|
+
colchon,
|
|
59
|
+
...(confirmados.length > 0 ? { actos: [...estado.actos, ...cerrarFase(), ...confirmados] } : {}),
|
|
60
|
+
});
|
|
61
|
+
},
|
|
62
|
+
cerrarLinea() {
|
|
63
|
+
if (estado.colchon === "")
|
|
64
|
+
return;
|
|
65
|
+
aniadir([{ tipo: "asistente", texto: estado.colchon }]);
|
|
66
|
+
mutar({ colchon: "" });
|
|
67
|
+
},
|
|
68
|
+
/**
|
|
69
|
+
* Línea de sistema/tool/aviso: acto inmediato, texto ya finalizado. Una de tool se
|
|
70
|
+
* une al grupo `herramientas` que esté al final (o abre uno); las demás son actos.
|
|
71
|
+
*/
|
|
72
|
+
linea(texto, tipo = "tool") {
|
|
73
|
+
if (tipo !== "tool") {
|
|
74
|
+
aniadir([{ tipo, texto }]);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const ultimo = estado.actos.at(-1);
|
|
78
|
+
// Con una fase viva, `aniadir` intercala el acto de fase: el grupo empieza después.
|
|
79
|
+
if (ultimo?.tipo === "herramientas" && estado.faseActiva === undefined) {
|
|
80
|
+
const grupo = { tipo: "herramientas", lineas: conLineaDeTool(ultimo.lineas, texto) };
|
|
81
|
+
mutar({ actos: [...estado.actos.slice(0, -1), grupo] });
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
aniadir([{ tipo: "herramientas", lineas: [texto] }]);
|
|
85
|
+
},
|
|
86
|
+
/** Lo que el humano escribió: acto inmediato, llega entero de una vez. */
|
|
87
|
+
usuario(texto) {
|
|
88
|
+
aniadir([{ tipo: "usuario", texto }]);
|
|
89
|
+
},
|
|
90
|
+
/** Un fallo del motor: acto inmediato, con su propio tipo para que se pinte en rojo. */
|
|
91
|
+
error(texto) {
|
|
92
|
+
aniadir([{ tipo: "error", texto }]);
|
|
93
|
+
},
|
|
94
|
+
fase(texto) {
|
|
95
|
+
mutar({ faseActiva: { texto, t0: ahora() } });
|
|
96
|
+
},
|
|
97
|
+
pausa() {
|
|
98
|
+
mutar({ aprobacionPendiente: true });
|
|
99
|
+
},
|
|
100
|
+
/**
|
|
101
|
+
* El rearme: `pausa` solo sube a true, y el modal que la cerró es quien sabe que
|
|
102
|
+
* ya no hay nada pendiente — si no baja, la TUI se queda «en pausa» para siempre
|
|
103
|
+
* tras la primera aprobación.
|
|
104
|
+
*/
|
|
105
|
+
rearmar() {
|
|
106
|
+
mutar({ aprobacionPendiente: false });
|
|
107
|
+
},
|
|
108
|
+
/**
|
|
109
|
+
* El cierre del turno. `modelo` es el que lo corrió, capturado por quien llama EN
|
|
110
|
+
* este momento (no en el render): un /modelo posterior no debe reetiquetar turnos
|
|
111
|
+
* ya cerrados. Sin modelo no se escribe la clave, para que los actos viejos y los
|
|
112
|
+
* tests que los comparan con `toEqual` no cambien.
|
|
113
|
+
*/
|
|
114
|
+
fin(ms, modelo) {
|
|
115
|
+
aniadir([modelo === undefined ? { tipo: "fin", ms } : { tipo: "fin", ms, modelo }]);
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
export function crearRanura(inicial) {
|
|
120
|
+
let valor = inicial;
|
|
121
|
+
const suscriptores = [];
|
|
122
|
+
return {
|
|
123
|
+
ver: () => valor,
|
|
124
|
+
mutar(cambio) {
|
|
125
|
+
valor = { ...valor, ...cambio };
|
|
126
|
+
for (const s of suscriptores)
|
|
127
|
+
s();
|
|
128
|
+
},
|
|
129
|
+
/** Devuelve la baja, igual que el store: el cleanup del useEffect es su llamador natural. */
|
|
130
|
+
suscribir(f) {
|
|
131
|
+
suscriptores.push(f);
|
|
132
|
+
return () => {
|
|
133
|
+
const indice = suscriptores.lastIndexOf(f);
|
|
134
|
+
if (indice !== -1)
|
|
135
|
+
suscriptores.splice(indice, 1);
|
|
136
|
+
};
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
export function vistaInicial() {
|
|
141
|
+
return { ocupado: false, enCola: [], pregunta: null, selector: null, modal: null };
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/cli/tui/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Una fila de tarjeta: fondo sólido de lado a lado.
|
|
4
|
+
*
|
|
5
|
+
* La comparten la Entrada y las tarjetas de usuario del transcript (la forma de
|
|
6
|
+
* OpenCode: barra izquierda, aire arriba, texto, aire abajo, todo con fondo). Vive
|
|
7
|
+
* aparte para que las dos no puedan divergir.
|
|
8
|
+
*
|
|
9
|
+
* Ink 5.2.1 solo da fondo a `Text`, y un Text pinta fondo solo bajo sus caracteres,
|
|
10
|
+
* así que la fila se rellena de espacios hasta `ancho`. Una celda de aire a la
|
|
11
|
+
* izquierda (y la que sobre a la derecha) hace de padding lateral. `visible` es lo que
|
|
12
|
+
* ocupa `children`, en puntos de código.
|
|
13
|
+
*/
|
|
14
|
+
import { Text } from "ink";
|
|
15
|
+
import { temaInk } from "./temaInk.js";
|
|
16
|
+
export function Fila({ ancho, visible, color, fondo = temaInk.fondoInput, children, }) {
|
|
17
|
+
return (_jsxs(Text, { backgroundColor: fondo, color: color, children: [" ", children, " ".repeat(Math.max(0, ancho - 1 - visible))] }));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=tarjeta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tarjeta.js","sourceRoot":"","sources":["../../../src/cli/tui/tarjeta.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,UAAU,IAAI,CAAC,EACnB,KAAK,EACL,OAAO,EACP,KAAK,EACL,KAAK,GAAG,OAAO,CAAC,UAAU,EAC1B,QAAQ,GAOT;IACC,OAAO,CACL,MAAC,IAAI,IAAC,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,aACvC,GAAG,EACH,QAAQ,EACR,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IACxC,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
const XONE = {
|
|
2
|
+
texto: "#d4d4d8",
|
|
3
|
+
mudo: "#71717a",
|
|
4
|
+
negrita: "#ffffff",
|
|
5
|
+
exito: "#4ade80",
|
|
6
|
+
aviso: "#fbbf24",
|
|
7
|
+
grave: "#f87171",
|
|
8
|
+
anadido: "#4ade80",
|
|
9
|
+
quitado: "#f87171",
|
|
10
|
+
prompt: "#2ac4ea",
|
|
11
|
+
reset: "",
|
|
12
|
+
borrar: "",
|
|
13
|
+
limpiarLinea: "",
|
|
14
|
+
arriba: () => "",
|
|
15
|
+
acento: "#47abd6",
|
|
16
|
+
borde: "#27272a",
|
|
17
|
+
fondoInput: "#1e1e1e",
|
|
18
|
+
fondoCola: "#090909",
|
|
19
|
+
fondoSidebar: "#111315",
|
|
20
|
+
// La cabecera conserva identidad XOne, pero no tiñe el panel entero de azul.
|
|
21
|
+
marca: "#00414a",
|
|
22
|
+
fase: "#e0a458",
|
|
23
|
+
tenue: "#52525b",
|
|
24
|
+
};
|
|
25
|
+
const PALETAS = {
|
|
26
|
+
xone: XONE,
|
|
27
|
+
clear: {
|
|
28
|
+
...XONE,
|
|
29
|
+
texto: "#f1f5f9",
|
|
30
|
+
mudo: "#94a3b8",
|
|
31
|
+
exito: "#86efac",
|
|
32
|
+
aviso: "#fde68a",
|
|
33
|
+
grave: "#fca5a5",
|
|
34
|
+
anadido: "#86efac",
|
|
35
|
+
quitado: "#fca5a5",
|
|
36
|
+
prompt: "#e0f2fe",
|
|
37
|
+
acento: "#7dd3fc",
|
|
38
|
+
borde: "#334155",
|
|
39
|
+
fondoInput: "#111827",
|
|
40
|
+
fondoCola: "#020617",
|
|
41
|
+
fondoSidebar: "#1e293b",
|
|
42
|
+
marca: "#0f2742",
|
|
43
|
+
fase: "#f8fafc",
|
|
44
|
+
tenue: "#64748b",
|
|
45
|
+
},
|
|
46
|
+
midnight: {
|
|
47
|
+
...XONE,
|
|
48
|
+
texto: "#dbeafe",
|
|
49
|
+
mudo: "#7182a0",
|
|
50
|
+
exito: "#5eead4",
|
|
51
|
+
aviso: "#facc15",
|
|
52
|
+
grave: "#fb7185",
|
|
53
|
+
anadido: "#5eead4",
|
|
54
|
+
quitado: "#fb7185",
|
|
55
|
+
prompt: "#38bdf8",
|
|
56
|
+
acento: "#60a5fa",
|
|
57
|
+
borde: "#1e3a5f",
|
|
58
|
+
fondoInput: "#0b1220",
|
|
59
|
+
fondoCola: "#020617",
|
|
60
|
+
fondoSidebar: "#0d1b32",
|
|
61
|
+
marca: "#172554",
|
|
62
|
+
fase: "#38bdf8",
|
|
63
|
+
tenue: "#475569",
|
|
64
|
+
},
|
|
65
|
+
graphite: {
|
|
66
|
+
...XONE,
|
|
67
|
+
texto: "#e5e7eb",
|
|
68
|
+
mudo: "#9ca3af",
|
|
69
|
+
exito: "#86efac",
|
|
70
|
+
aviso: "#fcd34d",
|
|
71
|
+
grave: "#fca5a5",
|
|
72
|
+
anadido: "#86efac",
|
|
73
|
+
quitado: "#fca5a5",
|
|
74
|
+
prompt: "#d1d5db",
|
|
75
|
+
acento: "#cbd5e1",
|
|
76
|
+
borde: "#3f3f46",
|
|
77
|
+
fondoInput: "#18181b",
|
|
78
|
+
fondoCola: "#09090b",
|
|
79
|
+
fondoSidebar: "#202024",
|
|
80
|
+
marca: "#27272a",
|
|
81
|
+
fase: "#e4e4e7",
|
|
82
|
+
tenue: "#71717a",
|
|
83
|
+
},
|
|
84
|
+
ember: {
|
|
85
|
+
...XONE,
|
|
86
|
+
texto: "#f5f1e8",
|
|
87
|
+
mudo: "#a8a29e",
|
|
88
|
+
exito: "#a3e635",
|
|
89
|
+
aviso: "#fbbf24",
|
|
90
|
+
grave: "#fb7185",
|
|
91
|
+
anadido: "#a3e635",
|
|
92
|
+
quitado: "#fb7185",
|
|
93
|
+
prompt: "#fcd34d",
|
|
94
|
+
acento: "#f59e0b",
|
|
95
|
+
borde: "#44403c",
|
|
96
|
+
fondoInput: "#1c1917",
|
|
97
|
+
fondoCola: "#0c0a09",
|
|
98
|
+
fondoSidebar: "#29211d",
|
|
99
|
+
marca: "#78350f",
|
|
100
|
+
fase: "#fb923c",
|
|
101
|
+
tenue: "#78716c",
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
let idActivo = "xone";
|
|
105
|
+
/** Identidad estable: los componentes importan este objeto y React se repinta al cambiar la ranura de vista. */
|
|
106
|
+
export const temaInk = { ...XONE };
|
|
107
|
+
export function aplicarTemaInk(id) {
|
|
108
|
+
idActivo = id;
|
|
109
|
+
Object.assign(temaInk, PALETAS[id]);
|
|
110
|
+
}
|
|
111
|
+
export function temaInkActivo() {
|
|
112
|
+
return idActivo;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=temaInk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"temaInk.js","sourceRoot":"","sources":["../../../src/cli/tui/temaInk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* El viewport del transcript: una ventana de actos con scroll PROPIO (PgUp/PgDn).
|
|
4
|
+
*
|
|
5
|
+
* La TUI es dueña del terminal, así que el scrollback del terminal ya no sirve: el
|
|
6
|
+
* scroll es este componente. La ventana vive al fondo —donde pasa lo que importa— y
|
|
7
|
+
* PgUp la sube; cualquier acto nuevo devuelve la ventana al fondo, porque leer lo
|
|
8
|
+
* nuevo importa más que conservar la posición de lectura.
|
|
9
|
+
*
|
|
10
|
+
* Los cálculos de ventana y de desfase viven en funciones PURAS exportadas
|
|
11
|
+
* (`ventanaDe`, `moverDesfase`): el scroll es lógica con reglas (acotada, sin actos
|
|
12
|
+
* inventados) y así se prueba sin montar Ink ni emular teclado.
|
|
13
|
+
*/
|
|
14
|
+
import { Box, Text, useInput } from "ink";
|
|
15
|
+
import { useEffect, useState } from "react";
|
|
16
|
+
import { segmentosDe, clasificarLinea, estadosDeCerco, contextoDeTabla, } from "../markdown.js";
|
|
17
|
+
import { temaInk } from "./temaInk.js";
|
|
18
|
+
import { barra } from "./barra.js";
|
|
19
|
+
import { filasDe } from "./filas.js";
|
|
20
|
+
import { Fila } from "./tarjeta.js";
|
|
21
|
+
/** Cuántos actos salta una pulsación: una página de lectura, no un acto. */
|
|
22
|
+
const PASO_DE_PAGINA = 10;
|
|
23
|
+
/** Cuántos actos mueve una muesca de la rueda del ratón: menos que una página, más que uno. */
|
|
24
|
+
export const PASO_DE_RUEDA = 3;
|
|
25
|
+
/** Cuántas líneas de un grupo de herramientas se enseñan: las últimas. Medido con el usuario: 4. */
|
|
26
|
+
export const LINEAS_DE_HERRAMIENTAS = 4;
|
|
27
|
+
/**
|
|
28
|
+
* Los actos visibles: los ÚLTIMOS `altura`, subidos `desfase` hacia arriba.
|
|
29
|
+
*
|
|
30
|
+
* Pura y total: un desfase mayor que el contenido da una ventana VACÍA antes que
|
|
31
|
+
* repetir o inventar actos; el acotado lo hace `moverDesfase`.
|
|
32
|
+
*/
|
|
33
|
+
export function ventanaDe(actos, altura, desfase) {
|
|
34
|
+
const fin = Math.max(0, actos.length - desfase);
|
|
35
|
+
const inicio = Math.max(0, fin - altura);
|
|
36
|
+
return actos.slice(inicio, fin);
|
|
37
|
+
}
|
|
38
|
+
/** El desfase tras moverse `delta` actos, acotado sin vaciar nunca el transcript. */
|
|
39
|
+
export function moverDesfase(desfase, total, delta) {
|
|
40
|
+
return Math.min(Math.max(0, desfase + delta), Math.max(0, total - 1));
|
|
41
|
+
}
|
|
42
|
+
/** El color de un segmento inline. Pura: los tests no ven color, y esta decisión sí se prueba. */
|
|
43
|
+
export function colorDeSegmento(estilo) {
|
|
44
|
+
if (estilo === "negrita")
|
|
45
|
+
return temaInk.negrita;
|
|
46
|
+
// Código inline y enlaces comparten acento: lo que responde al modelo es lo azul.
|
|
47
|
+
if (estilo === "codigo" || estilo === "enlace")
|
|
48
|
+
return temaInk.acento;
|
|
49
|
+
if (estilo === "mudo")
|
|
50
|
+
return temaInk.mudo;
|
|
51
|
+
return undefined; // normal y cursiva: color del texto, la cursiva es forma, no tinta
|
|
52
|
+
}
|
|
53
|
+
/** Los segmentos inline de un texto: negrita, código, cursiva y enlaces — significado, no ANSI. */
|
|
54
|
+
function Segmentos({ texto }) {
|
|
55
|
+
return (_jsx(_Fragment, { children: segmentosDe(texto).map((seg, i) => (_jsx(Text, { bold: seg.estilo === "negrita", italic: seg.estilo === "cursiva", color: colorDeSegmento(seg.estilo), children: seg.texto }, i))) }));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Una línea de markdown a nodos de Ink. El parseo vive en `clasificarLinea` (puro, en
|
|
59
|
+
* `cli/markdown.ts`); aquí solo se pinta. `enCerco` es el estado de la línea: dentro de
|
|
60
|
+
* un cerco todo sale en mudo, y su marcador de cierre no se pinta (igual que stdio:
|
|
61
|
+
* el cerco es formato, no conversación).
|
|
62
|
+
*/
|
|
63
|
+
function LineaMarkdown({ texto, enCerco, ancho, tabla, }) {
|
|
64
|
+
// El grid del TextTable de OpenTUI con borderStyle «single»: ┌┬┐ cabecera, ├┼┤
|
|
65
|
+
// separador, └┴┘ cierre; bordes en tenue (su «conceal»), celdas ya rellenas y
|
|
66
|
+
// recortadas por el módulo puro. El aire alrededor vive aquí: la tabla es un bloque.
|
|
67
|
+
if (tabla) {
|
|
68
|
+
const borde = (izq, medio, der) => izq + tabla.anchos.map((a) => "─".repeat(a + 2)).join(medio) + der;
|
|
69
|
+
if (tabla.rol === "separador") {
|
|
70
|
+
return _jsx(Text, { color: temaInk.tenue, children: borde("├", "┼", "┤") });
|
|
71
|
+
}
|
|
72
|
+
// Las celdas parsean INLINE como el resto del texto: «**NO SE USA**» y `código`
|
|
73
|
+
// crudos dentro del grid eran el bug medido en terminal. El borde va tenue como
|
|
74
|
+
// las líneas del grid, y la cabecera lleva la tinta de las cabeceras de texto.
|
|
75
|
+
// Hermanos Text dentro del Box del acto: contenido estático, sin inserciones
|
|
76
|
+
// que desmidan (la trampa de ink 5.2.1).
|
|
77
|
+
const cabecera = tabla.rol === "cabecera";
|
|
78
|
+
// Una fila NO puede depender de los espacios al final de un Text: Ink los recorta
|
|
79
|
+
// al medir y el borde derecho acaba justo tras el contenido, distinto en cada fila.
|
|
80
|
+
// Cada celda es una caja de ancho fijo (texto + dos márgenes), como TextTable de
|
|
81
|
+
// OpenTUI; el separador queda por tanto en la misma columna siempre.
|
|
82
|
+
const fila = (_jsxs(Box, { flexDirection: "row", flexShrink: 0, children: [_jsx(Text, { color: temaInk.tenue, children: "│" }), tabla.celdas.flatMap((celda, j) => [
|
|
83
|
+
_jsx(Box, { width: (tabla.anchos[j] ?? 0) + 2, paddingLeft: 1, paddingRight: 1, flexShrink: 0, children: _jsx(Text, { bold: cabecera, color: cabecera ? temaInk.negrita : undefined, wrap: "truncate-end", children: _jsx(Segmentos, { texto: celda.trimEnd() }) }) }, `celda-${j}`),
|
|
84
|
+
...(j === tabla.celdas.length - 1 ? [] : [_jsx(Text, { color: temaInk.tenue, children: "│" }, `borde-${j}`)]),
|
|
85
|
+
]), _jsx(Text, { color: temaInk.tenue, children: "│" })] }));
|
|
86
|
+
if (cabecera) {
|
|
87
|
+
return (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(Text, { color: temaInk.tenue, children: borde("┌", "┬", "┐") }), fila] }));
|
|
88
|
+
}
|
|
89
|
+
return (_jsxs(_Fragment, { children: [fila, tabla.esUltima ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: temaInk.tenue, children: borde("└", "┴", "┘") }), _jsx(Text, { children: " " })] })) : null] }));
|
|
90
|
+
}
|
|
91
|
+
const clasificada = clasificarLinea(texto);
|
|
92
|
+
if (clasificada.tipo === "cerco") {
|
|
93
|
+
// El estado es ANTES de la línea: marcador + dentro = cierre (no se pinta); marcador
|
|
94
|
+
// + fuera = apertura, que enseña el lenguaje si lo trae.
|
|
95
|
+
if (enCerco)
|
|
96
|
+
return null;
|
|
97
|
+
return clasificada.lenguaje === "" ? null : _jsx(Text, { color: temaInk.mudo, children: clasificada.lenguaje });
|
|
98
|
+
}
|
|
99
|
+
if (enCerco)
|
|
100
|
+
return _jsx(Text, { color: temaInk.mudo, children: texto });
|
|
101
|
+
switch (clasificada.tipo) {
|
|
102
|
+
case "cabecera":
|
|
103
|
+
return (_jsx(Text, { bold: true, color: temaInk.negrita, children: clasificada.texto }));
|
|
104
|
+
case "horizontal":
|
|
105
|
+
return _jsx(Text, { color: temaInk.tenue, children: "─".repeat(Math.max(3, ancho)) });
|
|
106
|
+
case "cita":
|
|
107
|
+
// Un «>» suelto del modelo no es una cita: sin contenido, sin barra.
|
|
108
|
+
if (clasificada.texto.trim() === "")
|
|
109
|
+
return null;
|
|
110
|
+
return (_jsx(Box, { ...barra(temaInk.tenue), children: _jsx(Text, { color: temaInk.mudo, children: _jsx(Segmentos, { texto: clasificada.texto }) }) }));
|
|
111
|
+
case "vineta":
|
|
112
|
+
case "numerada": {
|
|
113
|
+
// El marcador en acento, la sangría por nivel (2 espacios por nivel, lo que
|
|
114
|
+
// emiten los modelos). Hermanos dentro del Text: el contenido de un acto no
|
|
115
|
+
// cambia después de creado, así que no hay inserción que desmida (ink 5.2.1).
|
|
116
|
+
const marcador = clasificada.tipo === "vineta" ? "• " : `${clasificada.numero}. `;
|
|
117
|
+
return (_jsxs(Text, { children: [" ".repeat(clasificada.nivel), _jsx(Text, { color: temaInk.acento, children: marcador }), _jsx(Segmentos, { texto: clasificada.texto })] }));
|
|
118
|
+
}
|
|
119
|
+
default:
|
|
120
|
+
return (_jsx(Text, { children: _jsx(Segmentos, { texto: clasificada.texto }) }));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/** Un acto del store, pintado por su tipo: cada uno con su icono y su color semántico. */
|
|
124
|
+
function ActoVista({ acto, previo, ancho, enCerco, tabla, }) {
|
|
125
|
+
switch (acto.tipo) {
|
|
126
|
+
case "usuario":
|
|
127
|
+
// La tarjeta de OpenCode, igual que la Entrada: barra navy (lo que EScribiste se
|
|
128
|
+
// distingue de lo que escribes, que lleva acento), una fila de aire, el texto
|
|
129
|
+
// partido en filas y otra de aire — todo con fondo (Ink 5.2.1: solo `Text` lo
|
|
130
|
+
// lleva). El aire vive DENTRO de la tarjeta, como el `paddingTop/Bottom` suyo.
|
|
131
|
+
return (_jsxs(Box, { flexDirection: "column", flexShrink: 0, ...barra(temaInk.marca), paddingLeft: 0, children: [_jsx(Fila, { ancho: ancho, visible: 0 }), filasDe(acto.texto, Math.max(1, ancho - 2)).map((fila, i) => (_jsx(Fila, { ancho: ancho, visible: Array.from(fila).length, children: fila }, i))), _jsx(Fila, { ancho: ancho, visible: 0 })] }));
|
|
132
|
+
case "asistente":
|
|
133
|
+
return _jsx(LineaMarkdown, { texto: acto.texto, enCerco: enCerco, ancho: ancho, tabla: tabla });
|
|
134
|
+
case "fase":
|
|
135
|
+
return (_jsx(Text, { color: temaInk.fase, children: `+ ${acto.texto}: ${(acto.ms / 1000).toFixed(1)}s` }));
|
|
136
|
+
case "fin":
|
|
137
|
+
// «■ modelo · 1.8s»: el cuadrado en acento, el modelo en texto, la duración en mudo.
|
|
138
|
+
// El cierre lleva su aire DELANTE (el `marginTop` del «▣» de OpenCode) — salvo
|
|
139
|
+
// cuando viene del grupo de herramientas, que ya deja el suyo detrás: no se dobla.
|
|
140
|
+
return (_jsxs(_Fragment, { children: [previo?.tipo !== "herramientas" ? _jsx(Text, { children: " " }) : null, _jsxs(Text, { children: [_jsx(Text, { color: temaInk.acento, children: "■ " }), acto.modelo !== undefined ? (_jsxs(_Fragment, { children: [_jsx(Text, { children: acto.modelo }), _jsx(Text, { color: temaInk.mudo, children: " · " })] })) : null, _jsx(Text, { color: temaInk.mudo, children: `${(acto.ms / 1000).toFixed(1)}s` })] })] }));
|
|
141
|
+
case "error":
|
|
142
|
+
return _jsx(Text, { color: temaInk.grave, children: acto.texto });
|
|
143
|
+
case "herramientas": {
|
|
144
|
+
// Paisaje: una fila de aire que lo separe del texto, la cuenta de lo que no se ve y
|
|
145
|
+
// las ÚLTIMAS líneas, en tenue, con sangría y truncadas a la anchura — una línea
|
|
146
|
+
// de tool es UNA fila, nunca envuelve (un patrón de grep puede medir 200 columnas).
|
|
147
|
+
// Y aire también DETRÁS: en OpenCode cada bloque lleva su `marginTop 1`, y sin él
|
|
148
|
+
// el texto siguiente se pegaba al paisaje.
|
|
149
|
+
const sobran = acto.lineas.length - LINEAS_DE_HERRAMIENTAS;
|
|
150
|
+
const ultimas = acto.lineas.slice(-LINEAS_DE_HERRAMIENTAS);
|
|
151
|
+
return (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), sobran > 0 ? _jsx(Text, { color: temaInk.tenue, children: ` … ${sobran} pasos antes` }) : null, ultimas.map((linea, i) => (_jsx(Text, { color: temaInk.tenue, wrap: "truncate-end", children: ` ${linea}` }, i))), _jsx(Text, { children: " " })] }));
|
|
152
|
+
}
|
|
153
|
+
case "artefacto":
|
|
154
|
+
// No llega aquí HOY —`Piel.artefacto` es opcional y solo la implementa la web, así que
|
|
155
|
+
// en el terminal el artefacto es la línea que `core/turno.ts` escribe siempre—, pero
|
|
156
|
+
// el acto existe en el tipo compartido y un `default` que diera por hecho `.texto`
|
|
157
|
+
// sería una excepción en pantalla el día que alguien lo implemente aquí.
|
|
158
|
+
return _jsx(Text, { color: temaInk.mudo, children: ` ${acto.nombre}` });
|
|
159
|
+
case "sincronizacion":
|
|
160
|
+
// Tampoco llega HOY, y por el mismo camino que el artefacto pero al revés: el acto lo
|
|
161
|
+
// produce la piel que implementa `Consola.anotarSincronizacion`, y esta no la
|
|
162
|
+
// implementa —así que `/sync` le escribe el recorrido por `escribir` y aquí se ve como
|
|
163
|
+
// los actos de `sistema` de siempre, línea a línea, que es lo que debe hacer un
|
|
164
|
+
// terminal—. Se pintan sus líneas y nada más: en esta pantalla una operación de
|
|
165
|
+
// sincronización ES un aviso mudo, y un rótulo con la acción sería un adorno que el
|
|
166
|
+
// terminal nunca enseña.
|
|
167
|
+
return (_jsx(_Fragment, { children: acto.lineas.map((linea, i) => (_jsx(Text, { color: temaInk.mudo, wrap: "truncate-end", children: ` ${linea}` }, i))) }));
|
|
168
|
+
default:
|
|
169
|
+
// sistema: mudo e indentado — un aviso, no la conversación.
|
|
170
|
+
return _jsx(Text, { color: temaInk.mudo, children: ` ${acto.texto}` });
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
export function Transcript({ store, altura, rueda, ancho = 80, }) {
|
|
174
|
+
const [estado, setEstado] = useState(store.estado());
|
|
175
|
+
const [desfase, setDesfase] = useState(0); // 0 = al fondo; N = N actos hacia arriba
|
|
176
|
+
// La rueda: el mismo `moverDesfase` que PgUp/PgDn, en pasos más cortos. El total se
|
|
177
|
+
// lee del store en el momento, no del estado del render, para no acotar con un valor viejo.
|
|
178
|
+
useEffect(() => {
|
|
179
|
+
if (rueda === undefined)
|
|
180
|
+
return;
|
|
181
|
+
return rueda.suscribir((delta) => setDesfase((d) => moverDesfase(d, store.estado().actos.length, delta * PASO_DE_RUEDA)));
|
|
182
|
+
}, [rueda, store]);
|
|
183
|
+
useEffect(() => {
|
|
184
|
+
// `suscribir` devuelve la baja: el cleanup la usa — suscribir sin desuscribir
|
|
185
|
+
// era un suscriptor filtrado por cada montaje del componente.
|
|
186
|
+
const baja = store.suscribir(() => setEstado({ ...store.estado() }));
|
|
187
|
+
return baja;
|
|
188
|
+
}, [store]);
|
|
189
|
+
// Cualquier acto nuevo ancla la ventana al fondo, haya scroll o no.
|
|
190
|
+
useEffect(() => setDesfase(0), [estado.actos.length]);
|
|
191
|
+
useInput((_entrada, tecla) => {
|
|
192
|
+
if (tecla.pageUp)
|
|
193
|
+
setDesfase((d) => moverDesfase(d, estado.actos.length, PASO_DE_PAGINA));
|
|
194
|
+
if (tecla.pageDown)
|
|
195
|
+
setDesfase((d) => moverDesfase(d, estado.actos.length, -PASO_DE_PAGINA));
|
|
196
|
+
});
|
|
197
|
+
// `altura` es la altura física del panel, pero un acto no equivale a una fila: una
|
|
198
|
+
// tarjeta ocupa tres, una tabla varias y el markdown puede envolver. Recortar con
|
|
199
|
+
// `ventanaDe(..., altura)` mezclaba ambas unidades y daba saltos al hacer scroll.
|
|
200
|
+
// Dejamos que Ink recorte por altura REAL; al subir, solo quitamos del final los actos
|
|
201
|
+
// más nuevos para que el borde inferior de la ventana se desplace hacia el pasado.
|
|
202
|
+
const visibles = estado.actos.slice(0, Math.max(0, estado.actos.length - desfase));
|
|
203
|
+
// El cerco es estado GLOBAL de la conversación: una ventana que empiece a mitad de un
|
|
204
|
+
// cerco abierto tiene que saberlo. Un pase sobre TODOS los actos asistente (en orden,
|
|
205
|
+
// que es como llegaron) da el estado de cada uno; el colchón hereda el estado final
|
|
206
|
+
// — el truco del centinela: una última línea que no es cerco, cuyo estado previo es
|
|
207
|
+
// el que queda tras toda la lista.
|
|
208
|
+
const textosAsistente = estado.actos
|
|
209
|
+
.filter((a) => a.tipo === "asistente")
|
|
210
|
+
.map((a) => a.texto);
|
|
211
|
+
const estados = estadosDeCerco(textosAsistente);
|
|
212
|
+
// Cada respuesta se pinta con dos columnas de sangría (igual que OpenCode). La
|
|
213
|
+
// tabla ha de repartir sus columnas con ESE ancho útil: calcularla con `ancho`
|
|
214
|
+
// exterior hacía que su borde derecho se envolviera dentro del bloque.
|
|
215
|
+
const tablas = contextoDeTabla(textosAsistente, Math.max(3, ancho - 2));
|
|
216
|
+
const cercoDeActo = new Map();
|
|
217
|
+
const tablaDeActo = new Map();
|
|
218
|
+
let i = 0;
|
|
219
|
+
for (const acto of estado.actos) {
|
|
220
|
+
if (acto.tipo !== "asistente")
|
|
221
|
+
continue;
|
|
222
|
+
cercoDeActo.set(acto, estados[i] ?? false);
|
|
223
|
+
const tabla = tablas[i];
|
|
224
|
+
if (tabla)
|
|
225
|
+
tablaDeActo.set(acto, tabla);
|
|
226
|
+
i++;
|
|
227
|
+
}
|
|
228
|
+
const enCercoColchon = estadosDeCerco([...textosAsistente, ""]).at(-1) ?? false;
|
|
229
|
+
return (
|
|
230
|
+
// La ÚNICA pieza elástica de la columna: la fila de columnas tiene altura fija
|
|
231
|
+
// (`rows - 1`, la reserva del borrado total de Ink) y Entrada, Pregunta y pie no
|
|
232
|
+
// encogen, así que lo que sobra —o lo que falta— lo pone y lo paga el transcript.
|
|
233
|
+
// `overflow="hidden"` + `justifyContent="flex-end"`: con pocos actos la Entrada
|
|
234
|
+
// queda anclada abajo (la maqueta) y, cuando el contenido no cabe (una línea que
|
|
235
|
+
// envuelve, el colchón vivo), se recorta por ARRIBA — lo más nuevo, que es lo que
|
|
236
|
+
// hay que leer, se queda. `altura` ya no es la altura de la caja (la pone el flex):
|
|
237
|
+
// es el tamaño de la rebanada que pide `ventanaDe`.
|
|
238
|
+
_jsxs(Box, { flexDirection: "column", flexGrow: 1, flexBasis: 0, overflow: "hidden", justifyContent: "flex-end", children: [visibles.map((acto, i) => {
|
|
239
|
+
const esRespuesta = acto.tipo === "asistente";
|
|
240
|
+
// OpenCode separa cada parte de texto, no cada línea: el streaming sigue unido,
|
|
241
|
+
// pero al llegar desde una tarjeta, herramientas o sistema respira una fila.
|
|
242
|
+
const empiezaRespuesta = esRespuesta && i > 0 && visibles[i - 1]?.tipo !== "asistente";
|
|
243
|
+
const contenido = (_jsx(ActoVista, { acto: acto, previo: i > 0 ? visibles[i - 1] : undefined,
|
|
244
|
+
// La sangría ocupa dos columnas. Las tablas y separadores se calculan con
|
|
245
|
+
// el ancho útil para que nunca empujen la columna derecha.
|
|
246
|
+
ancho: esRespuesta ? Math.max(3, ancho - 2) : ancho, enCerco: cercoDeActo.get(acto) ?? false, tabla: tablaDeActo.get(acto) }));
|
|
247
|
+
return (_jsx(Box, { flexShrink: 0, flexDirection: "column", children: esRespuesta ? (
|
|
248
|
+
// Como OpenCode, una respuesta es Markdown sangrado y con aire antes del
|
|
249
|
+
// bloque, no una sucesión de barras de color. Las líneas del streaming
|
|
250
|
+
// permanecen juntas y siguen leyéndose como una sola respuesta.
|
|
251
|
+
_jsx(Box, { flexDirection: "column", paddingLeft: 2, marginTop: empiezaRespuesta ? 1 : 0, children: contenido })) : (contenido) }, `${i}-${acto.tipo}`));
|
|
252
|
+
}), desfase === 0 && estado.colchon !== "" ? (_jsx(Box, { flexShrink: 0, flexDirection: "column", children: _jsx(LineaMarkdown, { texto: estado.colchon, enCerco: enCercoColchon, ancho: ancho }) })) : null, _jsx(Box, { flexGrow: 1 })] }));
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=transcript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../../src/cli/tui/transcript.tsx"],"names":[],"mappings":"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"}
|