xonecode 0.2.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (406) hide show
  1. package/README.md +49 -7
  2. package/THIRD_PARTY_NOTICES.md +128 -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 +70 -10
  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/tokenTracking.js +22 -1
  300. package/dist/vendor/tokenTracking.js.map +1 -1
  301. package/dist/web/servidor/arranque.js +3964 -0
  302. package/dist/web/servidor/arranque.js.map +1 -0
  303. package/dist/web/servidor/consolaDeTarea.js +161 -0
  304. package/dist/web/servidor/consolaDeTarea.js.map +1 -0
  305. package/dist/web/servidor/consolaWeb.js +389 -0
  306. package/dist/web/servidor/consolaWeb.js.map +1 -0
  307. package/dist/web/servidor/corredorDeTareas.js +1119 -0
  308. package/dist/web/servidor/corredorDeTareas.js.map +1 -0
  309. package/dist/web/servidor/pielWeb.js +269 -0
  310. package/dist/web/servidor/pielWeb.js.map +1 -0
  311. package/dist/web/servidor/servidor.js +257 -0
  312. package/dist/web/servidor/servidor.js.map +1 -0
  313. package/dist/web/servidor/sesiones.js +440 -0
  314. package/dist/web/servidor/sesiones.js.map +1 -0
  315. package/dist/web/servidor/transporte.js +169 -0
  316. package/dist/web/servidor/transporte.js.map +1 -0
  317. package/dist/web/servidor/vestibulo.js +1276 -0
  318. package/dist/web/servidor/vestibulo.js.map +1 -0
  319. package/package.json +30 -8
  320. package/skills/archify/LICENSE +22 -0
  321. package/skills/archify/SKILL.md +109 -0
  322. package/skills/archify/THIRD_PARTY_NOTICES.md +56 -0
  323. package/skills/archify/assets/template.html +14787 -0
  324. package/skills/archify/bin/archify.mjs +1990 -0
  325. package/skills/archify/bin/open-artifact.mjs +86 -0
  326. package/skills/archify/bin/preview.mjs +648 -0
  327. package/skills/archify/bin/visual-check.mjs +829 -0
  328. package/skills/archify/brand-marks/README.md +31 -0
  329. package/skills/archify/brand-marks/catalog.json +131 -0
  330. package/skills/archify/delta/architecture-delta.mjs +1214 -0
  331. package/skills/archify/examples/agent-run.lifecycle.json +71 -0
  332. package/skills/archify/examples/agent-tool-call.workflow.json +94 -0
  333. package/skills/archify/examples/async-job-roundtrip.sequence.json +61 -0
  334. package/skills/archify/examples/brand-aware-delivery.architecture.json +47 -0
  335. package/skills/archify/examples/cache-miss-request.sequence.json +81 -0
  336. package/skills/archify/examples/checkout-platform.base.architecture.json +31 -0
  337. package/skills/archify/examples/checkout-platform.head.architecture.json +31 -0
  338. package/skills/archify/examples/dataflow-product-analytics.html +14898 -0
  339. package/skills/archify/examples/deployment-release.lifecycle.json +49 -0
  340. package/skills/archify/examples/event-stream.dataflow.json +57 -0
  341. package/skills/archify/examples/incident-response.workflow.json +64 -0
  342. package/skills/archify/examples/lifecycle-agent-run.html +14847 -0
  343. package/skills/archify/examples/product-analytics.dataflow.json +76 -0
  344. package/skills/archify/examples/production-deployment.architecture.json +71 -0
  345. package/skills/archify/examples/release-delivery.workflow.json +62 -0
  346. package/skills/archify/examples/sequence-cache-miss-request.html +14913 -0
  347. package/skills/archify/examples/web-app-rendered.html +14862 -0
  348. package/skills/archify/examples/web-app.architecture.json +46 -0
  349. package/skills/archify/examples/workflow-agent-tool-call-rendered.html +14904 -0
  350. package/skills/archify/migrations/workflow-v2.mjs +279 -0
  351. package/skills/archify/package.json +17 -0
  352. package/skills/archify/recipes/scenarios.mjs +391 -0
  353. package/skills/archify/references/authoring-contract.md +198 -0
  354. package/skills/archify/references/brand-marks.md +69 -0
  355. package/skills/archify/references/delivery-contract.md +116 -0
  356. package/skills/archify/references/viewer-runtime.md +45 -0
  357. package/skills/archify/renderers/architecture/grid.mjs +62 -0
  358. package/skills/archify/renderers/architecture/render-architecture.mjs +1078 -0
  359. package/skills/archify/renderers/dataflow/README.md +104 -0
  360. package/skills/archify/renderers/dataflow/render-dataflow.mjs +483 -0
  361. package/skills/archify/renderers/lifecycle/README.md +115 -0
  362. package/skills/archify/renderers/lifecycle/render-lifecycle.mjs +561 -0
  363. package/skills/archify/renderers/sequence/README.md +114 -0
  364. package/skills/archify/renderers/sequence/render-sequence.mjs +453 -0
  365. package/skills/archify/renderers/shared/brand-marks.mjs +563 -0
  366. package/skills/archify/renderers/shared/cli.mjs +218 -0
  367. package/skills/archify/renderers/shared/desktop-readability.mjs +26 -0
  368. package/skills/archify/renderers/shared/diagnostics.mjs +127 -0
  369. package/skills/archify/renderers/shared/engineering-profiles.mjs +157 -0
  370. package/skills/archify/renderers/shared/generated-brand-marks.mjs +2003 -0
  371. package/skills/archify/renderers/shared/generated-validators.mjs +13 -0
  372. package/skills/archify/renderers/shared/geometry.mjs +1423 -0
  373. package/skills/archify/renderers/shared/i18n.mjs +594 -0
  374. package/skills/archify/renderers/shared/layout-report.mjs +40 -0
  375. package/skills/archify/renderers/shared/legend.mjs +217 -0
  376. package/skills/archify/renderers/shared/output-path.mjs +321 -0
  377. package/skills/archify/renderers/shared/repository-evidence.mjs +235 -0
  378. package/skills/archify/renderers/shared/text-fit.mjs +49 -0
  379. package/skills/archify/renderers/shared/utils.mjs +232 -0
  380. package/skills/archify/renderers/shared/validator.mjs +86 -0
  381. package/skills/archify/renderers/workflow/README.md +223 -0
  382. package/skills/archify/renderers/workflow/render-workflow.mjs +35 -0
  383. package/skills/archify/renderers/workflow/workflow-compiler.mjs +4400 -0
  384. package/skills/archify/renderers/workflow/workflow-migration-geometry.mjs +144 -0
  385. package/skills/archify/schemas/README.md +211 -0
  386. package/skills/archify/schemas/architecture.schema.json +176 -0
  387. package/skills/archify/schemas/common.schema.json +115 -0
  388. package/skills/archify/schemas/dataflow.schema.json +243 -0
  389. package/skills/archify/schemas/lifecycle.schema.json +266 -0
  390. package/skills/archify/schemas/sequence.schema.json +223 -0
  391. package/skills/archify/schemas/workflow.schema.json +428 -0
  392. package/skills/archify/scripts/check-render-output.mjs +835 -0
  393. package/skills/archify/scripts/check-update.mjs +1667 -0
  394. package/skills/archify/scripts/render-examples.mjs +26 -0
  395. package/skills/archify/scripts/update-contract.mjs +182 -0
  396. package/skills/archify/skill-release.json +10 -0
  397. package/skills/artifacts-builder/SKILL.md +120 -0
  398. package/skills/artifacts-builder/reference/diagramas.md +123 -0
  399. package/skills/artifacts-builder/reference/estilo.md +123 -0
  400. package/skills/artifacts-builder/reference/exportar-pdf.md +56 -0
  401. package/skills/artifacts-builder/reference/graficas.md +22 -0
  402. package/skills/artifacts-builder/scripts/bundle_artifact.py +109 -0
  403. package/skills/artifacts-builder/scripts/validate_artifact.py +345 -0
  404. package/skills/xone-hotswap/SKILL.md +185 -0
  405. package/skills/xone-hotswap/references/comandos.md +706 -0
  406. package/skills/xone-hotswap/references/conexion-y-despliegue.md +226 -0
