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.
Files changed (88) hide show
  1. package/apps/web/dist/assets/index-5rtynJV_.js +490 -0
  2. package/apps/web/dist/assets/index-Cq6c6WEF.css +1 -0
  3. package/apps/web/dist/assets/{php-CDg2Quc0.js → php-BTFUgUDo.js} +1 -1
  4. package/apps/web/dist/assets/{ruby-DlFaAWQT.js → ruby-BKKiBtJK.js} +1 -1
  5. package/apps/web/dist/index.html +2 -2
  6. package/dist/agent/conectores/servicioDeConectores.js +86 -45
  7. package/dist/agent/conectores/servicioDeConectores.js.map +1 -1
  8. package/dist/agent/config/modelos.js +4 -0
  9. package/dist/agent/config/modelos.js.map +1 -1
  10. package/dist/agent/config/mudanzaEnDisco.js +237 -3
  11. package/dist/agent/config/mudanzaEnDisco.js.map +1 -1
  12. package/dist/agent/config/selectorEnMaquina.js +3 -2
  13. package/dist/agent/config/selectorEnMaquina.js.map +1 -1
  14. package/dist/agent/config/settingsEnDisco.js +76 -2
  15. package/dist/agent/config/settingsEnDisco.js.map +1 -1
  16. package/dist/agent/dispositivos/arranqueDeEmulador.js +27 -3
  17. package/dist/agent/dispositivos/arranqueDeEmulador.js.map +1 -1
  18. package/dist/agent/dispositivos/instalacionEnMaquina.js +240 -29
  19. package/dist/agent/dispositivos/instalacionEnMaquina.js.map +1 -1
  20. package/dist/agent/dispositivos/lanzamientoEnMaquina.js +12 -17
  21. package/dist/agent/dispositivos/lanzamientoEnMaquina.js.map +1 -1
  22. package/dist/agent/grafo/proyecto.js +91 -50
  23. package/dist/agent/grafo/proyecto.js.map +1 -1
  24. package/dist/agent/motores/trueforge/capacidades.js +22 -0
  25. package/dist/agent/motores/trueforge/capacidades.js.map +1 -1
  26. package/dist/agent/motores/trueforge/medidaAutomatica.js +16 -3
  27. package/dist/agent/motores/trueforge/medidaAutomatica.js.map +1 -1
  28. package/dist/agent/motores/trueforge/modeloLangchain.js +7 -1
  29. package/dist/agent/motores/trueforge/modeloLangchain.js.map +1 -1
  30. package/dist/agent/motores/trueforge/sesionTrueforge.js +135 -14
  31. package/dist/agent/motores/trueforge/sesionTrueforge.js.map +1 -1
  32. package/dist/agent/motores/trueforge/toolsDeConectores.js +128 -0
  33. package/dist/agent/motores/trueforge/toolsDeConectores.js.map +1 -0
  34. package/dist/agent/motores/trueforge/traerDeStitch.js +142 -0
  35. package/dist/agent/motores/trueforge/traerDeStitch.js.map +1 -0
  36. package/dist/agent/subagentes/consumoExterno.js +15 -8
  37. package/dist/agent/subagentes/consumoExterno.js.map +1 -1
  38. package/dist/agent/subagentes/escrituraExterna.js +69 -2
  39. package/dist/agent/subagentes/escrituraExterna.js.map +1 -1
  40. package/dist/agent/subagentes/subagenteExterno.js +17 -1
  41. package/dist/agent/subagentes/subagenteExterno.js.map +1 -1
  42. package/dist/agent/turno/turnoReal.js +1 -0
  43. package/dist/agent/turno/turnoReal.js.map +1 -1
  44. package/dist/cli/main.js +5 -2
  45. package/dist/cli/main.js.map +1 -1
  46. package/dist/core/actos.js +44 -1
  47. package/dist/core/actos.js.map +1 -1
  48. package/dist/core/agentes.js +13 -2
  49. package/dist/core/agentes.js.map +1 -1
  50. package/dist/core/comandoExterno.js +69 -0
  51. package/dist/core/comandoExterno.js.map +1 -0
  52. package/dist/core/conectores.js +148 -3
  53. package/dist/core/conectores.js.map +1 -1
  54. package/dist/core/copiaDeAvd.js +111 -0
  55. package/dist/core/copiaDeAvd.js.map +1 -0
  56. package/dist/core/mudanzaDeWorkspace.js +105 -15
  57. package/dist/core/mudanzaDeWorkspace.js.map +1 -1
  58. package/dist/core/ports.js +28 -0
  59. package/dist/core/ports.js.map +1 -1
  60. package/dist/core/puertosDeAvd.js +64 -0
  61. package/dist/core/puertosDeAvd.js.map +1 -0
  62. package/dist/core/selectorDeCarpeta.js +88 -9
  63. package/dist/core/selectorDeCarpeta.js.map +1 -1
  64. package/dist/core/settings.js +60 -1
  65. package/dist/core/settings.js.map +1 -1
  66. package/dist/core/shellDeAgente.js +11 -0
  67. package/dist/core/shellDeAgente.js.map +1 -1
  68. package/dist/core/stitch.js +114 -0
  69. package/dist/core/stitch.js.map +1 -0
  70. package/dist/web/servidor/arranque.js +523 -52
  71. package/dist/web/servidor/arranque.js.map +1 -1
  72. package/dist/web/servidor/consolaDeTarea.js +4 -1
  73. package/dist/web/servidor/consolaDeTarea.js.map +1 -1
  74. package/dist/web/servidor/pielWeb.js +3 -1
  75. package/dist/web/servidor/pielWeb.js.map +1 -1
  76. package/dist/web/servidor/transporte.js.map +1 -1
  77. package/dist/web/servidor/vestibulo.js +154 -48
  78. package/dist/web/servidor/vestibulo.js.map +1 -1
  79. package/package.json +1 -1
  80. package/skills/xone-hotswap/SKILL.md +26 -10
  81. package/skills/xone-hotswap/lib/dispositivo.mjs +97 -3
  82. package/skills/xone-hotswap/references/conexion-y-despliegue.md +27 -15
  83. package/skills/xone-hotswap/scripts/xone-arrancar-android +9 -2
  84. package/skills/xone-hotswap/scripts/xone-desplegar-android +12 -6
  85. package/skills/xone-hotswap/scripts/xone-hotswap +32 -10
  86. package/skills/xone-hotswap/scripts/xone-reiniciar-android +23 -7
  87. package/apps/web/dist/assets/index-40sIfNsT.js +0 -485
  88. 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
