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
@@ -26,12 +26,15 @@ export async function correrTurno(eventos, piel, opciones = {}) {
26
26
  let abierta = false;
27
27
  let ultimoId;
28
28
  /** Cualquier cosa que no sea un token empieza su propia línea. */
29
- const escribirLinea = (texto) => {
29
+ const escribirLinea = (texto, detalle) => {
30
30
  if (abierta) {
31
31
  piel.cerrarLinea();
32
32
  abierta = false;
33
33
  }
34
- piel.linea(texto);
34
+ if (detalle === undefined)
35
+ piel.linea(texto);
36
+ else
37
+ piel.linea(texto, detalle);
35
38
  };
36
39
  try {
37
40
  for await (const ev of eventos) {
@@ -45,6 +48,19 @@ export async function correrTurno(eventos, piel, opciones = {}) {
45
48
  abierta = true;
46
49
  piel.token(ev.texto);
47
50
  break;
51
+ case "razonamiento":
52
+ // La piel que no lo implementa no se entera de que existe: ni cierra la línea de
53
+ // tokens ni pinta nada, así que stdio y la TUI siguen dando lo mismo que antes.
54
+ if (piel.razonamiento !== undefined) {
55
+ // Cierra la línea de respuesta abierta, como cualquier otra cosa que empieza la
56
+ // suya: el razonamiento no es continuación de la frase que se estaba diciendo.
57
+ if (abierta) {
58
+ piel.cerrarLinea();
59
+ abierta = false;
60
+ }
61
+ piel.razonamiento(ev.texto);
62
+ }
63
+ break;
48
64
  case "fase": {
49
65
  bitacora.anota(ev.fase, ev.detalle ?? "");
50
66
  const texto = `${TEXTO_DE_FASE[ev.fase]}${ev.detalle ? ` — ${ev.detalle}` : ""}`;
@@ -56,7 +72,7 @@ export async function correrTurno(eventos, piel, opciones = {}) {
56
72
  piel.cerrarLinea();
57
73
  abierta = false;
58
74
  }
59
- piel.fase(texto);
75
+ piel.fase(texto, ev.fase);
60
76
  }
61
77
  else {
62
78
  escribirLinea(`· ${texto}`);
@@ -65,8 +81,8 @@ export async function correrTurno(eventos, piel, opciones = {}) {
65
81
  }
66
82
  case "tool":
67
83
  bitacora.anota("tool", ev.nombre);
68
- for (const linea of colapsador.lineas({ nombre: ev.nombre, detalle: ev.detalle, error: ev.error })) {
69
- escribirLinea(linea);
84
+ for (const l of colapsador.lineas({ nombre: ev.nombre, detalle: ev.detalle, error: ev.error })) {
85
+ escribirLinea(l.texto, { nombre: l.nombre, ...(l.error === undefined ? {} : { error: l.error }) });
70
86
  }
71
87
  break;
72
88
  case "plan":
@@ -78,16 +94,40 @@ export async function correrTurno(eventos, piel, opciones = {}) {
78
94
  bitacora.anota("tarea", `${ev.id} ${ev.estado}`);
79
95
  escribirLinea(`▶ tarea ${ev.indice}/${ev.total}: ${ev.id} — ${ev.estado}`);
80
96
  break;
81
- case "verificacion":
97
+ case "verificacion": {
82
98
  bitacora.anota("verify", ev.verde ? "verde" : `${ev.errores} errores`);
83
99
  escribirLinea(ev.verde
84
100
  ? "✓ verificación en verde"
85
101
  : `✗ verificación: ${ev.errores} error(es), ${ev.avisos} aviso(s)`);
102
+ // Uno por línea, con dónde: el resumen solo dice cuántos, y cuántos no se
103
+ // arregla. La marca va por severidad y no por color, que aquí no hay.
104
+ for (const h of ev.hallazgos ?? []) {
105
+ const marca = h.severidad === "error" ? "✗" : h.severidad === "warning" ? "△" : "·";
106
+ const donde = h.fichero === undefined ? "" : ` ${h.fichero}${h.linea === undefined ? "" : `:${h.linea}`}`;
107
+ escribirLinea(` ${marca} ${h.code}${donde} — ${h.mensaje}`);
108
+ }
109
+ // Lo que ya estaba mal ANTES de este turno se dice aparte y sin detalle:
110
+ // atribuírselo al agente sería falso, callarlo sería fingir un proyecto limpio.
111
+ if (ev.preexistentes !== undefined && ev.preexistentes > 0) {
112
+ escribirLinea(` (y ${ev.preexistentes} hallazgo(s) más en ficheros que este turno no tocó)`);
113
+ }
86
114
  break;
115
+ }
87
116
  case "reparacion":
88
117
  bitacora.anota("reparacion", `${ev.intento}/${ev.tope}`);
89
118
  escribirLinea(`🔁 reparando (intento ${ev.intento} de ${ev.tope})`);
90
119
  break;
120
+ case "artefacto": {
121
+ // Se ANUNCIA porque no se aprueba. Un artefacto se escribe sin preguntar —no es
122
+ // del proyecto—, así que la línea es lo único que evita que sea una escritura
123
+ // muda. Lleva el tamaño porque un panel de 400 KB y un SVG de 2 KB no son la
124
+ // misma noticia, y la ruta virtual porque es con la que se pide después.
125
+ const { nombre, bytes, ruta } = ev.artefacto;
126
+ bitacora.anota("artefacto", nombre);
127
+ escribirLinea(`🖼 artefacto: ${nombre} (${Math.max(1, Math.round(bytes / 1024))} KB) · ${ruta}`);
128
+ piel.artefacto?.(ev.artefacto);
129
+ break;
130
+ }
91
131
  case "bloqueado":
92
132
  bitacora.anota("bloqueado", ev.motivo);
93
133
  escribirLinea(`⛔ bloqueado (${ev.motivo}): ${ev.explicacion}`);
@@ -126,7 +166,15 @@ export async function correrTurno(eventos, piel, opciones = {}) {
126
166
  // mitad, el «×17» es justo el dato que explica dónde se quedó.
127
167
  const cierre = colapsador.cierre();
128
168
  if (cierre)
129
- escribirLinea(cierre);
169
+ escribirLinea(cierre.texto, { nombre: cierre.nombre });
170
+ // Una pasada intermedia —hay otra ronda o un intento de reparación detrás— NO cierra:
171
+ // ni avisos ni `fin`. La línea abierta sí se cierra siempre, porque lo que venga
172
+ // detrás empieza la suya.
173
+ if (!(opciones.cerrar?.() ?? true)) {
174
+ if (abierta)
175
+ piel.cerrarLinea();
176
+ return bitacora;
177
+ }
130
178
  // Los avisos deterministas van DESPUÉS de todo, y también si hubo excepción.
131
179
  // Por el MISMO camino que los eventos `aviso`: la piel que recicla los recibe
132
180
  // delegados, la que no los pinta como líneas estáticas.
@@ -144,7 +192,7 @@ export async function correrTurno(eventos, piel, opciones = {}) {
144
192
  }
145
193
  if (abierta)
146
194
  piel.cerrarLinea();
147
- piel.fin(Date.now() - t0);
195
+ piel.fin(Date.now() - (opciones.desde ?? t0));
148
196
  }
149
197
  return bitacora;
150
198
  }
@@ -1 +1 @@
1
- {"version":3,"file":"turno.js","sourceRoot":"","sources":["../../src/core/turno.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"turno.js","sourceRoot":"","sources":["../../src/core/turno.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Con qué código está corriendo esto, dicho al arrancar.
3
+ *
4
+ * **Existe por tres rondas perdidas el 11-09-2026.** Un cambio del servidor no se ve hasta
5
+ * parar y volver a arrancar el proceso, mientras que el cliente se lee del DISCO en cada
6
+ * petición (`web/servidor/servidor.ts`) y por tanto se actualiza con solo recargar la
7
+ * página. Así que una consola puede enseñar a la vez lo nuevo del cliente y lo viejo del
8
+ * servidor — que es exactamente lo que pasó, y ni quien miraba la pantalla ni quien leía el
9
+ * código tenían forma de saber qué había vivo dentro de ese proceso. Un identificador al
10
+ * arrancar lo contesta de un vistazo.
11
+ *
12
+ * Es la misma disciplina que el resto: se dice lo que consta y no se rellena lo que no.
13
+ */
14
+ /**
15
+ * La línea que se imprime. Pura, para poder probar los cuatro casos sin git.
16
+ *
17
+ * Sin commit no se inventa ninguno: un paquete instalado no tiene, y decir «desconocido»
18
+ * sería ruido. Con el árbol sucio se DICE, porque entonces el commit no describe lo que
19
+ * corre; y si no se pudo mirar, se dice eso y no «limpio».
20
+ */
21
+ export function lineaDeVersion(v) {
22
+ if (v.commit === undefined)
23
+ return `xonecode ${v.version}`;
24
+ const estado = v.sucio === true
25
+ ? " + cambios sin commitear"
26
+ : v.sucio === undefined
27
+ ? " (no se pudo mirar si hay cambios sin commitear)"
28
+ : "";
29
+ return `xonecode ${v.version} · ${v.commit}${estado}`;
30
+ }
31
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAiBH;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,CAAkB;IAC/C,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;IAC3D,MAAM,MAAM,GACV,CAAC,CAAC,KAAK,KAAK,IAAI;QACd,CAAC,CAAC,0BAA0B;QAC5B,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS;YACrB,CAAC,CAAC,kDAAkD;YACpD,CAAC,CAAC,EAAE,CAAC;IACX,OAAO,YAAY,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;AACxD,CAAC"}
@@ -0,0 +1,389 @@
1
+ /**
2
+ * Adaptado de @langchain/langgraph-checkpoint-sqlite@1.0.4 (MIT, © 2024 LangChain).
3
+ * Véase THIRD_PARTY_NOTICES.md. Se incluye para usar better-sqlite3 13 en npm.
4
+ */
5
+ import Database from "better-sqlite3";
6
+ import { BaseCheckpointSaver, TASKS, WRITES_IDX_MAP, copyCheckpoint, maxChannelVersion, } from "@langchain/langgraph-checkpoint";
7
+ function prepareSql(db, checkpointId) {
8
+ const sql = `
9
+ SELECT
10
+ thread_id,
11
+ checkpoint_ns,
12
+ checkpoint_id,
13
+ parent_checkpoint_id,
14
+ type,
15
+ checkpoint,
16
+ metadata,
17
+ (
18
+ SELECT
19
+ json_group_array(
20
+ json_object(
21
+ 'task_id', pw.task_id,
22
+ 'channel', pw.channel,
23
+ 'type', pw.type,
24
+ 'value', CAST(pw.value AS TEXT)
25
+ )
26
+ )
27
+ FROM writes as pw
28
+ WHERE pw.thread_id = checkpoints.thread_id
29
+ AND pw.checkpoint_ns = checkpoints.checkpoint_ns
30
+ AND pw.checkpoint_id = checkpoints.checkpoint_id
31
+ ) as pending_writes,
32
+ (
33
+ SELECT
34
+ json_group_array(
35
+ json_object(
36
+ 'type', ps.type,
37
+ 'value', CAST(ps.value AS TEXT)
38
+ )
39
+ )
40
+ FROM writes as ps
41
+ WHERE ps.thread_id = checkpoints.thread_id
42
+ AND ps.checkpoint_ns = checkpoints.checkpoint_ns
43
+ AND ps.checkpoint_id = checkpoints.parent_checkpoint_id
44
+ AND ps.channel = '${TASKS}'
45
+ ORDER BY ps.idx
46
+ ) as pending_sends
47
+ FROM checkpoints
48
+ WHERE thread_id = ? AND checkpoint_ns = ? ${checkpointId
49
+ ? "AND checkpoint_id = ?"
50
+ : "ORDER BY checkpoint_id DESC LIMIT 1"}`;
51
+ return db.prepare(sql);
52
+ }
53
+ export class SqliteSaver extends BaseCheckpointSaver {
54
+ db;
55
+ isSetup;
56
+ withoutCheckpoint;
57
+ withCheckpoint;
58
+ constructor(db, serde) {
59
+ super(serde);
60
+ this.db = db;
61
+ this.isSetup = false;
62
+ }
63
+ static fromConnString(connStringOrLocalPath) {
64
+ return new SqliteSaver(new Database(connStringOrLocalPath));
65
+ }
66
+ setup() {
67
+ if (this.isSetup) {
68
+ return;
69
+ }
70
+ this.db.pragma("journal_mode=WAL");
71
+ this.db.exec(`
72
+ CREATE TABLE IF NOT EXISTS checkpoints (
73
+ thread_id TEXT NOT NULL,
74
+ checkpoint_ns TEXT NOT NULL DEFAULT '',
75
+ checkpoint_id TEXT NOT NULL,
76
+ parent_checkpoint_id TEXT,
77
+ type TEXT,
78
+ checkpoint BLOB,
79
+ metadata BLOB,
80
+ PRIMARY KEY (thread_id, checkpoint_ns, checkpoint_id)
81
+ );`);
82
+ this.db.exec(`
83
+ CREATE TABLE IF NOT EXISTS writes (
84
+ thread_id TEXT NOT NULL,
85
+ checkpoint_ns TEXT NOT NULL DEFAULT '',
86
+ checkpoint_id TEXT NOT NULL,
87
+ task_id TEXT NOT NULL,
88
+ idx INTEGER NOT NULL,
89
+ channel TEXT NOT NULL,
90
+ type TEXT,
91
+ value BLOB,
92
+ PRIMARY KEY (thread_id, checkpoint_ns, checkpoint_id, task_id, idx)
93
+ );`);
94
+ this.withoutCheckpoint = prepareSql(this.db, false);
95
+ this.withCheckpoint = prepareSql(this.db, true);
96
+ this.isSetup = true;
97
+ }
98
+ async getTuple(config) {
99
+ this.setup();
100
+ const { thread_id, checkpoint_ns = "", checkpoint_id, } = config.configurable ?? {};
101
+ const args = [thread_id, checkpoint_ns];
102
+ if (checkpoint_id)
103
+ args.push(checkpoint_id);
104
+ const stm = checkpoint_id ? this.withCheckpoint : this.withoutCheckpoint;
105
+ const row = stm.get(...args);
106
+ if (row === undefined)
107
+ return undefined;
108
+ let finalConfig = config;
109
+ if (!checkpoint_id) {
110
+ finalConfig = {
111
+ configurable: {
112
+ thread_id: row.thread_id,
113
+ checkpoint_ns,
114
+ checkpoint_id: row.checkpoint_id,
115
+ },
116
+ };
117
+ }
118
+ if (finalConfig.configurable?.thread_id === undefined ||
119
+ finalConfig.configurable?.checkpoint_id === undefined) {
120
+ throw new Error("Missing thread_id or checkpoint_id");
121
+ }
122
+ const pendingWrites = await Promise.all(JSON.parse(row.pending_writes).map(async (write) => {
123
+ return [
124
+ write.task_id,
125
+ write.channel,
126
+ await this.serde.loadsTyped(write.type ?? "json", write.value ?? ""),
127
+ ];
128
+ }));
129
+ const checkpoint = (await this.serde.loadsTyped(row.type ?? "json", row.checkpoint));
130
+ if (checkpoint.v < 4 && row.parent_checkpoint_id != null) {
131
+ await this.migratePendingSends(checkpoint, row.thread_id, row.parent_checkpoint_id);
132
+ }
133
+ return {
134
+ checkpoint,
135
+ config: finalConfig,
136
+ metadata: (await this.serde.loadsTyped(row.type ?? "json", row.metadata)),
137
+ parentConfig: row.parent_checkpoint_id
138
+ ? {
139
+ configurable: {
140
+ thread_id: row.thread_id,
141
+ checkpoint_ns,
142
+ checkpoint_id: row.parent_checkpoint_id,
143
+ },
144
+ }
145
+ : undefined,
146
+ pendingWrites,
147
+ };
148
+ }
149
+ async *list(config, options) {
150
+ const { limit, before, filter } = options ?? {};
151
+ this.setup();
152
+ const thread_id = config.configurable?.thread_id;
153
+ const checkpoint_ns = config.configurable?.checkpoint_ns;
154
+ let sql = `
155
+ SELECT
156
+ thread_id,
157
+ checkpoint_ns,
158
+ checkpoint_id,
159
+ parent_checkpoint_id,
160
+ type,
161
+ checkpoint,
162
+ metadata,
163
+ (
164
+ SELECT
165
+ json_group_array(
166
+ json_object(
167
+ 'task_id', pw.task_id,
168
+ 'channel', pw.channel,
169
+ 'type', pw.type,
170
+ 'value', CAST(pw.value AS TEXT)
171
+ )
172
+ )
173
+ FROM writes as pw
174
+ WHERE pw.thread_id = checkpoints.thread_id
175
+ AND pw.checkpoint_ns = checkpoints.checkpoint_ns
176
+ AND pw.checkpoint_id = checkpoints.checkpoint_id
177
+ ) as pending_writes,
178
+ (
179
+ SELECT
180
+ json_group_array(
181
+ json_object(
182
+ 'type', ps.type,
183
+ 'value', CAST(ps.value AS TEXT)
184
+ )
185
+ )
186
+ FROM writes as ps
187
+ WHERE ps.thread_id = checkpoints.thread_id
188
+ AND ps.checkpoint_ns = checkpoints.checkpoint_ns
189
+ AND ps.checkpoint_id = checkpoints.parent_checkpoint_id
190
+ AND ps.channel = '${TASKS}'
191
+ ORDER BY ps.idx
192
+ ) as pending_sends
193
+ FROM checkpoints\n`;
194
+ const whereClause = [];
195
+ if (thread_id) {
196
+ whereClause.push("thread_id = ?");
197
+ }
198
+ if (checkpoint_ns !== undefined && checkpoint_ns !== null) {
199
+ whereClause.push("checkpoint_ns = ?");
200
+ }
201
+ if (before?.configurable?.checkpoint_id !== undefined) {
202
+ whereClause.push("checkpoint_id < ?");
203
+ }
204
+ const sanitizedFilter = Object.fromEntries(Object.entries(filter ?? {}).filter(([, value]) => value !== undefined));
205
+ whereClause.push(...Object.keys(sanitizedFilter).map(() => `jsonb(CAST(metadata AS TEXT))->? = ?`));
206
+ if (whereClause.length > 0) {
207
+ sql += `WHERE\n ${whereClause.join(" AND\n ")}\n`;
208
+ }
209
+ sql += "\nORDER BY checkpoint_id DESC";
210
+ if (limit) {
211
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
212
+ sql += ` LIMIT ${parseInt(limit, 10)}`; // parseInt here (with cast to make TS happy) to sanitize input, as limit may be user-provided
213
+ }
214
+ const args = [
215
+ thread_id,
216
+ checkpoint_ns,
217
+ before?.configurable?.checkpoint_id,
218
+ ...Object.entries(sanitizedFilter).flatMap(([key, value]) => [
219
+ `$.${key}`,
220
+ JSON.stringify(value),
221
+ ]),
222
+ ].filter((value) => value !== undefined && value !== null);
223
+ const rows = this.db
224
+ .prepare(sql)
225
+ .all(...args);
226
+ if (rows) {
227
+ for (const row of rows) {
228
+ const pendingWrites = await Promise.all(JSON.parse(row.pending_writes).map(async (write) => {
229
+ return [
230
+ write.task_id,
231
+ write.channel,
232
+ await this.serde.loadsTyped(write.type ?? "json", write.value ?? ""),
233
+ ];
234
+ }));
235
+ const checkpoint = (await this.serde.loadsTyped(row.type ?? "json", row.checkpoint));
236
+ if (checkpoint.v < 4 && row.parent_checkpoint_id != null) {
237
+ await this.migratePendingSends(checkpoint, row.thread_id, row.parent_checkpoint_id);
238
+ }
239
+ yield {
240
+ config: {
241
+ configurable: {
242
+ thread_id: row.thread_id,
243
+ checkpoint_ns: row.checkpoint_ns,
244
+ checkpoint_id: row.checkpoint_id,
245
+ },
246
+ },
247
+ checkpoint,
248
+ metadata: (await this.serde.loadsTyped(row.type ?? "json", row.metadata)),
249
+ parentConfig: row.parent_checkpoint_id
250
+ ? {
251
+ configurable: {
252
+ thread_id: row.thread_id,
253
+ checkpoint_ns: row.checkpoint_ns,
254
+ checkpoint_id: row.parent_checkpoint_id,
255
+ },
256
+ }
257
+ : undefined,
258
+ pendingWrites,
259
+ };
260
+ }
261
+ }
262
+ }
263
+ async put(config, checkpoint, metadata) {
264
+ this.setup();
265
+ if (!config.configurable) {
266
+ throw new Error("Empty configuration supplied.");
267
+ }
268
+ const thread_id = config.configurable?.thread_id;
269
+ const checkpoint_ns = config.configurable?.checkpoint_ns ?? "";
270
+ const parent_checkpoint_id = config.configurable?.checkpoint_id;
271
+ if (!thread_id) {
272
+ throw new Error(`Missing "thread_id" field in passed "config.configurable".`);
273
+ }
274
+ const preparedCheckpoint = copyCheckpoint(checkpoint);
275
+ const [[type1, serializedCheckpoint], [type2, serializedMetadata]] = await Promise.all([
276
+ this.serde.dumpsTyped(preparedCheckpoint),
277
+ this.serde.dumpsTyped(metadata),
278
+ ]);
279
+ if (type1 !== type2) {
280
+ throw new Error("Failed to serialized checkpoint and metadata to the same type.");
281
+ }
282
+ const row = [
283
+ thread_id,
284
+ checkpoint_ns,
285
+ checkpoint.id,
286
+ parent_checkpoint_id,
287
+ type1,
288
+ serializedCheckpoint,
289
+ serializedMetadata,
290
+ ];
291
+ this.db
292
+ .prepare(`INSERT OR REPLACE INTO checkpoints (thread_id, checkpoint_ns, checkpoint_id, parent_checkpoint_id, type, checkpoint, metadata) VALUES (?, ?, ?, ?, ?, ?, ?)`)
293
+ .run(...row);
294
+ return {
295
+ configurable: {
296
+ thread_id,
297
+ checkpoint_ns,
298
+ checkpoint_id: checkpoint.id,
299
+ },
300
+ };
301
+ }
302
+ async putWrites(config, writes, taskId) {
303
+ this.setup();
304
+ if (!config.configurable) {
305
+ throw new Error("Empty configuration supplied.");
306
+ }
307
+ if (!config.configurable?.thread_id) {
308
+ throw new Error("Missing thread_id field in config.configurable.");
309
+ }
310
+ if (!config.configurable?.checkpoint_id) {
311
+ throw new Error("Missing checkpoint_id field in config.configurable.");
312
+ }
313
+ // Conflict resolution matches the Python SQLite checkpointer and the
314
+ // langgraph-checkpoint contract (BaseCheckpointSaver.put_writes):
315
+ // - When every write targets a special channel (ERROR / SCHEDULED /
316
+ // INTERRUPT / RESUME, each pinned to a negative `idx` by
317
+ // WRITES_IDX_MAP), we REPLACE so e.g. INTERRUPT can be overwritten on
318
+ // RESUME.
319
+ // - Otherwise we IGNORE so a regular write from one task can never
320
+ // clobber a regular write that another concurrent task already stored
321
+ // at the same (task_id, idx).
322
+ const allSpecial = writes.every(([channel]) => channel in WRITES_IDX_MAP);
323
+ const stmt = this.db.prepare(`
324
+ INSERT ${allSpecial ? "OR REPLACE" : "OR IGNORE"} INTO writes
325
+ (thread_id, checkpoint_ns, checkpoint_id, task_id, idx, channel, type, value)
326
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
327
+ `);
328
+ const transaction = this.db.transaction((rows) => {
329
+ for (const row of rows) {
330
+ stmt.run(...row);
331
+ }
332
+ });
333
+ const rows = await Promise.all(writes.map(async (write, idx) => {
334
+ const [type, serializedWrite] = await this.serde.dumpsTyped(write[1]);
335
+ return [
336
+ config.configurable?.thread_id,
337
+ config.configurable?.checkpoint_ns,
338
+ config.configurable?.checkpoint_id,
339
+ taskId,
340
+ // Special channels are stored at fixed negative indices so they
341
+ // never collide with regular per-step writes (whose `idx` is the
342
+ // ordinal within `writes`).
343
+ WRITES_IDX_MAP[write[0]] ?? idx,
344
+ write[0],
345
+ type,
346
+ serializedWrite,
347
+ ];
348
+ }));
349
+ transaction(rows);
350
+ }
351
+ async deleteThread(threadId) {
352
+ const transaction = this.db.transaction(() => {
353
+ this.db
354
+ .prepare(`DELETE FROM checkpoints WHERE thread_id = ?`)
355
+ .run(threadId);
356
+ this.db.prepare(`DELETE FROM writes WHERE thread_id = ?`).run(threadId);
357
+ });
358
+ transaction();
359
+ }
360
+ async migratePendingSends(checkpoint, threadId, parentCheckpointId) {
361
+ const { pending_sends } = this.db
362
+ .prepare(`
363
+ SELECT
364
+ checkpoint_id,
365
+ json_group_array(
366
+ json_object(
367
+ 'type', ps.type,
368
+ 'value', CAST(ps.value AS TEXT)
369
+ )
370
+ ) as pending_sends
371
+ FROM writes as ps
372
+ WHERE ps.thread_id = ?
373
+ AND ps.checkpoint_id = ?
374
+ AND ps.channel = '${TASKS}'
375
+ ORDER BY ps.idx
376
+ `)
377
+ .get(threadId, parentCheckpointId);
378
+ const mutableCheckpoint = checkpoint;
379
+ // add pending sends to checkpoint
380
+ mutableCheckpoint.channel_values ??= {};
381
+ mutableCheckpoint.channel_values[TASKS] = await Promise.all(JSON.parse(pending_sends).map(({ type, value }) => this.serde.loadsTyped(type, value)));
382
+ // add to versions
383
+ mutableCheckpoint.channel_versions[TASKS] =
384
+ Object.keys(checkpoint.channel_versions).length > 0
385
+ ? maxChannelVersion(...Object.values(checkpoint.channel_versions))
386
+ : this.getNextVersion(undefined);
387
+ }
388
+ }
389
+ //# sourceMappingURL=sqliteSaver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqliteSaver.js","sourceRoot":"","sources":["../../src/vendor/sqliteSaver.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { createMiddleware } from "langchain";
2
2
  export function createTokenTracker() {
3
3
  return { input: 0, output: 0, cache: 0, calls: 0, contexto: 0 };
4
4
  }
5
- export function createTokenTrackingMiddleware(tracker) {
5
+ export function createTokenTrackingMiddleware(tracker, alContar) {
6
6
  return createMiddleware({
7
7
  name: "TokenTrackingMiddleware",
8
8
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -33,11 +33,32 @@ export function createTokenTrackingMiddleware(tracker) {
33
33
  cacheRead = details?.cached_tokens ?? 0;
34
34
  }
35
35
  }
36
+ // La caché no puede superar la entrada: es una PARTE de ella. Medido contra Gemini
37
+ // (`gemini-3.8-flash`, streaming): cuando el stream trae dos trozos con `usageMetadata`,
38
+ // `@langchain/google-genai` 2.3.0 diferencia `input`/`output` entre trozos pero NO
39
+ // `cache_read`, y el `concat` de los chunks lo suma dos veces — 32.696 «cacheados» de
40
+ // una entrada de 20.097 cuando el servidor decía 16.348. Acotarlo no lo arregla del
41
+ // todo (queda sobrecontado hasta el 100%), pero impide reportar más caché que entrada.
42
+ cacheRead = Math.min(cacheRead, inputTokens);
36
43
  tracker.input += inputTokens;
37
44
  tracker.output += outputTokens;
38
45
  tracker.cache += cacheRead;
39
46
  tracker.calls += 1;
40
47
  tracker.contexto = inputTokens;
48
+ // Un observador es diagnóstico: nunca se deja que un problema de log rompa
49
+ // una llamada real ni cambie el conteo que acabamos de obtener del proveedor.
50
+ try {
51
+ alContar?.({
52
+ input: inputTokens,
53
+ output: outputTokens,
54
+ cache: cacheRead,
55
+ llamadas: tracker.calls,
56
+ contexto: tracker.contexto,
57
+ });
58
+ }
59
+ catch {
60
+ // Sin acción a propósito; el tracker sigue siendo la fuente de verdad.
61
+ }
41
62
  },
42
63
  });
43
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tokenTracking.js","sourceRoot":"","sources":["../../src/vendor/tokenTracking.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokenTracking.js","sourceRoot":"","sources":["../../src/vendor/tokenTracking.ts"],"names":[],"mappings":"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"}