xonecode 0.3.0 → 0.5.1

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 (408) hide show
  1. package/README.md +50 -8
  2. package/THIRD_PARTY_NOTICES.md +160 -0
  3. package/apps/web/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  4. package/apps/web/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  5. package/apps/web/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  6. package/apps/web/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  7. package/apps/web/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  8. package/apps/web/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  9. package/apps/web/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  10. package/apps/web/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  11. package/apps/web/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  12. package/apps/web/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  13. package/apps/web/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  14. package/apps/web/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  15. package/apps/web/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  16. package/apps/web/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  17. package/apps/web/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  18. package/apps/web/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  19. package/apps/web/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  20. package/apps/web/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  21. package/apps/web/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  22. package/apps/web/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  23. package/apps/web/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  24. package/apps/web/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  25. package/apps/web/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  26. package/apps/web/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  27. package/apps/web/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  28. package/apps/web/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  29. package/apps/web/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  30. package/apps/web/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  31. package/apps/web/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  32. package/apps/web/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  33. package/apps/web/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  34. package/apps/web/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  35. package/apps/web/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  36. package/apps/web/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  37. package/apps/web/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  38. package/apps/web/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  39. package/apps/web/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  40. package/apps/web/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  41. package/apps/web/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  42. package/apps/web/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  43. package/apps/web/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  44. package/apps/web/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  45. package/apps/web/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  46. package/apps/web/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  47. package/apps/web/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  48. package/apps/web/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  49. package/apps/web/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  50. package/apps/web/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  51. package/apps/web/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  52. package/apps/web/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  53. package/apps/web/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  54. package/apps/web/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  55. package/apps/web/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  56. package/apps/web/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  57. package/apps/web/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  58. package/apps/web/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  59. package/apps/web/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  60. package/apps/web/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  61. package/apps/web/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  62. package/apps/web/dist/assets/c-BIGW1oBm.js +1 -0
  63. package/apps/web/dist/assets/cpp-DddhVWhK.js +1 -0
  64. package/apps/web/dist/assets/csharp-DSvCPggb.js +1 -0
  65. package/apps/web/dist/assets/css-CLj8gQPS.js +1 -0
  66. package/apps/web/dist/assets/go-C27-OAKa.js +1 -0
  67. package/apps/web/dist/assets/html-CfGypltT.js +1 -0
  68. package/apps/web/dist/assets/index-BB3SamhR.css +1 -0
  69. package/apps/web/dist/assets/index-CFYAoHdw.js +477 -0
  70. package/apps/web/dist/assets/ini-BEwlwnbL.js +1 -0
  71. package/apps/web/dist/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  72. package/apps/web/dist/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  73. package/apps/web/dist/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  74. package/apps/web/dist/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  75. package/apps/web/dist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  76. package/apps/web/dist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  77. package/apps/web/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  78. package/apps/web/dist/assets/java-CylS5w8V.js +1 -0
  79. package/apps/web/dist/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
  80. package/apps/web/dist/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
  81. package/apps/web/dist/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  82. package/apps/web/dist/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  83. package/apps/web/dist/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
  84. package/apps/web/dist/assets/kotlin-BdnUsdx6.js +1 -0
  85. package/apps/web/dist/assets/less-B1dDrJ26.js +1 -0
  86. package/apps/web/dist/assets/lua-BaeVxFsk.js +1 -0
  87. package/apps/web/dist/assets/markdown-Cvjx9yec.js +1 -0
  88. package/apps/web/dist/assets/mdx-Cmh6b_Ma.js +1 -0
  89. package/apps/web/dist/assets/php-D_2--9WK.js +1 -0
  90. package/apps/web/dist/assets/python-B6aJPvgy.js +1 -0
  91. package/apps/web/dist/assets/ruby-DSHSDbk1.js +1 -0
  92. package/apps/web/dist/assets/rust-B1yitclQ.js +1 -0
  93. package/apps/web/dist/assets/scss-D5BDwBP9.js +1 -0
  94. package/apps/web/dist/assets/sql-CRqJ_cUM.js +1 -0
  95. package/apps/web/dist/assets/swift-C2oV4EkX.js +1 -0
  96. package/apps/web/dist/assets/toml-vGWfd6FD.js +1 -0
  97. package/apps/web/dist/assets/xml-sdJ4AIDG.js +1 -0
  98. package/apps/web/dist/assets/yaml-Buea-lGh.js +1 -0
  99. package/apps/web/dist/iconos/xonecode.png +0 -0
  100. package/apps/web/dist/index.html +20 -0
  101. package/dist/agent/agentesEnDisco.js +539 -0
  102. package/dist/agent/agentesEnDisco.js.map +1 -0
  103. package/dist/agent/arbolDeProyecto.js +245 -0
  104. package/dist/agent/arbolDeProyecto.js.map +1 -0
  105. package/dist/agent/artefactosEnDisco.js +139 -0
  106. package/dist/agent/artefactosEnDisco.js.map +1 -0
  107. package/dist/agent/aumentador.js +175 -0
  108. package/dist/agent/aumentador.js.map +1 -0
  109. package/dist/agent/authEnDisco.js +76 -1
  110. package/dist/agent/authEnDisco.js.map +1 -1
  111. package/dist/agent/busquedaRegex.js +92 -0
  112. package/dist/agent/busquedaRegex.js.map +1 -0
  113. package/dist/agent/catalogoModelos.js +345 -0
  114. package/dist/agent/catalogoModelos.js.map +1 -0
  115. package/dist/agent/checkpointer.js +127 -0
  116. package/dist/agent/checkpointer.js.map +1 -0
  117. package/dist/agent/cloudstudioClient.js +194 -0
  118. package/dist/agent/cloudstudioClient.js.map +1 -0
  119. package/dist/agent/cloudstudioMcp.js +722 -0
  120. package/dist/agent/cloudstudioMcp.js.map +1 -0
  121. package/dist/agent/configEnDisco.js +309 -11
  122. package/dist/agent/configEnDisco.js.map +1 -1
  123. package/dist/agent/consumoExterno.js +99 -0
  124. package/dist/agent/consumoExterno.js.map +1 -0
  125. package/dist/agent/descarga.js +149 -0
  126. package/dist/agent/descarga.js.map +1 -0
  127. package/dist/agent/diagnosticoDeTools.js +51 -0
  128. package/dist/agent/diagnosticoDeTools.js.map +1 -0
  129. package/dist/agent/dispositivosEnMaquina.js +596 -0
  130. package/dist/agent/dispositivosEnMaquina.js.map +1 -0
  131. package/dist/agent/escrituraDeCodex.js +134 -0
  132. package/dist/agent/escrituraDeCodex.js.map +1 -0
  133. package/dist/agent/escrituraDeOpencode.js +80 -0
  134. package/dist/agent/escrituraDeOpencode.js.map +1 -0
  135. package/dist/agent/escrituraExterna.js +742 -0
  136. package/dist/agent/escrituraExterna.js.map +1 -0
  137. package/dist/agent/gemini.js +81 -0
  138. package/dist/agent/gemini.js.map +1 -0
  139. package/dist/agent/git.js +83 -0
  140. package/dist/agent/git.js.map +1 -0
  141. package/dist/agent/gitSync.js +441 -0
  142. package/dist/agent/gitSync.js.map +1 -0
  143. package/dist/agent/hotswap.js +448 -0
  144. package/dist/agent/hotswap.js.map +1 -0
  145. package/dist/agent/instalacionEnMaquina.js +252 -0
  146. package/dist/agent/instalacionEnMaquina.js.map +1 -0
  147. package/dist/agent/instantanea.js +7 -10
  148. package/dist/agent/instantanea.js.map +1 -1
  149. package/dist/agent/interrupts.js +11 -2
  150. package/dist/agent/interrupts.js.map +1 -1
  151. package/dist/agent/juezDeTarea.js +345 -0
  152. package/dist/agent/juezDeTarea.js.map +1 -0
  153. package/dist/agent/lanzamientoEnMaquina.js +377 -0
  154. package/dist/agent/lanzamientoEnMaquina.js.map +1 -0
  155. package/dist/agent/manifiesto.js +59 -0
  156. package/dist/agent/manifiesto.js.map +1 -0
  157. package/dist/agent/memoriaDeProyecto.js +60 -0
  158. package/dist/agent/memoriaDeProyecto.js.map +1 -0
  159. package/dist/agent/modelos.js +105 -17
  160. package/dist/agent/modelos.js.map +1 -1
  161. package/dist/agent/modelosDeMotor.js +204 -0
  162. package/dist/agent/modelosDeMotor.js.map +1 -0
  163. package/dist/agent/paqueteDelProyecto.js +181 -0
  164. package/dist/agent/paqueteDelProyecto.js.map +1 -0
  165. package/dist/agent/perfiles.js +92 -31
  166. package/dist/agent/perfiles.js.map +1 -1
  167. package/dist/agent/persona.js +40 -0
  168. package/dist/agent/persona.js.map +1 -0
  169. package/dist/agent/procesosEnMaquina.js +204 -0
  170. package/dist/agent/procesosEnMaquina.js.map +1 -0
  171. package/dist/agent/proyecto.js +311 -13
  172. package/dist/agent/proyecto.js.map +1 -1
  173. package/dist/agent/puente.js +63 -6
  174. package/dist/agent/puente.js.map +1 -1
  175. package/dist/agent/resumenDeContexto.js +30 -0
  176. package/dist/agent/resumenDeContexto.js.map +1 -0
  177. package/dist/agent/resumenDeTool.js +64 -18
  178. package/dist/agent/resumenDeTool.js.map +1 -1
  179. package/dist/agent/sesionGit.js +481 -0
  180. package/dist/agent/sesionGit.js.map +1 -0
  181. package/dist/agent/settingsEnDisco.js +189 -0
  182. package/dist/agent/settingsEnDisco.js.map +1 -0
  183. package/dist/agent/subagenteCodex.js +368 -0
  184. package/dist/agent/subagenteCodex.js.map +1 -0
  185. package/dist/agent/subagenteExterno.js +423 -0
  186. package/dist/agent/subagenteExterno.js.map +1 -0
  187. package/dist/agent/subagenteOpencode.js +389 -0
  188. package/dist/agent/subagenteOpencode.js.map +1 -0
  189. package/dist/agent/subida.js +202 -0
  190. package/dist/agent/subida.js.map +1 -0
  191. package/dist/agent/tareasEnDisco.js +466 -0
  192. package/dist/agent/tareasEnDisco.js.map +1 -0
  193. package/dist/agent/turnoReal.js +663 -50
  194. package/dist/agent/turnoReal.js.map +1 -1
  195. package/dist/agent/versionEnDisco.js +48 -0
  196. package/dist/agent/versionEnDisco.js.map +1 -0
  197. package/dist/agent/xoneAgent.js +290 -49
  198. package/dist/agent/xoneAgent.js.map +1 -1
  199. package/dist/agent/zip.js +52 -0
  200. package/dist/agent/zip.js.map +1 -0
  201. package/dist/cli/acuseDeModelo.js +30 -0
  202. package/dist/cli/acuseDeModelo.js.map +1 -0
  203. package/dist/cli/aprobar.js +55 -2
  204. package/dist/cli/aprobar.js.map +1 -1
  205. package/dist/cli/config.js +9 -13
  206. package/dist/cli/config.js.map +1 -1
  207. package/dist/cli/consola.js +750 -19
  208. package/dist/cli/consola.js.map +1 -1
  209. package/dist/cli/main.js +740 -81
  210. package/dist/cli/main.js.map +1 -1
  211. package/dist/cli/markdown.js +188 -2
  212. package/dist/cli/markdown.js.map +1 -1
  213. package/dist/cli/run.js +32 -4
  214. package/dist/cli/run.js.map +1 -1
  215. package/dist/cli/stdio.js +46 -19
  216. package/dist/cli/stdio.js.map +1 -1
  217. package/dist/cli/tema.js +96 -8
  218. package/dist/cli/tema.js.map +1 -1
  219. package/dist/cli/tokens.js +29 -0
  220. package/dist/cli/tokens.js.map +1 -0
  221. package/dist/cli/tui/app.js +171 -0
  222. package/dist/cli/tui/app.js.map +1 -0
  223. package/dist/cli/tui/aprobarTui.js +80 -0
  224. package/dist/cli/tui/aprobarTui.js.map +1 -0
  225. package/dist/cli/tui/barra.js +37 -0
  226. package/dist/cli/tui/barra.js.map +1 -0
  227. package/dist/cli/tui/correrTui.js +478 -0
  228. package/dist/cli/tui/correrTui.js.map +1 -0
  229. package/dist/cli/tui/entrada.js +166 -0
  230. package/dist/cli/tui/entrada.js.map +1 -0
  231. package/dist/cli/tui/filas.js +24 -0
  232. package/dist/cli/tui/filas.js.map +1 -0
  233. package/dist/cli/tui/logo.js +49 -0
  234. package/dist/cli/tui/logo.js.map +1 -0
  235. package/dist/cli/tui/pielTui.js +14 -0
  236. package/dist/cli/tui/pielTui.js.map +1 -0
  237. package/dist/cli/tui/raton.js +126 -0
  238. package/dist/cli/tui/raton.js.map +1 -0
  239. package/dist/cli/tui/sidebar.js +86 -0
  240. package/dist/cli/tui/sidebar.js.map +1 -0
  241. package/dist/cli/tui/store.js +143 -0
  242. package/dist/cli/tui/store.js.map +1 -0
  243. package/dist/cli/tui/tarjeta.js +19 -0
  244. package/dist/cli/tui/tarjeta.js.map +1 -0
  245. package/dist/cli/tui/temaInk.js +114 -0
  246. package/dist/cli/tui/temaInk.js.map +1 -0
  247. package/dist/cli/tui/transcript.js +254 -0
  248. package/dist/cli/tui/transcript.js.map +1 -0
  249. package/dist/cli/wizardInicial.js +240 -0
  250. package/dist/cli/wizardInicial.js.map +1 -0
  251. package/dist/core/actos.js +113 -0
  252. package/dist/core/actos.js.map +1 -0
  253. package/dist/core/adjuntos.js +97 -0
  254. package/dist/core/adjuntos.js.map +1 -0
  255. package/dist/core/agentes.js +227 -0
  256. package/dist/core/agentes.js.map +1 -0
  257. package/dist/core/artefactos.js +149 -0
  258. package/dist/core/artefactos.js.map +1 -0
  259. package/dist/core/cloudstudio.js +7 -0
  260. package/dist/core/cloudstudio.js.map +1 -0
  261. package/dist/core/config.js +212 -5
  262. package/dist/core/config.js.map +1 -1
  263. package/dist/core/contextos.js +53 -1
  264. package/dist/core/contextos.js.map +1 -1
  265. package/dist/core/descargas.js +106 -0
  266. package/dist/core/descargas.js.map +1 -0
  267. package/dist/core/descriptoresDeApp.js +279 -0
  268. package/dist/core/descriptoresDeApp.js.map +1 -0
  269. package/dist/core/dispositivos.js +466 -0
  270. package/dist/core/dispositivos.js.map +1 -0
  271. package/dist/core/entrega.js +141 -0
  272. package/dist/core/entrega.js.map +1 -0
  273. package/dist/core/entrelazar.js +90 -0
  274. package/dist/core/entrelazar.js.map +1 -0
  275. package/dist/core/esqueleto.js +10 -0
  276. package/dist/core/esqueleto.js.map +1 -1
  277. package/dist/core/modelos.js +235 -3
  278. package/dist/core/modelos.js.map +1 -1
  279. package/dist/core/notify.js +27 -9
  280. package/dist/core/notify.js.map +1 -1
  281. package/dist/core/planDeSubida.js +127 -0
  282. package/dist/core/planDeSubida.js.map +1 -0
  283. package/dist/core/ports.js +189 -1
  284. package/dist/core/ports.js.map +1 -1
  285. package/dist/core/puedeLanzarse.js +239 -0
  286. package/dist/core/puedeLanzarse.js.map +1 -0
  287. package/dist/core/rutaVirtual.js +42 -0
  288. package/dist/core/rutaVirtual.js.map +1 -0
  289. package/dist/core/settings.js +246 -0
  290. package/dist/core/settings.js.map +1 -0
  291. package/dist/core/tareas.js +230 -0
  292. package/dist/core/tareas.js.map +1 -0
  293. package/dist/core/textos.js +36 -0
  294. package/dist/core/textos.js.map +1 -0
  295. package/dist/core/turno.js +56 -8
  296. package/dist/core/turno.js.map +1 -1
  297. package/dist/core/version.js +31 -0
  298. package/dist/core/version.js.map +1 -0
  299. package/dist/vendor/sqliteSaver.js +389 -0
  300. package/dist/vendor/sqliteSaver.js.map +1 -0
  301. package/dist/vendor/tokenTracking.js +22 -1
  302. package/dist/vendor/tokenTracking.js.map +1 -1
  303. package/dist/web/servidor/arranque.js +3964 -0
  304. package/dist/web/servidor/arranque.js.map +1 -0
  305. package/dist/web/servidor/consolaDeTarea.js +161 -0
  306. package/dist/web/servidor/consolaDeTarea.js.map +1 -0
  307. package/dist/web/servidor/consolaWeb.js +389 -0
  308. package/dist/web/servidor/consolaWeb.js.map +1 -0
  309. package/dist/web/servidor/corredorDeTareas.js +1119 -0
  310. package/dist/web/servidor/corredorDeTareas.js.map +1 -0
  311. package/dist/web/servidor/pielWeb.js +269 -0
  312. package/dist/web/servidor/pielWeb.js.map +1 -0
  313. package/dist/web/servidor/servidor.js +257 -0
  314. package/dist/web/servidor/servidor.js.map +1 -0
  315. package/dist/web/servidor/sesiones.js +440 -0
  316. package/dist/web/servidor/sesiones.js.map +1 -0
  317. package/dist/web/servidor/transporte.js +169 -0
  318. package/dist/web/servidor/transporte.js.map +1 -0
  319. package/dist/web/servidor/vestibulo.js +1276 -0
  320. package/dist/web/servidor/vestibulo.js.map +1 -0
  321. package/package.json +33 -9
  322. package/skills/archify/LICENSE +22 -0
  323. package/skills/archify/SKILL.md +109 -0
  324. package/skills/archify/THIRD_PARTY_NOTICES.md +56 -0
  325. package/skills/archify/assets/template.html +14787 -0
  326. package/skills/archify/bin/archify.mjs +1990 -0
  327. package/skills/archify/bin/open-artifact.mjs +86 -0
  328. package/skills/archify/bin/preview.mjs +648 -0
  329. package/skills/archify/bin/visual-check.mjs +829 -0
  330. package/skills/archify/brand-marks/README.md +31 -0
  331. package/skills/archify/brand-marks/catalog.json +131 -0
  332. package/skills/archify/delta/architecture-delta.mjs +1214 -0
  333. package/skills/archify/examples/agent-run.lifecycle.json +71 -0
  334. package/skills/archify/examples/agent-tool-call.workflow.json +94 -0
  335. package/skills/archify/examples/async-job-roundtrip.sequence.json +61 -0
  336. package/skills/archify/examples/brand-aware-delivery.architecture.json +47 -0
  337. package/skills/archify/examples/cache-miss-request.sequence.json +81 -0
  338. package/skills/archify/examples/checkout-platform.base.architecture.json +31 -0
  339. package/skills/archify/examples/checkout-platform.head.architecture.json +31 -0
  340. package/skills/archify/examples/dataflow-product-analytics.html +14898 -0
  341. package/skills/archify/examples/deployment-release.lifecycle.json +49 -0
  342. package/skills/archify/examples/event-stream.dataflow.json +57 -0
  343. package/skills/archify/examples/incident-response.workflow.json +64 -0
  344. package/skills/archify/examples/lifecycle-agent-run.html +14847 -0
  345. package/skills/archify/examples/product-analytics.dataflow.json +76 -0
  346. package/skills/archify/examples/production-deployment.architecture.json +71 -0
  347. package/skills/archify/examples/release-delivery.workflow.json +62 -0
  348. package/skills/archify/examples/sequence-cache-miss-request.html +14913 -0
  349. package/skills/archify/examples/web-app-rendered.html +14862 -0
  350. package/skills/archify/examples/web-app.architecture.json +46 -0
  351. package/skills/archify/examples/workflow-agent-tool-call-rendered.html +14904 -0
  352. package/skills/archify/migrations/workflow-v2.mjs +279 -0
  353. package/skills/archify/package.json +17 -0
  354. package/skills/archify/recipes/scenarios.mjs +391 -0
  355. package/skills/archify/references/authoring-contract.md +198 -0
  356. package/skills/archify/references/brand-marks.md +69 -0
  357. package/skills/archify/references/delivery-contract.md +116 -0
  358. package/skills/archify/references/viewer-runtime.md +45 -0
  359. package/skills/archify/renderers/architecture/grid.mjs +62 -0
  360. package/skills/archify/renderers/architecture/render-architecture.mjs +1078 -0
  361. package/skills/archify/renderers/dataflow/README.md +104 -0
  362. package/skills/archify/renderers/dataflow/render-dataflow.mjs +483 -0
  363. package/skills/archify/renderers/lifecycle/README.md +115 -0
  364. package/skills/archify/renderers/lifecycle/render-lifecycle.mjs +561 -0
  365. package/skills/archify/renderers/sequence/README.md +114 -0
  366. package/skills/archify/renderers/sequence/render-sequence.mjs +453 -0
  367. package/skills/archify/renderers/shared/brand-marks.mjs +563 -0
  368. package/skills/archify/renderers/shared/cli.mjs +218 -0
  369. package/skills/archify/renderers/shared/desktop-readability.mjs +26 -0
  370. package/skills/archify/renderers/shared/diagnostics.mjs +127 -0
  371. package/skills/archify/renderers/shared/engineering-profiles.mjs +157 -0
  372. package/skills/archify/renderers/shared/generated-brand-marks.mjs +2003 -0
  373. package/skills/archify/renderers/shared/generated-validators.mjs +13 -0
  374. package/skills/archify/renderers/shared/geometry.mjs +1423 -0
  375. package/skills/archify/renderers/shared/i18n.mjs +594 -0
  376. package/skills/archify/renderers/shared/layout-report.mjs +40 -0
  377. package/skills/archify/renderers/shared/legend.mjs +217 -0
  378. package/skills/archify/renderers/shared/output-path.mjs +321 -0
  379. package/skills/archify/renderers/shared/repository-evidence.mjs +235 -0
  380. package/skills/archify/renderers/shared/text-fit.mjs +49 -0
  381. package/skills/archify/renderers/shared/utils.mjs +232 -0
  382. package/skills/archify/renderers/shared/validator.mjs +86 -0
  383. package/skills/archify/renderers/workflow/README.md +223 -0
  384. package/skills/archify/renderers/workflow/render-workflow.mjs +35 -0
  385. package/skills/archify/renderers/workflow/workflow-compiler.mjs +4400 -0
  386. package/skills/archify/renderers/workflow/workflow-migration-geometry.mjs +144 -0
  387. package/skills/archify/schemas/README.md +211 -0
  388. package/skills/archify/schemas/architecture.schema.json +176 -0
  389. package/skills/archify/schemas/common.schema.json +115 -0
  390. package/skills/archify/schemas/dataflow.schema.json +243 -0
  391. package/skills/archify/schemas/lifecycle.schema.json +266 -0
  392. package/skills/archify/schemas/sequence.schema.json +223 -0
  393. package/skills/archify/schemas/workflow.schema.json +428 -0
  394. package/skills/archify/scripts/check-render-output.mjs +835 -0
  395. package/skills/archify/scripts/check-update.mjs +1667 -0
  396. package/skills/archify/scripts/render-examples.mjs +26 -0
  397. package/skills/archify/scripts/update-contract.mjs +182 -0
  398. package/skills/archify/skill-release.json +10 -0
  399. package/skills/artifacts-builder/SKILL.md +120 -0
  400. package/skills/artifacts-builder/reference/diagramas.md +123 -0
  401. package/skills/artifacts-builder/reference/estilo.md +123 -0
  402. package/skills/artifacts-builder/reference/exportar-pdf.md +56 -0
  403. package/skills/artifacts-builder/reference/graficas.md +22 -0
  404. package/skills/artifacts-builder/scripts/bundle_artifact.py +109 -0
  405. package/skills/artifacts-builder/scripts/validate_artifact.py +345 -0
  406. package/skills/xone-hotswap/SKILL.md +185 -0
  407. package/skills/xone-hotswap/references/comandos.md +706 -0
  408. package/skills/xone-hotswap/references/conexion-y-despliegue.md +226 -0
