xonecode 0.38.41 → 0.39.2

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 (334) hide show
  1. package/apps/web/dist/assets/{EditorDeFichero-B5qtmfKO.js → EditorDeFichero-BeWDctgN.js} +1 -1
  2. package/apps/web/dist/assets/{index-C6XoIOQg.js → index-B-6cDRAV.js} +20 -20
  3. package/apps/web/dist/assets/{php-I6JfbNBQ.js → php-D3QdOnb8.js} +1 -1
  4. package/apps/web/dist/assets/{ruby-DlqXDLOX.js → ruby-DDAcW-Z2.js} +1 -1
  5. package/apps/web/dist/index.html +1 -1
  6. package/dist/agent/cloudstudio/cloudstudioClient.d.ts +29 -0
  7. package/dist/agent/cloudstudio/cloudstudioMcp.d.ts +414 -0
  8. package/dist/agent/cloudstudio/conexionDeServidor.d.ts +37 -0
  9. package/dist/agent/cloudstudio/conexionDeServidor.js +63 -0
  10. package/dist/agent/cloudstudio/conexionDeServidor.js.map +1 -0
  11. package/dist/agent/cloudstudio/crearRama.d.ts +15 -0
  12. package/dist/agent/cloudstudio/crearRama.js +16 -0
  13. package/dist/agent/cloudstudio/crearRama.js.map +1 -0
  14. package/dist/agent/cloudstudio/descarga.d.ts +44 -0
  15. package/dist/agent/cloudstudio/manifiesto.d.ts +25 -0
  16. package/dist/agent/cloudstudio/ramaActiva.d.ts +24 -0
  17. package/dist/agent/cloudstudio/subida.d.ts +61 -0
  18. package/dist/agent/cloudstudio/subida.js +7 -1
  19. package/dist/agent/cloudstudio/subida.js.map +1 -1
  20. package/dist/agent/cloudstudio/validarTrasDescarga.d.ts +13 -0
  21. package/dist/agent/cloudstudio/zip.d.ts +13 -0
  22. package/dist/agent/conectores/conectoresEnDisco.d.ts +47 -0
  23. package/dist/agent/conectores/gestorJira.d.ts +50 -0
  24. package/dist/agent/conectores/gestorNotion.d.ts +45 -0
  25. package/dist/agent/conectores/proveedorDeConector.d.ts +43 -0
  26. package/dist/agent/conectores/servicioDeConectores.d.ts +112 -0
  27. package/dist/agent/config/authEnDisco.d.ts +43 -0
  28. package/dist/agent/config/catalogoModelos.d.ts +79 -0
  29. package/dist/agent/config/configEnDisco.d.ts +235 -0
  30. package/dist/agent/config/crearProyecto.d.ts +20 -0
  31. package/dist/agent/config/diagnosticoDeNodeEnMaquina.d.ts +44 -0
  32. package/dist/agent/config/ecoDeRazonamiento.d.ts +104 -0
  33. package/dist/agent/config/entorno.d.ts +83 -0
  34. package/dist/agent/config/fuentesEnRed.d.ts +12 -0
  35. package/dist/agent/config/gemini.d.ts +5 -0
  36. package/dist/agent/config/iconosEnRed.d.ts +10 -0
  37. package/dist/agent/config/identidadEnDisco.d.ts +27 -0
  38. package/dist/agent/config/modelos.d.ts +77 -0
  39. package/dist/agent/config/modelosDeMotor.d.ts +52 -0
  40. package/dist/agent/config/mudanzaEnDisco.d.ts +99 -0
  41. package/dist/agent/config/persona.d.ts +1 -0
  42. package/dist/agent/config/selectorEnMaquina.d.ts +35 -0
  43. package/dist/agent/config/settingsEnDisco.d.ts +206 -0
  44. package/dist/agent/config/versionEnDisco.d.ts +17 -0
  45. package/dist/agent/dispositivos/arranqueDeEmulador.d.ts +60 -0
  46. package/dist/agent/dispositivos/cajasDeMaqueta.d.ts +61 -0
  47. package/dist/agent/dispositivos/decodificarImagen.d.ts +21 -0
  48. package/dist/agent/dispositivos/descargaDeHerramientas.d.ts +44 -0
  49. package/dist/agent/dispositivos/dispositivosEnMaquina.d.ts +161 -0
  50. package/dist/agent/dispositivos/geometriaEnDisco.d.ts +17 -0
  51. package/dist/agent/dispositivos/hotswap.d.ts +194 -0
  52. package/dist/agent/dispositivos/instalacionEnMaquina.d.ts +156 -0
  53. package/dist/agent/dispositivos/juezVisual.d.ts +144 -0
  54. package/dist/agent/dispositivos/lanzamientoEnMaquina.d.ts +197 -0
  55. package/dist/agent/dispositivos/paqueteDelProyecto.d.ts +28 -0
  56. package/dist/agent/dispositivos/procesosEnMaquina.d.ts +154 -0
  57. package/dist/agent/dispositivos/recargaEnAparato.d.ts +30 -0
  58. package/dist/agent/dispositivos/sensorDeArranque.d.ts +42 -0
  59. package/dist/agent/exportarPdf.d.ts +72 -0
  60. package/dist/agent/grafo/aprendido.d.ts +28 -0
  61. package/dist/agent/grafo/arbolDeProyecto.d.ts +205 -0
  62. package/dist/agent/grafo/artefactosEnDisco.d.ts +35 -0
  63. package/dist/agent/grafo/atributosXone.d.ts +31 -0
  64. package/dist/agent/grafo/buscarIcono.d.ts +32 -0
  65. package/dist/agent/grafo/busquedaRegex.d.ts +56 -0
  66. package/dist/agent/grafo/codificacionDelProyecto.d.ts +7 -0
  67. package/dist/agent/grafo/compararCapturas.d.ts +22 -0
  68. package/dist/agent/grafo/copiarArtefacto.d.ts +64 -0
  69. package/dist/agent/grafo/criticaVisual.d.ts +60 -0
  70. package/dist/agent/grafo/describirImagen.d.ts +79 -0
  71. package/dist/agent/grafo/diferenciaDeCapturas.d.ts +33 -0
  72. package/dist/agent/grafo/ejecucionCancelable.d.ts +45 -0
  73. package/dist/agent/grafo/escriturasEnSerie.d.ts +31 -0
  74. package/dist/agent/grafo/excluirTools.d.ts +37 -0
  75. package/dist/agent/grafo/fuentesDeGoogle.d.ts +37 -0
  76. package/dist/agent/grafo/generarFondoSvg.d.ts +52 -0
  77. package/dist/agent/grafo/incorporarAdjunto.d.ts +98 -0
  78. package/dist/agent/grafo/lectorDeReferencias.d.ts +28 -0
  79. package/dist/agent/grafo/marcarCriteriosDelPlan.d.ts +47 -0
  80. package/dist/agent/grafo/memoriaDeProyecto.d.ts +15 -0
  81. package/dist/agent/grafo/navegacionXone.d.ts +60 -0
  82. package/dist/agent/grafo/opcionesDeFicheros.d.ts +23 -0
  83. package/dist/agent/grafo/perfiles.d.ts +225 -0
  84. package/dist/agent/grafo/proyecto.d.ts +450 -0
  85. package/dist/agent/grafo/skills.d.ts +181 -0
  86. package/dist/agent/grafo/traerDeLaMaquina.d.ts +60 -0
  87. package/dist/agent/grafo/unirSecciones.d.ts +20 -0
  88. package/dist/agent/grafo/validacionXone.d.ts +35 -0
  89. package/dist/agent/grafo/validarFicheroXone.d.ts +33 -0
  90. package/dist/agent/grafo/xoneAgent.d.ts +166 -0
  91. package/dist/agent/motores/motoresLocales.d.ts +87 -0
  92. package/dist/agent/motores/trueforge/capacidades.d.ts +183 -0
  93. package/dist/agent/motores/trueforge/convertirAP.d.ts +38 -0
  94. package/dist/agent/motores/trueforge/detencion.d.ts +70 -0
  95. package/dist/agent/motores/trueforge/esperas.d.ts +38 -0
  96. package/dist/agent/motores/trueforge/eventosTrueforge.d.ts +56 -0
  97. package/dist/agent/motores/trueforge/informesDeHijos.d.ts +48 -0
  98. package/dist/agent/motores/trueforge/medidaAutomatica.d.ts +37 -0
  99. package/dist/agent/motores/trueforge/medidaAutomatica.js +4 -2
  100. package/dist/agent/motores/trueforge/medidaAutomatica.js.map +1 -1
  101. package/dist/agent/motores/trueforge/memoriaDeEspecialistas.d.ts +60 -0
  102. package/dist/agent/motores/trueforge/memoriaTrueforge.d.ts +131 -0
  103. package/dist/agent/motores/trueforge/metricasTrueforge.d.ts +45 -0
  104. package/dist/agent/motores/trueforge/modeloExterno.d.ts +9 -0
  105. package/dist/agent/motores/trueforge/modeloLangchain.d.ts +69 -0
  106. package/dist/agent/motores/trueforge/notas.d.ts +48 -0
  107. package/dist/agent/motores/trueforge/proponerTareas.d.ts +30 -0
  108. package/dist/agent/motores/trueforge/recortes.d.ts +47 -0
  109. package/dist/agent/motores/trueforge/resumenSeguro.d.ts +33 -0
  110. package/dist/agent/motores/trueforge/sesionTrueforge.d.ts +273 -0
  111. package/dist/agent/motores/trueforge/sesionTrueforge.js +32 -15
  112. package/dist/agent/motores/trueforge/sesionTrueforge.js.map +1 -1
  113. package/dist/agent/motores/trueforge/skillsTrueforge.d.ts +16 -0
  114. package/dist/agent/motores/trueforge/toolsDeConectores.d.ts +36 -0
  115. package/dist/agent/motores/trueforge/toolsDeFichero.d.ts +146 -0
  116. package/dist/agent/motores/trueforge/toolsPropias.d.ts +38 -0
  117. package/dist/agent/motores/trueforge/traerDeStitch.d.ts +63 -0
  118. package/dist/agent/motores/trueforge/trueforge.d.ts +35 -0
  119. package/dist/agent/navegacion/estilosEnDisco.d.ts +41 -0
  120. package/dist/agent/navegacion/hechosEnDisco.d.ts +19 -0
  121. package/dist/agent/navegacion/indiceEnDisco.d.ts +50 -0
  122. package/dist/agent/navegacion/modeloDeProyecto.d.ts +86 -0
  123. package/dist/agent/planesEnDisco.d.ts +18 -0
  124. package/dist/agent/publicarPlan.d.ts +20 -0
  125. package/dist/agent/raizDelPaquete.d.ts +9 -0
  126. package/dist/agent/remoto/ngrokEnMaquina.d.ts +44 -0
  127. package/dist/agent/remoto/puenteWebSocket.d.ts +59 -0
  128. package/dist/agent/remoto/tunelNgrok.d.ts +31 -0
  129. package/dist/agent/renombrarSobre.d.ts +14 -0
  130. package/dist/agent/sesiones/adjuntosDeSesion.d.ts +64 -0
  131. package/dist/agent/sesiones/baseDeFichero.d.ts +9 -0
  132. package/dist/agent/sesiones/checkpointer.d.ts +146 -0
  133. package/dist/agent/sesiones/git.d.ts +66 -0
  134. package/dist/agent/sesiones/gitSync.d.ts +264 -0
  135. package/dist/agent/sesiones/memoriaDeHilo.d.ts +4 -0
  136. package/dist/agent/sesiones/modeloDelCambio.d.ts +7 -0
  137. package/dist/agent/sesiones/parcheEnTexto.d.ts +9 -0
  138. package/dist/agent/sesiones/sesionGit.d.ts +155 -0
  139. package/dist/agent/subagentes/actividadDeCodex.d.ts +8 -0
  140. package/dist/agent/subagentes/agentesEnDisco.d.ts +198 -0
  141. package/dist/agent/subagentes/consumoExterno.d.ts +83 -0
  142. package/dist/agent/subagentes/ejecutableEnWindows.d.ts +53 -0
  143. package/dist/agent/subagentes/escrituraDeCodex.d.ts +94 -0
  144. package/dist/agent/subagentes/escrituraDeOpencode.d.ts +67 -0
  145. package/dist/agent/subagentes/escrituraExterna.d.ts +419 -0
  146. package/dist/agent/subagentes/pluginDeSkills.d.ts +84 -0
  147. package/dist/agent/subagentes/subagenteCodex.d.ts +76 -0
  148. package/dist/agent/subagentes/subagenteExterno.d.ts +169 -0
  149. package/dist/agent/subagentes/subagenteOpencode.d.ts +126 -0
  150. package/dist/agent/tareas/aumentador.d.ts +99 -0
  151. package/dist/agent/tareas/juezDeTarea.d.ts +64 -0
  152. package/dist/agent/tareas/reflejoEnElGestor.d.ts +38 -0
  153. package/dist/agent/tareas/sondeoDelGestor.d.ts +49 -0
  154. package/dist/agent/tareas/tareasEnDisco.d.ts +141 -0
  155. package/dist/agent/trazaDeErroresEnDisco.d.ts +10 -0
  156. package/dist/agent/turno/depuracion.d.ts +1 -0
  157. package/dist/agent/turno/diagnosticoDeTools.d.ts +124 -0
  158. package/dist/agent/turno/ficherosDelProyecto.d.ts +10 -0
  159. package/dist/agent/turno/guionizado.d.ts +18 -0
  160. package/dist/agent/turno/informeDeTraza.d.ts +220 -0
  161. package/dist/agent/turno/inspectorDePrompt.d.ts +150 -0
  162. package/dist/agent/turno/instantanea.d.ts +16 -0
  163. package/dist/agent/turno/interrupts.d.ts +54 -0
  164. package/dist/agent/turno/juezDelTurnoConModelo.d.ts +26 -0
  165. package/dist/agent/turno/mensajes.d.ts +23 -0
  166. package/dist/agent/turno/normalizar.d.ts +15 -0
  167. package/dist/agent/turno/puente.d.ts +196 -0
  168. package/dist/agent/turno/registroDeFallos.d.ts +39 -0
  169. package/dist/agent/turno/resumenDeContexto.d.ts +269 -0
  170. package/dist/agent/turno/resumenDeTool.d.ts +33 -0
  171. package/dist/agent/turno/rubrica.d.ts +35 -0
  172. package/dist/agent/turno/sesionReal.d.ts +89 -0
  173. package/dist/agent/turno/textoDeTool.d.ts +19 -0
  174. package/dist/agent/turno/turnoReal.d.ts +210 -0
  175. package/dist/agent/turno/verificacion.d.ts +85 -0
  176. package/dist/agent/turno/verificador.d.ts +66 -0
  177. package/dist/bin.d.ts +2 -0
  178. package/dist/cli/acuseDeModelo.d.ts +18 -0
  179. package/dist/cli/aprobar.d.ts +162 -0
  180. package/dist/cli/config.d.ts +17 -0
  181. package/dist/cli/consola.d.ts +473 -0
  182. package/dist/cli/describe.d.ts +7 -0
  183. package/dist/cli/doctor.d.ts +8 -0
  184. package/dist/cli/fuentesDeDisco.d.ts +25 -0
  185. package/dist/cli/main.d.ts +291 -0
  186. package/dist/cli/markdown.d.ts +126 -0
  187. package/dist/cli/panel.d.ts +38 -0
  188. package/dist/cli/podar.d.ts +38 -0
  189. package/dist/cli/run.d.ts +30 -0
  190. package/dist/cli/spinner.d.ts +37 -0
  191. package/dist/cli/stdio.d.ts +94 -0
  192. package/dist/cli/tema.d.ts +68 -0
  193. package/dist/cli/tokens.d.ts +16 -0
  194. package/dist/cli/traza.d.ts +19 -0
  195. package/dist/cli/tui/app.d.ts +23 -0
  196. package/dist/cli/tui/aprobarTui.d.ts +46 -0
  197. package/dist/cli/tui/barra.d.ts +43 -0
  198. package/dist/cli/tui/correrTui.d.ts +119 -0
  199. package/dist/cli/tui/entrada.d.ts +14 -0
  200. package/dist/cli/tui/filas.d.ts +13 -0
  201. package/dist/cli/tui/logo.d.ts +20 -0
  202. package/dist/cli/tui/pielTui.d.ts +15 -0
  203. package/dist/cli/tui/raton.d.ts +68 -0
  204. package/dist/cli/tui/sidebar.d.ts +63 -0
  205. package/dist/cli/tui/store.d.ts +102 -0
  206. package/dist/cli/tui/tarjeta.d.ts +8 -0
  207. package/dist/cli/tui/temaInk.d.ts +67 -0
  208. package/dist/cli/tui/transcript.d.ts +32 -0
  209. package/dist/cli/verify.d.ts +9 -0
  210. package/dist/cli/wizardInicial.d.ts +59 -0
  211. package/dist/core/actos.d.ts +437 -0
  212. package/dist/core/adjuntos.d.ts +77 -0
  213. package/dist/core/agentes.d.ts +353 -0
  214. package/dist/core/analisisDeSesion.d.ts +63 -0
  215. package/dist/core/aprendido.d.ts +41 -0
  216. package/dist/core/artefactos.d.ts +74 -0
  217. package/dist/core/atributosXone.d.ts +53 -0
  218. package/dist/core/bitacora.d.ts +21 -0
  219. package/dist/core/cloudstudio.d.ts +168 -0
  220. package/dist/core/codificacion.d.ts +81 -0
  221. package/dist/core/comandoExterno.d.ts +49 -0
  222. package/dist/core/compararCapturas.d.ts +136 -0
  223. package/dist/core/conectores.d.ts +296 -0
  224. package/dist/core/config.d.ts +148 -0
  225. package/dist/core/contextos.d.ts +54 -0
  226. package/dist/core/convertirAP.d.ts +56 -0
  227. package/dist/core/copiaDeAvd.d.ts +44 -0
  228. package/dist/core/cssBienFormado.d.ts +22 -0
  229. package/dist/core/deps.d.ts +28 -0
  230. package/dist/core/descargas.d.ts +61 -0
  231. package/dist/core/descripcionDePantalla.d.ts +121 -0
  232. package/dist/core/descriptoresDeApp.d.ts +108 -0
  233. package/dist/core/diagnosticoDeNode.d.ts +51 -0
  234. package/dist/core/diff.d.ts +26 -0
  235. package/dist/core/diffDeColecciones.d.ts +54 -0
  236. package/dist/core/disenoVinculado.d.ts +17 -0
  237. package/dist/core/dispositivoDeSesion.d.ts +22 -0
  238. package/dist/core/dispositivoElegido.d.ts +17 -0
  239. package/dist/core/dispositivos.d.ts +469 -0
  240. package/dist/core/entrega.d.ts +341 -0
  241. package/dist/core/entrelazar.d.ts +48 -0
  242. package/dist/core/esfuerzo.d.ts +120 -0
  243. package/dist/core/esqueleto.d.ts +38 -0
  244. package/dist/core/estiloMedido.d.ts +70 -0
  245. package/dist/core/estilos.d.ts +76 -0
  246. package/dist/core/events.d.ts +218 -0
  247. package/dist/core/exportacion.d.ts +88 -0
  248. package/dist/core/fallos.d.ts +79 -0
  249. package/dist/core/fondosSvg.d.ts +115 -0
  250. package/dist/core/fotoDeColecciones.d.ts +45 -0
  251. package/dist/core/fuentes.d.ts +96 -0
  252. package/dist/core/geometriaDePantalla.d.ts +171 -0
  253. package/dist/core/gestorDeTareas.d.ts +295 -0
  254. package/dist/core/hechosDelProyecto.d.ts +70 -0
  255. package/dist/core/hotswap.d.ts +30 -0
  256. package/dist/core/iconos.d.ts +86 -0
  257. package/dist/core/identidadDeProveedor.d.ts +20 -0
  258. package/dist/core/idiomaDeLaRespuesta.d.ts +26 -0
  259. package/dist/core/imagenesDeDocumento.d.ts +40 -0
  260. package/dist/core/jsParaRhino.d.ts +3 -0
  261. package/dist/core/juezDelTurno.d.ts +95 -0
  262. package/dist/core/logDeDispositivo.d.ts +67 -0
  263. package/dist/core/memoria.d.ts +18 -0
  264. package/dist/core/metodoDeComparacionVisual.d.ts +20 -0
  265. package/dist/core/modelos.d.ts +198 -0
  266. package/dist/core/modoDeEscritura.d.ts +155 -0
  267. package/dist/core/motor.d.ts +43 -0
  268. package/dist/core/motoresLocales.d.ts +113 -0
  269. package/dist/core/mudanzaDeWorkspace.d.ts +112 -0
  270. package/dist/core/navegacion.d.ts +172 -0
  271. package/dist/core/notify.d.ts +77 -0
  272. package/dist/core/nucleoXone.d.ts +28 -0
  273. package/dist/core/panorama.d.ts +68 -0
  274. package/dist/core/paqueteDeSoporte.d.ts +100 -0
  275. package/dist/core/planDeSubida.d.ts +56 -0
  276. package/dist/core/planes.d.ts +53 -0
  277. package/dist/core/podaDeCheckpoint.d.ts +75 -0
  278. package/dist/core/ports.d.ts +1034 -0
  279. package/dist/core/puedeLanzarse.d.ts +181 -0
  280. package/dist/core/puertosDeAvd.d.ts +59 -0
  281. package/dist/core/recargaEnCaliente.d.ts +52 -0
  282. package/dist/core/referenciasDeImagen.d.ts +36 -0
  283. package/dist/core/remoto.d.ts +76 -0
  284. package/dist/core/repartoDeEncargo.d.ts +80 -0
  285. package/dist/core/rubrica.d.ts +78 -0
  286. package/dist/core/rutaVirtual.d.ts +29 -0
  287. package/dist/core/selectorDeCarpeta.d.ts +59 -0
  288. package/dist/core/serieDeEscrituras.d.ts +58 -0
  289. package/dist/core/settings.d.ts +421 -0
  290. package/dist/core/shellDeAgente.d.ts +177 -0
  291. package/dist/core/skills.d.ts +129 -0
  292. package/dist/core/stitch.d.ts +114 -0
  293. package/dist/core/tareas.d.ts +412 -0
  294. package/dist/core/tareasDelPlan.d.ts +123 -0
  295. package/dist/core/tareasEnElGestor.d.ts +117 -0
  296. package/dist/core/textos.d.ts +8 -0
  297. package/dist/core/topeAgotado.d.ts +55 -0
  298. package/dist/core/traerDeLaMaquina.d.ts +33 -0
  299. package/dist/core/trazaDeErrores.d.ts +83 -0
  300. package/dist/core/tunel.d.ts +45 -0
  301. package/dist/core/turno.d.ts +154 -0
  302. package/dist/core/validacionDeEscritura.d.ts +95 -0
  303. package/dist/core/verificacionDeSubida.d.ts +14 -0
  304. package/dist/core/version.d.ts +35 -0
  305. package/dist/core/xmlBienFormado.d.ts +23 -0
  306. package/dist/core/zipDeAdjunto.d.ts +28 -0
  307. package/dist/core/zipDeSkill.d.ts +74 -0
  308. package/dist/lib/tareaAutonoma.d.ts +36 -0
  309. package/dist/lib/tareaAutonoma.js +259 -0
  310. package/dist/lib/tareaAutonoma.js.map +1 -0
  311. package/dist/lib.d.ts +31 -0
  312. package/dist/lib.js +28 -0
  313. package/dist/lib.js.map +1 -0
  314. package/dist/vendor/hitl.d.ts +69 -0
  315. package/dist/vendor/skillLoaders/catalog.d.ts +27 -0
  316. package/dist/vendor/sqliteSaver.d.ts +22 -0
  317. package/dist/vendor/tokenTracking.d.ts +22 -0
  318. package/dist/web/servidor/arranque.d.ts +1372 -0
  319. package/dist/web/servidor/consolaDeTarea.d.ts +166 -0
  320. package/dist/web/servidor/consolaWeb.d.ts +142 -0
  321. package/dist/web/servidor/corredorDeTareas.d.ts +395 -0
  322. package/dist/web/servidor/datosDeCierre.d.ts +4 -0
  323. package/dist/web/servidor/interrupcion.d.ts +39 -0
  324. package/dist/web/servidor/pielWeb.d.ts +32 -0
  325. package/dist/web/servidor/puenteRemoto.d.ts +80 -0
  326. package/dist/web/servidor/servidor.d.ts +53 -0
  327. package/dist/web/servidor/sesiones.d.ts +342 -0
  328. package/dist/web/servidor/soporte.d.ts +65 -0
  329. package/dist/web/servidor/soporte.js +2 -0
  330. package/dist/web/servidor/soporte.js.map +1 -1
  331. package/dist/web/servidor/transporte.d.ts +2751 -0
  332. package/dist/web/servidor/vestibulo.d.ts +952 -0
  333. package/dist/web/servidor/visorOpenui.d.ts +33 -0
  334. package/package.json +9 -1
