xonecode 0.20.3 → 0.22.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-5rtynJV_.js +490 -0
- package/apps/web/dist/assets/index-Cq6c6WEF.css +1 -0
- package/apps/web/dist/assets/{php-CDg2Quc0.js → php-BTFUgUDo.js} +1 -1
- package/apps/web/dist/assets/{ruby-DlFaAWQT.js → ruby-BKKiBtJK.js} +1 -1
- package/apps/web/dist/index.html +2 -2
- package/dist/agent/conectores/servicioDeConectores.js +86 -45
- package/dist/agent/conectores/servicioDeConectores.js.map +1 -1
- package/dist/agent/config/modelos.js +4 -0
- package/dist/agent/config/modelos.js.map +1 -1
- package/dist/agent/config/mudanzaEnDisco.js +237 -3
- package/dist/agent/config/mudanzaEnDisco.js.map +1 -1
- package/dist/agent/config/selectorEnMaquina.js +3 -2
- package/dist/agent/config/selectorEnMaquina.js.map +1 -1
- package/dist/agent/config/settingsEnDisco.js +76 -2
- package/dist/agent/config/settingsEnDisco.js.map +1 -1
- package/dist/agent/dispositivos/arranqueDeEmulador.js +27 -3
- package/dist/agent/dispositivos/arranqueDeEmulador.js.map +1 -1
- package/dist/agent/dispositivos/instalacionEnMaquina.js +240 -29
- package/dist/agent/dispositivos/instalacionEnMaquina.js.map +1 -1
- package/dist/agent/dispositivos/lanzamientoEnMaquina.js +12 -17
- package/dist/agent/dispositivos/lanzamientoEnMaquina.js.map +1 -1
- package/dist/agent/grafo/proyecto.js +91 -50
- package/dist/agent/grafo/proyecto.js.map +1 -1
- package/dist/agent/motores/trueforge/capacidades.js +22 -0
- package/dist/agent/motores/trueforge/capacidades.js.map +1 -1
- package/dist/agent/motores/trueforge/medidaAutomatica.js +16 -3
- package/dist/agent/motores/trueforge/medidaAutomatica.js.map +1 -1
- package/dist/agent/motores/trueforge/modeloLangchain.js +7 -1
- package/dist/agent/motores/trueforge/modeloLangchain.js.map +1 -1
- package/dist/agent/motores/trueforge/sesionTrueforge.js +135 -14
- package/dist/agent/motores/trueforge/sesionTrueforge.js.map +1 -1
- package/dist/agent/motores/trueforge/toolsDeConectores.js +128 -0
- package/dist/agent/motores/trueforge/toolsDeConectores.js.map +1 -0
- package/dist/agent/motores/trueforge/traerDeStitch.js +142 -0
- package/dist/agent/motores/trueforge/traerDeStitch.js.map +1 -0
- package/dist/agent/subagentes/consumoExterno.js +15 -8
- package/dist/agent/subagentes/consumoExterno.js.map +1 -1
- package/dist/agent/subagentes/escrituraExterna.js +69 -2
- package/dist/agent/subagentes/escrituraExterna.js.map +1 -1
- package/dist/agent/subagentes/subagenteExterno.js +17 -1
- package/dist/agent/subagentes/subagenteExterno.js.map +1 -1
- package/dist/agent/turno/turnoReal.js +1 -0
- package/dist/agent/turno/turnoReal.js.map +1 -1
- package/dist/cli/main.js +5 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/core/actos.js +44 -1
- package/dist/core/actos.js.map +1 -1
- package/dist/core/agentes.js +13 -2
- package/dist/core/agentes.js.map +1 -1
- package/dist/core/comandoExterno.js +69 -0
- package/dist/core/comandoExterno.js.map +1 -0
- package/dist/core/conectores.js +148 -3
- package/dist/core/conectores.js.map +1 -1
- package/dist/core/copiaDeAvd.js +111 -0
- package/dist/core/copiaDeAvd.js.map +1 -0
- package/dist/core/mudanzaDeWorkspace.js +105 -15
- package/dist/core/mudanzaDeWorkspace.js.map +1 -1
- package/dist/core/ports.js +28 -0
- package/dist/core/ports.js.map +1 -1
- package/dist/core/puertosDeAvd.js +64 -0
- package/dist/core/puertosDeAvd.js.map +1 -0
- package/dist/core/selectorDeCarpeta.js +88 -9
- package/dist/core/selectorDeCarpeta.js.map +1 -1
- package/dist/core/settings.js +60 -1
- package/dist/core/settings.js.map +1 -1
- package/dist/core/shellDeAgente.js +11 -0
- package/dist/core/shellDeAgente.js.map +1 -1
- package/dist/core/stitch.js +114 -0
- package/dist/core/stitch.js.map +1 -0
- package/dist/web/servidor/arranque.js +523 -52
- package/dist/web/servidor/arranque.js.map +1 -1
- package/dist/web/servidor/consolaDeTarea.js +4 -1
- package/dist/web/servidor/consolaDeTarea.js.map +1 -1
- package/dist/web/servidor/pielWeb.js +3 -1
- package/dist/web/servidor/pielWeb.js.map +1 -1
- package/dist/web/servidor/transporte.js.map +1 -1
- package/dist/web/servidor/vestibulo.js +154 -48
- package/dist/web/servidor/vestibulo.js.map +1 -1
- package/package.json +1 -1
- package/skills/xone-hotswap/SKILL.md +26 -10
- package/skills/xone-hotswap/lib/dispositivo.mjs +97 -3
- package/skills/xone-hotswap/references/conexion-y-despliegue.md +27 -15
- package/skills/xone-hotswap/scripts/xone-arrancar-android +9 -2
- package/skills/xone-hotswap/scripts/xone-desplegar-android +12 -6
- package/skills/xone-hotswap/scripts/xone-hotswap +32 -10
- package/skills/xone-hotswap/scripts/xone-reiniciar-android +23 -7
- package/apps/web/dist/assets/index-40sIfNsT.js +0 -485
- package/apps/web/dist/assets/index-BYTna8Os.css +0 -1
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Las tools de los CONECTORES MCP del proyecto (Stitch…) dentro de TrueForge.
|
|
3
|
+
*
|
|
4
|
+
* No se habla con el servidor MCP desde aquí: todo pasa por el `ConectoresPort`, que en la web es
|
|
5
|
+
* el MISMO `ServicioDeConectores` de Ajustes —con su credencial, sus guardas y su tope—. Esta
|
|
6
|
+
* pieza solo traduce: el esquema de cada tool entra LIMPIO para cualquier proveedor
|
|
7
|
+
* (`esquemaParaElModelo`: sin `x-…` ni `$ref`) y la llamada es `llamar` con el tope largo
|
|
8
|
+
* (`TOPE_DE_LLAMADA_MS`).
|
|
9
|
+
*
|
|
10
|
+
* **Dos fuentes y no una**: las de LECTURA (`readOnlyHint: true`) y el resto. La librería decide
|
|
11
|
+
* la aprobación por conjunto, y su etiqueta `@write` exige `readOnlyHint === false` — una tool
|
|
12
|
+
* SIN anotación (las de DeepWiki no traen ninguna) no pediría aprobación. Aquí lo que no se
|
|
13
|
+
* declara de lectura ESCRIBE.
|
|
14
|
+
*
|
|
15
|
+
* **Se pregunta a la red una vez por sesión, y tarde**: al primer `listTools` de cualquiera de las
|
|
16
|
+
* dos fuentes, no al abrir la sesión. Un conector que no contesta (sin clave, sin red) se queda sin
|
|
17
|
+
* tools y la sesión abre igual. **Límite declarado**: un conector marcado con la sesión abierta no
|
|
18
|
+
* llega hasta la siguiente, el mismo trato que una skill nueva.
|
|
19
|
+
*/
|
|
20
|
+
import { toolResultResponse } from "./trueforge.js";
|
|
21
|
+
import { desalojarSiGrande } from "./recortes.js";
|
|
22
|
+
import { esquemaParaElModelo, nombreDeToolDeConector, resultadoRecortado, TOPE_DE_LLAMADA_MS, } from "../../../core/conectores.js";
|
|
23
|
+
/** Cuánto se espera antes de repetir una tool de LECTURA que falló (Stitch devolvió una vez «The service is currently unavailable»). */
|
|
24
|
+
export const PAUSA_ANTES_DE_REPETIR_MS = 2000;
|
|
25
|
+
/** Un fallo que repetir no arregla: falta la credencial, o el conector ya no está. */
|
|
26
|
+
function esFalloDeConfiguracion(mensaje) {
|
|
27
|
+
return /falta autorizar|no está conectado|autorización en curso/.test(mensaje);
|
|
28
|
+
}
|
|
29
|
+
export function crearConectoresDeSesion(puerto, conectores, esperar = (ms) => new Promise((r) => setTimeout(r, ms))) {
|
|
30
|
+
const montadas = new Map();
|
|
31
|
+
let carga;
|
|
32
|
+
const cargar = () => (carga ??= Promise.all(conectores.map(async (c) => {
|
|
33
|
+
const tools = await puerto.tools(c.id).catch(() => []);
|
|
34
|
+
for (const tool of tools) {
|
|
35
|
+
if (c.fueraDelAgente.includes(tool.nombre))
|
|
36
|
+
continue;
|
|
37
|
+
const nombre = nombreDeToolDeConector(c.id, tool.nombre);
|
|
38
|
+
if (nombre === undefined || montadas.has(nombre))
|
|
39
|
+
continue;
|
|
40
|
+
const recortar = c.camposFueraDelResultado[tool.nombre];
|
|
41
|
+
montadas.set(nombre, { nombre, conector: { id: c.id, nombre: c.nombre }, tool, ...(recortar === undefined ? {} : { recortar }) });
|
|
42
|
+
}
|
|
43
|
+
})).then(() => { }));
|
|
44
|
+
const claseDe = (m) => (m.tool.soloLectura === true ? "lectura" : "escritura");
|
|
45
|
+
return {
|
|
46
|
+
hay: conectores.length > 0,
|
|
47
|
+
fuente(clase, backend) {
|
|
48
|
+
const id = `xone-conectores-${clase}`;
|
|
49
|
+
return {
|
|
50
|
+
name: id,
|
|
51
|
+
id,
|
|
52
|
+
listTools: async () => {
|
|
53
|
+
await cargar();
|
|
54
|
+
return {
|
|
55
|
+
result: {
|
|
56
|
+
tools: [...montadas.values()]
|
|
57
|
+
.filter((m) => claseDe(m) === clase)
|
|
58
|
+
.map((m) => ({
|
|
59
|
+
name: m.nombre,
|
|
60
|
+
description: descripcionDe(m, clase),
|
|
61
|
+
inputSchema: esquemaParaElModelo(m.tool.esquema),
|
|
62
|
+
preload: true,
|
|
63
|
+
})),
|
|
64
|
+
},
|
|
65
|
+
wasInitialized: undefined,
|
|
66
|
+
};
|
|
67
|
+
},
|
|
68
|
+
callTool: async (params) => {
|
|
69
|
+
await cargar();
|
|
70
|
+
const m = montadas.get(params.name);
|
|
71
|
+
if (m === undefined || claseDe(m) !== clase)
|
|
72
|
+
return toolResultResponse({ text: `tool desconocida: ${params.name}`, isError: true });
|
|
73
|
+
const args = params.arguments ?? {};
|
|
74
|
+
const llamar = () => puerto.llamar(m.conector.id, m.tool.nombre, args, { topeMs: TOPE_DE_LLAMADA_MS });
|
|
75
|
+
try {
|
|
76
|
+
let texto;
|
|
77
|
+
try {
|
|
78
|
+
texto = await llamar();
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
// Solo se REPITE lo que lee: una generación repetida gasta otra y puede duplicar lo
|
|
82
|
+
// creado (`idempotentHint: false`). La que escribe devuelve su fallo y decide el modelo.
|
|
83
|
+
const mensaje = e instanceof Error ? e.message : String(e);
|
|
84
|
+
if (clase !== "lectura" || esFalloDeConfiguracion(mensaje))
|
|
85
|
+
throw e;
|
|
86
|
+
await esperar(PAUSA_ANTES_DE_REPETIR_MS);
|
|
87
|
+
texto = await llamar();
|
|
88
|
+
}
|
|
89
|
+
return toolResultResponse({ text: await desalojarSiGrande(resultadoRecortado(texto, m.recortar ?? []), backend), isError: false });
|
|
90
|
+
}
|
|
91
|
+
catch (e) {
|
|
92
|
+
// Un fallo se DEVUELVE, nunca se lanza: una excepción se lleva el turno y el agente no reintenta.
|
|
93
|
+
return toolResultResponse({ text: `${m.conector.nombre}: ${e instanceof Error ? e.message : String(e)}`, isError: true });
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
toolCallInfo: async (params) => ({
|
|
97
|
+
type: "mcp",
|
|
98
|
+
mcp_server_id: id,
|
|
99
|
+
mcp_server_name: id,
|
|
100
|
+
original_tool_name: params.name,
|
|
101
|
+
}),
|
|
102
|
+
};
|
|
103
|
+
},
|
|
104
|
+
remotaDe(nombre) {
|
|
105
|
+
const m = montadas.get(nombre);
|
|
106
|
+
return m !== undefined && claseDe(m) === "escritura" ? m : undefined;
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/** La descripción que ve el modelo: de qué conector es y, si escribe, que pasa por una persona. */
|
|
111
|
+
function descripcionDe(m, clase) {
|
|
112
|
+
const base = `[${m.conector.nombre}] ${m.tool.descripcion ?? m.tool.nombre}`;
|
|
113
|
+
return clase === "lectura"
|
|
114
|
+
? base
|
|
115
|
+
: `${base}\n\nESCRIBE en la cuenta de ${m.conector.nombre} del usuario: cada llamada espera a que una persona la apruebe.`;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* La tarjeta de aprobación de una tool remota: qué conector, qué tool y sus argumentos ENTEROS —
|
|
119
|
+
* es el único sitio donde los argumentos de una tool se enseñan (`core/events.ts`), y aquí se
|
|
120
|
+
* DECIDE sobre ellos—. Van como líneas añadidas del diff, que es lo que la tarjeta ya pinta.
|
|
121
|
+
*/
|
|
122
|
+
export function tarjetaDeRemota(m, args) {
|
|
123
|
+
return {
|
|
124
|
+
descripcion: `quiere usar ${m.conector.nombre}: ${m.tool.nombre} (escribe en tu cuenta de ${m.conector.nombre})`,
|
|
125
|
+
lineas: JSON.stringify(args, null, 2).split("\n").map((texto) => ({ tipo: "anadido", texto })),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=toolsDeConectores.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolsDeConectores.js","sourceRoot":"","sources":["../../../../src/agent/motores/trueforge/toolsDeConectores.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `traer_pantalla_de_stitch`: baja una pantalla de Stitch a `/artefactos/diseno/` —imagen a tamaño
|
|
3
|
+
* real, su `code.html` y el `DESIGN.md` del proyecto—, que es donde el harness ya busca la maqueta
|
|
4
|
+
* para medir contra ella (`medidaAutomatica.ts#buscarMaqueta`).
|
|
5
|
+
*
|
|
6
|
+
* Existe porque Stitch devuelve ENLACES y el agente no puede bajar una URL: sin esto, el diseñador
|
|
7
|
+
* podía pedir el rediseño pero nadie podía mirarlo ni construirlo. Las reglas —qué hosts, qué
|
|
8
|
+
* tipos, qué topes, cómo se lee la respuesta— son puras, en `core/stitch.ts`; aquí la red y el disco.
|
|
9
|
+
* El modelo NO da la URL: da la pantalla, y la URL sale de la respuesta de `get_screen`.
|
|
10
|
+
*
|
|
11
|
+
* Escribe en `/artefactos/`, que no es el proyecto: sin aprobación, y se ANUNCIA como cualquier
|
|
12
|
+
* artefacto. Cada traída REEMPLAZA la anterior: la maqueta de la sesión es una.
|
|
13
|
+
*/
|
|
14
|
+
import { mkdirSync, readdirSync, rmSync, writeFileSync } from "node:fs";
|
|
15
|
+
import { join } from "node:path";
|
|
16
|
+
import { tool } from "@langchain/core/tools";
|
|
17
|
+
import { z } from "zod";
|
|
18
|
+
import { TOPE_DE_LLAMADA_MS } from "../../../core/conectores.js";
|
|
19
|
+
import { CARPETA_DE_DISENO, designMdDeProyecto, leerPantalla, motivoDeDescargaInaceptable, motivoDePantallaInaceptable, proyectoDePantalla, RUTA_DE_DISENO, TIPOS_DE_IMAGEN, TOPE_DE_HTML, TOPE_DE_IMAGEN, urlDeImagenCompleta, } from "../../../core/stitch.js";
|
|
20
|
+
export const NOMBRE_TRAER_DE_STITCH = "traer_pantalla_de_stitch";
|
|
21
|
+
/** El id del conector en el catálogo: la tool solo se monta si la sesión lo tiene. */
|
|
22
|
+
export const CONECTOR_STITCH = "stitch";
|
|
23
|
+
/** Tope de una descarga: una pantalla son cientos de KB. */
|
|
24
|
+
export const TOPE_DE_DESCARGA_MS = 60 * 1000;
|
|
25
|
+
/** La red de verdad: `fetch` con tope de tiempo y de tamaño (se corta al pasarse, no al acabar). */
|
|
26
|
+
export const descargarEnRed = async (url, tope) => {
|
|
27
|
+
const r = await fetch(url, { signal: AbortSignal.timeout(TOPE_DE_DESCARGA_MS), redirect: "error" });
|
|
28
|
+
if (!r.ok || r.body === null)
|
|
29
|
+
throw new Error(`HTTP ${r.status}`);
|
|
30
|
+
const trozos = [];
|
|
31
|
+
let total = 0;
|
|
32
|
+
for await (const trozo of r.body) {
|
|
33
|
+
total += trozo.byteLength;
|
|
34
|
+
if (total > tope)
|
|
35
|
+
throw new Error("pasa del tope de tamaño");
|
|
36
|
+
trozos.push(Buffer.from(trozo));
|
|
37
|
+
}
|
|
38
|
+
return { bytes: Buffer.concat(trozos), tipo: (r.headers.get("content-type") ?? "").split(";")[0].trim().toLowerCase() };
|
|
39
|
+
};
|
|
40
|
+
const Entrada = z.object({
|
|
41
|
+
pantalla: z
|
|
42
|
+
.string()
|
|
43
|
+
.describe("El `name` de la pantalla en Stitch, TAL CUAL: projects/<id>/screens/<id> (lo dan list_screens y get_screen, y el resultado de generarla)."),
|
|
44
|
+
});
|
|
45
|
+
export function crearTraerDeStitch(deps) {
|
|
46
|
+
const descargar = deps.descargar ?? descargarEnRed;
|
|
47
|
+
return tool(async ({ pantalla }) => {
|
|
48
|
+
const motivo = motivoDePantallaInaceptable(pantalla.trim());
|
|
49
|
+
if (motivo !== undefined)
|
|
50
|
+
return motivo;
|
|
51
|
+
const nombre = pantalla.trim();
|
|
52
|
+
let datos;
|
|
53
|
+
try {
|
|
54
|
+
datos = leerPantalla(await deps.conectores.llamar(CONECTOR_STITCH, "get_screen", { name: nombre }, { topeMs: TOPE_DE_LLAMADA_MS }));
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
return `Stitch no dio la pantalla: ${e instanceof Error ? e.message : String(e)}`;
|
|
58
|
+
}
|
|
59
|
+
if (typeof datos === "string")
|
|
60
|
+
return datos;
|
|
61
|
+
const motivoImagen = motivoDeDescargaInaceptable(datos.imagen);
|
|
62
|
+
if (motivoImagen !== undefined)
|
|
63
|
+
return motivoImagen;
|
|
64
|
+
let imagen;
|
|
65
|
+
try {
|
|
66
|
+
imagen = await descargar(urlDeImagenCompleta(datos.imagen), TOPE_DE_IMAGEN);
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
return `No pude bajar la imagen de la pantalla (${e instanceof Error ? e.message : "error"}).`;
|
|
70
|
+
}
|
|
71
|
+
const extension = TIPOS_DE_IMAGEN[imagen.tipo];
|
|
72
|
+
if (extension === undefined)
|
|
73
|
+
return `Stitch dio la imagen como «${imagen.tipo || "sin tipo"}», que no es PNG, JPEG ni WebP: no se guarda.`;
|
|
74
|
+
// El HTML y el DESIGN.md son la otra mitad del diseño, en texto; sin ellos la imagen vale igual.
|
|
75
|
+
let html;
|
|
76
|
+
const avisos = [];
|
|
77
|
+
if (datos.html !== undefined) {
|
|
78
|
+
const motivoHtml = motivoDeDescargaInaceptable(datos.html);
|
|
79
|
+
if (motivoHtml !== undefined)
|
|
80
|
+
avisos.push(motivoHtml);
|
|
81
|
+
else {
|
|
82
|
+
try {
|
|
83
|
+
const r = await descargar(datos.html, TOPE_DE_HTML);
|
|
84
|
+
if (r.tipo === "text/html")
|
|
85
|
+
html = r.bytes.toString("utf8");
|
|
86
|
+
else
|
|
87
|
+
avisos.push(`el código llegó como «${r.tipo}» y no se guarda`);
|
|
88
|
+
}
|
|
89
|
+
catch (e) {
|
|
90
|
+
avisos.push(`no pude bajar el código (${e instanceof Error ? e.message : "error"})`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
let designMd;
|
|
95
|
+
try {
|
|
96
|
+
designMd = designMdDeProyecto(await deps.conectores.llamar(CONECTOR_STITCH, "get_project", { name: proyectoDePantalla(nombre) }, { topeMs: TOPE_DE_LLAMADA_MS }));
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
avisos.push("no pude leer el DESIGN.md del proyecto");
|
|
100
|
+
}
|
|
101
|
+
const carpeta = join(deps.carpeta, CARPETA_DE_DISENO);
|
|
102
|
+
const escritos = [];
|
|
103
|
+
try {
|
|
104
|
+
mkdirSync(carpeta, { recursive: true });
|
|
105
|
+
// La maqueta de la sesión es UNA: lo de la traída anterior se va, o una imagen vieja con
|
|
106
|
+
// otra extensión seguiría pasando por la maqueta.
|
|
107
|
+
for (const n of readdirSync(carpeta))
|
|
108
|
+
if (/^(screen\.(png|jpg|webp)|code\.html|DESIGN\.md)$/.test(n))
|
|
109
|
+
rmSync(join(carpeta, n));
|
|
110
|
+
const escribir = (fichero, contenido, mime) => {
|
|
111
|
+
writeFileSync(join(carpeta, fichero), contenido);
|
|
112
|
+
escritos.push({ ruta: `${RUTA_DE_DISENO}${fichero}`, nombre: fichero, mime, bytes: Buffer.byteLength(contenido) });
|
|
113
|
+
};
|
|
114
|
+
escribir(`screen.${extension}`, imagen.bytes, imagen.tipo);
|
|
115
|
+
if (html !== undefined)
|
|
116
|
+
escribir("code.html", html, "text/html");
|
|
117
|
+
if (designMd !== undefined)
|
|
118
|
+
escribir("DESIGN.md", designMd, "text/markdown");
|
|
119
|
+
}
|
|
120
|
+
catch (e) {
|
|
121
|
+
// De un error de Node solo el código: su mensaje lleva la ruta absoluta.
|
|
122
|
+
return `No pude guardarla (${e.code ?? "error"}).`;
|
|
123
|
+
}
|
|
124
|
+
for (const a of escritos)
|
|
125
|
+
deps.alEscribir?.(a);
|
|
126
|
+
// Las medidas que DECLARA Stitch no son las de la imagen bajada (medido: dice 780×1768 y da
|
|
127
|
+
// 390×746): se dicen los BYTES reales y, si hacen falta los píxeles, que se midan.
|
|
128
|
+
return [
|
|
129
|
+
`Traída «${datos.titulo}»:`,
|
|
130
|
+
...escritos.map((a) => `- ${a.ruta} (${a.bytes} bytes)`),
|
|
131
|
+
...(avisos.length === 0 ? [] : [`(${avisos.join("; ")})`]),
|
|
132
|
+
`Es la MAQUETA de la sesión: pásala como \`referencia\` (${RUTA_DE_DISENO}screen.${extension}) a comparar_capturas y a xone_critica_visual; el harness ya la usa al medir cada prueba. Para verla, describe_image.`,
|
|
133
|
+
].join("\n");
|
|
134
|
+
}, {
|
|
135
|
+
name: NOMBRE_TRAER_DE_STITCH,
|
|
136
|
+
description: `Baja una pantalla de Stitch a ${RUTA_DE_DISENO}: la imagen a tamaño real, su code.html y el DESIGN.md del proyecto. ` +
|
|
137
|
+
"Úsala después de generar o editar una pantalla, o cuando te digan cuál construir: Stitch solo da enlaces y así el diseño queda donde se mide. " +
|
|
138
|
+
"Cada traída reemplaza la anterior.",
|
|
139
|
+
schema: Entrada,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=traerDeStitch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traerDeStitch.js","sourceRoot":"","sources":["../../../../src/agent/motores/trueforge/traerDeStitch.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,19 +34,26 @@ const entero = (v) => (typeof v === "number" && Number.isFinite(v) && v > 0 ? Ma
|
|
|
34
34
|
export function consumoDeClaude(resultado) {
|
|
35
35
|
const uso = resultado?.modelUsage;
|
|
36
36
|
if (typeof uso !== "object" || uso === null)
|
|
37
|
-
return { entrada: 0, salida: 0, cache: 0 };
|
|
37
|
+
return { entrada: 0, salida: 0, cache: 0, porModelo: {} };
|
|
38
38
|
let entrada = 0;
|
|
39
39
|
let salida = 0;
|
|
40
40
|
let cache = 0;
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
const porModelo = {};
|
|
42
|
+
for (const [id, deUno] of Object.entries(uso)) {
|
|
43
|
+
if (typeof deUno !== "object" || deUno === null)
|
|
43
44
|
continue;
|
|
44
|
-
const m =
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
const m = deUno;
|
|
46
|
+
const este = {
|
|
47
|
+
entrada: entero(m["inputTokens"]),
|
|
48
|
+
salida: entero(m["outputTokens"]),
|
|
49
|
+
cache: entero(m["cacheReadInputTokens"]) + entero(m["cacheCreationInputTokens"]),
|
|
50
|
+
};
|
|
51
|
+
entrada += este.entrada;
|
|
52
|
+
salida += este.salida;
|
|
53
|
+
cache += este.cache;
|
|
54
|
+
porModelo[id] = este;
|
|
48
55
|
}
|
|
49
|
-
return { entrada, salida, cache };
|
|
56
|
+
return { entrada, salida, cache, porModelo };
|
|
50
57
|
}
|
|
51
58
|
/**
|
|
52
59
|
* Lo que lleva consumido un hilo de Codex, de su `thread/tokenUsage/updated`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumoExterno.js","sourceRoot":"","sources":["../../../src/agent/subagentes/consumoExterno.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,8FAA8F;AAC9F,MAAM,MAAM,GAAG,CAAC,CAAU,EAAU,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAElH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,SAAkB;
|
|
1
|
+
{"version":3,"file":"consumoExterno.js","sourceRoot":"","sources":["../../../src/agent/subagentes/consumoExterno.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,8 @@
|
|
|
21
21
|
* `pedirAprobacion` que ya existe en la política de escritura del hijo.
|
|
22
22
|
*/
|
|
23
23
|
import { realpathSync, readFileSync } from "node:fs";
|
|
24
|
-
import { dirname, basename, resolve, relative, sep } from "node:path";
|
|
24
|
+
import { dirname, basename, isAbsolute, resolve, relative, sep } from "node:path";
|
|
25
|
+
import { motivoDeComandoExternoInaceptable } from "../../core/comandoExterno.js";
|
|
25
26
|
import { artefactoFueraDeSitio } from "../../core/artefactos.js";
|
|
26
27
|
import { descargaFueraDeSitio } from "../../core/descargas.js";
|
|
27
28
|
import { puedeLeerRuta } from "../grafo/perfiles.js";
|
|
@@ -362,6 +363,18 @@ function motivoDeRutaVirtual(ruta, ficheros, soloLeer = false) {
|
|
|
362
363
|
* sin consultarnos — que es el fallo en la dirección mala.
|
|
363
364
|
*/
|
|
364
365
|
export function decisionDePreToolUse(opciones) {
|
|
366
|
+
if (opciones.nombre === "Bash" && opciones.ejecucion !== undefined) {
|
|
367
|
+
/**
|
|
368
|
+
* `ask` y NO `allow`, y está medido: un `allow` del hook es una PRE-APROBACIÓN y el SDK ya no
|
|
369
|
+
* consulta `canUseTool` —con `allow` solo llegó el hook—, así que la segunda llave no
|
|
370
|
+
* existiría. Con `ask` `canUseTool` recibe el comando EXACTO que se va a ejecutar y lo
|
|
371
|
+
* vuelve a comprobar (`decisionDeTool`).
|
|
372
|
+
*/
|
|
373
|
+
const motivo = motivoDeBashExterno(opciones.entrada, opciones.ejecucion.scripts);
|
|
374
|
+
return motivo === undefined
|
|
375
|
+
? { hookEventName: "PreToolUse", permissionDecision: "ask", permissionDecisionReason: "XOneCode comprueba cada comando" }
|
|
376
|
+
: { hookEventName: "PreToolUse", permissionDecision: "deny", permissionDecisionReason: motivo };
|
|
377
|
+
}
|
|
365
378
|
const clase = claseDeToolExterna(opciones.nombre);
|
|
366
379
|
if (clase === "lectura") {
|
|
367
380
|
/**
|
|
@@ -376,7 +389,7 @@ export function decisionDePreToolUse(opciones) {
|
|
|
376
389
|
* `deny` con el motivo. `canUseTool` mantiene la MISMA comprobación como segunda llave
|
|
377
390
|
* para el día que el hook no corra.
|
|
378
391
|
*/
|
|
379
|
-
const v = veredictoDeLectura(opciones);
|
|
392
|
+
const v = veredictoDeLectura({ ...opciones, ...(opciones.ejecucion === undefined ? {} : { lecturas: opciones.ejecucion.lecturas }) });
|
|
380
393
|
return v.admitida
|
|
381
394
|
? {
|
|
382
395
|
hookEventName: "PreToolUse",
|
|
@@ -434,9 +447,55 @@ export function veredictoDeLectura(opciones) {
|
|
|
434
447
|
if (typeof ruta !== "string" || ruta === "") {
|
|
435
448
|
return { admitida: false, motivo: "esa ruta no se entiende, así que no se lee" };
|
|
436
449
|
}
|
|
450
|
+
if (opciones.lecturas !== undefined && dentroDeUnaLectura(ruta, opciones.lecturas, opciones.real ?? realpathSync)) {
|
|
451
|
+
return { admitida: true };
|
|
452
|
+
}
|
|
437
453
|
const v = veredictoDeRuta({ ...opciones, ruta, soloConfinamiento: true });
|
|
438
454
|
return v.admitida ? { admitida: true } : { admitida: false, motivo: v.motivo };
|
|
439
455
|
}
|
|
456
|
+
/**
|
|
457
|
+
* El motivo de NO dejar correr ese `Bash`, o `undefined` si se deja: su `command` tiene que pasar
|
|
458
|
+
* `motivoDeComandoExternoInaceptable`, y no puede ir en segundo plano (`BashOutput` y `KillShell`
|
|
459
|
+
* siguen cerrados: un comando que se queda vivo no lo para nadie).
|
|
460
|
+
*/
|
|
461
|
+
export function motivoDeBashExterno(entrada, scripts) {
|
|
462
|
+
if (entrada["run_in_background"] === true)
|
|
463
|
+
return "no se pueden correr comandos en segundo plano: córrelo en primer plano";
|
|
464
|
+
const comando = entrada["command"];
|
|
465
|
+
if (typeof comando !== "string")
|
|
466
|
+
return "ese comando no se entiende, así que no se corre";
|
|
467
|
+
return motivoDeComandoExternoInaceptable(comando, scripts);
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
470
|
+
* ¿Cae esta ruta dentro de una de las carpetas de la sesión que el hijo con ejecución puede leer
|
|
471
|
+
* (sus capturas en artefactos, lo de hotswap)? Por TEXTO —`resolve` deshace un `..`— Y por el
|
|
472
|
+
* camino REAL —un enlace dentro de la carpeta que apunte a `checkpoint.sqlite` no pasa—, las dos,
|
|
473
|
+
* como el resto de guardas. Lo que no se puede canonicalizar no está dentro.
|
|
474
|
+
*/
|
|
475
|
+
export function dentroDeUnaLectura(ruta, lecturas, real) {
|
|
476
|
+
if (!isAbsolute(ruta))
|
|
477
|
+
return false;
|
|
478
|
+
const texto = resolve(ruta);
|
|
479
|
+
let destino;
|
|
480
|
+
try {
|
|
481
|
+
destino = canonicalizarLoQueExista(texto, real);
|
|
482
|
+
}
|
|
483
|
+
catch {
|
|
484
|
+
return false;
|
|
485
|
+
}
|
|
486
|
+
const bajo = (r, c) => r === c || r.startsWith(c.endsWith(sep) ? c : c + sep);
|
|
487
|
+
return lecturas.some((carpeta) => {
|
|
488
|
+
let carpetaReal;
|
|
489
|
+
try {
|
|
490
|
+
carpetaReal = real(resolve(carpeta));
|
|
491
|
+
}
|
|
492
|
+
catch {
|
|
493
|
+
return false;
|
|
494
|
+
}
|
|
495
|
+
// El texto puede venir ya canonicalizado (el hijo resuelve `/tmp` → `/private/tmp`, medido).
|
|
496
|
+
return (bajo(texto, resolve(carpeta)) || bajo(texto, carpetaReal)) && bajo(destino, carpetaReal);
|
|
497
|
+
});
|
|
498
|
+
}
|
|
440
499
|
/** El motivo que se le devuelve al hijo cuando la tool entera no está concedida. */
|
|
441
500
|
export function motivoDeToolDenegada(nombre, clase) {
|
|
442
501
|
if (clase === "denegada" || clase === "desconocida") {
|
|
@@ -693,6 +752,9 @@ const NOMBRE_CANONICO = {
|
|
|
693
752
|
Grep: "grep",
|
|
694
753
|
Write: "write_file",
|
|
695
754
|
Edit: "edit_file",
|
|
755
|
+
// Un comando concedido a un hijo con ejecución (`core/comandoExterno.ts`): la misma línea que
|
|
756
|
+
// nuestra shell, con el comando como detalle.
|
|
757
|
+
Bash: "execute",
|
|
696
758
|
};
|
|
697
759
|
export function eventoDeToolExterna(nombre, entrada, cwd, real = realpathSync) {
|
|
698
760
|
const canonico = NOMBRE_CANONICO[nombre] ?? nombre;
|
|
@@ -712,6 +774,11 @@ export function eventoDeToolExterna(nombre, entrada, cwd, real = realpathSync) {
|
|
|
712
774
|
const campo = canonico === "Skill" ? entrada["skill"] : entrada["query"];
|
|
713
775
|
return typeof campo === "string" && campo !== "" ? { nombre: canonico, detalle: campo } : { nombre: canonico };
|
|
714
776
|
}
|
|
777
|
+
// El comando concedido, que ya pasó la regla: su nombre de script y argumentos, sin rutas.
|
|
778
|
+
if (canonico === "execute") {
|
|
779
|
+
const comando = entrada["command"];
|
|
780
|
+
return typeof comando === "string" && comando !== "" ? { nombre: canonico, detalle: comando.trim() } : { nombre: canonico };
|
|
781
|
+
}
|
|
715
782
|
// Un patrón para las de búsqueda, una ruta para las de fichero. Igual que `detalleDe`.
|
|
716
783
|
if (canonico === "glob" || canonico === "grep") {
|
|
717
784
|
const patron = entrada["pattern"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escrituraExterna.js","sourceRoot":"","sources":["../../../src/agent/subagentes/escrituraExterna.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"escrituraExterna.js","sourceRoot":"","sources":["../../../src/agent/subagentes/escrituraExterna.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,7 +29,7 @@ import { correrOpencode, opencodeDisponible } from "./subagenteOpencode.js";
|
|
|
29
29
|
import { consumoDeClaude } from "./consumoExterno.js";
|
|
30
30
|
import { mensajeSeguro } from "../../core/trazaDeErrores.js";
|
|
31
31
|
import { montarPluginDeSkills } from "./pluginDeSkills.js";
|
|
32
|
-
import { claseDeToolExterna, decisionDePreToolUse, diffDeEscrituraExterna, eventoDeToolExterna, veredictoDeLectura, motivoDeToolDenegada, veredictoDeRuta, MOTIVO_DE_ESCRITURA_RECHAZADA, MOTIVO_DE_ESCRITURA_ABORTADA, MOTIVO_DE_CANCELACION_EXTERNA, } from "./escrituraExterna.js";
|
|
32
|
+
import { claseDeToolExterna, decisionDePreToolUse, motivoDeBashExterno, diffDeEscrituraExterna, eventoDeToolExterna, veredictoDeLectura, motivoDeToolDenegada, veredictoDeRuta, MOTIVO_DE_ESCRITURA_RECHAZADA, MOTIVO_DE_ESCRITURA_ABORTADA, MOTIVO_DE_CANCELACION_EXTERNA, } from "./escrituraExterna.js";
|
|
33
33
|
/**
|
|
34
34
|
* La decisión sobre una tool del hijo. **Exportada para poder probarla**: es la regla de
|
|
35
35
|
* seguridad de toda esta integración, y probarla llamando al SDK exigiría lanzar un Claude
|
|
@@ -57,6 +57,12 @@ export async function decisionDeTool(opciones) {
|
|
|
57
57
|
// ocurrir. Sacar un modal para eso enseña a aprobar sin mirar.
|
|
58
58
|
if (signal?.aborted === true)
|
|
59
59
|
return { behavior: "deny", message: MOTIVO_DE_ESCRITURA_ABORTADA };
|
|
60
|
+
// La SEGUNDA llave del Bash concedido: el hook contestó `ask`, y aquí llega el comando EXACTO
|
|
61
|
+
// que el SDK va a ejecutar. La misma regla otra vez, sobre ese texto.
|
|
62
|
+
if (nombre === "Bash" && peticion.ejecucion !== undefined) {
|
|
63
|
+
const motivo = motivoDeBashExterno(entrada, peticion.ejecucion.scripts);
|
|
64
|
+
return motivo === undefined ? { behavior: "allow" } : { behavior: "deny", message: motivo };
|
|
65
|
+
}
|
|
60
66
|
const clase = claseDeToolExterna(nombre);
|
|
61
67
|
if (clase === "lectura") {
|
|
62
68
|
/**
|
|
@@ -70,6 +76,7 @@ export async function decisionDeTool(opciones) {
|
|
|
70
76
|
entrada,
|
|
71
77
|
ficheros,
|
|
72
78
|
...(opciones.real === undefined ? {} : { real: opciones.real }),
|
|
79
|
+
...(peticion.ejecucion === undefined ? {} : { lecturas: peticion.ejecucion.lecturas }),
|
|
73
80
|
});
|
|
74
81
|
return v.admitida ? { behavior: "allow" } : { behavior: "deny", message: v.motivo };
|
|
75
82
|
}
|
|
@@ -331,6 +338,7 @@ export function crearSubagenteExterno(opciones) {
|
|
|
331
338
|
entrada: args,
|
|
332
339
|
cwd: peticion.cwd,
|
|
333
340
|
ficheros: opciones.ficherosDelProyecto?.() ?? new Set(),
|
|
341
|
+
...(peticion.ejecucion === undefined ? {} : { ejecucion: peticion.ejecucion }),
|
|
334
342
|
});
|
|
335
343
|
/**
|
|
336
344
|
* **Solo se cuenta lo que va a ocurrir.** Una tool DENEGADA no se
|
|
@@ -396,6 +404,14 @@ export function crearSubagenteExterno(opciones) {
|
|
|
396
404
|
// los que su propio SDK documenta, y se prefieren a un id pinchado: sobreviven a
|
|
397
405
|
// la siguiente versión, que es justo para lo que el producto los ofrece.
|
|
398
406
|
...(peticion.modelo === undefined ? {} : { model: peticion.modelo }),
|
|
407
|
+
/**
|
|
408
|
+
* Con ejecución, el entorno del hijo es el de NUESTRA shell: sin nuestras claves de API
|
|
409
|
+
* (heredaría las que `guardarCredencial` pone en `process.env`), con los `scripts/` de sus
|
|
410
|
+
* skills en el PATH y las variables de la sesión. Medido con el SDK: su Bash respeta este
|
|
411
|
+
* `env` —`command -v xone-hotswap` resuelve, ninguna `*_API_KEY`— y autentica con el login
|
|
412
|
+
* sin la clave. Sin ejecución no se toca: es lo de siempre.
|
|
413
|
+
*/
|
|
414
|
+
...(peticion.ejecucion === undefined ? {} : { env: peticion.ejecucion.entorno }),
|
|
399
415
|
/**
|
|
400
416
|
* El envoltorio es el fail-closed llevado al final: **nada de aquí dentro puede
|
|
401
417
|
* lanzar hacia el SDK**. Si la política revienta, si el disco contesta un EACCES
|