xonecode 0.5.1 → 0.8.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 (315) hide show
  1. package/apps/web/dist/assets/{index-BB3SamhR.css → index-Boak51UP.css} +1 -1
  2. package/apps/web/dist/assets/index-Cg28x6nG.js +477 -0
  3. package/apps/web/dist/assets/{php-D_2--9WK.js → php-Cu6F_QCJ.js} +1 -1
  4. package/apps/web/dist/assets/{ruby-DSHSDbk1.js → ruby-BiqQPoC6.js} +1 -1
  5. package/apps/web/dist/index.html +2 -2
  6. package/dist/agent/{cloudstudioClient.js → cloudstudio/cloudstudioClient.js} +10 -0
  7. package/dist/agent/cloudstudio/cloudstudioClient.js.map +1 -0
  8. package/dist/agent/{cloudstudioMcp.js → cloudstudio/cloudstudioMcp.js} +5 -5
  9. package/dist/agent/cloudstudio/cloudstudioMcp.js.map +1 -0
  10. package/dist/agent/{descarga.js → cloudstudio/descarga.js} +17 -7
  11. package/dist/agent/cloudstudio/descarga.js.map +1 -0
  12. package/dist/agent/cloudstudio/manifiesto.js.map +1 -0
  13. package/dist/agent/cloudstudio/ramaActiva.js +11 -0
  14. package/dist/agent/cloudstudio/ramaActiva.js.map +1 -0
  15. package/dist/agent/{subida.js → cloudstudio/subida.js} +16 -7
  16. package/dist/agent/cloudstudio/subida.js.map +1 -0
  17. package/dist/agent/{zip.js → cloudstudio/zip.js} +1 -1
  18. package/dist/agent/cloudstudio/zip.js.map +1 -0
  19. package/dist/agent/{authEnDisco.js → config/authEnDisco.js} +3 -3
  20. package/dist/agent/config/authEnDisco.js.map +1 -0
  21. package/dist/agent/{catalogoModelos.js → config/catalogoModelos.js} +47 -1
  22. package/dist/agent/config/catalogoModelos.js.map +1 -0
  23. package/dist/agent/{configEnDisco.js → config/configEnDisco.js} +6 -6
  24. package/dist/agent/config/configEnDisco.js.map +1 -0
  25. package/dist/agent/{crearProyecto.js → config/crearProyecto.js} +2 -2
  26. package/dist/agent/config/crearProyecto.js.map +1 -0
  27. package/dist/agent/config/entorno.js.map +1 -0
  28. package/dist/agent/config/gemini.js.map +1 -0
  29. package/dist/agent/config/modelos.js +235 -0
  30. package/dist/agent/config/modelos.js.map +1 -0
  31. package/dist/agent/{modelosDeMotor.js → config/modelosDeMotor.js} +1 -1
  32. package/dist/agent/config/modelosDeMotor.js.map +1 -0
  33. package/dist/agent/config/mudanzaEnDisco.js +121 -0
  34. package/dist/agent/config/mudanzaEnDisco.js.map +1 -0
  35. package/dist/agent/{persona.js → config/persona.js} +1 -1
  36. package/dist/agent/config/persona.js.map +1 -0
  37. package/dist/agent/config/selectorEnMaquina.js +45 -0
  38. package/dist/agent/config/selectorEnMaquina.js.map +1 -0
  39. package/dist/agent/{settingsEnDisco.js → config/settingsEnDisco.js} +37 -2
  40. package/dist/agent/config/settingsEnDisco.js.map +1 -0
  41. package/dist/agent/{versionEnDisco.js → config/versionEnDisco.js} +8 -4
  42. package/dist/agent/config/versionEnDisco.js.map +1 -0
  43. package/dist/agent/dispositivos/arranqueDeEmulador.js +146 -0
  44. package/dist/agent/dispositivos/arranqueDeEmulador.js.map +1 -0
  45. package/dist/agent/{dispositivosEnMaquina.js → dispositivos/dispositivosEnMaquina.js} +93 -6
  46. package/dist/agent/dispositivos/dispositivosEnMaquina.js.map +1 -0
  47. package/dist/agent/dispositivos/hotswap.js.map +1 -0
  48. package/dist/agent/dispositivos/instalacionEnMaquina.js.map +1 -0
  49. package/dist/agent/dispositivos/juezVisual.js +152 -0
  50. package/dist/agent/dispositivos/juezVisual.js.map +1 -0
  51. package/dist/agent/{lanzamientoEnMaquina.js → dispositivos/lanzamientoEnMaquina.js} +1 -1
  52. package/dist/agent/dispositivos/lanzamientoEnMaquina.js.map +1 -0
  53. package/dist/agent/{paqueteDelProyecto.js → dispositivos/paqueteDelProyecto.js} +5 -5
  54. package/dist/agent/dispositivos/paqueteDelProyecto.js.map +1 -0
  55. package/dist/agent/dispositivos/procesosEnMaquina.js.map +1 -0
  56. package/dist/agent/dispositivos/sensorDeArranque.js +154 -0
  57. package/dist/agent/dispositivos/sensorDeArranque.js.map +1 -0
  58. package/dist/agent/exportarPdf.js +140 -0
  59. package/dist/agent/exportarPdf.js.map +1 -0
  60. package/dist/agent/{arbolDeProyecto.js → grafo/arbolDeProyecto.js} +2 -2
  61. package/dist/agent/grafo/arbolDeProyecto.js.map +1 -0
  62. package/dist/agent/{artefactosEnDisco.js → grafo/artefactosEnDisco.js} +2 -2
  63. package/dist/agent/grafo/artefactosEnDisco.js.map +1 -0
  64. package/dist/agent/{busquedaRegex.js → grafo/busquedaRegex.js} +41 -1
  65. package/dist/agent/grafo/busquedaRegex.js.map +1 -0
  66. package/dist/agent/grafo/criticaVisual.js +115 -0
  67. package/dist/agent/grafo/criticaVisual.js.map +1 -0
  68. package/dist/agent/grafo/excluirTools.js +82 -0
  69. package/dist/agent/grafo/excluirTools.js.map +1 -0
  70. package/dist/agent/{memoriaDeProyecto.js → grafo/memoriaDeProyecto.js} +1 -1
  71. package/dist/agent/grafo/memoriaDeProyecto.js.map +1 -0
  72. package/dist/agent/grafo/navegacionXone.js +231 -0
  73. package/dist/agent/grafo/navegacionXone.js.map +1 -0
  74. package/dist/agent/{perfiles.js → grafo/perfiles.js} +96 -10
  75. package/dist/agent/grafo/perfiles.js.map +1 -0
  76. package/dist/agent/{proyecto.js → grafo/proyecto.js} +274 -24
  77. package/dist/agent/grafo/proyecto.js.map +1 -0
  78. package/dist/agent/grafo/skills.js +425 -0
  79. package/dist/agent/grafo/skills.js.map +1 -0
  80. package/dist/agent/grafo/xoneAgent.js +566 -0
  81. package/dist/agent/grafo/xoneAgent.js.map +1 -0
  82. package/dist/agent/navegacion/estilosEnDisco.js +110 -0
  83. package/dist/agent/navegacion/estilosEnDisco.js.map +1 -0
  84. package/dist/agent/navegacion/hechosEnDisco.js +26 -0
  85. package/dist/agent/navegacion/hechosEnDisco.js.map +1 -0
  86. package/dist/agent/navegacion/indiceEnDisco.js +36 -0
  87. package/dist/agent/navegacion/indiceEnDisco.js.map +1 -0
  88. package/dist/agent/navegacion/modeloDeProyecto.js +228 -0
  89. package/dist/agent/navegacion/modeloDeProyecto.js.map +1 -0
  90. package/dist/agent/raizDelPaquete.js +56 -0
  91. package/dist/agent/raizDelPaquete.js.map +1 -0
  92. package/dist/agent/{checkpointer.js → sesiones/checkpointer.js} +1 -1
  93. package/dist/agent/sesiones/checkpointer.js.map +1 -0
  94. package/dist/agent/sesiones/git.js.map +1 -0
  95. package/dist/agent/{gitSync.js → sesiones/gitSync.js} +3 -3
  96. package/dist/agent/sesiones/gitSync.js.map +1 -0
  97. package/dist/agent/{sesionGit.js → sesiones/sesionGit.js} +2 -2
  98. package/dist/agent/sesiones/sesionGit.js.map +1 -0
  99. package/dist/agent/subagentes/agentesEnDisco.js +818 -0
  100. package/dist/agent/subagentes/agentesEnDisco.js.map +1 -0
  101. package/dist/agent/subagentes/consumoExterno.js.map +1 -0
  102. package/dist/agent/subagentes/escrituraDeCodex.js.map +1 -0
  103. package/dist/agent/{escrituraDeOpencode.js → subagentes/escrituraDeOpencode.js} +1 -1
  104. package/dist/agent/subagentes/escrituraDeOpencode.js.map +1 -0
  105. package/dist/agent/{escrituraExterna.js → subagentes/escrituraExterna.js} +59 -6
  106. package/dist/agent/subagentes/escrituraExterna.js.map +1 -0
  107. package/dist/agent/subagentes/pluginDeSkills.js +99 -0
  108. package/dist/agent/subagentes/pluginDeSkills.js.map +1 -0
  109. package/dist/agent/subagentes/subagenteCodex.js.map +1 -0
  110. package/dist/agent/{subagenteExterno.js → subagentes/subagenteExterno.js} +48 -0
  111. package/dist/agent/subagentes/subagenteExterno.js.map +1 -0
  112. package/dist/agent/{subagenteOpencode.js → subagentes/subagenteOpencode.js} +53 -1
  113. package/dist/agent/subagentes/subagenteOpencode.js.map +1 -0
  114. package/dist/agent/{aumentador.js → tareas/aumentador.js} +2 -2
  115. package/dist/agent/tareas/aumentador.js.map +1 -0
  116. package/dist/agent/{juezDeTarea.js → tareas/juezDeTarea.js} +6 -6
  117. package/dist/agent/tareas/juezDeTarea.js.map +1 -0
  118. package/dist/agent/{tareasEnDisco.js → tareas/tareasEnDisco.js} +53 -4
  119. package/dist/agent/tareas/tareasEnDisco.js.map +1 -0
  120. package/dist/agent/{diagnosticoDeTools.js → turno/diagnosticoDeTools.js} +5 -1
  121. package/dist/agent/turno/diagnosticoDeTools.js.map +1 -0
  122. package/dist/agent/{guionizado.js → turno/guionizado.js} +1 -1
  123. package/dist/agent/turno/guionizado.js.map +1 -0
  124. package/dist/agent/turno/informeDeTraza.js +245 -0
  125. package/dist/agent/turno/informeDeTraza.js.map +1 -0
  126. package/dist/agent/turno/inspectorDePrompt.js +205 -0
  127. package/dist/agent/turno/inspectorDePrompt.js.map +1 -0
  128. package/dist/agent/{instantanea.js → turno/instantanea.js} +7 -2
  129. package/dist/agent/turno/instantanea.js.map +1 -0
  130. package/dist/agent/{interrupts.js → turno/interrupts.js} +2 -2
  131. package/dist/agent/turno/interrupts.js.map +1 -0
  132. package/dist/agent/turno/mensajes.js.map +1 -0
  133. package/dist/agent/turno/normalizar.js.map +1 -0
  134. package/dist/agent/{puente.js → turno/puente.js} +71 -4
  135. package/dist/agent/turno/puente.js.map +1 -0
  136. package/dist/agent/turno/resumenDeContexto.js +260 -0
  137. package/dist/agent/turno/resumenDeContexto.js.map +1 -0
  138. package/dist/agent/{resumenDeTool.js → turno/resumenDeTool.js} +33 -0
  139. package/dist/agent/turno/resumenDeTool.js.map +1 -0
  140. package/dist/agent/turno/rubrica.js +91 -0
  141. package/dist/agent/turno/rubrica.js.map +1 -0
  142. package/dist/agent/turno/textoDeTool.js.map +1 -0
  143. package/dist/agent/{turnoReal.js → turno/turnoReal.js} +210 -25
  144. package/dist/agent/turno/turnoReal.js.map +1 -0
  145. package/dist/agent/turno/verificador.js.map +1 -0
  146. package/dist/cli/config.js +1 -1
  147. package/dist/cli/config.js.map +1 -1
  148. package/dist/cli/consola.js +72 -9
  149. package/dist/cli/consola.js.map +1 -1
  150. package/dist/cli/describe.js +2 -2
  151. package/dist/cli/describe.js.map +1 -1
  152. package/dist/cli/doctor.js +1 -1
  153. package/dist/cli/doctor.js.map +1 -1
  154. package/dist/cli/fuentesDeDisco.js +29 -0
  155. package/dist/cli/fuentesDeDisco.js.map +1 -0
  156. package/dist/cli/main.js +87 -31
  157. package/dist/cli/main.js.map +1 -1
  158. package/dist/cli/run.js +40 -10
  159. package/dist/cli/run.js.map +1 -1
  160. package/dist/cli/traza.js +48 -0
  161. package/dist/cli/traza.js.map +1 -0
  162. package/dist/cli/tui/correrTui.js +4 -4
  163. package/dist/cli/tui/correrTui.js.map +1 -1
  164. package/dist/cli/verify.js +1 -1
  165. package/dist/cli/verify.js.map +1 -1
  166. package/dist/core/actos.js +1 -1
  167. package/dist/core/adjuntos.js +2 -2
  168. package/dist/core/agentes.js +247 -7
  169. package/dist/core/agentes.js.map +1 -1
  170. package/dist/core/artefactos.js +4 -4
  171. package/dist/core/config.js +1 -1
  172. package/dist/core/contextos.js +12 -1
  173. package/dist/core/contextos.js.map +1 -1
  174. package/dist/core/descargas.js +1 -1
  175. package/dist/core/dispositivos.js +53 -3
  176. package/dist/core/dispositivos.js.map +1 -1
  177. package/dist/core/esfuerzo.js +141 -0
  178. package/dist/core/esfuerzo.js.map +1 -0
  179. package/dist/core/esqueleto.js +1 -1
  180. package/dist/core/estilos.js +78 -0
  181. package/dist/core/estilos.js.map +1 -0
  182. package/dist/core/exportacion.js +140 -0
  183. package/dist/core/exportacion.js.map +1 -0
  184. package/dist/core/hechosDelProyecto.js +87 -0
  185. package/dist/core/hechosDelProyecto.js.map +1 -0
  186. package/dist/core/logDeDispositivo.js +143 -0
  187. package/dist/core/logDeDispositivo.js.map +1 -0
  188. package/dist/core/modelos.js +48 -3
  189. package/dist/core/modelos.js.map +1 -1
  190. package/dist/core/mudanzaDeWorkspace.js +93 -0
  191. package/dist/core/mudanzaDeWorkspace.js.map +1 -0
  192. package/dist/core/navegacion.js +134 -0
  193. package/dist/core/navegacion.js.map +1 -0
  194. package/dist/core/notify.js +5 -0
  195. package/dist/core/notify.js.map +1 -1
  196. package/dist/core/planDeSubida.js +1 -1
  197. package/dist/core/planes.js +70 -0
  198. package/dist/core/planes.js.map +1 -0
  199. package/dist/core/ports.js +4 -0
  200. package/dist/core/ports.js.map +1 -1
  201. package/dist/core/rubrica.js +90 -0
  202. package/dist/core/rubrica.js.map +1 -0
  203. package/dist/core/selectorDeCarpeta.js +87 -0
  204. package/dist/core/selectorDeCarpeta.js.map +1 -0
  205. package/dist/core/settings.js +56 -7
  206. package/dist/core/settings.js.map +1 -1
  207. package/dist/core/shellDeAgente.js +144 -0
  208. package/dist/core/shellDeAgente.js.map +1 -0
  209. package/dist/core/skills.js +158 -0
  210. package/dist/core/skills.js.map +1 -0
  211. package/dist/core/topeAgotado.js +69 -0
  212. package/dist/core/topeAgotado.js.map +1 -0
  213. package/dist/core/zipDeSkill.js +107 -0
  214. package/dist/core/zipDeSkill.js.map +1 -0
  215. package/dist/web/servidor/arranque.js +853 -54
  216. package/dist/web/servidor/arranque.js.map +1 -1
  217. package/dist/web/servidor/corredorDeTareas.js +3 -3
  218. package/dist/web/servidor/corredorDeTareas.js.map +1 -1
  219. package/dist/web/servidor/sesiones.js +34 -6
  220. package/dist/web/servidor/sesiones.js.map +1 -1
  221. package/dist/web/servidor/transporte.js +1 -1
  222. package/dist/web/servidor/transporte.js.map +1 -1
  223. package/dist/web/servidor/vestibulo.js +62 -13
  224. package/dist/web/servidor/vestibulo.js.map +1 -1
  225. package/package.json +7 -4
  226. package/skills/archify/SKILL.md +25 -2
  227. package/skills/artifacts-builder/SKILL.md +23 -0
  228. package/skills/xone-hotswap/SKILL.md +96 -0
  229. package/skills/xone-hotswap/scripts/xone-arrancar-android +202 -0
  230. package/skills/xone-hotswap/scripts/xone-arrancar-ios +85 -0
  231. package/skills/xone-hotswap/scripts/xone-captura-android +93 -0
  232. package/skills/xone-hotswap/scripts/xone-desplegar-android +439 -0
  233. package/skills/xone-hotswap/scripts/xone-hotswap +201 -0
  234. package/skills/xone-hotswap/scripts/xone-log-android +102 -0
  235. package/skills/xone-hotswap/scripts/xone-reiniciar-android +132 -0
  236. package/skills/xone-plan-builder/SKILL.md +22 -4
  237. package/skills/xone-spec-builder/SKILL.md +37 -7
  238. package/apps/web/dist/assets/index-CFYAoHdw.js +0 -477
  239. package/dist/agent/agentesEnDisco.js +0 -539
  240. package/dist/agent/agentesEnDisco.js.map +0 -1
  241. package/dist/agent/arbolDeProyecto.js.map +0 -1
  242. package/dist/agent/artefactosEnDisco.js.map +0 -1
  243. package/dist/agent/aumentador.js.map +0 -1
  244. package/dist/agent/authEnDisco.js.map +0 -1
  245. package/dist/agent/busquedaRegex.js.map +0 -1
  246. package/dist/agent/catalogoModelos.js.map +0 -1
  247. package/dist/agent/checkpointer.js.map +0 -1
  248. package/dist/agent/cloudstudioClient.js.map +0 -1
  249. package/dist/agent/cloudstudioMcp.js.map +0 -1
  250. package/dist/agent/configEnDisco.js.map +0 -1
  251. package/dist/agent/consumoExterno.js.map +0 -1
  252. package/dist/agent/crearProyecto.js.map +0 -1
  253. package/dist/agent/descarga.js.map +0 -1
  254. package/dist/agent/diagnosticoDeTools.js.map +0 -1
  255. package/dist/agent/dispositivosEnMaquina.js.map +0 -1
  256. package/dist/agent/entorno.js.map +0 -1
  257. package/dist/agent/escrituraDeCodex.js.map +0 -1
  258. package/dist/agent/escrituraDeOpencode.js.map +0 -1
  259. package/dist/agent/escrituraExterna.js.map +0 -1
  260. package/dist/agent/gemini.js.map +0 -1
  261. package/dist/agent/git.js.map +0 -1
  262. package/dist/agent/gitSync.js.map +0 -1
  263. package/dist/agent/guionizado.js.map +0 -1
  264. package/dist/agent/hotswap.js.map +0 -1
  265. package/dist/agent/instalacionEnMaquina.js.map +0 -1
  266. package/dist/agent/instantanea.js.map +0 -1
  267. package/dist/agent/interrupts.js.map +0 -1
  268. package/dist/agent/juezDeTarea.js.map +0 -1
  269. package/dist/agent/lanzamientoEnMaquina.js.map +0 -1
  270. package/dist/agent/manifiesto.js.map +0 -1
  271. package/dist/agent/memoriaDeProyecto.js.map +0 -1
  272. package/dist/agent/mensajes.js.map +0 -1
  273. package/dist/agent/modelos.js +0 -130
  274. package/dist/agent/modelos.js.map +0 -1
  275. package/dist/agent/modelosDeMotor.js.map +0 -1
  276. package/dist/agent/normalizar.js.map +0 -1
  277. package/dist/agent/paqueteDelProyecto.js.map +0 -1
  278. package/dist/agent/perfiles.js.map +0 -1
  279. package/dist/agent/persona.js.map +0 -1
  280. package/dist/agent/procesosEnMaquina.js.map +0 -1
  281. package/dist/agent/proyecto.js.map +0 -1
  282. package/dist/agent/puente.js.map +0 -1
  283. package/dist/agent/resumenDeContexto.js +0 -30
  284. package/dist/agent/resumenDeContexto.js.map +0 -1
  285. package/dist/agent/resumenDeTool.js.map +0 -1
  286. package/dist/agent/sesionGit.js.map +0 -1
  287. package/dist/agent/settingsEnDisco.js.map +0 -1
  288. package/dist/agent/skills.js +0 -65
  289. package/dist/agent/skills.js.map +0 -1
  290. package/dist/agent/subagenteCodex.js.map +0 -1
  291. package/dist/agent/subagenteExterno.js.map +0 -1
  292. package/dist/agent/subagenteOpencode.js.map +0 -1
  293. package/dist/agent/subida.js.map +0 -1
  294. package/dist/agent/tareasEnDisco.js.map +0 -1
  295. package/dist/agent/textoDeTool.js.map +0 -1
  296. package/dist/agent/turnoReal.js.map +0 -1
  297. package/dist/agent/verificador.js.map +0 -1
  298. package/dist/agent/versionEnDisco.js.map +0 -1
  299. package/dist/agent/xoneAgent.js +0 -347
  300. package/dist/agent/xoneAgent.js.map +0 -1
  301. package/dist/agent/zip.js.map +0 -1
  302. /package/dist/agent/{manifiesto.js → cloudstudio/manifiesto.js} +0 -0
  303. /package/dist/agent/{entorno.js → config/entorno.js} +0 -0
  304. /package/dist/agent/{gemini.js → config/gemini.js} +0 -0
  305. /package/dist/agent/{hotswap.js → dispositivos/hotswap.js} +0 -0
  306. /package/dist/agent/{instalacionEnMaquina.js → dispositivos/instalacionEnMaquina.js} +0 -0
  307. /package/dist/agent/{procesosEnMaquina.js → dispositivos/procesosEnMaquina.js} +0 -0
  308. /package/dist/agent/{git.js → sesiones/git.js} +0 -0
  309. /package/dist/agent/{consumoExterno.js → subagentes/consumoExterno.js} +0 -0
  310. /package/dist/agent/{escrituraDeCodex.js → subagentes/escrituraDeCodex.js} +0 -0
  311. /package/dist/agent/{subagenteCodex.js → subagentes/subagenteCodex.js} +0 -0
  312. /package/dist/agent/{mensajes.js → turno/mensajes.js} +0 -0
  313. /package/dist/agent/{normalizar.js → turno/normalizar.js} +0 -0
  314. /package/dist/agent/{textoDeTool.js → turno/textoDeTool.js} +0 -0
  315. /package/dist/agent/{verificador.js → turno/verificador.js} +0 -0