@@ -0,0 +1,450 @@
1
+ import { type DispositivoDeLaSesion } from "../../core/dispositivoDeSesion.js";
2
+ import { FilesystemBackend } from "deepagents";
3
+ import { type ValidarContenido } from "./validacionXone.js";
4
+ import { type Montaje } from "./skills.js";
5
+ import { type Artefacto } from "../../core/artefactos.js";
6
+ /**
7
+ * El backend del proyecto: confinado, y sin las vistas aplanadas.
8
+ *
9
+ * **`virtualMode: true` no es configurable.** Medido contra deepagents 1.13.2: con el
10
+ * default (`false`) el backend LEYÓ una ruta absoluta de fuera de la raíz. La propia
11
+ * librería lo dice de su default — «absolute paths and `..` can bypass rootDir».
12
+ *
13
+ * Y sin shell: el `execute` de deepagents solo aparece si el backend sabe ejecutar, así que
14
+ * éste es el que deja a un especialista SIN esa tool. El que sí la tiene es
15
+ * `backendDelProyectoConShell`, y quién se lleva cuál lo decide `ejecucion` en el `.md`.
16
+ */
17
+ export declare function backendDelProyecto(raiz: string): FilesystemBackend;
18
+ /**
19
+ * El mismo backend, pero que además EJECUTA — el de un subagente con `ejecucion: true`.
20
+ *
21
+ * Es la pieza que enciende la tool `execute` de deepagents: el middleware la registra solo
22
+ * cuando «el backend resuelto sabe ejecutar», y lo que decide eso es `isSandboxBackend`, que
23
+ * mira que haya un `execute` y un `id` NO vacío (medido en la librería: `id !== ""`).
24
+ *
25
+ * **Lo que `virtualMode` NO hace aquí, y hay que tenerlo delante.** Confina las tools de
26
+ * FICHERO, no los comandos: un `cat ../../otro` del shell sale de la raíz igual. Lo mismo
27
+ * vale para `permisosDe`, y la propia librería se niega a fingir lo contrario — usar
28
+ * `permissions` con un backend ejecutable **lanza `ConfigurationError`** («permissions are
29
+ * not enforced on execute because shell commands can access any path regardless of
30
+ * path-based rules»). O sea que conceder ejecución es conceder la máquina, y por eso se
31
+ * declara en el `.md`, se ve en cada evento y lo lleva un solo subagente.
32
+ *
33
+ * **El entorno se pasa ENTERO y a mano, nunca `inheritEnv`.** Con `inheritEnv: true` la
34
+ * shell hereda `process.env`, donde `guardarCredencial` escribe las claves de API a
35
+ * propósito; un `printenv` las dejaría en el contexto. Lo que se pasa lo decide
36
+ * `core/shellDeAgente.ts#entornoDeShell`, que es puro y tiene test.
37
+ *
38
+ * **El límite declarado, heredado de la librería**: el tope sigue siendo de RELOJ
39
+ * (`TOPE_DE_COMANDO_S`, pasado como `timeoutS`), no de silencio, al revés que
40
+ * `TOPE_SIN_SALIDA_MS` de `agent/dispositivos/`. Por eso lo que no termina —un emulador— va al
41
+ * fondo desde la propia orden, y eso lo dice la skill. Al vencer, `crearExecuteCancelable`
42
+ * (`agent/grafo/ejecucionCancelable.ts`) manda `SIGKILL` al ÁRBOL vía `matarGrupoReal` —
43
+ * `process.kill(-pid)` en POSIX, `taskkill /T /F` en Windows—: un nieto no sobrevive.
44
+ */
45
+ export declare function backendDelProyectoConShell(raiz: string, entorno: Record<string, string>,
46
+ /**
47
+ * La señal del TURNO en curso, ya resuelta desde fuera (`sesionTrueforge.ts`). Ausente —el
48
+ * caso de deepagents, que no la forwardea nunca— y `execute` se comporta exactamente como
49
+ * antes: sin cancelación interactiva, pero YA con el kill de árbol al vencer el timeout.
50
+ */
51
+ senalDelTurno?: () => AbortSignal | undefined): FilesystemBackend;
52
+ /**
53
+ * El aparato de la sesión, leído AHORA del mismo fichero que leen los scripts (la variable
54
+ * `XONECODE_DISPOSITIVO` de la shell apunta aquí). Lo usa la guarda del `execute`
55
+ * (`core/shellDeAgente.ts#motivoDeOtroAparato`, IXCODE-32): se lee en cada comando porque la
56
+ * persona puede cambiar de aparato con la sesión abierta. Sin carpeta de artefactos, o sin
57
+ * fichero, no hay aparato elegido.
58
+ */
59
+ export declare function lectorDelDispositivoDeSesion(artefactos: string | undefined): () => DispositivoDeLaSesion | undefined;
60
+ /**
61
+ * El entorno con el que corre la shell de ESTE proyecto.
62
+ *
63
+ * Una sola llamada para que el montaje no sea una composición dentro de `construirAgente`:
64
+ * ahí lo doblan todos los tests y la regla —qué claves se quitan, qué rutas se añaden—
65
+ * quedaría escrita y sin probar. La decisión es pura y vive en `core/shellDeAgente.ts`; lo
66
+ * que aporta esto es de dónde salen los tres ingredientes.
67
+ *
68
+ * Las skills se leen del disco en cada construcción, igual que `skillsMontables` en el
69
+ * backend y que `cargarAgentes`: una skill instalada con la consola abierta no alcanza a la
70
+ * sesión en curso, que es el límite ya anotado en CLAUDE.md y no uno nuevo.
71
+ */
72
+ export declare function entornoDeLaShellDelProyecto(raiz: string, artefactos?: string,
73
+ /**
74
+ * El buscador de binarios del SDK de Android. Entra por parámetro **solo** para que un test
75
+ * pueda ver que está montado: esta función toca `process.env` y `existsSync`, así que sin
76
+ * inyectarlo la composición viviría donde ningún test la alcanza — el patrón de fallo que
77
+ * este repo lleva contadas nueve veces. En producción no lo pasa nadie.
78
+ */
79
+ enSdk?: (nombre: string, subcarpeta: string) => string | undefined): Record<string, string>;
80
+ /**
81
+ * Los SCRIPTS que un agente puede correr por su nombre: los ficheros EJECUTABLES de la carpeta
82
+ * `scripts/` de las skills que declara (`agente.skills`), en el orden de sus skills. Es la lista
83
+ * que un agente de Claude Code con ejecución tiene permitida (`core/comandoExterno.ts`); un
84
+ * `.mjs` sin bit de ejecución no cuenta, porque por su nombre no correría.
85
+ */
86
+ export declare function scriptsDeLasSkills(raiz: string, skills: readonly string[], plataforma?: NodeJS.Platform): string[];
87
+ /**
88
+ * Los mismos scripts, con su RUTA. **En Windows no hay bit de ejecución** —Node da `mode` sin él a todo fichero—, así que
89
+ * allí cuenta un script de Node por su primera línea (`#!/usr/bin/env node`). Medido en la máquina Windows de un usuario:
90
+ * con el bit como única regla la lista salía VACÍA y el desarrollador en Claude Code se quedaba sin ningún script.
91
+ */
92
+ export declare function scriptsConRuta(raiz: string | undefined, skills: readonly string[], plataforma?: NodeJS.Platform): {
93
+ nombre: string;
94
+ ruta: string;
95
+ }[];
96
+ /**
97
+ * El tope de reloj de UN comando, en segundos.
98
+ *
99
+ * El de la librería son 120 s. Se sube porque aquí los comandos normales son de dispositivo
100
+ * —un `adb install`, esperar a que un emulador termine de arrancar— y 120 s los corta a
101
+ * mitad; y no se sube más porque un comando que no vuelve deja el turno colgado hasta aquí.
102
+ * Lo que de verdad no termina nunca (arrancar un emulador) no se acota con un tope: se manda
103
+ * al fondo, que es lo que la skill explica.
104
+ */
105
+ export declare const TOPE_DE_COMANDO_S = 600;
106
+ /**
107
+ * Añade las skills como una ruta virtual de solo lectura del agente.
108
+ *
109
+ * El proyecto del usuario sigue siendo la raíz predeterminada. `/skills` apunta al
110
+ * catálogo que se distribuye con xonecode: así SkillsMiddleware puede descubrir y
111
+ * cargar bajo demanda cada `SKILL.md` sin conceder al modelo acceso al repositorio
112
+ * del harness ni sacarlo de la raíz del proyecto.
113
+ *
114
+ * **Y las del USUARIO cuelgan de esa misma ruta, una a una.** Viven en otras dos carpetas
115
+ * (`~/.xonecode/skills/` y la del proyecto, `agent/grafo/skills.ts`) y tienen que verse como
116
+ * UNA sola: un subagente declara `skills: [mi-skill]` y eso se traduce a `/skills/mi-skill/`
117
+ * sin saber de dónde salió el fichero. Una raíz aparte —`/skills-tuyas/`— habría metido de
118
+ * quién es la skill dentro de su ruta, y entonces cambiarla de carpeta le cambiaría el
119
+ * nombre al agente.
120
+ *
121
+ * Se apoya en que `CompositeBackend` ordena sus rutas **por longitud descendente** y se
122
+ * queda con la primera que encaja (`sortedRoutes` en deepagents 1.13.2): `/skills/mia/` es
123
+ * más larga que `/skills/`, así que gana para todo lo que cuelgue de ella. Eso no es una
124
+ * suposición sobre la librería: lo ata `proyecto.test.ts` contra la librería REAL, que es la
125
+ * única forma de enterarse el día que cambie.
126
+ *
127
+ * **Límite declarado**: un `ls /skills` enseña solo las de serie. `CompositeBackend.ls`
128
+ * resuelve a UNA ruta y no funde varias, así que las del usuario no salen en ese listado. No
129
+ * importa para lo que esto hace —`SkillsMiddleware` recibe las rutas una a una, ya
130
+ * resueltas, y es así como el modelo las descubre— pero un agente que liste esa carpeta a
131
+ * mano no las verá.
132
+ */
133
+ /**
134
+ * Monta la máquina entera bajo `/disco/`, de solo lectura, y contesta bien a quien pegue una
135
+ * ruta absoluta a pelo.
136
+ *
137
+ * El porqué entero está en `core/discoDeLaMaquina.ts`. Aquí, las dos mitades del cableado:
138
+ *
139
+ * - **El montaje**: la misma pieza que `/skills/`, `/adjuntos/` y `/planes/` — otra raíz del
140
+ * `CompositeBackend`, con su barra final obligatoria. El «solo lectura» no lo pone esto: lo
141
+ * pone `permisosDe`, que es donde vive esa decisión para todas las raíces.
142
+ * - **La REESCRITURA**, que es lo que evita el viaje en balde. Una ruta de máquina escrita a
143
+ * pelo (`/Users/…/x.zip`) se resuelve DENTRO del proyecto y vuelve un ENOENT que dice «no
144
+ * existe» sobre un fichero que sí existe —y de paso filtra la raíz absoluta del proyecto—.
145
+ * Se intercepta antes y se devuelve la ruta buena ya escrita.
146
+ */
147
+ /**
148
+ * Contesta bien a una ruta de la MÁQUINA escrita como si fuera del proyecto.
149
+ *
150
+ * Sin esto se resuelve DENTRO del proyecto y vuelve un ENOENT que dice «no such file or
151
+ * directory» sobre un fichero que sí existe —y de paso filtra la raíz absoluta del proyecto—.
152
+ * Medido: el orquestador concluía que estaba enjaulado y se iba a delegar en el agente con
153
+ * shell. Aquí se le devuelve el paso siguiente ESCRITO, que es el patrón de `porQueNo`.
154
+ *
155
+ * No monta nada y no abre nada: solo sustituye un mensaje que engaña por uno que sirve.
156
+ */
157
+ export declare function conAvisoDeRutaDeMaquina<T extends object>(backend: T): T;
158
+ export declare function backendConSkills<T extends object>(backend: T, propias?: readonly Montaje[]): T;
159
+ /**
160
+ * Cuelga `/adjuntos/` de la carpeta que le toque, de solo lectura.
161
+ *
162
+ * **La misma pieza que `/skills/` y `/artefactos/`**: otra raíz del `CompositeBackend`. Y de
163
+ * solo lectura por lo mismo que las skills — son material de ENTRADA, los documentos que
164
+ * anexó la persona, no ficheros que reescribir. Quien lo deniega es `permisosDe`
165
+ * (`agent/grafo/perfiles.ts`), incondicionalmente y por patrón: aquí no hay Proxy que
166
+ * rechace, igual que no lo hay para `/skills/`, porque la denegación que el modelo choca es
167
+ * la del middleware de permisos y ese es el sitio donde vive la regla.
168
+ *
169
+ * **`carpeta` puede ser de DOS orígenes** y a este backend le da igual cuál: la de una TAREA
170
+ * (`~/.xonecode/tareas/<id>/adjuntos/`, FUERA del proyecto) o, desde IXCODE-7, la del CHAT de
171
+ * una SESIÓN (`carpetaDeAdjuntosDeSesion`, DENTRO de `.xonecode/`). Las dos evitan git y
172
+ * CloudStudio, por rutas distintas — el porqué entero está en `core/adjuntos.ts`. Meterlos
173
+ * DENTRO del proyecto es la tool `incorporar_adjunto`, no esta pieza.
174
+ *
175
+ * **La carpeta no se crea aquí**, misma medida que `/artefactos/`: `FilesystemBackend` no
176
+ * exige que su `rootDir` exista. Quién decide qué `carpeta` llega es
177
+ * `cli/main.ts#carpetaDeAdjuntosDelEjecutor`, con la MISMA regla para las dos fuentes: **en
178
+ * la web se monta SIEMPRE**, exista o no la carpeta en disco — la de la tarea, si TRAE
179
+ * adjuntos (`web/servidor/corredorDeTareas.ts`), y si no, la del CHAT de esa misma sesión
180
+ * (vacía; una tarea también abre por el ejecutor de la web, y cae a su propia sesión igual
181
+ * que una persona — inocuo, es su propia carpeta). **En el terminal, nunca**: su hilo no
182
+ * tiene carpeta de sesión que derivar.
183
+ */
184
+ export declare function backendConAdjuntos<T extends object>(backend: T, carpeta: string): T;
185
+ /**
186
+ * Cuelga `/planes/` de `.xonecode/planes/`, en el repo LOCAL.
187
+ *
188
+ * El porqué de ese sitio está en `core/planes.ts`. Lo que aporta esto es el montaje, y tiene
189
+ * las mismas dos trampas que `/artefactos/` y `/skills/`:
190
+ *
191
+ * - **La barra final es obligatoria**: `CompositeBackend` la retira antes de delegar, y sin
192
+ * ella reconstruye `//favoritos/PLAN.md`, que `FilesystemBackend` interpreta fuera de su
193
+ * raíz.
194
+ * - **La carpeta NO se crea al montar**: la crea `FilesystemBackend.write` la primera vez que
195
+ * se escribe. Un proyecto en el que nadie ha planificado no tiene por qué tener la carpeta.
196
+ *
197
+ * Y una diferencia con los artefactos que es el motivo de que exista: esto **no se anuncia**.
198
+ * Un artefacto se enseña una vez; un plan se escribe, se lee y se ACTUALIZA por varios
199
+ * especialistas a lo largo de varios turnos, así que un evento por escritura sería ruido.
200
+ */
201
+ export declare function backendConPlanes<T extends object>(backend: T, raiz: string): T;
202
+ /**
203
+ * Cuelga `/artefactos/` de la carpeta de la SESIÓN, fuera del proyecto.
204
+ *
205
+ * El porqué está en `core/artefactos.ts`: hoy los diagramas del `mockup` acaban en la raíz
206
+ * del proyecto y de ahí a git y a CloudStudio. Esto es el mismo mecanismo que `/skills/`
207
+ * —otra raíz en el `CompositeBackend`— con dos diferencias que importan:
208
+ *
209
+ * - **Se puede ESCRIBIR.** `/skills/` está denegada en `permisosDe` porque son instrucciones
210
+ * del harness; esta es justamente donde el agente deja lo que produce.
211
+ * - **Se APUNTA lo que se escribe.** El backend es el único sitio que sabe que una escritura
212
+ * ocurrió y cuánto pesó, y un artefacto que nadie nombra es un fichero en una carpeta que
213
+ * nadie abre. El Proxy va sobre el sub-backend y no sobre el compuesto: así solo ve lo de
214
+ * esta carpeta, sin filtrar las escrituras del proyecto por el mismo sitio.
215
+ *
216
+ * La carpeta **no se crea aquí**. Medido contra deepagents: `FilesystemBackend` no exige que
217
+ * su `rootDir` exista y el `write` lo crea. Crearla al montar dejaría un `artefactos/` vacío
218
+ * en cada sesión que no dibuja nada, que es la mayoría.
219
+ */
220
+ export declare function backendConArtefactos<T extends object>(backend: T, carpeta: string, alEscribir: (artefacto: Artefacto) => void): T;
221
+ /**
222
+ * Cuelga `/large_tool_results/` y `/conversation_history/` al lado de los artefactos de la
223
+ * sesión — o sea, FUERA del proyecto.
224
+ *
225
+ * Son las dos carpetas donde deepagents descarga lo que no cabe en el contexto, y hasta
226
+ * ahora no estaban montadas: medido, `large_tool_results/call_866999.txt` (26 KB) acabó
227
+ * dentro del AppDemo del usuario y commiteado. El porqué entero, y por qué la carpeta se
228
+ * deriva de la de artefactos en vez de recibir su propio parámetro, está en
229
+ * `core/descargas.ts`.
230
+ *
231
+ * La misma pieza que `/skills/`, `/artefactos/` y `/adjuntos/`: otra raíz del
232
+ * `CompositeBackend`, con la barra final obligatoria y sin crear la carpeta al montar
233
+ * —`FilesystemBackend` no exige que su `rootDir` exista y el `write` la crea—. Aquí eso
234
+ * importa más que en las otras: la mayoría de las sesiones no descargan nada, y crearlas al
235
+ * montar dejaría dos carpetas vacías en cada una.
236
+ *
237
+ * **Y no se apunta nada de lo que se escriba, al contrario que `/artefactos/`.** Un
238
+ * artefacto es una salida para una persona y por eso se anuncia; esto es el andamio del
239
+ * agente —la salida cruda de una tool que él mismo va a volver a leer— y un evento por cada
240
+ * una sería ruido en la conversación sobre algo que nadie pidió.
241
+ */
242
+ export declare function backendConDescargas<T extends object>(backend: T, carpetaDeArtefactos: string): T;
243
+ /**
244
+ * Cuelga `/hotswap/` al lado de los artefactos de la sesión — o sea, FUERA del proyecto.
245
+ *
246
+ * Es donde el script `xone-hotswap` deja lo que saca del contexto: el árbol de controles de
247
+ * una pantalla, el log del aparato. El porqué entero —y la medida de los 10 volcados de los
248
+ * que 6 no volvió a abrir nadie— está en `core/hotswap.ts`.
249
+ *
250
+ * La misma pieza que `/skills/`, `/artefactos/`, `/adjuntos/` y las dos de descarga: otra
251
+ * raíz del `CompositeBackend`, con la barra final obligatoria y sin crear la carpeta al
252
+ * montar. Y **no se anuncia**, igual que las descargas y al contrario que los artefactos:
253
+ * ésa es exactamente la diferencia que esta carpeta existe para marcar.
254
+ *
255
+ * Que esté MONTADA es la otra mitad del arreglo, y no es opcional. El agente tenía la
256
+ * carpeta del disco en `$XONECODE_ARTEFACTOS` y ninguna ruta virtual con la que volver a
257
+ * abrir lo que el script le había guardado; en la traza se le ve probando tres rutas —la
258
+ * absoluta de la máquina incluida— antes de rendirse y leerlo por la shell. Con esto,
259
+ * `read_file("/hotswap/<nombre>")` funciona y el script puede NOMBRAR esa ruta en su salida.
260
+ *
261
+ * No necesita fila en `permisosDe`: los `deny` de ahí son de `write`, así que leer ya está
262
+ * permitido, y escribir cae bajo el `deny` general — que es lo correcto, porque quien escribe
263
+ * aquí es una shell, y una shell no pasa por los permisos.
264
+ */
265
+ export declare function backendConHotswap<T extends object>(backend: T, carpetaDeArtefactos: string): T;
266
+ /**
267
+ * Envuelve el backend del PROYECTO para que una descarga del agente no pueda aterrizar
268
+ * dentro.
269
+ *
270
+ * Con las dos raíces montadas esto no salta nunca —`CompositeBackend` enruta por prefijo de
271
+ * TEXTO, sin mirar si la carpeta destino existe (leído en deepagents 1.13.2)—, y ahí está el
272
+ * sentido: el día que el montaje falte, la escritura falla CERRADO en vez de acabar en la
273
+ * app del cliente. Es la misma lección que la fila incondicional de `/adjuntos/` en
274
+ * `permisosDe`, medida por el mismo camino.
275
+ *
276
+ * Y como `sinArtefactosEnElProyecto`: **solo `write` y `edit`** —leer o borrar una descarga
277
+ * mal puesta de antes tiene que seguir funcionando— y el rechazo se DEVUELVE como `{error}`,
278
+ * nunca se lanza. Leído en deepagents 1.13.2: los tools de fichero hacen
279
+ * `if (result.error) return result.error`, así que un error devuelto vuelve al modelo y una
280
+ * excepción se lleva el turno por delante. Aquí quien escribe es la librería y no una tool,
281
+ * y su hueco en el contexto ya sabe decir «no se pudo guardar»: lanzar reventaría el turno
282
+ * por una descarga que solo es andamio.
283
+ */
284
+ export declare function sinDescargasEnElProyecto<T extends object>(backend: T): T;
285
+ /**
286
+ * El backend con el que el agente ve el proyecto, compuesto entero.
287
+ *
288
+ * Vivía dentro de `construirAgente`, y eso dejaba sin probar justo la parte que decide si
289
+ * las reglas están puestas: los tests de este fichero comprobaban cada envoltorio por
290
+ * separado y `construirAgente` se simula en todos los suyos, así que **el cableado no lo
291
+ * miraba nadie**. Una regla que existe y no está montada es peor que no tenerla, porque
292
+ * hay un test en verde diciendo que sí.
293
+ *
294
+ * El orden es lo que hay que leer aquí:
295
+ * 1. La raíz confinada (`virtualMode`), con la memoria del proyecto expuesta por su ruta
296
+ * virtual.
297
+ * 2. Las dos reglas del PROYECTO: las vistas aplanadas no existen, y un artefacto no se
298
+ * puede escribir dentro.
299
+ * 3. `/skills/` colgada, de solo lectura por `permisosDe`.
300
+ * 4. Y `/artefactos/` colgada por FUERA, que es lo que hace que escribir ahí no pase por la
301
+ * guarda de (2) — son dos raíces distintas del mismo compuesto.
302
+ * 4b. Y las dos carpetas donde deepagents DESCARGA lo que no cabe en el contexto
303
+ * (`/large_tool_results/`, `/conversation_history/`), al lado de los artefactos. Sin
304
+ * ellas caían en el proyecto: medido, commiteadas dentro de la app del usuario.
305
+ * 5. Y `/adjuntos/`, según decida quien llama (ver `backendConAdjuntos`): la misma pieza, de
306
+ * solo lectura por `permisosDe`.
307
+ */
308
+ export declare function backendDeAgente(opciones: {
309
+ raiz: string;
310
+ ficheros: ReadonlySet<string>;
311
+ artefactos?: {
312
+ carpeta: string;
313
+ alEscribir: (artefacto: Artefacto) => void;
314
+ };
315
+ /**
316
+ * Presente solo para un subagente con `ejecucion: true` en su `.md`. Cambia la BASE de la
317
+ * cadena por una que ejecuta, y con eso deepagents le registra la tool `execute`. Ausente
318
+ * —que es todo el mundo menos uno— la cadena no es ejecutable y `permisosDe` sigue
319
+ * aplicándose, que es justo lo que la librería prohíbe combinar.
320
+ */
321
+ ejecucion?: {
322
+ entorno: Record<string, string>;
323
+ senal?: () => AbortSignal | undefined;
324
+ };
325
+ /**
326
+ * La carpeta de los adjuntos que se montan como `/adjuntos/`, si hay alguna: los de una
327
+ * TAREA o, desde IXCODE-7, los que una persona anexó en el CHAT de esta sesión — a este
328
+ * backend le da igual cuál (ver `backendConAdjuntos`). Ausente y `/adjuntos/` no se monta;
329
+ * entonces esa ruta no es nada, y la denegación incondicional de `permisosDe` evita que se
330
+ * convierta en un fichero del proyecto (medido: sin ella lo era).
331
+ */
332
+ adjuntos?: string;
333
+ /**
334
+ * Con qué se juzga el contenido antes de escribirlo. Entra por parámetro para poder mirar
335
+ * la guarda desde fuera sin un parser delante; en producción es `validarConXoneLinter()`.
336
+ */
337
+ validar?: ValidarContenido;
338
+ }): FilesystemBackend;
339
+ /**
340
+ * Anuncia lo que un COMANDO deja en la carpeta de artefactos.
341
+ *
342
+ * El evento `artefacto` —«hay un diagrama de 42 KB y se llama así», nunca el contenido— lo
343
+ * emite hoy el Proxy de `backendConArtefactos`, que envuelve `write` y `edit`. Una shell no
344
+ * llama a ninguna de las dos: escribe en el disco de verdad. Así que sin esto, una captura
345
+ * dejada por un script no sale en la pestaña Artefactos ni en el hilo, y el subagente tendría
346
+ * que decir «he dejado una captura» sin que nada lo respalde — que es la clase de afirmación
347
+ * que este harness no quiere.
348
+ *
349
+ * **Se compara una FOTO de antes con una de después** (ruta relativa → tamaño + mtime) en
350
+ * vez de fiarse de lo que el comando diga que hizo. Un comando puede escribir tres ficheros,
351
+ * o ninguno, o pisar el de antes; lo único que lo sabe es la carpeta.
352
+ *
353
+ * **Y la foto es RECURSIVA, porque un `unzip` deja un ÁRBOL y no un fichero.** Era
354
+ * `readdirSync` a secas más un `isFile()`, o sea que una carpeta se saltaba entera y con
355
+ * ella todo lo que llevara dentro. Medido sobre una sesión real: el zip de una maqueta se
356
+ * descomprimió en `/artefactos/stitch-restaurantes/stitch_screen_complex/` y salieron CERO
357
+ * anuncios — los tres ficheros estaban en el disco y no existían para nadie, sin pestaña
358
+ * Artefactos (solo existe si hay alguno) y sin tarjeta en el hilo. Es el mismo fallo que la
359
+ * carpeta sin crear, un escalón más adentro. No se baja por un ENLACE: `Dirent.isDirectory()`
360
+ * es falso para uno, y lo que cuelgue de él no es lo que esta sesión produjo.
361
+ *
362
+ * Lo que la recursión hace aparecer también se filtra, y las dos cribas son la misma idea:
363
+ * **no anunciar lo que acaba en una tarjeta muerta**. `esRutaDeArtefacto` es la barrera que
364
+ * el LECTOR aplica, así que un nombre que él rechazaría (`Diseño final.png`) pintaría una
365
+ * fila cuyo único final es un 403; y `esBasuraDeArtefacto` retira el `__MACOSX/._x.png` que
366
+ * un zip de Finder arrastra, que tiene la extensión del bueno y doscientos bytes dentro.
367
+ *
368
+ * **Y la carpeta se CREA aquí, antes de correr el comando.** Es la excepción a «no se crea
369
+ * al montar», y la pagó una captura: `$XONECODE_ARTEFACTOS` la crea `FilesystemBackend.write`
370
+ * la primera vez que el agente escribe un artefacto por una TOOL, y una shell no pasa por
371
+ * ahí — así que en una sesión que no había dibujado nada, el `writeFileSync` del script de
372
+ * captura reventaba con ENOENT (reproducido) y el modelo se replegaba a dejar el `.png` en
373
+ * la raíz del proyecto, que es justo lo que la regla existe para impedir. El sitio es este y
374
+ * no el script: quien SABE que va a correr una shell y DÓNDE está la carpeta es el harness,
375
+ * y arreglarlo en el script lo dejaría arreglado en uno de cinco —y en ninguna skill del
376
+ * usuario—, que es el patrón de fallo de siempre. Se crea solo cuando hay ejecución, así que
377
+ * una sesión de los otros cuatro especialistas sigue sin carpeta vacía.
378
+ */
379
+ /**
380
+ * La FOTO recursiva de la carpeta de artefactos: ruta relativa → `tamaño:mtime`. La comparación de
381
+ * dos fotos es lo que anuncia lo que dejó un comando (`anunciarArtefactosDeLaShell`, y el hijo de
382
+ * Claude Code con ejecución). No baja por enlaces.
383
+ */
384
+ export declare function fotoDeArtefactos(carpeta: string): Map<string, string>;
385
+ /** Lo que cambió entre dos fotos, como artefactos que se pueden anunciar (sin lo que el lector rechazaría ni la basura de un zip). */
386
+ export declare function artefactosNuevos(antes: Map<string, string>, despues: Map<string, string>): Artefacto[];
387
+ export declare function anunciarArtefactosDeLaShell<T extends object>(backend: T, carpeta: string, alEscribir: (artefacto: Artefacto) => void): T;
388
+ /**
389
+ * Expone la memoria del proyecto sin abrir la carpeta interna `.xonecode`.
390
+ *
391
+ * Los permisos siguen denegando esa carpeta completa (puede contener configuración), pero
392
+ * esta única ruta virtual permite al agente conservar decisiones aprobadas entre sesiones.
393
+ */
394
+ export declare function exponerMemoriaDeProyecto<T extends object>(backend: T): T;
395
+ /**
396
+ * El motivo con el que se rechaza escribir un artefacto en el proyecto.
397
+ *
398
+ * Mismo criterio que `porQueNo`: rechazar y EXPLICAR. Un error seco haría que el modelo
399
+ * probara otra ruta —o que diera el trabajo por hecho—; diciéndole la ruta buena, corrige a
400
+ * la primera. Y nombra las tres consecuencias porque son el porqué: sin ellas, «usa otra
401
+ * carpeta» se lee como una preferencia de estilo.
402
+ */
403
+ export declare const porQueNoAhi: (ruta: string, destino: string) => string;
404
+ /**
405
+ * Envuelve el backend del proyecto para que un artefacto NO se pueda escribir dentro.
406
+ *
407
+ * **Por qué es código y no una frase más en el prompt.** La carpeta buena ya la nombran los
408
+ * cuatro sitios que el modelo puede leer, y aun así, medido el 2026-09-07 en dos
409
+ * delegaciones consecutivas del mismo proyecto: la primera escribió
410
+ * `/artifacts/login_flow.html` —la raíz— y la segunda `/artefactos/diagrama.html`. Con la
411
+ * instrucción puesta en los cuatro sitios, añadir un quinto no cambia nada; lo que cambia es
412
+ * que la regla deje de depender de que el modelo la recuerde. Es exactamente el argumento de
413
+ * `sinVistasAplanadas`, y también el de los avisos de honestidad: en este repo lo que tiene
414
+ * que cumplirse es código.
415
+ *
416
+ * Va sobre el backend del PROYECTO, por dentro del compuesto, así que una escritura en
417
+ * `/artefactos/` —que es otra raíz montada— no pasa por aquí y no se ve afectada.
418
+ *
419
+ * **Solo `write` y `edit`.** Leer un artefacto mal puesto de una sesión anterior tiene que
420
+ * seguir funcionando: si no, el agente no podría ni mirar lo que hay que mover. Y borrarlo
421
+ * tampoco se toca — quitar de la app del cliente un diagrama que no debería estar ahí es
422
+ * justo lo que se quiere poder hacer.
423
+ */
424
+ export declare function sinArtefactosEnElProyecto<T extends object>(backend: T): T;
425
+ /** ¿Es `ruta` una vista aplanada, teniendo a la vista el conjunto de ficheros del proyecto? */
426
+ export declare function esVistaAplanada(ruta: string, todas: ReadonlySet<string>): boolean;
427
+ /**
428
+ * El mensaje con el que se rechaza tocar una vista aplanada.
429
+ *
430
+ * **Rechazar y explicar, no fallar en seco.** Un «fichero no encontrado» hace que el modelo
431
+ * pruebe otra ruta, o peor, que dé por hecho que el cambio no hacía falta. Diciéndole dónde
432
+ * está la fuente puede corregir — pero solo si el mensaje LLEGA, y para eso hay que
433
+ * devolverlo como `{error}` y no lanzarlo (ver `sinVistasAplanadas`).
434
+ */
435
+ export declare const porQueNo: (ruta: string) => string;
436
+ /**
437
+ * Envuelve un backend para que las vistas aplanadas no existan para el agente.
438
+ *
439
+ * **Por qué no basta con decirlo en el prompt.** La regla ya vivía ahí en el harness
440
+ * anterior, solo en el del ejecutor, y falló por donde tenía que fallar: *un permiso solo
441
+ * protege a quien lo choca*. El planner planificaba sobre el `.xml` y el juez exigía el
442
+ * cambio ahí — ninguno de los dos podía conocer una regla que vivía en otro prompt.
443
+ * Retirarlas del backend la convierte en una propiedad del PROYECTO, no de un prompt.
444
+ *
445
+ * **Se ocultan, no se borran.** El disco es del usuario. (El harness con MCP sí las
446
+ * borraba de su copia, pero aquella copia era suya y se tiraba al final.)
447
+ *
448
+ * `app.xml` no tiene hermano `.xne`, así que el propio predicado lo conserva: es fuente.
449
+ */
450
+ export declare function sinVistasAplanadas<T extends object>(backend: T, todas: ReadonlySet<string>): T;
@@ -0,0 +1,181 @@
1
+ import { type LecturaDeSkills, type OrigenDeSkill, type Skill } from "../../core/skills.js";
2
+ import type { SkillInfo, SkillsPort } from "../../core/ports.js";
3
+ /**
4
+ * Las skills en disco: una carpeta por skill, con su `SKILL.md` dentro.
5
+ *
6
+ * **Tres raíces, no una.** El porqué de cada una y su precedencia están en
7
+ * `core/skills.ts`; aquí vive solo dónde caen:
8
+ *
9
+ * - **De serie**: `<raíz del paquete>/skills/`. La raíz se BUSCA hacia arriba
10
+ * (`agent/raizDelPaquete.ts`) en vez de contarse con `..`: contarlos ataba este fichero a
11
+ * su profundidad, y moverlo de carpeta dejaba el catálogo vacío sin un error que leer. Se
12
+ * resuelve contra ESTE módulo y no contra el cwd, que en la v1 es el proyecto del cliente.
13
+ * - **Global**: `~/.xonecode/skills/`.
14
+ * - **Del proyecto**: `<raiz>/.xonecode/skills/`.
15
+ *
16
+ * Las dos del usuario heredan de `.xonecode/` las dos protecciones que aquí importan: está
17
+ * denegada entera al agente (`permisosDe`) y **no sube nunca** a CloudStudio. Una skill es
18
+ * configuración de la herramienta, no del proyecto XOne.
19
+ *
20
+ * Y el agente NO las lee por esa ruta: las ve montadas en `/skills/<nombre>/`
21
+ * (`proyecto.ts#backendConSkills`), que es de solo lectura para él.
22
+ */
23
+ export declare const RAIZ_SKILLS: string;
24
+ /** La carpeta de skills de una raíz cualquiera. */
25
+ export declare function rutaDeSkills(base: string): string;
26
+ /** La global. `homedir()` en el momento de la llamada, como el resto del repo: cachearla en
27
+ * una constante de módulo la congelaría para los tests que la cambian. */
28
+ export declare function rutaGlobalDeSkills(): string;
29
+ /** Estimación de coste. Se reexporta con el nombre viejo: lo usan los evals. */
30
+ export declare const tokensDe: (texto: string) => number;
31
+ /**
32
+ * Lee una carpeta de skills.
33
+ *
34
+ * Una que no se puede leer o que no valida NO tumba la carga: se salta, se apunta el motivo
35
+ * y las demás siguen — la misma postura que `leerCarpetaDeAgentes` con un `.md` a medio
36
+ * escribir, y la que evita que una skill rota deje la consola sin ninguna.
37
+ *
38
+ * Y el nombre NO se valida aquí: rechazar al leer haría desaparecer una skill que funciona.
39
+ * Se valida al GUARDAR, que es el único momento con alguien delante para arreglarlo — la
40
+ * misma regla, y por el mismo motivo, que la del nombre de un subagente.
41
+ */
42
+ export declare function leerCarpetaDeSkills(carpeta: string, origen: OrigenDeSkill): LecturaDeSkills;
43
+ /**
44
+ * Todas las skills en vigor, fundidas por nombre con el proyecto ganando.
45
+ *
46
+ * `raiz` ausente = no hay proyecto abierto, y entonces las del proyecto no existen. Es un
47
+ * caso normal —el vestíbulo— y no un hueco: `ausente ≠ vacío` no aplica aquí porque lo que
48
+ * falta es la CARPETA, no el dato.
49
+ */
50
+ export declare function cargarSkills(raiz?: string): LecturaDeSkills;
51
+ /** Dónde vive cada skill en el disco, para montarla. Solo las del USUARIO: las de serie ya
52
+ * las cubre la raíz `/skills/` entera. */
53
+ export interface Montaje {
54
+ nombre: string;
55
+ dir: string;
56
+ }
57
+ /**
58
+ * Las carpetas de las skills del USUARIO, para que `backendConSkills` las cuelgue una a una.
59
+ *
60
+ * Una a una y no una raíz más porque son DOS carpetas (la global y la del proyecto) que
61
+ * tienen que verse como UNA sola ruta virtual, `/skills/`: el subagente declara `skills:
62
+ * [mi-skill]` y eso se traduce a `/skills/mi-skill/` sin saber de dónde salió. Y porque el
63
+ * proyecto gana sobre el global, que es lo que `cargarSkills` ya decidió — aquí solo se
64
+ * respeta el resultado.
65
+ */
66
+ export declare function skillsMontables(raiz?: string): Montaje[];
67
+ /**
68
+ * Las CARPETAS que contienen skills, para un motor EXTERNO que descubre por directorio.
69
+ *
70
+ * **Por qué existe, y por qué no vale `skillsMontables`.** Aquélla devuelve una entrada por
71
+ * SKILL, que es lo que necesita nuestro `CompositeBackend` para colgar cada una de
72
+ * `/skills/<nombre>/`. Un motor externo no ve esa ruta virtual —corre en otro proceso y lee
73
+ * el disco— y descubre por CARPETA CONTENEDORA: opencode con `skills.paths` de su
74
+ * configuración, Claude Code con `additionalDirectories`. Son dos preguntas distintas y
75
+ * confundirlas da una lista de rutas que el motor descarta en silencio.
76
+ *
77
+ * **Solo las que EXISTEN.** Una ruta que no está es una entrada de configuración que el motor
78
+ * tiene que descartar por su cuenta, y cómo la descarte no lo decidimos nosotros — puede ser
79
+ * un aviso, puede ser un fallo de arranque. La carpeta global está vacía en una máquina que
80
+ * nunca guardó una skill propia, así que este caso es el normal y no el raro.
81
+ *
82
+ * **Y no se pasa por el proyecto abierto sin más**: la del proyecto cuelga de su `.xonecode/`,
83
+ * que es carpeta DENEGADA para los motores externos por todas las demás vías. Entra aquí
84
+ * porque el motor la carga ÉL al arrancar, no por una tool, que es la misma distinción que
85
+ * hace que `/skills/` sea de solo lectura para el agente interno.
86
+ *
87
+ * El orden es el de la precedencia de `cargarSkills` —serie, global, proyecto— para que un
88
+ * motor que resuelva un nombre repetido quedándose con el último coincida con lo que ve el
89
+ * agente interno.
90
+ */
91
+ export declare function carpetasDeSkillsParaElMotor(opciones?: {
92
+ casa?: string;
93
+ raiz?: string;
94
+ }): string[];
95
+ /**
96
+ * TODAS las skills con su carpeta REAL, las de serie incluidas, con la precedencia de siempre.
97
+ *
98
+ * No es lo mismo que `skillsMontables`, y confundirlas costó un turno entero: aquélla contesta
99
+ * «qué carpetas hay que colgar de `/skills/` UNA A UNA», y las de serie no están ahí porque su
100
+ * raíz se cuelga ENTERA en `backendConSkills`. Para el backend da igual; para quien necesita la
101
+ * ruta de verdad de una skill —una shell, que no ve rutas virtuales— significaba que las nueve
102
+ * de serie no existían. Medido: el agente recibió un PATH sin sus scripts, probó el nombre a
103
+ * secas, falló, y acabó haciendo `find /` por el disco entero.
104
+ *
105
+ * El orden es el de la precedencia (`cargarSkills`): serie, luego global, luego proyecto, y el
106
+ * último gana. Una skill del proyecto que se llame igual que una de serie tapa a la de serie
107
+ * también aquí, que es lo que el agente ve por `/skills/`.
108
+ */
109
+ export declare function skillsConRuta(raiz?: string): Montaje[];
110
+ /**
111
+ * Escribe una skill del usuario. Devuelve el motivo si NO se escribió, nunca lanza.
112
+ *
113
+ * Tres negativas, y ninguna es de forma:
114
+ *
115
+ * - **Una de serie no se edita**: vive dentro del paquete instalado, así que el siguiente
116
+ * `npm install` se llevaría el cambio sin decir nada. La consola ofrece copiarla.
117
+ * - **Un destino que existe es un NO**, venga de donde venga —de serie, global o del
118
+ * proyecto—: es el motivo honesto y cubre los tres. Sin esto, crear una skill llamada
119
+ * como una nuestra la tapaba en silencio, que es el agujero que el alta de subagentes ya
120
+ * pagó.
121
+ * - **Y renombrar es `renameSync` y LUEGO escribir**, nunca escribir y luego borrar: un
122
+ * fallo entre los dos pasos deja UNA carpeta y no dos con las mismas instrucciones.
123
+ */
124
+ export declare function guardarSkill(base: string, skill: Skill, renombrandoDe?: string): {
125
+ ok: true;
126
+ } | {
127
+ error: string;
128
+ };
129
+ /** Borra una skill del usuario. `false` = no estaba. Una de serie no llega aquí: la corta
130
+ * el servidor, que es donde vive la guarda — esconder el icono es presentación. */
131
+ export declare function borrarSkill(base: string, nombre: string): boolean;
132
+ /** ¿La trae xonecode? Se pregunta al DISCO y no a una lista escrita a mano: la lista sería
133
+ * un segundo sitio que mantener, y el día que divergiera nadie se enteraría. */
134
+ export declare function esDeSerie(nombre: string): boolean;
135
+ /**
136
+ * El catálogo que ve el AGENTE: las tres raíces, fundidas.
137
+ *
138
+ * **No cachea.** La versión anterior sí lo hacía —eran seis ficheros del paquete que no
139
+ * cambian a mitad de turno— y con las del usuario dentro eso dejó de ser cierto: se guarda
140
+ * una skill desde Ajustes con la consola abierta, y una lista congelada dentro de este objeto
141
+ * la dejaría fuera incluso de la siguiente construcción. Es la misma postura que `cargarAgentes`.
142
+ *
143
+ * **Lo que esto NO arregla**: construir el agente ocurre al abrir la sesión y en `/modelo`
144
+ * (`turnoReal.ts#construir`), no en cada turno, así que la skill nueva sigue sin alcanzar a la
145
+ * sesión que ya está abierta. Quitar la caché es condición necesaria y no suficiente; el
146
+ * agujero es heredado y está anotado en CLAUDE.md.
147
+ *
148
+ * `raiz` ausente = sin proyecto: solo las de serie y las globales.
149
+ */
150
+ export declare class SkillsEnDisco implements SkillsPort {
151
+ private readonly raiz?;
152
+ constructor(raiz?: string | undefined);
153
+ catalogo(): SkillInfo[];
154
+ cargar(nombre: string): string;
155
+ }
156
+ /**
157
+ * Instala una skill desde un `.zip`. Devuelve el motivo si no se instaló, nunca lanza.
158
+ *
159
+ * El reparto: **la REGLA de qué se acepta vive en `core/zipDeSkill.ts`** —pura y probada sin
160
+ * un fichero delante— y aquí solo está lo que toca el disco. Es el mismo reparto que
161
+ * `core/agentes.ts` con `agentesEnDisco.ts`, y por lo mismo: la parte que decide si una ruta
162
+ * del zip puede escribirse es justo la que no puede depender de tener un zip a mano.
163
+ *
164
+ * Tres cosas que no son de forma:
165
+ *
166
+ * - **Se descomprime ENTERO en memoria y se comprueba ANTES de escribir nada.** Escribir
167
+ * según se descomprime dejaría media skill en disco cuando la entrada 40 resulta ser un
168
+ * `../`: un fallo a medias es peor que un no.
169
+ * - **El destino se comprueba con las MISMAS dos reglas que `guardarSkill`** —un nombre de
170
+ * serie es un NO, un destino que existe es un NO—, porque instalar es otra forma de dar de
171
+ * alta y un segundo sitio donde decidir eso es donde uno de los dos se queda sin la regla.
172
+ * - **Y cada ruta se vuelve a mirar al escribir**, aunque el plan ya la haya aceptado: es la
173
+ * disciplina de `escrituraExterna.ts` —las guardas se REAPLICAN, no se asumen— y aquí
174
+ * cuesta una llamada.
175
+ */
176
+ export declare function instalarSkillDesdeZip(base: string, zip: Uint8Array, nombreDelFichero: string): {
177
+ ok: true;
178
+ nombre: string;
179
+ } | {
180
+ error: string;
181
+ };