- for (const porModelo of Object.values(uso)) {
42
- if (typeof porModelo !== "object" || porModelo === null)
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 = porModelo;
45
- entrada += entero(m["inputTokens"]);
46
- salida += entero(m["outputTokens"]);
47
- cache += entero(m["cacheReadInputTokens"]) + entero(m["cacheCreationInputTokens"]);
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":"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"}
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;IAOhD,MAAM,GAAG,GAAI,SAAyD,EAAE,UAAU,CAAC;IACnF,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACvG,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,SAAS,GAAuE,EAAE,CAAC;IACzF,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAA8B,CAAC,EAAE,CAAC;QACzE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAAE,SAAS;QAC1D,MAAM,CAAC,GAAG,KAAgC,CAAC;QAC3C,MAAM,IAAI,GAAG;YACX,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;YACjC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;YACjC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;SACjF,CAAC;QACF,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;QACxB,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;QACtB,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;QACpB,SAAS,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACvB,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC/C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,MAAe;IAC5C,MAAM,KAAK,GAAI,MAAkE,EAAE,UAAU,EAAE,KAAK,CAAC;IACrG,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAClE,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QACjC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QACjC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;KAC3E,CAAC;AACJ,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,YAAY,CAAC,CAAkB,EAAE,CAAqD;IACpG,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACnG,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAoB,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAIhF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC9D,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QACjC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QACjC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;KACrC,CAAC;AACJ,CAAC"}
@@ -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