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,143 @@
1
+ /**
2
+ * El estado de presentación de la TUI, SIN React.
3
+ *
4
+ * Los componentes solo pintan; la semántica (qué cierra una fase, cuándo una línea
5
+ * confirmada es definitiva) vive aquí y se prueba sin montar nada. Es el mismo pacto
6
+ * que la piel stdio —tokens a colchón, cascada de fases— pero el destino es el estado,
7
+ * no stdout: en TUI el repintado es total y no hay append-only que respetar.
8
+ */
9
+ import { conLineaDeTool } from "../../core/actos.js";
10
+ export { conLineaDeTool };
11
+ export function crearStore(opciones = {}) {
12
+ const ahora = opciones.ahora ?? Date.now;
13
+ let estado = { actos: [], colchon: "", aprobacionPendiente: false };
14
+ const suscriptores = [];
15
+ const mutar = (cambio) => {
16
+ estado = { ...estado, ...cambio };
17
+ for (const s of suscriptores)
18
+ s();
19
+ };
20
+ /** La cascada, versión TUI: cualquier acto cierra la fase viva con su duración. */
21
+ const cerrarFase = () => {
22
+ if (estado.faseActiva === undefined)
23
+ return [];
24
+ const { texto, t0 } = estado.faseActiva;
25
+ mutar({ faseActiva: undefined });
26
+ return [{ tipo: "fase", texto, ms: Math.max(0, ahora() - t0) }];
27
+ };
28
+ const aniadir = (nuevos) => {
29
+ if (nuevos.length === 0)
30
+ return;
31
+ mutar({ actos: [...estado.actos, ...cerrarFase(), ...nuevos] });
32
+ };
33
+ /** La baja de un suscriptor, tolerante a doble llamada (React puede repetir el cleanup). */
34
+ const baja = (suscriptor) => {
35
+ const indice = suscriptores.lastIndexOf(suscriptor);
36
+ if (indice !== -1)
37
+ suscriptores.splice(indice, 1);
38
+ return () => baja(suscriptor);
39
+ };
40
+ return {
41
+ estado: () => estado,
42
+ /** Devuelve la función de desuscripción: el cleanup del useEffect es su llamador natural. */
43
+ suscribir(suscriptor) {
44
+ suscriptores.push(suscriptor);
45
+ return () => baja(suscriptor);
46
+ },
47
+ token(texto) {
48
+ let colchon = estado.colchon + texto;
49
+ const confirmados = [];
50
+ for (;;) {
51
+ const salto = colchon.indexOf("\n");
52
+ if (salto === -1)
53
+ break;
54
+ confirmados.push({ tipo: "asistente", texto: colchon.slice(0, salto) });
55
+ colchon = colchon.slice(salto + 1);
56
+ }
57
+ mutar({
58
+ colchon,
59
+ ...(confirmados.length > 0 ? { actos: [...estado.actos, ...cerrarFase(), ...confirmados] } : {}),
60
+ });
61
+ },
62
+ cerrarLinea() {
63
+ if (estado.colchon === "")
64
+ return;
65
+ aniadir([{ tipo: "asistente", texto: estado.colchon }]);
66
+ mutar({ colchon: "" });
67
+ },
68
+ /**
69
+ * Línea de sistema/tool/aviso: acto inmediato, texto ya finalizado. Una de tool se
70
+ * une al grupo `herramientas` que esté al final (o abre uno); las demás son actos.
71
+ */
72
+ linea(texto, tipo = "tool") {
73
+ if (tipo !== "tool") {
74
+ aniadir([{ tipo, texto }]);
75
+ return;
76
+ }
77
+ const ultimo = estado.actos.at(-1);
78
+ // Con una fase viva, `aniadir` intercala el acto de fase: el grupo empieza después.
79
+ if (ultimo?.tipo === "herramientas" && estado.faseActiva === undefined) {
80
+ const grupo = { tipo: "herramientas", lineas: conLineaDeTool(ultimo.lineas, texto) };
81
+ mutar({ actos: [...estado.actos.slice(0, -1), grupo] });
82
+ return;
83
+ }
84
+ aniadir([{ tipo: "herramientas", lineas: [texto] }]);
85
+ },
86
+ /** Lo que el humano escribió: acto inmediato, llega entero de una vez. */
87
+ usuario(texto) {
88
+ aniadir([{ tipo: "usuario", texto }]);
89
+ },
90
+ /** Un fallo del motor: acto inmediato, con su propio tipo para que se pinte en rojo. */
91
+ error(texto) {
92
+ aniadir([{ tipo: "error", texto }]);
93
+ },
94
+ fase(texto) {
95
+ mutar({ faseActiva: { texto, t0: ahora() } });
96
+ },
97
+ pausa() {
98
+ mutar({ aprobacionPendiente: true });
99
+ },
100
+ /**
101
+ * El rearme: `pausa` solo sube a true, y el modal que la cerró es quien sabe que
102
+ * ya no hay nada pendiente — si no baja, la TUI se queda «en pausa» para siempre
103
+ * tras la primera aprobación.
104
+ */
105
+ rearmar() {
106
+ mutar({ aprobacionPendiente: false });
107
+ },
108
+ /**
109
+ * El cierre del turno. `modelo` es el que lo corrió, capturado por quien llama EN
110
+ * este momento (no en el render): un /modelo posterior no debe reetiquetar turnos
111
+ * ya cerrados. Sin modelo no se escribe la clave, para que los actos viejos y los
112
+ * tests que los comparan con `toEqual` no cambien.
113
+ */
114
+ fin(ms, modelo) {
115
+ aniadir([modelo === undefined ? { tipo: "fin", ms } : { tipo: "fin", ms, modelo }]);
116
+ },
117
+ };
118
+ }
119
+ export function crearRanura(inicial) {
120
+ let valor = inicial;
121
+ const suscriptores = [];
122
+ return {
123
+ ver: () => valor,
124
+ mutar(cambio) {
125
+ valor = { ...valor, ...cambio };
126
+ for (const s of suscriptores)
127
+ s();
128
+ },
129
+ /** Devuelve la baja, igual que el store: el cleanup del useEffect es su llamador natural. */
130
+ suscribir(f) {
131
+ suscriptores.push(f);
132
+ return () => {
133
+ const indice = suscriptores.lastIndexOf(f);
134
+ if (indice !== -1)
135
+ suscriptores.splice(indice, 1);
136
+ };
137
+ },
138
+ };
139
+ }
140
+ export function vistaInicial() {
141
+ return { ocupado: false, enCola: [], pregunta: null, selector: null, modal: null };
142
+ }
143
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/cli/tui/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Una fila de tarjeta: fondo sólido de lado a lado.
4
+ *
5
+ * La comparten la Entrada y las tarjetas de usuario del transcript (la forma de
6
+ * OpenCode: barra izquierda, aire arriba, texto, aire abajo, todo con fondo). Vive
7
+ * aparte para que las dos no puedan divergir.
8
+ *
9
+ * Ink 5.2.1 solo da fondo a `Text`, y un Text pinta fondo solo bajo sus caracteres,
10
+ * así que la fila se rellena de espacios hasta `ancho`. Una celda de aire a la
11
+ * izquierda (y la que sobre a la derecha) hace de padding lateral. `visible` es lo que
12
+ * ocupa `children`, en puntos de código.
13
+ */
14
+ import { Text } from "ink";
15
+ import { temaInk } from "./temaInk.js";
16
+ export function Fila({ ancho, visible, color, fondo = temaInk.fondoInput, children, }) {
17
+ return (_jsxs(Text, { backgroundColor: fondo, color: color, children: [" ", children, " ".repeat(Math.max(0, ancho - 1 - visible))] }));
18
+ }
19
+ //# sourceMappingURL=tarjeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tarjeta.js","sourceRoot":"","sources":["../../../src/cli/tui/tarjeta.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,UAAU,IAAI,CAAC,EACnB,KAAK,EACL,OAAO,EACP,KAAK,EACL,KAAK,GAAG,OAAO,CAAC,UAAU,EAC1B,QAAQ,GAOT;IACC,OAAO,CACL,MAAC,IAAI,IAAC,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,aACvC,GAAG,EACH,QAAQ,EACR,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IACxC,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,114 @@
1
+ const XONE = {
2
+ texto: "#d4d4d8",
3
+ mudo: "#71717a",
4
+ negrita: "#ffffff",
5
+ exito: "#4ade80",
6
+ aviso: "#fbbf24",
7
+ grave: "#f87171",
8
+ anadido: "#4ade80",
9
+ quitado: "#f87171",
10
+ prompt: "#2ac4ea",
11
+ reset: "",
12
+ borrar: "",
13
+ limpiarLinea: "",
14
+ arriba: () => "",
15
+ acento: "#47abd6",
16
+ borde: "#27272a",
17
+ fondoInput: "#1e1e1e",
18
+ fondoCola: "#090909",
19
+ fondoSidebar: "#111315",
20
+ // La cabecera conserva identidad XOne, pero no tiñe el panel entero de azul.
21
+ marca: "#00414a",
22
+ fase: "#e0a458",
23
+ tenue: "#52525b",
24
+ };
25
+ const PALETAS = {
26
+ xone: XONE,
27
+ clear: {
28
+ ...XONE,
29
+ texto: "#f1f5f9",
30
+ mudo: "#94a3b8",
31
+ exito: "#86efac",
32
+ aviso: "#fde68a",
33
+ grave: "#fca5a5",
34
+ anadido: "#86efac",
35
+ quitado: "#fca5a5",
36
+ prompt: "#e0f2fe",
37
+ acento: "#7dd3fc",
38
+ borde: "#334155",
39
+ fondoInput: "#111827",
40
+ fondoCola: "#020617",
41
+ fondoSidebar: "#1e293b",
42
+ marca: "#0f2742",
43
+ fase: "#f8fafc",
44
+ tenue: "#64748b",
45
+ },
46
+ midnight: {
47
+ ...XONE,
48
+ texto: "#dbeafe",
49
+ mudo: "#7182a0",
50
+ exito: "#5eead4",
51
+ aviso: "#facc15",
52
+ grave: "#fb7185",
53
+ anadido: "#5eead4",
54
+ quitado: "#fb7185",
55
+ prompt: "#38bdf8",
56
+ acento: "#60a5fa",
57
+ borde: "#1e3a5f",
58
+ fondoInput: "#0b1220",
59
+ fondoCola: "#020617",
60
+ fondoSidebar: "#0d1b32",
61
+ marca: "#172554",
62
+ fase: "#38bdf8",
63
+ tenue: "#475569",
64
+ },
65
+ graphite: {
66
+ ...XONE,
67
+ texto: "#e5e7eb",
68
+ mudo: "#9ca3af",
69
+ exito: "#86efac",
70
+ aviso: "#fcd34d",
71
+ grave: "#fca5a5",
72
+ anadido: "#86efac",
73
+ quitado: "#fca5a5",
74
+ prompt: "#d1d5db",
75
+ acento: "#cbd5e1",
76
+ borde: "#3f3f46",
77
+ fondoInput: "#18181b",
78
+ fondoCola: "#09090b",
79
+ fondoSidebar: "#202024",
80
+ marca: "#27272a",
81
+ fase: "#e4e4e7",
82
+ tenue: "#71717a",
83
+ },
84
+ ember: {
85
+ ...XONE,
86
+ texto: "#f5f1e8",
87
+ mudo: "#a8a29e",
88
+ exito: "#a3e635",
89
+ aviso: "#fbbf24",
90
+ grave: "#fb7185",
91
+ anadido: "#a3e635",
92
+ quitado: "#fb7185",
93
+ prompt: "#fcd34d",
94
+ acento: "#f59e0b",
95
+ borde: "#44403c",
96
+ fondoInput: "#1c1917",
97
+ fondoCola: "#0c0a09",
98
+ fondoSidebar: "#29211d",
99
+ marca: "#78350f",
100
+ fase: "#fb923c",
101
+ tenue: "#78716c",
102
+ },
103
+ };
104
+ let idActivo = "xone";
105
+ /** Identidad estable: los componentes importan este objeto y React se repinta al cambiar la ranura de vista. */
106
+ export const temaInk = { ...XONE };
107
+ export function aplicarTemaInk(id) {
108
+ idActivo = id;
109
+ Object.assign(temaInk, PALETAS[id]);
110
+ }
111
+ export function temaInkActivo() {
112
+ return idActivo;
113
+ }
114
+ //# sourceMappingURL=temaInk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temaInk.js","sourceRoot":"","sources":["../../../src/cli/tui/temaInk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,254 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * El viewport del transcript: una ventana de actos con scroll PROPIO (PgUp/PgDn).
4
+ *
5
+ * La TUI es dueña del terminal, así que el scrollback del terminal ya no sirve: el
6
+ * scroll es este componente. La ventana vive al fondo —donde pasa lo que importa— y
7
+ * PgUp la sube; cualquier acto nuevo devuelve la ventana al fondo, porque leer lo
8
+ * nuevo importa más que conservar la posición de lectura.
9
+ *
10
+ * Los cálculos de ventana y de desfase viven en funciones PURAS exportadas
11
+ * (`ventanaDe`, `moverDesfase`): el scroll es lógica con reglas (acotada, sin actos
12
+ * inventados) y así se prueba sin montar Ink ni emular teclado.
13
+ */
14
+ import { Box, Text, useInput } from "ink";
15
+ import { useEffect, useState } from "react";
16
+ import { segmentosDe, clasificarLinea, estadosDeCerco, contextoDeTabla, } from "../markdown.js";
17
+ import { temaInk } from "./temaInk.js";
18
+ import { barra } from "./barra.js";
19
+ import { filasDe } from "./filas.js";
20
+ import { Fila } from "./tarjeta.js";
21
+ /** Cuántos actos salta una pulsación: una página de lectura, no un acto. */
22
+ const PASO_DE_PAGINA = 10;
23
+ /** Cuántos actos mueve una muesca de la rueda del ratón: menos que una página, más que uno. */
24
+ export const PASO_DE_RUEDA = 3;
25
+ /** Cuántas líneas de un grupo de herramientas se enseñan: las últimas. Medido con el usuario: 4. */
26
+ export const LINEAS_DE_HERRAMIENTAS = 4;
27
+ /**
28
+ * Los actos visibles: los ÚLTIMOS `altura`, subidos `desfase` hacia arriba.
29
+ *
30
+ * Pura y total: un desfase mayor que el contenido da una ventana VACÍA antes que
31
+ * repetir o inventar actos; el acotado lo hace `moverDesfase`.
32
+ */
33
+ export function ventanaDe(actos, altura, desfase) {
34
+ const fin = Math.max(0, actos.length - desfase);
35
+ const inicio = Math.max(0, fin - altura);
36
+ return actos.slice(inicio, fin);
37
+ }
38
+ /** El desfase tras moverse `delta` actos, acotado sin vaciar nunca el transcript. */
39
+ export function moverDesfase(desfase, total, delta) {
40
+ return Math.min(Math.max(0, desfase + delta), Math.max(0, total - 1));
41
+ }
42
+ /** El color de un segmento inline. Pura: los tests no ven color, y esta decisión sí se prueba. */
43
+ export function colorDeSegmento(estilo) {
44
+ if (estilo === "negrita")
45
+ return temaInk.negrita;
46
+ // Código inline y enlaces comparten acento: lo que responde al modelo es lo azul.
47
+ if (estilo === "codigo" || estilo === "enlace")
48
+ return temaInk.acento;
49
+ if (estilo === "mudo")
50
+ return temaInk.mudo;
51
+ return undefined; // normal y cursiva: color del texto, la cursiva es forma, no tinta
52
+ }
53
+ /** Los segmentos inline de un texto: negrita, código, cursiva y enlaces — significado, no ANSI. */
54
+ function Segmentos({ texto }) {
55
+ return (_jsx(_Fragment, { children: segmentosDe(texto).map((seg, i) => (_jsx(Text, { bold: seg.estilo === "negrita", italic: seg.estilo === "cursiva", color: colorDeSegmento(seg.estilo), children: seg.texto }, i))) }));
56
+ }
57
+ /**
58
+ * Una línea de markdown a nodos de Ink. El parseo vive en `clasificarLinea` (puro, en
59
+ * `cli/markdown.ts`); aquí solo se pinta. `enCerco` es el estado de la línea: dentro de
60
+ * un cerco todo sale en mudo, y su marcador de cierre no se pinta (igual que stdio:
61
+ * el cerco es formato, no conversación).
62
+ */
63
+ function LineaMarkdown({ texto, enCerco, ancho, tabla, }) {
64
+ // El grid del TextTable de OpenTUI con borderStyle «single»: ┌┬┐ cabecera, ├┼┤
65
+ // separador, └┴┘ cierre; bordes en tenue (su «conceal»), celdas ya rellenas y
66
+ // recortadas por el módulo puro. El aire alrededor vive aquí: la tabla es un bloque.
67
+ if (tabla) {
68
+ const borde = (izq, medio, der) => izq + tabla.anchos.map((a) => "─".repeat(a + 2)).join(medio) + der;
69
+ if (tabla.rol === "separador") {
70
+ return _jsx(Text, { color: temaInk.tenue, children: borde("├", "┼", "┤") });
71
+ }
72
+ // Las celdas parsean INLINE como el resto del texto: «**NO SE USA**» y `código`
73
+ // crudos dentro del grid eran el bug medido en terminal. El borde va tenue como
74
+ // las líneas del grid, y la cabecera lleva la tinta de las cabeceras de texto.
75
+ // Hermanos Text dentro del Box del acto: contenido estático, sin inserciones
76
+ // que desmidan (la trampa de ink 5.2.1).
77
+ const cabecera = tabla.rol === "cabecera";
78
+ // Una fila NO puede depender de los espacios al final de un Text: Ink los recorta
79
+ // al medir y el borde derecho acaba justo tras el contenido, distinto en cada fila.
80
+ // Cada celda es una caja de ancho fijo (texto + dos márgenes), como TextTable de
81
+ // OpenTUI; el separador queda por tanto en la misma columna siempre.
82
+ const fila = (_jsxs(Box, { flexDirection: "row", flexShrink: 0, children: [_jsx(Text, { color: temaInk.tenue, children: "│" }), tabla.celdas.flatMap((celda, j) => [
83
+ _jsx(Box, { width: (tabla.anchos[j] ?? 0) + 2, paddingLeft: 1, paddingRight: 1, flexShrink: 0, children: _jsx(Text, { bold: cabecera, color: cabecera ? temaInk.negrita : undefined, wrap: "truncate-end", children: _jsx(Segmentos, { texto: celda.trimEnd() }) }) }, `celda-${j}`),
84
+ ...(j === tabla.celdas.length - 1 ? [] : [_jsx(Text, { color: temaInk.tenue, children: "│" }, `borde-${j}`)]),
85
+ ]), _jsx(Text, { color: temaInk.tenue, children: "│" })] }));
86
+ if (cabecera) {
87
+ return (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(Text, { color: temaInk.tenue, children: borde("┌", "┬", "┐") }), fila] }));
88
+ }
89
+ return (_jsxs(_Fragment, { children: [fila, tabla.esUltima ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: temaInk.tenue, children: borde("└", "┴", "┘") }), _jsx(Text, { children: " " })] })) : null] }));
90
+ }
91
+ const clasificada = clasificarLinea(texto);
92
+ if (clasificada.tipo === "cerco") {
93
+ // El estado es ANTES de la línea: marcador + dentro = cierre (no se pinta); marcador
94
+ // + fuera = apertura, que enseña el lenguaje si lo trae.
95
+ if (enCerco)
96
+ return null;
97
+ return clasificada.lenguaje === "" ? null : _jsx(Text, { color: temaInk.mudo, children: clasificada.lenguaje });
98
+ }
99
+ if (enCerco)
100
+ return _jsx(Text, { color: temaInk.mudo, children: texto });
101
+ switch (clasificada.tipo) {
102
+ case "cabecera":
103
+ return (_jsx(Text, { bold: true, color: temaInk.negrita, children: clasificada.texto }));
104
+ case "horizontal":
105
+ return _jsx(Text, { color: temaInk.tenue, children: "─".repeat(Math.max(3, ancho)) });
106
+ case "cita":
107
+ // Un «>» suelto del modelo no es una cita: sin contenido, sin barra.
108
+ if (clasificada.texto.trim() === "")
109
+ return null;
110
+ return (_jsx(Box, { ...barra(temaInk.tenue), children: _jsx(Text, { color: temaInk.mudo, children: _jsx(Segmentos, { texto: clasificada.texto }) }) }));
111
+ case "vineta":
112
+ case "numerada": {
113
+ // El marcador en acento, la sangría por nivel (2 espacios por nivel, lo que
114
+ // emiten los modelos). Hermanos dentro del Text: el contenido de un acto no
115
+ // cambia después de creado, así que no hay inserción que desmida (ink 5.2.1).
116
+ const marcador = clasificada.tipo === "vineta" ? "• " : `${clasificada.numero}. `;
117
+ return (_jsxs(Text, { children: [" ".repeat(clasificada.nivel), _jsx(Text, { color: temaInk.acento, children: marcador }), _jsx(Segmentos, { texto: clasificada.texto })] }));
118
+ }
119
+ default:
120
+ return (_jsx(Text, { children: _jsx(Segmentos, { texto: clasificada.texto }) }));
121
+ }
122
+ }
123
+ /** Un acto del store, pintado por su tipo: cada uno con su icono y su color semántico. */
124
+ function ActoVista({ acto, previo, ancho, enCerco, tabla, }) {
125
+ switch (acto.tipo) {
126
+ case "usuario":
127
+ // La tarjeta de OpenCode, igual que la Entrada: barra navy (lo que EScribiste se
128
+ // distingue de lo que escribes, que lleva acento), una fila de aire, el texto
129
+ // partido en filas y otra de aire — todo con fondo (Ink 5.2.1: solo `Text` lo
130
+ // lleva). El aire vive DENTRO de la tarjeta, como el `paddingTop/Bottom` suyo.
131
+ return (_jsxs(Box, { flexDirection: "column", flexShrink: 0, ...barra(temaInk.marca), paddingLeft: 0, children: [_jsx(Fila, { ancho: ancho, visible: 0 }), filasDe(acto.texto, Math.max(1, ancho - 2)).map((fila, i) => (_jsx(Fila, { ancho: ancho, visible: Array.from(fila).length, children: fila }, i))), _jsx(Fila, { ancho: ancho, visible: 0 })] }));
132
+ case "asistente":
133
+ return _jsx(LineaMarkdown, { texto: acto.texto, enCerco: enCerco, ancho: ancho, tabla: tabla });
134
+ case "fase":
135
+ return (_jsx(Text, { color: temaInk.fase, children: `+ ${acto.texto}: ${(acto.ms / 1000).toFixed(1)}s` }));
136
+ case "fin":
137
+ // «■ modelo · 1.8s»: el cuadrado en acento, el modelo en texto, la duración en mudo.
138
+ // El cierre lleva su aire DELANTE (el `marginTop` del «▣» de OpenCode) — salvo
139
+ // cuando viene del grupo de herramientas, que ya deja el suyo detrás: no se dobla.
140
+ return (_jsxs(_Fragment, { children: [previo?.tipo !== "herramientas" ? _jsx(Text, { children: " " }) : null, _jsxs(Text, { children: [_jsx(Text, { color: temaInk.acento, children: "■ " }), acto.modelo !== undefined ? (_jsxs(_Fragment, { children: [_jsx(Text, { children: acto.modelo }), _jsx(Text, { color: temaInk.mudo, children: " · " })] })) : null, _jsx(Text, { color: temaInk.mudo, children: `${(acto.ms / 1000).toFixed(1)}s` })] })] }));
141
+ case "error":
142
+ return _jsx(Text, { color: temaInk.grave, children: acto.texto });
143
+ case "herramientas": {
144
+ // Paisaje: una fila de aire que lo separe del texto, la cuenta de lo que no se ve y
145
+ // las ÚLTIMAS líneas, en tenue, con sangría y truncadas a la anchura — una línea
146
+ // de tool es UNA fila, nunca envuelve (un patrón de grep puede medir 200 columnas).
147
+ // Y aire también DETRÁS: en OpenCode cada bloque lleva su `marginTop 1`, y sin él
148
+ // el texto siguiente se pegaba al paisaje.
149
+ const sobran = acto.lineas.length - LINEAS_DE_HERRAMIENTAS;
150
+ const ultimas = acto.lineas.slice(-LINEAS_DE_HERRAMIENTAS);
151
+ return (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), sobran > 0 ? _jsx(Text, { color: temaInk.tenue, children: ` … ${sobran} pasos antes` }) : null, ultimas.map((linea, i) => (_jsx(Text, { color: temaInk.tenue, wrap: "truncate-end", children: ` ${linea}` }, i))), _jsx(Text, { children: " " })] }));
152
+ }
153
+ case "artefacto":
154
+ // No llega aquí HOY —`Piel.artefacto` es opcional y solo la implementa la web, así que
155
+ // en el terminal el artefacto es la línea que `core/turno.ts` escribe siempre—, pero
156
+ // el acto existe en el tipo compartido y un `default` que diera por hecho `.texto`
157
+ // sería una excepción en pantalla el día que alguien lo implemente aquí.
158
+ return _jsx(Text, { color: temaInk.mudo, children: ` ${acto.nombre}` });
159
+ case "sincronizacion":
160
+ // Tampoco llega HOY, y por el mismo camino que el artefacto pero al revés: el acto lo
161
+ // produce la piel que implementa `Consola.anotarSincronizacion`, y esta no la
162
+ // implementa —así que `/sync` le escribe el recorrido por `escribir` y aquí se ve como
163
+ // los actos de `sistema` de siempre, línea a línea, que es lo que debe hacer un
164
+ // terminal—. Se pintan sus líneas y nada más: en esta pantalla una operación de
165
+ // sincronización ES un aviso mudo, y un rótulo con la acción sería un adorno que el
166
+ // terminal nunca enseña.
167
+ return (_jsx(_Fragment, { children: acto.lineas.map((linea, i) => (_jsx(Text, { color: temaInk.mudo, wrap: "truncate-end", children: ` ${linea}` }, i))) }));
168
+ default:
169
+ // sistema: mudo e indentado — un aviso, no la conversación.
170
+ return _jsx(Text, { color: temaInk.mudo, children: ` ${acto.texto}` });
171
+ }
172
+ }
173
+ export function Transcript({ store, altura, rueda, ancho = 80, }) {
174
+ const [estado, setEstado] = useState(store.estado());
175
+ const [desfase, setDesfase] = useState(0); // 0 = al fondo; N = N actos hacia arriba
176
+ // La rueda: el mismo `moverDesfase` que PgUp/PgDn, en pasos más cortos. El total se
177
+ // lee del store en el momento, no del estado del render, para no acotar con un valor viejo.
178
+ useEffect(() => {
179
+ if (rueda === undefined)
180
+ return;
181
+ return rueda.suscribir((delta) => setDesfase((d) => moverDesfase(d, store.estado().actos.length, delta * PASO_DE_RUEDA)));
182
+ }, [rueda, store]);
183
+ useEffect(() => {
184
+ // `suscribir` devuelve la baja: el cleanup la usa — suscribir sin desuscribir
185
+ // era un suscriptor filtrado por cada montaje del componente.
186
+ const baja = store.suscribir(() => setEstado({ ...store.estado() }));
187
+ return baja;
188
+ }, [store]);
189
+ // Cualquier acto nuevo ancla la ventana al fondo, haya scroll o no.
190
+ useEffect(() => setDesfase(0), [estado.actos.length]);
191
+ useInput((_entrada, tecla) => {
192
+ if (tecla.pageUp)
193
+ setDesfase((d) => moverDesfase(d, estado.actos.length, PASO_DE_PAGINA));
194
+ if (tecla.pageDown)
195
+ setDesfase((d) => moverDesfase(d, estado.actos.length, -PASO_DE_PAGINA));
196
+ });
197
+ // `altura` es la altura física del panel, pero un acto no equivale a una fila: una
198
+ // tarjeta ocupa tres, una tabla varias y el markdown puede envolver. Recortar con
199
+ // `ventanaDe(..., altura)` mezclaba ambas unidades y daba saltos al hacer scroll.
200
+ // Dejamos que Ink recorte por altura REAL; al subir, solo quitamos del final los actos
201
+ // más nuevos para que el borde inferior de la ventana se desplace hacia el pasado.
202
+ const visibles = estado.actos.slice(0, Math.max(0, estado.actos.length - desfase));
203
+ // El cerco es estado GLOBAL de la conversación: una ventana que empiece a mitad de un
204
+ // cerco abierto tiene que saberlo. Un pase sobre TODOS los actos asistente (en orden,
205
+ // que es como llegaron) da el estado de cada uno; el colchón hereda el estado final
206
+ // — el truco del centinela: una última línea que no es cerco, cuyo estado previo es
207
+ // el que queda tras toda la lista.
208
+ const textosAsistente = estado.actos
209
+ .filter((a) => a.tipo === "asistente")
210
+ .map((a) => a.texto);
211
+ const estados = estadosDeCerco(textosAsistente);
212
+ // Cada respuesta se pinta con dos columnas de sangría (igual que OpenCode). La
213
+ // tabla ha de repartir sus columnas con ESE ancho útil: calcularla con `ancho`
214
+ // exterior hacía que su borde derecho se envolviera dentro del bloque.
215
+ const tablas = contextoDeTabla(textosAsistente, Math.max(3, ancho - 2));
216
+ const cercoDeActo = new Map();
217
+ const tablaDeActo = new Map();
218
+ let i = 0;
219
+ for (const acto of estado.actos) {
220
+ if (acto.tipo !== "asistente")
221
+ continue;
222
+ cercoDeActo.set(acto, estados[i] ?? false);
223
+ const tabla = tablas[i];
224
+ if (tabla)
225
+ tablaDeActo.set(acto, tabla);
226
+ i++;
227
+ }
228
+ const enCercoColchon = estadosDeCerco([...textosAsistente, ""]).at(-1) ?? false;
229
+ return (
230
+ // La ÚNICA pieza elástica de la columna: la fila de columnas tiene altura fija
231
+ // (`rows - 1`, la reserva del borrado total de Ink) y Entrada, Pregunta y pie no
232
+ // encogen, así que lo que sobra —o lo que falta— lo pone y lo paga el transcript.
233
+ // `overflow="hidden"` + `justifyContent="flex-end"`: con pocos actos la Entrada
234
+ // queda anclada abajo (la maqueta) y, cuando el contenido no cabe (una línea que
235
+ // envuelve, el colchón vivo), se recorta por ARRIBA — lo más nuevo, que es lo que
236
+ // hay que leer, se queda. `altura` ya no es la altura de la caja (la pone el flex):
237
+ // es el tamaño de la rebanada que pide `ventanaDe`.
238
+ _jsxs(Box, { flexDirection: "column", flexGrow: 1, flexBasis: 0, overflow: "hidden", justifyContent: "flex-end", children: [visibles.map((acto, i) => {
239
+ const esRespuesta = acto.tipo === "asistente";
240
+ // OpenCode separa cada parte de texto, no cada línea: el streaming sigue unido,
241
+ // pero al llegar desde una tarjeta, herramientas o sistema respira una fila.
242
+ const empiezaRespuesta = esRespuesta && i > 0 && visibles[i - 1]?.tipo !== "asistente";
243
+ const contenido = (_jsx(ActoVista, { acto: acto, previo: i > 0 ? visibles[i - 1] : undefined,
244
+ // La sangría ocupa dos columnas. Las tablas y separadores se calculan con
245
+ // el ancho útil para que nunca empujen la columna derecha.
246
+ ancho: esRespuesta ? Math.max(3, ancho - 2) : ancho, enCerco: cercoDeActo.get(acto) ?? false, tabla: tablaDeActo.get(acto) }));
247
+ return (_jsx(Box, { flexShrink: 0, flexDirection: "column", children: esRespuesta ? (
248
+ // Como OpenCode, una respuesta es Markdown sangrado y con aire antes del
249
+ // bloque, no una sucesión de barras de color. Las líneas del streaming
250
+ // permanecen juntas y siguen leyéndose como una sola respuesta.
251
+ _jsx(Box, { flexDirection: "column", paddingLeft: 2, marginTop: empiezaRespuesta ? 1 : 0, children: contenido })) : (contenido) }, `${i}-${acto.tipo}`));
252
+ }), desfase === 0 && estado.colchon !== "" ? (_jsx(Box, { flexShrink: 0, flexDirection: "column", children: _jsx(LineaMarkdown, { texto: estado.colchon, enCerco: enCercoColchon, ancho: ancho }) })) : null, _jsx(Box, { flexGrow: 1 })] }));
253
+ }
254
+ //# sourceMappingURL=transcript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../../src/cli/tui/transcript.tsx"],"names":[],"mappings":"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"}