@@ -1,11 +1,14 @@
1
- import { statSync } from "node:fs";
1
+ import { existsSync, mkdirSync, readdirSync, statSync } from "node:fs";
2
2
  import { join } from "node:path";
3
- import { CompositeBackend, FilesystemBackend } from "deepagents";
3
+ import { CompositeBackend, FilesystemBackend, LocalShellBackend } from "deepagents";
4
4
  import { RUTA_MEMORIA_INTERNA, RUTA_MEMORIA_VIRTUAL } from "./memoriaDeProyecto.js";
5
- import { RAIZ_SKILLS } from "./skills.js";
6
- import { artefactoFueraDeSitio, mimeDeArtefacto, nombreDeArtefacto, RUTA_ARTEFACTOS, } from "../core/artefactos.js";
7
- import { RUTA_ADJUNTOS } from "../core/adjuntos.js";
8
- import { RUTAS_DE_DESCARGA, carpetaDeDescargas, descargaFueraDeSitio, porQueNoEsDelProyecto, } from "../core/descargas.js";
5
+ import { RAIZ_SKILLS, skillsConRuta, skillsMontables } from "./skills.js";
6
+ import { artefactoFueraDeSitio, mimeDeArtefacto, nombreDeArtefacto, RUTA_ARTEFACTOS, } from "../../core/artefactos.js";
7
+ import { RUTA_ADJUNTOS } from "../../core/adjuntos.js";
8
+ import { CARPETA_DE_PLANES, RUTA_PLANES } from "../../core/planes.js";
9
+ import { entornoDeShell, variablesDeAndroid } from "../../core/shellDeAgente.js";
10
+ import { localizadorDeAndroid } from "../dispositivos/dispositivosEnMaquina.js";
11
+ import { RUTAS_DE_DESCARGA, carpetaDeDescargas, descargaFueraDeSitio, porQueNoEsDelProyecto, } from "../../core/descargas.js";
9
12
  /**
10
13
  * El backend del proyecto: confinado, y sin las vistas aplanadas.
11
14
  *
@@ -13,25 +16,134 @@ import { RUTAS_DE_DESCARGA, carpetaDeDescargas, descargaFueraDeSitio, porQueNoEs
13
16
  * default (`false`) el backend LEYÓ una ruta absoluta de fuera de la raíz. La propia
14
17
  * librería lo dice de su default — «absolute paths and `..` can bypass rootDir».
15
18
  *
16
- * Y nada de `LocalShellBackend`: la librería avisa de que `virtualMode` **no restringe los
17
- * comandos de shell**. El simulador lo invoca el código de xonecode, no el modelo.
19
+ * Y sin shell: el `execute` de deepagents solo aparece si el backend sabe ejecutar, así que
20
+ * éste es el que deja a un especialista SIN esa tool. El que sí la tiene es
21
+ * `backendDelProyectoConShell`, y quién se lleva cuál lo decide `ejecucion` en el `.md`.
18
22
  */
