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
@@ -0,0 +1,127 @@
1
+ import { closeSync, existsSync, mkdirSync, openSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { SqliteSaver } from "../vendor/sqliteSaver.js";
4
+ /**
5
+ * El checkpointer PERSISTENTE de un proyecto: la memoria del agente entre arranques.
6
+ *
7
+ * Hasta aquí el hilo vivía en un `MemorySaver` que moría con el proceso, así que reabrir
8
+ * una sesión era RELEER —la conversación a la vista y el agente sin recordar nada—, y la
9
+ * interfaz lo decía con el aviso de «conversación reabierta». Con esto el hilo sobrevive.
10
+ *
11
+ * Seis decisiones, y ninguna es de conveniencia:
12
+ *
13
+ * - **Uno por PROYECTO, no por sesión**, particionado por `thread_id`. Es la forma que la
14
+ * librería asume —`deleteThread(threadId)` existe justamente para eso— y evita tener
15
+ * tantos ficheros y tantas conexiones abiertas como conversaciones guardadas.
16
+ * - **El `thread_id` ES el id de la sesión.** Sin esa igualdad no hay nada que reanudar: al
17
+ * reabrir hay que preguntar por la misma cadena con la que se escribió. Por eso el id de
18
+ * sesión pasa a decidirse al ABRIR (`web/servidor/vestibulo.ts`) y no en el primer
19
+ * volcado — lo que sigue siendo perezoso es la entrada del índice, que es lo que
20
+ * ensuciaría la barra con sesiones vacías.
21
+ * - **Dentro de `.xonecode/`**, que está denegada al agente (`permisosDe`), excluida del
22
+ * diff de Revisión y no sube nunca a CloudStudio. No es cosmético: un checkpoint lleva la
23
+ * lista de mensajes ENTERA —los argumentos de cada tool, el contenido de cada
24
+ * `write_file`, la respuesta de cada tool remota—, o sea justo lo que el transcript de
25
+ * `sesiones.ts` no puede llevar por construcción. Este fichero es de la misma clase que
26
+ * `auth.json` y por eso se crea con modo **0600**.
27
+ * - **WAL viene de serie** (medido contra `better-sqlite3` 13.0.3: `journal_mode` es `wal`
28
+ * nada más abrir), que es lo que hace que dos procesos sobre el mismo proyecto —una
29
+ * consola de terminal y la web— no se pisen. Con `MemorySaver` el problema no existía
30
+ * porque cada proceso tenía el suyo.
31
+ * - **La consola de TERMINAL no lo usa.** Su hilo es un uuid nuevo en cada arranque y no hay
32
+ * índice de sesiones donde reanudarlo, así que persistirlo solo dejaría hilos que nadie
33
+ * puede volver a abrir engordando el fichero. Persistir es de quien tiene identidad que
34
+ * reanudar; ahí sigue el `MemorySaver`, que además es la omisión de `construirAgente`.
35
+ * - **Un fallo al abrirlo no puede tumbar el turno.** Devuelve `undefined` y quien llama
36
+ * cae al checkpointer en memoria: se pierde la memoria entre arranques, que es lo que ya
37
+ * pasaba, y se dice — nunca se pierde la conversación en curso.
38
+ *
39
+ * Y dos cosas MEDIDAS, no deducidas, que cambian lo que hay que hacer:
40
+ *
41
+ * - **Una aprobación que se quedó sin contestar rompía el primer mensaje tras reabrir**, y
42
+ * la primera medida no lo vio porque usaba la forma de grafo equivocada. Con un grafo de
43
+ * un nodo, donde `START` va al nodo interrumpido, llegar con un mensaje humano normal
44
+ * reejecuta ese nodo y vuelve a preguntar: inofensivo. El grafo del agente no tiene esa
45
+ * forma —`START` va al MODELO y el nodo parado es el de tools—, así que lo que le llegaba
46
+ * al modelo era `human → ai(tool_calls) → human`, con un `AIMessage` de llamadas y ningún
47
+ * `ToolMessage` detrás: Gemini y OpenAI rechazan exactamente eso. Lo arregla
48
+ * `turnoReal.ts#saldarAprobacionesHuerfanas` al abrir, no una guarda aquí: marcar como
49
+ * histórico un hilo con tareas pendientes sería negar una sesión que sí puede continuar.
50
+ * - **Los acompañantes heredan el modo, y eso está comprobado.** SQLite escribe además
51
+ * `checkpoint.sqlite-wal` y `-shm`, que crea él y no nosotros: medido sobre un proyecto
52
+ * de verdad, los dos salen `-rw-------` como el fichero principal, porque los crea con
53
+ * los permisos de la base. Así que poner el modo ANTES de abrir vale también para ellos —
54
+ * con el `chmod` de después habrían salido a 0644.
55
+ */
56
+ export function rutaDelCheckpointer(raiz) {
57
+ return join(raiz, ".xonecode", "checkpoint.sqlite");
58
+ }
59
+ /**
60
+ * Los abiertos, por RUTA. Que la fábrica devuelva la MISMA instancia para el mismo proyecto
61
+ * no es una optimización: `arranque.ts` la llama en cada reapertura y en cada borrado de
62
+ * sesión, y sin esto cada llamada abriría una conexión nueva que nadie cierra —y borrar un
63
+ * hilo mientras su propia sesión está viva serían dos escritores distintos sobre el mismo
64
+ * fichero—. Con una sola conexión por proyecto, el `deleteThread` y el turno en vuelo
65
+ * comparten handle. Un fallo NO se cachea: la carpeta puede aparecer más tarde.
66
+ */
67
+ const abiertos = new Map();
68
+ export function crearCheckpointerDeProyecto(raiz) {
69
+ const ruta = rutaDelCheckpointer(raiz);
70
+ const yaAbierto = abiertos.get(ruta);
71
+ if (yaAbierto !== undefined)
72
+ return yaAbierto;
73
+ try {
74
+ mkdirSync(dirname(ruta), { recursive: true, mode: 0o700 });
75
+ // El fichero se crea AQUÍ y con el modo puesto, no después de abrirlo: medido, SQLite
76
+ // lo crea ya en `fromConnString` y con el modo por omisión (0644), así que un `chmod`
77
+ // posterior deja una ventana —corta, pero real— en la que el checkpoint es legible por
78
+ // cualquiera. `openSync(…, "a")` sobre uno que ya existe no lo toca ni le cambia el modo.
79
+ if (!existsSync(ruta))
80
+ closeSync(openSync(ruta, "a", 0o600));
81
+ const saver = SqliteSaver.fromConnString(ruta);
82
+ abiertos.set(ruta, saver);
83
+ return saver;
84
+ }
85
+ catch {
86
+ // El motivo NO se propaga: puede llevar la ruta absoluta del home del usuario, y de
87
+ // aquí sale un aviso que viaja por el cable. Quien llama dice QUÉ pasó, no dónde.
88
+ return undefined;
89
+ }
90
+ }
91
+ /**
92
+ * ¿Hay algo guardado de ese hilo?
93
+ *
94
+ * Es lo que convierte `historica` en un hecho comprobado en vez de en «se reabrió»: una
95
+ * sesión con checkpoint continúa de verdad, y una sin él —la de antes de que esto
96
+ * existiera, o una cuyo primer turno nunca llegó a correr— sigue siendo una relectura y se
97
+ * dice. Un fallo al preguntar se responde `false`, que es el lado conservador: enseñar el
98
+ * aviso de más es peor que prometer una memoria que no está.
99
+ */
100
+ export async function hayCheckpoint(checkpointer, hilo) {
101
+ if (checkpointer === undefined)
102
+ return false;
103
+ try {
104
+ return (await checkpointer.getTuple({ configurable: { thread_id: hilo } })) !== undefined;
105
+ }
106
+ catch {
107
+ return false;
108
+ }
109
+ }
110
+ /**
111
+ * Olvida el hilo de una sesión borrada. Sin esto, borrar una conversación dejaría su
112
+ * memoria entera —con el contenido de los ficheros que se escribieron en ella— viva en el
113
+ * fichero del proyecto para siempre, invisible desde la interfaz.
114
+ */
115
+ export async function olvidarHilo(checkpointer, hilo) {
116
+ const conBorrado = checkpointer;
117
+ if (conBorrado?.deleteThread === undefined)
118
+ return;
119
+ try {
120
+ await conBorrado.deleteThread(hilo);
121
+ }
122
+ catch {
123
+ // Que no se pueda olvidar no puede impedir borrar la sesión: el índice y su transcript
124
+ // sí se van, y lo que quede aquí es un hilo huérfano que nadie puede reabrir.
125
+ }
126
+ }
127
+ //# sourceMappingURL=checkpointer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpointer.js","sourceRoot":"","sources":["../../src/agent/checkpointer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;AAExD,MAAM,UAAU,2BAA2B,CAAC,IAAY;IACtD,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9C,IAAI,CAAC;QACH,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3D,sFAAsF;QACtF,sFAAsF;QACtF,uFAAuF;QACvF,0FAA0F;QAC1F,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC/C,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,oFAAoF;QACpF,kFAAkF;QAClF,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,YAA6C,EAC7C,IAAY;IAEZ,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,YAAY,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;IAC5F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,YAA6C,EAC7C,IAAY;IAEZ,MAAM,UAAU,GAAG,YAA4E,CAAC;IAChG,IAAI,UAAU,EAAE,YAAY,KAAK,SAAS;QAAE,OAAO;IACnD,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,uFAAuF;QACvF,8EAA8E;IAChF,CAAC;AACH,CAAC"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * El servidor pierde el proyecto abierto al caducar la sesión, y lo dice de DOS formas.
3
+ *
4
+ * A veces como error de tool (`isError: true`), que `invocarSobre` convierte en excepción.
5
+ * Y a veces —medido contra el servidor real— como una respuesta CORRECTA cuyo contenido de
6
+ * texto es «Error: No project is open…». Esa segunda es la que se colaba: nadie miraba el
7
+ * resultado, así que la reapertura no se disparaba y el texto seguía camino hasta el
8
+ * `JSON.parse` de quien lo llamó, que reventaba con «Unexpected token 'E'». Un fallo de
9
+ * sesión disfrazado de fallo de formato.
10
+ */
11
+ const SESION_PERDIDA = /no project is open/i;
12
+ /** Los SDK MCP envuelven el resultado en `content[].text`. */
13
+ function texto(valor) {
14
+ if (typeof valor === "string")
15
+ return valor;
16
+ if (typeof valor === "object" && valor !== null) {
17
+ const contenido = valor.content;
18
+ if (Array.isArray(contenido)) {
19
+ return contenido
20
+ .filter((b) => typeof b === "object" && b !== null && b.type === "text")
21
+ .map((b) => b.text)
22
+ .join("");
23
+ }
24
+ }
25
+ return "";
26
+ }
27
+ /** Desenvuelve y parsea como JSON; si no hay nada que parsear, el objeto crudo. */
28
+ function registro(valor) {
29
+ if (typeof valor === "string") {
30
+ try {
31
+ return JSON.parse(valor);
32
+ }
33
+ catch {
34
+ return {};
35
+ }
36
+ }
37
+ const desenvuelto = texto(valor);
38
+ if (desenvuelto !== "") {
39
+ try {
40
+ return JSON.parse(desenvuelto);
41
+ }
42
+ catch { /* sigue abajo */ }
43
+ }
44
+ return typeof valor === "object" && valor !== null ? valor : {};
45
+ }
46
+ /** Cuánto del cuerpo remoto se deja ver en un error de formato: lo justo para reconocerlo. */
47
+ const TOPE_DE_MUESTRA = 120;
48
+ /**
49
+ * JSON, o un error que dice quién contestó y con qué.
50
+ *
51
+ * La alternativa —`JSON.parse` a secas— produce un `SyntaxError` que no nombra la tool ni
52
+ * el contexto: «Unexpected token 'E', "Error: No "... is not valid JSON» fue justo el
53
+ * mensaje que llegó a la interfaz cuando lo que pasaba era que la sesión estaba caída.
54
+ */
55
+ function comoJson(bruto, tool) {
56
+ try {
57
+ return JSON.parse(bruto);
58
+ }
59
+ catch {
60
+ const muestra = bruto.length > TOPE_DE_MUESTRA ? `${bruto.slice(0, TOPE_DE_MUESTRA)}…` : bruto;
61
+ throw new Error(`${tool} no devolvió JSON: «${muestra}»`);
62
+ }
63
+ }
64
+ /**
65
+ * @param nombreDeProyecto El NOMBRE del proyecto, nunca su id. El servidor abre por nombre y
66
+ * rechaza el identificador («not found for user», medido), y este valor es el que usa la
67
+ * reapertura automática de `conSesion`. Pasarle el id daba un bucle sordo: se reabría con
68
+ * algo que el servidor no encuentra, la tool volvía a decir «no project is open», y el
69
+ * error hablaba de la tool y no del argumento equivocado.
70
+ */
71
+ export function clienteCloudStudio(invocar, nombreDeProyecto) {
72
+ const proyecto = nombreDeProyecto;
73
+ /**
74
+ * Una llamada que sobrevive a la caducidad: reabre y reintenta UNA vez. Una segunda
75
+ * vuelta convertiría un servidor caído en un bucle silencioso.
76
+ *
77
+ * Mira las DOS formas en que el servidor dice que perdió el proyecto (ver
78
+ * `SESION_PERDIDA`): la excepción y el texto de una respuesta por lo demás correcta. Y
79
+ * después de reabrir vuelve a mirar: si sigue diciendo lo mismo, se lanza con el nombre
80
+ * de la tool delante en vez de devolver ese texto a quien llamó — devolverlo es como
81
+ * acabó siendo un error de JSON en la interfaz.
82
+ */
83
+ const conSesion = async (nombre, argumentos) => {
84
+ let perdida = false;
85
+ try {
86
+ const resultado = await invocar(nombre, argumentos);
87
+ if (!SESION_PERDIDA.test(texto(resultado)))
88
+ return resultado;
89
+ perdida = true;
90
+ }
91
+ catch (error) {
92
+ if (!SESION_PERDIDA.test(error.message))
93
+ throw error;
94
+ perdida = true;
95
+ }
96
+ if (!perdida)
97
+ throw new Error(`${nombre}: no se pudo determinar el estado de la sesión`);
98
+ // Reabrir es transparente a propósito: quien llamó pidió `studio_get_file`, no
99
+ // gestionar una sesión. Lo único que no se puede hacer transparente es que falle otra
100
+ // vez, y eso se dice.
101
+ await invocar("studio_open_project", { project: proyecto });
102
+ const reintento = await invocar(nombre, argumentos);
103
+ if (SESION_PERDIDA.test(texto(reintento))) {
104
+ throw new Error(`${nombre}: CloudStudio sigue diciendo que no hay proyecto abierto después de reabrir «${proyecto}»`);
105
+ }
106
+ return reintento;
107
+ };
108
+ const entradasDeArbol = (arbol) => {
109
+ const salida = [];
110
+ const recorrer = (nodo) => {
111
+ if (typeof nodo !== "object" || nodo === null)
112
+ return;
113
+ const n = nodo;
114
+ if (n.type === "file" && typeof n.path === "string") {
115
+ salida.push({ ruta: n.path, bytes: typeof n.size === "number" ? n.size : 0 });
116
+ }
117
+ if (Array.isArray(n.children))
118
+ for (const hijo of n.children)
119
+ recorrer(hijo);
120
+ };
121
+ recorrer(arbol.tree ?? arbol);
122
+ return salida;
123
+ };
124
+ return {
125
+ async abrir(nombre) {
126
+ // Por NOMBRE: medido, el servidor rechaza el identificador («not found for user»).
127
+ await invocar("studio_open_project", { project: nombre });
128
+ },
129
+ async contexto() {
130
+ const r = registro(await conSesion("studio_get_context", {}));
131
+ return { proyecto: String(r.project ?? ""), rama: String(r.branch ?? "") };
132
+ },
133
+ async descargarZip() {
134
+ const r = registro(await conSesion("studio_download_project", { unified: false }));
135
+ const zip = r.base64Zip;
136
+ if (typeof zip !== "string" || zip === "")
137
+ throw new Error("CloudStudio no devolvió el ZIP del proyecto");
138
+ return zip;
139
+ },
140
+ async estructura(directorio) {
141
+ const arbol = registro(await conSesion("studio_get_project_structure", {
142
+ mode: "filesystem",
143
+ maxFiles: 2000,
144
+ ...(directorio === undefined || directorio === "" ? {} : { directoryPath: directorio }),
145
+ }));
146
+ // El servidor manda `truncated` en la raíz del objeto (medido: con `maxFiles:60`
147
+ // ya venía `true`). Tirarlo aquí sería repetir el mismo error que obligó a que el
148
+ // puerto entero informara del recorte: el manifiesto sostiene el candado de borrado.
149
+ return { entradas: entradasDeArbol(arbol), truncado: arbol.truncated === true };
150
+ },
151
+ async leerTexto(ruta) {
152
+ const bruto = await conSesion("studio_get_file", { filePath: ruta });
153
+ const desenvuelto = texto(bruto);
154
+ return desenvuelto !== "" ? desenvuelto : typeof bruto === "string" ? bruto : "";
155
+ },
156
+ async escribirTexto(ruta, contenido) {
157
+ await conSesion("studio_edit_file", { filePath: ruta, content: contenido, editMode: "replace" });
158
+ },
159
+ async borrarTexto(ruta) {
160
+ // `studio_edit_file` es una tool de TEXTO: no hay borrado de binarios por MCP. Ese
161
+ // caso tampoco llega hasta aquí — `planDeSubida` lo declara imposible y lo saca del
162
+ // plan, con un motivo que le dice al usuario que lo borre en Studio a mano.
163
+ await conSesion("studio_edit_file", { filePath: ruta, editMode: "delete" });
164
+ },
165
+ async subirBinario(ruta, datos) {
166
+ // `base64` es el ÚNICO modo que xonecode implementa, y el puerto ni siquiera lleva
167
+ // el campo: el `chunked` del servidor no está enchufado. Por eso `planDeSubida`
168
+ // declara IMPOSIBLE —y saca del plan— cualquier binario por encima de
169
+ // `TOPE_BASE64`, en vez de mandarlo aquí a fallar. Si algún día se implementa el
170
+ // troceado, este es el sitio, y `OperacionDeSubida` vuelve a tener dos modos.
171
+ await conSesion("studio_upload_file", {
172
+ filePath: ruta,
173
+ source: "base64",
174
+ base64Content: Buffer.from(datos).toString("base64"),
175
+ });
176
+ },
177
+ async ramas() {
178
+ const bruto = await conSesion("studio_manage_branches", { operation: "list" });
179
+ // `JSON.parse` a pelo era lo que convertía cualquier respuesta inesperada en un
180
+ // «Unexpected token …» sin nombre de tool ni pista: el error que se veía en la
181
+ // interfaz hablaba de JSON cuando el problema era la sesión. Aquí se falla diciendo
182
+ // QUÉ tool contestó y CON QUÉ, acotado.
183
+ const lista = comoJson(texto(bruto) || JSON.stringify(bruto), "studio_manage_branches");
184
+ return Array.isArray(lista)
185
+ ? lista.flatMap((r) => typeof r === "object" && r !== null && typeof r.Key === "string"
186
+ ? [r.Key] : [])
187
+ : [];
188
+ },
189
+ async cambiarRama(nombre) {
190
+ await conSesion("studio_manage_branches", { operation: "switch", branchName: nombre });
191
+ },
192
+ };
193
+ }
194
+ //# sourceMappingURL=cloudstudioClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudstudioClient.js","sourceRoot":"","sources":["../../src/agent/cloudstudioClient.ts"],"names":[],"mappings":"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"}