@@ -1 +1 @@
1
- {"version":3,"file":"turnoReal.js","sourceRoot":"","sources":["../../src/agent/turnoReal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"turnoReal.js","sourceRoot":"","sources":["../../src/agent/turnoReal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * De dónde sale lo que `core/version.ts` imprime: el `package.json` y, si esto es una copia
3
+ * de git, su commit y si hay cambios sin commitear.
4
+ *
5
+ * Vive en `agent/` y no en `core/` por la regla de siempre: aquí se toca el disco y se lanza
6
+ * un proceso. Lo que decide cómo se DICE es puro y está al otro lado.
7
+ */
8
+ import { execFileSync } from "node:child_process";
9
+ import { readFileSync } from "node:fs";
10
+ import { fileURLToPath } from "node:url";
11
+ import { dirname, resolve } from "node:path";
12
+ /** La raíz del PAQUETE, igual que `RAIZ_SKILLS`: desde este módulo, no desde el cwd. */
13
+ const RAIZ = resolve(dirname(fileURLToPath(import.meta.url)), "..", "..");
14
+ /**
15
+ * Qué versión está corriendo. **Nunca lanza**: es una línea informativa, y un arranque que
16
+ * reventara por no poder leer su propio commit sería absurdo.
17
+ *
18
+ * El `git` se llama con `cwd` en la raíz del PAQUETE —no en la del usuario—, porque lo que
19
+ * se pregunta es con qué código corre xonecode y no qué hay en su proyecto. Con un tope
20
+ * corto: esto va en el camino del arranque, y un git colgado no puede retrasarlo.
21
+ */
22
+ export function versionEnMarcha(raiz = RAIZ) {
23
+ let version = "desconocida";
24
+ try {
25
+ const crudo = JSON.parse(readFileSync(resolve(raiz, "package.json"), "utf8"));
26
+ if (typeof crudo.version === "string" && crudo.version !== "")
27
+ version = crudo.version;
28
+ }
29
+ catch {
30
+ // Sin `package.json` legible no hay versión que dar, y se dice así.
31
+ }
32
+ const git = (args) => {
33
+ try {
34
+ return execFileSync("git", args, { cwd: raiz, encoding: "utf8", timeout: 2000, stdio: ["ignore", "pipe", "ignore"] }).trim();
35
+ }
36
+ catch {
37
+ return undefined;
38
+ }
39
+ };
40
+ const commit = git(["rev-parse", "--short", "HEAD"]);
41
+ if (commit === undefined || commit === "")
42
+ return { version };
43
+ // `--porcelain` vacío es «limpio». Que FALLE no es limpio: es que no se pudo mirar, y eso
44
+ // se propaga como ausente para que la línea pueda decirlo en vez de afirmar de más.
45
+ const estado = git(["status", "--porcelain"]);
46
+ return { version, commit, ...(estado === undefined ? {} : { sucio: estado !== "" }) };
47
+ }
48
+ //# sourceMappingURL=versionEnDisco.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versionEnDisco.js","sourceRoot":"","sources":["../../src/agent/versionEnDisco.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAG7C,wFAAwF;AACxF,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAE1E;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe,IAAI;IACjD,IAAI,OAAO,GAAG,aAAa,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAA0B,CAAC;QACvG,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE;YAAE,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IACzF,CAAC;IAAC,MAAM,CAAC;QACP,oEAAoE;IACtE,CAAC;IAED,MAAM,GAAG,GAAG,CAAC,IAAc,EAAsB,EAAE;QACjD,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/H,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC9D,0FAA0F;IAC1F,oFAAoF;IACpF,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC;AACxF,CAAC"}
@@ -1,18 +1,122 @@
1
- import { createDeepAgent } from "deepagents";
1
+ import { createDeepAgent, createFilesystemMiddleware } from "deepagents";
2
+ import { promptDeAgente, repartirSkills } from "../core/agentes.js";
3
+ import { RunnableLambda } from "@langchain/core/runnables";
4
+ import { AIMessage } from "@langchain/core/messages";
2
5
  import { MemorySaver } from "@langchain/langgraph";
3
- import { backendDelProyecto, sinVistasAplanadas } from "./proyecto.js";
4
- import { PERFILES, permisosDe, hitlDe } from "./perfiles.js";
6
+ import { backendDeAgente } from "./proyecto.js";
7
+ import { permisosDe, hitlDe } from "./perfiles.js";
8
+ import { crearBusquedaRegex } from "./busquedaRegex.js";
9
+ import { inventarioDelProyecto } from "./escrituraExterna.js";
5
10
  import { middlewareTextoDeTool } from "./textoDeTool.js";
6
- import { createTokenTrackingMiddleware } from "../vendor/tokenTracking.js";
7
- export const PROMPT_ORQUESTADOR = [
8
- "Eres el orquestador de un harness de desarrollo para la plataforma XOne.",
9
- "NO tienes herramientas: tu único trabajo es entender la petición y delegar.",
10
- "Delega en `docs` las preguntas técnicas de la plataforma; en `planner` lo que",
11
- "exija inspeccionar el proyecto; en `dev` el desarrollo; en `mockup` lo visual.",
12
- "Cuando varias tareas sean independientes, delégalas EN EL MISMO mensaje para",
13
- "que corran a la vez.",
14
- "No afirmes que un cambio se ha aplicado si no te lo ha confirmado el especialista.",
15
- ].join(" ");
11
+ import { resumenDeContexto } from "./resumenDeContexto.js";
12
+ import { createTokenTrackingMiddleware, } from "../vendor/tokenTracking.js";
13
+ /**
14
+ * El prompt del orquestador, GENERADO a partir de los subagentes que hay.
15
+ *
16
+ * Era una constante que nombraba a `docs`, `planner`, `dev` y `mockup` a pelo. Desde que los
17
+ * subagentes son ficheros que el usuario escribe y borra, eso se queda mintiendo el primer
18
+ * día: mandarle delegar en `mockup` cuando `mockup` no existe es la misma clase de botón
19
+ * muerto que este repo lleva semanas quitando de la interfaz.
20
+ *
21
+ * Lo que se conserva es lo GENERAL —no tienes tools, delega, encadena con handoff, no
22
+ * afirmes lo que no te han confirmado—, y lo específico sale de la propia lista. La línea
23
+ * del encadenado para diagramas solo se escribe si existen los dos agentes de los que
24
+ * habla: una instrucción sobre un especialista que no está no la puede seguir nadie.
25
+ */
26
+ /**
27
+ * Quién es el orquestador a efectos de permisos: SOLO LECTURA.
28
+ *
29
+ * Es un `QuienDecidePermisos` y no un `Agente` porque el orquestador no es un especialista
30
+ * —no se puede dar de alta, ni borrar, ni editar desde Ajustes—, pero sus tools de fichero
31
+ * son las mismas y tienen que pasar por la misma función. Ver dónde se usa, en
32
+ * `construirAgente`, para el agujero que esto cierra.
33
+ */
34
+ export const PERFIL_DEL_ORQUESTADOR = { nombre: "orquestador", soloLectura: true };
35
+ export function promptOrquestador(agentes) {
36
+ const hay = (n) => agentes.some((a) => a.nombre === n);
37
+ return [
38
+ "Eres el orquestador de un harness de desarrollo para la plataforma XOne.",
39
+ // Decía «NO tienes herramientas», y era falso: tiene las seis de fichero. Ahora son de
40
+ // SOLO LECTURA (`PERFIL_DEL_ORQUESTADOR`), así que la frase dice lo que de verdad puede.
41
+ "NO tienes herramientas para MODIFICAR nada: tu único trabajo es entender la petición y delegar.",
42
+ agentes.length === 0
43
+ ? "AVISO: ahora mismo no hay ningún especialista dado de alta, así que no puedes delegar en nadie. Dilo en vez de intentar resolverlo tú."
44
+ : `Los especialistas disponibles son: ${agentes.map((a) => a.nombre).join(", ")}. Elige por su descripción.`,
45
+ hay("planner") && hay("mockup")
46
+ ? "Para diagramas o esquemas de la app, delega en `mockup`; si deben reflejar el código real, encarga PRIMERO el análisis a `planner` y usa su resultado antes de dibujar."
47
+ : "",
48
+ "Los especialistas no comparten el transcript: al encadenarlos, incluye en la descripción",
49
+ "de la siguiente `task` un bloque `HANDOFF DE PLANNER` compacto con los hechos verificados,",
50
+ "rutas/evidencias y lagunas. No pidas al siguiente especialista redescubrir esos hechos.",
51
+ "Cuando varias tareas sean independientes, delégalas EN EL MISMO mensaje para",
52
+ "que corran a la vez.",
53
+ "No afirmes que un cambio se ha aplicado si no te lo ha confirmado el especialista.",
54
+ ]
55
+ .filter((l) => l !== "")
56
+ .join(" ");
57
+ }
58
+ /**
59
+ * Indicaciones que el modelo recibe junto a las tools reales de fichero.
60
+ *
61
+ * No crean herramientas ni rebajan permisos: hacen explícito el destino correcto
62
+ * para que una skill no confunda su propia carpeta de instrucciones con la salida.
63
+ */
64
+ export const DESCRIPCIONES_FICHEROS = {
65
+ read_file: [
66
+ "Lee únicamente el fragmento de un fichero necesario para responder.",
67
+ "Indica siempre `offset` y `limit`; para el reconocimiento inicial usa",
68
+ "`offset=0, limit=50`. No releas la misma ruta y el mismo rango: usa la",
69
+ "evidencia ya obtenida o una página distinta solo si hace falta.",
70
+ ].join(" "),
71
+ write_file: [
72
+ "Escribe un fichero del proyecto en una ruta absoluta.",
73
+ "Para diagramas, esquemas, arquitecturas y flujos: carga primero la skill `archify`;",
74
+ "no escribas nunca dentro de `/skills`. Si el usuario pide el resultado renderizado,",
75
+ "guárdalo como HTML autocontenido en `/artefactos/<nombre>.html`.",
76
+ "Para dashboards, informes o tablas HTML interactivas carga `artifacts-builder` y usa",
77
+ "también `/artefactos/<nombre>.html`. `/artefactos/` NO es del proyecto: es la carpeta de",
78
+ "esta sesión, no pasa por aprobación, no entra en git y no sube a CloudStudio — un HTML",
79
+ "escrito fuera de ella acaba dentro de la app XOne del usuario. La ruta",
80
+ "`/MEMORIA_PROYECTO.md` es exclusivamente",
81
+ "para hechos confirmados, decisiones y pendientes útiles; no guardes transcripciones ni secretos.",
82
+ ].join(" "),
83
+ edit_file: [
84
+ "Modifica un fichero existente del proyecto en una ruta absoluta.",
85
+ "No modifiques `/skills`: son instrucciones de solo lectura. Para actualizar la memoria",
86
+ "usa solo `/MEMORIA_PROYECTO.md` y conserva su contenido útil.",
87
+ ].join(" "),
88
+ grep: [
89
+ "Busca texto LITERAL (no regex) de forma progresiva para ahorrar contexto.",
90
+ "Primero acota con `path` y `glob`; para localizar candidatos usa",
91
+ "`output_mode=\"files_with_matches\"` o `output_mode=\"count\"`.",
92
+ "Usa `output_mode=\"content\"` solo con un patrón específico y lee después",
93
+ "el fragmento necesario con `read_file` (offset y limit). La búsqueda devuelve",
94
+ "como máximo 100 coincidencias salvo que justifiques subir `max_count`.",
95
+ ].join(" "),
96
+ };
97
+ /**
98
+ * Presupuesto de las herramientas de ficheros.
99
+ *
100
+ * DeepAgents 1.13 incorpora `max_count` y `output_mode` en `grep`. El valor por
101
+ * defecto de la librería (1.000) sigue siendo demasiado generoso para un agente
102
+ * que explora proyectos XOne: 100 resultados bastan para localizar candidatos y
103
+ * el modelo puede subirlo explícitamente en una búsqueda excepcional.
104
+ *
105
+ * A partir de 6k tokens la salida se conserva bajo `/large_tool_results/` y se
106
+ * sustituye por una referencia paginable. Así una lectura o búsqueda accidental
107
+ * no consume toda la ventana antes de que actúe el resumen de conversación.
108
+ *
109
+ * **Esa carpeta se monta FUERA del proyecto** (`core/descargas.ts`,
110
+ * `agent/proyecto.ts#backendConDescargas`), y hasta el 10-09-2026 no: la escribe la librería
111
+ * llamando al backend directamente, esa ruta no estaba montada en ninguna parte y caía en el
112
+ * `FilesystemBackend` de la raíz. Medido en el AppDemo real del usuario, 26 KB de salida
113
+ * cruda de una tool dentro de la app XOne y commiteados. Bajar este tope no era el arreglo:
114
+ * el desalojo es la función, el fallo era el sitio.
115
+ */
116
+ export const OPCIONES_BUSQUEDA_FICHEROS = {
117
+ grepMaxCount: 100,
118
+ toolTokenLimitBeforeEvict: 6_000,
119
+ };
16
120
  /**
17
121
  * El agente real.
18
122
  *
@@ -29,17 +133,95 @@ export const PROMPT_ORQUESTADOR = [
29
133
  * 4. **El HITL va en las tools de fichero**, que en la v1 son las que escriben.
30
134
  */
31
135
  export async function construirAgente(opciones) {
32
- const backend = sinVistasAplanadas(backendDelProyecto(opciones.raiz), opciones.ficheros);
136
+ // Las cuatro capas y su orden están en `backendDeAgente`, que vive en `proyecto.ts` para
137
+ // poder PROBARSE: aquí no había forma, porque `construirAgente` se simula en todos los
138
+ // tests que lo tocan y el cableado se quedaba sin nadie mirándolo.
139
+ const backend = backendDeAgente({
140
+ raiz: opciones.raiz,
141
+ ficheros: opciones.ficheros,
142
+ ...(opciones.artefactos === undefined ? {} : { artefactos: opciones.artefactos }),
143
+ ...(opciones.adjuntos === undefined ? {} : { adjuntos: opciones.adjuntos }),
144
+ });
33
145
  // Si no hay tracker, no se añade el middleware: es opcional a propósito arriba.
34
- const middlewareTracker = opciones.tracker ? [createTokenTrackingMiddleware(opciones.tracker)] : [];
35
- const subagentes = Object.values(PERFILES).map((perfil) => ({
146
+ const middlewareTracker = (origen) => opciones.tracker
147
+ ? [
148
+ createTokenTrackingMiddleware(opciones.tracker, alContarDelTracker(origen, opciones.diagnostico, opciones.alContarTokens)),
149
+ ]
150
+ : [];
151
+ // El catálogo, una vez por construcción y no una por agente: `catalogo()` es un puerto y
152
+ // llamarlo N veces para preguntarle lo mismo es trabajo por nada.
153
+ const catalogoDeSkills = new Set(opciones.skills.catalogo().map((s) => s.nombre));
154
+ /**
155
+ * Los que corren FUERA: Claude Code y compañía.
156
+ *
157
+ * Entran como `CompiledSubAgent` —`{name, description, runnable}`, que deepagents acepta
158
+ * junto a los normales— y no como `SubAgent`: eso último es modelo + prompt + tools, y
159
+ * aquí no hay modelo nuestro que poner. Con esto los tres motores llegan al orquestador
160
+ * por el MISMO `task`, y él no tiene que saber de qué está hecho cada especialista.
161
+ *
162
+ * Se pregunta si el motor está DISPONIBLE antes de montarlo. Un especialista que el
163
+ * orquestador puede elegir y que revienta en cuanto lo elige es un botón muerto dentro del
164
+ * grafo: peor que uno de interfaz, porque el que lo pulsa es el modelo y se lo cree.
165
+ */
166
+ const externos = [];
167
+ for (const agente of opciones.agentes.filter((a) => a.motor !== "modelo")) {
168
+ const motor = agente.motor;
169
+ if (!(await opciones.subagenteExterno.disponible(motor)))
170
+ continue;
171
+ externos.push({
172
+ name: agente.nombre,
173
+ description: agente.descripcion,
174
+ runnable: RunnableLambda.from(async (entrada) => {
175
+ // La tarea es el último mensaje que le pasa el orquestador. El hijo no comparte
176
+ // transcript —es un proceso aparte, con su propia sesión—, así que lo que no venga
177
+ // en esa descripción no existe para él: es la misma regla del handoff que el prompt
178
+ // del orquestador ya impone entre especialistas.
179
+ const ultimo = entrada.messages?.at(-1);
180
+ const tarea = typeof ultimo?.content === "string" ? ultimo.content : String(ultimo?.content ?? "");
181
+ const texto = await opciones.subagenteExterno.correr({
182
+ motor,
183
+ cwd: opciones.raiz,
184
+ /**
185
+ * Sus instrucciones MÁS el inventario del proyecto. Ese añadido no es un lujo: un
186
+ * hijo de Claude Code no tiene ninguna herramienta para listar carpetas —medido—,
187
+ * así que sin él lee a ciegas nombres inventados y concluye que el proyecto está
188
+ * vacío. Se le dice lo que el harness ya sabe, que es el patrón de `/adjuntos/`.
189
+ */
190
+ instrucciones: `${promptDeAgente(agente, repartirSkills(agente, catalogoDeSkills))}\n\n${inventarioDelProyecto(opciones.ficheros)}`,
191
+ tarea,
192
+ // El modelo del producto que pida su `.md`, si pide alguno. Ausente = el que el
193
+ // agente externo use por su cuenta, que es lo de siempre.
194
+ ...(agente.modelo === undefined ? {} : { modelo: agente.modelo }),
195
+ /**
196
+ * Lo que diga su `.md`, y nada más. Es la PRIMERA de dos puertas: con esto en
197
+ * cierto, cada escritura pasa además por la política de la sesión y por las
198
+ * guardas de ruta (`agent/escrituraExterna.ts`). Un agente de solo lectura no
199
+ * llega a preguntar.
200
+ */
201
+ permitirEscritura: !agente.soloLectura,
202
+ // Para poder decir QUIÉN pide la escritura en la petición de aprobación: la tool
203
+ // es la misma para todos los especialistas, así que sin esto el diff diría
204
+ // «alguien quiere escribir». Es el papel del `[dev]` que `hitlDe` mete en la
205
+ // descripción de un interrupt del grafo.
206
+ agente: agente.nombre,
207
+ });
208
+ return { messages: [new AIMessage(texto)] };
209
+ }),
210
+ });
211
+ }
212
+ const subagentes = opciones.agentes
213
+ .filter((a) => a.motor === "modelo")
214
+ .map((perfil) => ({
36
215
  name: perfil.nombre,
37
216
  description: perfil.descripcion,
38
- systemPrompt: promptDe(perfil.nombre, opciones.skills),
39
- // **NO se pasa `tools`.** Era un bug: `SubAgent.tools` es `StructuredTool[]` —objetos,
40
- // para tools PROPIAS— y pasarle los NOMBRES de las de fichero las sustituía por
41
- // cadenas, dejando al especialista sin ninguna capacidad real. Compilaba (por el
42
- // `as any` de `createDeepAgent`) y reventaba al ejecutar.
217
+ systemPrompt: promptDeAgente(perfil, repartirSkills(perfil, catalogoDeSkills)),
218
+ // Los subagentes no heredan las skills del orquestador. Se entregan como fuentes
219
+ // directas para mantener cada perfil limitado a su catálogo declarado.
220
+ skills: rutasDeSkills(perfil, catalogoDeSkills),
221
+ // `tools` solo lleva tools PROPIAS. Pasarle los NOMBRES de las de fichero las sustituía
222
+ // por cadenas, dejando al especialista sin ninguna capacidad real. Las de fichero las
223
+ // monta el middleware; regex_search es una tool real y confinada al mismo backend.
224
+ tools: [crearBusquedaRegex(backend)],
43
225
  //
44
226
  // Las tools de fichero las monta el `FilesystemMiddleware` a partir del backend, y
45
227
  // quien las acota por NOMBRE es su propia opción `tools` (con la restricción de que
@@ -50,21 +232,77 @@ export async function construirAgente(opciones) {
50
232
  interruptOn: hitlDe(perfil),
51
233
  // En CADA especialista, no solo en el orquestador: son ellos los que llaman a las
52
234
  // tools de fichero, así que es su siguiente llamada al modelo la que reventaba.
53
- middleware: [middlewareTextoDeTool(), ...middlewareTracker],
54
- model: opciones.modelos.paraPapel(perfil.soloLectura ? "rapido" : "trabajo"),
235
+ // El nombre coincide con el middleware por defecto de DeepAgents y lo sustituye: así
236
+ // aplica tanto al especialista como al orquestador.
237
+ middleware: [
238
+ createFilesystemMiddleware({
239
+ backend,
240
+ permissions: permisosDe(perfil),
241
+ customToolDescriptions: DESCRIPCIONES_FICHEROS,
242
+ ...OPCIONES_BUSQUEDA_FICHEROS,
243
+ }),
244
+ resumenDeContexto(backend),
245
+ middlewareTextoDeTool(),
246
+ ...middlewareTracker(perfil.nombre),
247
+ ],
248
+ // El modelo que fije el agente en su fichero, y si no lo fija, el del papel que le
249
+ // toca por lo que hace: `rapido` para el que solo lee, `trabajo` para el que escribe.
250
+ // Fijarlo es la excepción y no la norma — un agente con modelo escrito se queda ahí
251
+ // aunque el usuario cambie el suyo con `/modelo`, que es justo lo que quiere quien
252
+ // escribe «este revisor corre con Claude» y no lo que quiere nadie más.
253
+ model: perfil.modelo === undefined
254
+ ? opciones.modelos.paraPapel(perfil.soloLectura ? "rapido" : "trabajo")
255
+ : opciones.modelos.paraModelo(perfil.modelo),
55
256
  }));
56
257
  return createDeepAgent({
57
258
  model: opciones.modelos.paraPapel("rapido"),
58
- systemPrompt: PROMPT_ORQUESTADOR,
259
+ systemPrompt: promptOrquestador(opciones.agentes),
59
260
  backend,
261
+ interruptOn: hitlDe(PERFIL_DEL_ORQUESTADOR),
60
262
  checkpointer: opciones.checkpointer ?? new MemorySaver(),
61
263
  // El contenido de los `ToolMessage` va como TEXTO al modelo. Sin esto, un turno real
62
264
  // revienta tras 8-10 tools con «Non string tool message content is not supported» —
63
265
  // y no es de langchain ni de deepagents, sino de `@langchain/ollama` (ver
64
266
  // `textoDeTool.ts`). Medido con dos modelos, nube y local.
65
- middleware: [middlewareTextoDeTool(), ...middlewareTracker],
267
+ middleware: [
268
+ createFilesystemMiddleware({
269
+ backend,
270
+ /**
271
+ * EL ORQUESTADOR VA DE SOLO LECTURA, que es lo que su propio prompt afirma.
272
+ *
273
+ * Esto faltaba, y fue un agujero declarado durante toda una tanda: `permissions`
274
+ * solo lo recibían los subagentes, así que las seis tools de fichero de aquí
275
+ * corrían sin ninguna de las denegaciones estructurales. Medido: contestaba
276
+ * «Successfully wrote» a `/.env`, a `/skills/pwn.txt` —que aterrizaba en la
277
+ * carpeta `skills/` de ESTE repo, o sea en las instrucciones del propio harness—
278
+ * y, desde los adjuntos, en `~/.xonecode/tareas/<id>/adjuntos/`, fuera del
279
+ * proyecto. Lo único que lo tapaba era el prompt, que es exactamente lo que este
280
+ * repo no acepta como barrera. Y el HITL tampoco alcanzaba: `hitlDe` se monta por
281
+ * subagente, así que una escritura de aquí no pasaba por ninguna aprobación.
282
+ *
283
+ * **Se le ponen permisos en vez de quitarle las tools**, que era la otra opción
284
+ * sobre la mesa, y el motivo es el comentario de abajo: este middleware SUSTITUYE
285
+ * al de por omisión de deepagents porque comparte nombre. Quitarlo podría
286
+ * reinstalar el suyo —sin permisos— y reabrir el agujero por accidente; ponerle
287
+ * `permissions` no puede.
288
+ *
289
+ * `soloLectura: true` añade `deny write /**`, así que el orquestador conserva
290
+ * `read`/`ls`/`glob`/`grep` para orientarse y no puede tocar el disco por ninguna
291
+ * ruta. `interruptOn` va por espejo con la rama de los subagentes: `hitlDe`
292
+ * devuelve `{}` para un perfil de solo lectura —no hay nada que aprobar—, y
293
+ * escribirlo aquí es lo que hace que las dos ramas se lean iguales.
294
+ */
295
+ permissions: permisosDe(PERFIL_DEL_ORQUESTADOR),
296
+ customToolDescriptions: DESCRIPCIONES_FICHEROS,
297
+ ...OPCIONES_BUSQUEDA_FICHEROS,
298
+ }),
299
+ resumenDeContexto(backend),
300
+ middlewareTextoDeTool(),
301
+ ...middlewareTracker("orquestador"),
302
+ ],
66
303
  subagents: [
67
304
  ...subagentes,
305
+ ...externos,
68
306
  {
69
307
  name: "general-purpose",
70
308
  description: "NO USAR. No tiene ninguna capacidad de XOne, así que cualquier respuesta sobre el proyecto o la plataforma sería inventada.",
@@ -76,31 +314,34 @@ export async function construirAgente(opciones) {
76
314
  });
77
315
  }
78
316
  /**
79
- * El prompt de un especialista, con sus skills dentro.
317
+ * Rutas virtuales que SkillsMiddleware carga de forma progresiva para un agente.
318
+ *
319
+ * Recibe el AGENTE y no su nombre: antes buscaba el perfil en `PERFILES`, y con subagentes
320
+ * escritos por el usuario ese `Record` no tiene su entrada — `perfil.skills` habría
321
+ * reventado con «cannot read properties of undefined» en cuanto alguien creara el primero.
322
+ *
323
+ * Solo las que EXISTEN. Una ruta a una skill que no está haría que el middleware fallara al
324
+ * montarla; que falte se dice en el prompt (`promptDeAgente`), que es donde se puede leer.
325
+ */
326
+ export function rutasDeSkills(agente, disponibles) {
327
+ return agente.skills.filter((skill) => disponibles.has(skill)).map((skill) => `/skills/${skill}/`);
328
+ }
329
+ /**
330
+ * Lo que se hace cada vez que el tracker cuenta: avisar a los DOS que lo esperan.
80
331
  *
81
- * Provisional a propósito: los prompts pasan a ficheros `.md` en la fase 9, y hasta
82
- * entonces vivir aquí es mejor que vivir repartidos.
332
+ * **Extraída y exportada porque uno de los dos se cayó**, y en verde: el callback nació
333
+ * llamando solo al diagnóstico, así que el aviso de consumo tenía un único disparador —el
334
+ * de un agente EXTERNO— y una sesión normal subía sus tokens en silencio. Medido en la
335
+ * pantalla del usuario: el contador de la web no apareció nunca. Con la composición dentro
336
+ * de `construirAgente`, que todos sus tests doblan, no había dónde cazarlo.
337
+ *
338
+ * `alContarTokens` no lleva el uso dentro a propósito: quien escucha tiene el tracker —es
339
+ * él quien lo pasó— y dos fuentes para el mismo número son dos números que divergen.
83
340
  */
84
- export function promptDe(nombre, skills) {
85
- const perfil = PERFILES[nombre];
86
- const disponibles = new Set(skills.catalogo().map((s) => s.nombre));
87
- const suyas = perfil.skills.filter((s) => disponibles.has(s));
88
- const faltan = perfil.skills.filter((s) => !disponibles.has(s));
89
- return [
90
- perfil.descripcion,
91
- "",
92
- "REGLAS DE XONE, no negociables:",
93
- "- No es desarrollo web: no existen DOM, React, Vue, ni `async/await` en el runtime.",
94
- "- La fuente de una colección es su `.xne`. Los `.xml` los genera Studio y no se tocan.",
95
- "- No inventes atributos XML, funciones ni propiedades CSS: XOne ignora lo desconocido",
96
- " en silencio, así que un invento no da error — da un bug mudo.",
97
- "",
98
- suyas.length ? `Tus skills: ${suyas.join(", ")}. Cárgalas antes de responder.` : "",
99
- // Patrón 4: un doble nunca se disfraza. Si falta una skill, se dice — no se calla.
100
- faltan.length ? `AVISO: te faltan estas skills y no las tienes: ${faltan.join(", ")}.` : "",
101
- perfil.soloLectura ? "No modificas nada." : "Tus escrituras requieren aprobación humana. Si te la rechazan, no insistas: explica qué pretendías y por qué.",
102
- ]
103
- .filter(Boolean)
104
- .join("\n");
341
+ export function alContarDelTracker(origen, diagnostico, alContarTokens) {
342
+ return (uso) => {
343
+ diagnostico?.modelo(origen, uso);
344
+ alContarTokens?.();
345
+ };
105
346
  }
106
347
  //# sourceMappingURL=xoneAgent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"xoneAgent.js","sourceRoot":"","sources":["../../src/agent/xoneAgent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xoneAgent.js","sourceRoot":"","sources":["../../src/agent/xoneAgent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Extracción del ZIP que devuelve CloudStudio.
3
+ *
4
+ * `fflate` es JS puro: no hay binario nativo que compilar ni `unzip` del sistema que
5
+ * falte en Windows, y la suite puede fabricar un ZIP en el propio test sin red.
6
+ */
7
+ import { mkdirSync, writeFileSync } from "node:fs";
8
+ import { dirname, resolve, sep } from "node:path";
9
+ import { unzipSync } from "fflate";
10
+ /**
11
+ * La guarda de contención: una ruta con `../` o absoluta escribiría fuera de la raíz.
12
+ * Se comprueba sobre la ruta YA resuelta, porque comparar cadenas antes de resolver deja
13
+ * pasar `a/../../x`. Se aborta entero: un ZIP que intenta esto no es de fiar en ninguna
14
+ * de sus entradas.
15
+ *
16
+ * Se exporta porque la vía degradada (`agent/descarga.ts`) escribe y BORRA con rutas que
17
+ * vienen del JSON del servidor exactamente igual de crudas: tener la guarda solo en el
18
+ * camino del ZIP era la asimetría, no una decisión.
19
+ */
20
+ export function destinoSeguro(raiz, entrada) {
21
+ const base = resolve(raiz);
22
+ const destino = resolve(base, entrada);
23
+ if (destino !== base && !destino.startsWith(base + sep)) {
24
+ throw new Error(`«${entrada}» apunta fuera de la raíz del proyecto`);
25
+ }
26
+ return destino;
27
+ }
28
+ /** Devuelve las rutas escritas, relativas y en POSIX (las del manifiesto y las de MCP). */
29
+ export function extraerZipBase64(base64, raiz) {
30
+ let entradas;
31
+ try {
32
+ entradas = unzipSync(new Uint8Array(Buffer.from(base64, "base64")));
33
+ }
34
+ catch (error) {
35
+ // El mensaje no lleva el contenido: acaba en logs y en capturas de pantalla.
36
+ throw new Error(`la descarga no es un ZIP válido (${error.message})`);
37
+ }
38
+ const escritas = [];
39
+ const planificadas = Object.entries(entradas)
40
+ // Las entradas de directorio vienen con barra final y sin contenido.
41
+ .filter(([nombre]) => !nombre.endsWith("/"))
42
+ .map(([nombre, datos]) => ({ nombre, datos, destino: destinoSeguro(raiz, nombre) }));
43
+ // Se resuelven TODAS las rutas antes de escribir ninguna: si una es maliciosa, no
44
+ // queda medio proyecto en disco.
45
+ for (const { nombre, datos, destino } of planificadas) {
46
+ mkdirSync(dirname(destino), { recursive: true });
47
+ writeFileSync(destino, datos);
48
+ escritas.push(nombre.split(sep).join("/"));
49
+ }
50
+ return escritas;
51
+ }
52
+ //# sourceMappingURL=zip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zip.js","sourceRoot":"","sources":["../../src/agent/zip.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAQ,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAAe;IACzD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,IAAI,OAAO,wCAAwC,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,IAAY;IAC3D,IAAI,QAAoC,CAAC;IACzC,IAAI,CAAC;QACH,QAAQ,GAAG,SAAS,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,6EAA6E;QAC7E,MAAM,IAAI,KAAK,CAAC,oCAAqC,KAAe,CAAC,OAAO,GAAG,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC3C,qEAAqE;SACpE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAC3C,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAEvF,kFAAkF;IAClF,iCAAiC;IACjC,KAAK,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,YAAY,EAAE,CAAC;QACtD,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * El acuse de `/modelo` — la frase tiene UN solo hogar.
3
+ *
4
+ * `consola.ts` la escribe y `tui/correrTui.ts` la re-parsea para actualizar la
5
+ * sidebar (el eco de `escribir` es la única costura que tienen los manejadores de
6
+ * consola para avisar de un cambio en caliente). Antes eran dos copias — el literal
7
+ * y un regex escrito a mano — sin nada que probara que decían lo mismo: si alguien
8
+ * retocaba la frase, la sidebar dejaba de enterarse sin que ningún test fallara.
9
+ * Escribir y leer viven aquí, y el test de ida y vuelta ata el par.
10
+ */
11
+ import { PAPELES } from "../core/modelos.js";
12
+ /** El acuse de un cambio de modelo: el papel ausente es «los tres papeles a la vez». */
13
+ export function acuseDeModelo(papel, modelo) {
14
+ return papel === undefined
15
+ ? `modelo (los tres papeles): ${modelo}\n`
16
+ : `modelo ${papel}: ${modelo}\n`;
17
+ }
18
+ const LOS_TRES = /^modelo \(los tres papeles\): (.+)\n$/;
19
+ const UN_PAPEL = new RegExp(`^modelo (${PAPELES.join("|")}): (.+)\\n$`);
20
+ /** El acuse parseado: `{ modelo }` si cambiaron los tres, `{ papel, modelo }` si cambió uno. */
21
+ export function modeloDeAcuse(texto) {
22
+ const tres = LOS_TRES.exec(texto);
23
+ if (tres)
24
+ return { modelo: tres[1] };
25
+ const uno = UN_PAPEL.exec(texto);
26
+ if (uno)
27
+ return { papel: uno[1], modelo: uno[2] };
28
+ return undefined;
29
+ }
30
+ //# sourceMappingURL=acuseDeModelo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acuseDeModelo.js","sourceRoot":"","sources":["../../src/cli/acuseDeModelo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,wFAAwF;AACxF,MAAM,UAAU,aAAa,CAAC,KAAwB,EAAE,MAAc;IACpE,OAAO,KAAK,KAAK,SAAS;QACxB,CAAC,CAAC,8BAA8B,MAAM,IAAI;QAC1C,CAAC,CAAC,UAAU,KAAK,KAAK,MAAM,IAAI,CAAC;AACrC,CAAC;AAED,MAAM,QAAQ,GAAG,uCAAuC,CAAC;AACzD,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,YAAY,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAExE,gGAAgG;AAChG,MAAM,UAAU,aAAa,CAC3B,KAAa;IAEb,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAE,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,GAAG;QAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAU,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAE,EAAE,CAAC;IAC5D,OAAO,SAAS,CAAC;AACnB,CAAC"}