19
23
  export function backendDelProyecto(raiz) {
20
24
  return new FilesystemBackend({ rootDir: raiz, virtualMode: true });
21
25
  }
22
26
  /**
23
- * Añade las skills del harness como una ruta virtual de solo lectura del agente.
27
+ * El mismo backend, pero que además EJECUTA — el de un subagente con `ejecucion: true`.
28
+ *
29
+ * Es la pieza que enciende la tool `execute` de deepagents: el middleware la registra solo
30
+ * cuando «el backend resuelto sabe ejecutar», y lo que decide eso es `isSandboxBackend`, que
31
+ * mira que haya un `execute` y un `id` NO vacío (medido en la librería: `id !== ""`).
32
+ *
33
+ * **Lo que `virtualMode` NO hace aquí, y hay que tenerlo delante.** Confina las tools de
34
+ * FICHERO, no los comandos: un `cat ../../otro` del shell sale de la raíz igual. Lo mismo
35
+ * vale para `permisosDe`, y la propia librería se niega a fingir lo contrario — usar
36
+ * `permissions` con un backend ejecutable **lanza `ConfigurationError`** («permissions are
37
+ * not enforced on execute because shell commands can access any path regardless of
38
+ * path-based rules»). O sea que conceder ejecución es conceder la máquina, y por eso se
39
+ * declara en el `.md`, se ve en cada evento y lo lleva un solo subagente.
40
+ *
41
+ * **El entorno se pasa ENTERO y a mano, nunca `inheritEnv`.** Con `inheritEnv: true` la
42
+ * shell hereda `process.env`, donde `guardarCredencial` escribe las claves de API a
43
+ * propósito; un `printenv` las dejaría en el contexto. Lo que se pasa lo decide
44
+ * `core/shellDeAgente.ts#entornoDeShell`, que es puro y tiene test.
45
+ *
46
+ * **Dos límites de la librería, declarados**: el tope es de RELOJ (`timeout`, en segundos) y
47
+ * no de silencio, al revés que `TOPE_SIN_SALIDA_MS` de `agent/dispositivos/`; y al vencer
48
+ * mata al HIJO (`SIGTERM`), no al grupo, así que un nieto sobrevive. Por eso lo que no
49
+ * termina —un emulador— va al fondo desde la propia orden, y eso lo dice la skill.
50
+ */
51
+ export function backendDelProyectoConShell(raiz, entorno) {
52
+ return new LocalShellBackend({
53
+ rootDir: raiz,
54
+ virtualMode: true,
55
+ env: entorno,
56
+ timeout: TOPE_DE_COMANDO_S,
57
+ });
58
+ }
59
+ /**
60
+ * El entorno con el que corre la shell de ESTE proyecto.
61
+ *
62
+ * Una sola llamada para que el montaje no sea una composición dentro de `construirAgente`:
63
+ * ahí lo doblan todos los tests y la regla —qué claves se quitan, qué rutas se añaden—
64
+ * quedaría escrita y sin probar. La decisión es pura y vive en `core/shellDeAgente.ts`; lo
65
+ * que aporta esto es de dónde salen los tres ingredientes.
66
+ *
67
+ * Las skills se leen del disco en cada construcción, igual que `skillsMontables` en el
68
+ * backend y que `cargarAgentes`: una skill instalada con la consola abierta no alcanza a la
69
+ * sesión en curso, que es el límite ya anotado en CLAUDE.md y no uno nuevo.
70
+ */
71
+ export function entornoDeLaShellDelProyecto(raiz, artefactos,
72
+ /**
73
+ * El buscador de binarios del SDK de Android. Entra por parámetro **solo** para que un test
74
+ * pueda ver que está montado: esta función toca `process.env` y `existsSync`, así que sin
75
+ * inyectarlo la composición viviría donde ningún test la alcanza — el patrón de fallo que
76
+ * este repo lleva contadas nueve veces. En producción no lo pasa nadie.
77
+ */
78
+ enSdk = localizadorDeAndroid({
79
+ plataforma: process.platform,
80
+ entorno: process.env,
81
+ home: process.env["HOME"] ?? "",
82
+ existe: (ruta) => existsSync(ruta),
83
+ }).enSdk) {
84
+ // `skillsConRuta` y no `skillsMontables`: aquélla deja fuera las de SERIE —su raíz se cuelga
85
+ // entera en el backend— y una shell necesita la ruta real de todas. Sin esto, los scripts de
86
+ // las skills de serie no llegan al PATH y el agente se queda buscándolos por el disco.
87
+ const skills = skillsConRuta(raiz).map((m) => ({ nombre: m.nombre, dir: m.dir }));
88
+ return entornoDeShell({
89
+ entorno: process.env,
90
+ skills,
91
+ // La carpeta `scripts/` de cada skill que la tenga, al PATH. La comprobación de que existe
92
+ // va aquí porque `entornoDeShell` es puro: prometer en el PATH una carpeta que no está es
93
+ // el botón muerto de siempre, solo que en una variable de entorno.
94
+ binarios: skills.map((s) => join(s.dir, "scripts")).filter((d) => existsSync(d)),
95
+ // Sin esto, `xone-arrancar-android` tendría que adivinar dónde está el SDK: en un Mac con
96
+ // Homebrew `emulator` no está en el PATH y `ANDROID_HOME` suele estar vacía.
97
+ android: variablesDeAndroid(enSdk),
98
+ ...(artefactos === undefined ? {} : { artefactos }),
99
+ });
100
+ }
101
+ /**
102
+ * El tope de reloj de UN comando, en segundos.
103
+ *
104
+ * El de la librería son 120 s. Se sube porque aquí los comandos normales son de dispositivo
105
+ * —un `adb install`, esperar a que un emulador termine de arrancar— y 120 s los corta a
106
+ * mitad; y no se sube más porque un comando que no vuelve deja el turno colgado hasta aquí.
107
+ * Lo que de verdad no termina nunca (arrancar un emulador) no se acota con un tope: se manda
108
+ * al fondo, que es lo que la skill explica.
109
+ */
110
+ export const TOPE_DE_COMANDO_S = 600;
111
+ /**
112
+ * Añade las skills como una ruta virtual de solo lectura del agente.
24
113
  *
25
114
  * El proyecto del usuario sigue siendo la raíz predeterminada. `/skills` apunta al
26
115
  * catálogo que se distribuye con xonecode: así SkillsMiddleware puede descubrir y
27
116
  * cargar bajo demanda cada `SKILL.md` sin conceder al modelo acceso al repositorio
28
117
  * del harness ni sacarlo de la raíz del proyecto.
118
+ *
119
+ * **Y las del USUARIO cuelgan de esa misma ruta, una a una.** Viven en otras dos carpetas
120
+ * (`~/.xonecode/skills/` y la del proyecto, `agent/grafo/skills.ts`) y tienen que verse como
121
+ * UNA sola: un subagente declara `skills: [mi-skill]` y eso se traduce a `/skills/mi-skill/`
122
+ * sin saber de dónde salió el fichero. Una raíz aparte —`/skills-tuyas/`— habría metido de
123
+ * quién es la skill dentro de su ruta, y entonces cambiarla de carpeta le cambiaría el
124
+ * nombre al agente.
125
+ *
126
+ * Se apoya en que `CompositeBackend` ordena sus rutas **por longitud descendente** y se
127
+ * queda con la primera que encaja (`sortedRoutes` en deepagents 1.13.2): `/skills/mia/` es
128
+ * más larga que `/skills/`, así que gana para todo lo que cuelgue de ella. Eso no es una
129
+ * suposición sobre la librería: lo ata `proyecto.test.ts` contra la librería REAL, que es la
130
+ * única forma de enterarse el día que cambie.
131
+ *
132
+ * **Límite declarado**: un `ls /skills` enseña solo las de serie. `CompositeBackend.ls`
133
+ * resuelve a UNA ruta y no funde varias, así que las del usuario no salen en ese listado. No
134
+ * importa para lo que esto hace —`SkillsMiddleware` recibe las rutas una a una, ya
135
+ * resueltas, y es así como el modelo las descubre— pero un agente que liste esa carpeta a
136
+ * mano no las verá.
29
137
  */
