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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turnoReal.js","sourceRoot":"","sources":["../../src/agent/turnoReal.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"turnoReal.js","sourceRoot":"","sources":["../../src/agent/turnoReal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* De dónde sale lo que `core/version.ts` imprime: el `package.json` y, si esto es una copia
|
|
3
|
+
* de git, su commit y si hay cambios sin commitear.
|
|
4
|
+
*
|
|
5
|
+
* Vive en `agent/` y no en `core/` por la regla de siempre: aquí se toca el disco y se lanza
|
|
6
|
+
* un proceso. Lo que decide cómo se DICE es puro y está al otro lado.
|
|
7
|
+
*/
|
|
8
|
+
import { execFileSync } from "node:child_process";
|
|
9
|
+
import { readFileSync } from "node:fs";
|
|
10
|
+
import { fileURLToPath } from "node:url";
|
|
11
|
+
import { dirname, resolve } from "node:path";
|
|
12
|
+
/** La raíz del PAQUETE, igual que `RAIZ_SKILLS`: desde este módulo, no desde el cwd. */
|
|
13
|
+
const RAIZ = resolve(dirname(fileURLToPath(import.meta.url)), "..", "..");
|
|
14
|
+
/**
|
|
15
|
+
* Qué versión está corriendo. **Nunca lanza**: es una línea informativa, y un arranque que
|
|
16
|
+
* reventara por no poder leer su propio commit sería absurdo.
|
|
17
|
+
*
|
|
18
|
+
* El `git` se llama con `cwd` en la raíz del PAQUETE —no en la del usuario—, porque lo que
|
|
19
|
+
* se pregunta es con qué código corre xonecode y no qué hay en su proyecto. Con un tope
|
|
20
|
+
* corto: esto va en el camino del arranque, y un git colgado no puede retrasarlo.
|
|
21
|
+
*/
|
|
22
|
+
export function versionEnMarcha(raiz = RAIZ) {
|
|
23
|
+
let version = "desconocida";
|
|
24
|
+
try {
|
|
25
|
+
const crudo = JSON.parse(readFileSync(resolve(raiz, "package.json"), "utf8"));
|
|
26
|
+
if (typeof crudo.version === "string" && crudo.version !== "")
|
|
27
|
+
version = crudo.version;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// Sin `package.json` legible no hay versión que dar, y se dice así.
|
|
31
|
+
}
|
|
32
|
+
const git = (args) => {
|
|
33
|
+
try {
|
|
34
|
+
return execFileSync("git", args, { cwd: raiz, encoding: "utf8", timeout: 2000, stdio: ["ignore", "pipe", "ignore"] }).trim();
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const commit = git(["rev-parse", "--short", "HEAD"]);
|
|
41
|
+
if (commit === undefined || commit === "")
|
|
42
|
+
return { version };
|
|
43
|
+
// `--porcelain` vacío es «limpio». Que FALLE no es limpio: es que no se pudo mirar, y eso
|
|
44
|
+
// se propaga como ausente para que la línea pueda decirlo en vez de afirmar de más.
|
|
45
|
+
const estado = git(["status", "--porcelain"]);
|
|
46
|
+
return { version, commit, ...(estado === undefined ? {} : { sucio: estado !== "" }) };
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=versionEnDisco.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versionEnDisco.js","sourceRoot":"","sources":["../../src/agent/versionEnDisco.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAG7C,wFAAwF;AACxF,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAE1E;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe,IAAI;IACjD,IAAI,OAAO,GAAG,aAAa,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAA0B,CAAC;QACvG,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE;YAAE,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IACzF,CAAC;IAAC,MAAM,CAAC;QACP,oEAAoE;IACtE,CAAC;IAED,MAAM,GAAG,GAAG,CAAC,IAAc,EAAsB,EAAE;QACjD,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/H,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC9D,0FAA0F;IAC1F,oFAAoF;IACpF,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC;AACxF,CAAC"}
|
package/dist/agent/xoneAgent.js
CHANGED
|
@@ -1,18 +1,122 @@
|
|
|
1
|
-
import { createDeepAgent } from "deepagents";
|
|
1
|
+
import { createDeepAgent, createFilesystemMiddleware } from "deepagents";
|
|
2
|
+
import { promptDeAgente, repartirSkills } from "../core/agentes.js";
|
|
3
|
+
import { RunnableLambda } from "@langchain/core/runnables";
|
|
4
|
+
import { AIMessage } from "@langchain/core/messages";
|
|
2
5
|
import { MemorySaver } from "@langchain/langgraph";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
6
|
+
import { backendDeAgente } from "./proyecto.js";
|
|
7
|
+
import { permisosDe, hitlDe } from "./perfiles.js";
|
|
8
|
+
import { crearBusquedaRegex } from "./busquedaRegex.js";
|
|
9
|
+
import { inventarioDelProyecto } from "./escrituraExterna.js";
|
|
5
10
|
import { middlewareTextoDeTool } from "./textoDeTool.js";
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
import { resumenDeContexto } from "./resumenDeContexto.js";
|
|
12
|
+
import { createTokenTrackingMiddleware, } from "../vendor/tokenTracking.js";
|
|
13
|
+
/**
|
|
14
|
+
* El prompt del orquestador, GENERADO a partir de los subagentes que hay.
|
|
15
|
+
*
|
|
16
|
+
* Era una constante que nombraba a `docs`, `planner`, `dev` y `mockup` a pelo. Desde que los
|
|
17
|
+
* subagentes son ficheros que el usuario escribe y borra, eso se queda mintiendo el primer
|
|
18
|
+
* día: mandarle delegar en `mockup` cuando `mockup` no existe es la misma clase de botón
|
|
19
|
+
* muerto que este repo lleva semanas quitando de la interfaz.
|
|
20
|
+
*
|
|
21
|
+
* Lo que se conserva es lo GENERAL —no tienes tools, delega, encadena con handoff, no
|
|
22
|
+
* afirmes lo que no te han confirmado—, y lo específico sale de la propia lista. La línea
|
|
23
|
+
* del encadenado para diagramas solo se escribe si existen los dos agentes de los que
|
|
24
|
+
* habla: una instrucción sobre un especialista que no está no la puede seguir nadie.
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* Quién es el orquestador a efectos de permisos: SOLO LECTURA.
|
|
28
|
+
*
|
|
29
|
+
* Es un `QuienDecidePermisos` y no un `Agente` porque el orquestador no es un especialista
|
|
30
|
+
* —no se puede dar de alta, ni borrar, ni editar desde Ajustes—, pero sus tools de fichero
|
|
31
|
+
* son las mismas y tienen que pasar por la misma función. Ver dónde se usa, en
|
|
32
|
+
* `construirAgente`, para el agujero que esto cierra.
|
|
33
|
+
*/
|
|
34
|
+
export const PERFIL_DEL_ORQUESTADOR = { nombre: "orquestador", soloLectura: true };
|
|
35
|
+
export function promptOrquestador(agentes) {
|
|
36
|
+
const hay = (n) => agentes.some((a) => a.nombre === n);
|
|
37
|
+
return [
|
|
38
|
+
"Eres el orquestador de un harness de desarrollo para la plataforma XOne.",
|
|
39
|
+
// Decía «NO tienes herramientas», y era falso: tiene las seis de fichero. Ahora son de
|
|
40
|
+
// SOLO LECTURA (`PERFIL_DEL_ORQUESTADOR`), así que la frase dice lo que de verdad puede.
|
|
41
|
+
"NO tienes herramientas para MODIFICAR nada: tu único trabajo es entender la petición y delegar.",
|
|
42
|
+
agentes.length === 0
|
|
43
|
+
? "AVISO: ahora mismo no hay ningún especialista dado de alta, así que no puedes delegar en nadie. Dilo en vez de intentar resolverlo tú."
|
|
44
|
+
: `Los especialistas disponibles son: ${agentes.map((a) => a.nombre).join(", ")}. Elige por su descripción.`,
|
|
45
|
+
hay("planner") && hay("mockup")
|
|
46
|
+
? "Para diagramas o esquemas de la app, delega en `mockup`; si deben reflejar el código real, encarga PRIMERO el análisis a `planner` y usa su resultado antes de dibujar."
|
|
47
|
+
: "",
|
|
48
|
+
"Los especialistas no comparten el transcript: al encadenarlos, incluye en la descripción",
|
|
49
|
+
"de la siguiente `task` un bloque `HANDOFF DE PLANNER` compacto con los hechos verificados,",
|
|
50
|
+
"rutas/evidencias y lagunas. No pidas al siguiente especialista redescubrir esos hechos.",
|
|
51
|
+
"Cuando varias tareas sean independientes, delégalas EN EL MISMO mensaje para",
|
|
52
|
+
"que corran a la vez.",
|
|
53
|
+
"No afirmes que un cambio se ha aplicado si no te lo ha confirmado el especialista.",
|
|
54
|
+
]
|
|
55
|
+
.filter((l) => l !== "")
|
|
56
|
+
.join(" ");
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Indicaciones que el modelo recibe junto a las tools reales de fichero.
|
|
60
|
+
*
|
|
61
|
+
* No crean herramientas ni rebajan permisos: hacen explícito el destino correcto
|
|
62
|
+
* para que una skill no confunda su propia carpeta de instrucciones con la salida.
|
|
63
|
+
*/
|
|
64
|
+
export const DESCRIPCIONES_FICHEROS = {
|
|
65
|
+
read_file: [
|
|
66
|
+
"Lee únicamente el fragmento de un fichero necesario para responder.",
|
|
67
|
+
"Indica siempre `offset` y `limit`; para el reconocimiento inicial usa",
|
|
68
|
+
"`offset=0, limit=50`. No releas la misma ruta y el mismo rango: usa la",
|
|
69
|
+
"evidencia ya obtenida o una página distinta solo si hace falta.",
|
|
70
|
+
].join(" "),
|
|
71
|
+
write_file: [
|
|
72
|
+
"Escribe un fichero del proyecto en una ruta absoluta.",
|
|
73
|
+
"Para diagramas, esquemas, arquitecturas y flujos: carga primero la skill `archify`;",
|
|
74
|
+
"no escribas nunca dentro de `/skills`. Si el usuario pide el resultado renderizado,",
|
|
75
|
+
"guárdalo como HTML autocontenido en `/artefactos/<nombre>.html`.",
|
|
76
|
+
"Para dashboards, informes o tablas HTML interactivas carga `artifacts-builder` y usa",
|
|
77
|
+
"también `/artefactos/<nombre>.html`. `/artefactos/` NO es del proyecto: es la carpeta de",
|
|
78
|
+
"esta sesión, no pasa por aprobación, no entra en git y no sube a CloudStudio — un HTML",
|
|
79
|
+
"escrito fuera de ella acaba dentro de la app XOne del usuario. La ruta",
|
|
80
|
+
"`/MEMORIA_PROYECTO.md` es exclusivamente",
|
|
81
|
+
"para hechos confirmados, decisiones y pendientes útiles; no guardes transcripciones ni secretos.",
|
|
82
|
+
].join(" "),
|
|
83
|
+
edit_file: [
|
|
84
|
+
"Modifica un fichero existente del proyecto en una ruta absoluta.",
|
|
85
|
+
"No modifiques `/skills`: son instrucciones de solo lectura. Para actualizar la memoria",
|
|
86
|
+
"usa solo `/MEMORIA_PROYECTO.md` y conserva su contenido útil.",
|
|
87
|
+
].join(" "),
|
|
88
|
+
grep: [
|
|
89
|
+
"Busca texto LITERAL (no regex) de forma progresiva para ahorrar contexto.",
|
|
90
|
+
"Primero acota con `path` y `glob`; para localizar candidatos usa",
|
|
91
|
+
"`output_mode=\"files_with_matches\"` o `output_mode=\"count\"`.",
|
|
92
|
+
"Usa `output_mode=\"content\"` solo con un patrón específico y lee después",
|
|
93
|
+
"el fragmento necesario con `read_file` (offset y limit). La búsqueda devuelve",
|
|
94
|
+
"como máximo 100 coincidencias salvo que justifiques subir `max_count`.",
|
|
95
|
+
].join(" "),
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Presupuesto de las herramientas de ficheros.
|
|
99
|
+
*
|
|
100
|
+
* DeepAgents 1.13 incorpora `max_count` y `output_mode` en `grep`. El valor por
|
|
101
|
+
* defecto de la librería (1.000) sigue siendo demasiado generoso para un agente
|
|
102
|
+
* que explora proyectos XOne: 100 resultados bastan para localizar candidatos y
|
|
103
|
+
* el modelo puede subirlo explícitamente en una búsqueda excepcional.
|
|
104
|
+
*
|
|
105
|
+
* A partir de 6k tokens la salida se conserva bajo `/large_tool_results/` y se
|
|
106
|
+
* sustituye por una referencia paginable. Así una lectura o búsqueda accidental
|
|
107
|
+
* no consume toda la ventana antes de que actúe el resumen de conversación.
|
|
108
|
+
*
|
|
109
|
+
* **Esa carpeta se monta FUERA del proyecto** (`core/descargas.ts`,
|
|
110
|
+
* `agent/proyecto.ts#backendConDescargas`), y hasta el 10-09-2026 no: la escribe la librería
|
|
111
|
+
* llamando al backend directamente, esa ruta no estaba montada en ninguna parte y caía en el
|
|
112
|
+
* `FilesystemBackend` de la raíz. Medido en el AppDemo real del usuario, 26 KB de salida
|
|
113
|
+
* cruda de una tool dentro de la app XOne y commiteados. Bajar este tope no era el arreglo:
|
|
114
|
+
* el desalojo es la función, el fallo era el sitio.
|
|
115
|
+
*/
|
|
116
|
+
export const OPCIONES_BUSQUEDA_FICHEROS = {
|
|
117
|
+
grepMaxCount: 100,
|
|
118
|
+
toolTokenLimitBeforeEvict: 6_000,
|
|
119
|
+
};
|
|
16
120
|
/**
|
|
17
121
|
* El agente real.
|
|
18
122
|
*
|
|
@@ -29,17 +133,95 @@ export const PROMPT_ORQUESTADOR = [
|
|
|
29
133
|
* 4. **El HITL va en las tools de fichero**, que en la v1 son las que escriben.
|
|
30
134
|
*/
|
|
31
135
|
export async function construirAgente(opciones) {
|
|
32
|
-
|
|
136
|
+
// Las cuatro capas y su orden están en `backendDeAgente`, que vive en `proyecto.ts` para
|
|
137
|
+
// poder PROBARSE: aquí no había forma, porque `construirAgente` se simula en todos los
|
|
138
|
+
// tests que lo tocan y el cableado se quedaba sin nadie mirándolo.
|
|
139
|
+
const backend = backendDeAgente({
|
|
140
|
+
raiz: opciones.raiz,
|
|
141
|
+
ficheros: opciones.ficheros,
|
|
142
|
+
...(opciones.artefactos === undefined ? {} : { artefactos: opciones.artefactos }),
|
|
143
|
+
...(opciones.adjuntos === undefined ? {} : { adjuntos: opciones.adjuntos }),
|
|
144
|
+
});
|
|
33
145
|
// Si no hay tracker, no se añade el middleware: es opcional a propósito arriba.
|
|
34
|
-
const middlewareTracker =
|
|
35
|
-
|
|
146
|
+
const middlewareTracker = (origen) => opciones.tracker
|
|
147
|
+
? [
|
|
148
|
+
createTokenTrackingMiddleware(opciones.tracker, alContarDelTracker(origen, opciones.diagnostico, opciones.alContarTokens)),
|
|
149
|
+
]
|
|
150
|
+
: [];
|
|
151
|
+
// El catálogo, una vez por construcción y no una por agente: `catalogo()` es un puerto y
|
|
152
|
+
// llamarlo N veces para preguntarle lo mismo es trabajo por nada.
|
|
153
|
+
const catalogoDeSkills = new Set(opciones.skills.catalogo().map((s) => s.nombre));
|
|
154
|
+
/**
|
|
155
|
+
* Los que corren FUERA: Claude Code y compañía.
|
|
156
|
+
*
|
|
157
|
+
* Entran como `CompiledSubAgent` —`{name, description, runnable}`, que deepagents acepta
|
|
158
|
+
* junto a los normales— y no como `SubAgent`: eso último es modelo + prompt + tools, y
|
|
159
|
+
* aquí no hay modelo nuestro que poner. Con esto los tres motores llegan al orquestador
|
|
160
|
+
* por el MISMO `task`, y él no tiene que saber de qué está hecho cada especialista.
|
|
161
|
+
*
|
|
162
|
+
* Se pregunta si el motor está DISPONIBLE antes de montarlo. Un especialista que el
|
|
163
|
+
* orquestador puede elegir y que revienta en cuanto lo elige es un botón muerto dentro del
|
|
164
|
+
* grafo: peor que uno de interfaz, porque el que lo pulsa es el modelo y se lo cree.
|
|
165
|
+
*/
|
|
166
|
+
const externos = [];
|
|
167
|
+
for (const agente of opciones.agentes.filter((a) => a.motor !== "modelo")) {
|
|
168
|
+
const motor = agente.motor;
|
|
169
|
+
if (!(await opciones.subagenteExterno.disponible(motor)))
|
|
170
|
+
continue;
|
|
171
|
+
externos.push({
|
|
172
|
+
name: agente.nombre,
|
|
173
|
+
description: agente.descripcion,
|
|
174
|
+
runnable: RunnableLambda.from(async (entrada) => {
|
|
175
|
+
// La tarea es el último mensaje que le pasa el orquestador. El hijo no comparte
|
|
176
|
+
// transcript —es un proceso aparte, con su propia sesión—, así que lo que no venga
|
|
177
|
+
// en esa descripción no existe para él: es la misma regla del handoff que el prompt
|
|
178
|
+
// del orquestador ya impone entre especialistas.
|
|
179
|
+
const ultimo = entrada.messages?.at(-1);
|
|
180
|
+
const tarea = typeof ultimo?.content === "string" ? ultimo.content : String(ultimo?.content ?? "");
|
|
181
|
+
const texto = await opciones.subagenteExterno.correr({
|
|
182
|
+
motor,
|
|
183
|
+
cwd: opciones.raiz,
|
|
184
|
+
/**
|
|
185
|
+
* Sus instrucciones MÁS el inventario del proyecto. Ese añadido no es un lujo: un
|
|
186
|
+
* hijo de Claude Code no tiene ninguna herramienta para listar carpetas —medido—,
|
|
187
|
+
* así que sin él lee a ciegas nombres inventados y concluye que el proyecto está
|
|
188
|
+
* vacío. Se le dice lo que el harness ya sabe, que es el patrón de `/adjuntos/`.
|
|
189
|
+
*/
|
|
190
|
+
instrucciones: `${promptDeAgente(agente, repartirSkills(agente, catalogoDeSkills))}\n\n${inventarioDelProyecto(opciones.ficheros)}`,
|
|
191
|
+
tarea,
|
|
192
|
+
// El modelo del producto que pida su `.md`, si pide alguno. Ausente = el que el
|
|
193
|
+
// agente externo use por su cuenta, que es lo de siempre.
|
|
194
|
+
...(agente.modelo === undefined ? {} : { modelo: agente.modelo }),
|
|
195
|
+
/**
|
|
196
|
+
* Lo que diga su `.md`, y nada más. Es la PRIMERA de dos puertas: con esto en
|
|
197
|
+
* cierto, cada escritura pasa además por la política de la sesión y por las
|
|
198
|
+
* guardas de ruta (`agent/escrituraExterna.ts`). Un agente de solo lectura no
|
|
199
|
+
* llega a preguntar.
|
|
200
|
+
*/
|
|
201
|
+
permitirEscritura: !agente.soloLectura,
|
|
202
|
+
// Para poder decir QUIÉN pide la escritura en la petición de aprobación: la tool
|
|
203
|
+
// es la misma para todos los especialistas, así que sin esto el diff diría
|
|
204
|
+
// «alguien quiere escribir». Es el papel del `[dev]` que `hitlDe` mete en la
|
|
205
|
+
// descripción de un interrupt del grafo.
|
|
206
|
+
agente: agente.nombre,
|
|
207
|
+
});
|
|
208
|
+
return { messages: [new AIMessage(texto)] };
|
|
209
|
+
}),
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
const subagentes = opciones.agentes
|
|
213
|
+
.filter((a) => a.motor === "modelo")
|
|
214
|
+
.map((perfil) => ({
|
|
36
215
|
name: perfil.nombre,
|
|
37
216
|
description: perfil.descripcion,
|
|
38
|
-
systemPrompt:
|
|
39
|
-
//
|
|
40
|
-
// para
|
|
41
|
-
|
|
42
|
-
// `
|
|
217
|
+
systemPrompt: promptDeAgente(perfil, repartirSkills(perfil, catalogoDeSkills)),
|
|
218
|
+
// Los subagentes no heredan las skills del orquestador. Se entregan como fuentes
|
|
219
|
+
// directas para mantener cada perfil limitado a su catálogo declarado.
|
|
220
|
+
skills: rutasDeSkills(perfil, catalogoDeSkills),
|
|
221
|
+
// `tools` solo lleva tools PROPIAS. Pasarle los NOMBRES de las de fichero las sustituía
|
|
222
|
+
// por cadenas, dejando al especialista sin ninguna capacidad real. Las de fichero las
|
|
223
|
+
// monta el middleware; regex_search es una tool real y confinada al mismo backend.
|
|
224
|
+
tools: [crearBusquedaRegex(backend)],
|
|
43
225
|
//
|
|
44
226
|
// Las tools de fichero las monta el `FilesystemMiddleware` a partir del backend, y
|
|
45
227
|
// quien las acota por NOMBRE es su propia opción `tools` (con la restricción de que
|
|
@@ -50,21 +232,77 @@ export async function construirAgente(opciones) {
|
|
|
50
232
|
interruptOn: hitlDe(perfil),
|
|
51
233
|
// En CADA especialista, no solo en el orquestador: son ellos los que llaman a las
|
|
52
234
|
// tools de fichero, así que es su siguiente llamada al modelo la que reventaba.
|
|
53
|
-
middleware:
|
|
54
|
-
|
|
235
|
+
// El nombre coincide con el middleware por defecto de DeepAgents y lo sustituye: así
|
|
236
|
+
// aplica tanto al especialista como al orquestador.
|
|
237
|
+
middleware: [
|
|
238
|
+
createFilesystemMiddleware({
|
|
239
|
+
backend,
|
|
240
|
+
permissions: permisosDe(perfil),
|
|
241
|
+
customToolDescriptions: DESCRIPCIONES_FICHEROS,
|
|
242
|
+
...OPCIONES_BUSQUEDA_FICHEROS,
|
|
243
|
+
}),
|
|
244
|
+
resumenDeContexto(backend),
|
|
245
|
+
middlewareTextoDeTool(),
|
|
246
|
+
...middlewareTracker(perfil.nombre),
|
|
247
|
+
],
|
|
248
|
+
// El modelo que fije el agente en su fichero, y si no lo fija, el del papel que le
|
|
249
|
+
// toca por lo que hace: `rapido` para el que solo lee, `trabajo` para el que escribe.
|
|
250
|
+
// Fijarlo es la excepción y no la norma — un agente con modelo escrito se queda ahí
|
|
251
|
+
// aunque el usuario cambie el suyo con `/modelo`, que es justo lo que quiere quien
|
|
252
|
+
// escribe «este revisor corre con Claude» y no lo que quiere nadie más.
|
|
253
|
+
model: perfil.modelo === undefined
|
|
254
|
+
? opciones.modelos.paraPapel(perfil.soloLectura ? "rapido" : "trabajo")
|
|
255
|
+
: opciones.modelos.paraModelo(perfil.modelo),
|
|
55
256
|
}));
|
|
56
257
|
return createDeepAgent({
|
|
57
258
|
model: opciones.modelos.paraPapel("rapido"),
|
|
58
|
-
systemPrompt:
|
|
259
|
+
systemPrompt: promptOrquestador(opciones.agentes),
|
|
59
260
|
backend,
|
|
261
|
+
interruptOn: hitlDe(PERFIL_DEL_ORQUESTADOR),
|
|
60
262
|
checkpointer: opciones.checkpointer ?? new MemorySaver(),
|
|
61
263
|
// El contenido de los `ToolMessage` va como TEXTO al modelo. Sin esto, un turno real
|
|
62
264
|
// revienta tras 8-10 tools con «Non string tool message content is not supported» —
|
|
63
265
|
// y no es de langchain ni de deepagents, sino de `@langchain/ollama` (ver
|
|
64
266
|
// `textoDeTool.ts`). Medido con dos modelos, nube y local.
|
|
65
|
-
middleware: [
|
|
267
|
+
middleware: [
|
|
268
|
+
createFilesystemMiddleware({
|
|
269
|
+
backend,
|
|
270
|
+
/**
|
|
271
|
+
* EL ORQUESTADOR VA DE SOLO LECTURA, que es lo que su propio prompt afirma.
|
|
272
|
+
*
|
|
273
|
+
* Esto faltaba, y fue un agujero declarado durante toda una tanda: `permissions`
|
|
274
|
+
* solo lo recibían los subagentes, así que las seis tools de fichero de aquí
|
|
275
|
+
* corrían sin ninguna de las denegaciones estructurales. Medido: contestaba
|
|
276
|
+
* «Successfully wrote» a `/.env`, a `/skills/pwn.txt` —que aterrizaba en la
|
|
277
|
+
* carpeta `skills/` de ESTE repo, o sea en las instrucciones del propio harness—
|
|
278
|
+
* y, desde los adjuntos, en `~/.xonecode/tareas/<id>/adjuntos/`, fuera del
|
|
279
|
+
* proyecto. Lo único que lo tapaba era el prompt, que es exactamente lo que este
|
|
280
|
+
* repo no acepta como barrera. Y el HITL tampoco alcanzaba: `hitlDe` se monta por
|
|
281
|
+
* subagente, así que una escritura de aquí no pasaba por ninguna aprobación.
|
|
282
|
+
*
|
|
283
|
+
* **Se le ponen permisos en vez de quitarle las tools**, que era la otra opción
|
|
284
|
+
* sobre la mesa, y el motivo es el comentario de abajo: este middleware SUSTITUYE
|
|
285
|
+
* al de por omisión de deepagents porque comparte nombre. Quitarlo podría
|
|
286
|
+
* reinstalar el suyo —sin permisos— y reabrir el agujero por accidente; ponerle
|
|
287
|
+
* `permissions` no puede.
|
|
288
|
+
*
|
|
289
|
+
* `soloLectura: true` añade `deny write /**`, así que el orquestador conserva
|
|
290
|
+
* `read`/`ls`/`glob`/`grep` para orientarse y no puede tocar el disco por ninguna
|
|
291
|
+
* ruta. `interruptOn` va por espejo con la rama de los subagentes: `hitlDe`
|
|
292
|
+
* devuelve `{}` para un perfil de solo lectura —no hay nada que aprobar—, y
|
|
293
|
+
* escribirlo aquí es lo que hace que las dos ramas se lean iguales.
|
|
294
|
+
*/
|
|
295
|
+
permissions: permisosDe(PERFIL_DEL_ORQUESTADOR),
|
|
296
|
+
customToolDescriptions: DESCRIPCIONES_FICHEROS,
|
|
297
|
+
...OPCIONES_BUSQUEDA_FICHEROS,
|
|
298
|
+
}),
|
|
299
|
+
resumenDeContexto(backend),
|
|
300
|
+
middlewareTextoDeTool(),
|
|
301
|
+
...middlewareTracker("orquestador"),
|
|
302
|
+
],
|
|
66
303
|
subagents: [
|
|
67
304
|
...subagentes,
|
|
305
|
+
...externos,
|
|
68
306
|
{
|
|
69
307
|
name: "general-purpose",
|
|
70
308
|
description: "NO USAR. No tiene ninguna capacidad de XOne, así que cualquier respuesta sobre el proyecto o la plataforma sería inventada.",
|
|
@@ -76,31 +314,34 @@ export async function construirAgente(opciones) {
|
|
|
76
314
|
});
|
|
77
315
|
}
|
|
78
316
|
/**
|
|
79
|
-
*
|
|
317
|
+
* Rutas virtuales que SkillsMiddleware carga de forma progresiva para un agente.
|
|
318
|
+
*
|
|
319
|
+
* Recibe el AGENTE y no su nombre: antes buscaba el perfil en `PERFILES`, y con subagentes
|
|
320
|
+
* escritos por el usuario ese `Record` no tiene su entrada — `perfil.skills` habría
|
|
321
|
+
* reventado con «cannot read properties of undefined» en cuanto alguien creara el primero.
|
|
322
|
+
*
|
|
323
|
+
* Solo las que EXISTEN. Una ruta a una skill que no está haría que el middleware fallara al
|
|
324
|
+
* montarla; que falte se dice en el prompt (`promptDeAgente`), que es donde se puede leer.
|
|
325
|
+
*/
|
|
326
|
+
export function rutasDeSkills(agente, disponibles) {
|
|
327
|
+
return agente.skills.filter((skill) => disponibles.has(skill)).map((skill) => `/skills/${skill}/`);
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Lo que se hace cada vez que el tracker cuenta: avisar a los DOS que lo esperan.
|
|
80
331
|
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
332
|
+
* **Extraída y exportada porque uno de los dos se cayó**, y en verde: el callback nació
|
|
333
|
+
* llamando solo al diagnóstico, así que el aviso de consumo tenía un único disparador —el
|
|
334
|
+
* de un agente EXTERNO— y una sesión normal subía sus tokens en silencio. Medido en la
|
|
335
|
+
* pantalla del usuario: el contador de la web no apareció nunca. Con la composición dentro
|
|
336
|
+
* de `construirAgente`, que todos sus tests doblan, no había dónde cazarlo.
|
|
337
|
+
*
|
|
338
|
+
* `alContarTokens` no lleva el uso dentro a propósito: quien escucha tiene el tracker —es
|
|
339
|
+
* él quien lo pasó— y dos fuentes para el mismo número son dos números que divergen.
|
|
83
340
|
*/
|
|
84
|
-
export function
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
return [
|
|
90
|
-
perfil.descripcion,
|
|
91
|
-
"",
|
|
92
|
-
"REGLAS DE XONE, no negociables:",
|
|
93
|
-
"- No es desarrollo web: no existen DOM, React, Vue, ni `async/await` en el runtime.",
|
|
94
|
-
"- La fuente de una colección es su `.xne`. Los `.xml` los genera Studio y no se tocan.",
|
|
95
|
-
"- No inventes atributos XML, funciones ni propiedades CSS: XOne ignora lo desconocido",
|
|
96
|
-
" en silencio, así que un invento no da error — da un bug mudo.",
|
|
97
|
-
"",
|
|
98
|
-
suyas.length ? `Tus skills: ${suyas.join(", ")}. Cárgalas antes de responder.` : "",
|
|
99
|
-
// Patrón 4: un doble nunca se disfraza. Si falta una skill, se dice — no se calla.
|
|
100
|
-
faltan.length ? `AVISO: te faltan estas skills y no las tienes: ${faltan.join(", ")}.` : "",
|
|
101
|
-
perfil.soloLectura ? "No modificas nada." : "Tus escrituras requieren aprobación humana. Si te la rechazan, no insistas: explica qué pretendías y por qué.",
|
|
102
|
-
]
|
|
103
|
-
.filter(Boolean)
|
|
104
|
-
.join("\n");
|
|
341
|
+
export function alContarDelTracker(origen, diagnostico, alContarTokens) {
|
|
342
|
+
return (uso) => {
|
|
343
|
+
diagnostico?.modelo(origen, uso);
|
|
344
|
+
alContarTokens?.();
|
|
345
|
+
};
|
|
105
346
|
}
|
|
106
347
|
//# sourceMappingURL=xoneAgent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xoneAgent.js","sourceRoot":"","sources":["../../src/agent/xoneAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"xoneAgent.js","sourceRoot":"","sources":["../../src/agent/xoneAgent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracción del ZIP que devuelve CloudStudio.
|
|
3
|
+
*
|
|
4
|
+
* `fflate` es JS puro: no hay binario nativo que compilar ni `unzip` del sistema que
|
|
5
|
+
* falte en Windows, y la suite puede fabricar un ZIP en el propio test sin red.
|
|
6
|
+
*/
|
|
7
|
+
import { mkdirSync, writeFileSync } from "node:fs";
|
|
8
|
+
import { dirname, resolve, sep } from "node:path";
|
|
9
|
+
import { unzipSync } from "fflate";
|
|
10
|
+
/**
|
|
11
|
+
* La guarda de contención: una ruta con `../` o absoluta escribiría fuera de la raíz.
|
|
12
|
+
* Se comprueba sobre la ruta YA resuelta, porque comparar cadenas antes de resolver deja
|
|
13
|
+
* pasar `a/../../x`. Se aborta entero: un ZIP que intenta esto no es de fiar en ninguna
|
|
14
|
+
* de sus entradas.
|
|
15
|
+
*
|
|
16
|
+
* Se exporta porque la vía degradada (`agent/descarga.ts`) escribe y BORRA con rutas que
|
|
17
|
+
* vienen del JSON del servidor exactamente igual de crudas: tener la guarda solo en el
|
|
18
|
+
* camino del ZIP era la asimetría, no una decisión.
|
|
19
|
+
*/
|
|
20
|
+
export function destinoSeguro(raiz, entrada) {
|
|
21
|
+
const base = resolve(raiz);
|
|
22
|
+
const destino = resolve(base, entrada);
|
|
23
|
+
if (destino !== base && !destino.startsWith(base + sep)) {
|
|
24
|
+
throw new Error(`«${entrada}» apunta fuera de la raíz del proyecto`);
|
|
25
|
+
}
|
|
26
|
+
return destino;
|
|
27
|
+
}
|
|
28
|
+
/** Devuelve las rutas escritas, relativas y en POSIX (las del manifiesto y las de MCP). */
|
|
29
|
+
export function extraerZipBase64(base64, raiz) {
|
|
30
|
+
let entradas;
|
|
31
|
+
try {
|
|
32
|
+
entradas = unzipSync(new Uint8Array(Buffer.from(base64, "base64")));
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
// El mensaje no lleva el contenido: acaba en logs y en capturas de pantalla.
|
|
36
|
+
throw new Error(`la descarga no es un ZIP válido (${error.message})`);
|
|
37
|
+
}
|
|
38
|
+
const escritas = [];
|
|
39
|
+
const planificadas = Object.entries(entradas)
|
|
40
|
+
// Las entradas de directorio vienen con barra final y sin contenido.
|
|
41
|
+
.filter(([nombre]) => !nombre.endsWith("/"))
|
|
42
|
+
.map(([nombre, datos]) => ({ nombre, datos, destino: destinoSeguro(raiz, nombre) }));
|
|
43
|
+
// Se resuelven TODAS las rutas antes de escribir ninguna: si una es maliciosa, no
|
|
44
|
+
// queda medio proyecto en disco.
|
|
45
|
+
for (const { nombre, datos, destino } of planificadas) {
|
|
46
|
+
mkdirSync(dirname(destino), { recursive: true });
|
|
47
|
+
writeFileSync(destino, datos);
|
|
48
|
+
escritas.push(nombre.split(sep).join("/"));
|
|
49
|
+
}
|
|
50
|
+
return escritas;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=zip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip.js","sourceRoot":"","sources":["../../src/agent/zip.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAQ,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAAe;IACzD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,IAAI,OAAO,wCAAwC,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,IAAY;IAC3D,IAAI,QAAoC,CAAC;IACzC,IAAI,CAAC;QACH,QAAQ,GAAG,SAAS,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,6EAA6E;QAC7E,MAAM,IAAI,KAAK,CAAC,oCAAqC,KAAe,CAAC,OAAO,GAAG,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC3C,qEAAqE;SACpE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAC3C,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAEvF,kFAAkF;IAClF,iCAAiC;IACjC,KAAK,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,YAAY,EAAE,CAAC;QACtD,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* El acuse de `/modelo` — la frase tiene UN solo hogar.
|
|
3
|
+
*
|
|
4
|
+
* `consola.ts` la escribe y `tui/correrTui.ts` la re-parsea para actualizar la
|
|
5
|
+
* sidebar (el eco de `escribir` es la única costura que tienen los manejadores de
|
|
6
|
+
* consola para avisar de un cambio en caliente). Antes eran dos copias — el literal
|
|
7
|
+
* y un regex escrito a mano — sin nada que probara que decían lo mismo: si alguien
|
|
8
|
+
* retocaba la frase, la sidebar dejaba de enterarse sin que ningún test fallara.
|
|
9
|
+
* Escribir y leer viven aquí, y el test de ida y vuelta ata el par.
|
|
10
|
+
*/
|
|
11
|
+
import { PAPELES } from "../core/modelos.js";
|
|
12
|
+
/** El acuse de un cambio de modelo: el papel ausente es «los tres papeles a la vez». */
|
|
13
|
+
export function acuseDeModelo(papel, modelo) {
|
|
14
|
+
return papel === undefined
|
|
15
|
+
? `modelo (los tres papeles): ${modelo}\n`
|
|
16
|
+
: `modelo ${papel}: ${modelo}\n`;
|
|
17
|
+
}
|
|
18
|
+
const LOS_TRES = /^modelo \(los tres papeles\): (.+)\n$/;
|
|
19
|
+
const UN_PAPEL = new RegExp(`^modelo (${PAPELES.join("|")}): (.+)\\n$`);
|
|
20
|
+
/** El acuse parseado: `{ modelo }` si cambiaron los tres, `{ papel, modelo }` si cambió uno. */
|
|
21
|
+
export function modeloDeAcuse(texto) {
|
|
22
|
+
const tres = LOS_TRES.exec(texto);
|
|
23
|
+
if (tres)
|
|
24
|
+
return { modelo: tres[1] };
|
|
25
|
+
const uno = UN_PAPEL.exec(texto);
|
|
26
|
+
if (uno)
|
|
27
|
+
return { papel: uno[1], modelo: uno[2] };
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=acuseDeModelo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acuseDeModelo.js","sourceRoot":"","sources":["../../src/cli/acuseDeModelo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,wFAAwF;AACxF,MAAM,UAAU,aAAa,CAAC,KAAwB,EAAE,MAAc;IACpE,OAAO,KAAK,KAAK,SAAS;QACxB,CAAC,CAAC,8BAA8B,MAAM,IAAI;QAC1C,CAAC,CAAC,UAAU,KAAK,KAAK,MAAM,IAAI,CAAC;AACrC,CAAC;AAED,MAAM,QAAQ,GAAG,uCAAuC,CAAC;AACzD,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,YAAY,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAExE,gGAAgG;AAChG,MAAM,UAAU,aAAa,CAC3B,KAAa;IAEb,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAE,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,GAAG;QAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAU,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAE,EAAE,CAAC;IAC5D,OAAO,SAAS,CAAC;AACnB,CAAC"}
|