@@ -0,0 +1,345 @@
1
+ import { textoDe } from "./puente.js";
2
+ /** El papel del juez, y solo del juez. Ver `core/modelos.ts`. */
3
+ export const PAPEL_DEL_JUEZ = "afilado";
4
+ /**
5
+ * Cuánto resumen se guarda. De aquí sale el `motivo` de la tarea, que se pinta en una
6
+ * tarjeta del kanban y viaja por el cable: 4 KB de prosa de un modelo llenan la columna
7
+ * entera, y este número es del mismo orden que el de `servidorDeImplementacion`, que acota
8
+ * a 60 el nombre que manda un servidor MCP. Aquí se admite más porque es una frase y no un
9
+ * rótulo.
10
+ */
11
+ export const TOPE_DE_RESUMEN = 400;
12
+ /** Cuántos hallazgos del juez se guardan, y cuánto cada uno. Por lo mismo de arriba. */
13
+ export const TOPE_DE_HALLAZGOS = 10;
14
+ const TOPE_DE_HALLAZGO = 200;
15
+ /**
16
+ * No se pudo PREGUNTAR: no hay modelo, no hay clave, no hay red.
17
+ *
18
+ * Es fallo del entorno y no del proyecto, la misma familia que `ErrorDelSimulador`
19
+ * (`agent/verificador.ts`), y por eso es un tipo propio: quien lo recoge tiene que poder
20
+ * distinguirlo de un veredicto para aparcar la tarea con el motivo correcto.
21
+ */
22
+ export class ErrorDelJuezDeTarea extends Error {
23
+ constructor(motivo) {
24
+ super(`no se pudo consultar al juez de QA (papel «${PAPEL_DEL_JUEZ}»): ${motivo}`);
25
+ this.name = "ErrorDelJuezDeTarea";
26
+ }
27
+ }
28
+ /**
29
+ * El `invocar` de PRODUCCIÓN, sobre `ModelosPort`.
30
+ *
31
+ * **Dos sitios de envoltura, y la diferencia entre ellos está medida.** Construir el modelo
32
+ * del papel falla ANTES de tocar la red y con un mensaje escrito para leerse: medido contra
33
+ * `agent/modelos.ts`, un `afilado` apuntado a un proveedor sin clave lanza «falta la
34
+ * credencial para nvidia (NVIDIA_API_KEY); usa /provider nvidia» —el nuestro— o «Anthropic
35
+ * API key not found» —el del SDK—, y ninguno de los dos lleva nada que no se pueda leer. Ese
36
+ * mensaje SÍ se conserva: es la única línea que dice qué hacer.
37
+ *
38
+ * La LLAMADA es otra cosa: ahí los SDK devuelven el cuerpo remoto, y ahí van claves
39
+ * redactadas y cabeceras («401 Incorrect API key provided: sk-…»). De esa solo se conserva
40
+ * el NOMBRE del error, que es la misma regla que `ErrorCatalogoModelos`: «nunca lleva la
41
+ * clave ni el cuerpo remoto». No es ser opaco, es no filtrar secretos.
42
+ */
43
+ export function invocarConModelos(modelos) {
44
+ return async (papel, prompt) => {
45
+ let modelo;
46
+ try {
47
+ modelo = modelos.paraPapel(papel);
48
+ }
49
+ catch (error) {
50
+ throw new ErrorDelJuezDeTarea(error instanceof Error ? error.message : String(error));
51
+ }
52
+ if (typeof modelo !== "object" ||
53
+ modelo === null ||
54
+ typeof modelo.invoke !== "function") {
55
+ // Un doble de modelos (`ModeloGuionizado`) devuelve `{guion}` y no sabe invocar. No es
56
+ // un veredicto: es que este proceso no tiene con qué preguntar.
57
+ throw new ErrorDelJuezDeTarea(`el modelo del papel «${papel}» no se puede invocar aquí`);
58
+ }
59
+ try {
60
+ const respuesta = await modelo.invoke(prompt);
61
+ // El MISMO extractor que el puente del stream, no una copia: dos reglas para sacar el
62
+ // texto de un mensaje son dos reglas que divergen — y una de ellas metería el
63
+ // razonamiento del modelo dentro del JSON que hay que parsear.
64
+ return textoDe(respuesta);
65
+ }
66
+ catch (error) {
67
+ throw new ErrorDelJuezDeTarea(error instanceof Error ? error.name : "error de la llamada");
68
+ }
69
+ };
70
+ }
71
+ /**
72
+ * Un hallazgo del verificador, dicho en una línea. Fichero RELATIVO y línea, nunca contenido.
73
+ *
74
+ * **La severidad se dice en castellano y por su nombre**, y no era cosmético: `h.severidad`
75
+ * se pintaba en crudo, así que un aviso llegaba como «warning» —el enum, en inglés, al lado
76
+ * de un «ERROR» que sí estaba traducido y en mayúsculas—. La huella de reparación del
77
+ * verificador (`agent/turnoReal.ts`) usa solo los ERRORES porque «un aviso que va y viene no
78
+ * dice nada de si el error se arregla», y la puerta de entrega (`core/entrega.ts`) cuenta
79
+ * solo errores: si esa distinción manda en el código, no puede llegarle borrosa al juez.
80
+ *
81
+ * **Y un hallazgo SIN fichero se dice sin fichero.** Es el caso que produjo el rojo falso
82
+ * medido: el reparto admite del lado del turno los hallazgos que no dicen dónde —el lado
83
+ * conservador—, así que callarlo los dejaba pareciendo hallazgos sobre un fichero escrito.
84
+ */
85
+ const lineaDeHallazgo = (h) => `- ${h.severidad === "error" ? "ERROR" : h.severidad === "warning" ? "AVISO" : "INFO"} ${h.code}${h.fichero === undefined
86
+ ? " (el simulador no dijo en qué fichero, así que no se puede atribuir a ninguno)"
87
+ : ` en ${h.fichero}${h.linea === undefined ? "" : `:${h.linea}`}`}: ${h.mensaje}`;
88
+ /**
89
+ * Cómo se lee un hallazgo, dicho antes de enseñar ninguno.
90
+ *
91
+ * **Esto es la corrección medida.** El encabezado era «Sus hallazgos sobre lo que este turno
92
+ * tocó», que es FALSO justo para los hallazgos sin fichero, y de ahí salió el primer
93
+ * hallazgo del rojo falso: «se modificaron ficheros de lógica JavaScript durante el turno
94
+ * según los hallazgos del verificador». Un hallazgo no dice quién escribió nada — dice que
95
+ * el proyecto tiene una inconsistencia, y el simulador mira el proyecto ENTERO porque es su
96
+ * API. Es la misma regla que gobierna el reparto en `agent/turnoReal.ts#conVerificacion`:
97
+ * «un error que ya estaba en un fichero que el agente no abrió no es del agente:
98
+ * atribuírselo sería falso». Aquí se la dice también al juez.
99
+ */
100
+ const COMO_SE_LEEN_LOS_HALLAZGOS = [
101
+ "Cómo se leen esos hallazgos: el simulador mira el PROYECTO ENTERO, no lo que este turno",
102
+ "escribió. Son OBSERVACIONES sobre el estado del proyecto y no atribuyen autoría:",
103
+ "ninguno dice quién escribió qué, ni que este turno tocara el fichero del que habla.",
104
+ "Lo único que dice qué tocó este turno son las listas de arriba, y el HECHO es la de git.",
105
+ "",
106
+ ];
107
+ /** Cómo se le cuenta al juez lo que hizo el verificador. `no-corrio` se DICE. */
108
+ const parrafoDelVerificador = (caso) => {
109
+ if (caso.verificador === undefined)
110
+ return [];
111
+ if (caso.verificador === "no-corrio") {
112
+ return [
113
+ "El verificador de XOne (xone-simulator) NO HA CORRIDO en este turno, así que nadie ha",
114
+ "medido si lo escrito es XML válido. Tenlo en cuenta: no lo des por bueno.",
115
+ ];
116
+ }
117
+ const hallazgos = caso.hallazgos ?? [];
118
+ const errores = hallazgos.filter((h) => h.severidad === "error");
119
+ const avisos = hallazgos.filter((h) => h.severidad !== "error");
120
+ return [
121
+ caso.verificador === "verde"
122
+ ? [
123
+ "El verificador de XOne (xone-simulator) acabó en VERDE, así que",
124
+ "no hay nada que reprochar por parte del verificador: no dejó ni un error.",
125
+ "Los avisos no lo cambian — los errores son lo único que la puerta de entrega cuenta.",
126
+ ].join("\n")
127
+ : `El verificador de XOne (xone-simulator) acabó en ROJO: dejó ${errores.length} error(es) sin corregir.`,
128
+ "",
129
+ ...(hallazgos.length === 0 && caso.preexistentes === undefined ? [] : COMO_SE_LEEN_LOS_HALLAZGOS),
130
+ ...(errores.length === 0
131
+ ? []
132
+ : [
133
+ `Errores que caen en algo que este turno escribió, o que no dicen en qué fichero (${errores.length}):`,
134
+ ...errores.map(lineaDeHallazgo),
135
+ ]),
136
+ ...(avisos.length === 0
137
+ ? []
138
+ : [
139
+ `Avisos que caen en algo que este turno escribió, o que no dicen en qué fichero (${avisos.length}):`,
140
+ ...avisos.map(lineaDeHallazgo),
141
+ ]),
142
+ /**
143
+ * El otro lado del reparto, CONTADO. Ausente es «no se midió» y cero es «no había
144
+ * ninguno más»: las dos cosas se dicen, porque callar el cero dejaría al juez sin saber
145
+ * si la lista de arriba es todo lo que el simulador vio.
146
+ */
147
+ ...(caso.preexistentes === undefined
148
+ ? []
149
+ : caso.preexistentes === 0
150
+ ? ["El simulador no encontró ningún otro hallazgo en el resto del proyecto."]
151
+ : [
152
+ `Y ${caso.preexistentes} hallazgo(s) más en ficheros que este turno no tocó, que quedan FUERA`,
153
+ "de las listas de arriba: son del proyecto y no de este trabajo, y no hay que juzgarlos.",
154
+ ]),
155
+ ];
156
+ };
157
+ /**
158
+ * Qué se escribió: la INTENCIÓN y el HECHO, por separado y sin confundirlos.
159
+ *
160
+ * El segundo hallazgo del rojo falso medido salió de aquí: «no se puede comprobar la
161
+ * existencia ni el contenido de DOCUMENTACION.md con los datos facilitados», con
162
+ * `DOCUMENTACION.md` en la lista. El encabezado decía «Ficheros que se autorizó escribir»,
163
+ * que se lee como un PERMISO —lo que se podría haber escrito— y no como un registro.
164
+ *
165
+ * **Y no se arregla prometiendo más de lo que `autorizadas` aguanta.** Ese campo se apunta
166
+ * al autorizar cada escritura, así que una ruta que una guarda rechace sale igual, y «la
167
+ * verdad sobre lo que cambió la tiene Revisión». Lo que se hace es DARLE la verdad:
168
+ * `cambiados` es el diff de git de la sesión contra su «antes», o sea un hecho sobre el
169
+ * disco, con la ruta relativa. Con eso «no puedo comprobar si existe X» deja de tener de
170
+ * dónde agarrarse — y de propina el juez puede juzgar la cobertura del encargo ruta por ruta.
171
+ *
172
+ * Las tres respuestas de git se dicen distintas, que es la regla de siempre: lista con
173
+ * ficheros, lista VACÍA («no cambió nada», una afirmación) y AUSENTE («no se pudo preguntar»,
174
+ * que no es lo mismo y no puede leerse como un proyecto intacto).
175
+ */
176
+ const parrafoDeLoEscrito = (caso) => {
177
+ const cambiados = caso.cambiados;
178
+ /** Autorizadas que git no ve cambiadas: o las rechazó una guarda, o escribieron lo que ya
179
+ * estaba. Callarlo dejaría al juez creyendo que aterrizó algo que no aterrizó. */
180
+ const sinAterrizar = cambiados === undefined ? [] : caso.autorizadas.filter((r) => !cambiados.includes(r));
181
+ return [
182
+ ...(caso.autorizadas.length === 0
183
+ ? ["El turno no autorizó escribir ningún fichero: no consta ninguna ruta."]
184
+ : [
185
+ `LO QUE EL TURNO AUTORIZÓ ESCRIBIR (${caso.autorizadas.length} ruta(s)):`,
186
+ ...caso.autorizadas.map((f) => `- ${f}`),
187
+ "Son las rutas que el turno escribió sin que ninguna persona las aprobara, apuntadas",
188
+ "al autorizar cada escritura: es su registro de lo que quiso tocar.",
189
+ ]),
190
+ "",
191
+ ...(cambiados === undefined
192
+ ? [
193
+ "No hay marca de git con la que comprobar qué cambió en el proyecto, así que sobre el",
194
+ "disco no se afirma nada: eso es «no se pudo mirar», no «no cambió nada».",
195
+ ]
196
+ : cambiados.length === 0
197
+ ? [
198
+ "Y git dice que la sesión no cambió ningún fichero del proyecto. Es una medida, no",
199
+ "una suposición: el diff de la sesión contra su «antes» sale vacío.",
200
+ ]
201
+ : [
202
+ `LO QUE CAMBIÓ EN EL PROYECTO, según git (${cambiados.length} fichero(s)):`,
203
+ ...cambiados.map((f) => `- ${f}`),
204
+ "Es el diff de la sesión contra su «antes», o sea un HECHO sobre el disco y no una",
205
+ "intención. Por eso «no puedo comprobar si existe X» sobre un fichero de esta lista",
206
+ "no es una respuesta válida: git dice que está y que cambió en este trabajo.",
207
+ ]),
208
+ ...(sinAterrizar.length === 0
209
+ ? []
210
+ : [
211
+ `Ojo: de lo autorizado, git no ve cambio en: ${sinAterrizar.join(", ")}. O lo rechazó`,
212
+ "una guarda de ruta, o escribió lo que ya estaba — no des por hecho que aterrizó.",
213
+ ]),
214
+ ];
215
+ };
216
+ /**
217
+ * El prompt del juez.
218
+ *
219
+ * Lleva el encargo, los ficheros que se autorizó escribir y el veredicto del verificador
220
+ * con sus hallazgos — y nada más. **Nunca el contenido de un fichero**: la pregunta es si
221
+ * el trabajo hace lo que se pedía, y este módulo no abre ni un fichero (no hay un solo
222
+ * `readFile` aquí). Lo que sí se le dice es que no se invente: es la misma cláusula que
223
+ * lleva la petición de reparación, y por el mismo motivo.
224
+ */
225
+ function promptDelJuez(caso) {
226
+ return [
227
+ "Eres el QA de un equipo que desarrolla aplicaciones XOne. Otro agente ha ejecutado un",
228
+ "encargo de forma autónoma, sin que ninguna persona revisara sus escrituras. Tu trabajo",
229
+ "es decidir si lo hecho responde al encargo, para que se pueda dar por terminado o vuelva",
230
+ "a manos del desarrollador.",
231
+ "",
232
+ "EL ENCARGO ERA:",
233
+ caso.encargo,
234
+ "",
235
+ ...parrafoDeLoEscrito(caso),
236
+ "",
237
+ ...parrafoDelVerificador(caso),
238
+ "",
239
+ /**
240
+ * Los dos límites, y la frontera entre ellos DICHA.
241
+ *
242
+ * «Si con eso no se puede saber, dilo» y «no puedo comprobar si existe X no vale» se
243
+ * contradicen si no se separa qué es cada cosa: no tener el contenido es un dato de
244
+ * partida —lo mismo para todos los casos— y no un hallazgo sobre este trabajo. Lo que
245
+ * de verdad no se puede juzgar sin contenido es la CALIDAD; qué se escribió sí se sabe.
246
+ */
247
+ "No tienes el contenido de los ficheros y no lo vas a tener: eso es un dato de partida de",
248
+ "este paso, no es un hallazgo sobre este trabajo, y no lo pidas. Lo que no puedes juzgar",
249
+ "así es la CALIDAD de lo escrito —si la documentación está bien redactada, si el XML es el",
250
+ "que hacía falta—; qué se escribió sí lo sabes, y son las listas de arriba. Si el encargo",
251
+ "no se puede juzgar por los nombres y los hechos de arriba, dilo en el resumen:",
252
+ "no te inventes nada para poder dar un veredicto, que es justo el fallo que este paso",
253
+ "existe para atrapar.",
254
+ "",
255
+ "Contesta SOLO con este JSON y nada más:",
256
+ '{"veredicto":"verde"|"rojo","resumen":"una o dos frases","hallazgos":["lo que falta, uno por entrada"]}',
257
+ "«verde» = el encargo está cubierto. «rojo» = falta algo, o lo hecho no es lo que se pedía.",
258
+ "Un aviso del verificador, o un defecto que ya estaba en el proyecto, no es motivo de «rojo»:",
259
+ "lo que se juzga es ESTE encargo y ESTE trabajo, no el estado general del proyecto.",
260
+ ].join("\n");
261
+ }
262
+ /**
263
+ * Sin saltos de línea, sin caracteres de control y acotado. Ver `TOPE_DE_RESUMEN`.
264
+ *
265
+ * Los controles se van y no se escapan, por el mismo motivo que en
266
+ * `servidorDeImplementacion`: «un salto de línea en un nombre parte la línea de un log y
267
+ * disfraza lo que venga detrás», y este texto acaba en el `motivo` de la tarea, que se
268
+ * pinta en una tarjeta y viaja por el cable.
269
+ */
270
+ const unaFrase = (texto, tope) => texto
271
+ .replace(/[\u0000-\u001F\u007F]+/g, " ")
272
+ .replace(/\s+/g, " ")
273
+ .trim()
274
+ .slice(0, tope);
275
+ /**
276
+ * El JSON de la respuesta, tolerando la valla de código.
277
+ *
278
+ * Los modelos contestan «Aquí va: ```json … ```» aunque se les pida solo el JSON, así que
279
+ * se busca el primer `{` y el último `}`. Lo que no parsee no es un error: es un veredicto
280
+ * `indeterminado`, que no es verde.
281
+ */
282
+ function objetoDe(texto) {
283
+ const desde = texto.indexOf("{");
284
+ const hasta = texto.lastIndexOf("}");
285
+ if (desde === -1 || hasta <= desde)
286
+ return undefined;
287
+ try {
288
+ const valor = JSON.parse(texto.slice(desde, hasta + 1));
289
+ return typeof valor === "object" && valor !== null ? valor : undefined;
290
+ }
291
+ catch {
292
+ return undefined;
293
+ }
294
+ }
295
+ /** El veredicto tal como se guarda, o `indeterminado` diciendo por qué. */
296
+ export function veredictoDeTexto(texto) {
297
+ const objeto = objetoDe(texto);
298
+ if (objeto === undefined) {
299
+ return { veredicto: "indeterminado", resumen: "el juez no contestó con el JSON que se le pidió" };
300
+ }
301
+ const dicho = objeto.veredicto;
302
+ if (dicho !== "verde" && dicho !== "rojo") {
303
+ return {
304
+ veredicto: "indeterminado",
305
+ resumen: `el juez contestó un veredicto que no es ninguno de los dos: «${unaFrase(String(dicho), 40)}»`,
306
+ };
307
+ }
308
+ const resumen = typeof objeto.resumen === "string" ? unaFrase(objeto.resumen, TOPE_DE_RESUMEN) : "";
309
+ if (resumen === "") {
310
+ // Un veredicto sin resumen no se puede leer, y de esto sale la tarjeta que alguien
311
+ // mira: fail-closed, como todo lo demás por aquí.
312
+ return { veredicto: "indeterminado", resumen: `el juez dijo «${dicho}» y no explicó por qué` };
313
+ }
314
+ const hallazgos = Array.isArray(objeto.hallazgos)
315
+ ? objeto.hallazgos
316
+ .filter((h) => typeof h === "string")
317
+ .map((h) => unaFrase(h, TOPE_DE_HALLAZGO))
318
+ .filter((h) => h !== "")
319
+ .slice(0, TOPE_DE_HALLAZGOS)
320
+ : [];
321
+ // Ausente y vacío: sin hallazgos el campo NO se pone, para que `[]` siga pudiendo
322
+ // significar «los miró y no encontró ninguno» el día que alguien lo distinga.
323
+ return { veredicto: dicho, resumen, ...(hallazgos.length === 0 ? {} : { hallazgos }) };
324
+ }
325
+ export function crearJuezDeTarea(opciones) {
326
+ return {
327
+ juzgar: async (caso) => {
328
+ let texto;
329
+ try {
330
+ texto = await opciones.invocar(PAPEL_DEL_JUEZ, promptDelJuez(caso), caso.raiz);
331
+ }
332
+ catch (error) {
333
+ // Lo que ya viene envuelto se deja: `invocarConModelos` distingue el fallo de
334
+ // CONSTRUIR (cuyo mensaje es el accionable) del de LLAMAR (cuyo cuerpo no se
335
+ // repite). Cualquier otro `invocar` puede lanzar lo que sea, y entonces solo se
336
+ // conserva el nombre del error — la regla de `ErrorCatalogoModelos`.
337
+ if (error instanceof ErrorDelJuezDeTarea)
338
+ throw error;
339
+ throw new ErrorDelJuezDeTarea(error instanceof Error ? error.name : "error al preguntar");
340
+ }
341
+ return veredictoDeTexto(texto);
342
+ },
343
+ };
344
+ }
345
+ //# sourceMappingURL=juezDeTarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"juezDeTarea.js","sourceRoot":"","sources":["../../src/agent/juezDeTarea.ts"],"names":[],"mappings":"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"}