30
- export function backendConSkills(backend) {
138
+ export function backendConSkills(backend, propias = []) {
31
139
  return new CompositeBackend(backend, {
32
140
  // La barra final importa: CompositeBackend la retira antes de delegar. Sin ella
33
141
  // reconstruye `//archify/...`, que FilesystemBackend interpreta fuera de su raíz.
34
142
  "/skills/": new FilesystemBackend({ rootDir: RAIZ_SKILLS, virtualMode: true }),
143
+ ...Object.fromEntries(propias.map((m) => [
144
+ `/skills/${m.nombre}/`,
145
+ new FilesystemBackend({ rootDir: m.dir, virtualMode: true }),
146
+ ])),
35
147
  });
36
148
  }
37
149
  /**
@@ -40,7 +152,7 @@ export function backendConSkills(backend) {
40
152
  * **La misma pieza que `/skills/` y `/artefactos/`**: otra raíz del `CompositeBackend`. Y de
41
153
  * solo lectura por lo mismo que las skills — son material de ENTRADA, los documentos que
42
154
  * anexó la persona que creó la tarea, no ficheros que reescribir. Quien lo deniega es
43
- * `permisosDe` (`agent/perfiles.ts`), incondicionalmente y por patrón: aquí no hay Proxy que
155
+ * `permisosDe` (`agent/grafo/perfiles.ts`), incondicionalmente y por patrón: aquí no hay Proxy que
44
156
  * rechace, igual que no lo hay para `/skills/`, porque la denegación que el modelo choca es
45
157
  * la del middleware de permisos y ese es el sitio donde vive la regla.
46
158
  *
@@ -60,6 +172,30 @@ export function backendConAdjuntos(backend, carpeta) {
60
172
  [RUTA_ADJUNTOS]: new FilesystemBackend({ rootDir: carpeta, virtualMode: true }),
61
173
  });
62
174
  }
175
+ /**
176
+ * Cuelga `/planes/` de `.xonecode/planes/`, en el repo LOCAL.
177
+ *
178
+ * El porqué de ese sitio está en `core/planes.ts`. Lo que aporta esto es el montaje, y tiene
179
+ * las mismas dos trampas que `/artefactos/` y `/skills/`:
180
+ *
181
+ * - **La barra final es obligatoria**: `CompositeBackend` la retira antes de delegar, y sin
182
+ * ella reconstruye `//favoritos/PLAN.md`, que `FilesystemBackend` interpreta fuera de su
183
+ * raíz.
184
+ * - **La carpeta NO se crea al montar**: la crea `FilesystemBackend.write` la primera vez que
185
+ * se escribe. Un proyecto en el que nadie ha planificado no tiene por qué tener la carpeta.
186
+ *
187
+ * Y una diferencia con los artefactos que es el motivo de que exista: esto **no se anuncia**.
188
+ * Un artefacto se enseña una vez; un plan se escribe, se lee y se ACTUALIZA por varios
189
+ * especialistas a lo largo de varios turnos, así que un evento por escritura sería ruido.
190
+ */
191
+ export function backendConPlanes(backend, raiz) {
192
+ return new CompositeBackend(backend, {
193
+ [RUTA_PLANES]: new FilesystemBackend({
194
+ rootDir: join(raiz, CARPETA_DE_PLANES),
195
+ virtualMode: true,
196
+ }),
197
+ });
198
+ }
63
199
  /**
64
200
  * Cuelga `/artefactos/` de la carpeta de la SESIÓN, fuera del proyecto.
65
201
  *
@@ -81,8 +217,8 @@ export function backendConAdjuntos(backend, carpeta) {
81
217
  export function backendConArtefactos(backend, carpeta, alEscribir) {
82
218
  const destino = new FilesystemBackend({ rootDir: carpeta, virtualMode: true });
83
219
  const anotado = new Proxy(destino, {
84
- get(objetivo, prop, receptor) {
85
- const valor = Reflect.get(objetivo, prop, receptor);
220
+ get(objetivo, prop) {
221
+ const valor = Reflect.get(objetivo, prop, objetivo);
86
222
  if (typeof valor !== "function")
87
223
  return valor;
88
224
  if (prop !== "write" && prop !== "edit") {
@@ -170,8 +306,8 @@ export function sinDescargasEnElProyecto(backend) {
170
306
  return destino === undefined ? undefined : porQueNoEsDelProyecto(ruta, destino);
171
307
  };
172
308
  return new Proxy(backend, {
173
- get(destino, prop, receptor) {
174
- const valor = Reflect.get(destino, prop, receptor);
309
+ get(destino, prop) {
310
+ const valor = Reflect.get(destino, prop, destino);
175
311
  if (typeof valor !== "function")
176
312
  return valor;
177
313
  if (prop !== "write" && prop !== "edit") {
@@ -210,8 +346,20 @@ export function sinDescargasEnElProyecto(backend) {
210
346
  * `permisosDe`.
211
347
  */
212
348
  export function backendDeAgente(opciones) {
213
- const delProyecto = sinDescargasEnElProyecto(sinArtefactosEnElProyecto(sinVistasAplanadas(exponerMemoriaDeProyecto(backendDelProyecto(opciones.raiz)), opciones.ficheros)));
214
- const conSkills = backendConSkills(delProyecto);
349
+ const base = opciones.ejecucion === undefined
350
+ ? backendDelProyecto(opciones.raiz)
351
+ : backendDelProyectoConShell(opciones.raiz, opciones.ejecucion.entorno);
352
+ const delProyecto = sinDescargasEnElProyecto(sinArtefactosEnElProyecto(sinVistasAplanadas(exponerMemoriaDeProyecto(base), opciones.ficheros)));
353
+ /**
354
+ * Las del usuario se leen AQUÍ y no entran por parámetro, a propósito: compuesto dentro de
355
+ * `construirAgente` —que todos sus tests doblan— el montaje quedaba escrito y no probado,
356
+ * que es el patrón de fallo de esta arquitectura y el motivo de que esta función exista.
357
+ * Aquí sí hay test (`proyecto.test.ts`). Y se leen en cada construcción del agente, igual que
358
+ * `cargarAgentes` — con el mismo límite que aquélla, que conviene no confundir: construir
359
+ * ocurre al ABRIR la sesión y en `/modelo`, no en cada turno, así que una skill guardada con
360
+ * la consola abierta no alcanza a la sesión en curso. Está anotado en CLAUDE.md.
361
+ */
362
+ const conSkills = backendConSkills(delProyecto, skillsMontables(opciones.raiz));
215
363
  const conArtefactos = opciones.artefactos === undefined
216
364
  ? conSkills
217
365
  : backendConArtefactos(conSkills, opciones.artefactos.carpeta, opciones.artefactos.alEscribir);
@@ -220,7 +368,109 @@ export function backendDeAgente(opciones) {
220
368
  const conDescargas = opciones.artefactos === undefined
221
369
  ? conArtefactos
222
370
  : backendConDescargas(conArtefactos, opciones.artefactos.carpeta);
223
- return opciones.adjuntos === undefined ? conDescargas : backendConAdjuntos(conDescargas, opciones.adjuntos);
371
+ const conAdjuntos = opciones.adjuntos === undefined ? conDescargas : backendConAdjuntos(conDescargas, opciones.adjuntos);
372
+ /**
373
+ * Los PLANES van SIEMPRE, sin depender de la sesión: cuelgan del repo local
374
+ * (`.xonecode/planes/`) y no de la carpeta de una sesión, porque un plan se escribe un día y
375
+ * se implementa otro. Es la diferencia con los artefactos, que mueren con su sesión.
376
+ */
377
+ const conPlanes = backendConPlanes(conAdjuntos, opciones.raiz);
378
+ // Lo que deje un COMANDO en la carpeta de artefactos también se anuncia. Sin esto, la
379
+ // captura que escribe un script existe en el disco y no existe para nadie: el evento
380
+ // `artefacto` lo emite el Proxy de `write`/`edit`, y una shell no pasa por ahí.
381
+ return opciones.ejecucion === undefined || opciones.artefactos === undefined
382
+ ? conPlanes
383
+ : anunciarArtefactosDeLaShell(conPlanes, opciones.artefactos.carpeta, opciones.artefactos.alEscribir);
384
+ }
385
+ /**
386
+ * Anuncia lo que un COMANDO deja en la carpeta de artefactos.
387
+ *
388
+ * El evento `artefacto` —«hay un diagrama de 42 KB y se llama así», nunca el contenido— lo
389
+ * emite hoy el Proxy de `backendConArtefactos`, que envuelve `write` y `edit`. Una shell no
390
+ * llama a ninguna de las dos: escribe en el disco de verdad. Así que sin esto, una captura
391
+ * dejada por un script no sale en la pestaña Artefactos ni en el hilo, y el subagente tendría
392
+ * que decir «he dejado una captura» sin que nada lo respalde — que es la clase de afirmación
393
+ * que este harness no quiere.
394
+ *
395
+ * **Se compara una FOTO de antes con una de después** (nombre → tamaño + mtime) en vez de
396
+ * fiarse de lo que el comando diga que hizo. Un comando puede escribir tres ficheros, o
397
+ * ninguno, o pisar el de antes; lo único que lo sabe es la carpeta.
398
+ *
399
+ * **Y la carpeta se CREA aquí, antes de correr el comando.** Es la excepción a «no se crea
400
+ * al montar», y la pagó una captura: `$XONECODE_ARTEFACTOS` la crea `FilesystemBackend.write`
401
+ * la primera vez que el agente escribe un artefacto por una TOOL, y una shell no pasa por
402
+ * ahí — así que en una sesión que no había dibujado nada, el `writeFileSync` del script de
403
+ * captura reventaba con ENOENT (reproducido) y el modelo se replegaba a dejar el `.png` en
404
+ * la raíz del proyecto, que es justo lo que la regla existe para impedir. El sitio es este y
405
+ * no el script: quien SABE que va a correr una shell y DÓNDE está la carpeta es el harness,
406
+ * y arreglarlo en el script lo dejaría arreglado en uno de cinco —y en ninguna skill del
407
+ * usuario—, que es el patrón de fallo de siempre. Se crea solo cuando hay ejecución, así que
408
+ * una sesión de los otros cuatro especialistas sigue sin carpeta vacía.
409
+ */
410
+ export function anunciarArtefactosDeLaShell(backend, carpeta, alEscribir) {
411
+ const foto = () => {
412
+ const m = new Map();
413
+ let nombres;
414
+ try {
415
+ nombres = readdirSync(carpeta);
416
+ }
417
+ catch {
418
+ return m;
419
+ }
420
+ for (const nombre of nombres) {
421
+ try {
422
+ const e = statSync(join(carpeta, nombre));
423
+ if (e.isFile())
424
+ m.set(nombre, `${e.size}:${e.mtimeMs}`);
425
+ }
426
+ catch {
427
+ // Un fichero que desaparece entre el listado y la medida no es un artefacto nuevo.
428
+ }
429
+ }
430
+ return m;
431
+ };
432
+ return new Proxy(backend, {
433
+ get(destino, prop) {
434
+ const valor = Reflect.get(destino, prop, destino);
435
+ if (typeof valor !== "function")
436
+ return valor;
437
+ if (prop !== "execute")
438
+ return valor.bind(destino);
439
+ return async (...args) => {
440
+ try {
441
+ // Antes de la foto: si el comando es el que escribe la captura, la carpeta tiene
442
+ // que existir YA. Un fallo al crearla no puede tumbar el comando —se podía correr
443
+ // sin carpeta antes de esto—, así que se traga y la foto sigue tolerando su
444
+ // ausencia.
445
+ mkdirSync(carpeta, { recursive: true });
446
+ }
447
+ catch {
448
+ // Sin carpeta no hay artefactos que anunciar, y el comando no es asunto suyo.
449
+ }
450
+ const antes = foto();
451
+ try {
452
+ return await valor.apply(destino, args);
453
+ }
454
+ finally {
455
+ // En el `finally`: un comando que acaba en error puede haber dejado el fichero, y
456
+ // un fallo al listar la carpeta no puede llevarse por delante el resultado.
457
+ try {
458
+ for (const [nombre, marca] of foto()) {
459
+ if (antes.get(nombre) === marca)
460
+ continue;
461
+ const ruta = RUTA_ARTEFACTOS + nombre;
462
+ const mime = mimeDeArtefacto(nombre);
463
+ const bytes = Number(marca.split(":")[0] ?? 0);
464
+ alEscribir({ ruta, nombre, bytes, ...(mime === undefined ? {} : { mime }) });
465
+ }
466
+ }
467
+ catch {
468
+ // Un artefacto que no se pudo anunciar no invalida el comando.
469
+ }
470
+ }
471
+ };
472
+ },
473
+ });
224
474
  }
225
475
  /**
226
476
  * Expone la memoria del proyecto sin abrir la carpeta interna `.xonecode`.
@@ -231,8 +481,8 @@ export function backendDeAgente(opciones) {
231
481
  export function exponerMemoriaDeProyecto(backend) {
232
482
  const rutaReal = (ruta) => ruta === RUTA_MEMORIA_VIRTUAL ? RUTA_MEMORIA_INTERNA : ruta;
233
483
  return new Proxy(backend, {
234
- get(destino, prop, receptor) {
235
- const valor = Reflect.get(destino, prop, receptor);
484
+ get(destino, prop) {
485
+ const valor = Reflect.get(destino, prop, destino);
236
486
  if (typeof valor !== "function")
237
487
  return valor;
238
488
  if (prop === "read" || prop === "readRaw" || prop === "write" || prop === "edit") {
@@ -285,8 +535,8 @@ export function sinArtefactosEnElProyecto(backend) {
285
535
  return destino === undefined ? undefined : porQueNoAhi(ruta, destino);
286
536
  };
287
537
  return new Proxy(backend, {
288
- get(destino, prop, receptor) {
289
- const valor = Reflect.get(destino, prop, receptor);
538
+ get(destino, prop) {
539
+ const valor = Reflect.get(destino, prop, destino);
290
540
  if (typeof valor !== "function")
291
541
  return valor;
292
542
  if (prop !== "write" && prop !== "edit") {
@@ -340,8 +590,8 @@ export const porQueNo = (ruta) => `«${ruta}» es una vista APLANADA que genera
340
590
  export function sinVistasAplanadas(backend, todas) {
341
591
  const motivo = (ruta) => typeof ruta === "string" && esVistaAplanada(ruta, todas) ? porQueNo(ruta) : undefined;
342
592
  return new Proxy(backend, {
343
- get(destino, prop, receptor) {
344
- const valor = Reflect.get(destino, prop, receptor);
593
+ get(destino, prop) {
594
+ const valor = Reflect.get(destino, prop, destino);
345
595
  if (typeof valor !== "function")
346
596
  return valor;
347
597
  // Las que reciben una ruta y la tocan: se rechazan con explicación.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proyecto.js","sourceRoot":"","sources":["../../../src/agent/grafo/proyecto.ts"],"names":[],"mappings":"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"}