xonecode 0.17.2 → 0.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/web/dist/assets/{index-BRVuyPBf.js → index-BvPUqjUm.js} +72 -72
- package/apps/web/dist/assets/{index-DLfF2uEK.css → index-CGEXMJBx.css} +1 -1
- package/apps/web/dist/assets/{php-B5LpMCn-.js → php-Dk28VW45.js} +1 -1
- package/apps/web/dist/assets/{ruby-Clm-qfwM.js → ruby-CPzEcmdp.js} +1 -1
- package/apps/web/dist/index.html +2 -2
- package/dist/agent/config/iconosEnRed.js +47 -0
- package/dist/agent/config/iconosEnRed.js.map +1 -0
- package/dist/agent/config/modelos.js +13 -8
- package/dist/agent/config/modelos.js.map +1 -1
- package/dist/agent/dispositivos/decodificarImagen.js +62 -0
- package/dist/agent/dispositivos/decodificarImagen.js.map +1 -0
- package/dist/agent/grafo/atributosXone.js +58 -0
- package/dist/agent/grafo/atributosXone.js.map +1 -0
- package/dist/agent/grafo/buscarIcono.js +92 -0
- package/dist/agent/grafo/buscarIcono.js.map +1 -0
- package/dist/agent/grafo/compararCapturas.js +103 -0
- package/dist/agent/grafo/compararCapturas.js.map +1 -0
- package/dist/agent/grafo/criticaVisual.js +23 -3
- package/dist/agent/grafo/criticaVisual.js.map +1 -1
- package/dist/agent/grafo/diferenciaDeCapturas.js +88 -0
- package/dist/agent/grafo/diferenciaDeCapturas.js.map +1 -0
- package/dist/agent/grafo/generarFondoSvg.js +83 -0
- package/dist/agent/grafo/generarFondoSvg.js.map +1 -0
- package/dist/agent/grafo/lectorDeReferencias.js +19 -0
- package/dist/agent/grafo/lectorDeReferencias.js.map +1 -0
- package/dist/agent/grafo/xoneAgent.js +11 -3
- package/dist/agent/grafo/xoneAgent.js.map +1 -1
- package/dist/agent/motores/trueforge/capacidades.js +49 -1
- package/dist/agent/motores/trueforge/capacidades.js.map +1 -1
- package/dist/agent/motores/trueforge/esperas.js +61 -0
- package/dist/agent/motores/trueforge/esperas.js.map +1 -0
- package/dist/agent/motores/trueforge/eventosTrueforge.js +11 -1
- package/dist/agent/motores/trueforge/eventosTrueforge.js.map +1 -1
- package/dist/agent/motores/trueforge/informesDeHijos.js +63 -0
- package/dist/agent/motores/trueforge/informesDeHijos.js.map +1 -0
- package/dist/agent/motores/trueforge/medidaAutomatica.js +118 -0
- package/dist/agent/motores/trueforge/medidaAutomatica.js.map +1 -0
- package/dist/agent/motores/trueforge/memoriaDeEspecialistas.js +186 -0
- package/dist/agent/motores/trueforge/memoriaDeEspecialistas.js.map +1 -0
- package/dist/agent/motores/trueforge/modeloLangchain.js +5 -0
- package/dist/agent/motores/trueforge/modeloLangchain.js.map +1 -1
- package/dist/agent/motores/trueforge/resumenSeguro.js +52 -0
- package/dist/agent/motores/trueforge/resumenSeguro.js.map +1 -0
- package/dist/agent/motores/trueforge/sesionTrueforge.js +545 -26
- package/dist/agent/motores/trueforge/sesionTrueforge.js.map +1 -1
- package/dist/agent/motores/trueforge/toolsDeFichero.js +69 -3
- package/dist/agent/motores/trueforge/toolsDeFichero.js.map +1 -1
- package/dist/agent/subagentes/agentesEnDisco.js +88 -19
- package/dist/agent/subagentes/agentesEnDisco.js.map +1 -1
- package/dist/agent/turno/diagnosticoDeTools.js +44 -3
- package/dist/agent/turno/diagnosticoDeTools.js.map +1 -1
- package/dist/agent/turno/informeDeTraza.js +66 -4
- package/dist/agent/turno/informeDeTraza.js.map +1 -1
- package/dist/agent/turno/registroDeFallos.js +6 -1
- package/dist/agent/turno/registroDeFallos.js.map +1 -1
- package/dist/agent/turno/resumenDeTool.js +12 -0
- package/dist/agent/turno/resumenDeTool.js.map +1 -1
- package/dist/agent/turno/turnoReal.js +8 -2
- package/dist/agent/turno/turnoReal.js.map +1 -1
- package/dist/cli/run.js +11 -0
- package/dist/cli/run.js.map +1 -1
- package/dist/core/agentes.js +36 -2
- package/dist/core/agentes.js.map +1 -1
- package/dist/core/analisisDeSesion.js +198 -0
- package/dist/core/analisisDeSesion.js.map +1 -0
- package/dist/core/atributosXone.js +187 -0
- package/dist/core/atributosXone.js.map +1 -0
- package/dist/core/compararCapturas.js +405 -0
- package/dist/core/compararCapturas.js.map +1 -0
- package/dist/core/esfuerzo.js +33 -0
- package/dist/core/esfuerzo.js.map +1 -1
- package/dist/core/fallos.js.map +1 -1
- package/dist/core/fondosSvg.js +223 -0
- package/dist/core/fondosSvg.js.map +1 -0
- package/dist/core/iconos.js +140 -0
- package/dist/core/iconos.js.map +1 -0
- package/dist/core/modoDeEscritura.js +40 -0
- package/dist/core/modoDeEscritura.js.map +1 -1
- package/dist/core/notify.js +8 -0
- package/dist/core/notify.js.map +1 -1
- package/dist/core/nucleoXone.js +113 -0
- package/dist/core/nucleoXone.js.map +1 -0
- package/dist/core/paqueteDeSoporte.js +118 -0
- package/dist/core/paqueteDeSoporte.js.map +1 -0
- package/dist/core/ports.js +31 -0
- package/dist/core/ports.js.map +1 -1
- package/dist/core/referenciasDeImagen.js +55 -0
- package/dist/core/referenciasDeImagen.js.map +1 -0
- package/dist/core/selectorDeCarpeta.js +15 -1
- package/dist/core/selectorDeCarpeta.js.map +1 -1
- package/dist/core/settings.js +19 -4
- package/dist/core/settings.js.map +1 -1
- package/dist/core/shellDeAgente.js +39 -0
- package/dist/core/shellDeAgente.js.map +1 -1
- package/dist/core/tareasDelPlan.js +69 -7
- package/dist/core/tareasDelPlan.js.map +1 -1
- package/dist/web/servidor/arranque.js +110 -0
- package/dist/web/servidor/arranque.js.map +1 -1
- package/dist/web/servidor/sesiones.js +8 -0
- package/dist/web/servidor/sesiones.js.map +1 -1
- package/dist/web/servidor/soporte.js +571 -0
- package/dist/web/servidor/soporte.js.map +1 -0
- package/dist/web/servidor/transporte.js.map +1 -1
- package/package.json +4 -1
- package/skills/xone-development/references/css/propiedades-y-herencia.md +2 -0
- package/skills/xone-development/references/datos/appdata-referencia-ampliada.md +2 -2
- package/skills/xone-development/references/datos/appdata.md +5 -3
- package/skills/xone-development/references/fundamentos/errores-comunes.md +49 -0
- package/skills/xone-development/references/xml-ui/prop-tipos-basicos.md +2 -0
- package/skills/xone-hotswap/SKILL.md +4 -0
- package/skills/xone-hotswap/scripts/xone-log-android +18 -1
- package/skills/xone-plan-builder/SKILL.md +18 -10
- package/skills/xone-plan-builder/references/TASKS-FORMAT.md +13 -5
- package/skills/xone-project-generator/references/fases-10-12-readmes-y-validacion.md +1 -0
- package/skills/xone-spec-builder/SKILL.md +3 -3
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* El NÚCLEO DE TRABAJO: lo fundamental que se midió sobre apps reales, en el prompt de sistema de quien
|
|
3
|
+
* ESCRIBE el proyecto o CONDUCE el aparato (IXCODE-18).
|
|
4
|
+
*
|
|
5
|
+
* ## Por qué existe, medido
|
|
6
|
+
*
|
|
7
|
+
* Nueve pasadas de una calculadora hecha por los agentes, y lo mismo se perdía una y otra vez: un display
|
|
8
|
+
* que no se repintaba vivió siete pasadas, un comentario con `--` tumbó la app, `elevation` recortaba las
|
|
9
|
+
* teclas y `getText` daba por bueno lo que no se veía. Cada hallazgo estaba en una skill, en un informe o
|
|
10
|
+
* en la cabeza de una sesión que ya no existía; **el modelo no abre la skill que no sabe que necesita**
|
|
11
|
+
* (medido: cargaba unas referencias y se saltaba justo la de la regla). Lo que tiene que cumplirse va donde el
|
|
12
|
+
* modelo mira SIEMPRE: el prompt de sistema. Cuesta tokens en cada llamada —por eso el tope duro de líneas y
|
|
13
|
+
* por eso solo lo recibe quien escribe o conduce—, y la caché absorbe casi todo.
|
|
14
|
+
*
|
|
15
|
+
* ## Qué entra y qué no
|
|
16
|
+
*
|
|
17
|
+
* Entra lo que (1) falla EN SILENCIO —`validate` en verde y la app rota—, (2) se midió y no se deduce de la
|
|
18
|
+
* documentación, o (3) es una disciplina de verificación que se saltó. No entra lo que ya dice un mensaje de
|
|
19
|
+
* error, ni lo que es de UN encargo (eso va en su plan: `## Hallazgos`), ni lo que cambia con la versión de
|
|
20
|
+
* XOne sin medirse otra vez: cada regla lleva su medida en `docs/DECISIONES.md`.
|
|
21
|
+
*
|
|
22
|
+
* **El encabezado entero —`REGLAS_XONE` más esto— tiene un tope de `TOPE_DE_LINEAS_DEL_ENCABEZADO`**, y un
|
|
23
|
+
* test lo vigila: un núcleo que crece sin freno acaba diluyendo justo lo que quería asegurar.
|
|
24
|
+
*/
|
|
25
|
+
export const TOPE_DE_LINEAS_DEL_ENCABEZADO = 100;
|
|
26
|
+
export const NUCLEO_XONE = [
|
|
27
|
+
"NÚCLEO DE TRABAJO EN XONE — lo que se midió sobre apps reales. No lo redescubras:",
|
|
28
|
+
"",
|
|
29
|
+
"1. VERIFICAR: SE MIDE LO PINTADO, NO LO LEÍDO",
|
|
30
|
+
"- `validate` en verde NO dice que la app abra ni que se vea bien: no ve un comentario con `--`, un `TL`",
|
|
31
|
+
" que no repinta ni un `elevation` que recorta. Los tres se vieron en verde y estaban rotos.",
|
|
32
|
+
"- Se comprueba en el aparato con un toque REAL (`adb shell input tap`) y una captura NATIVA antes y otra",
|
|
33
|
+
" después de la zona que debía cambiar. `getText` devuelve el VALOR del campo, no lo que se ve.",
|
|
34
|
+
"- Leer o capturar justo tras un `click` puede dar el valor anterior: el repintado es asíncrono. Espera unos",
|
|
35
|
+
" 300 ms. Dos capturas con el mismo hash NO prueban que estén cacheadas: puede ser que no se repinte.",
|
|
36
|
+
"- Si tienes `diferencia_de_capturas`, pregunta «¿cambió esta zona?» con ella, no con `md5` ni con un script.",
|
|
37
|
+
"- Medir cajas no basta: una tecla cabe en su fila y puede tener el texto cortado o el fondo recortado.",
|
|
38
|
+
"- Con un diseño delante, «fiel» se comprueba con `comparar_capturas` y `xone_critica_visual`, pasando la",
|
|
39
|
+
" maqueta como `referencia` (vale /diseno/, /adjuntos/ o /artefactos/). Sin ella el crítico solo dice «nada",
|
|
40
|
+
" roto», y eso no es «se parece».",
|
|
41
|
+
"",
|
|
42
|
+
"2. LO QUE XONE NO AVISA CUANDO FALLA (un bug mudo, con `validate` en verde)",
|
|
43
|
+
"- Un comentario XML no puede llevar `--` dentro: `<!-- ==== X ==== -->` vale, `<!-- ---- X ---- -->` NO.",
|
|
44
|
+
" El parser lo rechaza y la pantalla no abre.",
|
|
45
|
+
"- Un texto que cambia desde JavaScript no va en un `L`/`TL`: pintan su `title`, y `self.X = valor` cambia",
|
|
46
|
+
" el valor y no repinta. Usa `type=\"T\"` con `labelwidth=\"0\"` y `locked=\"true\"`; el color y el tamaño en",
|
|
47
|
+
" `text-forecolor` y `textfont-size`.",
|
|
48
|
+
"- `elevation` en un control con esquinas redondeadas recorta su fondo por abajo. La sombra va en un SVG.",
|
|
49
|
+
"- En un `type=\"B\"` el fondo va en `img` (y `imgsel` para el pulsado); `imgbk` se ignora. Un icono suelto va",
|
|
50
|
+
" en un `type=\"IMG\"`: en el `img` de un botón se estira hasta llenarlo.",
|
|
51
|
+
"- `border-corner-radius` NO recorta un `img` ni un `imgbk`: la esquina se dibuja en el SVG.",
|
|
52
|
+
"- Un color de XOne es `#RRGGBB` o `#AARRGGBB`, con el alfa PRIMERO. HTML y SVG lo ponen al final.",
|
|
53
|
+
"- Un icono o un fondo que se referencia y no está en `icons/` no da error: simplemente no sale.",
|
|
54
|
+
"- `getControl(\"X\")` LANZA si el control no existe, y un `try/catch` NO lo detiene: aborta el evento y saca un diálogo.",
|
|
55
|
+
" No existen en `<create>` (la vista aún no está montada) ni los hijos de un frame OCULTO: en `<create>` solo estado",
|
|
56
|
+
" (`self.MAP_*`). Sonda que no lanza: `ui.getView(self)[\"X\"]` da `undefined` (medido en un aparato).",
|
|
57
|
+
"",
|
|
58
|
+
"3. SVG: LO QUE XONE PINTA Y LO QUE IGNORA (medido en un emulador Android)",
|
|
59
|
+
"- Se pintan `linearGradient`, `radialGradient` y `stop-opacity`. Los FILTROS (`feGaussianBlur`,",
|
|
60
|
+
" `feDropShadow`) se ignoran: una sombra son rectángulos apilados y un resplandor un degradado que acaba en 0.",
|
|
61
|
+
"- Un SVG se estira al control: su `viewBox` lleva la PROPORCIÓN del control o la esquina se deforma.",
|
|
62
|
+
"- Degradados, sombras y resplandores NO se escriben a mano: `generar_fondo_svg`, con el ancho y el alto del",
|
|
63
|
+
" control y los colores EXACTOS de la maqueta. Un `to-br` de Tailwind va de arriba a la izquierda a abajo a la",
|
|
64
|
+
" derecha (ángulo 45); un `shadow-[0_6px_14px…]` es el tipo `sombra`.",
|
|
65
|
+
"- Un icono suelto se busca con `buscar_icono` (color en hexadecimal y altura en píxeles, nunca `currentColor`),",
|
|
66
|
+
" se guarda como `icons/ic_<nombre>.svg` y se referencia por su nombre a secas.",
|
|
67
|
+
"- El texto de un chip o de un botón no puede ser más ancho que su caja: se corta sin avisar.",
|
|
68
|
+
"",
|
|
69
|
+
"4. TRABAJAR SIN PERDER LO YA SABIDO",
|
|
70
|
+
"- Antes de leer código: el `## Hallazgos` y el `DISENO.md` del plan, si lo hay. Lo grave que descubras, con",
|
|
71
|
+
" su causa medida, se apunta en `## Hallazgos`: cada sesión empieza sin memoria y una sesión puede cortarse.",
|
|
72
|
+
"- UNA edición por fichero y por ronda. Lee cada fichero una vez, y edita en vez de reescribir los grandes.",
|
|
73
|
+
"- Si te cortan antes de terminar, que lo escrito sea lo esencial y que lo pendiente quede dicho.",
|
|
74
|
+
"- Lo que no pudiste comprobar en el aparato no se marca como hecho en el plan.",
|
|
75
|
+
"- Una decisión que no es tuya —la persona, el diseño— se dice y se sigue; no se inventa.",
|
|
76
|
+
"",
|
|
77
|
+
"5. LAYOUT Y MEDIDAS (medido en un emulador Android de 1080 px de ancho)",
|
|
78
|
+
"- Una etiqueta `L`/`TL` con `height` propio se recorta dentro de su frame; sin `height` ocupa el frame y centra",
|
|
79
|
+
" el texto. Un `height` menor que la letra la corta por abajo.",
|
|
80
|
+
"- La `p` no es el píxel: 1 p son unos 1,14 px. Un ancho en `%` sigue a la pantalla y un alto en `p` a la",
|
|
81
|
+
" densidad, así que la PROPORCIÓN de un control cambia de un aparato a otro.",
|
|
82
|
+
"- Los anchos de una fila suman como mucho el 100 %, márgenes incluidos: una fila que se pasa desborda por la",
|
|
83
|
+
" derecha. El primer elemento de una fila no lleva `newline=\"false\"`. `rmargin` en `%` se ignora.",
|
|
84
|
+
"- El tamaño real de un control sale del árbol (`xone-hotswap elements`, sus `bounds`), no de lo declarado.",
|
|
85
|
+
"",
|
|
86
|
+
"6. DESPLEGAR Y RECARGAR",
|
|
87
|
+
"- Sin `bd/gestion.db` la app no arranca y `validate` da verde; con `autologon`, además, hace falta un usuario.",
|
|
88
|
+
"- `xone-recargar-android` antes de comprobar nada: una pantalla (`.xne`) se aplica en caliente y conserva el",
|
|
89
|
+
" estado; un `.js` también, pero REINICIA el estado del motor y no el texto de la pantalla; un `.css`, un",
|
|
90
|
+
" `.ini` o `app.xml` relanzan la app y vuelve al arranque.",
|
|
91
|
+
"- Un fallo de arranque lo cuenta `xone-log-android` con fichero y línea: léelo antes de capturar nada.",
|
|
92
|
+
"- La documentación de una skill se lee con `read_file /skills/<skill>/...`; desde la shell, con la ruta que",
|
|
93
|
+
" trae `$XONECODE_SKILL_<NOMBRE>`. `/skills/` no existe en el disco: no la busques con `find`.",
|
|
94
|
+
"",
|
|
95
|
+
"7. QUIÉN HACE QUÉ",
|
|
96
|
+
"- Quien escribe no puntúa su propio trabajo: lo comprueba el conductor en el aparato y lo juzga el crítico",
|
|
97
|
+
" con la maqueta delante. Un cambio visual se cierra con una captura NUEVA de después: una anterior no lo prueba.",
|
|
98
|
+
"",
|
|
99
|
+
"8. LO MÁS USADO",
|
|
100
|
+
"- `bgcolor`: `#RRGGBB` o `#AARRGGBB` (alfa primero); en un frame, un botón o una clase de `default.css`.",
|
|
101
|
+
"- `img`: imagen principal del control (PNG, JPG o SVG, por su nombre a secas; se busca en `icons/`). En un",
|
|
102
|
+
" botón LLENA el botón. `imgsel` es la del pulsado. `imgbk` es el fondo de un frame o grupo, no de un botón.",
|
|
103
|
+
"- `labelwidth`: proporción del ancho para la etiqueta (0 = sin etiqueta). En un `L`/`TL` el texto ES la",
|
|
104
|
+
" etiqueta: con `labelwidth=\"0\"` el texto desaparece.",
|
|
105
|
+
"- `auto-fontsize=\"true\"` reduce la letra hasta que el texto entre; `fontname` es un `.ttf` de `fonts/`.",
|
|
106
|
+
"",
|
|
107
|
+
"9. HONESTIDAD",
|
|
108
|
+
"- Distingue lo MEDIDO de lo supuesto y dilo: «lo vi en la captura» no es «debería verse».",
|
|
109
|
+
"- No descartes a un crítico ni una comprobación sin haber medido lo que señalan.",
|
|
110
|
+
"- No afirmes «sin recorte», «funciona» ni «igual que la maqueta» sin la captura que lo sostiene, y termina",
|
|
111
|
+
" diciendo qué NO comprobaste y qué sigue distinto.",
|
|
112
|
+
].join("\n");
|
|
113
|
+
//# sourceMappingURL=nucleoXone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nucleoXone.js","sourceRoot":"","sources":["../../src/core/nucleoXone.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,CAAC;AAEjD,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,mFAAmF;IACnF,EAAE;IACF,+CAA+C;IAC/C,yGAAyG;IACzG,8FAA8F;IAC9F,0GAA0G;IAC1G,iGAAiG;IACjG,6GAA6G;IAC7G,uGAAuG;IACvG,8GAA8G;IAC9G,wGAAwG;IACxG,0GAA0G;IAC1G,6GAA6G;IAC7G,mCAAmC;IACnC,EAAE;IACF,6EAA6E;IAC7E,0GAA0G;IAC1G,+CAA+C;IAC/C,2GAA2G;IAC3G,+GAA+G;IAC/G,uCAAuC;IACvC,0GAA0G;IAC1G,+GAA+G;IAC/G,2EAA2E;IAC3E,6FAA6F;IAC7F,mGAAmG;IACnG,iGAAiG;IACjG,0HAA0H;IAC1H,sHAAsH;IACtH,wGAAwG;IACxG,EAAE;IACF,2EAA2E;IAC3E,iGAAiG;IACjG,gHAAgH;IAChH,sGAAsG;IACtG,6GAA6G;IAC7G,gHAAgH;IAChH,uEAAuE;IACvE,iHAAiH;IACjH,iFAAiF;IACjF,8FAA8F;IAC9F,EAAE;IACF,qCAAqC;IACrC,6GAA6G;IAC7G,8GAA8G;IAC9G,4GAA4G;IAC5G,kGAAkG;IAClG,gFAAgF;IAChF,0FAA0F;IAC1F,EAAE;IACF,yEAAyE;IACzE,iHAAiH;IACjH,gEAAgE;IAChE,0GAA0G;IAC1G,8EAA8E;IAC9E,8GAA8G;IAC9G,qGAAqG;IACrG,4GAA4G;IAC5G,EAAE;IACF,yBAAyB;IACzB,gHAAgH;IAChH,8GAA8G;IAC9G,2GAA2G;IAC3G,4DAA4D;IAC5D,wGAAwG;IACxG,6GAA6G;IAC7G,gGAAgG;IAChG,EAAE;IACF,mBAAmB;IACnB,4GAA4G;IAC5G,mHAAmH;IACnH,EAAE;IACF,iBAAiB;IACjB,0GAA0G;IAC1G,4GAA4G;IAC5G,8GAA8G;IAC9G,yGAAyG;IACzG,yDAAyD;IACzD,2GAA2G;IAC3G,EAAE;IACF,eAAe;IACf,2FAA2F;IAC3F,kFAAkF;IAClF,4GAA4G;IAC5G,qDAAqD;CACtD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* El paquete de SOPORTE: lo que se exporta desde la pestaña Soporte para que alguien analice
|
|
3
|
+
* qué hizo un chat, una tarea o el proyecto entero. Las REGLAS, puras; el disco y el zip
|
|
4
|
+
* viven en `agent/soporte/paqueteEnDisco.ts`.
|
|
5
|
+
*
|
|
6
|
+
* ## Qué entra y qué no
|
|
7
|
+
*
|
|
8
|
+
* Es una LISTA NEGRA de lo que nunca viaja sobre lo que ya se recorre (el proyecto y su
|
|
9
|
+
* `.xonecode/`), y no una lista blanca de extensiones, porque la pregunta de soporte es
|
|
10
|
+
* «qué había»: una lista blanca dejaría fuera justo el fichero raro que explica el fallo.
|
|
11
|
+
* Lo que nunca viaja es lo que da acceso a algo —claves, tokens, el `.env`— y el historial
|
|
12
|
+
* de git, que el usuario no pidió (se decidió con él).
|
|
13
|
+
*
|
|
14
|
+
* Los secretos de xonecode viven en la CASA del usuario, no en el proyecto, así que aquí no
|
|
15
|
+
* deberían aparecer nunca. Los nombres se niegan igual: es la segunda llave, por si un día
|
|
16
|
+
* alguien copia uno donde no toca.
|
|
17
|
+
*
|
|
18
|
+
* ## Qué líneas de traza son de UN chat
|
|
19
|
+
*
|
|
20
|
+
* Solo las que traen su `chat`. **No se reparte nada por fechas**: las sesiones se reabren,
|
|
21
|
+
* así que la ventana `creada`→`ultimoTurno` de dos chats se solapa y la mayoría de las líneas
|
|
22
|
+
* caerían en el chat equivocado. Lo que no lleva `chat` —líneas anteriores a que existiera,
|
|
23
|
+
* y `traza-errores.jsonl`, cuyo sumidero es de todo el proceso— va solo en el paquete del
|
|
24
|
+
* PROYECTO, y el manifiesto dice por qué.
|
|
25
|
+
*
|
|
26
|
+
* ## Rutas de la máquina
|
|
27
|
+
*
|
|
28
|
+
* Los mensajes del hilo y el `detalle` de un comando de shell pueden llevar rutas absolutas.
|
|
29
|
+
* Es una excepción DECLARADA a `sinRutas`: esa regla es del cable, y esto es un fichero que la
|
|
30
|
+
* persona descarga y entrega a mano. El manifiesto lo avisa.
|
|
31
|
+
*/
|
|
32
|
+
/** Lo que admite un paquete, sumado en disco. Lo que no cabe se OMITE y se dice. */
|
|
33
|
+
export const TOPE_DEL_PAQUETE_DE_SOPORTE = 512 * 1024 * 1024;
|
|
34
|
+
/** Carpetas que no viajan, estén donde estén. */
|
|
35
|
+
export const CARPETAS_QUE_NO_VIAJAN = new Set([".git", "node_modules"]);
|
|
36
|
+
/** Ficheros de credenciales de xonecode. Viven en la casa; negarlos aquí es la segunda llave. */
|
|
37
|
+
export const SECRETOS_QUE_NO_VIAJAN = new Set([
|
|
38
|
+
"auth.json",
|
|
39
|
+
"cloudstudio-oauth.json",
|
|
40
|
+
"conectores-oauth.json",
|
|
41
|
+
]);
|
|
42
|
+
/**
|
|
43
|
+
* El checkpoint no se recorre como un fichero más: con la conexión abierta, copiar sus bytes
|
|
44
|
+
* da una base a medio escribir. Se copia aparte con la copia en caliente de SQLite, y sus
|
|
45
|
+
* auxiliares (`-wal`, `-shm`) no viajan porque la copia ya los lleva dentro.
|
|
46
|
+
*/
|
|
47
|
+
export const NOMBRE_DEL_CHECKPOINT = "checkpoint.sqlite";
|
|
48
|
+
/**
|
|
49
|
+
* ¿Viaja esta ruta en un paquete de soporte? `relativa` es POSIX, relativa a la raíz de lo
|
|
50
|
+
* que se recorre, sin barra delante.
|
|
51
|
+
*/
|
|
52
|
+
export function viajaEnSoporte(relativa) {
|
|
53
|
+
const segmentos = relativa.split("/").filter((s) => s !== "");
|
|
54
|
+
if (segmentos.length === 0)
|
|
55
|
+
return false;
|
|
56
|
+
if (segmentos.some((s) => CARPETAS_QUE_NO_VIAJAN.has(s)))
|
|
57
|
+
return false;
|
|
58
|
+
const nombre = segmentos[segmentos.length - 1];
|
|
59
|
+
if (nombre === ".env" || nombre.startsWith(".env."))
|
|
60
|
+
return false;
|
|
61
|
+
if (SECRETOS_QUE_NO_VIAJAN.has(nombre))
|
|
62
|
+
return false;
|
|
63
|
+
if (nombre === NOMBRE_DEL_CHECKPOINT || nombre.startsWith(`${NOMBRE_DEL_CHECKPOINT}-`))
|
|
64
|
+
return false;
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
/** Las líneas de una traza que son de ESTE chat: las que traen su id. Nada por fechas. */
|
|
68
|
+
export function lineasDelChat(lineas, chat) {
|
|
69
|
+
return lineas.filter((l) => l.chat === chat);
|
|
70
|
+
}
|
|
71
|
+
/** Cuántas líneas NO llevan chat: se dice en el manifiesto del proyecto. */
|
|
72
|
+
export function lineasSinChat(lineas) {
|
|
73
|
+
return lineas.filter((l) => typeof l.chat !== "string").length;
|
|
74
|
+
}
|
|
75
|
+
/** Un trozo de nombre de fichero: sin nada que un sistema de ficheros tome por separador. */
|
|
76
|
+
function trozo(texto) {
|
|
77
|
+
const limpio = texto
|
|
78
|
+
.normalize("NFKD")
|
|
79
|
+
.replace(/[̀-ͯ]/g, "")
|
|
80
|
+
.replace(/[^A-Za-z0-9._-]+/g, "-")
|
|
81
|
+
.replace(/^-+|-+$/g, "")
|
|
82
|
+
.slice(0, 60);
|
|
83
|
+
return limpio === "" ? "sin-nombre" : limpio;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* El nombre del zip lo DERIVA el código, nunca llega del cliente: va en una cabecera
|
|
87
|
+
* `Content-Disposition` y un nombre con comillas o barras sería otra cosa.
|
|
88
|
+
*/
|
|
89
|
+
export function nombreDelPaquete(tipo, nombre, ahora) {
|
|
90
|
+
const fecha = ahora.toISOString().slice(0, 19).replace(/[:T]/g, "-");
|
|
91
|
+
return `soporte-${tipo}-${trozo(nombre)}-${fecha}.zip`;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Lo que cabe bajo el tope. Si no cabe todo, se omite empezando por lo MÁS GRANDE: una imagen
|
|
95
|
+
* de veinte megas explica menos que cien ficheros de texto, y soltar lo grande primero deja
|
|
96
|
+
* dentro el mayor número de ficheros. Lo omitido se DICE en el manifiesto, con su tamaño.
|
|
97
|
+
*/
|
|
98
|
+
export function repartirPorTope(candidatos, tope) {
|
|
99
|
+
let total = candidatos.reduce((s, c) => s + c.bytes, 0);
|
|
100
|
+
if (total <= tope)
|
|
101
|
+
return { entran: [...candidatos], omitidos: [] };
|
|
102
|
+
const porTamano = [...candidatos].sort((a, b) => b.bytes - a.bytes);
|
|
103
|
+
const fuera = new Set();
|
|
104
|
+
for (const c of porTamano) {
|
|
105
|
+
if (total <= tope)
|
|
106
|
+
break;
|
|
107
|
+
fuera.add(c);
|
|
108
|
+
total -= c.bytes;
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
entran: candidatos.filter((c) => !fuera.has(c)),
|
|
112
|
+
omitidos: candidatos.filter((c) => fuera.has(c)).map((c) => ({ ruta: c.ruta, motivo: `no cabe bajo el tope del paquete (${c.bytes} bytes)` })),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
export const AVISO_DE_RUTAS = "Los mensajes del hilo y los comandos de shell pueden llevar rutas absolutas de la máquina de quien exporta.";
|
|
116
|
+
export const AVISO_DE_TRAZA_SIN_CHAT = "Las líneas de traza sin id de chat (anteriores a que existiera, y toda traza-errores.jsonl) no se pueden atribuir a un chat: solo van en el paquete del proyecto.";
|
|
117
|
+
export const AVISO_EN_VUELO = "Había un turno o una tarea en marcha al exportar: lo último puede estar a medias.";
|
|
118
|
+
//# sourceMappingURL=paqueteDeSoporte.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paqueteDeSoporte.js","sourceRoot":"","sources":["../../src/core/paqueteDeSoporte.ts"],"names":[],"mappings":"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"}
|
package/dist/core/ports.js
CHANGED
|
@@ -346,4 +346,35 @@ export class GestorDeTareasEnMemoria {
|
|
|
346
346
|
async transicionar(_v, clave, transicion) { this.transicionesAplicadas.push({ clave, transicion }); }
|
|
347
347
|
async comentar(_v, clave, texto) { this.comentariosAplicados.push({ clave, texto }); }
|
|
348
348
|
}
|
|
349
|
+
/**
|
|
350
|
+
* El doble: un catálogo fijo, sin red. Genera un SVG mínimo con el color y el tamaño pedidos, así
|
|
351
|
+
* que un test ve que llegaron a quien había que llegar. `fallo` simula la red caída.
|
|
352
|
+
*/
|
|
353
|
+
export class IconosEnMemoria {
|
|
354
|
+
ids;
|
|
355
|
+
fallo;
|
|
356
|
+
[ES_DOBLE] = true;
|
|
357
|
+
peticiones = [];
|
|
358
|
+
constructor(ids = [], fallo) {
|
|
359
|
+
this.ids = ids;
|
|
360
|
+
this.fallo = fallo;
|
|
361
|
+
}
|
|
362
|
+
async buscar(consulta, opciones) {
|
|
363
|
+
if (this.fallo !== undefined)
|
|
364
|
+
throw new Error(this.fallo);
|
|
365
|
+
const q = consulta.toLowerCase();
|
|
366
|
+
return this.ids
|
|
367
|
+
.filter((id) => id.includes(q) && (opciones.prefijo === undefined || id.startsWith(`${opciones.prefijo}:`)))
|
|
368
|
+
.slice(0, opciones.limite);
|
|
369
|
+
}
|
|
370
|
+
async svg(id, opciones) {
|
|
371
|
+
if (this.fallo !== undefined)
|
|
372
|
+
throw new Error(this.fallo);
|
|
373
|
+
if (!this.ids.includes(id))
|
|
374
|
+
throw new Error("el icono no existe");
|
|
375
|
+
this.peticiones.push({ id, ...opciones });
|
|
376
|
+
const { color, tamano } = opciones;
|
|
377
|
+
return `<svg xmlns="http://www.w3.org/2000/svg" width="${tamano}" height="${tamano}" viewBox="0 0 24 24"><path fill="${color}" d="M0 0h24v24H0z"/></svg>`;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
349
380
|
//# sourceMappingURL=ports.js.map
|
package/dist/core/ports.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ports.js","sourceRoot":"","sources":["../../src/core/ports.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ports.js","sourceRoot":"","sources":["../../src/core/ports.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* De dónde puede salir la MAQUETA con la que se compara una captura (IXCODE-18).
|
|
3
|
+
*
|
|
4
|
+
* ## Por qué existe, medido
|
|
5
|
+
*
|
|
6
|
+
* Las tools de comparación (`comparar_capturas`, `xone_critica_visual`) solo leían de
|
|
7
|
+
* `/artefactos/`. Pero la maqueta de un encargo no vive ahí: la trae la persona en el CHAT
|
|
8
|
+
* (`/adjuntos/`) o está en el proyecto (`/diseno/`). Rehaciendo una calculadora de Stitch desde cero,
|
|
9
|
+
* el agente lo dijo tal cual —«el proyecto no traía maqueta»— y el crítico corrió sin referencia:
|
|
10
|
+
* su verde significaba «nada roto», y no vio que faltaba la barra superior entera ni que el teclado
|
|
11
|
+
* no llegaba abajo. Comparar contra el diseño era imposible por una ruta, no por falta de tool.
|
|
12
|
+
*
|
|
13
|
+
* ## Qué se acepta
|
|
14
|
+
*
|
|
15
|
+
* Una imagen PNG o JPEG en uno de tres sitios, por su ruta VIRTUAL:
|
|
16
|
+
* - `/artefactos/…`: lo de siempre.
|
|
17
|
+
* - `/adjuntos/…`: lo que la persona adjuntó (de solo lectura).
|
|
18
|
+
* - Un fichero del PROYECTO (`/diseno/screen.png`): cualquier ruta cuyos segmentos sean llanos.
|
|
19
|
+
*
|
|
20
|
+
* **Lista BLANCA de forma, sobre el TEXTO** (como `esRutaDeArtefacto`): letras, cifras, punto, guion y
|
|
21
|
+
* guion bajo; nada de `..`, `.`, segmentos vacíos, barra invertida, NUL. Y en el proyecto **ningún
|
|
22
|
+
* segmento puede empezar por punto**: eso deja fuera `.env`, `.git` y `.xonecode` (la memoria, los
|
|
23
|
+
* planes y `checkpoint.sqlite`) sin depender de una lista de nombres que se quede corta. Lo que
|
|
24
|
+
* compruebe la lectura real (`agent/grafo/lectorDeReferencias.ts`) es lo mismo, dos veces: texto y
|
|
25
|
+
* `realpath`.
|
|
26
|
+
*/
|
|
27
|
+
const SEGMENTO = /^[A-Za-z0-9._-]+$/;
|
|
28
|
+
const EXTENSIONES = new Set(["png", "jpg", "jpeg"]);
|
|
29
|
+
/** La imagen a la que apunta la ruta, o el MOTIVO en palabras. Comprueba el texto y no abre nada. */
|
|
30
|
+
export function imagenReferida(ruta) {
|
|
31
|
+
if (!ruta.startsWith("/"))
|
|
32
|
+
return `«${ruta}» no es una ruta virtual: empieza por / (/diseno/screen.png, /artefactos/x.png)`;
|
|
33
|
+
const segmentos = ruta.slice(1).split("/");
|
|
34
|
+
if (segmentos.some((s) => s === "" || s === "." || s === ".." || !SEGMENTO.test(s))) {
|
|
35
|
+
return `«${ruta}» no es una ruta aceptable: solo letras, cifras, punto, guion y guion bajo, sin «..» ni segmentos vacíos`;
|
|
36
|
+
}
|
|
37
|
+
const nombre = segmentos[segmentos.length - 1];
|
|
38
|
+
const punto = nombre.lastIndexOf(".");
|
|
39
|
+
const extension = punto > 0 ? nombre.slice(punto + 1).toLowerCase() : "";
|
|
40
|
+
if (!EXTENSIONES.has(extension))
|
|
41
|
+
return `«${nombre}» no es un PNG ni un JPEG, así que no hay nada que medir.`;
|
|
42
|
+
const primero = segmentos[0];
|
|
43
|
+
if (primero === "artefactos" || primero === "adjuntos") {
|
|
44
|
+
if (segmentos.length < 2)
|
|
45
|
+
return `«${ruta}» no apunta a ninguna imagen`;
|
|
46
|
+
return { origen: primero, relativa: segmentos.slice(1).join("/"), nombre };
|
|
47
|
+
}
|
|
48
|
+
// Del proyecto: sin dotfiles (`.env`, `.git`, `.xonecode`) ni, por si acaso, las carpetas del harness.
|
|
49
|
+
if (segmentos.some((s) => s.startsWith(".")))
|
|
50
|
+
return `«${ruta}» no se puede leer: los ficheros y carpetas que empiezan por punto están vedados`;
|
|
51
|
+
if (primero === "skills" || primero === "hotswap")
|
|
52
|
+
return `«${ruta}» no es una imagen del proyecto`;
|
|
53
|
+
return { origen: "proyecto", relativa: segmentos.join("/"), nombre };
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=referenciasDeImagen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"referenciasDeImagen.js","sourceRoot":"","sources":["../../src/core/referenciasDeImagen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAYH,MAAM,QAAQ,GAAG,mBAAmB,CAAC;AACrC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAEpD,qGAAqG;AACrG,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,IAAI,iFAAiF,CAAC;IAC5H,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,OAAO,IAAI,IAAI,0GAA0G,CAAC;IAC5H,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IAChD,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,MAAM,2DAA2D,CAAC;IAC9G,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;IAC9B,IAAI,OAAO,KAAK,YAAY,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QACvD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,IAAI,8BAA8B,CAAC;QACxE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7E,CAAC;IACD,uGAAuG;IACvG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,IAAI,IAAI,kFAAkF,CAAC;IAChJ,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,IAAI,iCAAiC,CAAC;IACpG,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;AACvE,CAAC"}
|
|
@@ -67,6 +67,16 @@ export function comandoDelSelector(plataforma, desde) {
|
|
|
67
67
|
],
|
|
68
68
|
};
|
|
69
69
|
}
|
|
70
|
+
if (plataforma === "win32") {
|
|
71
|
+
// El diálogo de carpetas de Windows, por PowerShell (IXCODE-22: no había ninguno y el botón no hacía nada). `-STA` es
|
|
72
|
+
// obligatorio para un diálogo de Forms. La ruta de inicio va entre comillas simples con las suyas dobladas.
|
|
73
|
+
const inicio = desde === undefined ? "" : `$d.SelectedPath = '${desde.replace(/'/g, "''")}'; `;
|
|
74
|
+
const guion = "Add-Type -AssemblyName System.Windows.Forms; $d = New-Object System.Windows.Forms.FolderBrowserDialog; " +
|
|
75
|
+
"$d.Description = 'Dónde se bajan los proyectos de XOneCode'; " +
|
|
76
|
+
inicio +
|
|
77
|
+
"if ($d.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) { $d.SelectedPath }";
|
|
78
|
+
return { programa: "powershell.exe", argumentos: ["-NoProfile", "-STA", "-Command", guion] };
|
|
79
|
+
}
|
|
70
80
|
return undefined;
|
|
71
81
|
}
|
|
72
82
|
/**
|
|
@@ -82,7 +92,11 @@ export function comandoDelSelector(plataforma, desde) {
|
|
|
82
92
|
* hasta el validador disfrazada de ruta.
|
|
83
93
|
*/
|
|
84
94
|
export function carpetaDeLaSalida(salida) {
|
|
85
|
-
const
|
|
95
|
+
const bruta = salida.trim();
|
|
96
|
+
// Windows: `C:\…` o `\\servidor\…`, que es lo que devuelve su diálogo.
|
|
97
|
+
if (/^[a-zA-Z]:[\\/]/.test(bruta) || bruta.startsWith("\\\\"))
|
|
98
|
+
return bruta.replace(/(?<=.)[\\/]+$/, "");
|
|
99
|
+
const limpia = bruta.replace(/\/+$/, "");
|
|
86
100
|
return limpia.startsWith("/") ? limpia : undefined;
|
|
87
101
|
}
|
|
88
102
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectorDeCarpeta.js","sourceRoot":"","sources":["../../src/core/selectorDeCarpeta.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEzC;wFACwF;AACxF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAOlD;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB,EAAE,KAAc;IACnE,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,uFAAuF;QACvF,yFAAyF;QACzF,6DAA6D;QAC7D,MAAM,KAAK,GAAG;YACZ,mBAAmB;YACnB,uCAAuC;YACvC,OAAO;YACP,+CAA+C;YAC/C,YAAY;YACZ,uCAAuC;YACvC,WAAW;YACX,+GAA+G;YAC/G,gCAAgC;YAChC,SAAS;SACV,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;IAC3E,CAAC;IACD,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,OAAO;YACL,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE;gBACV,kBAAkB;gBAClB,aAAa;gBACb,kDAAkD;gBAClD,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;aAC7E;SACF,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,MAAM,
|
|
1
|
+
{"version":3,"file":"selectorDeCarpeta.js","sourceRoot":"","sources":["../../src/core/selectorDeCarpeta.ts"],"names":[],"mappings":"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"}
|
package/dist/core/settings.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* TypeScript puro: ni disco ni red. El disco lo pone `agent/config/settingsEnDisco.ts`, igual
|
|
10
10
|
* que `core/config.ts` deja el I/O a `agent/config/configEnDisco.ts` y `agent/config/authEnDisco.ts`.
|
|
11
11
|
*/
|
|
12
|
-
import { posix } from "node:path";
|
|
12
|
+
import { posix, win32 } from "node:path";
|
|
13
13
|
import { CLAVES_DENEGADAS } from "./config.js";
|
|
14
14
|
/**
|
|
15
15
|
* Las cuatro clases de destino en que se prueba una app XOne. No son cuatro herramientas
|
|
@@ -269,7 +269,10 @@ export function expandirConCasa(ruta, casa) {
|
|
|
269
269
|
const limpio = ruta.trim();
|
|
270
270
|
if (limpio === "~")
|
|
271
271
|
return casa;
|
|
272
|
-
|
|
272
|
+
// `~\…` también: es como se teclea en Windows, y la casa de allí es `C:\Users\…`.
|
|
273
|
+
if (limpio.startsWith("~/") || limpio.startsWith("~\\"))
|
|
274
|
+
return (esRutaDeWindows(casa) ? win32 : posix).join(casa, limpio.slice(2));
|
|
275
|
+
return limpio;
|
|
273
276
|
}
|
|
274
277
|
/**
|
|
275
278
|
* ¿Vale eso como workspace? Ausente = sí.
|
|
@@ -283,8 +286,19 @@ export function motivoDeWorkspaceInaceptable(ruta) {
|
|
|
283
286
|
const limpio = ruta.trim();
|
|
284
287
|
if (limpio === "")
|
|
285
288
|
return "escribe una carpeta: en blanco no es una elección";
|
|
289
|
+
/**
|
|
290
|
+
* **Windows también** (IXCODE-22): la regla era `posix.isAbsolute`, así que `C:\Users\lolo\xonecode` —que es como es
|
|
291
|
+
* una ruta absoluta allí— se rechazaba con «tiene que empezar por /», y en Windows no había ninguna que valiera. Vale
|
|
292
|
+
* una con unidad (`C:\…`, `C:/…`) o de red (`\\servidor\recurso\…`); la raíz de una unidad no, por lo mismo que `/`.
|
|
293
|
+
*/
|
|
294
|
+
if (esRutaDeWindows(limpio)) {
|
|
295
|
+
const normal = win32.normalize(limpio).replace(/[\\/]+$/, "");
|
|
296
|
+
if (/^[a-zA-Z]:$/.test(normal))
|
|
297
|
+
return "la raíz de la unidad no: ahí cada entorno sería una carpeta de primer nivel del disco";
|
|
298
|
+
return undefined;
|
|
299
|
+
}
|
|
286
300
|
if (!posix.isAbsolute(limpio)) {
|
|
287
|
-
return "tiene que ser una ruta absoluta
|
|
301
|
+
return "tiene que ser una ruta absoluta: que empiece por «/», por «~/» o, en Windows, por la unidad («C:\\…»)";
|
|
288
302
|
}
|
|
289
303
|
if (posix.normalize(limpio).replace(/\/+$/, "") === "") {
|
|
290
304
|
return "la raíz del disco no: ahí cada entorno sería una carpeta de primer nivel del sistema";
|
|
@@ -292,7 +306,8 @@ export function motivoDeWorkspaceInaceptable(ruta) {
|
|
|
292
306
|
return undefined;
|
|
293
307
|
}
|
|
294
308
|
export function rutaDeWorkspace(base, entorno, proyecto) {
|
|
295
|
-
|
|
309
|
+
// Con las reglas de la ruta BASE: sobre `C:\…`, `posix.join` dejaba `C:\Users\x\ws/entorno/proyecto`, mezclado.
|
|
310
|
+
return (esRutaDeWindows(base) ? win32 : posix).join(base, segmentoSeguro(entorno, "id de entorno"), segmentoSeguro(proyecto, "nombre de proyecto"));
|
|
296
311
|
}
|
|
297
312
|
/**
|
|
298
313
|
* Qué entorno de `settings.json` sirve esta URL.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/core/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/core/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -156,4 +156,43 @@ export function entornoDeShell(opciones) {
|
|
|
156
156
|
Object.assign(limpio, opciones.android ?? {});
|
|
157
157
|
return limpio;
|
|
158
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* Por qué un comando de quien ejecuta NO se lanza, o `undefined` si se lanza: una búsqueda que recorre el DISCO ENTERO.
|
|
161
|
+
*
|
|
162
|
+
* Medido en calc14: el conductor buscaba un script que el plan nombraba y no existe (`xone-validate`) y lanzó
|
|
163
|
+
* `find / -name "xone-validate*"`, que tardó más de cuatro minutos con el turno parado; luego otro `find /` para la carpeta
|
|
164
|
+
* del plan, que es virtual y no está en el disco con ese nombre. Nada de lo que busca vive fuera del proyecto, de sus
|
|
165
|
+
* variables o de su PATH, y recorrer la máquina del usuario es además mirar donde no le toca. Se reconoce `find`, `grep -r`
|
|
166
|
+
* y `ls -R` / `du` cuando su punto de partida es la raíz, la casa o una carpeta del sistema; lo relativo (`find .`) y lo de
|
|
167
|
+
* sus variables (`$XONECODE_…`) pasan. Es una lista de lo que se ha visto, no un filtro de shell: un límite declarado.
|
|
168
|
+
*/
|
|
169
|
+
export function motivoDeComandoRechazado(comando) {
|
|
170
|
+
const raices = String.raw `(?:\/|~|\$HOME|\$\{HOME\}|\/Users|\/private|\/System|\/Library|\/Applications|\/Volumes|\/opt|\/usr|\/var|\/tmp)(?:\/)?`;
|
|
171
|
+
const fin = String.raw `(?=\s|$|;|\||&|\))`;
|
|
172
|
+
const inicio = String.raw `(?:^|[;&|(]\s*|&&\s*|\s)`;
|
|
173
|
+
const porElDisco = [
|
|
174
|
+
new RegExp(String.raw `${inicio}find\s+(?:-[HLP]\s+)*["']?${raices}["']?${fin}`),
|
|
175
|
+
new RegExp(String.raw `${inicio}(?:grep|rg)\s+(?:-\S+\s+)*(?:-[a-zA-Z]*[rR][a-zA-Z]*\s+)(?:-\S+\s+|"[^"]*"\s+|'[^']*'\s+|\S+\s+)*["']?${raices}["']?${fin}`),
|
|
176
|
+
new RegExp(String.raw `${inicio}(?:ls\s+-[a-zA-Z]*R[a-zA-Z]*|du)\s+(?:-\S+\s+)*["']?${raices}["']?${fin}`),
|
|
177
|
+
];
|
|
178
|
+
const tools = "Para buscar un fichero por NOMBRE usa la tool `glob` (`pattern: \"**/*.xne\"`, y `path` para acotar), para buscar TEXTO en " +
|
|
179
|
+
"ficheros la tool `grep`, y para listar una carpeta la tool `ls`: ven el proyecto, `/skills/`, `/planes/`, `/artefactos/` y " +
|
|
180
|
+
"`/hotswap/` por su ruta virtual y no salen de ahí.";
|
|
181
|
+
if (porElDisco.some((p) => p.test(comando))) {
|
|
182
|
+
return ("No se lanza: recorre el disco entero de la máquina (se vio tardar más de 4 minutos con el turno parado), y nada de lo que " +
|
|
183
|
+
`buscas vive ahí. ${tools} Tus scripts están en el PATH (\`xone-*\`, se llaman por su nombre; \`--help\` dice cómo); la ` +
|
|
184
|
+
"documentación de tus skills, en `$XONECODE_SKILL_<NOMBRE>`. Si algo que te nombran no aparece ahí, NO existe: dilo.");
|
|
185
|
+
}
|
|
186
|
+
// Buscar FICHEROS desde la shell, aunque sea en una carpeta: lo mismo que las tools de fichero, sin su confinamiento. Un
|
|
187
|
+
// `grep` que filtra la salida de otro comando (`xone-log-android --app | grep CALC`) no busca ficheros y pasa.
|
|
188
|
+
const buscaFicheros = [
|
|
189
|
+
new RegExp(String.raw `${inicio}find\s`),
|
|
190
|
+
new RegExp(String.raw `${inicio}(?:grep|rg)\s+(?:-\S+\s+)*-[a-zA-Z]*[rR][a-zA-Z]*\s`),
|
|
191
|
+
new RegExp(String.raw `${inicio}ls\s+(?:-\S+\s+)*-[a-zA-Z]*R[a-zA-Z]*(?:\s|$)`),
|
|
192
|
+
];
|
|
193
|
+
if (buscaFicheros.some((p) => p.test(comando))) {
|
|
194
|
+
return `No se lanza: para buscar ficheros no uses la shell. ${tools} Si lo que buscas es un script de tus skills, está en el PATH.`;
|
|
195
|
+
}
|
|
196
|
+
return undefined;
|
|
197
|
+
}
|
|
159
198
|
//# sourceMappingURL=shellDeAgente.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shellDeAgente.js","sourceRoot":"","sources":["../../src/core/shellDeAgente.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,sGAAsG;AACtG,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AAE5D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,kBAAkB,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,OAAO,kBAAkB,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;AACrE,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AACxD,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAC;AAE9C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAiE;IAEjE,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC/C,IAAI,QAAQ,KAAK,SAAS;QAAE,SAAS,CAAC,oBAAoB,CAAC,GAAG,QAAQ,CAAC;IACvE,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAC3C,IAAI,GAAG,KAAK,SAAS;QAAE,SAAS,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC;IACxD,OAAO,SAAS,CAAC;AACnB,CAAC;AAQD,MAAM,UAAU,cAAc,CAAC,QAqB9B;IACC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAC7E,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9D,uFAAuF;QACvF,sCAAsC;QACtC,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAS;QACtC,IAAI,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC;YAAE,SAAS;QACjD,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QAC1C,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC;IACpD,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;IACzC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,0FAA0F;QAC1F,gEAAgE;QAChE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChH,CAAC;IACD,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS;QAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC;IAC5F,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS;QAAE,MAAM,CAAC,mBAAmB,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;IACnF,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS;QAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC;IAC/F,wFAAwF;IACxF,4FAA4F;IAC5F,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAE9C,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"shellDeAgente.js","sourceRoot":"","sources":["../../src/core/shellDeAgente.ts"],"names":[],"mappings":"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"}
|