xonecode 0.2.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -7
- package/THIRD_PARTY_NOTICES.md +128 -0
- package/apps/web/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/apps/web/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/apps/web/dist/assets/c-BIGW1oBm.js +1 -0
- package/apps/web/dist/assets/cpp-DddhVWhK.js +1 -0
- package/apps/web/dist/assets/csharp-DSvCPggb.js +1 -0
- package/apps/web/dist/assets/css-CLj8gQPS.js +1 -0
- package/apps/web/dist/assets/go-C27-OAKa.js +1 -0
- package/apps/web/dist/assets/html-CfGypltT.js +1 -0
- package/apps/web/dist/assets/index-BB3SamhR.css +1 -0
- package/apps/web/dist/assets/index-CFYAoHdw.js +477 -0
- package/apps/web/dist/assets/ini-BEwlwnbL.js +1 -0
- package/apps/web/dist/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- package/apps/web/dist/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- package/apps/web/dist/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- package/apps/web/dist/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- package/apps/web/dist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- package/apps/web/dist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- package/apps/web/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- package/apps/web/dist/assets/java-CylS5w8V.js +1 -0
- package/apps/web/dist/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
- package/apps/web/dist/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
- package/apps/web/dist/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
- package/apps/web/dist/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
- package/apps/web/dist/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
- package/apps/web/dist/assets/kotlin-BdnUsdx6.js +1 -0
- package/apps/web/dist/assets/less-B1dDrJ26.js +1 -0
- package/apps/web/dist/assets/lua-BaeVxFsk.js +1 -0
- package/apps/web/dist/assets/markdown-Cvjx9yec.js +1 -0
- package/apps/web/dist/assets/mdx-Cmh6b_Ma.js +1 -0
- package/apps/web/dist/assets/php-D_2--9WK.js +1 -0
- package/apps/web/dist/assets/python-B6aJPvgy.js +1 -0
- package/apps/web/dist/assets/ruby-DSHSDbk1.js +1 -0
- package/apps/web/dist/assets/rust-B1yitclQ.js +1 -0
- package/apps/web/dist/assets/scss-D5BDwBP9.js +1 -0
- package/apps/web/dist/assets/sql-CRqJ_cUM.js +1 -0
- package/apps/web/dist/assets/swift-C2oV4EkX.js +1 -0
- package/apps/web/dist/assets/toml-vGWfd6FD.js +1 -0
- package/apps/web/dist/assets/xml-sdJ4AIDG.js +1 -0
- package/apps/web/dist/assets/yaml-Buea-lGh.js +1 -0
- package/apps/web/dist/iconos/xonecode.png +0 -0
- package/apps/web/dist/index.html +20 -0
- package/dist/agent/agentesEnDisco.js +539 -0
- package/dist/agent/agentesEnDisco.js.map +1 -0
- package/dist/agent/arbolDeProyecto.js +245 -0
- package/dist/agent/arbolDeProyecto.js.map +1 -0
- package/dist/agent/artefactosEnDisco.js +139 -0
- package/dist/agent/artefactosEnDisco.js.map +1 -0
- package/dist/agent/aumentador.js +175 -0
- package/dist/agent/aumentador.js.map +1 -0
- package/dist/agent/authEnDisco.js +76 -1
- package/dist/agent/authEnDisco.js.map +1 -1
- package/dist/agent/busquedaRegex.js +92 -0
- package/dist/agent/busquedaRegex.js.map +1 -0
- package/dist/agent/catalogoModelos.js +345 -0
- package/dist/agent/catalogoModelos.js.map +1 -0
- package/dist/agent/checkpointer.js +127 -0
- package/dist/agent/checkpointer.js.map +1 -0
- package/dist/agent/cloudstudioClient.js +194 -0
- package/dist/agent/cloudstudioClient.js.map +1 -0
- package/dist/agent/cloudstudioMcp.js +722 -0
- package/dist/agent/cloudstudioMcp.js.map +1 -0
- package/dist/agent/configEnDisco.js +309 -11
- package/dist/agent/configEnDisco.js.map +1 -1
- package/dist/agent/consumoExterno.js +99 -0
- package/dist/agent/consumoExterno.js.map +1 -0
- package/dist/agent/descarga.js +149 -0
- package/dist/agent/descarga.js.map +1 -0
- package/dist/agent/diagnosticoDeTools.js +51 -0
- package/dist/agent/diagnosticoDeTools.js.map +1 -0
- package/dist/agent/dispositivosEnMaquina.js +596 -0
- package/dist/agent/dispositivosEnMaquina.js.map +1 -0
- package/dist/agent/escrituraDeCodex.js +134 -0
- package/dist/agent/escrituraDeCodex.js.map +1 -0
- package/dist/agent/escrituraDeOpencode.js +80 -0
- package/dist/agent/escrituraDeOpencode.js.map +1 -0
- package/dist/agent/escrituraExterna.js +742 -0
- package/dist/agent/escrituraExterna.js.map +1 -0
- package/dist/agent/gemini.js +81 -0
- package/dist/agent/gemini.js.map +1 -0
- package/dist/agent/git.js +83 -0
- package/dist/agent/git.js.map +1 -0
- package/dist/agent/gitSync.js +441 -0
- package/dist/agent/gitSync.js.map +1 -0
- package/dist/agent/hotswap.js +448 -0
- package/dist/agent/hotswap.js.map +1 -0
- package/dist/agent/instalacionEnMaquina.js +252 -0
- package/dist/agent/instalacionEnMaquina.js.map +1 -0
- package/dist/agent/instantanea.js +7 -10
- package/dist/agent/instantanea.js.map +1 -1
- package/dist/agent/interrupts.js +11 -2
- package/dist/agent/interrupts.js.map +1 -1
- package/dist/agent/juezDeTarea.js +345 -0
- package/dist/agent/juezDeTarea.js.map +1 -0
- package/dist/agent/lanzamientoEnMaquina.js +377 -0
- package/dist/agent/lanzamientoEnMaquina.js.map +1 -0
- package/dist/agent/manifiesto.js +59 -0
- package/dist/agent/manifiesto.js.map +1 -0
- package/dist/agent/memoriaDeProyecto.js +60 -0
- package/dist/agent/memoriaDeProyecto.js.map +1 -0
- package/dist/agent/modelos.js +105 -17
- package/dist/agent/modelos.js.map +1 -1
- package/dist/agent/modelosDeMotor.js +204 -0
- package/dist/agent/modelosDeMotor.js.map +1 -0
- package/dist/agent/paqueteDelProyecto.js +181 -0
- package/dist/agent/paqueteDelProyecto.js.map +1 -0
- package/dist/agent/perfiles.js +92 -31
- package/dist/agent/perfiles.js.map +1 -1
- package/dist/agent/persona.js +40 -0
- package/dist/agent/persona.js.map +1 -0
- package/dist/agent/procesosEnMaquina.js +204 -0
- package/dist/agent/procesosEnMaquina.js.map +1 -0
- package/dist/agent/proyecto.js +311 -13
- package/dist/agent/proyecto.js.map +1 -1
- package/dist/agent/puente.js +63 -6
- package/dist/agent/puente.js.map +1 -1
- package/dist/agent/resumenDeContexto.js +30 -0
- package/dist/agent/resumenDeContexto.js.map +1 -0
- package/dist/agent/resumenDeTool.js +64 -18
- package/dist/agent/resumenDeTool.js.map +1 -1
- package/dist/agent/sesionGit.js +481 -0
- package/dist/agent/sesionGit.js.map +1 -0
- package/dist/agent/settingsEnDisco.js +189 -0
- package/dist/agent/settingsEnDisco.js.map +1 -0
- package/dist/agent/subagenteCodex.js +368 -0
- package/dist/agent/subagenteCodex.js.map +1 -0
- package/dist/agent/subagenteExterno.js +423 -0
- package/dist/agent/subagenteExterno.js.map +1 -0
- package/dist/agent/subagenteOpencode.js +389 -0
- package/dist/agent/subagenteOpencode.js.map +1 -0
- package/dist/agent/subida.js +202 -0
- package/dist/agent/subida.js.map +1 -0
- package/dist/agent/tareasEnDisco.js +466 -0
- package/dist/agent/tareasEnDisco.js.map +1 -0
- package/dist/agent/turnoReal.js +663 -50
- package/dist/agent/turnoReal.js.map +1 -1
- package/dist/agent/versionEnDisco.js +48 -0
- package/dist/agent/versionEnDisco.js.map +1 -0
- package/dist/agent/xoneAgent.js +290 -49
- package/dist/agent/xoneAgent.js.map +1 -1
- package/dist/agent/zip.js +52 -0
- package/dist/agent/zip.js.map +1 -0
- package/dist/cli/acuseDeModelo.js +30 -0
- package/dist/cli/acuseDeModelo.js.map +1 -0
- package/dist/cli/aprobar.js +55 -2
- package/dist/cli/aprobar.js.map +1 -1
- package/dist/cli/config.js +9 -13
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/consola.js +750 -19
- package/dist/cli/consola.js.map +1 -1
- package/dist/cli/main.js +740 -81
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/markdown.js +188 -2
- package/dist/cli/markdown.js.map +1 -1
- package/dist/cli/run.js +32 -4
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/stdio.js +46 -19
- package/dist/cli/stdio.js.map +1 -1
- package/dist/cli/tema.js +96 -8
- package/dist/cli/tema.js.map +1 -1
- package/dist/cli/tokens.js +29 -0
- package/dist/cli/tokens.js.map +1 -0
- package/dist/cli/tui/app.js +171 -0
- package/dist/cli/tui/app.js.map +1 -0
- package/dist/cli/tui/aprobarTui.js +80 -0
- package/dist/cli/tui/aprobarTui.js.map +1 -0
- package/dist/cli/tui/barra.js +37 -0
- package/dist/cli/tui/barra.js.map +1 -0
- package/dist/cli/tui/correrTui.js +478 -0
- package/dist/cli/tui/correrTui.js.map +1 -0
- package/dist/cli/tui/entrada.js +166 -0
- package/dist/cli/tui/entrada.js.map +1 -0
- package/dist/cli/tui/filas.js +24 -0
- package/dist/cli/tui/filas.js.map +1 -0
- package/dist/cli/tui/logo.js +49 -0
- package/dist/cli/tui/logo.js.map +1 -0
- package/dist/cli/tui/pielTui.js +14 -0
- package/dist/cli/tui/pielTui.js.map +1 -0
- package/dist/cli/tui/raton.js +126 -0
- package/dist/cli/tui/raton.js.map +1 -0
- package/dist/cli/tui/sidebar.js +86 -0
- package/dist/cli/tui/sidebar.js.map +1 -0
- package/dist/cli/tui/store.js +143 -0
- package/dist/cli/tui/store.js.map +1 -0
- package/dist/cli/tui/tarjeta.js +19 -0
- package/dist/cli/tui/tarjeta.js.map +1 -0
- package/dist/cli/tui/temaInk.js +114 -0
- package/dist/cli/tui/temaInk.js.map +1 -0
- package/dist/cli/tui/transcript.js +254 -0
- package/dist/cli/tui/transcript.js.map +1 -0
- package/dist/cli/wizardInicial.js +240 -0
- package/dist/cli/wizardInicial.js.map +1 -0
- package/dist/core/actos.js +113 -0
- package/dist/core/actos.js.map +1 -0
- package/dist/core/adjuntos.js +97 -0
- package/dist/core/adjuntos.js.map +1 -0
- package/dist/core/agentes.js +227 -0
- package/dist/core/agentes.js.map +1 -0
- package/dist/core/artefactos.js +149 -0
- package/dist/core/artefactos.js.map +1 -0
- package/dist/core/cloudstudio.js +7 -0
- package/dist/core/cloudstudio.js.map +1 -0
- package/dist/core/config.js +212 -5
- package/dist/core/config.js.map +1 -1
- package/dist/core/contextos.js +53 -1
- package/dist/core/contextos.js.map +1 -1
- package/dist/core/descargas.js +106 -0
- package/dist/core/descargas.js.map +1 -0
- package/dist/core/descriptoresDeApp.js +279 -0
- package/dist/core/descriptoresDeApp.js.map +1 -0
- package/dist/core/dispositivos.js +466 -0
- package/dist/core/dispositivos.js.map +1 -0
- package/dist/core/entrega.js +141 -0
- package/dist/core/entrega.js.map +1 -0
- package/dist/core/entrelazar.js +90 -0
- package/dist/core/entrelazar.js.map +1 -0
- package/dist/core/esqueleto.js +10 -0
- package/dist/core/esqueleto.js.map +1 -1
- package/dist/core/modelos.js +235 -3
- package/dist/core/modelos.js.map +1 -1
- package/dist/core/notify.js +27 -9
- package/dist/core/notify.js.map +1 -1
- package/dist/core/planDeSubida.js +127 -0
- package/dist/core/planDeSubida.js.map +1 -0
- package/dist/core/ports.js +189 -1
- package/dist/core/ports.js.map +1 -1
- package/dist/core/puedeLanzarse.js +239 -0
- package/dist/core/puedeLanzarse.js.map +1 -0
- package/dist/core/rutaVirtual.js +42 -0
- package/dist/core/rutaVirtual.js.map +1 -0
- package/dist/core/settings.js +246 -0
- package/dist/core/settings.js.map +1 -0
- package/dist/core/tareas.js +230 -0
- package/dist/core/tareas.js.map +1 -0
- package/dist/core/textos.js +36 -0
- package/dist/core/textos.js.map +1 -0
- package/dist/core/turno.js +70 -10
- package/dist/core/turno.js.map +1 -1
- package/dist/core/version.js +31 -0
- package/dist/core/version.js.map +1 -0
- package/dist/vendor/tokenTracking.js +22 -1
- package/dist/vendor/tokenTracking.js.map +1 -1
- package/dist/web/servidor/arranque.js +3964 -0
- package/dist/web/servidor/arranque.js.map +1 -0
- package/dist/web/servidor/consolaDeTarea.js +161 -0
- package/dist/web/servidor/consolaDeTarea.js.map +1 -0
- package/dist/web/servidor/consolaWeb.js +389 -0
- package/dist/web/servidor/consolaWeb.js.map +1 -0
- package/dist/web/servidor/corredorDeTareas.js +1119 -0
- package/dist/web/servidor/corredorDeTareas.js.map +1 -0
- package/dist/web/servidor/pielWeb.js +269 -0
- package/dist/web/servidor/pielWeb.js.map +1 -0
- package/dist/web/servidor/servidor.js +257 -0
- package/dist/web/servidor/servidor.js.map +1 -0
- package/dist/web/servidor/sesiones.js +440 -0
- package/dist/web/servidor/sesiones.js.map +1 -0
- package/dist/web/servidor/transporte.js +169 -0
- package/dist/web/servidor/transporte.js.map +1 -0
- package/dist/web/servidor/vestibulo.js +1276 -0
- package/dist/web/servidor/vestibulo.js.map +1 -0
- package/package.json +30 -8
- package/skills/archify/LICENSE +22 -0
- package/skills/archify/SKILL.md +109 -0
- package/skills/archify/THIRD_PARTY_NOTICES.md +56 -0
- package/skills/archify/assets/template.html +14787 -0
- package/skills/archify/bin/archify.mjs +1990 -0
- package/skills/archify/bin/open-artifact.mjs +86 -0
- package/skills/archify/bin/preview.mjs +648 -0
- package/skills/archify/bin/visual-check.mjs +829 -0
- package/skills/archify/brand-marks/README.md +31 -0
- package/skills/archify/brand-marks/catalog.json +131 -0
- package/skills/archify/delta/architecture-delta.mjs +1214 -0
- package/skills/archify/examples/agent-run.lifecycle.json +71 -0
- package/skills/archify/examples/agent-tool-call.workflow.json +94 -0
- package/skills/archify/examples/async-job-roundtrip.sequence.json +61 -0
- package/skills/archify/examples/brand-aware-delivery.architecture.json +47 -0
- package/skills/archify/examples/cache-miss-request.sequence.json +81 -0
- package/skills/archify/examples/checkout-platform.base.architecture.json +31 -0
- package/skills/archify/examples/checkout-platform.head.architecture.json +31 -0
- package/skills/archify/examples/dataflow-product-analytics.html +14898 -0
- package/skills/archify/examples/deployment-release.lifecycle.json +49 -0
- package/skills/archify/examples/event-stream.dataflow.json +57 -0
- package/skills/archify/examples/incident-response.workflow.json +64 -0
- package/skills/archify/examples/lifecycle-agent-run.html +14847 -0
- package/skills/archify/examples/product-analytics.dataflow.json +76 -0
- package/skills/archify/examples/production-deployment.architecture.json +71 -0
- package/skills/archify/examples/release-delivery.workflow.json +62 -0
- package/skills/archify/examples/sequence-cache-miss-request.html +14913 -0
- package/skills/archify/examples/web-app-rendered.html +14862 -0
- package/skills/archify/examples/web-app.architecture.json +46 -0
- package/skills/archify/examples/workflow-agent-tool-call-rendered.html +14904 -0
- package/skills/archify/migrations/workflow-v2.mjs +279 -0
- package/skills/archify/package.json +17 -0
- package/skills/archify/recipes/scenarios.mjs +391 -0
- package/skills/archify/references/authoring-contract.md +198 -0
- package/skills/archify/references/brand-marks.md +69 -0
- package/skills/archify/references/delivery-contract.md +116 -0
- package/skills/archify/references/viewer-runtime.md +45 -0
- package/skills/archify/renderers/architecture/grid.mjs +62 -0
- package/skills/archify/renderers/architecture/render-architecture.mjs +1078 -0
- package/skills/archify/renderers/dataflow/README.md +104 -0
- package/skills/archify/renderers/dataflow/render-dataflow.mjs +483 -0
- package/skills/archify/renderers/lifecycle/README.md +115 -0
- package/skills/archify/renderers/lifecycle/render-lifecycle.mjs +561 -0
- package/skills/archify/renderers/sequence/README.md +114 -0
- package/skills/archify/renderers/sequence/render-sequence.mjs +453 -0
- package/skills/archify/renderers/shared/brand-marks.mjs +563 -0
- package/skills/archify/renderers/shared/cli.mjs +218 -0
- package/skills/archify/renderers/shared/desktop-readability.mjs +26 -0
- package/skills/archify/renderers/shared/diagnostics.mjs +127 -0
- package/skills/archify/renderers/shared/engineering-profiles.mjs +157 -0
- package/skills/archify/renderers/shared/generated-brand-marks.mjs +2003 -0
- package/skills/archify/renderers/shared/generated-validators.mjs +13 -0
- package/skills/archify/renderers/shared/geometry.mjs +1423 -0
- package/skills/archify/renderers/shared/i18n.mjs +594 -0
- package/skills/archify/renderers/shared/layout-report.mjs +40 -0
- package/skills/archify/renderers/shared/legend.mjs +217 -0
- package/skills/archify/renderers/shared/output-path.mjs +321 -0
- package/skills/archify/renderers/shared/repository-evidence.mjs +235 -0
- package/skills/archify/renderers/shared/text-fit.mjs +49 -0
- package/skills/archify/renderers/shared/utils.mjs +232 -0
- package/skills/archify/renderers/shared/validator.mjs +86 -0
- package/skills/archify/renderers/workflow/README.md +223 -0
- package/skills/archify/renderers/workflow/render-workflow.mjs +35 -0
- package/skills/archify/renderers/workflow/workflow-compiler.mjs +4400 -0
- package/skills/archify/renderers/workflow/workflow-migration-geometry.mjs +144 -0
- package/skills/archify/schemas/README.md +211 -0
- package/skills/archify/schemas/architecture.schema.json +176 -0
- package/skills/archify/schemas/common.schema.json +115 -0
- package/skills/archify/schemas/dataflow.schema.json +243 -0
- package/skills/archify/schemas/lifecycle.schema.json +266 -0
- package/skills/archify/schemas/sequence.schema.json +223 -0
- package/skills/archify/schemas/workflow.schema.json +428 -0
- package/skills/archify/scripts/check-render-output.mjs +835 -0
- package/skills/archify/scripts/check-update.mjs +1667 -0
- package/skills/archify/scripts/render-examples.mjs +26 -0
- package/skills/archify/scripts/update-contract.mjs +182 -0
- package/skills/archify/skill-release.json +10 -0
- package/skills/artifacts-builder/SKILL.md +120 -0
- package/skills/artifacts-builder/reference/diagramas.md +123 -0
- package/skills/artifacts-builder/reference/estilo.md +123 -0
- package/skills/artifacts-builder/reference/exportar-pdf.md +56 -0
- package/skills/artifacts-builder/reference/graficas.md +22 -0
- package/skills/artifacts-builder/scripts/bundle_artifact.py +109 -0
- package/skills/artifacts-builder/scripts/validate_artifact.py +345 -0
- package/skills/xone-hotswap/SKILL.md +185 -0
- package/skills/xone-hotswap/references/comandos.md +706 -0
- package/skills/xone-hotswap/references/conexion-y-despliegue.md +226 -0
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
import { textoDe } from "./puente.js";
|
|
2
|
+
/** El papel del juez, y solo del juez. Ver `core/modelos.ts`. */
|
|
3
|
+
export const PAPEL_DEL_JUEZ = "afilado";
|
|
4
|
+
/**
|
|
5
|
+
* Cuánto resumen se guarda. De aquí sale el `motivo` de la tarea, que se pinta en una
|
|
6
|
+
* tarjeta del kanban y viaja por el cable: 4 KB de prosa de un modelo llenan la columna
|
|
7
|
+
* entera, y este número es del mismo orden que el de `servidorDeImplementacion`, que acota
|
|
8
|
+
* a 60 el nombre que manda un servidor MCP. Aquí se admite más porque es una frase y no un
|
|
9
|
+
* rótulo.
|
|
10
|
+
*/
|
|
11
|
+
export const TOPE_DE_RESUMEN = 400;
|
|
12
|
+
/** Cuántos hallazgos del juez se guardan, y cuánto cada uno. Por lo mismo de arriba. */
|
|
13
|
+
export const TOPE_DE_HALLAZGOS = 10;
|
|
14
|
+
const TOPE_DE_HALLAZGO = 200;
|
|
15
|
+
/**
|
|
16
|
+
* No se pudo PREGUNTAR: no hay modelo, no hay clave, no hay red.
|
|
17
|
+
*
|
|
18
|
+
* Es fallo del entorno y no del proyecto, la misma familia que `ErrorDelSimulador`
|
|
19
|
+
* (`agent/verificador.ts`), y por eso es un tipo propio: quien lo recoge tiene que poder
|
|
20
|
+
* distinguirlo de un veredicto para aparcar la tarea con el motivo correcto.
|
|
21
|
+
*/
|
|
22
|
+
export class ErrorDelJuezDeTarea extends Error {
|
|
23
|
+
constructor(motivo) {
|
|
24
|
+
super(`no se pudo consultar al juez de QA (papel «${PAPEL_DEL_JUEZ}»): ${motivo}`);
|
|
25
|
+
this.name = "ErrorDelJuezDeTarea";
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* El `invocar` de PRODUCCIÓN, sobre `ModelosPort`.
|
|
30
|
+
*
|
|
31
|
+
* **Dos sitios de envoltura, y la diferencia entre ellos está medida.** Construir el modelo
|
|
32
|
+
* del papel falla ANTES de tocar la red y con un mensaje escrito para leerse: medido contra
|
|
33
|
+
* `agent/modelos.ts`, un `afilado` apuntado a un proveedor sin clave lanza «falta la
|
|
34
|
+
* credencial para nvidia (NVIDIA_API_KEY); usa /provider nvidia» —el nuestro— o «Anthropic
|
|
35
|
+
* API key not found» —el del SDK—, y ninguno de los dos lleva nada que no se pueda leer. Ese
|
|
36
|
+
* mensaje SÍ se conserva: es la única línea que dice qué hacer.
|
|
37
|
+
*
|
|
38
|
+
* La LLAMADA es otra cosa: ahí los SDK devuelven el cuerpo remoto, y ahí van claves
|
|
39
|
+
* redactadas y cabeceras («401 Incorrect API key provided: sk-…»). De esa solo se conserva
|
|
40
|
+
* el NOMBRE del error, que es la misma regla que `ErrorCatalogoModelos`: «nunca lleva la
|
|
41
|
+
* clave ni el cuerpo remoto». No es ser opaco, es no filtrar secretos.
|
|
42
|
+
*/
|
|
43
|
+
export function invocarConModelos(modelos) {
|
|
44
|
+
return async (papel, prompt) => {
|
|
45
|
+
let modelo;
|
|
46
|
+
try {
|
|
47
|
+
modelo = modelos.paraPapel(papel);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
throw new ErrorDelJuezDeTarea(error instanceof Error ? error.message : String(error));
|
|
51
|
+
}
|
|
52
|
+
if (typeof modelo !== "object" ||
|
|
53
|
+
modelo === null ||
|
|
54
|
+
typeof modelo.invoke !== "function") {
|
|
55
|
+
// Un doble de modelos (`ModeloGuionizado`) devuelve `{guion}` y no sabe invocar. No es
|
|
56
|
+
// un veredicto: es que este proceso no tiene con qué preguntar.
|
|
57
|
+
throw new ErrorDelJuezDeTarea(`el modelo del papel «${papel}» no se puede invocar aquí`);
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
const respuesta = await modelo.invoke(prompt);
|
|
61
|
+
// El MISMO extractor que el puente del stream, no una copia: dos reglas para sacar el
|
|
62
|
+
// texto de un mensaje son dos reglas que divergen — y una de ellas metería el
|
|
63
|
+
// razonamiento del modelo dentro del JSON que hay que parsear.
|
|
64
|
+
return textoDe(respuesta);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
throw new ErrorDelJuezDeTarea(error instanceof Error ? error.name : "error de la llamada");
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Un hallazgo del verificador, dicho en una línea. Fichero RELATIVO y línea, nunca contenido.
|
|
73
|
+
*
|
|
74
|
+
* **La severidad se dice en castellano y por su nombre**, y no era cosmético: `h.severidad`
|
|
75
|
+
* se pintaba en crudo, así que un aviso llegaba como «warning» —el enum, en inglés, al lado
|
|
76
|
+
* de un «ERROR» que sí estaba traducido y en mayúsculas—. La huella de reparación del
|
|
77
|
+
* verificador (`agent/turnoReal.ts`) usa solo los ERRORES porque «un aviso que va y viene no
|
|
78
|
+
* dice nada de si el error se arregla», y la puerta de entrega (`core/entrega.ts`) cuenta
|
|
79
|
+
* solo errores: si esa distinción manda en el código, no puede llegarle borrosa al juez.
|
|
80
|
+
*
|
|
81
|
+
* **Y un hallazgo SIN fichero se dice sin fichero.** Es el caso que produjo el rojo falso
|
|
82
|
+
* medido: el reparto admite del lado del turno los hallazgos que no dicen dónde —el lado
|
|
83
|
+
* conservador—, así que callarlo los dejaba pareciendo hallazgos sobre un fichero escrito.
|
|
84
|
+
*/
|
|
85
|
+
const lineaDeHallazgo = (h) => `- ${h.severidad === "error" ? "ERROR" : h.severidad === "warning" ? "AVISO" : "INFO"} ${h.code}${h.fichero === undefined
|
|
86
|
+
? " (el simulador no dijo en qué fichero, así que no se puede atribuir a ninguno)"
|
|
87
|
+
: ` en ${h.fichero}${h.linea === undefined ? "" : `:${h.linea}`}`}: ${h.mensaje}`;
|
|
88
|
+
/**
|
|
89
|
+
* Cómo se lee un hallazgo, dicho antes de enseñar ninguno.
|
|
90
|
+
*
|
|
91
|
+
* **Esto es la corrección medida.** El encabezado era «Sus hallazgos sobre lo que este turno
|
|
92
|
+
* tocó», que es FALSO justo para los hallazgos sin fichero, y de ahí salió el primer
|
|
93
|
+
* hallazgo del rojo falso: «se modificaron ficheros de lógica JavaScript durante el turno
|
|
94
|
+
* según los hallazgos del verificador». Un hallazgo no dice quién escribió nada — dice que
|
|
95
|
+
* el proyecto tiene una inconsistencia, y el simulador mira el proyecto ENTERO porque es su
|
|
96
|
+
* API. Es la misma regla que gobierna el reparto en `agent/turnoReal.ts#conVerificacion`:
|
|
97
|
+
* «un error que ya estaba en un fichero que el agente no abrió no es del agente:
|
|
98
|
+
* atribuírselo sería falso». Aquí se la dice también al juez.
|
|
99
|
+
*/
|
|
100
|
+
const COMO_SE_LEEN_LOS_HALLAZGOS = [
|
|
101
|
+
"Cómo se leen esos hallazgos: el simulador mira el PROYECTO ENTERO, no lo que este turno",
|
|
102
|
+
"escribió. Son OBSERVACIONES sobre el estado del proyecto y no atribuyen autoría:",
|
|
103
|
+
"ninguno dice quién escribió qué, ni que este turno tocara el fichero del que habla.",
|
|
104
|
+
"Lo único que dice qué tocó este turno son las listas de arriba, y el HECHO es la de git.",
|
|
105
|
+
"",
|
|
106
|
+
];
|
|
107
|
+
/** Cómo se le cuenta al juez lo que hizo el verificador. `no-corrio` se DICE. */
|
|
108
|
+
const parrafoDelVerificador = (caso) => {
|
|
109
|
+
if (caso.verificador === undefined)
|
|
110
|
+
return [];
|
|
111
|
+
if (caso.verificador === "no-corrio") {
|
|
112
|
+
return [
|
|
113
|
+
"El verificador de XOne (xone-simulator) NO HA CORRIDO en este turno, así que nadie ha",
|
|
114
|
+
"medido si lo escrito es XML válido. Tenlo en cuenta: no lo des por bueno.",
|
|
115
|
+
];
|
|
116
|
+
}
|
|
117
|
+
const hallazgos = caso.hallazgos ?? [];
|
|
118
|
+
const errores = hallazgos.filter((h) => h.severidad === "error");
|
|
119
|
+
const avisos = hallazgos.filter((h) => h.severidad !== "error");
|
|
120
|
+
return [
|
|
121
|
+
caso.verificador === "verde"
|
|
122
|
+
? [
|
|
123
|
+
"El verificador de XOne (xone-simulator) acabó en VERDE, así que",
|
|
124
|
+
"no hay nada que reprochar por parte del verificador: no dejó ni un error.",
|
|
125
|
+
"Los avisos no lo cambian — los errores son lo único que la puerta de entrega cuenta.",
|
|
126
|
+
].join("\n")
|
|
127
|
+
: `El verificador de XOne (xone-simulator) acabó en ROJO: dejó ${errores.length} error(es) sin corregir.`,
|
|
128
|
+
"",
|
|
129
|
+
...(hallazgos.length === 0 && caso.preexistentes === undefined ? [] : COMO_SE_LEEN_LOS_HALLAZGOS),
|
|
130
|
+
...(errores.length === 0
|
|
131
|
+
? []
|
|
132
|
+
: [
|
|
133
|
+
`Errores que caen en algo que este turno escribió, o que no dicen en qué fichero (${errores.length}):`,
|
|
134
|
+
...errores.map(lineaDeHallazgo),
|
|
135
|
+
]),
|
|
136
|
+
...(avisos.length === 0
|
|
137
|
+
? []
|
|
138
|
+
: [
|
|
139
|
+
`Avisos que caen en algo que este turno escribió, o que no dicen en qué fichero (${avisos.length}):`,
|
|
140
|
+
...avisos.map(lineaDeHallazgo),
|
|
141
|
+
]),
|
|
142
|
+
/**
|
|
143
|
+
* El otro lado del reparto, CONTADO. Ausente es «no se midió» y cero es «no había
|
|
144
|
+
* ninguno más»: las dos cosas se dicen, porque callar el cero dejaría al juez sin saber
|
|
145
|
+
* si la lista de arriba es todo lo que el simulador vio.
|
|
146
|
+
*/
|
|
147
|
+
...(caso.preexistentes === undefined
|
|
148
|
+
? []
|
|
149
|
+
: caso.preexistentes === 0
|
|
150
|
+
? ["El simulador no encontró ningún otro hallazgo en el resto del proyecto."]
|
|
151
|
+
: [
|
|
152
|
+
`Y ${caso.preexistentes} hallazgo(s) más en ficheros que este turno no tocó, que quedan FUERA`,
|
|
153
|
+
"de las listas de arriba: son del proyecto y no de este trabajo, y no hay que juzgarlos.",
|
|
154
|
+
]),
|
|
155
|
+
];
|
|
156
|
+
};
|
|
157
|
+
/**
|
|
158
|
+
* Qué se escribió: la INTENCIÓN y el HECHO, por separado y sin confundirlos.
|
|
159
|
+
*
|
|
160
|
+
* El segundo hallazgo del rojo falso medido salió de aquí: «no se puede comprobar la
|
|
161
|
+
* existencia ni el contenido de DOCUMENTACION.md con los datos facilitados», con
|
|
162
|
+
* `DOCUMENTACION.md` en la lista. El encabezado decía «Ficheros que se autorizó escribir»,
|
|
163
|
+
* que se lee como un PERMISO —lo que se podría haber escrito— y no como un registro.
|
|
164
|
+
*
|
|
165
|
+
* **Y no se arregla prometiendo más de lo que `autorizadas` aguanta.** Ese campo se apunta
|
|
166
|
+
* al autorizar cada escritura, así que una ruta que una guarda rechace sale igual, y «la
|
|
167
|
+
* verdad sobre lo que cambió la tiene Revisión». Lo que se hace es DARLE la verdad:
|
|
168
|
+
* `cambiados` es el diff de git de la sesión contra su «antes», o sea un hecho sobre el
|
|
169
|
+
* disco, con la ruta relativa. Con eso «no puedo comprobar si existe X» deja de tener de
|
|
170
|
+
* dónde agarrarse — y de propina el juez puede juzgar la cobertura del encargo ruta por ruta.
|
|
171
|
+
*
|
|
172
|
+
* Las tres respuestas de git se dicen distintas, que es la regla de siempre: lista con
|
|
173
|
+
* ficheros, lista VACÍA («no cambió nada», una afirmación) y AUSENTE («no se pudo preguntar»,
|
|
174
|
+
* que no es lo mismo y no puede leerse como un proyecto intacto).
|
|
175
|
+
*/
|
|
176
|
+
const parrafoDeLoEscrito = (caso) => {
|
|
177
|
+
const cambiados = caso.cambiados;
|
|
178
|
+
/** Autorizadas que git no ve cambiadas: o las rechazó una guarda, o escribieron lo que ya
|
|
179
|
+
* estaba. Callarlo dejaría al juez creyendo que aterrizó algo que no aterrizó. */
|
|
180
|
+
const sinAterrizar = cambiados === undefined ? [] : caso.autorizadas.filter((r) => !cambiados.includes(r));
|
|
181
|
+
return [
|
|
182
|
+
...(caso.autorizadas.length === 0
|
|
183
|
+
? ["El turno no autorizó escribir ningún fichero: no consta ninguna ruta."]
|
|
184
|
+
: [
|
|
185
|
+
`LO QUE EL TURNO AUTORIZÓ ESCRIBIR (${caso.autorizadas.length} ruta(s)):`,
|
|
186
|
+
...caso.autorizadas.map((f) => `- ${f}`),
|
|
187
|
+
"Son las rutas que el turno escribió sin que ninguna persona las aprobara, apuntadas",
|
|
188
|
+
"al autorizar cada escritura: es su registro de lo que quiso tocar.",
|
|
189
|
+
]),
|
|
190
|
+
"",
|
|
191
|
+
...(cambiados === undefined
|
|
192
|
+
? [
|
|
193
|
+
"No hay marca de git con la que comprobar qué cambió en el proyecto, así que sobre el",
|
|
194
|
+
"disco no se afirma nada: eso es «no se pudo mirar», no «no cambió nada».",
|
|
195
|
+
]
|
|
196
|
+
: cambiados.length === 0
|
|
197
|
+
? [
|
|
198
|
+
"Y git dice que la sesión no cambió ningún fichero del proyecto. Es una medida, no",
|
|
199
|
+
"una suposición: el diff de la sesión contra su «antes» sale vacío.",
|
|
200
|
+
]
|
|
201
|
+
: [
|
|
202
|
+
`LO QUE CAMBIÓ EN EL PROYECTO, según git (${cambiados.length} fichero(s)):`,
|
|
203
|
+
...cambiados.map((f) => `- ${f}`),
|
|
204
|
+
"Es el diff de la sesión contra su «antes», o sea un HECHO sobre el disco y no una",
|
|
205
|
+
"intención. Por eso «no puedo comprobar si existe X» sobre un fichero de esta lista",
|
|
206
|
+
"no es una respuesta válida: git dice que está y que cambió en este trabajo.",
|
|
207
|
+
]),
|
|
208
|
+
...(sinAterrizar.length === 0
|
|
209
|
+
? []
|
|
210
|
+
: [
|
|
211
|
+
`Ojo: de lo autorizado, git no ve cambio en: ${sinAterrizar.join(", ")}. O lo rechazó`,
|
|
212
|
+
"una guarda de ruta, o escribió lo que ya estaba — no des por hecho que aterrizó.",
|
|
213
|
+
]),
|
|
214
|
+
];
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* El prompt del juez.
|
|
218
|
+
*
|
|
219
|
+
* Lleva el encargo, los ficheros que se autorizó escribir y el veredicto del verificador
|
|
220
|
+
* con sus hallazgos — y nada más. **Nunca el contenido de un fichero**: la pregunta es si
|
|
221
|
+
* el trabajo hace lo que se pedía, y este módulo no abre ni un fichero (no hay un solo
|
|
222
|
+
* `readFile` aquí). Lo que sí se le dice es que no se invente: es la misma cláusula que
|
|
223
|
+
* lleva la petición de reparación, y por el mismo motivo.
|
|
224
|
+
*/
|
|
225
|
+
function promptDelJuez(caso) {
|
|
226
|
+
return [
|
|
227
|
+
"Eres el QA de un equipo que desarrolla aplicaciones XOne. Otro agente ha ejecutado un",
|
|
228
|
+
"encargo de forma autónoma, sin que ninguna persona revisara sus escrituras. Tu trabajo",
|
|
229
|
+
"es decidir si lo hecho responde al encargo, para que se pueda dar por terminado o vuelva",
|
|
230
|
+
"a manos del desarrollador.",
|
|
231
|
+
"",
|
|
232
|
+
"EL ENCARGO ERA:",
|
|
233
|
+
caso.encargo,
|
|
234
|
+
"",
|
|
235
|
+
...parrafoDeLoEscrito(caso),
|
|
236
|
+
"",
|
|
237
|
+
...parrafoDelVerificador(caso),
|
|
238
|
+
"",
|
|
239
|
+
/**
|
|
240
|
+
* Los dos límites, y la frontera entre ellos DICHA.
|
|
241
|
+
*
|
|
242
|
+
* «Si con eso no se puede saber, dilo» y «no puedo comprobar si existe X no vale» se
|
|
243
|
+
* contradicen si no se separa qué es cada cosa: no tener el contenido es un dato de
|
|
244
|
+
* partida —lo mismo para todos los casos— y no un hallazgo sobre este trabajo. Lo que
|
|
245
|
+
* de verdad no se puede juzgar sin contenido es la CALIDAD; qué se escribió sí se sabe.
|
|
246
|
+
*/
|
|
247
|
+
"No tienes el contenido de los ficheros y no lo vas a tener: eso es un dato de partida de",
|
|
248
|
+
"este paso, no es un hallazgo sobre este trabajo, y no lo pidas. Lo que no puedes juzgar",
|
|
249
|
+
"así es la CALIDAD de lo escrito —si la documentación está bien redactada, si el XML es el",
|
|
250
|
+
"que hacía falta—; qué se escribió sí lo sabes, y son las listas de arriba. Si el encargo",
|
|
251
|
+
"no se puede juzgar por los nombres y los hechos de arriba, dilo en el resumen:",
|
|
252
|
+
"no te inventes nada para poder dar un veredicto, que es justo el fallo que este paso",
|
|
253
|
+
"existe para atrapar.",
|
|
254
|
+
"",
|
|
255
|
+
"Contesta SOLO con este JSON y nada más:",
|
|
256
|
+
'{"veredicto":"verde"|"rojo","resumen":"una o dos frases","hallazgos":["lo que falta, uno por entrada"]}',
|
|
257
|
+
"«verde» = el encargo está cubierto. «rojo» = falta algo, o lo hecho no es lo que se pedía.",
|
|
258
|
+
"Un aviso del verificador, o un defecto que ya estaba en el proyecto, no es motivo de «rojo»:",
|
|
259
|
+
"lo que se juzga es ESTE encargo y ESTE trabajo, no el estado general del proyecto.",
|
|
260
|
+
].join("\n");
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Sin saltos de línea, sin caracteres de control y acotado. Ver `TOPE_DE_RESUMEN`.
|
|
264
|
+
*
|
|
265
|
+
* Los controles se van y no se escapan, por el mismo motivo que en
|
|
266
|
+
* `servidorDeImplementacion`: «un salto de línea en un nombre parte la línea de un log y
|
|
267
|
+
* disfraza lo que venga detrás», y este texto acaba en el `motivo` de la tarea, que se
|
|
268
|
+
* pinta en una tarjeta y viaja por el cable.
|
|
269
|
+
*/
|
|
270
|
+
const unaFrase = (texto, tope) => texto
|
|
271
|
+
.replace(/[\u0000-\u001F\u007F]+/g, " ")
|
|
272
|
+
.replace(/\s+/g, " ")
|
|
273
|
+
.trim()
|
|
274
|
+
.slice(0, tope);
|
|
275
|
+
/**
|
|
276
|
+
* El JSON de la respuesta, tolerando la valla de código.
|
|
277
|
+
*
|
|
278
|
+
* Los modelos contestan «Aquí va: ```json … ```» aunque se les pida solo el JSON, así que
|
|
279
|
+
* se busca el primer `{` y el último `}`. Lo que no parsee no es un error: es un veredicto
|
|
280
|
+
* `indeterminado`, que no es verde.
|
|
281
|
+
*/
|
|
282
|
+
function objetoDe(texto) {
|
|
283
|
+
const desde = texto.indexOf("{");
|
|
284
|
+
const hasta = texto.lastIndexOf("}");
|
|
285
|
+
if (desde === -1 || hasta <= desde)
|
|
286
|
+
return undefined;
|
|
287
|
+
try {
|
|
288
|
+
const valor = JSON.parse(texto.slice(desde, hasta + 1));
|
|
289
|
+
return typeof valor === "object" && valor !== null ? valor : undefined;
|
|
290
|
+
}
|
|
291
|
+
catch {
|
|
292
|
+
return undefined;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
/** El veredicto tal como se guarda, o `indeterminado` diciendo por qué. */
|
|
296
|
+
export function veredictoDeTexto(texto) {
|
|
297
|
+
const objeto = objetoDe(texto);
|
|
298
|
+
if (objeto === undefined) {
|
|
299
|
+
return { veredicto: "indeterminado", resumen: "el juez no contestó con el JSON que se le pidió" };
|
|
300
|
+
}
|
|
301
|
+
const dicho = objeto.veredicto;
|
|
302
|
+
if (dicho !== "verde" && dicho !== "rojo") {
|
|
303
|
+
return {
|
|
304
|
+
veredicto: "indeterminado",
|
|
305
|
+
resumen: `el juez contestó un veredicto que no es ninguno de los dos: «${unaFrase(String(dicho), 40)}»`,
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
const resumen = typeof objeto.resumen === "string" ? unaFrase(objeto.resumen, TOPE_DE_RESUMEN) : "";
|
|
309
|
+
if (resumen === "") {
|
|
310
|
+
// Un veredicto sin resumen no se puede leer, y de esto sale la tarjeta que alguien
|
|
311
|
+
// mira: fail-closed, como todo lo demás por aquí.
|
|
312
|
+
return { veredicto: "indeterminado", resumen: `el juez dijo «${dicho}» y no explicó por qué` };
|
|
313
|
+
}
|
|
314
|
+
const hallazgos = Array.isArray(objeto.hallazgos)
|
|
315
|
+
? objeto.hallazgos
|
|
316
|
+
.filter((h) => typeof h === "string")
|
|
317
|
+
.map((h) => unaFrase(h, TOPE_DE_HALLAZGO))
|
|
318
|
+
.filter((h) => h !== "")
|
|
319
|
+
.slice(0, TOPE_DE_HALLAZGOS)
|
|
320
|
+
: [];
|
|
321
|
+
// Ausente y vacío: sin hallazgos el campo NO se pone, para que `[]` siga pudiendo
|
|
322
|
+
// significar «los miró y no encontró ninguno» el día que alguien lo distinga.
|
|
323
|
+
return { veredicto: dicho, resumen, ...(hallazgos.length === 0 ? {} : { hallazgos }) };
|
|
324
|
+
}
|
|
325
|
+
export function crearJuezDeTarea(opciones) {
|
|
326
|
+
return {
|
|
327
|
+
juzgar: async (caso) => {
|
|
328
|
+
let texto;
|
|
329
|
+
try {
|
|
330
|
+
texto = await opciones.invocar(PAPEL_DEL_JUEZ, promptDelJuez(caso), caso.raiz);
|
|
331
|
+
}
|
|
332
|
+
catch (error) {
|
|
333
|
+
// Lo que ya viene envuelto se deja: `invocarConModelos` distingue el fallo de
|
|
334
|
+
// CONSTRUIR (cuyo mensaje es el accionable) del de LLAMAR (cuyo cuerpo no se
|
|
335
|
+
// repite). Cualquier otro `invocar` puede lanzar lo que sea, y entonces solo se
|
|
336
|
+
// conserva el nombre del error — la regla de `ErrorCatalogoModelos`.
|
|
337
|
+
if (error instanceof ErrorDelJuezDeTarea)
|
|
338
|
+
throw error;
|
|
339
|
+
throw new ErrorDelJuezDeTarea(error instanceof Error ? error.name : "error al preguntar");
|
|
340
|
+
}
|
|
341
|
+
return veredictoDeTexto(texto);
|
|
342
|
+
},
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
//# sourceMappingURL=juezDeTarea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"juezDeTarea.js","sourceRoot":"","sources":["../../src/agent/juezDeTarea.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,iEAAiE;AACjE,MAAM,CAAC,MAAM,cAAc,GAAU,SAAS,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AAEnC,wFAAwF;AACxF,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B;;;;;;GAMG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,MAAc;QACxB,KAAK,CAAC,8CAA8C,cAAc,OAAO,MAAM,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAYD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAoB;IACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC7B,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,mBAAmB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACxF,CAAC;QACD,IACE,OAAO,MAAM,KAAK,QAAQ;YAC1B,MAAM,KAAK,IAAI;YACf,OAAQ,MAA+B,CAAC,MAAM,KAAK,UAAU,EAC7D,CAAC;YACD,uFAAuF;YACvF,gEAAgE;YAChE,MAAM,IAAI,mBAAmB,CAAC,wBAAwB,KAAK,4BAA4B,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAO,MAAuD,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChG,sFAAsF;YACtF,8EAA8E;YAC9E,+DAA+D;YAC/D,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,mBAAmB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,eAAe,GAAG,CAAC,CAAmB,EAAU,EAAE,CACtD,KAAK,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,GAC7F,CAAC,CAAC,OAAO,KAAK,SAAS;IACrB,CAAC,CAAC,gFAAgF;IAClF,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EACnE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AAEnB;;;;;;;;;;;GAWG;AACH,MAAM,0BAA0B,GAAG;IACjC,yFAAyF;IACzF,kFAAkF;IAClF,qFAAqF;IACrF,0FAA0F;IAC1F,EAAE;CACH,CAAC;AAEF,iFAAiF;AACjF,MAAM,qBAAqB,GAAG,CAAC,IAAgB,EAAY,EAAE;IAC3D,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAC9C,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;QACrC,OAAO;YACL,uFAAuF;YACvF,2EAA2E;SAC5E,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;IACvC,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC;IAChE,OAAO;QACL,IAAI,CAAC,WAAW,KAAK,OAAO;YAC1B,CAAC,CAAC;gBACE,iEAAiE;gBACjE,2EAA2E;gBAC3E,sFAAsF;aACvF,CAAC,IAAI,CAAC,IAAI,CAAC;YACd,CAAC,CAAC,+DAA+D,OAAO,CAAC,MAAM,0BAA0B;QAC3G,EAAE;QACF,GAAG,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC;QACjG,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YACtB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,oFAAoF,OAAO,CAAC,MAAM,IAAI;gBACtG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;aAChC,CAAC;QACN,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YACrB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,mFAAmF,MAAM,CAAC,MAAM,IAAI;gBACpG,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;aAC/B,CAAC;QACN;;;;WAIG;QACH,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS;YAClC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC;gBACxB,CAAC,CAAC,CAAC,yEAAyE,CAAC;gBAC7E,CAAC,CAAC;oBACE,KAAK,IAAI,CAAC,aAAa,uEAAuE;oBAC9F,yFAAyF;iBAC1F,CAAC;KACT,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,kBAAkB,GAAG,CAAC,IAAgB,EAAY,EAAE;IACxD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACjC;uFACmF;IACnF,MAAM,YAAY,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3G,OAAO;QACL,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;YAC/B,CAAC,CAAC,CAAC,uEAAuE,CAAC;YAC3E,CAAC,CAAC;gBACE,sCAAsC,IAAI,CAAC,WAAW,CAAC,MAAM,YAAY;gBACzE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxC,qFAAqF;gBACrF,oEAAoE;aACrE,CAAC;QACN,EAAE;QACF,GAAG,CAAC,SAAS,KAAK,SAAS;YACzB,CAAC,CAAC;gBACE,sFAAsF;gBACtF,0EAA0E;aAC3E;YACH,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;gBACtB,CAAC,CAAC;oBACE,mFAAmF;oBACnF,oEAAoE;iBACrE;gBACH,CAAC,CAAC;oBACE,4CAA4C,SAAS,CAAC,MAAM,eAAe;oBAC3E,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjC,mFAAmF;oBACnF,oFAAoF;oBACpF,6EAA6E;iBAC9E,CAAC;QACR,GAAG,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;YAC3B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,+CAA+C,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB;gBACtF,kFAAkF;aACnF,CAAC;KACP,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,SAAS,aAAa,CAAC,IAAgB;IACrC,OAAO;QACL,uFAAuF;QACvF,wFAAwF;QACxF,0FAA0F;QAC1F,4BAA4B;QAC5B,EAAE;QACF,iBAAiB;QACjB,IAAI,CAAC,OAAO;QACZ,EAAE;QACF,GAAG,kBAAkB,CAAC,IAAI,CAAC;QAC3B,EAAE;QACF,GAAG,qBAAqB,CAAC,IAAI,CAAC;QAC9B,EAAE;QACF;;;;;;;WAOG;QACH,0FAA0F;QAC1F,yFAAyF;QACzF,2FAA2F;QAC3F,0FAA0F;QAC1F,gFAAgF;QAChF,sFAAsF;QACtF,sBAAsB;QACtB,EAAE;QACF,yCAAyC;QACzC,yGAAyG;QACzG,4FAA4F;QAC5F,8FAA8F;QAC9F,oFAAoF;KACrF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,IAAY,EAAU,EAAE,CACvD,KAAK;KACF,OAAO,CAAC,yBAAyB,EAAE,GAAG,CAAC;KACvC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;KACpB,IAAI,EAAE;KACN,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAEpB;;;;;;GAMG;AACH,SAAS,QAAQ,CAAC,KAAa;IAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK;QAAE,OAAO,SAAS,CAAC;IACrD,IAAI,CAAC;QACH,MAAM,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACjE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,iDAAiD,EAAE,CAAC;IACpG,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC;IAC/B,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QAC1C,OAAO;YACL,SAAS,EAAE,eAAe;YAC1B,OAAO,EAAE,gEAAgE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG;SACxG,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpG,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACnB,mFAAmF;QACnF,kDAAkD;QAClD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,iBAAiB,KAAK,wBAAwB,EAAE,CAAC;IACjG,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;QAC/C,CAAC,CAAC,MAAM,CAAC,SAAS;aACb,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;aACjD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;aACzC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;aACvB,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC;QAChC,CAAC,CAAC,EAAE,CAAC;IACP,kFAAkF;IAClF,8EAA8E;IAC9E,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAoC;IACnE,OAAO;QACL,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACrB,IAAI,KAAa,CAAC;YAClB,IAAI,CAAC;gBACH,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACjF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,8EAA8E;gBAC9E,6EAA6E;gBAC7E,gFAAgF;gBAChF,qEAAqE;gBACrE,IAAI,KAAK,YAAY,mBAAmB;oBAAE,MAAM,KAAK,CAAC;gBACtD,MAAM,IAAI,mBAAmB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;YAC5F,CAAC;YACD,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;KACF,CAAC;AACJ,CAAC"}
|