xonecode 0.3.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -8
- package/THIRD_PARTY_NOTICES.md +160 -0
- package/apps/web/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/apps/web/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/apps/web/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/apps/web/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/apps/web/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/apps/web/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/apps/web/dist/assets/c-BIGW1oBm.js +1 -0
- package/apps/web/dist/assets/cpp-DddhVWhK.js +1 -0
- package/apps/web/dist/assets/csharp-DSvCPggb.js +1 -0
- package/apps/web/dist/assets/css-CLj8gQPS.js +1 -0
- package/apps/web/dist/assets/go-C27-OAKa.js +1 -0
- package/apps/web/dist/assets/html-CfGypltT.js +1 -0
- package/apps/web/dist/assets/index-BB3SamhR.css +1 -0
- package/apps/web/dist/assets/index-CFYAoHdw.js +477 -0
- package/apps/web/dist/assets/ini-BEwlwnbL.js +1 -0
- package/apps/web/dist/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- package/apps/web/dist/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- package/apps/web/dist/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- package/apps/web/dist/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- package/apps/web/dist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- package/apps/web/dist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- package/apps/web/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- package/apps/web/dist/assets/java-CylS5w8V.js +1 -0
- package/apps/web/dist/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
- package/apps/web/dist/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
- package/apps/web/dist/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
- package/apps/web/dist/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
- package/apps/web/dist/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
- package/apps/web/dist/assets/kotlin-BdnUsdx6.js +1 -0
- package/apps/web/dist/assets/less-B1dDrJ26.js +1 -0
- package/apps/web/dist/assets/lua-BaeVxFsk.js +1 -0
- package/apps/web/dist/assets/markdown-Cvjx9yec.js +1 -0
- package/apps/web/dist/assets/mdx-Cmh6b_Ma.js +1 -0
- package/apps/web/dist/assets/php-D_2--9WK.js +1 -0
- package/apps/web/dist/assets/python-B6aJPvgy.js +1 -0
- package/apps/web/dist/assets/ruby-DSHSDbk1.js +1 -0
- package/apps/web/dist/assets/rust-B1yitclQ.js +1 -0
- package/apps/web/dist/assets/scss-D5BDwBP9.js +1 -0
- package/apps/web/dist/assets/sql-CRqJ_cUM.js +1 -0
- package/apps/web/dist/assets/swift-C2oV4EkX.js +1 -0
- package/apps/web/dist/assets/toml-vGWfd6FD.js +1 -0
- package/apps/web/dist/assets/xml-sdJ4AIDG.js +1 -0
- package/apps/web/dist/assets/yaml-Buea-lGh.js +1 -0
- package/apps/web/dist/iconos/xonecode.png +0 -0
- package/apps/web/dist/index.html +20 -0
- package/dist/agent/agentesEnDisco.js +539 -0
- package/dist/agent/agentesEnDisco.js.map +1 -0
- package/dist/agent/arbolDeProyecto.js +245 -0
- package/dist/agent/arbolDeProyecto.js.map +1 -0
- package/dist/agent/artefactosEnDisco.js +139 -0
- package/dist/agent/artefactosEnDisco.js.map +1 -0
- package/dist/agent/aumentador.js +175 -0
- package/dist/agent/aumentador.js.map +1 -0
- package/dist/agent/authEnDisco.js +76 -1
- package/dist/agent/authEnDisco.js.map +1 -1
- package/dist/agent/busquedaRegex.js +92 -0
- package/dist/agent/busquedaRegex.js.map +1 -0
- package/dist/agent/catalogoModelos.js +345 -0
- package/dist/agent/catalogoModelos.js.map +1 -0
- package/dist/agent/checkpointer.js +127 -0
- package/dist/agent/checkpointer.js.map +1 -0
- package/dist/agent/cloudstudioClient.js +194 -0
- package/dist/agent/cloudstudioClient.js.map +1 -0
- package/dist/agent/cloudstudioMcp.js +722 -0
- package/dist/agent/cloudstudioMcp.js.map +1 -0
- package/dist/agent/configEnDisco.js +309 -11
- package/dist/agent/configEnDisco.js.map +1 -1
- package/dist/agent/consumoExterno.js +99 -0
- package/dist/agent/consumoExterno.js.map +1 -0
- package/dist/agent/descarga.js +149 -0
- package/dist/agent/descarga.js.map +1 -0
- package/dist/agent/diagnosticoDeTools.js +51 -0
- package/dist/agent/diagnosticoDeTools.js.map +1 -0
- package/dist/agent/dispositivosEnMaquina.js +596 -0
- package/dist/agent/dispositivosEnMaquina.js.map +1 -0
- package/dist/agent/escrituraDeCodex.js +134 -0
- package/dist/agent/escrituraDeCodex.js.map +1 -0
- package/dist/agent/escrituraDeOpencode.js +80 -0
- package/dist/agent/escrituraDeOpencode.js.map +1 -0
- package/dist/agent/escrituraExterna.js +742 -0
- package/dist/agent/escrituraExterna.js.map +1 -0
- package/dist/agent/gemini.js +81 -0
- package/dist/agent/gemini.js.map +1 -0
- package/dist/agent/git.js +83 -0
- package/dist/agent/git.js.map +1 -0
- package/dist/agent/gitSync.js +441 -0
- package/dist/agent/gitSync.js.map +1 -0
- package/dist/agent/hotswap.js +448 -0
- package/dist/agent/hotswap.js.map +1 -0
- package/dist/agent/instalacionEnMaquina.js +252 -0
- package/dist/agent/instalacionEnMaquina.js.map +1 -0
- package/dist/agent/instantanea.js +7 -10
- package/dist/agent/instantanea.js.map +1 -1
- package/dist/agent/interrupts.js +11 -2
- package/dist/agent/interrupts.js.map +1 -1
- package/dist/agent/juezDeTarea.js +345 -0
- package/dist/agent/juezDeTarea.js.map +1 -0
- package/dist/agent/lanzamientoEnMaquina.js +377 -0
- package/dist/agent/lanzamientoEnMaquina.js.map +1 -0
- package/dist/agent/manifiesto.js +59 -0
- package/dist/agent/manifiesto.js.map +1 -0
- package/dist/agent/memoriaDeProyecto.js +60 -0
- package/dist/agent/memoriaDeProyecto.js.map +1 -0
- package/dist/agent/modelos.js +105 -17
- package/dist/agent/modelos.js.map +1 -1
- package/dist/agent/modelosDeMotor.js +204 -0
- package/dist/agent/modelosDeMotor.js.map +1 -0
- package/dist/agent/paqueteDelProyecto.js +181 -0
- package/dist/agent/paqueteDelProyecto.js.map +1 -0
- package/dist/agent/perfiles.js +92 -31
- package/dist/agent/perfiles.js.map +1 -1
- package/dist/agent/persona.js +40 -0
- package/dist/agent/persona.js.map +1 -0
- package/dist/agent/procesosEnMaquina.js +204 -0
- package/dist/agent/procesosEnMaquina.js.map +1 -0
- package/dist/agent/proyecto.js +311 -13
- package/dist/agent/proyecto.js.map +1 -1
- package/dist/agent/puente.js +63 -6
- package/dist/agent/puente.js.map +1 -1
- package/dist/agent/resumenDeContexto.js +30 -0
- package/dist/agent/resumenDeContexto.js.map +1 -0
- package/dist/agent/resumenDeTool.js +64 -18
- package/dist/agent/resumenDeTool.js.map +1 -1
- package/dist/agent/sesionGit.js +481 -0
- package/dist/agent/sesionGit.js.map +1 -0
- package/dist/agent/settingsEnDisco.js +189 -0
- package/dist/agent/settingsEnDisco.js.map +1 -0
- package/dist/agent/subagenteCodex.js +368 -0
- package/dist/agent/subagenteCodex.js.map +1 -0
- package/dist/agent/subagenteExterno.js +423 -0
- package/dist/agent/subagenteExterno.js.map +1 -0
- package/dist/agent/subagenteOpencode.js +389 -0
- package/dist/agent/subagenteOpencode.js.map +1 -0
- package/dist/agent/subida.js +202 -0
- package/dist/agent/subida.js.map +1 -0
- package/dist/agent/tareasEnDisco.js +466 -0
- package/dist/agent/tareasEnDisco.js.map +1 -0
- package/dist/agent/turnoReal.js +663 -50
- package/dist/agent/turnoReal.js.map +1 -1
- package/dist/agent/versionEnDisco.js +48 -0
- package/dist/agent/versionEnDisco.js.map +1 -0
- package/dist/agent/xoneAgent.js +290 -49
- package/dist/agent/xoneAgent.js.map +1 -1
- package/dist/agent/zip.js +52 -0
- package/dist/agent/zip.js.map +1 -0
- package/dist/cli/acuseDeModelo.js +30 -0
- package/dist/cli/acuseDeModelo.js.map +1 -0
- package/dist/cli/aprobar.js +55 -2
- package/dist/cli/aprobar.js.map +1 -1
- package/dist/cli/config.js +9 -13
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/consola.js +750 -19
- package/dist/cli/consola.js.map +1 -1
- package/dist/cli/main.js +740 -81
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/markdown.js +188 -2
- package/dist/cli/markdown.js.map +1 -1
- package/dist/cli/run.js +32 -4
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/stdio.js +46 -19
- package/dist/cli/stdio.js.map +1 -1
- package/dist/cli/tema.js +96 -8
- package/dist/cli/tema.js.map +1 -1
- package/dist/cli/tokens.js +29 -0
- package/dist/cli/tokens.js.map +1 -0
- package/dist/cli/tui/app.js +171 -0
- package/dist/cli/tui/app.js.map +1 -0
- package/dist/cli/tui/aprobarTui.js +80 -0
- package/dist/cli/tui/aprobarTui.js.map +1 -0
- package/dist/cli/tui/barra.js +37 -0
- package/dist/cli/tui/barra.js.map +1 -0
- package/dist/cli/tui/correrTui.js +478 -0
- package/dist/cli/tui/correrTui.js.map +1 -0
- package/dist/cli/tui/entrada.js +166 -0
- package/dist/cli/tui/entrada.js.map +1 -0
- package/dist/cli/tui/filas.js +24 -0
- package/dist/cli/tui/filas.js.map +1 -0
- package/dist/cli/tui/logo.js +49 -0
- package/dist/cli/tui/logo.js.map +1 -0
- package/dist/cli/tui/pielTui.js +14 -0
- package/dist/cli/tui/pielTui.js.map +1 -0
- package/dist/cli/tui/raton.js +126 -0
- package/dist/cli/tui/raton.js.map +1 -0
- package/dist/cli/tui/sidebar.js +86 -0
- package/dist/cli/tui/sidebar.js.map +1 -0
- package/dist/cli/tui/store.js +143 -0
- package/dist/cli/tui/store.js.map +1 -0
- package/dist/cli/tui/tarjeta.js +19 -0
- package/dist/cli/tui/tarjeta.js.map +1 -0
- package/dist/cli/tui/temaInk.js +114 -0
- package/dist/cli/tui/temaInk.js.map +1 -0
- package/dist/cli/tui/transcript.js +254 -0
- package/dist/cli/tui/transcript.js.map +1 -0
- package/dist/cli/wizardInicial.js +240 -0
- package/dist/cli/wizardInicial.js.map +1 -0
- package/dist/core/actos.js +113 -0
- package/dist/core/actos.js.map +1 -0
- package/dist/core/adjuntos.js +97 -0
- package/dist/core/adjuntos.js.map +1 -0
- package/dist/core/agentes.js +227 -0
- package/dist/core/agentes.js.map +1 -0
- package/dist/core/artefactos.js +149 -0
- package/dist/core/artefactos.js.map +1 -0
- package/dist/core/cloudstudio.js +7 -0
- package/dist/core/cloudstudio.js.map +1 -0
- package/dist/core/config.js +212 -5
- package/dist/core/config.js.map +1 -1
- package/dist/core/contextos.js +53 -1
- package/dist/core/contextos.js.map +1 -1
- package/dist/core/descargas.js +106 -0
- package/dist/core/descargas.js.map +1 -0
- package/dist/core/descriptoresDeApp.js +279 -0
- package/dist/core/descriptoresDeApp.js.map +1 -0
- package/dist/core/dispositivos.js +466 -0
- package/dist/core/dispositivos.js.map +1 -0
- package/dist/core/entrega.js +141 -0
- package/dist/core/entrega.js.map +1 -0
- package/dist/core/entrelazar.js +90 -0
- package/dist/core/entrelazar.js.map +1 -0
- package/dist/core/esqueleto.js +10 -0
- package/dist/core/esqueleto.js.map +1 -1
- package/dist/core/modelos.js +235 -3
- package/dist/core/modelos.js.map +1 -1
- package/dist/core/notify.js +27 -9
- package/dist/core/notify.js.map +1 -1
- package/dist/core/planDeSubida.js +127 -0
- package/dist/core/planDeSubida.js.map +1 -0
- package/dist/core/ports.js +189 -1
- package/dist/core/ports.js.map +1 -1
- package/dist/core/puedeLanzarse.js +239 -0
- package/dist/core/puedeLanzarse.js.map +1 -0
- package/dist/core/rutaVirtual.js +42 -0
- package/dist/core/rutaVirtual.js.map +1 -0
- package/dist/core/settings.js +246 -0
- package/dist/core/settings.js.map +1 -0
- package/dist/core/tareas.js +230 -0
- package/dist/core/tareas.js.map +1 -0
- package/dist/core/textos.js +36 -0
- package/dist/core/textos.js.map +1 -0
- package/dist/core/turno.js +56 -8
- package/dist/core/turno.js.map +1 -1
- package/dist/core/version.js +31 -0
- package/dist/core/version.js.map +1 -0
- package/dist/vendor/sqliteSaver.js +389 -0
- package/dist/vendor/sqliteSaver.js.map +1 -0
- package/dist/vendor/tokenTracking.js +22 -1
- package/dist/vendor/tokenTracking.js.map +1 -1
- package/dist/web/servidor/arranque.js +3964 -0
- package/dist/web/servidor/arranque.js.map +1 -0
- package/dist/web/servidor/consolaDeTarea.js +161 -0
- package/dist/web/servidor/consolaDeTarea.js.map +1 -0
- package/dist/web/servidor/consolaWeb.js +389 -0
- package/dist/web/servidor/consolaWeb.js.map +1 -0
- package/dist/web/servidor/corredorDeTareas.js +1119 -0
- package/dist/web/servidor/corredorDeTareas.js.map +1 -0
- package/dist/web/servidor/pielWeb.js +269 -0
- package/dist/web/servidor/pielWeb.js.map +1 -0
- package/dist/web/servidor/servidor.js +257 -0
- package/dist/web/servidor/servidor.js.map +1 -0
- package/dist/web/servidor/sesiones.js +440 -0
- package/dist/web/servidor/sesiones.js.map +1 -0
- package/dist/web/servidor/transporte.js +169 -0
- package/dist/web/servidor/transporte.js.map +1 -0
- package/dist/web/servidor/vestibulo.js +1276 -0
- package/dist/web/servidor/vestibulo.js.map +1 -0
- package/package.json +33 -9
- package/skills/archify/LICENSE +22 -0
- package/skills/archify/SKILL.md +109 -0
- package/skills/archify/THIRD_PARTY_NOTICES.md +56 -0
- package/skills/archify/assets/template.html +14787 -0
- package/skills/archify/bin/archify.mjs +1990 -0
- package/skills/archify/bin/open-artifact.mjs +86 -0
- package/skills/archify/bin/preview.mjs +648 -0
- package/skills/archify/bin/visual-check.mjs +829 -0
- package/skills/archify/brand-marks/README.md +31 -0
- package/skills/archify/brand-marks/catalog.json +131 -0
- package/skills/archify/delta/architecture-delta.mjs +1214 -0
- package/skills/archify/examples/agent-run.lifecycle.json +71 -0
- package/skills/archify/examples/agent-tool-call.workflow.json +94 -0
- package/skills/archify/examples/async-job-roundtrip.sequence.json +61 -0
- package/skills/archify/examples/brand-aware-delivery.architecture.json +47 -0
- package/skills/archify/examples/cache-miss-request.sequence.json +81 -0
- package/skills/archify/examples/checkout-platform.base.architecture.json +31 -0
- package/skills/archify/examples/checkout-platform.head.architecture.json +31 -0
- package/skills/archify/examples/dataflow-product-analytics.html +14898 -0
- package/skills/archify/examples/deployment-release.lifecycle.json +49 -0
- package/skills/archify/examples/event-stream.dataflow.json +57 -0
- package/skills/archify/examples/incident-response.workflow.json +64 -0
- package/skills/archify/examples/lifecycle-agent-run.html +14847 -0
- package/skills/archify/examples/product-analytics.dataflow.json +76 -0
- package/skills/archify/examples/production-deployment.architecture.json +71 -0
- package/skills/archify/examples/release-delivery.workflow.json +62 -0
- package/skills/archify/examples/sequence-cache-miss-request.html +14913 -0
- package/skills/archify/examples/web-app-rendered.html +14862 -0
- package/skills/archify/examples/web-app.architecture.json +46 -0
- package/skills/archify/examples/workflow-agent-tool-call-rendered.html +14904 -0
- package/skills/archify/migrations/workflow-v2.mjs +279 -0
- package/skills/archify/package.json +17 -0
- package/skills/archify/recipes/scenarios.mjs +391 -0
- package/skills/archify/references/authoring-contract.md +198 -0
- package/skills/archify/references/brand-marks.md +69 -0
- package/skills/archify/references/delivery-contract.md +116 -0
- package/skills/archify/references/viewer-runtime.md +45 -0
- package/skills/archify/renderers/architecture/grid.mjs +62 -0
- package/skills/archify/renderers/architecture/render-architecture.mjs +1078 -0
- package/skills/archify/renderers/dataflow/README.md +104 -0
- package/skills/archify/renderers/dataflow/render-dataflow.mjs +483 -0
- package/skills/archify/renderers/lifecycle/README.md +115 -0
- package/skills/archify/renderers/lifecycle/render-lifecycle.mjs +561 -0
- package/skills/archify/renderers/sequence/README.md +114 -0
- package/skills/archify/renderers/sequence/render-sequence.mjs +453 -0
- package/skills/archify/renderers/shared/brand-marks.mjs +563 -0
- package/skills/archify/renderers/shared/cli.mjs +218 -0
- package/skills/archify/renderers/shared/desktop-readability.mjs +26 -0
- package/skills/archify/renderers/shared/diagnostics.mjs +127 -0
- package/skills/archify/renderers/shared/engineering-profiles.mjs +157 -0
- package/skills/archify/renderers/shared/generated-brand-marks.mjs +2003 -0
- package/skills/archify/renderers/shared/generated-validators.mjs +13 -0
- package/skills/archify/renderers/shared/geometry.mjs +1423 -0
- package/skills/archify/renderers/shared/i18n.mjs +594 -0
- package/skills/archify/renderers/shared/layout-report.mjs +40 -0
- package/skills/archify/renderers/shared/legend.mjs +217 -0
- package/skills/archify/renderers/shared/output-path.mjs +321 -0
- package/skills/archify/renderers/shared/repository-evidence.mjs +235 -0
- package/skills/archify/renderers/shared/text-fit.mjs +49 -0
- package/skills/archify/renderers/shared/utils.mjs +232 -0
- package/skills/archify/renderers/shared/validator.mjs +86 -0
- package/skills/archify/renderers/workflow/README.md +223 -0
- package/skills/archify/renderers/workflow/render-workflow.mjs +35 -0
- package/skills/archify/renderers/workflow/workflow-compiler.mjs +4400 -0
- package/skills/archify/renderers/workflow/workflow-migration-geometry.mjs +144 -0
- package/skills/archify/schemas/README.md +211 -0
- package/skills/archify/schemas/architecture.schema.json +176 -0
- package/skills/archify/schemas/common.schema.json +115 -0
- package/skills/archify/schemas/dataflow.schema.json +243 -0
- package/skills/archify/schemas/lifecycle.schema.json +266 -0
- package/skills/archify/schemas/sequence.schema.json +223 -0
- package/skills/archify/schemas/workflow.schema.json +428 -0
- package/skills/archify/scripts/check-render-output.mjs +835 -0
- package/skills/archify/scripts/check-update.mjs +1667 -0
- package/skills/archify/scripts/render-examples.mjs +26 -0
- package/skills/archify/scripts/update-contract.mjs +182 -0
- package/skills/archify/skill-release.json +10 -0
- package/skills/artifacts-builder/SKILL.md +120 -0
- package/skills/artifacts-builder/reference/diagramas.md +123 -0
- package/skills/artifacts-builder/reference/estilo.md +123 -0
- package/skills/artifacts-builder/reference/exportar-pdf.md +56 -0
- package/skills/artifacts-builder/reference/graficas.md +22 -0
- package/skills/artifacts-builder/scripts/bundle_artifact.py +109 -0
- package/skills/artifacts-builder/scripts/validate_artifact.py +345 -0
- package/skills/xone-hotswap/SKILL.md +185 -0
- package/skills/xone-hotswap/references/comandos.md +706 -0
- package/skills/xone-hotswap/references/conexion-y-despliegue.md +226 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Los subagentes como DATOS: qué es uno, cómo se lee de un fichero y cómo se compone su
|
|
3
|
+
* prompt. TypeScript puro — leer el disco es cosa de `agent/agentesEnDisco.ts`.
|
|
4
|
+
*
|
|
5
|
+
* Hasta ahora los cuatro especialistas (`agent/perfiles.ts`) vivían a fuego en un
|
|
6
|
+
* `Record`, y su prompt lo componía `xoneAgent.ts#promptDe` con un `nombre === "planner"`
|
|
7
|
+
* dentro. Eso ya estaba señalado como provisional ahí mismo («los prompts pasan a ficheros
|
|
8
|
+
* `.md` en la fase 9»); esto es esa fase, y con ella los cuatro dejan de ser un caso
|
|
9
|
+
* especial: son los mismos ficheros que puede escribir el usuario, sembrados la primera vez.
|
|
10
|
+
*
|
|
11
|
+
* **Lo que NO sale del fichero, y es deliberado.** Las reglas de XOne se anteponen SIEMPRE,
|
|
12
|
+
* desde código, a todo subagente venga de donde venga (`REGLAS_XONE`). Un subagente que no
|
|
13
|
+
* sepa que XOne ignora en silencio lo desconocido escribirá un atributo inventado y no dará
|
|
14
|
+
* error — dará un bug mudo, que es la razón de ser de este producto. Poder borrarlas
|
|
15
|
+
* editando un `.md` convertiría el invariante en una preferencia; es el mismo principio por
|
|
16
|
+
* el que los avisos de honestidad son código y no prompt (`core/bitacora.ts`).
|
|
17
|
+
*/
|
|
18
|
+
export const MOTORES = ["modelo", "claude-code", "codex", "opencode"];
|
|
19
|
+
/**
|
|
20
|
+
* Las reglas del dominio, iguales para todos y NO editables desde el fichero.
|
|
21
|
+
*
|
|
22
|
+
* Están aquí y no repetidas en cada `.md` sembrado por lo mismo que `marca.css` tiene los
|
|
23
|
+
* colores en un solo sitio: cuatro copias de esto es como se acaba con una que se queda
|
|
24
|
+
* vieja. Y un agente que el usuario escriba mañana las hereda sin tener que copiarlas.
|
|
25
|
+
*/
|
|
26
|
+
export const REGLAS_XONE = [
|
|
27
|
+
"REGLAS DE XONE, no negociables:",
|
|
28
|
+
"- No es desarrollo web: no existen DOM, React, Vue, ni `async/await` en el runtime.",
|
|
29
|
+
"- La fuente de una colección es su `.xne`. Los `.xml` los genera Studio y no se tocan.",
|
|
30
|
+
"- No inventes atributos XML, funciones ni propiedades CSS: XOne ignora lo desconocido",
|
|
31
|
+
" en silencio, así que un invento no da error — da un bug mudo.",
|
|
32
|
+
].join("\n");
|
|
33
|
+
/**
|
|
34
|
+
* El prompt completo de un subagente: sus reglas, su descripción y sus instrucciones.
|
|
35
|
+
*
|
|
36
|
+
* Las reglas van PRIMERO y las instrucciones al final, en ese orden a propósito: lo último
|
|
37
|
+
* que lee el modelo es lo que más pesa, y lo que el usuario escribió es lo específico de la
|
|
38
|
+
* tarea. Las reglas no se pueden perder por ir arriba — son cinco líneas, no un preámbulo
|
|
39
|
+
* largo del que el modelo se despiste.
|
|
40
|
+
*/
|
|
41
|
+
export function promptDeAgente(agente, skills) {
|
|
42
|
+
return [
|
|
43
|
+
REGLAS_XONE,
|
|
44
|
+
"",
|
|
45
|
+
agente.descripcion,
|
|
46
|
+
...(agente.instrucciones.trim() === "" ? [] : ["", agente.instrucciones.trim()]),
|
|
47
|
+
"",
|
|
48
|
+
// Las skills que tiene, y las que NO. El aviso es la misma disciplina de siempre: un
|
|
49
|
+
// doble nunca se disfraza, y una skill declarada en el `.md` que no está en el catálogo
|
|
50
|
+
// haría que el modelo intentara cargarla y fallara sin saber por qué. Se dice.
|
|
51
|
+
...(skills === undefined || skills.suyas.length === 0
|
|
52
|
+
? []
|
|
53
|
+
: [`Tus skills: ${skills.suyas.join(", ")}. Cárgalas antes de responder.`]),
|
|
54
|
+
...(skills === undefined || skills.faltan.length === 0
|
|
55
|
+
? []
|
|
56
|
+
: [`AVISO: te faltan estas skills y no las tienes: ${skills.faltan.join(", ")}.`]),
|
|
57
|
+
// La línea de escritura es ESTRUCTURAL y va aquí, no en el cuerpo del fichero: no
|
|
58
|
+
// depende de lo que el usuario escriba, sino de `soloLectura`, y un agente que escribe
|
|
59
|
+
// sin saber que sus escrituras se aprueban insistiría al ver un rechazo.
|
|
60
|
+
agente.soloLectura
|
|
61
|
+
? "No modificas nada."
|
|
62
|
+
: "Tus escrituras requieren aprobación humana. Si te la rechazan, no insistas: explica qué pretendías y por qué.",
|
|
63
|
+
/**
|
|
64
|
+
* **Un agente EXTERNO no ve el backend virtual: ve el disco.** Y eso cambia lo que
|
|
65
|
+
* significa una ruta, que es el detalle que más fácil se cuela — un `.md` que diga
|
|
66
|
+
* «guarda en /doc» describe la carpeta `doc` del PROYECTO si el motor es `modelo` (ahí
|
|
67
|
+
* `/` es la raíz montada) y la carpeta `/doc` del SISTEMA si es Claude Code, que es
|
|
68
|
+
* fuera del proyecto y se deniega. El usuario que lo escribe no tiene por qué saber de
|
|
69
|
+
* qué lado cae, así que se dice desde código en vez de esperar a que lo aprenda por un
|
|
70
|
+
* rechazo: es la misma disciplina que la línea de las escrituras y la de las skills.
|
|
71
|
+
*
|
|
72
|
+
* Va con `relativas` y no reescribiendo la ruta: adivinar que un `/doc` «quería decir»
|
|
73
|
+
* `doc/` sería inventar la intención de una escritura, que es justo lo que ninguna
|
|
74
|
+
* guarda de este repo hace.
|
|
75
|
+
*/
|
|
76
|
+
...(agente.motor === "modelo"
|
|
77
|
+
? []
|
|
78
|
+
: [
|
|
79
|
+
"RUTAS: trabajas sobre la carpeta del proyecto directamente, así que una ruta que " +
|
|
80
|
+
"empiece por «/» es la raíz del SISTEMA y está fuera del proyecto. Escribe las rutas " +
|
|
81
|
+
"relativas a la carpeta del proyecto («doc/GUIA.md»), nunca «/doc/GUIA.md».",
|
|
82
|
+
]),
|
|
83
|
+
]
|
|
84
|
+
.join("\n")
|
|
85
|
+
// Los huecos que dejan las partes ausentes (sin instrucciones, sin skills) se colapsan
|
|
86
|
+
// a una línea en blanco: tres saltos seguidos en un prompt no separan nada, solo gastan
|
|
87
|
+
// tokens y hacen que el texto se lea como si faltara algo.
|
|
88
|
+
.replace(/\n{3,}/g, "\n\n");
|
|
89
|
+
}
|
|
90
|
+
/** Reparte las skills declaradas entre las que hay y las que no. Puro: el catálogo entra. */
|
|
91
|
+
export function repartirSkills(agente, disponibles) {
|
|
92
|
+
return {
|
|
93
|
+
suyas: agente.skills.filter((s) => disponibles.has(s)),
|
|
94
|
+
faltan: agente.skills.filter((s) => !disponibles.has(s)),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function esMotor(v) {
|
|
98
|
+
return MOTORES.includes(v);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* El frontmatter, en el subconjunto que hace falta: `clave: valor` y listas en línea
|
|
102
|
+
* (`skills: [a, b]`). No se trae un parser de YAML entero por dos motivos: la superficie
|
|
103
|
+
* que aceptamos es la de arriba y nada más —cuanto menos acepte, menos formas hay de
|
|
104
|
+
* escribir algo que parezca válido y no lo sea—, y una dependencia nueva en `core/` hay
|
|
105
|
+
* que justificarla contra la frontera que `imports.test.ts` vigila.
|
|
106
|
+
*
|
|
107
|
+
* Comillas fuera si las hay: `descripcion: "algo"` y `descripcion: algo` son lo mismo, que
|
|
108
|
+
* es lo que espera quien escribe el fichero a mano.
|
|
109
|
+
*/
|
|
110
|
+
function leerFrontmatter(texto) {
|
|
111
|
+
const campos = {};
|
|
112
|
+
for (const linea of texto.split("\n")) {
|
|
113
|
+
const corte = linea.indexOf(":");
|
|
114
|
+
if (corte <= 0)
|
|
115
|
+
continue;
|
|
116
|
+
const clave = linea.slice(0, corte).trim();
|
|
117
|
+
let valor = linea.slice(corte + 1).trim();
|
|
118
|
+
if ((valor.startsWith('"') && valor.endsWith('"') && valor.length >= 2) ||
|
|
119
|
+
(valor.startsWith("'") && valor.endsWith("'") && valor.length >= 2)) {
|
|
120
|
+
valor = valor.slice(1, -1);
|
|
121
|
+
}
|
|
122
|
+
campos[clave] = valor;
|
|
123
|
+
}
|
|
124
|
+
return campos;
|
|
125
|
+
}
|
|
126
|
+
/** `[a, b]` o `a, b` — las dos formas, porque las dos se escriben. Vacío da lista vacía. */
|
|
127
|
+
function leerLista(valor) {
|
|
128
|
+
if (valor === undefined)
|
|
129
|
+
return [];
|
|
130
|
+
const dentro = valor.trim().replace(/^\[/, "").replace(/\]$/, "");
|
|
131
|
+
return dentro
|
|
132
|
+
.split(",")
|
|
133
|
+
.map((s) => s.trim().replace(/^["']|["']$/g, ""))
|
|
134
|
+
.filter((s) => s !== "");
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Un `.md` con frontmatter, a `Agente`. Devuelve el motivo en vez de lanzar: un fichero
|
|
138
|
+
* roto no puede tumbar el arranque de la consola — se salta, se dice cuál y por qué, y los
|
|
139
|
+
* demás siguen. Es la misma postura que `sesiones.ts` con una línea corrupta del `.jsonl`.
|
|
140
|
+
*/
|
|
141
|
+
export function leerAgente(nombre, contenido, origen) {
|
|
142
|
+
const m = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/.exec(contenido);
|
|
143
|
+
if (m === null)
|
|
144
|
+
return { error: "no tiene frontmatter: hace falta un bloque «---» al principio" };
|
|
145
|
+
const campos = leerFrontmatter(m[1]);
|
|
146
|
+
const instrucciones = m[2] ?? "";
|
|
147
|
+
const descripcion = (campos["descripcion"] ?? "").trim();
|
|
148
|
+
// Sin descripción NO se carga, y no se le inventa una por el nombre: es lo que el
|
|
149
|
+
// orquestador lee para decidir cuándo delegar, así que un agente sin ella o no se usaría
|
|
150
|
+
// nunca o se usaría para todo. Las dos cosas son peores que no tenerlo.
|
|
151
|
+
if (descripcion === "")
|
|
152
|
+
return { error: "le falta «descripcion», que es lo que el orquestador lee para elegirlo" };
|
|
153
|
+
const motorCrudo = (campos["motor"] ?? "modelo").trim();
|
|
154
|
+
if (!esMotor(motorCrudo)) {
|
|
155
|
+
return { error: `«motor: ${motorCrudo}» no existe. Los que hay: ${MOTORES.join(", ")}` };
|
|
156
|
+
}
|
|
157
|
+
const modelo = (campos["modelo"] ?? "").trim();
|
|
158
|
+
// Cualquier cosa que no sea exactamente «true» es false — ver abajo.
|
|
159
|
+
const soloLectura = (campos["soloLectura"] ?? "").trim() === "true";
|
|
160
|
+
/**
|
|
161
|
+
* **Un agente EXTERNO ya puede pedir escribir, y esta guarda se levantó CON el cableado y
|
|
162
|
+
* no antes.** Existía porque sus escrituras se denegaban siempre, así que dejar pasar un
|
|
163
|
+
* `soloLectura: false` le prometía a quien escribió el `.md` una capacidad que no iba a
|
|
164
|
+
* tener — y lo habría descubierto cuando el agente le contestara que no pudo tocar nada.
|
|
165
|
+
*
|
|
166
|
+
* El orden importaba en la otra dirección también: levantarla antes de que
|
|
167
|
+
* `PoliticaDeEscrituraExterna` estuviera montada de punta a punta habría creado justo el
|
|
168
|
+
* caso que la guarda existía para evitar. Hoy las dos puertas están puestas —el papel del
|
|
169
|
+
* `.md` y la autorización por escritura, con las guardas de ruta delante— así que la
|
|
170
|
+
* promesa se cumple.
|
|
171
|
+
*
|
|
172
|
+
* Lo que NO cambia: `soloLectura` sigue siendo cierto solo con exactamente «true» (la
|
|
173
|
+
* trampa del `"false"` de CloudStudio).
|
|
174
|
+
*
|
|
175
|
+
* **Codex también escribe ya, y su guarda se levantó igual: CON el cableado, no antes.**
|
|
176
|
+
* Estuvo cerrada mientras el argumento fue cierto —que su escritura la bloqueaba el
|
|
177
|
+
* sandbox del sistema operativo, y que abrirla exigía `sandbox: "workspace-write"`, con lo
|
|
178
|
+
* que las guardas de ruta de xonecode no verían ni una—. Lo que la medida contra el
|
|
179
|
+
* binario real (0.152.1, 11-09-2026) enseñó es que esa disyuntiva era falsa: la palanca no
|
|
180
|
+
* es el sandbox, es el `approvalPolicy`. Con `read-only` + `on-request` el sandbox sigue
|
|
181
|
+
* siendo la denegación del sistema operativo y cada escritura llega como una petición que
|
|
182
|
+
* xonecode contesta, con las mismas guardas de ruta y la misma
|
|
183
|
+
* `PoliticaDeEscrituraExterna` que el otro motor (`agent/escrituraDeCodex.ts`).
|
|
184
|
+
*/
|
|
185
|
+
return {
|
|
186
|
+
agente: {
|
|
187
|
+
nombre,
|
|
188
|
+
descripcion,
|
|
189
|
+
motor: motorCrudo,
|
|
190
|
+
...(modelo === "" ? {} : { modelo }),
|
|
191
|
+
// Cualquier cosa que no sea exactamente «true» es false: un `soloLectura: quizá` no
|
|
192
|
+
// puede acabar concediendo escritura por ser una cadena verdadera en JavaScript —
|
|
193
|
+
// es la misma trampa que `compartido` con el `"false"` de CloudStudio.
|
|
194
|
+
soloLectura,
|
|
195
|
+
skills: leerLista(campos["skills"]),
|
|
196
|
+
instrucciones,
|
|
197
|
+
origen,
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Junta las dos carpetas: el de PROYECTO gana sobre el global con el mismo nombre.
|
|
203
|
+
*
|
|
204
|
+
* Misma precedencia que los modelos (`core/modelos.ts`), y por lo mismo: un «revisor de
|
|
205
|
+
* XOne» se quiere en todos los proyectos, y un «experto en esta app» solo en uno — y el
|
|
206
|
+
* segundo tiene que poder pisar al primero sin borrarlo.
|
|
207
|
+
*/
|
|
208
|
+
export function fusionarAgentes(global, proyecto) {
|
|
209
|
+
const porNombre = new Map();
|
|
210
|
+
for (const a of global)
|
|
211
|
+
porNombre.set(a.nombre, a);
|
|
212
|
+
for (const a of proyecto)
|
|
213
|
+
porNombre.set(a.nombre, a);
|
|
214
|
+
return [...porNombre.values()].sort((a, b) => a.nombre.localeCompare(b.nombre));
|
|
215
|
+
}
|
|
216
|
+
/** El `.md` de un agente, para escribirlo. Lo inverso de `leerAgente`. */
|
|
217
|
+
export function escribirAgente(agente) {
|
|
218
|
+
const campos = [
|
|
219
|
+
`descripcion: ${agente.descripcion}`,
|
|
220
|
+
`motor: ${agente.motor}`,
|
|
221
|
+
...(agente.modelo === undefined ? [] : [`modelo: ${agente.modelo}`]),
|
|
222
|
+
`soloLectura: ${agente.soloLectura}`,
|
|
223
|
+
`skills: [${agente.skills.join(", ")}]`,
|
|
224
|
+
];
|
|
225
|
+
return `---\n${campos.join("\n")}\n---\n${agente.instrucciones}`;
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=agentes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentes.js","sourceRoot":"","sources":["../../src/core/agentes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Los ARTEFACTOS de una sesión: lo que el agente produce y **no es del proyecto**.
|
|
3
|
+
*
|
|
4
|
+
* Un diagrama de `archify`, un panel de `artifacts-builder`, la captura que el
|
|
5
|
+
* `xone-device-tester`
|
|
6
|
+
* traerá del móvil el día que hable con él. Son salidas de la conversación, no código de la
|
|
7
|
+
* app: nacen de una pregunta, se miran una vez y no tienen por qué sobrevivir al proyecto.
|
|
8
|
+
*
|
|
9
|
+
* **Hasta ahora acababan DENTRO de la app XOne, y eso era un fallo de verdad.** Las dos
|
|
10
|
+
* skills visuales reparten su entrega entre dos tools —`renderizar_diagrama` y
|
|
11
|
+
* `publish_artifact`— y en xonecode no existe ninguna de las dos (cero apariciones en
|
|
12
|
+
* `src/`), así que el `mockup` caía siempre en el camino de reserva, que dice literalmente
|
|
13
|
+
* «con `write_file`, entrega el HTML autocontenido» en `/artifacts/<nombre>.html`. O sea: la
|
|
14
|
+
* raíz del proyecto. Pasaba por la aprobación humana, entraba en git y, en un proyecto
|
|
15
|
+
* cloud, **subía a CloudStudio**. Un diagrama dentro de la app del cliente.
|
|
16
|
+
*
|
|
17
|
+
* La carpeta virtual `/artefactos/` lo corta de raíz, y es la misma pieza que ya monta
|
|
18
|
+
* `/skills/`: otra raíz colgada del `CompositeBackend` (`agent/proyecto.ts`). Cuatro cosas
|
|
19
|
+
* salen de ahí sin escribir una línea de más, porque cuelga de `.xonecode/`: no entra en el
|
|
20
|
+
* árbol del proyecto, no sube a CloudStudio, no aparece en Revisión y no engorda
|
|
21
|
+
* `.git/objects` (`sacarXonecodeDelIndice`).
|
|
22
|
+
*
|
|
23
|
+
* Este módulo es `core/`: datos puros, una barrera y la regla de dónde va la carpeta. Quién
|
|
24
|
+
* la monta en el backend es de `agent/`.
|
|
25
|
+
*/
|
|
26
|
+
import { join } from "node:path";
|
|
27
|
+
import { segmentoSeguro } from "./settings.js";
|
|
28
|
+
/**
|
|
29
|
+
* Dónde caen en DISCO los artefactos de una sesión: `.xonecode/sesiones/<id>/artefactos/`.
|
|
30
|
+
*
|
|
31
|
+
* Vive en `core/` y no en `web/servidor/sesiones.ts` porque lo necesitan los dos lados —el
|
|
32
|
+
* que borra la sesión y el que monta el backend—, y `cli/` no puede importar de `web/`. Es
|
|
33
|
+
* lo que ya son las rutas de `core/settings.ts`: una regla de dónde va cada cosa.
|
|
34
|
+
*
|
|
35
|
+
* Pasa por `segmentoSeguro` por lo mismo que el `.jsonl`: el id llega del cliente por HTTP,
|
|
36
|
+
* y sin esa guarda un `"../../.env"` compondría una ruta fuera de `sesiones/`.
|
|
37
|
+
*
|
|
38
|
+
* Convive con `<id>.jsonl` sin chocar —uno es fichero con extensión, otra es carpeta—, así
|
|
39
|
+
* que no hay nada que mover. Meter el transcript dentro (`<id>/sesion.jsonl`) es una mudanza
|
|
40
|
+
* aparte, con su respaldo de lectura para las sesiones que ya existen.
|
|
41
|
+
*/
|
|
42
|
+
export function carpetaDeArtefactosDeSesion(raiz, id) {
|
|
43
|
+
return join(raiz, ".xonecode", "sesiones", segmentoSeguro(id, "id de sesión"), "artefactos");
|
|
44
|
+
}
|
|
45
|
+
/** El prefijo virtual. Con barra final: `CompositeBackend` la exige para no reconstruir
|
|
46
|
+
* `//nombre` fuera de la raíz montada — la misma trampa medida con `/skills/`. */
|
|
47
|
+
export const RUTA_ARTEFACTOS = "/artefactos/";
|
|
48
|
+
/**
|
|
49
|
+
* ¿Es esta ruta la de un artefacto, sin lugar a dudas?
|
|
50
|
+
*
|
|
51
|
+
* Se usa para DOS cosas y una de ellas es una decisión de seguridad: una escritura aquí no
|
|
52
|
+
* pide aprobación humana (ver `agent/turnoReal.ts`), así que esto no puede ser un
|
|
53
|
+
* `startsWith` a secas. Un `/artefactos/../app.xml` que colara por aquí sería una escritura
|
|
54
|
+
* al proyecto aprobada sola.
|
|
55
|
+
*
|
|
56
|
+
* Por eso es una lista blanca de forma y no una lista negra de trampas: cada segmento tiene
|
|
57
|
+
* que ser texto llano (letras, cifras, punto, guion y guion bajo), lo que deja fuera `..`,
|
|
58
|
+
* `.`, los segmentos vacíos de un `//`, la barra invertida de Windows, el NUL y cualquier
|
|
59
|
+
* `%2e%2e` sin decodificar. Lo que no case se trata como una ruta normal, o sea que pasa por
|
|
60
|
+
* la aprobación de siempre — el lado conservador.
|
|
61
|
+
*
|
|
62
|
+
* Medido contra deepagents: un `write` de `/artefactos/../pwn.html` NO llega al proyecto (el
|
|
63
|
+
* `virtualMode` de la raíz montada lo sujeta), pero devuelve OK sin escribir en ninguna
|
|
64
|
+
* parte. Que la barrera esté aquí no depende de eso: depende de que el día que alguien
|
|
65
|
+
* cambie el montaje, el permiso siga siendo del segmento y no del prefijo.
|
|
66
|
+
*/
|
|
67
|
+
const SEGMENTO = /^[A-Za-z0-9._-]+$/;
|
|
68
|
+
export function esRutaDeArtefacto(ruta) {
|
|
69
|
+
if (ruta === undefined || !ruta.startsWith(RUTA_ARTEFACTOS))
|
|
70
|
+
return false;
|
|
71
|
+
const segmentos = ruta.slice(RUTA_ARTEFACTOS.length).split("/");
|
|
72
|
+
if (segmentos.length === 0)
|
|
73
|
+
return false;
|
|
74
|
+
return segmentos.every((s) => SEGMENTO.test(s) && s !== "." && s !== "..");
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* ¿Es esta ruta un artefacto escrito en el SITIO EQUIVOCADO? Y si lo es, dónde iba.
|
|
78
|
+
*
|
|
79
|
+
* **Esto existe porque el prompt se agotó.** La carpeta buena la nombran los cuatro sitios
|
|
80
|
+
* que el modelo puede leer —las instrucciones del `mockup`, la skill `artifacts-builder`,
|
|
81
|
+
* `archify` y la descripción de `write_file`—, y aun así, medido el 2026-09-07 en dos
|
|
82
|
+
* delegaciones CONSECUTIVAS del mismo proyecto: la primera escribió
|
|
83
|
+
* `/artifacts/login_flow.html` y la segunda, un minuto después, `/artefactos/diagrama.html`.
|
|
84
|
+
* No falta ninguna instrucción: es deriva del modelo. Y el fallo no es cosmético — ahí el
|
|
85
|
+
* diagrama pasa por la aprobación humana, entra en git y **sube a CloudStudio, dentro de la
|
|
86
|
+
* app del cliente**.
|
|
87
|
+
*
|
|
88
|
+
* Es la misma clase de regla que las vistas aplanadas: se aplica en el BACKEND
|
|
89
|
+
* (`agent/proyecto.ts#sinArtefactosEnElProyecto`) y no en un prompt, porque un permiso solo
|
|
90
|
+
* protege a quien lo choca. Aquí vive solo la regla, que es datos puros.
|
|
91
|
+
*
|
|
92
|
+
* **Se mira el PRIMER segmento y nada más**, y eso acota el falso positivo a propósito: un
|
|
93
|
+
* `/src/artifacts.js` o un `/scripts/artifacts/util.js` del proyecto pasan sin enterarse.
|
|
94
|
+
* Lo que se deniega es la carpeta de la raíz que XOne no tiene y que ninguna convención de
|
|
95
|
+
* la plataforma usa. El precio, dicho: un proyecto que de verdad tuviera un `artifacts/` en
|
|
96
|
+
* su raíz no podría escribir ahí con el agente. Se acepta, porque el otro lado del error es
|
|
97
|
+
* un diagrama subido a la app del cliente sin que nadie se entere.
|
|
98
|
+
*
|
|
99
|
+
* Sin distinguir mayúsculas, que es la lección de APFS: `/Artifacts/` abre el mismo sitio.
|
|
100
|
+
*/
|
|
101
|
+
const CARPETAS_EQUIVOCADAS = new Set(["artifacts", "artifact"]);
|
|
102
|
+
/** El fichero suelto que nombra el contrato de `publish_artifact` (`path="/artifact.html"`). */
|
|
103
|
+
const FICHERO_EQUIVOCADO = "artifact.html";
|
|
104
|
+
export function artefactoFueraDeSitio(ruta) {
|
|
105
|
+
const segmentos = ruta.split(/[\\/]+/).filter((s) => s.length > 0);
|
|
106
|
+
if (segmentos.length === 0)
|
|
107
|
+
return undefined;
|
|
108
|
+
const primero = segmentos[0].toLowerCase();
|
|
109
|
+
const esCarpeta = CARPETAS_EQUIVOCADAS.has(primero) && segmentos.length > 1;
|
|
110
|
+
const esFichero = primero === FICHERO_EQUIVOCADO && segmentos.length === 1;
|
|
111
|
+
if (!esCarpeta && !esFichero)
|
|
112
|
+
return undefined;
|
|
113
|
+
// La carpeta de la sesión es PLANA hacia fuera: de `/artifacts/sub/x.html` se propone
|
|
114
|
+
// `x.html`, no `sub/x.html`. Un artefacto es una salida, no un árbol.
|
|
115
|
+
return `${RUTA_ARTEFACTOS}${segmentos[segmentos.length - 1]}`;
|
|
116
|
+
}
|
|
117
|
+
/** El nombre que se le enseña a una persona: el último segmento y nada más. */
|
|
118
|
+
export function nombreDeArtefacto(ruta) {
|
|
119
|
+
return ruta.slice(ruta.lastIndexOf("/") + 1);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* De qué es este artefacto, por su EXTENSIÓN.
|
|
123
|
+
*
|
|
124
|
+
* Tabla cerrada y por extensión, igual que el visor de Ficheros: olfatear los bytes no vale
|
|
125
|
+
* —un PNG lleva ceros en su cabecera y caería por el camino del texto— y aquí además el
|
|
126
|
+
* fichero lo acaba de escribir el agente, así que su nombre es lo que él eligió decir que
|
|
127
|
+
* es. Lo que no esté en la tabla no se afirma: `undefined` es «no lo sé», que es distinto de
|
|
128
|
+
* «es binario».
|
|
129
|
+
*/
|
|
130
|
+
const MIMES = {
|
|
131
|
+
html: "text/html",
|
|
132
|
+
svg: "image/svg+xml",
|
|
133
|
+
png: "image/png",
|
|
134
|
+
jpg: "image/jpeg",
|
|
135
|
+
jpeg: "image/jpeg",
|
|
136
|
+
webp: "image/webp",
|
|
137
|
+
gif: "image/gif",
|
|
138
|
+
md: "text/markdown",
|
|
139
|
+
txt: "text/plain",
|
|
140
|
+
json: "application/json",
|
|
141
|
+
csv: "text/csv",
|
|
142
|
+
};
|
|
143
|
+
export function mimeDeArtefacto(nombre) {
|
|
144
|
+
const punto = nombre.lastIndexOf(".");
|
|
145
|
+
if (punto <= 0)
|
|
146
|
+
return undefined;
|
|
147
|
+
return MIMES[nombre.slice(punto + 1).toLowerCase()];
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=artefactos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artefactos.js","sourceRoot":"","sources":["../../src/core/artefactos.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudstudio.js","sourceRoot":"","sources":["../../src/core/cloudstudio.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|