xonecode 0.17.2 → 0.19.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-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/dispositivos/decodificarImagen.js +62 -0
- package/dist/agent/dispositivos/decodificarImagen.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 +8 -1
- package/dist/agent/grafo/xoneAgent.js.map +1 -1
- package/dist/agent/motores/trueforge/eventosTrueforge.js +11 -1
- package/dist/agent/motores/trueforge/eventosTrueforge.js.map +1 -1
- package/dist/agent/motores/trueforge/modeloLangchain.js +5 -0
- package/dist/agent/motores/trueforge/modeloLangchain.js.map +1 -1
- package/dist/agent/motores/trueforge/sesionTrueforge.js +67 -6
- package/dist/agent/motores/trueforge/sesionTrueforge.js.map +1 -1
- package/dist/agent/subagentes/agentesEnDisco.js +17 -1
- package/dist/agent/subagentes/agentesEnDisco.js.map +1 -1
- package/dist/agent/turno/diagnosticoDeTools.js +32 -3
- package/dist/agent/turno/diagnosticoDeTools.js.map +1 -1
- package/dist/agent/turno/informeDeTraza.js +54 -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 +9 -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 +29 -1
- 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/compararCapturas.js +339 -0
- package/dist/core/compararCapturas.js.map +1 -0
- 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 +135 -0
- package/dist/core/iconos.js.map +1 -0
- package/dist/core/modoDeEscritura.js +22 -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 +111 -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/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/fundamentos/errores-comunes.md +15 -0
- package/skills/xone-development/references/xml-ui/prop-tipos-basicos.md +2 -0
- package/skills/xone-hotswap/SKILL.md +2 -0
- package/skills/xone-plan-builder/SKILL.md +8 -0
- package/skills/xone-plan-builder/references/TASKS-FORMAT.md +8 -0
- package/skills/xone-project-generator/references/fases-10-12-readmes-y-validacion.md +1 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Iconos para quien no tiene los assets (IXCODE-18): buscar uno en Iconify y traer su SVG.
|
|
3
|
+
*
|
|
4
|
+
* Es la parte PURA: las reglas de qué se pide y qué se acepta de vuelta. La red entra por
|
|
5
|
+
* `IconosPort` (`core/ports.ts`) y la hace `agent/config/iconosEnRed.ts`; la tool es
|
|
6
|
+
* `agent/grafo/buscarIcono.ts`.
|
|
7
|
+
*
|
|
8
|
+
* ## Por qué se pide el color Y el tamaño, siempre
|
|
9
|
+
*
|
|
10
|
+
* Medido contra `api.iconify.design`: sin `color` el SVG trae `stroke="currentColor"`, y sin
|
|
11
|
+
* `height` trae `width="1em" height="1em"`. La documentación de XOne no dice qué hace su render
|
|
12
|
+
* con ninguna de las dos —ni tiñe por CSS ni resuelve `em`—, y XOne ignora en silencio lo que
|
|
13
|
+
* no entiende: un icono sin tinte válido saldría negro, o sin tamaño, sin un solo aviso. Así
|
|
14
|
+
* que el color entra como hexadecimal EXPLÍCITO, la altura como píxeles, y el SVG que vuelve
|
|
15
|
+
* ya los lleva cocidos. La regla es del código, no de un prompt.
|
|
16
|
+
*
|
|
17
|
+
* ## Un SVG es TEXTO, y va al proyecto
|
|
18
|
+
*
|
|
19
|
+
* Por eso no hay tool de escritura propia: lo escribe `write_file` con su diff y su
|
|
20
|
+
* aprobación de siempre. Y por eso se le pide a lo que vuelve de la red una forma mínima
|
|
21
|
+
* (`svgAceptable`): un `<script>` o un `onload` dentro de un fichero que acaba en la app del
|
|
22
|
+
* cliente no es un icono.
|
|
23
|
+
*/
|
|
24
|
+
export const NOMBRE_BUSCAR_ICONO = "buscar_icono";
|
|
25
|
+
/**
|
|
26
|
+
* Quién la recibe: quien escribe el proyecto entero, que es quien puede dejar el icono en
|
|
27
|
+
* `icons/`. Regla de DATO —la misma que `recibeIncorporarAdjunto`—, no una lista de nombres: de
|
|
28
|
+
* los de serie, `designer-xone` y `developer-xone`. Vive en `core/` porque la usan DOS: la tool
|
|
29
|
+
* (`agent/grafo/buscarIcono.ts`) y la ficha con la que el orquestador conoce a su equipo
|
|
30
|
+
* (`fichaDeAgente`), y dos copias de la regla serían dos sitios donde puede divergir.
|
|
31
|
+
*
|
|
32
|
+
* Solo llega a `motor: "modelo"`: un especialista de motor externo corre en otro proceso y no
|
|
33
|
+
* recibe tools propias (la ficha lo comprueba aparte).
|
|
34
|
+
*/
|
|
35
|
+
export function recibeBuscarIcono(a) {
|
|
36
|
+
return !a.soloLectura && a.ejecucion !== true && (a.escribeEn ?? []).length === 0;
|
|
37
|
+
}
|
|
38
|
+
/** La carpeta de una app XOne donde viven los iconos (`fundamentos/plataforma-y-anatomia…`). */
|
|
39
|
+
export const CARPETA_DE_ICONOS = "icons";
|
|
40
|
+
/** Tope de la llamada de red: una búsqueda o un SVG son unos cientos de bytes. */
|
|
41
|
+
export const TOPE_DE_ICONOS_MS = 10_000;
|
|
42
|
+
/** Lo que se acepta de vuelta. Un icono de Iconify son unos cientos de bytes; esto es holgura. */
|
|
43
|
+
export const TOPE_DE_SVG_BYTES = 16 * 1024;
|
|
44
|
+
export const LIMITES_DE_BUSQUEDA = { porOmision: 12, maximo: 32 };
|
|
45
|
+
export const LIMITES_DE_TAMANO = { porOmision: 24, minimo: 8, maximo: 512 };
|
|
46
|
+
const ID_DE_ICONO = /^[a-z0-9]+(?:-[a-z0-9]+)*:[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
47
|
+
const PREFIJO = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
48
|
+
const COLOR_HEX = /^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;
|
|
49
|
+
/** La base es UNA constante: un host distinto es una decisión, no un parámetro. */
|
|
50
|
+
export const BASE_DE_ICONIFY = "https://api.iconify.design";
|
|
51
|
+
/** Por qué un id no vale, o `undefined`. Forma `prefijo:nombre`, en minúsculas y con guiones. */
|
|
52
|
+
export function motivoDeIdInaceptable(id) {
|
|
53
|
+
return ID_DE_ICONO.test(id) ? undefined : `«${id}» no es un id de icono: la forma es prefijo:nombre (lucide:home)`;
|
|
54
|
+
}
|
|
55
|
+
export function motivoDePrefijoInaceptable(prefijo) {
|
|
56
|
+
return PREFIJO.test(prefijo) ? undefined : `«${prefijo}» no es un prefijo de colección (lucide, mdi, tabler…)`;
|
|
57
|
+
}
|
|
58
|
+
/** Solo hexadecimal: `currentColor` o un nombre CSS dejarían el tinte a merced del render. */
|
|
59
|
+
export function motivoDeColorInaceptable(color) {
|
|
60
|
+
// Un color de XOne con alfa (#AARRGGBB): no se acepta en silencio sin el alfa, ni se lee como
|
|
61
|
+
// #RRGGBBAA. El icono no lleva transparencia en su color, así que se dice.
|
|
62
|
+
if (/^#[0-9a-fA-F]{8}$/.test(color)) {
|
|
63
|
+
if (color.slice(1, 3).toUpperCase() === "FF")
|
|
64
|
+
return undefined; // opaco: vale, y se normaliza
|
|
65
|
+
return `«${color}» es #AARRGGBB (XOne, alfa primero) y no es opaco: un icono no lleva transparencia en el color. Usa #${color.slice(3)} (#RRGGBB)`;
|
|
66
|
+
}
|
|
67
|
+
return COLOR_HEX.test(color)
|
|
68
|
+
? undefined
|
|
69
|
+
: `«${color}» no vale: el color va como hexadecimal (#1a73e8). currentColor y los nombres CSS no se usan, porque XOne no los documenta`;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* El color como lo pide Iconify: `#RRGGBB`. Un `#FFRRGGBB` de XOne (opaco) pierde su alfa `FF`, que
|
|
73
|
+
* no dice nada; uno con alfa menor ya lo rechazó `motivoDeColorInaceptable`. Se llama DESPUÉS de validar.
|
|
74
|
+
*/
|
|
75
|
+
export function colorParaIconify(color) {
|
|
76
|
+
return /^#[0-9a-fA-F]{8}$/.test(color) ? `#${color.slice(3)}` : color;
|
|
77
|
+
}
|
|
78
|
+
export function urlDeBusqueda(consulta, limite, prefijo) {
|
|
79
|
+
const url = new URL(`${BASE_DE_ICONIFY}/search`);
|
|
80
|
+
url.searchParams.set("query", consulta);
|
|
81
|
+
url.searchParams.set("limit", String(limite));
|
|
82
|
+
if (prefijo !== undefined)
|
|
83
|
+
url.searchParams.set("prefix", prefijo);
|
|
84
|
+
return url.toString();
|
|
85
|
+
}
|
|
86
|
+
/** El id ya viene validado: sin barras ni `..` no hay forma de salirse de `/prefijo/nombre.svg`. */
|
|
87
|
+
export function urlDeSvg(id, color, tamano) {
|
|
88
|
+
const [prefijo, nombre] = id.split(":");
|
|
89
|
+
const url = new URL(`${BASE_DE_ICONIFY}/${prefijo}/${nombre}.svg`);
|
|
90
|
+
url.searchParams.set("color", color);
|
|
91
|
+
url.searchParams.set("height", String(tamano));
|
|
92
|
+
return url.toString();
|
|
93
|
+
}
|
|
94
|
+
/** De la respuesta de `/search`, solo los ids con forma de id: lo demás no es del contrato. */
|
|
95
|
+
export function idsDeBusqueda(cuerpo) {
|
|
96
|
+
if (typeof cuerpo !== "object" || cuerpo === null)
|
|
97
|
+
return [];
|
|
98
|
+
const iconos = cuerpo.icons;
|
|
99
|
+
if (!Array.isArray(iconos))
|
|
100
|
+
return [];
|
|
101
|
+
return iconos.filter((i) => typeof i === "string" && motivoDeIdInaceptable(i) === undefined);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Por qué lo que volvió de la red no se acepta como icono, o `undefined`.
|
|
105
|
+
*
|
|
106
|
+
* Lista de rechazo corta y a propósito: el SVG de Iconify no lleva nada de esto, así que
|
|
107
|
+
* cualquier aparición es señal de que lo devuelto no es lo pedido.
|
|
108
|
+
*/
|
|
109
|
+
export function motivoDeSvgInaceptable(svg) {
|
|
110
|
+
if (Buffer.byteLength(svg, "utf8") > TOPE_DE_SVG_BYTES)
|
|
111
|
+
return "el SVG supera el tope de tamaño";
|
|
112
|
+
if (!/^\s*<svg[\s>]/.test(svg))
|
|
113
|
+
return "la respuesta no es un SVG";
|
|
114
|
+
if (/<\s*(script|foreignObject|iframe|object|embed)\b|\son\w+\s*=|javascript:/i.test(svg)) {
|
|
115
|
+
return "el SVG trae contenido activo";
|
|
116
|
+
}
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* El nombre del fichero, por la convención de XOne (`ic_<descripcion>`, guiones bajos):
|
|
121
|
+
* `lucide:arrow-right` → `ic_arrow_right.svg`. Es también lo que se pone en `img`/`path`: los
|
|
122
|
+
* ejemplos de la plataforma referencian el nombre A SECAS (`img="add.png"`) y XOne lo busca en
|
|
123
|
+
* `icons/`; con `icons/` delante buscaría `icons/icons/…` y el icono no saldría, sin un aviso.
|
|
124
|
+
* El prefijo de la colección no entra: la regla es UNA colección por app, y así el nombre no
|
|
125
|
+
* cambia si se cambia de colección.
|
|
126
|
+
*/
|
|
127
|
+
export function nombreDeFicheroDeIcono(id) {
|
|
128
|
+
const nombre = id.split(":")[1] ?? id;
|
|
129
|
+
return `ic_${nombre.replace(/-/g, "_")}.svg`;
|
|
130
|
+
}
|
|
131
|
+
/** Dónde escribirlo (ruta virtual del backend): `/icons/ic_home.svg`. */
|
|
132
|
+
export function rutaDeIcono(id) {
|
|
133
|
+
return `/${CARPETA_DE_ICONOS}/${nombreDeFicheroDeIcono(id)}`;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=iconos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iconos.js","sourceRoot":"","sources":["../../src/core/iconos.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAElD;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,CAA0D;IAC1F,OAAO,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACpF,CAAC;AAED,gGAAgG;AAChG,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC;AAEzC,kFAAkF;AAClF,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAExC,kGAAkG;AAClG,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,GAAG,IAAI,CAAC;AAE3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAW,CAAC;AAC3E,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAW,CAAC;AAErF,MAAM,WAAW,GAAG,qDAAqD,CAAC;AAC1E,MAAM,OAAO,GAAG,4BAA4B,CAAC;AAC7C,MAAM,SAAS,GAAG,sCAAsC,CAAC;AAEzD,mFAAmF;AACnF,MAAM,CAAC,MAAM,eAAe,GAAG,4BAA4B,CAAC;AAE5D,iGAAiG;AACjG,MAAM,UAAU,qBAAqB,CAAC,EAAU;IAC9C,OAAO,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,kEAAkE,CAAC;AACrH,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAe;IACxD,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,OAAO,wDAAwD,CAAC;AACjH,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,8FAA8F;IAC9F,2EAA2E;IAC3E,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI;YAAE,OAAO,SAAS,CAAC,CAAC,8BAA8B;QAC9F,OAAO,IAAI,KAAK,wGAAwG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;IACrJ,CAAC;IACD,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAI,KAAK,4HAA4H,CAAC;AAC5I,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,MAAc,EAAE,OAAgB;IAC9E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,eAAe,SAAS,CAAC,CAAC;IACjD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9C,IAAI,OAAO,KAAK,SAAS;QAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnE,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,QAAQ,CAAC,EAAU,EAAE,KAAa,EAAE,MAAc;IAChE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAqB,CAAC;IAC5D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,eAAe,IAAI,OAAO,IAAI,MAAM,MAAM,CAAC,CAAC;IACnE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACrC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/C,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,aAAa,CAAC,MAAe;IAC3C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAC7D,MAAM,MAAM,GAAI,MAA8B,CAAC,KAAK,CAAC;IACrD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IACtC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,qBAAqB,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;AAC5G,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,iBAAiB;QAAE,OAAO,iCAAiC,CAAC;IACjG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,2BAA2B,CAAC;IACnE,IAAI,2EAA2E,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1F,OAAO,8BAA8B,CAAC;IACxC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,EAAU;IAC/C,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,OAAO,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;AAC/C,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,WAAW,CAAC,EAAU;IACpC,OAAO,IAAI,iBAAiB,IAAI,sBAAsB,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/D,CAAC"}
|
|
@@ -58,6 +58,28 @@ export const MODO_POR_OMISION = "supervisado";
|
|
|
58
58
|
* fundirlos ataría dos decisiones que se van a afinar por separado.
|
|
59
59
|
*/
|
|
60
60
|
export const TOPE_DE_RONDAS_DE_CONSOLA = 20;
|
|
61
|
+
/**
|
|
62
|
+
* El tope de rondas de `xonecode run --real` que se puede subir por ENTORNO, para medir.
|
|
63
|
+
*
|
|
64
|
+
* `run` no tiene a nadie delante, así que su tope es el corto (`MAX_APPROVAL_ROUNDS`, cinco). Medido
|
|
65
|
+
* sobre una calculadora hecha por los agentes, **las cinco pasadas se cortaron con él**, y siempre en
|
|
66
|
+
* el mismo punto: justo antes de la última vuelta del bucle de calidad, la que compara la captura
|
|
67
|
+
* final con la maqueta. El tope era un artefacto de medir con `run`, no del agente: en la consola
|
|
68
|
+
* son veinte. Con esto una prueba puede pedir el de la consola sin tocar el código.
|
|
69
|
+
*
|
|
70
|
+
* **Solo lo lee `run`**, nunca la consola ni las tareas, que ya tienen el suyo. Un valor que no sea un
|
|
71
|
+
* entero entre 1 y `TOPE_MAXIMO_DE_RONDAS_DE_ENTORNO` no se aplica y `run` lo DICE: el tope existe para
|
|
72
|
+
* cortar un bucle que nadie puede parar, y un `999999` por un descuido lo dejaría sin freno.
|
|
73
|
+
*/
|
|
74
|
+
export const VARIABLE_DEL_TOPE_DE_RONDAS = "XONECODE_TOPE_DE_RONDAS";
|
|
75
|
+
export const TOPE_MAXIMO_DE_RONDAS_DE_ENTORNO = 50;
|
|
76
|
+
export function topeDeRondasDeEntorno(valor) {
|
|
77
|
+
const v = valor?.trim();
|
|
78
|
+
if (v === undefined || !/^[1-9][0-9]{0,2}$/.test(v))
|
|
79
|
+
return undefined;
|
|
80
|
+
const n = Number(v);
|
|
81
|
+
return n <= TOPE_MAXIMO_DE_RONDAS_DE_ENTORNO ? n : undefined;
|
|
82
|
+
}
|
|
61
83
|
/** ¿Es uno de los dos nombres EXACTOS del modo? Nada de tildes ni sinónimos: eso es `modoDeTexto`. */
|
|
62
84
|
export function esModoDeEscritura(candidato) {
|
|
63
85
|
return candidato === "supervisado" || candidato === "autonomo";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modoDeEscritura.js","sourceRoot":"","sources":["../../src/core/modoDeEscritura.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAoB,aAAa,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAE5C,sGAAsG;AACtG,MAAM,UAAU,iBAAiB,CAAC,SAAkB;IAClD,OAAO,SAAS,KAAK,aAAa,IAAI,SAAS,KAAK,UAAU,CAAC;AACjE,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,MAAM,MAAM,GAAG,KAAK;SACjB,IAAI,EAAE;SACN,WAAW,EAAE;SACb,SAAS,CAAC,KAAK,CAAC;SAChB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACzB,IAAI,MAAM,KAAK,aAAa,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,aAAa,CAAC;IAC1E,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,YAAY;QAAE,OAAO,UAAU,CAAC;IACxE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAGrC;IACC,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAC/C,OAAO,QAAQ,CAAC,WAAW,CAAC;AAC9B,CAAC"}
|
|
1
|
+
{"version":3,"file":"modoDeEscritura.js","sourceRoot":"","sources":["../../src/core/modoDeEscritura.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAoB,aAAa,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAE5C;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,yBAAyB,CAAC;AACrE,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAC;AAEnD,MAAM,UAAU,qBAAqB,CAAC,KAAyB;IAC7D,MAAM,CAAC,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;IACxB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACtE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,CAAC,IAAI,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,iBAAiB,CAAC,SAAkB;IAClD,OAAO,SAAS,KAAK,aAAa,IAAI,SAAS,KAAK,UAAU,CAAC;AACjE,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,MAAM,MAAM,GAAG,KAAK;SACjB,IAAI,EAAE;SACN,WAAW,EAAE;SACb,SAAS,CAAC,KAAK,CAAC;SAChB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACzB,IAAI,MAAM,KAAK,aAAa,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,aAAa,CAAC;IAC1E,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,YAAY;QAAE,OAAO,UAAU,CAAC;IACxE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAGrC;IACC,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAC/C,OAAO,QAAQ,CAAC,WAAW,CAAC;AAC9B,CAAC"}
|
package/dist/core/notify.js
CHANGED
|
@@ -24,6 +24,10 @@ const ICONO = {
|
|
|
24
24
|
glob: "✱",
|
|
25
25
|
grep: "✱",
|
|
26
26
|
regex_search: "✱",
|
|
27
|
+
buscar_icono: "✱",
|
|
28
|
+
comparar_capturas: "✱",
|
|
29
|
+
diferencia_de_capturas: "✱",
|
|
30
|
+
generar_fondo_svg: "✱",
|
|
27
31
|
task: "⊙",
|
|
28
32
|
// Un icono PROPIO, y no el genérico `⚙`: en un turno donde se lanza una app, la línea del
|
|
29
33
|
// comando es la que dice qué está pasando de verdad — y no puede leerse igual que una tool
|
|
@@ -39,6 +43,10 @@ const VERBO = {
|
|
|
39
43
|
glob: "busca",
|
|
40
44
|
grep: "busca",
|
|
41
45
|
regex_search: "regex",
|
|
46
|
+
buscar_icono: "icono",
|
|
47
|
+
comparar_capturas: "compara",
|
|
48
|
+
diferencia_de_capturas: "mide cambio",
|
|
49
|
+
generar_fondo_svg: "fondo",
|
|
42
50
|
task: "delega en",
|
|
43
51
|
execute: "corre",
|
|
44
52
|
};
|
package/dist/core/notify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notify.js","sourceRoot":"","sources":["../../src/core/notify.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"notify.js","sourceRoot":"","sources":["../../src/core/notify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
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
|
+
"- Si el crítico y tus medidas discrepan, mide lo que él señala antes de descartarlo.",
|
|
42
|
+
"",
|
|
43
|
+
"2. LO QUE XONE NO AVISA CUANDO FALLA (un bug mudo, con `validate` en verde)",
|
|
44
|
+
"- Un comentario XML no puede llevar `--` dentro: `<!-- ==== X ==== -->` vale, `<!-- ---- X ---- -->` NO.",
|
|
45
|
+
" El parser lo rechaza y la pantalla no abre.",
|
|
46
|
+
"- Un texto que cambia desde JavaScript no va en un `L`/`TL`: pintan su `title`, y `self.X = valor` cambia",
|
|
47
|
+
" el valor y no repinta. Usa `type=\"T\"` con `labelwidth=\"0\"` y `locked=\"true\"`; el color y el tamaño en",
|
|
48
|
+
" `text-forecolor` y `textfont-size`.",
|
|
49
|
+
"- `elevation` en un control con esquinas redondeadas recorta su fondo por abajo. La sombra va en un SVG.",
|
|
50
|
+
"- En un `type=\"B\"` el fondo va en `img` (y `imgsel` para el pulsado); `imgbk` se ignora. Un icono suelto va",
|
|
51
|
+
" en un `type=\"IMG\"`: en el `img` de un botón se estira hasta llenarlo.",
|
|
52
|
+
"- `border-corner-radius` NO recorta un `img` ni un `imgbk`: la esquina se dibuja en el SVG.",
|
|
53
|
+
"- Un color de XOne es `#RRGGBB` o `#AARRGGBB`, con el alfa PRIMERO. HTML y SVG lo ponen al final.",
|
|
54
|
+
"- Un icono o un fondo que se referencia y no está en `icons/` no da error: simplemente no sale.",
|
|
55
|
+
"",
|
|
56
|
+
"3. SVG: LO QUE XONE PINTA Y LO QUE IGNORA (medido en un emulador Android)",
|
|
57
|
+
"- Se pintan `linearGradient`, `radialGradient` y `stop-opacity`. Los FILTROS (`feGaussianBlur`,",
|
|
58
|
+
" `feDropShadow`) se ignoran: una sombra son rectángulos apilados y un resplandor un degradado que acaba en 0.",
|
|
59
|
+
"- Un SVG se estira al control: su `viewBox` lleva la PROPORCIÓN del control o la esquina se deforma.",
|
|
60
|
+
"- Degradados, sombras y resplandores NO se escriben a mano: `generar_fondo_svg`, con el ancho y el alto del",
|
|
61
|
+
" control y los colores EXACTOS de la maqueta. Un `to-br` de Tailwind va de arriba a la izquierda a abajo a la",
|
|
62
|
+
" derecha (ángulo 45); un `shadow-[0_6px_14px…]` es el tipo `sombra`.",
|
|
63
|
+
"- Un icono suelto se busca con `buscar_icono` (color en hexadecimal y altura en píxeles, nunca `currentColor`),",
|
|
64
|
+
" se guarda como `icons/ic_<nombre>.svg` y se referencia por su nombre a secas.",
|
|
65
|
+
"- El texto de un chip o de un botón no puede ser más ancho que su caja: se corta sin avisar.",
|
|
66
|
+
"",
|
|
67
|
+
"4. TRABAJAR SIN PERDER LO YA SABIDO",
|
|
68
|
+
"- Antes de leer código: el `## Hallazgos` y el `DISENO.md` del plan, si lo hay. Lo grave que descubras, con",
|
|
69
|
+
" su causa medida, se apunta en `## Hallazgos`: cada sesión empieza sin memoria y una sesión puede cortarse.",
|
|
70
|
+
"- UNA edición por fichero y por ronda. Lee cada fichero una vez, y edita en vez de reescribir los grandes.",
|
|
71
|
+
"- Si te cortan antes de terminar, que lo escrito sea lo esencial y que lo pendiente quede dicho.",
|
|
72
|
+
"- Lo que no pudiste comprobar en el aparato no se marca como hecho en el plan.",
|
|
73
|
+
"- Una decisión que no es tuya —la persona, el diseño— se dice y se sigue; no se inventa.",
|
|
74
|
+
"",
|
|
75
|
+
"5. LAYOUT Y MEDIDAS (medido en un emulador Android de 1080 px de ancho)",
|
|
76
|
+
"- Una etiqueta `L`/`TL` con `height` propio se recorta dentro de su frame; sin `height` ocupa el frame y centra",
|
|
77
|
+
" el texto. Un `height` menor que la letra la corta por abajo.",
|
|
78
|
+
"- 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",
|
|
79
|
+
" densidad, así que la PROPORCIÓN de un control cambia de un aparato a otro.",
|
|
80
|
+
"- Los anchos de una fila suman como mucho el 100 %, márgenes incluidos: una fila que se pasa desborda por la",
|
|
81
|
+
" derecha. El primer elemento de una fila no lleva `newline=\"false\"`. `rmargin` en `%` se ignora.",
|
|
82
|
+
"- El tamaño real de un control sale del árbol (`xone-hotswap elements`, sus `bounds`), no de lo declarado.",
|
|
83
|
+
"",
|
|
84
|
+
"6. DESPLEGAR Y RECARGAR",
|
|
85
|
+
"- Sin `bd/gestion.db` la app no arranca y `validate` da verde; con `autologon`, además, hace falta un usuario.",
|
|
86
|
+
"- `xone-recargar-android` antes de comprobar nada: una pantalla (`.xne`) se aplica en caliente y conserva el",
|
|
87
|
+
" estado; un `.js` también, pero REINICIA el estado del motor y no el texto de la pantalla; un `.css`, un",
|
|
88
|
+
" `.ini` o `app.xml` relanzan la app y vuelve al arranque.",
|
|
89
|
+
"- Un fallo de arranque lo cuenta `xone-log-android` con fichero y línea: léelo antes de capturar nada.",
|
|
90
|
+
"- La documentación de una skill se lee con `read_file /skills/<skill>/...`; desde la shell, con la ruta que",
|
|
91
|
+
" trae `$XONECODE_SKILL_<NOMBRE>`. `/skills/` no existe en el disco: no la busques con `find`.",
|
|
92
|
+
"",
|
|
93
|
+
"7. QUIÉN HACE QUÉ",
|
|
94
|
+
"- Quien escribe no puntúa su propio trabajo: lo comprueba el conductor en el aparato y lo juzga el crítico",
|
|
95
|
+
" con la maqueta delante. Un cambio visual se cierra con una captura NUEVA de después: una anterior no lo prueba.",
|
|
96
|
+
"",
|
|
97
|
+
"8. LO MÁS USADO",
|
|
98
|
+
"- `bgcolor`: `#RRGGBB` o `#AARRGGBB` (alfa primero); en un frame, un botón o una clase de `default.css`.",
|
|
99
|
+
"- `img`: imagen principal del control (PNG, JPG o SVG, por su nombre a secas; se busca en `icons/`). En un",
|
|
100
|
+
" 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.",
|
|
101
|
+
"- `labelwidth`: proporción del ancho para la etiqueta (0 = sin etiqueta). En un `L`/`TL` el texto ES la",
|
|
102
|
+
" etiqueta: con `labelwidth=\"0\"` el texto desaparece.",
|
|
103
|
+
"- `auto-fontsize=\"true\"` reduce la letra hasta que el texto entre; `fontname` es un `.ttf` de `fonts/`.",
|
|
104
|
+
"",
|
|
105
|
+
"9. HONESTIDAD",
|
|
106
|
+
"- Distingue lo MEDIDO de lo supuesto y dilo: «lo vi en la captura» no es «debería verse».",
|
|
107
|
+
"- No descartes a un crítico ni una comprobación sin haber medido lo que señalan.",
|
|
108
|
+
"- No afirmes «sin recorte», «funciona» ni «igual que la maqueta» sin la captura que lo sostiene, y termina",
|
|
109
|
+
" diciendo qué NO comprobaste y qué sigue distinto.",
|
|
110
|
+
].join("\n");
|
|
111
|
+
//# 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,sFAAsF;IACtF,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,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"}
|