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
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// **Imports PROFUNDOS, y por el mismo motivo medido que `indiceEnDisco.ts`**: el barril de
|
|
2
|
+
// `xone-linter` arrastra su runtime con un *top-level await* que revienta bajo `tsx`, que es el
|
|
3
|
+
// lanzador de desarrollo. Estos tres módulos de CSS se comprobaron uno a uno y **no importan
|
|
4
|
+
// nada** —`parse.js`, `materialize.js` y `Stylesheet.js` no tienen una sola línea de import—,
|
|
5
|
+
// así que entran limpios.
|
|
6
|
+
import { buildStylesheet } from "xone-linter/dist/runtime/css/orderedCss.js";
|
|
7
|
+
import { parseCssFile } from "xone-linter/dist/runtime/css/parse.js";
|
|
8
|
+
import { selectorsFor } from "xone-linter/dist/runtime/css/materialize.js";
|
|
9
|
+
import { basename } from "node:path";
|
|
10
|
+
import { DEL_XML, } from "../../core/estilos.js";
|
|
11
|
+
/**
|
|
12
|
+
* Las dos banderas de la cascada, **copiadas con su asimetría**.
|
|
13
|
+
*
|
|
14
|
+
* `extendsDefaultNodes` solo es cierto con exactamente `"true"` y `getFromCollClass` solo es
|
|
15
|
+
* falso con exactamente `"false"`. No es un descuido del linter: son dos omisiones distintas
|
|
16
|
+
* (false y true), y «arreglar» la asimetría cambiaría qué estilo se resuelve. Es la misma
|
|
17
|
+
* trampa del `"false"` de CloudStudio que aquí concedería escritura.
|
|
18
|
+
*/
|
|
19
|
+
function banderas(app) {
|
|
20
|
+
const a = app.attributes ?? {};
|
|
21
|
+
return {
|
|
22
|
+
extendsDefaultNodes: a["css-extends-default-nodes"] === "true",
|
|
23
|
+
getFromCollClass: a["css-get-node-attrs-from-coll-class"] !== "false",
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/** Todos los props de una coll, estén sueltos o dentro de un `<group>`. */
|
|
27
|
+
function propsDe(coll) {
|
|
28
|
+
return [...(coll.props ?? []), ...(coll.groups ?? []).flatMap((g) => g.props ?? [])];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* El resolvedor de estilos de un proyecto, leyendo el disco con `xone-linter`.
|
|
32
|
+
*
|
|
33
|
+
* **No cachea**, por lo mismo que el índice de navegación: el agente escribe CSS dentro del
|
|
34
|
+
* turno, y una hoja vieja que afirma que una clase pone 14 cuando acaba de ponerse 18 es peor
|
|
35
|
+
* que no tener resolvedor — es una respuesta con autoridad y equivocada.
|
|
36
|
+
*
|
|
37
|
+
* Devuelve `undefined` cuando la colección o el prop no existen: eso NO es un fallo, es un dato,
|
|
38
|
+
* y quien llama dice cómo seguir.
|
|
39
|
+
*/
|
|
40
|
+
export function estilosEnDisco(cargarModelo) {
|
|
41
|
+
return async (coleccion, prop) => {
|
|
42
|
+
const modelo = await cargarModelo();
|
|
43
|
+
const coll = modelo.colls.find((c) => c.name === coleccion);
|
|
44
|
+
if (coll === undefined)
|
|
45
|
+
return undefined;
|
|
46
|
+
const elProp = propsDe(coll).find((p) => p.name === prop);
|
|
47
|
+
if (elProp === undefined)
|
|
48
|
+
return undefined;
|
|
49
|
+
const atributos = elProp.attributes ?? {};
|
|
50
|
+
const clase = atributos["class"];
|
|
51
|
+
const hoja = buildStylesheet(modelo);
|
|
52
|
+
const selectores = selectorsFor("prop", clase, elProp.type, coll.attributes?.["class"], banderas(modelo.app));
|
|
53
|
+
// Qué atributos puede aportar la hoja para este prop: la unión de lo que declara cada
|
|
54
|
+
// selector candidato. `collectAttrs` ya sigue los `extends`, así que esto no los pierde.
|
|
55
|
+
const nombres = new Set();
|
|
56
|
+
for (const s of selectores)
|
|
57
|
+
for (const a of hoja.collectAttrs(s))
|
|
58
|
+
nombres.add(a);
|
|
59
|
+
// Y el valor: el PRIMER selector en orden de prioridad que resuelva algo. Es lo que hace
|
|
60
|
+
// `materializeCssAttributes`, y `lookup` se encarga por dentro del orden de ficheros y de
|
|
61
|
+
// la cadena `extends` — por eso no se recorre a mano.
|
|
62
|
+
const deLaHoja = [];
|
|
63
|
+
const aportan = new Map();
|
|
64
|
+
for (const atributo of [...nombres].sort()) {
|
|
65
|
+
if (atributo === "extends" || atributo === "extend")
|
|
66
|
+
continue;
|
|
67
|
+
for (const selector of selectores) {
|
|
68
|
+
const valor = hoja.lookup(selector, atributo);
|
|
69
|
+
if (valor === undefined)
|
|
70
|
+
continue;
|
|
71
|
+
// El atributo del XML propio GANA siempre (`materialize.ts`), así que lo de la hoja se
|
|
72
|
+
// calla: enseñar los dos como si compitieran haría dudar de cuál se aplica.
|
|
73
|
+
if (atributos[atributo] === undefined)
|
|
74
|
+
deLaHoja.push({ atributo, valor, de: selector });
|
|
75
|
+
aportan.set(selector, selector);
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const delXml = Object.entries(atributos)
|
|
80
|
+
.filter(([k]) => k !== "class" && k !== "name")
|
|
81
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
82
|
+
.map(([atributo, valor]) => ({ atributo, valor, de: DEL_XML }));
|
|
83
|
+
return {
|
|
84
|
+
coll: coleccion,
|
|
85
|
+
prop,
|
|
86
|
+
...(elProp.type === undefined ? {} : { tipo: elProp.type }),
|
|
87
|
+
...(clase === undefined ? {} : { clase }),
|
|
88
|
+
selectores,
|
|
89
|
+
deLaHoja,
|
|
90
|
+
delXml,
|
|
91
|
+
declaradoEn: donde(modelo, [...aportan.keys()]),
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/** En qué fichero se declara cada selector que aportó algo. El basename basta y **no saca una
|
|
96
|
+
* ruta de la máquina**: `cssFiles` va por ruta relativa, pero el basename es lo que el agente
|
|
97
|
+
* necesita para abrirlo con las tools y es lo que aparece en `<style url>`. */
|
|
98
|
+
function donde(modelo, selectores) {
|
|
99
|
+
const salida = [];
|
|
100
|
+
for (const selector of selectores) {
|
|
101
|
+
for (const [ruta, texto] of modelo.cssFiles) {
|
|
102
|
+
if (parseCssFile(texto).some((r) => r.selector === selector)) {
|
|
103
|
+
salida.push({ selector, fichero: basename(ruta) });
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return salida;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=estilosEnDisco.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"estilosEnDisco.js","sourceRoot":"","sources":["../../../src/agent/navegacion/estilosEnDisco.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { hechosDeIndice } from "../../core/hechosDelProyecto.js";
|
|
2
|
+
/**
|
|
3
|
+
* Los hechos del proyecto, leyendo el disco, **y tolerando que no se puedan leer**.
|
|
4
|
+
*
|
|
5
|
+
* Vive aquí y no dentro del turno por el patrón de fallo que este repo lleva contado nueve
|
|
6
|
+
* veces: una composición de producción escondida en un cierre que todos los tests doblan es una
|
|
7
|
+
* regla escrita, no probada. Aquí la costura está fuera y tiene su test.
|
|
8
|
+
*
|
|
9
|
+
* **Un fallo NO tumba el turno, y eso es la decisión.** Construir el índice toca disco y entra
|
|
10
|
+
* en la librería del linter: una carpeta que no es un proyecto XOne, un `.xne` ilegible o un
|
|
11
|
+
* fallo de la librería devuelven `undefined`, y entonces el turno sale exactamente como salía
|
|
12
|
+
* antes de que esto existiera. Adelantar hechos es una OPTIMIZACIÓN —abarata enterarse—, no una
|
|
13
|
+
* capacidad, así que no puede ser lo que impida trabajar. Es el mismo trato que el verificador
|
|
14
|
+
* le da a que falte el binario: se sigue, y lo que falta se nota en el precio, no en un error.
|
|
15
|
+
*
|
|
16
|
+
* Se llama POR TURNO y no al abrir la sesión, a propósito: ver `core/hechosDelProyecto.ts`.
|
|
17
|
+
*/
|
|
18
|
+
export async function hechosDelProyectoDe(cargarIndice, ficheros) {
|
|
19
|
+
try {
|
|
20
|
+
return hechosDeIndice(await cargarIndice(ficheros));
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=hechosEnDisco.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hechosEnDisco.js","sourceRoot":"","sources":["../../../src/agent/navegacion/hechosEnDisco.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA0B,MAAM,iCAAiC,CAAC;AAGzF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,YAA0B,EAC1B,QAA6B;IAE7B,IAAI,CAAC;QACH,OAAO,cAAc,CAAC,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// **Import PROFUNDO, y no es una optimización: es un requisito medido.** El barril
|
|
2
|
+
// (`xone-linter`) reexporta también su RUNTIME —VM, HTTP, dispositivo y una conexión SQLite
|
|
3
|
+
// con *top-level await*—, y eso revienta bajo `tsx`, que es el lanzador de desarrollo
|
|
4
|
+
// (`./bin/xonecode`): «Top-level await is currently not supported with the cjs output
|
|
5
|
+
// format». Por la ruta del modelo no hay ningún `await` de módulo, así que entra limpio — y
|
|
6
|
+
// de paso no se arrastra medio runtime para leer un XML.
|
|
7
|
+
import { XoneProject } from "xone-linter/dist/project/XoneProject.js";
|
|
8
|
+
import { construirIndice } from "../../core/navegacion.js";
|
|
9
|
+
import { modeloDeNavegacion } from "./modeloDeProyecto.js";
|
|
10
|
+
import { estilosEnDisco } from "./estilosEnDisco.js";
|
|
11
|
+
/**
|
|
12
|
+
* Devuelve el cargador del índice de una raíz. La raíz se fija al crearlo y NO entra por
|
|
13
|
+
* parámetro en cada consulta: si el modelo pudiera decir sobre qué proyecto preguntar,
|
|
14
|
+
* tendríamos una tool que lee cualquier carpeta de la máquina.
|
|
15
|
+
*/
|
|
16
|
+
export function indiceEnDisco(raiz) {
|
|
17
|
+
return async (ficheros) => {
|
|
18
|
+
const proyecto = await XoneProject.load(raiz);
|
|
19
|
+
return construirIndice(modeloDeNavegacion(proyecto.model, raiz, ficheros));
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* El resolvedor de ESTILOS de una raíz, sobre el mismo `XoneProject`.
|
|
24
|
+
*
|
|
25
|
+
* Vive aquí y no en `estilosEnDisco.ts` para que el import profundo de `XoneProject` —con su
|
|
26
|
+
* motivo medido escrito arriba— esté en UN solo sitio. `estilosEnDisco` recibe el modelo ya
|
|
27
|
+
* cargado y no sabe de dónde sale, que es lo que lo deja probable sin proyecto en disco.
|
|
28
|
+
*
|
|
29
|
+
* **No cachea**, por lo mismo que el índice: el agente escribe CSS dentro del turno, y una hoja
|
|
30
|
+
* vieja que afirma que una clase pone 14 cuando acaba de ponerse 18 es una respuesta con
|
|
31
|
+
* autoridad y equivocada.
|
|
32
|
+
*/
|
|
33
|
+
export function estilosDeDisco(raiz) {
|
|
34
|
+
return estilosEnDisco(async () => (await XoneProject.load(raiz)).model);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=indiceEnDisco.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indiceEnDisco.js","sourceRoot":"","sources":["../../../src/agent/navegacion/indiceEnDisco.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,4FAA4F;AAC5F,sFAAsF;AACtF,sFAAsF;AACtF,4FAA4F;AAC5F,yDAAyD;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACtE,OAAO,EAAE,eAAe,EAA2B,MAAM,0BAA0B,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAwB,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAsB,MAAM,qBAAqB,CAAC;AA2BzE;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,KAAK,EAAE,QAAQ,EAAE,EAAE;QACxB,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,OAAO,eAAe,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAwB,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChG,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAc,CAAC,CAAC;AACnF,CAAC"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { relative, sep } from "node:path";
|
|
2
|
+
import { puedeLeerRuta } from "../grafo/perfiles.js";
|
|
3
|
+
import { esVistaAplanada } from "../grafo/proyecto.js";
|
|
4
|
+
/**
|
|
5
|
+
* La ruta VIRTUAL de una absoluta del proyecto, o `undefined` si se sale de él.
|
|
6
|
+
*
|
|
7
|
+
* Lexical y no `realpath`: este módulo es la traducción, no la barrera del disco — quien
|
|
8
|
+
* necesite cerrar los enlaces simbólicos lo hace donde se abre el fichero. Aquí lo que se
|
|
9
|
+
* impide es que una ruta de FUERA se presente como si fuera del proyecto.
|
|
10
|
+
*/
|
|
11
|
+
export function rutaVirtualDelProyecto(raiz, absoluta) {
|
|
12
|
+
const rel = relative(raiz, absoluta);
|
|
13
|
+
if (rel === "" || rel.startsWith("..") || rel.startsWith(sep + ".."))
|
|
14
|
+
return undefined;
|
|
15
|
+
// Absoluta de otra unidad: `relative` la devuelve absoluta y no empieza por `..`.
|
|
16
|
+
if (rel.startsWith(sep) || /^[A-Za-z]:/.test(rel))
|
|
17
|
+
return undefined;
|
|
18
|
+
return "/" + rel.split(sep).join("/");
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Traduce el modelo del linter al nuestro, filtrando lo que no se puede enseñar.
|
|
22
|
+
*
|
|
23
|
+
* `ficheros` son las rutas virtuales del proyecto, las mismas que ve el agente: hacen falta
|
|
24
|
+
* para reconocer una vista aplanada (`X.xml` con un `X.xne` al lado), que es una regla que
|
|
25
|
+
* depende del conjunto y no de la ruta sola.
|
|
26
|
+
*/
|
|
27
|
+
export function modeloDeNavegacion(delLinter, raiz, ficheros) {
|
|
28
|
+
const colecciones = [];
|
|
29
|
+
for (const coll of delLinter.colls ?? []) {
|
|
30
|
+
const nombre = coll.name;
|
|
31
|
+
const absoluta = coll.location?.file;
|
|
32
|
+
if (nombre === undefined || nombre === "" || absoluta === undefined)
|
|
33
|
+
continue;
|
|
34
|
+
const fichero = rutaVirtualDelProyecto(raiz, absoluta);
|
|
35
|
+
// Fuera del proyecto, denegada o vista aplanada: no entra en el índice. Un símbolo que
|
|
36
|
+
// el agente no puede abrir es peor que uno que falta — le manda a leer donde no debe.
|
|
37
|
+
if (fichero === undefined || !puedeLeerRuta(fichero) || esVistaAplanada(fichero, ficheros))
|
|
38
|
+
continue;
|
|
39
|
+
const campos = (coll.props ?? [])
|
|
40
|
+
.filter((p) => typeof p.name === "string" && p.name !== "")
|
|
41
|
+
.map((p) => ({ nombre: p.name, ...(p.type === undefined ? {} : { tipo: p.type }) }));
|
|
42
|
+
colecciones.push({
|
|
43
|
+
nombre,
|
|
44
|
+
fichero,
|
|
45
|
+
campos,
|
|
46
|
+
referencias: referenciasDe(coll, nombre),
|
|
47
|
+
// Un `onchange` lleva el campo que lo dispara: sin él no se sabe a qué reacciona, y eso
|
|
48
|
+
// es justo lo que hace falta antes de tocarlo.
|
|
49
|
+
eventos: (coll.events ?? [])
|
|
50
|
+
.filter((e) => typeof e.name === "string" && e.name !== "")
|
|
51
|
+
.map((e) => (e.triggerProp === undefined || e.triggerProp === "" ? e.name : `${e.name}(${e.triggerProp})`)),
|
|
52
|
+
nodos: nombresDe(coll.nodes),
|
|
53
|
+
conexiones: nombresDe(coll.connections),
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
colecciones,
|
|
58
|
+
// El inventario entra como criba de la señal débil: sin él, «un literal que coincide con
|
|
59
|
+
// una colección» sería «cualquier literal». Por eso va DESPUÉS de componer las colecciones.
|
|
60
|
+
referenciasDeScript: referenciasDeScript(delLinter, raiz, ficheros, new Set(colecciones.map((c) => c.nombre.toLowerCase()))),
|
|
61
|
+
app: {
|
|
62
|
+
entrada: [...(delLinter.app?.entryPoints ?? [])],
|
|
63
|
+
login: [...(delLinter.app?.loginColls ?? [])],
|
|
64
|
+
// La URL de un estilo es del PROYECTO (`default.css`), no una ruta de la máquina: la
|
|
65
|
+
// declara el propio `app.xml` y por eso viaja tal cual.
|
|
66
|
+
estilos: (delLinter.app?.styles ?? [])
|
|
67
|
+
.map((e) => e.url)
|
|
68
|
+
.filter((u) => typeof u === "string" && u !== ""),
|
|
69
|
+
conexiones: nombresDe(delLinter.app?.connections),
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/** Los `name` que existen de verdad, de una lista que puede traerlos a medias. */
|
|
74
|
+
function nombresDe(lista) {
|
|
75
|
+
return (lista ?? []).map((x) => x.name).filter((n) => typeof n === "string" && n !== "");
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Lo que una colección apunta hacia fuera.
|
|
79
|
+
*
|
|
80
|
+
* Los cuatro atributos son los que `xone-linter` ya valida en su `CrossReferenceRule`, y esa
|
|
81
|
+
* coincidencia es deliberada: **la semántica de qué significa `mapcol` vive en UN sitio**.
|
|
82
|
+
* Reescribirla aquí crearía un segundo sitio donde decidirlo, y el día que divergieran el
|
|
83
|
+
* linter diría una cosa y el agente otra sobre el mismo proyecto.
|
|
84
|
+
*
|
|
85
|
+
* `mapfld` y `linkedfield` se cuelgan del `mapcol` de su propio prop, que es lo que les da
|
|
86
|
+
* sentido: un `mapfld` sin `mapcol` no apunta a nada que se pueda nombrar.
|
|
87
|
+
*/
|
|
88
|
+
function referenciasDe(coll, nombre) {
|
|
89
|
+
const salida = [];
|
|
90
|
+
const hereda = coll.attributes?.["inherits"];
|
|
91
|
+
if (hereda !== undefined && hereda !== "") {
|
|
92
|
+
salida.push({ desde: nombre, por: "inherits", hacia: hereda });
|
|
93
|
+
}
|
|
94
|
+
for (const contenido of coll.contents ?? []) {
|
|
95
|
+
if (contenido.src !== undefined && contenido.src !== "") {
|
|
96
|
+
salida.push({ desde: nombre, por: "contents", hacia: contenido.src });
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
for (const prop of coll.props ?? []) {
|
|
100
|
+
if (typeof prop.name !== "string" || prop.name === "")
|
|
101
|
+
continue;
|
|
102
|
+
const desde = `${nombre}.${prop.name}`;
|
|
103
|
+
const mapcol = prop.attributes?.["mapcol"];
|
|
104
|
+
if (mapcol === undefined || mapcol === "")
|
|
105
|
+
continue;
|
|
106
|
+
salida.push({ desde, por: "mapcol", hacia: mapcol });
|
|
107
|
+
for (const clave of ["mapfld", "linkedfield"]) {
|
|
108
|
+
const campo = prop.attributes?.[clave];
|
|
109
|
+
if (campo !== undefined && campo !== "") {
|
|
110
|
+
salida.push({ desde, por: clave, hacia: `${mapcol}.${campo}` });
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return salida;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Cómo una app XOne llega de verdad a una colección, que no es con `mapcol`.
|
|
118
|
+
*
|
|
119
|
+
* **Medido sobre un proyecto real**, y fue lo que cambió el alcance de la tool. Hay DOS
|
|
120
|
+
* señales, y van separadas a propósito porque no valen lo mismo:
|
|
121
|
+
*
|
|
122
|
+
* 1. **`appData.getCollection("X")` — señal FUERTE** (`por: "script"`). Es una llamada con su
|
|
123
|
+
* literal: la forma en que se nombra una colección desde ES5. Los botones del menú abren
|
|
124
|
+
* así (`onclick="javascript:var o=appData.getCollection('Deportes')…"`), y sin esto «¿quién
|
|
125
|
+
* usa Deportes?» contestaba «nadie» con dos botones apuntándole.
|
|
126
|
+
* 2. **Un literal que COINCIDE con el nombre de una colección — señal DÉBIL**
|
|
127
|
+
* (`por: "mencion"`). Existe porque la cadena real puede tener tres saltos:
|
|
128
|
+
* `method="ExecuteNode(abrirColl('ConsolaReplica'))"` → un nodo con `<param name="coll">` →
|
|
129
|
+
* `irColl(coll)` → `getCollection(collname)` + `pushValue(obj)`. El nombre solo aparece
|
|
130
|
+
* como literal en el PRIMER salto, y perseguir la cadena sería atarse a cómo se llaman los
|
|
131
|
+
* ayudantes de UN proyecto (`irColl`, `abrirColl`, `openMenu`), que no son de XOne.
|
|
132
|
+
*
|
|
133
|
+
* **Y se marcan distinto porque la confianza es distinta.** Una llamada resuelta y una cadena
|
|
134
|
+
* que coincide con un nombre no son lo mismo, y fundirlas haría que la segunda se leyera con
|
|
135
|
+
* la autoridad de la primera. Medido sobre el proyecto real: la débil añade cinco referencias
|
|
136
|
+
* y todas resultaron ciertas, pero eso no la convierte en la fuerte.
|
|
137
|
+
*
|
|
138
|
+
* **Límites declarados**: ninguna de las dos ve un nombre compuesto en ejecución ni dice en qué
|
|
139
|
+
* LÍNEA está —para eso harían falta rangos—, y la débil no puede distinguir un nombre de
|
|
140
|
+
* colección de una cadena que se le parece.
|
|
141
|
+
*/
|
|
142
|
+
const LLAMADA_A_COLECCION = /getCollection\s*\(\s*['"]([^'"]+)['"]\s*\)/gi;
|
|
143
|
+
/** Cualquier literal de cadena con forma de identificador. La criba es el inventario. */
|
|
144
|
+
const LITERAL_DE_CADENA = /['"]([A-Za-z_][A-Za-z0-9_]{2,40})['"]/g;
|
|
145
|
+
/** Todos los sitios del proyecto donde hay script, con su origen ya traducido. */
|
|
146
|
+
function trozosDeScript(delLinter, raiz) {
|
|
147
|
+
const trozos = [];
|
|
148
|
+
for (const coll of delLinter.colls ?? []) {
|
|
149
|
+
const nombre = coll.name;
|
|
150
|
+
const absoluta = coll.location?.file;
|
|
151
|
+
if (nombre === undefined || absoluta === undefined)
|
|
152
|
+
continue;
|
|
153
|
+
const fichero = rutaVirtualDelProyecto(raiz, absoluta);
|
|
154
|
+
if (fichero === undefined)
|
|
155
|
+
continue;
|
|
156
|
+
for (const prop of coll.props ?? []) {
|
|
157
|
+
if (typeof prop.name !== "string" || prop.name === "")
|
|
158
|
+
continue;
|
|
159
|
+
const desde = `${nombre}.${prop.name}`;
|
|
160
|
+
for (const evento of prop.inlineEvents ?? []) {
|
|
161
|
+
trozos.push({ desde, fichero, duena: nombre, texto: String(evento.script ?? "") });
|
|
162
|
+
}
|
|
163
|
+
// **El atributo `method` cuenta**, y no es un detalle: es donde vive
|
|
164
|
+
// `ExecuteNode(abrirColl('ConsolaReplica'))`, o sea la única aparición literal de esa
|
|
165
|
+
// colección en todo el proyecto. Sin mirarlo, el botón de información no referencia nada.
|
|
166
|
+
const metodo = prop.attributes?.["method"];
|
|
167
|
+
if (metodo !== undefined && metodo !== "") {
|
|
168
|
+
trozos.push({ desde, fichero, duena: nombre, texto: metodo });
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
for (const evento of [...(coll.events ?? []), ...(coll.nodes ?? [])]) {
|
|
172
|
+
const desde = `${nombre}:${evento.name ?? "(evento)"}`;
|
|
173
|
+
for (const accion of evento.actions ?? []) {
|
|
174
|
+
for (const texto of [accion.script, accion.value]) {
|
|
175
|
+
if (texto !== undefined && texto !== "")
|
|
176
|
+
trozos.push({ desde, fichero, duena: nombre, texto });
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// Los `.js` sueltos. Sus claves son rutas RELATIVAS al proyecto, así que la virtual es
|
|
182
|
+
// directa. No tienen colección dueña: un `.js` puede nombrar a cualquiera.
|
|
183
|
+
for (const [ruta, texto] of delLinter.jsFiles ?? new Map()) {
|
|
184
|
+
const virtual = "/" + String(ruta).split(/[\\/]/).filter(Boolean).join("/");
|
|
185
|
+
trozos.push({ desde: virtual, fichero: virtual, texto: String(texto) });
|
|
186
|
+
}
|
|
187
|
+
return trozos;
|
|
188
|
+
}
|
|
189
|
+
function referenciasDeScript(delLinter, raiz, ficheros, conocidas) {
|
|
190
|
+
const salida = [];
|
|
191
|
+
const anotar = (desde, por, hacia, fichero) => {
|
|
192
|
+
if (!puedeLeerRuta(fichero) || esVistaAplanada(fichero, ficheros))
|
|
193
|
+
return;
|
|
194
|
+
// Sin repetir: un mismo botón puede nombrar la colección dos veces en la misma línea.
|
|
195
|
+
if (salida.some((r) => r.desde === desde && r.hacia === hacia && r.fichero === fichero))
|
|
196
|
+
return;
|
|
197
|
+
salida.push({ desde, por, hacia, fichero });
|
|
198
|
+
};
|
|
199
|
+
for (const trozo of trozosDeScript(delLinter, raiz)) {
|
|
200
|
+
const fuertes = new Set();
|
|
201
|
+
for (const x of trozo.texto.matchAll(LLAMADA_A_COLECCION)) {
|
|
202
|
+
fuertes.add(x[1].toLowerCase());
|
|
203
|
+
anotar(trozo.desde, "script", x[1], trozo.fichero);
|
|
204
|
+
}
|
|
205
|
+
for (const x of trozo.texto.matchAll(LITERAL_DE_CADENA)) {
|
|
206
|
+
const literal = x[1];
|
|
207
|
+
const clave = literal.toLowerCase();
|
|
208
|
+
// Solo si es el nombre de una colección que EXISTE: el inventario es la criba, y sin
|
|
209
|
+
// ella esto sería «cualquier cadena del proyecto».
|
|
210
|
+
if (!conocidas.has(clave))
|
|
211
|
+
continue;
|
|
212
|
+
// Ya la cogió la señal fuerte en este mismo trozo: no se degrada a mención.
|
|
213
|
+
if (fuertes.has(clave))
|
|
214
|
+
continue;
|
|
215
|
+
/**
|
|
216
|
+
* **Una colección que se nombra a sí misma no cuenta.** Medido: de las menciones que
|
|
217
|
+
* aparecían en el proyecto real, la mayoría eran los scripts de `ConsolaReplica`
|
|
218
|
+
* diciendo «ConsolaReplica» — en un SQL, en un mensaje, en un refresco. Como respuesta a
|
|
219
|
+
* «¿quién usa X?» eso es ruido, y ruido que sale en TODAS las colecciones con scripts.
|
|
220
|
+
*/
|
|
221
|
+
if (trozo.duena !== undefined && trozo.duena.toLowerCase() === clave)
|
|
222
|
+
continue;
|
|
223
|
+
anotar(trozo.desde, "mencion", literal, trozo.fichero);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return salida;
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=modeloDeProyecto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modeloDeProyecto.js","sourceRoot":"","sources":["../../../src/agent/navegacion/modeloDeProyecto.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* La raíz del PAQUETE, buscada hacia arriba en vez de contada con `..`.
|
|
3
|
+
*
|
|
4
|
+
* **Por qué existe, y no es higiene.** `RAIZ_SKILLS` (`agent/grafo/skills.ts`) y la raíz de
|
|
5
|
+
* `agent/config/versionEnDisco.ts` se calculaban con `resolve(dirname(...), "..", "..")`: correcto
|
|
6
|
+
* mientras esos dos ficheros vivieran exactamente a dos niveles de la raíz, y **falso en
|
|
7
|
+
* silencio** en cuanto uno se mueve a una subcarpeta. Ese fallo no lo caza `tsc` ni ningún
|
|
8
|
+
* test de tipos: el catálogo de skills sale VACÍO y el modelo se queda sin conocimiento sin
|
|
9
|
+
* que nadie vea un error. Lo mismo en `dist/`, donde `package.json` declara `skills` en la
|
|
10
|
+
* raíz del paquete.
|
|
11
|
+
*
|
|
12
|
+
* Buscar `package.json` hacia arriba quita la dependencia de la profundidad: el resultado es
|
|
13
|
+
* el mismo desde `src/agent/`, desde `src/agent/grafo/` y desde `dist/agent/grafo/`, y
|
|
14
|
+
* también desde `node_modules/xonecode/dist/…` cuando el paquete está instalado. Un fichero
|
|
15
|
+
* puede cambiar de carpeta sin que nadie tenga que acordarse de recontar los puntos.
|
|
16
|
+
*
|
|
17
|
+
* Se resuelve contra ESTE módulo y nunca contra el cwd: el cwd es el proyecto del cliente, así
|
|
18
|
+
* que un `./skills` relativo apuntaría a la app del usuario.
|
|
19
|
+
*
|
|
20
|
+
* **Y no encontrarla LANZA.** Es la regla de «fallar ruidoso, nunca degradar en silencio»: un
|
|
21
|
+
* paquete sin `package.json` por encima está roto, y toda ruta derivada de una raíz adivinada
|
|
22
|
+
* sería falsa. Devolver un valor por omisión aquí es justo el bug mudo que este módulo existe
|
|
23
|
+
* para cerrar.
|
|
24
|
+
*/
|
|
25
|
+
import { existsSync } from "node:fs";
|
|
26
|
+
import { dirname, resolve } from "node:path";
|
|
27
|
+
import { fileURLToPath } from "node:url";
|
|
28
|
+
/** La carpeta de ESTE módulo. El punto de partida por omisión de la búsqueda. */
|
|
29
|
+
const AQUI = dirname(fileURLToPath(import.meta.url));
|
|
30
|
+
/**
|
|
31
|
+
* Sube desde `desde` hasta la primera carpeta con un `package.json`, o `undefined`.
|
|
32
|
+
*
|
|
33
|
+
* Separada de `raizDelPaquete` para poder probar las dos ramas: sin esto, el caso «no hay
|
|
34
|
+
* ninguna» solo se podría provocar moviendo el repo.
|
|
35
|
+
*/
|
|
36
|
+
export function buscarRaizDelPaquete(desde) {
|
|
37
|
+
let actual = resolve(desde);
|
|
38
|
+
// La condición de parada es la raíz del sistema, donde `dirname` devuelve su propio valor.
|
|
39
|
+
for (;;) {
|
|
40
|
+
if (existsSync(resolve(actual, "package.json")))
|
|
41
|
+
return actual;
|
|
42
|
+
const padre = dirname(actual);
|
|
43
|
+
if (padre === actual)
|
|
44
|
+
return undefined;
|
|
45
|
+
actual = padre;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/** La raíz del paquete. Lanza si no la hay: ver la cabecera. */
|
|
49
|
+
export function raizDelPaquete(desde = AQUI) {
|
|
50
|
+
const raiz = buscarRaizDelPaquete(desde);
|
|
51
|
+
if (raiz === undefined) {
|
|
52
|
+
throw new Error(`instalación de xonecode inservible: no hay ningún package.json por encima de ${desde}`);
|
|
53
|
+
}
|
|
54
|
+
return raiz;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=raizDelPaquete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raizDelPaquete.js","sourceRoot":"","sources":["../../src/agent/raizDelPaquete.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,iFAAiF;AACjF,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAErD;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,IAAI,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,2FAA2F;IAC3F,SAAS,CAAC;QACR,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YAAE,OAAO,MAAM,CAAC;QAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,KAAK,KAAK,MAAM;YAAE,OAAO,SAAS,CAAC;QACvC,MAAM,GAAG,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,cAAc,CAAC,QAAgB,IAAI;IACjD,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,gFAAgF,KAAK,EAAE,CACxF,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { closeSync, existsSync, mkdirSync, openSync } from "node:fs";
|
|
2
2
|
import { dirname, join } from "node:path";
|
|
3
|
-
import { SqliteSaver } from "
|
|
3
|
+
import { SqliteSaver } from "../../vendor/sqliteSaver.js";
|
|
4
4
|
/**
|
|
5
5
|
* El checkpointer PERSISTENTE de un proyecto: la memoria del agente entre arranques.
|
|
6
6
|
*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpointer.js","sourceRoot":"","sources":["../../../src/agent/sesiones/checkpointer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAG1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;AAExD,MAAM,UAAU,2BAA2B,CAAC,IAAY;IACtD,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9C,IAAI,CAAC;QACH,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3D,sFAAsF;QACtF,sFAAsF;QACtF,uFAAuF;QACvF,0FAA0F;QAC1F,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC/C,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,oFAAoF;QACpF,kFAAkF;QAClF,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,YAA6C,EAC7C,IAAY;IAEZ,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,YAAY,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;IAC5F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,YAA6C,EAC7C,IAAY;IAEZ,MAAM,UAAU,GAAG,YAA4E,CAAC;IAChG,IAAI,UAAU,EAAE,YAAY,KAAK,SAAS;QAAE,OAAO;IACnD,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,uFAAuF;QACvF,8EAA8E;IAChF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/agent/sesiones/git.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,QAAQ,GAAG,CAAC,CAAC,CAAC;IACjE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACxG,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAA8G,EAC9G,IAAY,EACZ,MAAc;IAEd,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE;QAC3F,GAAG,EAAE,IAAI;QACT,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE;KAChD,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,OAAO,CAAC;IAClC,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,SAAS,CAAC;IACpC,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
@@ -11,7 +11,7 @@ import { promisify } from "node:util";
|
|
|
11
11
|
import { appendFileSync, existsSync, mkdirSync, readFileSync, readdirSync } from "node:fs";
|
|
12
12
|
import { basename, dirname, resolve } from "node:path";
|
|
13
13
|
import { indicePrivado, claseDeCambio } from "./git.js";
|
|
14
|
-
import { NOMBRE_CARPETA } from "
|
|
14
|
+
import { NOMBRE_CARPETA } from "../config/configEnDisco.js";
|
|
15
15
|
import { selloDeSesion } from "./sesionGit.js";
|
|
16
16
|
const ejecutar = promisify(execFile);
|
|
17
17
|
export const REMOTO = "cloudstudio";
|
|
@@ -45,7 +45,7 @@ async function rutaDeExclusion(raiz) {
|
|
|
45
45
|
/**
|
|
46
46
|
* El prefijo del proyecto dentro del repo (`app/`), o `""` si el proyecto ES la raíz.
|
|
47
47
|
*
|
|
48
|
-
* Mismo patrón que `agent/instantanea.ts#porArbol`, que ya resolvía exactamente esto: git
|
|
48
|
+
* Mismo patrón que `agent/turno/instantanea.ts#porArbol`, que ya resolvía exactamente esto: git
|
|
49
49
|
* habla en rutas relativas a la raíz del REPO y el resto de xonecode (el manifiesto, los
|
|
50
50
|
* `descargados` del ZIP, el `join(raiz, ruta)` de la subida) habla en rutas relativas al
|
|
51
51
|
* PROYECTO. Sin recortar, `subida.ts` compone `outer/app/app/app.xml` y falla en cada
|
|
@@ -251,7 +251,7 @@ export async function cambiosPendientes(raiz, rama) {
|
|
|
251
251
|
.flatMap((linea) => {
|
|
252
252
|
const [marca, ...resto] = linea.split("\t");
|
|
253
253
|
const ruta = resto[resto.length - 1];
|
|
254
|
-
// `claseDeCambio` nunca devuelve `undefined` (ver `agent/git.ts`): una marca que no
|
|
254
|
+
// `claseDeCambio` nunca devuelve `undefined` (ver `agent/sesiones/git.ts`): una marca que no
|
|
255
255
|
// reconocemos también se cuenta, nunca se pierde en silencio del plan de subida.
|
|
256
256
|
return ruta === undefined ? [] : [{ clase: claseDeCambio(marca), ruta: recortar(prefijo, ruta) }];
|
|
257
257
|
})
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitSync.js","sourceRoot":"","sources":["../../../src/agent/sesiones/gitSync.ts"],"names":[],"mappings":"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"}
|
|
@@ -130,7 +130,7 @@ export function claseNeta(primera, ultima) {
|
|
|
130
130
|
* escribe al final de CADA turno (`web/servidor/vestibulo.ts`). Sin excluirlo, la primera
|
|
131
131
|
* fila de la lista sería el transcript de la sesión diciendo que la sesión lo modificó —un
|
|
132
132
|
* bucle, y encima el fichero que menos interesa. Es la misma regla que ya aplica
|
|
133
|
-
* `arbolLimpio` (`agent/gitSync.ts`), y por el mismo motivo: `.xonecode` es interno, no
|
|
133
|
+
* `arbolLimpio` (`agent/sesiones/gitSync.ts`), y por el mismo motivo: `.xonecode` es interno, no
|
|
134
134
|
* trabajo del usuario. Se paga que la memoria del proyecto (`.xonecode/memoria.md`), que
|
|
135
135
|
* el agente sí escribe a veces, tampoco salga aquí; es coherente con el resto del repo, que
|
|
136
136
|
* trata esa carpeta entera como interna, y esa escritura pasa igual por su aprobación.
|
|
@@ -145,7 +145,7 @@ const FUERA = ":(exclude).xonecode";
|
|
|
145
145
|
/**
|
|
146
146
|
* Las TRES clases que esta vista sabe contar: creado, modificado y borrado.
|
|
147
147
|
*
|
|
148
|
-
* No es decoración del listado, es una guarda: `claseDeCambio` (`agent/git.ts`) devuelve
|
|
148
|
+
* No es decoración del listado, es una guarda: `claseDeCambio` (`agent/sesiones/git.ts`) devuelve
|
|
149
149
|
* «modificado» para cualquier letra que no sea `A` ni `D`, así que un cambio de TIPO (`T`,
|
|
150
150
|
* un fichero que pasa a enlace simbólico) o una entrada sin fusionar (`U`) se colarían
|
|
151
151
|
* etiquetados como una modificación normal — una etiqueta falsa, no una lista incompleta.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sesionGit.js","sourceRoot":"","sources":["../../../src/agent/sesiones/sesionGit.ts"],"names":[],"mappings":"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"}
|