xonecode 0.5.1 → 0.8.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/apps/web/dist/assets/{index-BB3SamhR.css → index-Boak51UP.css} +1 -1
- package/apps/web/dist/assets/index-Cg28x6nG.js +477 -0
- package/apps/web/dist/assets/{php-D_2--9WK.js → php-Cu6F_QCJ.js} +1 -1
- package/apps/web/dist/assets/{ruby-DSHSDbk1.js → ruby-BiqQPoC6.js} +1 -1
- package/apps/web/dist/index.html +2 -2
- package/dist/agent/{cloudstudioClient.js → cloudstudio/cloudstudioClient.js} +10 -0
- package/dist/agent/cloudstudio/cloudstudioClient.js.map +1 -0
- package/dist/agent/{cloudstudioMcp.js → cloudstudio/cloudstudioMcp.js} +5 -5
- package/dist/agent/cloudstudio/cloudstudioMcp.js.map +1 -0
- package/dist/agent/{descarga.js → cloudstudio/descarga.js} +17 -7
- package/dist/agent/cloudstudio/descarga.js.map +1 -0
- package/dist/agent/cloudstudio/manifiesto.js.map +1 -0
- package/dist/agent/cloudstudio/ramaActiva.js +11 -0
- package/dist/agent/cloudstudio/ramaActiva.js.map +1 -0
- package/dist/agent/{subida.js → cloudstudio/subida.js} +16 -7
- package/dist/agent/cloudstudio/subida.js.map +1 -0
- package/dist/agent/{zip.js → cloudstudio/zip.js} +1 -1
- package/dist/agent/cloudstudio/zip.js.map +1 -0
- package/dist/agent/{authEnDisco.js → config/authEnDisco.js} +3 -3
- package/dist/agent/config/authEnDisco.js.map +1 -0
- package/dist/agent/{catalogoModelos.js → config/catalogoModelos.js} +47 -1
- package/dist/agent/config/catalogoModelos.js.map +1 -0
- package/dist/agent/{configEnDisco.js → config/configEnDisco.js} +6 -6
- package/dist/agent/config/configEnDisco.js.map +1 -0
- package/dist/agent/{crearProyecto.js → config/crearProyecto.js} +2 -2
- package/dist/agent/config/crearProyecto.js.map +1 -0
- package/dist/agent/config/entorno.js.map +1 -0
- package/dist/agent/config/gemini.js.map +1 -0
- package/dist/agent/config/modelos.js +235 -0
- package/dist/agent/config/modelos.js.map +1 -0
- package/dist/agent/{modelosDeMotor.js → config/modelosDeMotor.js} +1 -1
- package/dist/agent/config/modelosDeMotor.js.map +1 -0
- package/dist/agent/config/mudanzaEnDisco.js +121 -0
- package/dist/agent/config/mudanzaEnDisco.js.map +1 -0
- package/dist/agent/{persona.js → config/persona.js} +1 -1
- package/dist/agent/config/persona.js.map +1 -0
- package/dist/agent/config/selectorEnMaquina.js +45 -0
- package/dist/agent/config/selectorEnMaquina.js.map +1 -0
- package/dist/agent/{settingsEnDisco.js → config/settingsEnDisco.js} +37 -2
- package/dist/agent/config/settingsEnDisco.js.map +1 -0
- package/dist/agent/{versionEnDisco.js → config/versionEnDisco.js} +8 -4
- package/dist/agent/config/versionEnDisco.js.map +1 -0
- package/dist/agent/dispositivos/arranqueDeEmulador.js +146 -0
- package/dist/agent/dispositivos/arranqueDeEmulador.js.map +1 -0
- package/dist/agent/{dispositivosEnMaquina.js → dispositivos/dispositivosEnMaquina.js} +93 -6
- package/dist/agent/dispositivos/dispositivosEnMaquina.js.map +1 -0
- package/dist/agent/dispositivos/hotswap.js.map +1 -0
- package/dist/agent/dispositivos/instalacionEnMaquina.js.map +1 -0
- package/dist/agent/dispositivos/juezVisual.js +152 -0
- package/dist/agent/dispositivos/juezVisual.js.map +1 -0
- package/dist/agent/{lanzamientoEnMaquina.js → dispositivos/lanzamientoEnMaquina.js} +1 -1
- package/dist/agent/dispositivos/lanzamientoEnMaquina.js.map +1 -0
- package/dist/agent/{paqueteDelProyecto.js → dispositivos/paqueteDelProyecto.js} +5 -5
- package/dist/agent/dispositivos/paqueteDelProyecto.js.map +1 -0
- package/dist/agent/dispositivos/procesosEnMaquina.js.map +1 -0
- package/dist/agent/dispositivos/sensorDeArranque.js +154 -0
- package/dist/agent/dispositivos/sensorDeArranque.js.map +1 -0
- package/dist/agent/exportarPdf.js +140 -0
- package/dist/agent/exportarPdf.js.map +1 -0
- package/dist/agent/{arbolDeProyecto.js → grafo/arbolDeProyecto.js} +2 -2
- package/dist/agent/grafo/arbolDeProyecto.js.map +1 -0
- package/dist/agent/{artefactosEnDisco.js → grafo/artefactosEnDisco.js} +2 -2
- package/dist/agent/grafo/artefactosEnDisco.js.map +1 -0
- package/dist/agent/{busquedaRegex.js → grafo/busquedaRegex.js} +41 -1
- package/dist/agent/grafo/busquedaRegex.js.map +1 -0
- package/dist/agent/grafo/criticaVisual.js +115 -0
- package/dist/agent/grafo/criticaVisual.js.map +1 -0
- package/dist/agent/grafo/excluirTools.js +82 -0
- package/dist/agent/grafo/excluirTools.js.map +1 -0
- package/dist/agent/{memoriaDeProyecto.js → grafo/memoriaDeProyecto.js} +1 -1
- package/dist/agent/grafo/memoriaDeProyecto.js.map +1 -0
- package/dist/agent/grafo/navegacionXone.js +231 -0
- package/dist/agent/grafo/navegacionXone.js.map +1 -0
- package/dist/agent/{perfiles.js → grafo/perfiles.js} +96 -10
- package/dist/agent/grafo/perfiles.js.map +1 -0
- package/dist/agent/{proyecto.js → grafo/proyecto.js} +274 -24
- package/dist/agent/grafo/proyecto.js.map +1 -0
- package/dist/agent/grafo/skills.js +425 -0
- package/dist/agent/grafo/skills.js.map +1 -0
- package/dist/agent/grafo/xoneAgent.js +566 -0
- package/dist/agent/grafo/xoneAgent.js.map +1 -0
- package/dist/agent/navegacion/estilosEnDisco.js +110 -0
- package/dist/agent/navegacion/estilosEnDisco.js.map +1 -0
- package/dist/agent/navegacion/hechosEnDisco.js +26 -0
- package/dist/agent/navegacion/hechosEnDisco.js.map +1 -0
- package/dist/agent/navegacion/indiceEnDisco.js +36 -0
- package/dist/agent/navegacion/indiceEnDisco.js.map +1 -0
- package/dist/agent/navegacion/modeloDeProyecto.js +228 -0
- package/dist/agent/navegacion/modeloDeProyecto.js.map +1 -0
- package/dist/agent/raizDelPaquete.js +56 -0
- package/dist/agent/raizDelPaquete.js.map +1 -0
- package/dist/agent/{checkpointer.js → sesiones/checkpointer.js} +1 -1
- package/dist/agent/sesiones/checkpointer.js.map +1 -0
- package/dist/agent/sesiones/git.js.map +1 -0
- package/dist/agent/{gitSync.js → sesiones/gitSync.js} +3 -3
- package/dist/agent/sesiones/gitSync.js.map +1 -0
- package/dist/agent/{sesionGit.js → sesiones/sesionGit.js} +2 -2
- package/dist/agent/sesiones/sesionGit.js.map +1 -0
- package/dist/agent/subagentes/agentesEnDisco.js +818 -0
- package/dist/agent/subagentes/agentesEnDisco.js.map +1 -0
- package/dist/agent/subagentes/consumoExterno.js.map +1 -0
- package/dist/agent/subagentes/escrituraDeCodex.js.map +1 -0
- package/dist/agent/{escrituraDeOpencode.js → subagentes/escrituraDeOpencode.js} +1 -1
- package/dist/agent/subagentes/escrituraDeOpencode.js.map +1 -0
- package/dist/agent/{escrituraExterna.js → subagentes/escrituraExterna.js} +59 -6
- package/dist/agent/subagentes/escrituraExterna.js.map +1 -0
- package/dist/agent/subagentes/pluginDeSkills.js +99 -0
- package/dist/agent/subagentes/pluginDeSkills.js.map +1 -0
- package/dist/agent/subagentes/subagenteCodex.js.map +1 -0
- package/dist/agent/{subagenteExterno.js → subagentes/subagenteExterno.js} +48 -0
- package/dist/agent/subagentes/subagenteExterno.js.map +1 -0
- package/dist/agent/{subagenteOpencode.js → subagentes/subagenteOpencode.js} +53 -1
- package/dist/agent/subagentes/subagenteOpencode.js.map +1 -0
- package/dist/agent/{aumentador.js → tareas/aumentador.js} +2 -2
- package/dist/agent/tareas/aumentador.js.map +1 -0
- package/dist/agent/{juezDeTarea.js → tareas/juezDeTarea.js} +6 -6
- package/dist/agent/tareas/juezDeTarea.js.map +1 -0
- package/dist/agent/{tareasEnDisco.js → tareas/tareasEnDisco.js} +53 -4
- package/dist/agent/tareas/tareasEnDisco.js.map +1 -0
- package/dist/agent/{diagnosticoDeTools.js → turno/diagnosticoDeTools.js} +5 -1
- package/dist/agent/turno/diagnosticoDeTools.js.map +1 -0
- package/dist/agent/{guionizado.js → turno/guionizado.js} +1 -1
- package/dist/agent/turno/guionizado.js.map +1 -0
- package/dist/agent/turno/informeDeTraza.js +245 -0
- package/dist/agent/turno/informeDeTraza.js.map +1 -0
- package/dist/agent/turno/inspectorDePrompt.js +205 -0
- package/dist/agent/turno/inspectorDePrompt.js.map +1 -0
- package/dist/agent/{instantanea.js → turno/instantanea.js} +7 -2
- package/dist/agent/turno/instantanea.js.map +1 -0
- package/dist/agent/{interrupts.js → turno/interrupts.js} +2 -2
- package/dist/agent/turno/interrupts.js.map +1 -0
- package/dist/agent/turno/mensajes.js.map +1 -0
- package/dist/agent/turno/normalizar.js.map +1 -0
- package/dist/agent/{puente.js → turno/puente.js} +71 -4
- package/dist/agent/turno/puente.js.map +1 -0
- package/dist/agent/turno/resumenDeContexto.js +260 -0
- package/dist/agent/turno/resumenDeContexto.js.map +1 -0
- package/dist/agent/{resumenDeTool.js → turno/resumenDeTool.js} +33 -0
- package/dist/agent/turno/resumenDeTool.js.map +1 -0
- package/dist/agent/turno/rubrica.js +91 -0
- package/dist/agent/turno/rubrica.js.map +1 -0
- package/dist/agent/turno/textoDeTool.js.map +1 -0
- package/dist/agent/{turnoReal.js → turno/turnoReal.js} +210 -25
- package/dist/agent/turno/turnoReal.js.map +1 -0
- package/dist/agent/turno/verificador.js.map +1 -0
- package/dist/cli/config.js +1 -1
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/consola.js +72 -9
- package/dist/cli/consola.js.map +1 -1
- package/dist/cli/describe.js +2 -2
- package/dist/cli/describe.js.map +1 -1
- package/dist/cli/doctor.js +1 -1
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/fuentesDeDisco.js +29 -0
- package/dist/cli/fuentesDeDisco.js.map +1 -0
- package/dist/cli/main.js +87 -31
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/run.js +40 -10
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/traza.js +48 -0
- package/dist/cli/traza.js.map +1 -0
- package/dist/cli/tui/correrTui.js +4 -4
- package/dist/cli/tui/correrTui.js.map +1 -1
- package/dist/cli/verify.js +1 -1
- package/dist/cli/verify.js.map +1 -1
- package/dist/core/actos.js +1 -1
- package/dist/core/adjuntos.js +2 -2
- package/dist/core/agentes.js +247 -7
- package/dist/core/agentes.js.map +1 -1
- package/dist/core/artefactos.js +4 -4
- package/dist/core/config.js +1 -1
- package/dist/core/contextos.js +12 -1
- package/dist/core/contextos.js.map +1 -1
- package/dist/core/descargas.js +1 -1
- package/dist/core/dispositivos.js +53 -3
- package/dist/core/dispositivos.js.map +1 -1
- package/dist/core/esfuerzo.js +141 -0
- package/dist/core/esfuerzo.js.map +1 -0
- package/dist/core/esqueleto.js +1 -1
- package/dist/core/estilos.js +78 -0
- package/dist/core/estilos.js.map +1 -0
- package/dist/core/exportacion.js +140 -0
- package/dist/core/exportacion.js.map +1 -0
- package/dist/core/hechosDelProyecto.js +87 -0
- package/dist/core/hechosDelProyecto.js.map +1 -0
- package/dist/core/logDeDispositivo.js +143 -0
- package/dist/core/logDeDispositivo.js.map +1 -0
- package/dist/core/modelos.js +48 -3
- package/dist/core/modelos.js.map +1 -1
- package/dist/core/mudanzaDeWorkspace.js +93 -0
- package/dist/core/mudanzaDeWorkspace.js.map +1 -0
- package/dist/core/navegacion.js +134 -0
- package/dist/core/navegacion.js.map +1 -0
- package/dist/core/notify.js +5 -0
- package/dist/core/notify.js.map +1 -1
- package/dist/core/planDeSubida.js +1 -1
- package/dist/core/planes.js +70 -0
- package/dist/core/planes.js.map +1 -0
- package/dist/core/ports.js +4 -0
- package/dist/core/ports.js.map +1 -1
- package/dist/core/rubrica.js +90 -0
- package/dist/core/rubrica.js.map +1 -0
- package/dist/core/selectorDeCarpeta.js +87 -0
- package/dist/core/selectorDeCarpeta.js.map +1 -0
- package/dist/core/settings.js +56 -7
- package/dist/core/settings.js.map +1 -1
- package/dist/core/shellDeAgente.js +144 -0
- package/dist/core/shellDeAgente.js.map +1 -0
- package/dist/core/skills.js +158 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/topeAgotado.js +69 -0
- package/dist/core/topeAgotado.js.map +1 -0
- package/dist/core/zipDeSkill.js +107 -0
- package/dist/core/zipDeSkill.js.map +1 -0
- package/dist/web/servidor/arranque.js +853 -54
- package/dist/web/servidor/arranque.js.map +1 -1
- package/dist/web/servidor/corredorDeTareas.js +3 -3
- package/dist/web/servidor/corredorDeTareas.js.map +1 -1
- package/dist/web/servidor/sesiones.js +34 -6
- package/dist/web/servidor/sesiones.js.map +1 -1
- package/dist/web/servidor/transporte.js +1 -1
- package/dist/web/servidor/transporte.js.map +1 -1
- package/dist/web/servidor/vestibulo.js +62 -13
- package/dist/web/servidor/vestibulo.js.map +1 -1
- package/package.json +7 -4
- package/skills/archify/SKILL.md +25 -2
- package/skills/artifacts-builder/SKILL.md +23 -0
- package/skills/xone-hotswap/SKILL.md +96 -0
- package/skills/xone-hotswap/scripts/xone-arrancar-android +202 -0
- package/skills/xone-hotswap/scripts/xone-arrancar-ios +85 -0
- package/skills/xone-hotswap/scripts/xone-captura-android +93 -0
- package/skills/xone-hotswap/scripts/xone-desplegar-android +439 -0
- package/skills/xone-hotswap/scripts/xone-hotswap +201 -0
- package/skills/xone-hotswap/scripts/xone-log-android +102 -0
- package/skills/xone-hotswap/scripts/xone-reiniciar-android +132 -0
- package/skills/xone-plan-builder/SKILL.md +22 -4
- package/skills/xone-spec-builder/SKILL.md +37 -7
- package/apps/web/dist/assets/index-CFYAoHdw.js +0 -477
- package/dist/agent/agentesEnDisco.js +0 -539
- package/dist/agent/agentesEnDisco.js.map +0 -1
- package/dist/agent/arbolDeProyecto.js.map +0 -1
- package/dist/agent/artefactosEnDisco.js.map +0 -1
- package/dist/agent/aumentador.js.map +0 -1
- package/dist/agent/authEnDisco.js.map +0 -1
- package/dist/agent/busquedaRegex.js.map +0 -1
- package/dist/agent/catalogoModelos.js.map +0 -1
- package/dist/agent/checkpointer.js.map +0 -1
- package/dist/agent/cloudstudioClient.js.map +0 -1
- package/dist/agent/cloudstudioMcp.js.map +0 -1
- package/dist/agent/configEnDisco.js.map +0 -1
- package/dist/agent/consumoExterno.js.map +0 -1
- package/dist/agent/crearProyecto.js.map +0 -1
- package/dist/agent/descarga.js.map +0 -1
- package/dist/agent/diagnosticoDeTools.js.map +0 -1
- package/dist/agent/dispositivosEnMaquina.js.map +0 -1
- package/dist/agent/entorno.js.map +0 -1
- package/dist/agent/escrituraDeCodex.js.map +0 -1
- package/dist/agent/escrituraDeOpencode.js.map +0 -1
- package/dist/agent/escrituraExterna.js.map +0 -1
- package/dist/agent/gemini.js.map +0 -1
- package/dist/agent/git.js.map +0 -1
- package/dist/agent/gitSync.js.map +0 -1
- package/dist/agent/guionizado.js.map +0 -1
- package/dist/agent/hotswap.js.map +0 -1
- package/dist/agent/instalacionEnMaquina.js.map +0 -1
- package/dist/agent/instantanea.js.map +0 -1
- package/dist/agent/interrupts.js.map +0 -1
- package/dist/agent/juezDeTarea.js.map +0 -1
- package/dist/agent/lanzamientoEnMaquina.js.map +0 -1
- package/dist/agent/manifiesto.js.map +0 -1
- package/dist/agent/memoriaDeProyecto.js.map +0 -1
- package/dist/agent/mensajes.js.map +0 -1
- package/dist/agent/modelos.js +0 -130
- package/dist/agent/modelos.js.map +0 -1
- package/dist/agent/modelosDeMotor.js.map +0 -1
- package/dist/agent/normalizar.js.map +0 -1
- package/dist/agent/paqueteDelProyecto.js.map +0 -1
- package/dist/agent/perfiles.js.map +0 -1
- package/dist/agent/persona.js.map +0 -1
- package/dist/agent/procesosEnMaquina.js.map +0 -1
- package/dist/agent/proyecto.js.map +0 -1
- package/dist/agent/puente.js.map +0 -1
- package/dist/agent/resumenDeContexto.js +0 -30
- package/dist/agent/resumenDeContexto.js.map +0 -1
- package/dist/agent/resumenDeTool.js.map +0 -1
- package/dist/agent/sesionGit.js.map +0 -1
- package/dist/agent/settingsEnDisco.js.map +0 -1
- package/dist/agent/skills.js +0 -65
- package/dist/agent/skills.js.map +0 -1
- package/dist/agent/subagenteCodex.js.map +0 -1
- package/dist/agent/subagenteExterno.js.map +0 -1
- package/dist/agent/subagenteOpencode.js.map +0 -1
- package/dist/agent/subida.js.map +0 -1
- package/dist/agent/tareasEnDisco.js.map +0 -1
- package/dist/agent/textoDeTool.js.map +0 -1
- package/dist/agent/turnoReal.js.map +0 -1
- package/dist/agent/verificador.js.map +0 -1
- package/dist/agent/versionEnDisco.js.map +0 -1
- package/dist/agent/xoneAgent.js +0 -347
- package/dist/agent/xoneAgent.js.map +0 -1
- package/dist/agent/zip.js.map +0 -1
- /package/dist/agent/{manifiesto.js → cloudstudio/manifiesto.js} +0 -0
- /package/dist/agent/{entorno.js → config/entorno.js} +0 -0
- /package/dist/agent/{gemini.js → config/gemini.js} +0 -0
- /package/dist/agent/{hotswap.js → dispositivos/hotswap.js} +0 -0
- /package/dist/agent/{instalacionEnMaquina.js → dispositivos/instalacionEnMaquina.js} +0 -0
- /package/dist/agent/{procesosEnMaquina.js → dispositivos/procesosEnMaquina.js} +0 -0
- /package/dist/agent/{git.js → sesiones/git.js} +0 -0
- /package/dist/agent/{consumoExterno.js → subagentes/consumoExterno.js} +0 -0
- /package/dist/agent/{escrituraDeCodex.js → subagentes/escrituraDeCodex.js} +0 -0
- /package/dist/agent/{subagenteCodex.js → subagentes/subagenteCodex.js} +0 -0
- /package/dist/agent/{mensajes.js → turno/mensajes.js} +0 -0
- /package/dist/agent/{normalizar.js → turno/normalizar.js} +0 -0
- /package/dist/agent/{textoDeTool.js → turno/textoDeTool.js} +0 -0
- /package/dist/agent/{verificador.js → turno/verificador.js} +0 -0
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import { statSync } from "node:fs";
|
|
1
|
+
import { existsSync, mkdirSync, readdirSync, statSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
-
import { CompositeBackend, FilesystemBackend } from "deepagents";
|
|
3
|
+
import { CompositeBackend, FilesystemBackend, LocalShellBackend } from "deepagents";
|
|
4
4
|
import { RUTA_MEMORIA_INTERNA, RUTA_MEMORIA_VIRTUAL } from "./memoriaDeProyecto.js";
|
|
5
|
-
import { RAIZ_SKILLS } from "./skills.js";
|
|
6
|
-
import { artefactoFueraDeSitio, mimeDeArtefacto, nombreDeArtefacto, RUTA_ARTEFACTOS, } from "
|
|
7
|
-
import { RUTA_ADJUNTOS } from "
|
|
8
|
-
import {
|
|
5
|
+
import { RAIZ_SKILLS, skillsConRuta, skillsMontables } from "./skills.js";
|
|
6
|
+
import { artefactoFueraDeSitio, mimeDeArtefacto, nombreDeArtefacto, RUTA_ARTEFACTOS, } from "../../core/artefactos.js";
|
|
7
|
+
import { RUTA_ADJUNTOS } from "../../core/adjuntos.js";
|
|
8
|
+
import { CARPETA_DE_PLANES, RUTA_PLANES } from "../../core/planes.js";
|
|
9
|
+
import { entornoDeShell, variablesDeAndroid } from "../../core/shellDeAgente.js";
|
|
10
|
+
import { localizadorDeAndroid } from "../dispositivos/dispositivosEnMaquina.js";
|
|
11
|
+
import { RUTAS_DE_DESCARGA, carpetaDeDescargas, descargaFueraDeSitio, porQueNoEsDelProyecto, } from "../../core/descargas.js";
|
|
9
12
|
/**
|
|
10
13
|
* El backend del proyecto: confinado, y sin las vistas aplanadas.
|
|
11
14
|
*
|
|
@@ -13,25 +16,134 @@ import { RUTAS_DE_DESCARGA, carpetaDeDescargas, descargaFueraDeSitio, porQueNoEs
|
|
|
13
16
|
* default (`false`) el backend LEYÓ una ruta absoluta de fuera de la raíz. La propia
|
|
14
17
|
* librería lo dice de su default — «absolute paths and `..` can bypass rootDir».
|
|
15
18
|
*
|
|
16
|
-
* Y
|
|
17
|
-
*
|
|
19
|
+
* Y sin shell: el `execute` de deepagents solo aparece si el backend sabe ejecutar, así que
|
|
20
|
+
* éste es el que deja a un especialista SIN esa tool. El que sí la tiene es
|
|
21
|
+
* `backendDelProyectoConShell`, y quién se lleva cuál lo decide `ejecucion` en el `.md`.
|
|
18
22
|
*/
|
|
19
23
|
export function backendDelProyecto(raiz) {
|
|
20
24
|
return new FilesystemBackend({ rootDir: raiz, virtualMode: true });
|
|
21
25
|
}
|
|
22
26
|
/**
|
|
23
|
-
*
|
|
27
|
+
* El mismo backend, pero que además EJECUTA — el de un subagente con `ejecucion: true`.
|
|
28
|
+
*
|
|
29
|
+
* Es la pieza que enciende la tool `execute` de deepagents: el middleware la registra solo
|
|
30
|
+
* cuando «el backend resuelto sabe ejecutar», y lo que decide eso es `isSandboxBackend`, que
|
|
31
|
+
* mira que haya un `execute` y un `id` NO vacío (medido en la librería: `id !== ""`).
|
|
32
|
+
*
|
|
33
|
+
* **Lo que `virtualMode` NO hace aquí, y hay que tenerlo delante.** Confina las tools de
|
|
34
|
+
* FICHERO, no los comandos: un `cat ../../otro` del shell sale de la raíz igual. Lo mismo
|
|
35
|
+
* vale para `permisosDe`, y la propia librería se niega a fingir lo contrario — usar
|
|
36
|
+
* `permissions` con un backend ejecutable **lanza `ConfigurationError`** («permissions are
|
|
37
|
+
* not enforced on execute because shell commands can access any path regardless of
|
|
38
|
+
* path-based rules»). O sea que conceder ejecución es conceder la máquina, y por eso se
|
|
39
|
+
* declara en el `.md`, se ve en cada evento y lo lleva un solo subagente.
|
|
40
|
+
*
|
|
41
|
+
* **El entorno se pasa ENTERO y a mano, nunca `inheritEnv`.** Con `inheritEnv: true` la
|
|
42
|
+
* shell hereda `process.env`, donde `guardarCredencial` escribe las claves de API a
|
|
43
|
+
* propósito; un `printenv` las dejaría en el contexto. Lo que se pasa lo decide
|
|
44
|
+
* `core/shellDeAgente.ts#entornoDeShell`, que es puro y tiene test.
|
|
45
|
+
*
|
|
46
|
+
* **Dos límites de la librería, declarados**: el tope es de RELOJ (`timeout`, en segundos) y
|
|
47
|
+
* no de silencio, al revés que `TOPE_SIN_SALIDA_MS` de `agent/dispositivos/`; y al vencer
|
|
48
|
+
* mata al HIJO (`SIGTERM`), no al grupo, así que un nieto sobrevive. Por eso lo que no
|
|
49
|
+
* termina —un emulador— va al fondo desde la propia orden, y eso lo dice la skill.
|
|
50
|
+
*/
|
|
51
|
+
export function backendDelProyectoConShell(raiz, entorno) {
|
|
52
|
+
return new LocalShellBackend({
|
|
53
|
+
rootDir: raiz,
|
|
54
|
+
virtualMode: true,
|
|
55
|
+
env: entorno,
|
|
56
|
+
timeout: TOPE_DE_COMANDO_S,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* El entorno con el que corre la shell de ESTE proyecto.
|
|
61
|
+
*
|
|
62
|
+
* Una sola llamada para que el montaje no sea una composición dentro de `construirAgente`:
|
|
63
|
+
* ahí lo doblan todos los tests y la regla —qué claves se quitan, qué rutas se añaden—
|
|
64
|
+
* quedaría escrita y sin probar. La decisión es pura y vive en `core/shellDeAgente.ts`; lo
|
|
65
|
+
* que aporta esto es de dónde salen los tres ingredientes.
|
|
66
|
+
*
|
|
67
|
+
* Las skills se leen del disco en cada construcción, igual que `skillsMontables` en el
|
|
68
|
+
* backend y que `cargarAgentes`: una skill instalada con la consola abierta no alcanza a la
|
|
69
|
+
* sesión en curso, que es el límite ya anotado en CLAUDE.md y no uno nuevo.
|
|
70
|
+
*/
|
|
71
|
+
export function entornoDeLaShellDelProyecto(raiz, artefactos,
|
|
72
|
+
/**
|
|
73
|
+
* El buscador de binarios del SDK de Android. Entra por parámetro **solo** para que un test
|
|
74
|
+
* pueda ver que está montado: esta función toca `process.env` y `existsSync`, así que sin
|
|
75
|
+
* inyectarlo la composición viviría donde ningún test la alcanza — el patrón de fallo que
|
|
76
|
+
* este repo lleva contadas nueve veces. En producción no lo pasa nadie.
|
|
77
|
+
*/
|
|
78
|
+
enSdk = localizadorDeAndroid({
|
|
79
|
+
plataforma: process.platform,
|
|
80
|
+
entorno: process.env,
|
|
81
|
+
home: process.env["HOME"] ?? "",
|
|
82
|
+
existe: (ruta) => existsSync(ruta),
|
|
83
|
+
}).enSdk) {
|
|
84
|
+
// `skillsConRuta` y no `skillsMontables`: aquélla deja fuera las de SERIE —su raíz se cuelga
|
|
85
|
+
// entera en el backend— y una shell necesita la ruta real de todas. Sin esto, los scripts de
|
|
86
|
+
// las skills de serie no llegan al PATH y el agente se queda buscándolos por el disco.
|
|
87
|
+
const skills = skillsConRuta(raiz).map((m) => ({ nombre: m.nombre, dir: m.dir }));
|
|
88
|
+
return entornoDeShell({
|
|
89
|
+
entorno: process.env,
|
|
90
|
+
skills,
|
|
91
|
+
// La carpeta `scripts/` de cada skill que la tenga, al PATH. La comprobación de que existe
|
|
92
|
+
// va aquí porque `entornoDeShell` es puro: prometer en el PATH una carpeta que no está es
|
|
93
|
+
// el botón muerto de siempre, solo que en una variable de entorno.
|
|
94
|
+
binarios: skills.map((s) => join(s.dir, "scripts")).filter((d) => existsSync(d)),
|
|
95
|
+
// Sin esto, `xone-arrancar-android` tendría que adivinar dónde está el SDK: en un Mac con
|
|
96
|
+
// Homebrew `emulator` no está en el PATH y `ANDROID_HOME` suele estar vacía.
|
|
97
|
+
android: variablesDeAndroid(enSdk),
|
|
98
|
+
...(artefactos === undefined ? {} : { artefactos }),
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* El tope de reloj de UN comando, en segundos.
|
|
103
|
+
*
|
|
104
|
+
* El de la librería son 120 s. Se sube porque aquí los comandos normales son de dispositivo
|
|
105
|
+
* —un `adb install`, esperar a que un emulador termine de arrancar— y 120 s los corta a
|
|
106
|
+
* mitad; y no se sube más porque un comando que no vuelve deja el turno colgado hasta aquí.
|
|
107
|
+
* Lo que de verdad no termina nunca (arrancar un emulador) no se acota con un tope: se manda
|
|
108
|
+
* al fondo, que es lo que la skill explica.
|
|
109
|
+
*/
|
|
110
|
+
export const TOPE_DE_COMANDO_S = 600;
|
|
111
|
+
/**
|
|
112
|
+
* Añade las skills como una ruta virtual de solo lectura del agente.
|
|
24
113
|
*
|
|
25
114
|
* El proyecto del usuario sigue siendo la raíz predeterminada. `/skills` apunta al
|
|
26
115
|
* catálogo que se distribuye con xonecode: así SkillsMiddleware puede descubrir y
|
|
27
116
|
* cargar bajo demanda cada `SKILL.md` sin conceder al modelo acceso al repositorio
|
|
28
117
|
* del harness ni sacarlo de la raíz del proyecto.
|
|
118
|
+
*
|
|
119
|
+
* **Y las del USUARIO cuelgan de esa misma ruta, una a una.** Viven en otras dos carpetas
|
|
120
|
+
* (`~/.xonecode/skills/` y la del proyecto, `agent/grafo/skills.ts`) y tienen que verse como
|
|
121
|
+
* UNA sola: un subagente declara `skills: [mi-skill]` y eso se traduce a `/skills/mi-skill/`
|
|
122
|
+
* sin saber de dónde salió el fichero. Una raíz aparte —`/skills-tuyas/`— habría metido de
|
|
123
|
+
* quién es la skill dentro de su ruta, y entonces cambiarla de carpeta le cambiaría el
|
|
124
|
+
* nombre al agente.
|
|
125
|
+
*
|
|
126
|
+
* Se apoya en que `CompositeBackend` ordena sus rutas **por longitud descendente** y se
|
|
127
|
+
* queda con la primera que encaja (`sortedRoutes` en deepagents 1.13.2): `/skills/mia/` es
|
|
128
|
+
* más larga que `/skills/`, así que gana para todo lo que cuelgue de ella. Eso no es una
|
|
129
|
+
* suposición sobre la librería: lo ata `proyecto.test.ts` contra la librería REAL, que es la
|
|
130
|
+
* única forma de enterarse el día que cambie.
|
|
131
|
+
*
|
|
132
|
+
* **Límite declarado**: un `ls /skills` enseña solo las de serie. `CompositeBackend.ls`
|
|
133
|
+
* resuelve a UNA ruta y no funde varias, así que las del usuario no salen en ese listado. No
|
|
134
|
+
* importa para lo que esto hace —`SkillsMiddleware` recibe las rutas una a una, ya
|
|
135
|
+
* resueltas, y es así como el modelo las descubre— pero un agente que liste esa carpeta a
|
|
136
|
+
* mano no las verá.
|
|
29
137
|
*/
|
|
30
|
-
export function backendConSkills(backend) {
|
|
138
|
+
export function backendConSkills(backend, propias = []) {
|
|
31
139
|
return new CompositeBackend(backend, {
|
|
32
140
|
// La barra final importa: CompositeBackend la retira antes de delegar. Sin ella
|
|
33
141
|
// reconstruye `//archify/...`, que FilesystemBackend interpreta fuera de su raíz.
|
|
34
142
|
"/skills/": new FilesystemBackend({ rootDir: RAIZ_SKILLS, virtualMode: true }),
|
|
143
|
+
...Object.fromEntries(propias.map((m) => [
|
|
144
|
+
`/skills/${m.nombre}/`,
|
|
145
|
+
new FilesystemBackend({ rootDir: m.dir, virtualMode: true }),
|
|
146
|
+
])),
|
|
35
147
|
});
|
|
36
148
|
}
|
|
37
149
|
/**
|
|
@@ -40,7 +152,7 @@ export function backendConSkills(backend) {
|
|
|
40
152
|
* **La misma pieza que `/skills/` y `/artefactos/`**: otra raíz del `CompositeBackend`. Y de
|
|
41
153
|
* solo lectura por lo mismo que las skills — son material de ENTRADA, los documentos que
|
|
42
154
|
* anexó la persona que creó la tarea, no ficheros que reescribir. Quien lo deniega es
|
|
43
|
-
* `permisosDe` (`agent/perfiles.ts`), incondicionalmente y por patrón: aquí no hay Proxy que
|
|
155
|
+
* `permisosDe` (`agent/grafo/perfiles.ts`), incondicionalmente y por patrón: aquí no hay Proxy que
|
|
44
156
|
* rechace, igual que no lo hay para `/skills/`, porque la denegación que el modelo choca es
|
|
45
157
|
* la del middleware de permisos y ese es el sitio donde vive la regla.
|
|
46
158
|
*
|
|
@@ -60,6 +172,30 @@ export function backendConAdjuntos(backend, carpeta) {
|
|
|
60
172
|
[RUTA_ADJUNTOS]: new FilesystemBackend({ rootDir: carpeta, virtualMode: true }),
|
|
61
173
|
});
|
|
62
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* Cuelga `/planes/` de `.xonecode/planes/`, en el repo LOCAL.
|
|
177
|
+
*
|
|
178
|
+
* El porqué de ese sitio está en `core/planes.ts`. Lo que aporta esto es el montaje, y tiene
|
|
179
|
+
* las mismas dos trampas que `/artefactos/` y `/skills/`:
|
|
180
|
+
*
|
|
181
|
+
* - **La barra final es obligatoria**: `CompositeBackend` la retira antes de delegar, y sin
|
|
182
|
+
* ella reconstruye `//favoritos/PLAN.md`, que `FilesystemBackend` interpreta fuera de su
|
|
183
|
+
* raíz.
|
|
184
|
+
* - **La carpeta NO se crea al montar**: la crea `FilesystemBackend.write` la primera vez que
|
|
185
|
+
* se escribe. Un proyecto en el que nadie ha planificado no tiene por qué tener la carpeta.
|
|
186
|
+
*
|
|
187
|
+
* Y una diferencia con los artefactos que es el motivo de que exista: esto **no se anuncia**.
|
|
188
|
+
* Un artefacto se enseña una vez; un plan se escribe, se lee y se ACTUALIZA por varios
|
|
189
|
+
* especialistas a lo largo de varios turnos, así que un evento por escritura sería ruido.
|
|
190
|
+
*/
|
|
191
|
+
export function backendConPlanes(backend, raiz) {
|
|
192
|
+
return new CompositeBackend(backend, {
|
|
193
|
+
[RUTA_PLANES]: new FilesystemBackend({
|
|
194
|
+
rootDir: join(raiz, CARPETA_DE_PLANES),
|
|
195
|
+
virtualMode: true,
|
|
196
|
+
}),
|
|
197
|
+
});
|
|
198
|
+
}
|
|
63
199
|
/**
|
|
64
200
|
* Cuelga `/artefactos/` de la carpeta de la SESIÓN, fuera del proyecto.
|
|
65
201
|
*
|
|
@@ -81,8 +217,8 @@ export function backendConAdjuntos(backend, carpeta) {
|
|
|
81
217
|
export function backendConArtefactos(backend, carpeta, alEscribir) {
|
|
82
218
|
const destino = new FilesystemBackend({ rootDir: carpeta, virtualMode: true });
|
|
83
219
|
const anotado = new Proxy(destino, {
|
|
84
|
-
get(objetivo, prop
|
|
85
|
-
const valor = Reflect.get(objetivo, prop,
|
|
220
|
+
get(objetivo, prop) {
|
|
221
|
+
const valor = Reflect.get(objetivo, prop, objetivo);
|
|
86
222
|
if (typeof valor !== "function")
|
|
87
223
|
return valor;
|
|
88
224
|
if (prop !== "write" && prop !== "edit") {
|
|
@@ -170,8 +306,8 @@ export function sinDescargasEnElProyecto(backend) {
|
|
|
170
306
|
return destino === undefined ? undefined : porQueNoEsDelProyecto(ruta, destino);
|
|
171
307
|
};
|
|
172
308
|
return new Proxy(backend, {
|
|
173
|
-
get(destino, prop
|
|
174
|
-
const valor = Reflect.get(destino, prop,
|
|
309
|
+
get(destino, prop) {
|
|
310
|
+
const valor = Reflect.get(destino, prop, destino);
|
|
175
311
|
if (typeof valor !== "function")
|
|
176
312
|
return valor;
|
|
177
313
|
if (prop !== "write" && prop !== "edit") {
|
|
@@ -210,8 +346,20 @@ export function sinDescargasEnElProyecto(backend) {
|
|
|
210
346
|
* `permisosDe`.
|
|
211
347
|
*/
|
|
212
348
|
export function backendDeAgente(opciones) {
|
|
213
|
-
const
|
|
214
|
-
|
|
349
|
+
const base = opciones.ejecucion === undefined
|
|
350
|
+
? backendDelProyecto(opciones.raiz)
|
|
351
|
+
: backendDelProyectoConShell(opciones.raiz, opciones.ejecucion.entorno);
|
|
352
|
+
const delProyecto = sinDescargasEnElProyecto(sinArtefactosEnElProyecto(sinVistasAplanadas(exponerMemoriaDeProyecto(base), opciones.ficheros)));
|
|
353
|
+
/**
|
|
354
|
+
* Las del usuario se leen AQUÍ y no entran por parámetro, a propósito: compuesto dentro de
|
|
355
|
+
* `construirAgente` —que todos sus tests doblan— el montaje quedaba escrito y no probado,
|
|
356
|
+
* que es el patrón de fallo de esta arquitectura y el motivo de que esta función exista.
|
|
357
|
+
* Aquí sí hay test (`proyecto.test.ts`). Y se leen en cada construcción del agente, igual que
|
|
358
|
+
* `cargarAgentes` — con el mismo límite que aquélla, que conviene no confundir: construir
|
|
359
|
+
* ocurre al ABRIR la sesión y en `/modelo`, no en cada turno, así que una skill guardada con
|
|
360
|
+
* la consola abierta no alcanza a la sesión en curso. Está anotado en CLAUDE.md.
|
|
361
|
+
*/
|
|
362
|
+
const conSkills = backendConSkills(delProyecto, skillsMontables(opciones.raiz));
|
|
215
363
|
const conArtefactos = opciones.artefactos === undefined
|
|
216
364
|
? conSkills
|
|
217
365
|
: backendConArtefactos(conSkills, opciones.artefactos.carpeta, opciones.artefactos.alEscribir);
|
|
@@ -220,7 +368,109 @@ export function backendDeAgente(opciones) {
|
|
|
220
368
|
const conDescargas = opciones.artefactos === undefined
|
|
221
369
|
? conArtefactos
|
|
222
370
|
: backendConDescargas(conArtefactos, opciones.artefactos.carpeta);
|
|
223
|
-
|
|
371
|
+
const conAdjuntos = opciones.adjuntos === undefined ? conDescargas : backendConAdjuntos(conDescargas, opciones.adjuntos);
|
|
372
|
+
/**
|
|
373
|
+
* Los PLANES van SIEMPRE, sin depender de la sesión: cuelgan del repo local
|
|
374
|
+
* (`.xonecode/planes/`) y no de la carpeta de una sesión, porque un plan se escribe un día y
|
|
375
|
+
* se implementa otro. Es la diferencia con los artefactos, que mueren con su sesión.
|
|
376
|
+
*/
|
|
377
|
+
const conPlanes = backendConPlanes(conAdjuntos, opciones.raiz);
|
|
378
|
+
// Lo que deje un COMANDO en la carpeta de artefactos también se anuncia. Sin esto, la
|
|
379
|
+
// captura que escribe un script existe en el disco y no existe para nadie: el evento
|
|
380
|
+
// `artefacto` lo emite el Proxy de `write`/`edit`, y una shell no pasa por ahí.
|
|
381
|
+
return opciones.ejecucion === undefined || opciones.artefactos === undefined
|
|
382
|
+
? conPlanes
|
|
383
|
+
: anunciarArtefactosDeLaShell(conPlanes, opciones.artefactos.carpeta, opciones.artefactos.alEscribir);
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Anuncia lo que un COMANDO deja en la carpeta de artefactos.
|
|
387
|
+
*
|
|
388
|
+
* El evento `artefacto` —«hay un diagrama de 42 KB y se llama así», nunca el contenido— lo
|
|
389
|
+
* emite hoy el Proxy de `backendConArtefactos`, que envuelve `write` y `edit`. Una shell no
|
|
390
|
+
* llama a ninguna de las dos: escribe en el disco de verdad. Así que sin esto, una captura
|
|
391
|
+
* dejada por un script no sale en la pestaña Artefactos ni en el hilo, y el subagente tendría
|
|
392
|
+
* que decir «he dejado una captura» sin que nada lo respalde — que es la clase de afirmación
|
|
393
|
+
* que este harness no quiere.
|
|
394
|
+
*
|
|
395
|
+
* **Se compara una FOTO de antes con una de después** (nombre → tamaño + mtime) en vez de
|
|
396
|
+
* fiarse de lo que el comando diga que hizo. Un comando puede escribir tres ficheros, o
|
|
397
|
+
* ninguno, o pisar el de antes; lo único que lo sabe es la carpeta.
|
|
398
|
+
*
|
|
399
|
+
* **Y la carpeta se CREA aquí, antes de correr el comando.** Es la excepción a «no se crea
|
|
400
|
+
* al montar», y la pagó una captura: `$XONECODE_ARTEFACTOS` la crea `FilesystemBackend.write`
|
|
401
|
+
* la primera vez que el agente escribe un artefacto por una TOOL, y una shell no pasa por
|
|
402
|
+
* ahí — así que en una sesión que no había dibujado nada, el `writeFileSync` del script de
|
|
403
|
+
* captura reventaba con ENOENT (reproducido) y el modelo se replegaba a dejar el `.png` en
|
|
404
|
+
* la raíz del proyecto, que es justo lo que la regla existe para impedir. El sitio es este y
|
|
405
|
+
* no el script: quien SABE que va a correr una shell y DÓNDE está la carpeta es el harness,
|
|
406
|
+
* y arreglarlo en el script lo dejaría arreglado en uno de cinco —y en ninguna skill del
|
|
407
|
+
* usuario—, que es el patrón de fallo de siempre. Se crea solo cuando hay ejecución, así que
|
|
408
|
+
* una sesión de los otros cuatro especialistas sigue sin carpeta vacía.
|
|
409
|
+
*/
|
|
410
|
+
export function anunciarArtefactosDeLaShell(backend, carpeta, alEscribir) {
|
|
411
|
+
const foto = () => {
|
|
412
|
+
const m = new Map();
|
|
413
|
+
let nombres;
|
|
414
|
+
try {
|
|
415
|
+
nombres = readdirSync(carpeta);
|
|
416
|
+
}
|
|
417
|
+
catch {
|
|
418
|
+
return m;
|
|
419
|
+
}
|
|
420
|
+
for (const nombre of nombres) {
|
|
421
|
+
try {
|
|
422
|
+
const e = statSync(join(carpeta, nombre));
|
|
423
|
+
if (e.isFile())
|
|
424
|
+
m.set(nombre, `${e.size}:${e.mtimeMs}`);
|
|
425
|
+
}
|
|
426
|
+
catch {
|
|
427
|
+
// Un fichero que desaparece entre el listado y la medida no es un artefacto nuevo.
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
return m;
|
|
431
|
+
};
|
|
432
|
+
return new Proxy(backend, {
|
|
433
|
+
get(destino, prop) {
|
|
434
|
+
const valor = Reflect.get(destino, prop, destino);
|
|
435
|
+
if (typeof valor !== "function")
|
|
436
|
+
return valor;
|
|
437
|
+
if (prop !== "execute")
|
|
438
|
+
return valor.bind(destino);
|
|
439
|
+
return async (...args) => {
|
|
440
|
+
try {
|
|
441
|
+
// Antes de la foto: si el comando es el que escribe la captura, la carpeta tiene
|
|
442
|
+
// que existir YA. Un fallo al crearla no puede tumbar el comando —se podía correr
|
|
443
|
+
// sin carpeta antes de esto—, así que se traga y la foto sigue tolerando su
|
|
444
|
+
// ausencia.
|
|
445
|
+
mkdirSync(carpeta, { recursive: true });
|
|
446
|
+
}
|
|
447
|
+
catch {
|
|
448
|
+
// Sin carpeta no hay artefactos que anunciar, y el comando no es asunto suyo.
|
|
449
|
+
}
|
|
450
|
+
const antes = foto();
|
|
451
|
+
try {
|
|
452
|
+
return await valor.apply(destino, args);
|
|
453
|
+
}
|
|
454
|
+
finally {
|
|
455
|
+
// En el `finally`: un comando que acaba en error puede haber dejado el fichero, y
|
|
456
|
+
// un fallo al listar la carpeta no puede llevarse por delante el resultado.
|
|
457
|
+
try {
|
|
458
|
+
for (const [nombre, marca] of foto()) {
|
|
459
|
+
if (antes.get(nombre) === marca)
|
|
460
|
+
continue;
|
|
461
|
+
const ruta = RUTA_ARTEFACTOS + nombre;
|
|
462
|
+
const mime = mimeDeArtefacto(nombre);
|
|
463
|
+
const bytes = Number(marca.split(":")[0] ?? 0);
|
|
464
|
+
alEscribir({ ruta, nombre, bytes, ...(mime === undefined ? {} : { mime }) });
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
catch {
|
|
468
|
+
// Un artefacto que no se pudo anunciar no invalida el comando.
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
};
|
|
472
|
+
},
|
|
473
|
+
});
|
|
224
474
|
}
|
|
225
475
|
/**
|
|
226
476
|
* Expone la memoria del proyecto sin abrir la carpeta interna `.xonecode`.
|
|
@@ -231,8 +481,8 @@ export function backendDeAgente(opciones) {
|
|
|
231
481
|
export function exponerMemoriaDeProyecto(backend) {
|
|
232
482
|
const rutaReal = (ruta) => ruta === RUTA_MEMORIA_VIRTUAL ? RUTA_MEMORIA_INTERNA : ruta;
|
|
233
483
|
return new Proxy(backend, {
|
|
234
|
-
get(destino, prop
|
|
235
|
-
const valor = Reflect.get(destino, prop,
|
|
484
|
+
get(destino, prop) {
|
|
485
|
+
const valor = Reflect.get(destino, prop, destino);
|
|
236
486
|
if (typeof valor !== "function")
|
|
237
487
|
return valor;
|
|
238
488
|
if (prop === "read" || prop === "readRaw" || prop === "write" || prop === "edit") {
|
|
@@ -285,8 +535,8 @@ export function sinArtefactosEnElProyecto(backend) {
|
|
|
285
535
|
return destino === undefined ? undefined : porQueNoAhi(ruta, destino);
|
|
286
536
|
};
|
|
287
537
|
return new Proxy(backend, {
|
|
288
|
-
get(destino, prop
|
|
289
|
-
const valor = Reflect.get(destino, prop,
|
|
538
|
+
get(destino, prop) {
|
|
539
|
+
const valor = Reflect.get(destino, prop, destino);
|
|
290
540
|
if (typeof valor !== "function")
|
|
291
541
|
return valor;
|
|
292
542
|
if (prop !== "write" && prop !== "edit") {
|
|
@@ -340,8 +590,8 @@ export const porQueNo = (ruta) => `«${ruta}» es una vista APLANADA que genera
|
|
|
340
590
|
export function sinVistasAplanadas(backend, todas) {
|
|
341
591
|
const motivo = (ruta) => typeof ruta === "string" && esVistaAplanada(ruta, todas) ? porQueNo(ruta) : undefined;
|
|
342
592
|
return new Proxy(backend, {
|
|
343
|
-
get(destino, prop
|
|
344
|
-
const valor = Reflect.get(destino, prop,
|
|
593
|
+
get(destino, prop) {
|
|
594
|
+
const valor = Reflect.get(destino, prop, destino);
|
|
345
595
|
if (typeof valor !== "function")
|
|
346
596
|
return valor;
|
|
347
597
|
// Las que reciben una ruta y la tocan: se rechazan con explicación.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proyecto.js","sourceRoot":"","sources":["../../../src/agent/grafo/proyecto.ts"],"names":[],"mappings":"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"}
|