@hoilab/ada-cli 0.84.22 → 0.85.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 (1114) hide show
  1. package/CHANGELOG.md +29 -2
  2. package/README.es.md +17 -6
  3. package/README.md +109 -11
  4. package/dist/ada-publico.d.ts +35 -0
  5. package/dist/ada-publico.d.ts.map +1 -0
  6. package/dist/ada-publico.js +40 -0
  7. package/dist/ada-publico.js.map +1 -0
  8. package/dist/cli/audit-command.d.ts +15 -0
  9. package/dist/cli/audit-command.d.ts.map +1 -0
  10. package/dist/cli/audit-command.js +280 -0
  11. package/dist/cli/audit-command.js.map +1 -0
  12. package/dist/cli/banco-command.d.ts +15 -0
  13. package/dist/cli/banco-command.d.ts.map +1 -0
  14. package/dist/cli/banco-command.js +213 -0
  15. package/dist/cli/banco-command.js.map +1 -0
  16. package/dist/cli/cleanse-command.d.ts +11 -0
  17. package/dist/cli/cleanse-command.d.ts.map +1 -0
  18. package/dist/cli/cleanse-command.js +101 -0
  19. package/dist/cli/cleanse-command.js.map +1 -0
  20. package/dist/cli/commit-command.d.ts +31 -0
  21. package/dist/cli/commit-command.d.ts.map +1 -0
  22. package/dist/cli/commit-command.js +158 -0
  23. package/dist/cli/commit-command.js.map +1 -0
  24. package/dist/cli/computer-command.d.ts +12 -0
  25. package/dist/cli/computer-command.d.ts.map +1 -0
  26. package/dist/cli/computer-command.js +141 -0
  27. package/dist/cli/computer-command.js.map +1 -0
  28. package/dist/cli/discover-command.d.ts +18 -0
  29. package/dist/cli/discover-command.d.ts.map +1 -0
  30. package/dist/cli/discover-command.js +108 -0
  31. package/dist/cli/discover-command.js.map +1 -0
  32. package/dist/cli/hashline-command.d.ts +11 -0
  33. package/dist/cli/hashline-command.d.ts.map +1 -0
  34. package/dist/cli/hashline-command.js +106 -0
  35. package/dist/cli/hashline-command.js.map +1 -0
  36. package/dist/cli/import-command.d.ts +35 -0
  37. package/dist/cli/import-command.d.ts.map +1 -0
  38. package/dist/cli/import-command.js +164 -0
  39. package/dist/cli/import-command.js.map +1 -0
  40. package/dist/cli/politica-command.d.ts +20 -0
  41. package/dist/cli/politica-command.d.ts.map +1 -0
  42. package/dist/cli/politica-command.js +93 -0
  43. package/dist/cli/politica-command.js.map +1 -0
  44. package/dist/cli/refine-command.d.ts +18 -0
  45. package/dist/cli/refine-command.d.ts.map +1 -0
  46. package/dist/cli/refine-command.js +101 -0
  47. package/dist/cli/refine-command.js.map +1 -0
  48. package/dist/cli/review-command.d.ts +24 -0
  49. package/dist/cli/review-command.d.ts.map +1 -0
  50. package/dist/cli/review-command.js +168 -0
  51. package/dist/cli/review-command.js.map +1 -0
  52. package/dist/cli/schedule-command.d.ts +17 -0
  53. package/dist/cli/schedule-command.d.ts.map +1 -0
  54. package/dist/cli/schedule-command.js +117 -0
  55. package/dist/cli/schedule-command.js.map +1 -0
  56. package/dist/cli/serve-command.d.ts +72 -0
  57. package/dist/cli/serve-command.d.ts.map +1 -0
  58. package/dist/cli/serve-command.js +568 -0
  59. package/dist/cli/serve-command.js.map +1 -0
  60. package/dist/cli/telegram-command.d.ts +18 -0
  61. package/dist/cli/telegram-command.d.ts.map +1 -0
  62. package/dist/cli/telegram-command.js +137 -0
  63. package/dist/cli/telegram-command.js.map +1 -0
  64. package/dist/cli/telemetria-command.d.ts +22 -0
  65. package/dist/cli/telemetria-command.d.ts.map +1 -0
  66. package/dist/cli/telemetria-command.js +127 -0
  67. package/dist/cli/telemetria-command.js.map +1 -0
  68. package/dist/cli/undo-command.d.ts +9 -0
  69. package/dist/cli/undo-command.d.ts.map +1 -0
  70. package/dist/cli/undo-command.js +56 -0
  71. package/dist/cli/undo-command.js.map +1 -0
  72. package/dist/cli/usage-command.d.ts +10 -0
  73. package/dist/cli/usage-command.d.ts.map +1 -0
  74. package/dist/cli/usage-command.js +209 -0
  75. package/dist/cli/usage-command.js.map +1 -0
  76. package/dist/cli/wiki-command.d.ts +9 -0
  77. package/dist/cli/wiki-command.d.ts.map +1 -0
  78. package/dist/cli/wiki-command.js +76 -0
  79. package/dist/cli/wiki-command.js.map +1 -0
  80. package/dist/cli.d.ts +6 -0
  81. package/dist/cli.d.ts.map +1 -1
  82. package/dist/cli.js +10 -11
  83. package/dist/cli.js.map +1 -1
  84. package/dist/config.d.ts +1 -1
  85. package/dist/config.d.ts.map +1 -1
  86. package/dist/config.js +1 -1
  87. package/dist/config.js.map +1 -1
  88. package/dist/core/ada.d.ts +58 -0
  89. package/dist/core/ada.d.ts.map +1 -0
  90. package/dist/core/ada.js +61 -0
  91. package/dist/core/ada.js.map +1 -0
  92. package/dist/core/advisor/guarda.d.ts +66 -0
  93. package/dist/core/advisor/guarda.d.ts.map +1 -0
  94. package/dist/core/advisor/guarda.js +191 -0
  95. package/dist/core/advisor/guarda.js.map +1 -0
  96. package/dist/core/advisor/runtime.d.ts +66 -0
  97. package/dist/core/advisor/runtime.d.ts.map +1 -0
  98. package/dist/core/advisor/runtime.js +121 -0
  99. package/dist/core/advisor/runtime.js.map +1 -0
  100. package/dist/core/advisor/sesion.d.ts +109 -0
  101. package/dist/core/advisor/sesion.d.ts.map +1 -0
  102. package/dist/core/advisor/sesion.js +139 -0
  103. package/dist/core/advisor/sesion.js.map +1 -0
  104. package/dist/core/agent-session.d.ts +30 -2
  105. package/dist/core/agent-session.d.ts.map +1 -1
  106. package/dist/core/agent-session.js +430 -22
  107. package/dist/core/agent-session.js.map +1 -1
  108. package/dist/core/agents/loader.d.ts +77 -0
  109. package/dist/core/agents/loader.d.ts.map +1 -0
  110. package/dist/core/agents/loader.js +154 -0
  111. package/dist/core/agents/loader.js.map +1 -0
  112. package/dist/core/aprobacion/generados.d.ts +37 -0
  113. package/dist/core/aprobacion/generados.d.ts.map +1 -0
  114. package/dist/core/aprobacion/generados.js +85 -0
  115. package/dist/core/aprobacion/generados.js.map +1 -0
  116. package/dist/core/aprobacion/politica-de-maquina.d.ts +90 -0
  117. package/dist/core/aprobacion/politica-de-maquina.d.ts.map +1 -0
  118. package/dist/core/aprobacion/politica-de-maquina.js +212 -0
  119. package/dist/core/aprobacion/politica-de-maquina.js.map +1 -0
  120. package/dist/core/aprobacion/politica.d.ts +90 -0
  121. package/dist/core/aprobacion/politica.d.ts.map +1 -0
  122. package/dist/core/aprobacion/politica.js +375 -0
  123. package/dist/core/aprobacion/politica.js.map +1 -0
  124. package/dist/core/arranque/atajos.d.ts +46 -0
  125. package/dist/core/arranque/atajos.d.ts.map +1 -0
  126. package/dist/core/arranque/atajos.js +113 -0
  127. package/dist/core/arranque/atajos.js.map +1 -0
  128. package/dist/core/audit/exportacion.d.ts +54 -0
  129. package/dist/core/audit/exportacion.d.ts.map +1 -0
  130. package/dist/core/audit/exportacion.js +265 -0
  131. package/dist/core/audit/exportacion.js.map +1 -0
  132. package/dist/core/audit/libro.d.ts +318 -0
  133. package/dist/core/audit/libro.d.ts.map +1 -0
  134. package/dist/core/audit/libro.js +508 -0
  135. package/dist/core/audit/libro.js.map +1 -0
  136. package/dist/core/audit/registro-sesion.d.ts +78 -0
  137. package/dist/core/audit/registro-sesion.d.ts.map +1 -0
  138. package/dist/core/audit/registro-sesion.js +202 -0
  139. package/dist/core/audit/registro-sesion.js.map +1 -0
  140. package/dist/core/audit/retencion.d.ts +82 -0
  141. package/dist/core/audit/retencion.d.ts.map +1 -0
  142. package/dist/core/audit/retencion.js +152 -0
  143. package/dist/core/audit/retencion.js.map +1 -0
  144. package/dist/core/audit/rutas.d.ts +23 -0
  145. package/dist/core/audit/rutas.d.ts.map +1 -0
  146. package/dist/core/audit/rutas.js +23 -0
  147. package/dist/core/audit/rutas.js.map +1 -0
  148. package/dist/core/auth-storage.d.ts +0 -3
  149. package/dist/core/auth-storage.d.ts.map +1 -1
  150. package/dist/core/auth-storage.js +17 -5
  151. package/dist/core/auth-storage.js.map +1 -1
  152. package/dist/core/banco/almacenamiento.d.ts +18 -0
  153. package/dist/core/banco/almacenamiento.d.ts.map +1 -0
  154. package/dist/core/banco/almacenamiento.js +50 -0
  155. package/dist/core/banco/almacenamiento.js.map +1 -0
  156. package/dist/core/banco/analisis.d.ts +37 -0
  157. package/dist/core/banco/analisis.d.ts.map +1 -0
  158. package/dist/core/banco/analisis.js +164 -0
  159. package/dist/core/banco/analisis.js.map +1 -0
  160. package/dist/core/banco/bloques.d.ts +39 -0
  161. package/dist/core/banco/bloques.d.ts.map +1 -0
  162. package/dist/core/banco/bloques.js +84 -0
  163. package/dist/core/banco/bloques.js.map +1 -0
  164. package/dist/core/banco/cargas.d.ts +84 -0
  165. package/dist/core/banco/cargas.d.ts.map +1 -0
  166. package/dist/core/banco/cargas.js +520 -0
  167. package/dist/core/banco/cargas.js.map +1 -0
  168. package/dist/core/banco/comparar.d.ts +29 -0
  169. package/dist/core/banco/comparar.d.ts.map +1 -0
  170. package/dist/core/banco/comparar.js +28 -0
  171. package/dist/core/banco/comparar.js.map +1 -0
  172. package/dist/core/banco/ejecutar.d.ts +44 -0
  173. package/dist/core/banco/ejecutar.d.ts.map +1 -0
  174. package/dist/core/banco/ejecutar.js +183 -0
  175. package/dist/core/banco/ejecutar.js.map +1 -0
  176. package/dist/core/banco/generar.d.ts +24 -0
  177. package/dist/core/banco/generar.d.ts.map +1 -0
  178. package/dist/core/banco/generar.js +159 -0
  179. package/dist/core/banco/generar.js.map +1 -0
  180. package/dist/core/banco/mutaciones.d.ts +25 -0
  181. package/dist/core/banco/mutaciones.d.ts.map +1 -0
  182. package/dist/core/banco/mutaciones.js +215 -0
  183. package/dist/core/banco/mutaciones.js.map +1 -0
  184. package/dist/core/banco/tipos.d.ts +121 -0
  185. package/dist/core/banco/tipos.d.ts.map +1 -0
  186. package/dist/core/banco/tipos.js +16 -0
  187. package/dist/core/banco/tipos.js.map +1 -0
  188. package/dist/core/blobs/almacen.d.ts +81 -0
  189. package/dist/core/blobs/almacen.d.ts.map +1 -0
  190. package/dist/core/blobs/almacen.js +198 -0
  191. package/dist/core/blobs/almacen.js.map +1 -0
  192. package/dist/core/blobs/broker.d.ts +103 -0
  193. package/dist/core/blobs/broker.d.ts.map +1 -0
  194. package/dist/core/blobs/broker.js +204 -0
  195. package/dist/core/blobs/broker.js.map +1 -0
  196. package/dist/core/blobs/index.d.ts +70 -0
  197. package/dist/core/blobs/index.d.ts.map +1 -0
  198. package/dist/core/blobs/index.js +232 -0
  199. package/dist/core/blobs/index.js.map +1 -0
  200. package/dist/core/blobs/payload.d.ts +55 -0
  201. package/dist/core/blobs/payload.d.ts.map +1 -0
  202. package/dist/core/blobs/payload.js +255 -0
  203. package/dist/core/blobs/payload.js.map +1 -0
  204. package/dist/core/blobs/proveedor.d.ts +85 -0
  205. package/dist/core/blobs/proveedor.d.ts.map +1 -0
  206. package/dist/core/blobs/proveedor.js +196 -0
  207. package/dist/core/blobs/proveedor.js.map +1 -0
  208. package/dist/core/browser/cdp.d.ts +41 -0
  209. package/dist/core/browser/cdp.d.ts.map +1 -0
  210. package/dist/core/browser/cdp.js +119 -0
  211. package/dist/core/browser/cdp.js.map +1 -0
  212. package/dist/core/browser/politica.d.ts +51 -0
  213. package/dist/core/browser/politica.d.ts.map +1 -0
  214. package/dist/core/browser/politica.js +123 -0
  215. package/dist/core/browser/politica.js.map +1 -0
  216. package/dist/core/browser/sesion.d.ts +52 -0
  217. package/dist/core/browser/sesion.d.ts.map +1 -0
  218. package/dist/core/browser/sesion.js +176 -0
  219. package/dist/core/browser/sesion.js.map +1 -0
  220. package/dist/core/browser/tools.d.ts +16 -0
  221. package/dist/core/browser/tools.d.ts.map +1 -0
  222. package/dist/core/browser/tools.js +279 -0
  223. package/dist/core/browser/tools.js.map +1 -0
  224. package/dist/core/commit/diff.d.ts +56 -0
  225. package/dist/core/commit/diff.d.ts.map +1 -0
  226. package/dist/core/commit/diff.js +145 -0
  227. package/dist/core/commit/diff.js.map +1 -0
  228. package/dist/core/commit/mensaje.d.ts +80 -0
  229. package/dist/core/commit/mensaje.d.ts.map +1 -0
  230. package/dist/core/commit/mensaje.js +207 -0
  231. package/dist/core/commit/mensaje.js.map +1 -0
  232. package/dist/core/compactar/index.d.ts +52 -0
  233. package/dist/core/compactar/index.d.ts.map +1 -0
  234. package/dist/core/compactar/index.js +91 -0
  235. package/dist/core/compactar/index.js.map +1 -0
  236. package/dist/core/compactar/registro-denso.d.ts +160 -0
  237. package/dist/core/compactar/registro-denso.d.ts.map +1 -0
  238. package/dist/core/compactar/registro-denso.js +620 -0
  239. package/dist/core/compactar/registro-denso.js.map +1 -0
  240. package/dist/core/computer/captura.d.ts +35 -0
  241. package/dist/core/computer/captura.d.ts.map +1 -0
  242. package/dist/core/computer/captura.js +140 -0
  243. package/dist/core/computer/captura.js.map +1 -0
  244. package/dist/core/computer/driver.d.ts +130 -0
  245. package/dist/core/computer/driver.d.ts.map +1 -0
  246. package/dist/core/computer/driver.js +206 -0
  247. package/dist/core/computer/driver.js.map +1 -0
  248. package/dist/core/computer/motor/actions.d.ts +109 -0
  249. package/dist/core/computer/motor/actions.d.ts.map +1 -0
  250. package/dist/core/computer/motor/actions.js +157 -0
  251. package/dist/core/computer/motor/actions.js.map +1 -0
  252. package/dist/core/computer/motor/bridge.d.ts +232 -0
  253. package/dist/core/computer/motor/bridge.d.ts.map +1 -0
  254. package/dist/core/computer/motor/bridge.js +2335 -0
  255. package/dist/core/computer/motor/bridge.js.map +1 -0
  256. package/dist/core/computer/motor/cdp.d.ts +107 -0
  257. package/dist/core/computer/motor/cdp.d.ts.map +1 -0
  258. package/dist/core/computer/motor/cdp.js +659 -0
  259. package/dist/core/computer/motor/cdp.js.map +1 -0
  260. package/dist/core/computer/motor/config.d.ts +23 -0
  261. package/dist/core/computer/motor/config.d.ts.map +1 -0
  262. package/dist/core/computer/motor/config.js +100 -0
  263. package/dist/core/computer/motor/config.js.map +1 -0
  264. package/dist/core/computer/motor/contract.d.ts +81 -0
  265. package/dist/core/computer/motor/contract.d.ts.map +1 -0
  266. package/dist/core/computer/motor/contract.js +14 -0
  267. package/dist/core/computer/motor/contract.js.map +1 -0
  268. package/dist/core/computer/motor/note.d.ts +37 -0
  269. package/dist/core/computer/motor/note.d.ts.map +1 -0
  270. package/dist/core/computer/motor/note.js +162 -0
  271. package/dist/core/computer/motor/note.js.map +1 -0
  272. package/dist/core/computer/motor/outline.d.ts +155 -0
  273. package/dist/core/computer/motor/outline.d.ts.map +1 -0
  274. package/dist/core/computer/motor/outline.js +590 -0
  275. package/dist/core/computer/motor/outline.js.map +1 -0
  276. package/dist/core/computer/motor/output.d.ts +18 -0
  277. package/dist/core/computer/motor/output.d.ts.map +1 -0
  278. package/dist/core/computer/motor/output.js +148 -0
  279. package/dist/core/computer/motor/output.js.map +1 -0
  280. package/dist/core/computer/motor/permissions.d.ts +41 -0
  281. package/dist/core/computer/motor/permissions.d.ts.map +1 -0
  282. package/dist/core/computer/motor/permissions.js +51 -0
  283. package/dist/core/computer/motor/permissions.js.map +1 -0
  284. package/dist/core/computer/motor/platform/architecture.d.ts +5 -0
  285. package/dist/core/computer/motor/platform/architecture.d.ts.map +1 -0
  286. package/dist/core/computer/motor/platform/architecture.js +21 -0
  287. package/dist/core/computer/motor/platform/architecture.js.map +1 -0
  288. package/dist/core/computer/motor/platform/coerce.d.ts +4 -0
  289. package/dist/core/computer/motor/platform/coerce.d.ts.map +1 -0
  290. package/dist/core/computer/motor/platform/coerce.js +17 -0
  291. package/dist/core/computer/motor/platform/coerce.js.map +1 -0
  292. package/dist/core/computer/motor/platform/index.d.ts +4 -0
  293. package/dist/core/computer/motor/platform/index.d.ts.map +1 -0
  294. package/dist/core/computer/motor/platform/index.js +79 -0
  295. package/dist/core/computer/motor/platform/index.js.map +1 -0
  296. package/dist/core/computer/motor/platform/linux/backend.d.ts +3 -0
  297. package/dist/core/computer/motor/platform/linux/backend.d.ts.map +1 -0
  298. package/dist/core/computer/motor/platform/linux/backend.js +173 -0
  299. package/dist/core/computer/motor/platform/linux/backend.js.map +1 -0
  300. package/dist/core/computer/motor/platform/linux/helper.d.ts +29 -0
  301. package/dist/core/computer/motor/platform/linux/helper.d.ts.map +1 -0
  302. package/dist/core/computer/motor/platform/linux/helper.js +261 -0
  303. package/dist/core/computer/motor/platform/linux/helper.js.map +1 -0
  304. package/dist/core/computer/motor/platform/macos/backend.d.ts +3 -0
  305. package/dist/core/computer/motor/platform/macos/backend.d.ts.map +1 -0
  306. package/dist/core/computer/motor/platform/macos/backend.js +124 -0
  307. package/dist/core/computer/motor/platform/macos/backend.js.map +1 -0
  308. package/dist/core/computer/motor/platform/macos/browser.d.ts +7 -0
  309. package/dist/core/computer/motor/platform/macos/browser.d.ts.map +1 -0
  310. package/dist/core/computer/motor/platform/macos/browser.js +101 -0
  311. package/dist/core/computer/motor/platform/macos/browser.js.map +1 -0
  312. package/dist/core/computer/motor/platform/macos/helper-path.mjs +34 -0
  313. package/dist/core/computer/motor/platform/macos/helper.d.ts +32 -0
  314. package/dist/core/computer/motor/platform/macos/helper.d.ts.map +1 -0
  315. package/dist/core/computer/motor/platform/macos/helper.js +277 -0
  316. package/dist/core/computer/motor/platform/macos/helper.js.map +1 -0
  317. package/dist/core/computer/motor/platform/macos/permissions.d.ts +4 -0
  318. package/dist/core/computer/motor/platform/macos/permissions.d.ts.map +1 -0
  319. package/dist/core/computer/motor/platform/macos/permissions.js +118 -0
  320. package/dist/core/computer/motor/platform/macos/permissions.js.map +1 -0
  321. package/dist/core/computer/motor/platform/types.d.ts +263 -0
  322. package/dist/core/computer/motor/platform/types.d.ts.map +1 -0
  323. package/dist/core/computer/motor/platform/types.js +2 -0
  324. package/dist/core/computer/motor/platform/types.js.map +1 -0
  325. package/dist/core/computer/motor/platform/windows/backend.d.ts +3 -0
  326. package/dist/core/computer/motor/platform/windows/backend.d.ts.map +1 -0
  327. package/dist/core/computer/motor/platform/windows/backend.js +163 -0
  328. package/dist/core/computer/motor/platform/windows/backend.js.map +1 -0
  329. package/dist/core/computer/motor/platform/windows/helper.d.ts +18 -0
  330. package/dist/core/computer/motor/platform/windows/helper.d.ts.map +1 -0
  331. package/dist/core/computer/motor/platform/windows/helper.js +174 -0
  332. package/dist/core/computer/motor/platform/windows/helper.js.map +1 -0
  333. package/dist/core/computer/motor/root-selection.d.ts +6 -0
  334. package/dist/core/computer/motor/root-selection.d.ts.map +1 -0
  335. package/dist/core/computer/motor/root-selection.js +28 -0
  336. package/dist/core/computer/motor/root-selection.js.map +1 -0
  337. package/dist/core/computer/motor/runtime.d.ts +50 -0
  338. package/dist/core/computer/motor/runtime.d.ts.map +1 -0
  339. package/dist/core/computer/motor/runtime.js +119 -0
  340. package/dist/core/computer/motor/runtime.js.map +1 -0
  341. package/dist/core/computer/motor/state.d.ts +68 -0
  342. package/dist/core/computer/motor/state.d.ts.map +1 -0
  343. package/dist/core/computer/motor/state.js +100 -0
  344. package/dist/core/computer/motor/state.js.map +1 -0
  345. package/dist/core/computer/motor/view.d.ts +6 -0
  346. package/dist/core/computer/motor/view.d.ts.map +1 -0
  347. package/dist/core/computer/motor/view.js +185 -0
  348. package/dist/core/computer/motor/view.js.map +1 -0
  349. package/dist/core/computer/motor-ada.d.ts +159 -0
  350. package/dist/core/computer/motor-ada.d.ts.map +1 -0
  351. package/dist/core/computer/motor-ada.js +412 -0
  352. package/dist/core/computer/motor-ada.js.map +1 -0
  353. package/dist/core/computer/politica.d.ts +56 -0
  354. package/dist/core/computer/politica.d.ts.map +1 -0
  355. package/dist/core/computer/politica.js +163 -0
  356. package/dist/core/computer/politica.js.map +1 -0
  357. package/dist/core/computer/tools.d.ts +26 -0
  358. package/dist/core/computer/tools.d.ts.map +1 -0
  359. package/dist/core/computer/tools.js +399 -0
  360. package/dist/core/computer/tools.js.map +1 -0
  361. package/dist/core/context-breakdown.d.ts +80 -0
  362. package/dist/core/context-breakdown.d.ts.map +1 -0
  363. package/dist/core/context-breakdown.js +87 -0
  364. package/dist/core/context-breakdown.js.map +1 -0
  365. package/dist/core/credenciales/cliente.d.ts +60 -0
  366. package/dist/core/credenciales/cliente.d.ts.map +1 -0
  367. package/dist/core/credenciales/cliente.js +81 -0
  368. package/dist/core/credenciales/cliente.js.map +1 -0
  369. package/dist/core/credenciales/pool.d.ts +96 -0
  370. package/dist/core/credenciales/pool.d.ts.map +1 -0
  371. package/dist/core/credenciales/pool.js +128 -0
  372. package/dist/core/credenciales/pool.js.map +1 -0
  373. package/dist/core/credenciales/reposo.d.ts +93 -0
  374. package/dist/core/credenciales/reposo.d.ts.map +1 -0
  375. package/dist/core/credenciales/reposo.js +489 -0
  376. package/dist/core/credenciales/reposo.js.map +1 -0
  377. package/dist/core/credenciales/servidor.d.ts +55 -0
  378. package/dist/core/credenciales/servidor.d.ts.map +1 -0
  379. package/dist/core/credenciales/servidor.js +205 -0
  380. package/dist/core/credenciales/servidor.js.map +1 -0
  381. package/dist/core/descubrimiento/comandos.d.ts +30 -0
  382. package/dist/core/descubrimiento/comandos.d.ts.map +1 -0
  383. package/dist/core/descubrimiento/comandos.js +76 -0
  384. package/dist/core/descubrimiento/comandos.js.map +1 -0
  385. package/dist/core/descubrimiento/mcp.d.ts +42 -0
  386. package/dist/core/descubrimiento/mcp.d.ts.map +1 -0
  387. package/dist/core/descubrimiento/mcp.js +130 -0
  388. package/dist/core/descubrimiento/mcp.js.map +1 -0
  389. package/dist/core/descubrimiento/reglas.d.ts +61 -0
  390. package/dist/core/descubrimiento/reglas.d.ts.map +1 -0
  391. package/dist/core/descubrimiento/reglas.js +134 -0
  392. package/dist/core/descubrimiento/reglas.js.map +1 -0
  393. package/dist/core/descubrimiento/skills.d.ts +57 -0
  394. package/dist/core/descubrimiento/skills.d.ts.map +1 -0
  395. package/dist/core/descubrimiento/skills.js +113 -0
  396. package/dist/core/descubrimiento/skills.js.map +1 -0
  397. package/dist/core/dificultad/clasificador.d.ts +133 -0
  398. package/dist/core/dificultad/clasificador.d.ts.map +1 -0
  399. package/dist/core/dificultad/clasificador.js +288 -0
  400. package/dist/core/dificultad/clasificador.js.map +1 -0
  401. package/dist/core/edicion/diario.d.ts +37 -0
  402. package/dist/core/edicion/diario.d.ts.map +1 -0
  403. package/dist/core/edicion/diario.js +51 -0
  404. package/dist/core/edicion/diario.js.map +1 -0
  405. package/dist/core/edicion/hashline.d.ts +71 -0
  406. package/dist/core/edicion/hashline.d.ts.map +1 -0
  407. package/dist/core/edicion/hashline.js +111 -0
  408. package/dist/core/edicion/hashline.js.map +1 -0
  409. package/dist/core/edicion/hueco.d.ts +64 -0
  410. package/dist/core/edicion/hueco.d.ts.map +1 -0
  411. package/dist/core/edicion/hueco.js +162 -0
  412. package/dist/core/edicion/hueco.js.map +1 -0
  413. package/dist/core/edicion/limpiar-carga.d.ts +39 -0
  414. package/dist/core/edicion/limpiar-carga.d.ts.map +1 -0
  415. package/dist/core/edicion/limpiar-carga.js +121 -0
  416. package/dist/core/edicion/limpiar-carga.js.map +1 -0
  417. package/dist/core/edicion/observador.d.ts +80 -0
  418. package/dist/core/edicion/observador.d.ts.map +1 -0
  419. package/dist/core/edicion/observador.js +183 -0
  420. package/dist/core/edicion/observador.js.map +1 -0
  421. package/dist/core/edicion/parecido.d.ts +53 -0
  422. package/dist/core/edicion/parecido.d.ts.map +1 -0
  423. package/dist/core/edicion/parecido.js +145 -0
  424. package/dist/core/edicion/parecido.js.map +1 -0
  425. package/dist/core/edicion/parseo.d.ts +58 -0
  426. package/dist/core/edicion/parseo.d.ts.map +1 -0
  427. package/dist/core/edicion/parseo.js +124 -0
  428. package/dist/core/edicion/parseo.js.map +1 -0
  429. package/dist/core/edicion/reparacion.d.ts +67 -0
  430. package/dist/core/edicion/reparacion.d.ts.map +1 -0
  431. package/dist/core/edicion/reparacion.js +202 -0
  432. package/dist/core/edicion/reparacion.js.map +1 -0
  433. package/dist/core/edicion/sangria.d.ts +121 -0
  434. package/dist/core/edicion/sangria.d.ts.map +1 -0
  435. package/dist/core/edicion/sangria.js +341 -0
  436. package/dist/core/edicion/sangria.js.map +1 -0
  437. package/dist/core/edicion/tipos.d.ts +58 -0
  438. package/dist/core/edicion/tipos.d.ts.map +1 -0
  439. package/dist/core/edicion/tipos.js +160 -0
  440. package/dist/core/edicion/tipos.js.map +1 -0
  441. package/dist/core/errores/proveedor.d.ts +53 -0
  442. package/dist/core/errores/proveedor.d.ts.map +1 -0
  443. package/dist/core/errores/proveedor.js +191 -0
  444. package/dist/core/errores/proveedor.js.map +1 -0
  445. package/dist/core/estructural/buscar.d.ts +61 -0
  446. package/dist/core/estructural/buscar.d.ts.map +1 -0
  447. package/dist/core/estructural/buscar.js +261 -0
  448. package/dist/core/estructural/buscar.js.map +1 -0
  449. package/dist/core/estructural/editar.d.ts +36 -0
  450. package/dist/core/estructural/editar.d.ts.map +1 -0
  451. package/dist/core/estructural/editar.js +123 -0
  452. package/dist/core/estructural/editar.js.map +1 -0
  453. package/dist/core/estructural/tools.d.ts +11 -0
  454. package/dist/core/estructural/tools.d.ts.map +1 -0
  455. package/dist/core/estructural/tools.js +100 -0
  456. package/dist/core/estructural/tools.js.map +1 -0
  457. package/dist/core/experimental.d.ts.map +1 -1
  458. package/dist/core/experimental.js +10 -1
  459. package/dist/core/experimental.js.map +1 -1
  460. package/dist/core/extensiones/suplantacion.d.ts +49 -0
  461. package/dist/core/extensiones/suplantacion.d.ts.map +1 -0
  462. package/dist/core/extensiones/suplantacion.js +61 -0
  463. package/dist/core/extensiones/suplantacion.js.map +1 -0
  464. package/dist/core/extensiones/vigilancia.d.ts +54 -0
  465. package/dist/core/extensiones/vigilancia.d.ts.map +1 -0
  466. package/dist/core/extensiones/vigilancia.js +217 -0
  467. package/dist/core/extensiones/vigilancia.js.map +1 -0
  468. package/dist/core/extensions/loader.d.ts.map +1 -1
  469. package/dist/core/extensions/loader.js +11 -1
  470. package/dist/core/extensions/loader.js.map +1 -1
  471. package/dist/core/harness/fuentes-de-contexto.d.ts +29 -0
  472. package/dist/core/harness/fuentes-de-contexto.d.ts.map +1 -0
  473. package/dist/core/harness/fuentes-de-contexto.js +44 -0
  474. package/dist/core/harness/fuentes-de-contexto.js.map +1 -0
  475. package/dist/core/harness/refine.d.ts +40 -0
  476. package/dist/core/harness/refine.d.ts.map +1 -0
  477. package/dist/core/harness/refine.js +109 -0
  478. package/dist/core/harness/refine.js.map +1 -0
  479. package/dist/core/harness/store.d.ts +75 -0
  480. package/dist/core/harness/store.d.ts.map +1 -0
  481. package/dist/core/harness/store.js +149 -0
  482. package/dist/core/harness/store.js.map +1 -0
  483. package/dist/core/hooks/contract.d.ts +85 -0
  484. package/dist/core/hooks/contract.d.ts.map +1 -0
  485. package/dist/core/hooks/contract.js +140 -0
  486. package/dist/core/hooks/contract.js.map +1 -0
  487. package/dist/core/hooks/runner.d.ts +42 -0
  488. package/dist/core/hooks/runner.d.ts.map +1 -0
  489. package/dist/core/hooks/runner.js +85 -0
  490. package/dist/core/hooks/runner.js.map +1 -0
  491. package/dist/core/hooks/session-hooks.d.ts +62 -0
  492. package/dist/core/hooks/session-hooks.d.ts.map +1 -0
  493. package/dist/core/hooks/session-hooks.js +84 -0
  494. package/dist/core/hooks/session-hooks.js.map +1 -0
  495. package/dist/core/importar/formatos.d.ts +69 -0
  496. package/dist/core/importar/formatos.d.ts.map +1 -0
  497. package/dist/core/importar/formatos.js +235 -0
  498. package/dist/core/importar/formatos.js.map +1 -0
  499. package/dist/core/interactivo/deteccion.d.ts +44 -0
  500. package/dist/core/interactivo/deteccion.d.ts.map +1 -0
  501. package/dist/core/interactivo/deteccion.js +82 -0
  502. package/dist/core/interactivo/deteccion.js.map +1 -0
  503. package/dist/core/interactivo/sesion.d.ts +50 -0
  504. package/dist/core/interactivo/sesion.d.ts.map +1 -0
  505. package/dist/core/interactivo/sesion.js +156 -0
  506. package/dist/core/interactivo/sesion.js.map +1 -0
  507. package/dist/core/interactivo/tools.d.ts +21 -0
  508. package/dist/core/interactivo/tools.d.ts.map +1 -0
  509. package/dist/core/interactivo/tools.js +122 -0
  510. package/dist/core/interactivo/tools.js.map +1 -0
  511. package/dist/core/lectura/mapa.d.ts +70 -0
  512. package/dist/core/lectura/mapa.d.ts.map +1 -0
  513. package/dist/core/lectura/mapa.js +177 -0
  514. package/dist/core/lectura/mapa.js.map +1 -0
  515. package/dist/core/lectura/pdf.d.ts +49 -0
  516. package/dist/core/lectura/pdf.d.ts.map +1 -0
  517. package/dist/core/lectura/pdf.js +337 -0
  518. package/dist/core/lectura/pdf.js.map +1 -0
  519. package/dist/core/limpieza/comprobadores.d.ts +28 -0
  520. package/dist/core/limpieza/comprobadores.d.ts.map +1 -0
  521. package/dist/core/limpieza/comprobadores.js +311 -0
  522. package/dist/core/limpieza/comprobadores.js.map +1 -0
  523. package/dist/core/limpieza/parseo.d.ts +19 -0
  524. package/dist/core/limpieza/parseo.d.ts.map +1 -0
  525. package/dist/core/limpieza/parseo.js +124 -0
  526. package/dist/core/limpieza/parseo.js.map +1 -0
  527. package/dist/core/limpieza/reparacion.d.ts +77 -0
  528. package/dist/core/limpieza/reparacion.d.ts.map +1 -0
  529. package/dist/core/limpieza/reparacion.js +254 -0
  530. package/dist/core/limpieza/reparacion.js.map +1 -0
  531. package/dist/core/limpieza/tipos.d.ts +56 -0
  532. package/dist/core/limpieza/tipos.d.ts.map +1 -0
  533. package/dist/core/limpieza/tipos.js +9 -0
  534. package/dist/core/limpieza/tipos.js.map +1 -0
  535. package/dist/core/lsp/cliente.d.ts +52 -0
  536. package/dist/core/lsp/cliente.d.ts.map +1 -0
  537. package/dist/core/lsp/cliente.js +232 -0
  538. package/dist/core/lsp/cliente.js.map +1 -0
  539. package/dist/core/lsp/descubrimiento.d.ts +62 -0
  540. package/dist/core/lsp/descubrimiento.d.ts.map +1 -0
  541. package/dist/core/lsp/descubrimiento.js +152 -0
  542. package/dist/core/lsp/descubrimiento.js.map +1 -0
  543. package/dist/core/lsp/ediciones.d.ts +59 -0
  544. package/dist/core/lsp/ediciones.d.ts.map +1 -0
  545. package/dist/core/lsp/ediciones.js +89 -0
  546. package/dist/core/lsp/ediciones.js.map +1 -0
  547. package/dist/core/lsp/extension.d.ts +28 -0
  548. package/dist/core/lsp/extension.d.ts.map +1 -0
  549. package/dist/core/lsp/extension.js +34 -0
  550. package/dist/core/lsp/extension.js.map +1 -0
  551. package/dist/core/lsp/tools.d.ts +45 -0
  552. package/dist/core/lsp/tools.d.ts.map +1 -0
  553. package/dist/core/lsp/tools.js +265 -0
  554. package/dist/core/lsp/tools.js.map +1 -0
  555. package/dist/core/mcp/client.d.ts +60 -0
  556. package/dist/core/mcp/client.d.ts.map +1 -0
  557. package/dist/core/mcp/client.js +139 -0
  558. package/dist/core/mcp/client.js.map +1 -0
  559. package/dist/core/mcp/manager.d.ts +86 -0
  560. package/dist/core/mcp/manager.d.ts.map +1 -0
  561. package/dist/core/mcp/manager.js +124 -0
  562. package/dist/core/mcp/manager.js.map +1 -0
  563. package/dist/core/mcp/tools.d.ts +15 -0
  564. package/dist/core/mcp/tools.d.ts.map +1 -0
  565. package/dist/core/mcp/tools.js +84 -0
  566. package/dist/core/mcp/tools.js.map +1 -0
  567. package/dist/core/memory-engine/audit-export.d.ts +12 -10
  568. package/dist/core/memory-engine/audit-export.d.ts.map +1 -1
  569. package/dist/core/memory-engine/audit-export.js +15 -0
  570. package/dist/core/memory-engine/audit-export.js.map +1 -1
  571. package/dist/core/memory-engine/audit-indice.d.ts +153 -0
  572. package/dist/core/memory-engine/audit-indice.d.ts.map +1 -0
  573. package/dist/core/memory-engine/audit-indice.js +271 -0
  574. package/dist/core/memory-engine/audit-indice.js.map +1 -0
  575. package/dist/core/memory-engine/audit.d.ts +18 -6
  576. package/dist/core/memory-engine/audit.d.ts.map +1 -1
  577. package/dist/core/memory-engine/audit.js +25 -42
  578. package/dist/core/memory-engine/audit.js.map +1 -1
  579. package/dist/core/memory-engine/engine.d.ts +19 -1
  580. package/dist/core/memory-engine/engine.d.ts.map +1 -1
  581. package/dist/core/memory-engine/engine.js +71 -5
  582. package/dist/core/memory-engine/engine.js.map +1 -1
  583. package/dist/core/memory-engine/observation-store.d.ts +0 -2
  584. package/dist/core/memory-engine/observation-store.d.ts.map +1 -1
  585. package/dist/core/memory-engine/observation-store.js +4 -5
  586. package/dist/core/memory-engine/observation-store.js.map +1 -1
  587. package/dist/core/memory-engine/refinements.d.ts +51 -0
  588. package/dist/core/memory-engine/refinements.d.ts.map +1 -0
  589. package/dist/core/memory-engine/refinements.js +99 -0
  590. package/dist/core/memory-engine/refinements.js.map +1 -0
  591. package/dist/core/memory-engine/tools.d.ts.map +1 -1
  592. package/dist/core/memory-engine/tools.js +27 -1
  593. package/dist/core/memory-engine/tools.js.map +1 -1
  594. package/dist/core/memory-engine/types.d.ts +2 -0
  595. package/dist/core/memory-engine/types.d.ts.map +1 -1
  596. package/dist/core/memory-engine/types.js.map +1 -1
  597. package/dist/core/model-resolver.d.ts.map +1 -1
  598. package/dist/core/model-resolver.js +7 -1
  599. package/dist/core/model-resolver.js.map +1 -1
  600. package/dist/core/muestreo-restringido.d.ts +49 -0
  601. package/dist/core/muestreo-restringido.d.ts.map +1 -0
  602. package/dist/core/muestreo-restringido.js +65 -0
  603. package/dist/core/muestreo-restringido.js.map +1 -0
  604. package/dist/core/orphan-process-journal.d.ts +48 -0
  605. package/dist/core/orphan-process-journal.d.ts.map +1 -0
  606. package/dist/core/orphan-process-journal.js +116 -0
  607. package/dist/core/orphan-process-journal.js.map +1 -0
  608. package/dist/core/privacidad/categorias-especiales.d.ts +186 -0
  609. package/dist/core/privacidad/categorias-especiales.d.ts.map +1 -0
  610. package/dist/core/privacidad/categorias-especiales.js +745 -0
  611. package/dist/core/privacidad/categorias-especiales.js.map +1 -0
  612. package/dist/core/privacidad/tapar.d.ts +48 -0
  613. package/dist/core/privacidad/tapar.d.ts.map +1 -0
  614. package/dist/core/privacidad/tapar.js +66 -0
  615. package/dist/core/privacidad/tapar.js.map +1 -0
  616. package/dist/core/prompt-cache/diagnostics.d.ts +33 -0
  617. package/dist/core/prompt-cache/diagnostics.d.ts.map +1 -0
  618. package/dist/core/prompt-cache/diagnostics.js +100 -0
  619. package/dist/core/prompt-cache/diagnostics.js.map +1 -0
  620. package/dist/core/prompt-cache/index.d.ts +33 -0
  621. package/dist/core/prompt-cache/index.d.ts.map +1 -0
  622. package/dist/core/prompt-cache/index.js +189 -0
  623. package/dist/core/prompt-cache/index.js.map +1 -0
  624. package/dist/core/prompt-cache/payload.d.ts +58 -0
  625. package/dist/core/prompt-cache/payload.d.ts.map +1 -0
  626. package/dist/core/prompt-cache/payload.js +122 -0
  627. package/dist/core/prompt-cache/payload.js.map +1 -0
  628. package/dist/core/prompt-cache/stabilize.d.ts +65 -0
  629. package/dist/core/prompt-cache/stabilize.d.ts.map +1 -0
  630. package/dist/core/prompt-cache/stabilize.js +137 -0
  631. package/dist/core/prompt-cache/stabilize.js.map +1 -0
  632. package/dist/core/prompt-cache/stats.d.ts +55 -0
  633. package/dist/core/prompt-cache/stats.d.ts.map +1 -0
  634. package/dist/core/prompt-cache/stats.js +158 -0
  635. package/dist/core/prompt-cache/stats.js.map +1 -0
  636. package/dist/core/prompt-eleccion.d.ts +38 -0
  637. package/dist/core/prompt-eleccion.d.ts.map +1 -0
  638. package/dist/core/prompt-eleccion.js +46 -0
  639. package/dist/core/prompt-eleccion.js.map +1 -0
  640. package/dist/core/prompts/montar.d.ts +75 -0
  641. package/dist/core/prompts/montar.d.ts.map +1 -0
  642. package/dist/core/prompts/montar.js +146 -0
  643. package/dist/core/prompts/montar.js.map +1 -0
  644. package/dist/core/prompts/plantilla.d.ts +54 -0
  645. package/dist/core/prompts/plantilla.d.ts.map +1 -0
  646. package/dist/core/prompts/plantilla.js +153 -0
  647. package/dist/core/prompts/plantilla.js.map +1 -0
  648. package/dist/core/prompts/sistema.md +134 -0
  649. package/dist/core/provider-attribution.d.ts +24 -2
  650. package/dist/core/provider-attribution.d.ts.map +1 -1
  651. package/dist/core/provider-attribution.js +24 -42
  652. package/dist/core/provider-attribution.js.map +1 -1
  653. package/dist/core/remoto/destino.d.ts +38 -0
  654. package/dist/core/remoto/destino.d.ts.map +1 -0
  655. package/dist/core/remoto/destino.js +105 -0
  656. package/dist/core/remoto/destino.js.map +1 -0
  657. package/dist/core/remoto/ejecutor.d.ts +59 -0
  658. package/dist/core/remoto/ejecutor.d.ts.map +1 -0
  659. package/dist/core/remoto/ejecutor.js +225 -0
  660. package/dist/core/remoto/ejecutor.js.map +1 -0
  661. package/dist/core/remoto/ficheros.d.ts +29 -0
  662. package/dist/core/remoto/ficheros.d.ts.map +1 -0
  663. package/dist/core/remoto/ficheros.js +90 -0
  664. package/dist/core/remoto/ficheros.js.map +1 -0
  665. package/dist/core/remoto/registro-extension.d.ts +15 -0
  666. package/dist/core/remoto/registro-extension.d.ts.map +1 -0
  667. package/dist/core/remoto/registro-extension.js +17 -0
  668. package/dist/core/remoto/registro-extension.js.map +1 -0
  669. package/dist/core/remoto/tools.d.ts +28 -0
  670. package/dist/core/remoto/tools.d.ts.map +1 -0
  671. package/dist/core/remoto/tools.js +31 -0
  672. package/dist/core/remoto/tools.js.map +1 -0
  673. package/dist/core/resource-loader.d.ts +8 -0
  674. package/dist/core/resource-loader.d.ts.map +1 -1
  675. package/dist/core/resource-loader.js +93 -1
  676. package/dist/core/resource-loader.js.map +1 -1
  677. package/dist/core/revision/hallazgo.d.ts +51 -0
  678. package/dist/core/revision/hallazgo.d.ts.map +1 -0
  679. package/dist/core/revision/hallazgo.js +73 -0
  680. package/dist/core/revision/hallazgo.js.map +1 -0
  681. package/dist/core/revision/revisor.d.ts +81 -0
  682. package/dist/core/revision/revisor.d.ts.map +1 -0
  683. package/dist/core/revision/revisor.js +132 -0
  684. package/dist/core/revision/revisor.js.map +1 -0
  685. package/dist/core/revision/sarif.d.ts +30 -0
  686. package/dist/core/revision/sarif.d.ts.map +1 -0
  687. package/dist/core/revision/sarif.js +83 -0
  688. package/dist/core/revision/sarif.js.map +1 -0
  689. package/dist/core/scheduler/scheduler.d.ts +87 -0
  690. package/dist/core/scheduler/scheduler.d.ts.map +1 -0
  691. package/dist/core/scheduler/scheduler.js +178 -0
  692. package/dist/core/scheduler/scheduler.js.map +1 -0
  693. package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts +49 -0
  694. package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts.map +1 -0
  695. package/dist/core/sesion/cerrar-llamadas-abiertas.js +77 -0
  696. package/dist/core/sesion/cerrar-llamadas-abiertas.js.map +1 -0
  697. package/dist/core/settings-manager.d.ts +110 -6
  698. package/dist/core/settings-manager.d.ts.map +1 -1
  699. package/dist/core/settings-manager.js +53 -2
  700. package/dist/core/settings-manager.js.map +1 -1
  701. package/dist/core/slash-commands.d.ts.map +1 -1
  702. package/dist/core/slash-commands.js +3 -3
  703. package/dist/core/slash-commands.js.map +1 -1
  704. package/dist/core/system-prompt.d.ts +17 -0
  705. package/dist/core/system-prompt.d.ts.map +1 -1
  706. package/dist/core/system-prompt.js +13 -5
  707. package/dist/core/system-prompt.js.map +1 -1
  708. package/dist/core/telemetria/otlp.d.ts +122 -0
  709. package/dist/core/telemetria/otlp.d.ts.map +1 -0
  710. package/dist/core/telemetria/otlp.js +373 -0
  711. package/dist/core/telemetria/otlp.js.map +1 -0
  712. package/dist/core/tools/coercion-argumentos.d.ts +48 -0
  713. package/dist/core/tools/coercion-argumentos.d.ts.map +1 -0
  714. package/dist/core/tools/coercion-argumentos.js +99 -0
  715. package/dist/core/tools/coercion-argumentos.js.map +1 -0
  716. package/dist/core/tools/edit-diff.d.ts +0 -7
  717. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  718. package/dist/core/tools/edit-diff.js +232 -7
  719. package/dist/core/tools/edit-diff.js.map +1 -1
  720. package/dist/core/tools/edit.d.ts.map +1 -1
  721. package/dist/core/tools/edit.js +8 -1
  722. package/dist/core/tools/edit.js.map +1 -1
  723. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  724. package/dist/core/tools/file-mutation-queue.js +5 -0
  725. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  726. package/dist/core/tools/json-tolerante.d.ts +30 -0
  727. package/dist/core/tools/json-tolerante.d.ts.map +1 -0
  728. package/dist/core/tools/json-tolerante.js +70 -0
  729. package/dist/core/tools/json-tolerante.js.map +1 -0
  730. package/dist/core/tools/read.d.ts.map +1 -1
  731. package/dist/core/tools/read.js +17 -0
  732. package/dist/core/tools/read.js.map +1 -1
  733. package/dist/core/tools/tool-definition-wrapper.d.ts +14 -1
  734. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  735. package/dist/core/tools/tool-definition-wrapper.js +17 -1
  736. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  737. package/dist/core/turno-vacio/detectar.d.ts +38 -0
  738. package/dist/core/turno-vacio/detectar.d.ts.map +1 -0
  739. package/dist/core/turno-vacio/detectar.js +66 -0
  740. package/dist/core/turno-vacio/detectar.js.map +1 -0
  741. package/dist/core/undo/journal.d.ts +57 -0
  742. package/dist/core/undo/journal.d.ts.map +1 -0
  743. package/dist/core/undo/journal.js +178 -0
  744. package/dist/core/undo/journal.js.map +1 -0
  745. package/dist/core/urls-internas/auditoria.d.ts +10 -0
  746. package/dist/core/urls-internas/auditoria.d.ts.map +1 -0
  747. package/dist/core/urls-internas/auditoria.js +42 -0
  748. package/dist/core/urls-internas/auditoria.js.map +1 -0
  749. package/dist/core/urls-internas/boveda.d.ts +13 -0
  750. package/dist/core/urls-internas/boveda.d.ts.map +1 -0
  751. package/dist/core/urls-internas/boveda.js +40 -0
  752. package/dist/core/urls-internas/boveda.js.map +1 -0
  753. package/dist/core/urls-internas/lector.d.ts +30 -0
  754. package/dist/core/urls-internas/lector.d.ts.map +1 -0
  755. package/dist/core/urls-internas/lector.js +56 -0
  756. package/dist/core/urls-internas/lector.js.map +1 -0
  757. package/dist/core/urls-internas/memoria.d.ts +11 -0
  758. package/dist/core/urls-internas/memoria.d.ts.map +1 -0
  759. package/dist/core/urls-internas/memoria.js +25 -0
  760. package/dist/core/urls-internas/memoria.js.map +1 -0
  761. package/dist/core/urls-internas/parse.d.ts +28 -0
  762. package/dist/core/urls-internas/parse.d.ts.map +1 -0
  763. package/dist/core/urls-internas/parse.js +32 -0
  764. package/dist/core/urls-internas/parse.js.map +1 -0
  765. package/dist/core/urls-internas/reglas.d.ts +10 -0
  766. package/dist/core/urls-internas/reglas.d.ts.map +1 -0
  767. package/dist/core/urls-internas/reglas.js +31 -0
  768. package/dist/core/urls-internas/reglas.js.map +1 -0
  769. package/dist/core/usage/aggregate.d.ts +68 -0
  770. package/dist/core/usage/aggregate.d.ts.map +1 -0
  771. package/dist/core/usage/aggregate.js +93 -0
  772. package/dist/core/usage/aggregate.js.map +1 -0
  773. package/dist/core/usage/cuota/anthropic.d.ts +10 -0
  774. package/dist/core/usage/cuota/anthropic.d.ts.map +1 -0
  775. package/dist/core/usage/cuota/anthropic.js +63 -0
  776. package/dist/core/usage/cuota/anthropic.js.map +1 -0
  777. package/dist/core/usage/cuota/cache.d.ts +20 -0
  778. package/dist/core/usage/cuota/cache.d.ts.map +1 -0
  779. package/dist/core/usage/cuota/cache.js +36 -0
  780. package/dist/core/usage/cuota/cache.js.map +1 -0
  781. package/dist/core/usage/cuota/github-copilot.d.ts +9 -0
  782. package/dist/core/usage/cuota/github-copilot.d.ts.map +1 -0
  783. package/dist/core/usage/cuota/github-copilot.js +67 -0
  784. package/dist/core/usage/cuota/github-copilot.js.map +1 -0
  785. package/dist/core/usage/cuota/google-gemini.d.ts +9 -0
  786. package/dist/core/usage/cuota/google-gemini.d.ts.map +1 -0
  787. package/dist/core/usage/cuota/google-gemini.js +72 -0
  788. package/dist/core/usage/cuota/google-gemini.js.map +1 -0
  789. package/dist/core/usage/cuota/index.d.ts +25 -0
  790. package/dist/core/usage/cuota/index.d.ts.map +1 -0
  791. package/dist/core/usage/cuota/index.js +50 -0
  792. package/dist/core/usage/cuota/index.js.map +1 -0
  793. package/dist/core/usage/cuota/openai-codex.d.ts +9 -0
  794. package/dist/core/usage/cuota/openai-codex.d.ts.map +1 -0
  795. package/dist/core/usage/cuota/openai-codex.js +59 -0
  796. package/dist/core/usage/cuota/openai-codex.js.map +1 -0
  797. package/dist/core/usage/cuota/openrouter.d.ts +10 -0
  798. package/dist/core/usage/cuota/openrouter.d.ts.map +1 -0
  799. package/dist/core/usage/cuota/openrouter.js +47 -0
  800. package/dist/core/usage/cuota/openrouter.js.map +1 -0
  801. package/dist/core/usage/cuota/tipos.d.ts +50 -0
  802. package/dist/core/usage/cuota/tipos.d.ts.map +1 -0
  803. package/dist/core/usage/cuota/tipos.js +25 -0
  804. package/dist/core/usage/cuota/tipos.js.map +1 -0
  805. package/dist/core/web/busqueda-nativa.d.ts +82 -0
  806. package/dist/core/web/busqueda-nativa.d.ts.map +1 -0
  807. package/dist/core/web/busqueda-nativa.js +163 -0
  808. package/dist/core/web/busqueda-nativa.js.map +1 -0
  809. package/dist/core/web/destino.d.ts +58 -0
  810. package/dist/core/web/destino.d.ts.map +1 -0
  811. package/dist/core/web/destino.js +127 -0
  812. package/dist/core/web/destino.js.map +1 -0
  813. package/dist/core/web/proveedores/brave.d.ts +6 -0
  814. package/dist/core/web/proveedores/brave.d.ts.map +1 -0
  815. package/dist/core/web/proveedores/brave.js +20 -0
  816. package/dist/core/web/proveedores/brave.js.map +1 -0
  817. package/dist/core/web/proveedores/claves.d.ts +19 -0
  818. package/dist/core/web/proveedores/claves.d.ts.map +1 -0
  819. package/dist/core/web/proveedores/claves.js +36 -0
  820. package/dist/core/web/proveedores/claves.js.map +1 -0
  821. package/dist/core/web/proveedores/duckduckgo.d.ts +3 -0
  822. package/dist/core/web/proveedores/duckduckgo.d.ts.map +1 -0
  823. package/dist/core/web/proveedores/duckduckgo.js +109 -0
  824. package/dist/core/web/proveedores/duckduckgo.js.map +1 -0
  825. package/dist/core/web/proveedores/ecosia.d.ts +3 -0
  826. package/dist/core/web/proveedores/ecosia.d.ts.map +1 -0
  827. package/dist/core/web/proveedores/ecosia.js +72 -0
  828. package/dist/core/web/proveedores/ecosia.js.map +1 -0
  829. package/dist/core/web/proveedores/exa.d.ts +6 -0
  830. package/dist/core/web/proveedores/exa.d.ts.map +1 -0
  831. package/dist/core/web/proveedores/exa.js +24 -0
  832. package/dist/core/web/proveedores/exa.js.map +1 -0
  833. package/dist/core/web/proveedores/mojeek.d.ts +3 -0
  834. package/dist/core/web/proveedores/mojeek.d.ts.map +1 -0
  835. package/dist/core/web/proveedores/mojeek.js +65 -0
  836. package/dist/core/web/proveedores/mojeek.js.map +1 -0
  837. package/dist/core/web/proveedores/navegador.d.ts +10 -0
  838. package/dist/core/web/proveedores/navegador.d.ts.map +1 -0
  839. package/dist/core/web/proveedores/navegador.js +13 -0
  840. package/dist/core/web/proveedores/navegador.js.map +1 -0
  841. package/dist/core/web/proveedores/registro.d.ts +43 -0
  842. package/dist/core/web/proveedores/registro.d.ts.map +1 -0
  843. package/dist/core/web/proveedores/registro.js +49 -0
  844. package/dist/core/web/proveedores/registro.js.map +1 -0
  845. package/dist/core/web/proveedores/searxng.d.ts +9 -0
  846. package/dist/core/web/proveedores/searxng.d.ts.map +1 -0
  847. package/dist/core/web/proveedores/searxng.js +17 -0
  848. package/dist/core/web/proveedores/searxng.js.map +1 -0
  849. package/dist/core/web/proveedores/serper.d.ts +9 -0
  850. package/dist/core/web/proveedores/serper.d.ts.map +1 -0
  851. package/dist/core/web/proveedores/serper.js +19 -0
  852. package/dist/core/web/proveedores/serper.js.map +1 -0
  853. package/dist/core/web/proveedores/tavily.d.ts +6 -0
  854. package/dist/core/web/proveedores/tavily.d.ts.map +1 -0
  855. package/dist/core/web/proveedores/tavily.js +19 -0
  856. package/dist/core/web/proveedores/tavily.js.map +1 -0
  857. package/dist/core/web/proveedores/tipos.d.ts +36 -0
  858. package/dist/core/web/proveedores/tipos.d.ts.map +1 -0
  859. package/dist/core/web/proveedores/tipos.js +10 -0
  860. package/dist/core/web/proveedores/tipos.js.map +1 -0
  861. package/dist/core/web/registro-red.d.ts +43 -0
  862. package/dist/core/web/registro-red.d.ts.map +1 -0
  863. package/dist/core/web/registro-red.js +86 -0
  864. package/dist/core/web/registro-red.js.map +1 -0
  865. package/dist/core/web/scrapers/cisa-kev.d.ts +10 -0
  866. package/dist/core/web/scrapers/cisa-kev.d.ts.map +1 -0
  867. package/dist/core/web/scrapers/cisa-kev.js +38 -0
  868. package/dist/core/web/scrapers/cisa-kev.js.map +1 -0
  869. package/dist/core/web/scrapers/crates-io.d.ts +11 -0
  870. package/dist/core/web/scrapers/crates-io.d.ts.map +1 -0
  871. package/dist/core/web/scrapers/crates-io.js +29 -0
  872. package/dist/core/web/scrapers/crates-io.js.map +1 -0
  873. package/dist/core/web/scrapers/docs-rs.d.ts +10 -0
  874. package/dist/core/web/scrapers/docs-rs.d.ts.map +1 -0
  875. package/dist/core/web/scrapers/docs-rs.js +35 -0
  876. package/dist/core/web/scrapers/docs-rs.js.map +1 -0
  877. package/dist/core/web/scrapers/github.d.ts +3 -0
  878. package/dist/core/web/scrapers/github.d.ts.map +1 -0
  879. package/dist/core/web/scrapers/github.js +72 -0
  880. package/dist/core/web/scrapers/github.js.map +1 -0
  881. package/dist/core/web/scrapers/go-pkg.d.ts +7 -0
  882. package/dist/core/web/scrapers/go-pkg.d.ts.map +1 -0
  883. package/dist/core/web/scrapers/go-pkg.js +30 -0
  884. package/dist/core/web/scrapers/go-pkg.js.map +1 -0
  885. package/dist/core/web/scrapers/hex.d.ts +6 -0
  886. package/dist/core/web/scrapers/hex.d.ts.map +1 -0
  887. package/dist/core/web/scrapers/hex.js +27 -0
  888. package/dist/core/web/scrapers/hex.js.map +1 -0
  889. package/dist/core/web/scrapers/maven.d.ts +8 -0
  890. package/dist/core/web/scrapers/maven.d.ts.map +1 -0
  891. package/dist/core/web/scrapers/maven.js +41 -0
  892. package/dist/core/web/scrapers/maven.js.map +1 -0
  893. package/dist/core/web/scrapers/mdn.d.ts +6 -0
  894. package/dist/core/web/scrapers/mdn.d.ts.map +1 -0
  895. package/dist/core/web/scrapers/mdn.js +28 -0
  896. package/dist/core/web/scrapers/mdn.js.map +1 -0
  897. package/dist/core/web/scrapers/npm.d.ts +11 -0
  898. package/dist/core/web/scrapers/npm.d.ts.map +1 -0
  899. package/dist/core/web/scrapers/npm.js +57 -0
  900. package/dist/core/web/scrapers/npm.js.map +1 -0
  901. package/dist/core/web/scrapers/nuget.d.ts +8 -0
  902. package/dist/core/web/scrapers/nuget.d.ts.map +1 -0
  903. package/dist/core/web/scrapers/nuget.js +22 -0
  904. package/dist/core/web/scrapers/nuget.js.map +1 -0
  905. package/dist/core/web/scrapers/nvd.d.ts +7 -0
  906. package/dist/core/web/scrapers/nvd.d.ts.map +1 -0
  907. package/dist/core/web/scrapers/nvd.js +37 -0
  908. package/dist/core/web/scrapers/nvd.js.map +1 -0
  909. package/dist/core/web/scrapers/pypi.d.ts +6 -0
  910. package/dist/core/web/scrapers/pypi.d.ts.map +1 -0
  911. package/dist/core/web/scrapers/pypi.js +31 -0
  912. package/dist/core/web/scrapers/pypi.js.map +1 -0
  913. package/dist/core/web/scrapers/registro.d.ts +13 -0
  914. package/dist/core/web/scrapers/registro.d.ts.map +1 -0
  915. package/dist/core/web/scrapers/registro.js +65 -0
  916. package/dist/core/web/scrapers/registro.js.map +1 -0
  917. package/dist/core/web/scrapers/rubygems.d.ts +6 -0
  918. package/dist/core/web/scrapers/rubygems.d.ts.map +1 -0
  919. package/dist/core/web/scrapers/rubygems.js +23 -0
  920. package/dist/core/web/scrapers/rubygems.js.map +1 -0
  921. package/dist/core/web/scrapers/stackoverflow.d.ts +3 -0
  922. package/dist/core/web/scrapers/stackoverflow.d.ts.map +1 -0
  923. package/dist/core/web/scrapers/stackoverflow.js +46 -0
  924. package/dist/core/web/scrapers/stackoverflow.js.map +1 -0
  925. package/dist/core/web/scrapers/tipos.d.ts +42 -0
  926. package/dist/core/web/scrapers/tipos.d.ts.map +1 -0
  927. package/dist/core/web/scrapers/tipos.js +23 -0
  928. package/dist/core/web/scrapers/tipos.js.map +1 -0
  929. package/dist/core/web/texto.d.ts +10 -0
  930. package/dist/core/web/texto.d.ts.map +1 -0
  931. package/dist/core/web/texto.js +26 -0
  932. package/dist/core/web/texto.js.map +1 -0
  933. package/dist/core/web/tools.d.ts +91 -0
  934. package/dist/core/web/tools.d.ts.map +1 -0
  935. package/dist/core/web/tools.js +304 -0
  936. package/dist/core/web/tools.js.map +1 -0
  937. package/dist/core/wiki/almacen.d.ts +33 -0
  938. package/dist/core/wiki/almacen.d.ts.map +1 -0
  939. package/dist/core/wiki/almacen.js +93 -0
  940. package/dist/core/wiki/almacen.js.map +1 -0
  941. package/dist/core/wiki/citas.d.ts +111 -0
  942. package/dist/core/wiki/citas.d.ts.map +1 -0
  943. package/dist/core/wiki/citas.js +146 -0
  944. package/dist/core/wiki/citas.js.map +1 -0
  945. package/dist/core/workflows/agent-runner.d.ts +2 -0
  946. package/dist/core/workflows/agent-runner.d.ts.map +1 -1
  947. package/dist/core/workflows/agent-runner.js +131 -44
  948. package/dist/core/workflows/agent-runner.js.map +1 -1
  949. package/dist/core/workflows/builtins.d.ts.map +1 -1
  950. package/dist/core/workflows/builtins.js +1 -0
  951. package/dist/core/workflows/builtins.js.map +1 -1
  952. package/dist/core/workflows/contrato/esquema.d.ts +32 -0
  953. package/dist/core/workflows/contrato/esquema.d.ts.map +1 -0
  954. package/dist/core/workflows/contrato/esquema.js +25 -0
  955. package/dist/core/workflows/contrato/esquema.js.map +1 -0
  956. package/dist/core/workflows/contrato/reparar-argumentos.d.ts +69 -0
  957. package/dist/core/workflows/contrato/reparar-argumentos.d.ts.map +1 -0
  958. package/dist/core/workflows/contrato/reparar-argumentos.js +117 -0
  959. package/dist/core/workflows/contrato/reparar-argumentos.js.map +1 -0
  960. package/dist/core/workflows/contrato/validador.d.ts +30 -0
  961. package/dist/core/workflows/contrato/validador.d.ts.map +1 -0
  962. package/dist/core/workflows/contrato/validador.js +56 -0
  963. package/dist/core/workflows/contrato/validador.js.map +1 -0
  964. package/dist/core/workflows/contrato/yield.d.ts +65 -0
  965. package/dist/core/workflows/contrato/yield.d.ts.map +1 -0
  966. package/dist/core/workflows/contrato/yield.js +80 -0
  967. package/dist/core/workflows/contrato/yield.js.map +1 -0
  968. package/dist/core/workflows/goal-engine/engine.d.ts +17 -0
  969. package/dist/core/workflows/goal-engine/engine.d.ts.map +1 -1
  970. package/dist/core/workflows/goal-engine/engine.js +41 -0
  971. package/dist/core/workflows/goal-engine/engine.js.map +1 -1
  972. package/dist/core/workflows/index.d.ts +8 -0
  973. package/dist/core/workflows/index.d.ts.map +1 -1
  974. package/dist/core/workflows/index.js +4 -0
  975. package/dist/core/workflows/index.js.map +1 -1
  976. package/dist/core/workflows/manager.d.ts +10 -0
  977. package/dist/core/workflows/manager.d.ts.map +1 -1
  978. package/dist/core/workflows/manager.js +35 -11
  979. package/dist/core/workflows/manager.js.map +1 -1
  980. package/dist/core/workflows/runtime.d.ts +13 -0
  981. package/dist/core/workflows/runtime.d.ts.map +1 -1
  982. package/dist/core/workflows/runtime.js +80 -1
  983. package/dist/core/workflows/runtime.js.map +1 -1
  984. package/dist/core/workflows/save-as-skill.d.ts +27 -0
  985. package/dist/core/workflows/save-as-skill.d.ts.map +1 -0
  986. package/dist/core/workflows/save-as-skill.js +54 -0
  987. package/dist/core/workflows/save-as-skill.js.map +1 -0
  988. package/dist/core/workflows/types.d.ts +49 -0
  989. package/dist/core/workflows/types.d.ts.map +1 -1
  990. package/dist/core/workflows/types.js.map +1 -1
  991. package/dist/extensions/remoto/index.d.ts +22 -0
  992. package/dist/extensions/remoto/index.d.ts.map +1 -0
  993. package/dist/extensions/remoto/index.js +54 -0
  994. package/dist/extensions/remoto/index.js.map +1 -0
  995. package/dist/index.d.ts +1 -17
  996. package/dist/index.d.ts.map +1 -1
  997. package/dist/index.js +7 -16
  998. package/dist/index.js.map +1 -1
  999. package/dist/main.d.ts.map +1 -1
  1000. package/dist/main.js +6 -0
  1001. package/dist/main.js.map +1 -1
  1002. package/dist/modes/acp/acp-mode.d.ts +42 -0
  1003. package/dist/modes/acp/acp-mode.d.ts.map +1 -0
  1004. package/dist/modes/acp/acp-mode.js +190 -0
  1005. package/dist/modes/acp/acp-mode.js.map +1 -0
  1006. package/dist/modes/acp/events.d.ts +74 -0
  1007. package/dist/modes/acp/events.d.ts.map +1 -0
  1008. package/dist/modes/acp/events.js +116 -0
  1009. package/dist/modes/acp/events.js.map +1 -0
  1010. package/dist/modes/interactive/components/model-selector.d.ts +8 -1
  1011. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  1012. package/dist/modes/interactive/components/model-selector.js +41 -7
  1013. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  1014. package/dist/modes/interactive/components/settings-selector.d.ts +1 -2
  1015. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  1016. package/dist/modes/interactive/components/settings-selector.js +9 -86
  1017. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  1018. package/dist/modes/interactive/components/thinking-selector.d.ts +8 -1
  1019. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  1020. package/dist/modes/interactive/components/thinking-selector.js +48 -17
  1021. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  1022. package/dist/modes/interactive/interactive-mode.d.ts +3 -7
  1023. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  1024. package/dist/modes/interactive/interactive-mode.js +137 -146
  1025. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  1026. package/dist/modes/print-mode.d.ts.map +1 -1
  1027. package/dist/modes/print-mode.js +11 -0
  1028. package/dist/modes/print-mode.js.map +1 -1
  1029. package/dist/package-manager-cli.d.ts.map +1 -1
  1030. package/dist/package-manager-cli.js +27 -5
  1031. package/dist/package-manager-cli.js.map +1 -1
  1032. package/dist/server/attach.d.ts +56 -0
  1033. package/dist/server/attach.d.ts.map +1 -0
  1034. package/dist/server/attach.js +130 -0
  1035. package/dist/server/attach.js.map +1 -0
  1036. package/dist/server/extension-ops.d.ts +40 -0
  1037. package/dist/server/extension-ops.d.ts.map +1 -0
  1038. package/dist/server/extension-ops.js +146 -0
  1039. package/dist/server/extension-ops.js.map +1 -0
  1040. package/dist/server/pi-server-service.d.ts +85 -0
  1041. package/dist/server/pi-server-service.d.ts.map +1 -0
  1042. package/dist/server/pi-server-service.js +213 -0
  1043. package/dist/server/pi-server-service.js.map +1 -0
  1044. package/dist/server/scheduler-tick.d.ts +32 -0
  1045. package/dist/server/scheduler-tick.d.ts.map +1 -0
  1046. package/dist/server/scheduler-tick.js +47 -0
  1047. package/dist/server/scheduler-tick.js.map +1 -0
  1048. package/dist/server/serve.d.ts +25 -0
  1049. package/dist/server/serve.d.ts.map +1 -0
  1050. package/dist/server/serve.js +83 -0
  1051. package/dist/server/serve.js.map +1 -0
  1052. package/dist/server/transcript.d.ts +38 -0
  1053. package/dist/server/transcript.d.ts.map +1 -0
  1054. package/dist/server/transcript.js +176 -0
  1055. package/dist/server/transcript.js.map +1 -0
  1056. package/dist/skills/skill-creator/SKILL.md +90 -0
  1057. package/dist/telegram/api.d.ts +75 -0
  1058. package/dist/telegram/api.d.ts.map +1 -0
  1059. package/dist/telegram/api.js +104 -0
  1060. package/dist/telegram/api.js.map +1 -0
  1061. package/dist/telegram/bridge.d.ts +85 -0
  1062. package/dist/telegram/bridge.d.ts.map +1 -0
  1063. package/dist/telegram/bridge.js +182 -0
  1064. package/dist/telegram/bridge.js.map +1 -0
  1065. package/dist/telegram/journal.d.ts +67 -0
  1066. package/dist/telegram/journal.d.ts.map +1 -0
  1067. package/dist/telegram/journal.js +119 -0
  1068. package/dist/telegram/journal.js.map +1 -0
  1069. package/dist/telegram/servidor.d.ts +15 -0
  1070. package/dist/telegram/servidor.d.ts.map +1 -0
  1071. package/dist/telegram/servidor.js +74 -0
  1072. package/dist/telegram/servidor.js.map +1 -0
  1073. package/dist/utils/shell.d.ts +11 -0
  1074. package/dist/utils/shell.d.ts.map +1 -1
  1075. package/dist/utils/shell.js +11 -0
  1076. package/dist/utils/shell.js.map +1 -1
  1077. package/dist/utils/version-check.d.ts.map +1 -1
  1078. package/dist/utils/version-check.js +29 -1
  1079. package/dist/utils/version-check.js.map +1 -1
  1080. package/docs/compaction.md +10 -10
  1081. package/docs/compliance.md +241 -0
  1082. package/docs/containerization.md +24 -24
  1083. package/docs/custom-provider.md +10 -10
  1084. package/docs/development.md +47 -10
  1085. package/docs/docs.json +14 -2
  1086. package/docs/environment-variables.md +20 -17
  1087. package/docs/extensions.md +51 -49
  1088. package/docs/index.md +15 -21
  1089. package/docs/json.md +3 -3
  1090. package/docs/keybindings.md +5 -5
  1091. package/docs/llama-cpp.md +7 -7
  1092. package/docs/models.md +12 -12
  1093. package/docs/packages.md +45 -45
  1094. package/docs/prompt-templates.md +5 -5
  1095. package/docs/providers.md +12 -12
  1096. package/docs/quickstart.md +39 -39
  1097. package/docs/rpc.md +12 -12
  1098. package/docs/sdk.md +38 -38
  1099. package/docs/security.md +26 -21
  1100. package/docs/session-format.md +7 -7
  1101. package/docs/sessions.md +14 -14
  1102. package/docs/settings.md +45 -20
  1103. package/docs/shell-aliases.md +2 -2
  1104. package/docs/skills.md +11 -11
  1105. package/docs/terminal-setup.md +14 -14
  1106. package/docs/termux.md +7 -7
  1107. package/docs/themes.md +11 -11
  1108. package/docs/tmux.md +4 -4
  1109. package/docs/tui.md +3 -3
  1110. package/docs/usage.md +54 -54
  1111. package/docs/windows.md +2 -2
  1112. package/examples/sdk/12-full-control.ts +9 -0
  1113. package/npm-shrinkwrap.json +35 -251
  1114. package/package.json +10 -4
@@ -0,0 +1,311 @@
1
+ /**
2
+ * Detección y ejecución de comprobadores — MIRANDO lo que hay en el
3
+ * proyecto, nunca inventando uno. `detectarComprobadores` documenta en
4
+ * `mirado` cada sitio que ha comprobado, se haya encontrado algo o no: es lo
5
+ * que distingue "no he mirado" de "he mirado y no hay nada" cuando no
6
+ * aparece ningún comprobador ejecutable.
7
+ */
8
+ import { spawn, spawnSync } from "node:child_process";
9
+ import { existsSync, readFileSync } from "node:fs";
10
+ import { dirname, join } from "node:path";
11
+ import { parsearBiomeGithub, parsearEslint, parsearGenerico, parsearTestFallido, parsearTsc } from "./parseo.js";
12
+ const CONFIGS_ESLINT = [
13
+ "eslint.config.js",
14
+ "eslint.config.mjs",
15
+ "eslint.config.cjs",
16
+ "eslint.config.ts",
17
+ ".eslintrc",
18
+ ".eslintrc.js",
19
+ ".eslintrc.cjs",
20
+ ".eslintrc.json",
21
+ ];
22
+ /** Busca un binario en `node_modules/.bin` subiendo directorios — la misma resolución que usa `npm run`. */
23
+ function resolverBinLocal(desde, nombre) {
24
+ let dir = desde;
25
+ for (;;) {
26
+ const candidato = join(dir, "node_modules", ".bin", nombre);
27
+ if (existsSync(candidato))
28
+ return candidato;
29
+ const padre = dirname(dir);
30
+ if (padre === dir)
31
+ return undefined;
32
+ dir = padre;
33
+ }
34
+ }
35
+ /** true si `nombre` resuelve en PATH — para herramientas ajenas a node (ruff, cargo, go). */
36
+ function hayEnPath(nombre) {
37
+ const r = spawnSync(process.platform === "win32" ? "where" : "which", [nombre], { stdio: "ignore" });
38
+ return r.status === 0;
39
+ }
40
+ function leerPackageJson(cwd) {
41
+ const ruta = join(cwd, "package.json");
42
+ if (!existsSync(ruta))
43
+ return undefined;
44
+ try {
45
+ return JSON.parse(readFileSync(ruta, "utf-8"));
46
+ }
47
+ catch {
48
+ // package.json ilegible: se trata como ausente, no se inventa nada a partir de él.
49
+ return undefined;
50
+ }
51
+ }
52
+ function tienePyprojectRuff(cwd) {
53
+ const ruta = join(cwd, "pyproject.toml");
54
+ if (!existsSync(ruta))
55
+ return false;
56
+ try {
57
+ return readFileSync(ruta, "utf-8").includes("[tool.ruff]");
58
+ }
59
+ catch {
60
+ return false;
61
+ }
62
+ }
63
+ /**
64
+ * Mira qué hay en el proyecto y arma la lista de comprobadores ejecutables.
65
+ * Prioridad por lenguaje: la config específica (biome/eslint/tsconfig) gana
66
+ * sobre el script de package.json genérico, porque sabemos parsear su salida.
67
+ */
68
+ export function detectarComprobadores(cwd) {
69
+ const mirado = [];
70
+ const comprobadores = [];
71
+ const tiene = (id) => comprobadores.some((c) => c.id === id);
72
+ const pkg = leerPackageJson(cwd);
73
+ mirado.push(`package.json (${existsSync(join(cwd, "package.json")) ? "existe" : "no existe"})`);
74
+ const biomeConfig = existsSync(join(cwd, "biome.json")) || existsSync(join(cwd, "biome.jsonc"));
75
+ mirado.push(`biome.json / biome.jsonc (${biomeConfig ? "encontrado" : "no encontrado"})`);
76
+ if (biomeConfig) {
77
+ const bin = resolverBinLocal(cwd, "biome");
78
+ if (bin) {
79
+ comprobadores.push({
80
+ id: "lint",
81
+ etiqueta: "lint (biome)",
82
+ comando: bin,
83
+ args: ["lint", "--reporter=github", "."],
84
+ cwd,
85
+ parsear: parsearBiomeGithub,
86
+ alcance: "fichero",
87
+ });
88
+ }
89
+ else {
90
+ mirado.push("biome: config encontrada pero no hay node_modules/.bin/biome en el árbol de directorios");
91
+ }
92
+ }
93
+ const eslintConfig = CONFIGS_ESLINT.some((f) => existsSync(join(cwd, f)));
94
+ mirado.push(`config de eslint (${eslintConfig ? "encontrada" : "no encontrada"})`);
95
+ if (eslintConfig && !tiene("lint")) {
96
+ const bin = resolverBinLocal(cwd, "eslint");
97
+ if (bin) {
98
+ comprobadores.push({
99
+ id: "lint",
100
+ etiqueta: "lint (eslint)",
101
+ comando: bin,
102
+ args: [".", "--format", "json"],
103
+ cwd,
104
+ parsear: parsearEslint,
105
+ alcance: "fichero",
106
+ });
107
+ }
108
+ else {
109
+ mirado.push("eslint: config encontrada pero no hay node_modules/.bin/eslint en el árbol de directorios");
110
+ }
111
+ }
112
+ if (pkg?.scripts?.lint && !tiene("lint")) {
113
+ mirado.push("package.json → scripts.lint (encontrado, sin config de biome/eslint reconocida)");
114
+ comprobadores.push({
115
+ id: "lint",
116
+ etiqueta: "lint (npm run lint)",
117
+ comando: "npm",
118
+ args: ["run", "lint", "--silent"],
119
+ cwd,
120
+ parsear: parsearGenerico,
121
+ alcance: "fichero",
122
+ });
123
+ }
124
+ const tsconfig = existsSync(join(cwd, "tsconfig.json"));
125
+ mirado.push(`tsconfig.json (${tsconfig ? "encontrado" : "no encontrado"})`);
126
+ if (tsconfig) {
127
+ const bin = resolverBinLocal(cwd, "tsc");
128
+ if (bin) {
129
+ comprobadores.push({
130
+ id: "typecheck",
131
+ etiqueta: "typecheck (tsc)",
132
+ comando: bin,
133
+ args: ["--noEmit", "--pretty", "false"],
134
+ cwd,
135
+ parsear: parsearTsc,
136
+ alcance: "fichero",
137
+ });
138
+ }
139
+ else if (pkg?.scripts?.typecheck) {
140
+ comprobadores.push({
141
+ id: "typecheck",
142
+ etiqueta: "typecheck (npm run typecheck)",
143
+ comando: "npm",
144
+ args: ["run", "typecheck", "--silent"],
145
+ cwd,
146
+ parsear: parsearGenerico,
147
+ alcance: "fichero",
148
+ });
149
+ }
150
+ else {
151
+ mirado.push("tsconfig.json: sin node_modules/.bin/tsc ni scripts.typecheck en package.json");
152
+ }
153
+ }
154
+ else if (pkg?.scripts?.typecheck) {
155
+ mirado.push("package.json → scripts.typecheck (encontrado, sin tsconfig.json)");
156
+ comprobadores.push({
157
+ id: "typecheck",
158
+ etiqueta: "typecheck (npm run typecheck)",
159
+ comando: "npm",
160
+ args: ["run", "typecheck", "--silent"],
161
+ cwd,
162
+ parsear: parsearGenerico,
163
+ alcance: "fichero",
164
+ });
165
+ }
166
+ if (pkg?.scripts?.test) {
167
+ mirado.push("package.json → scripts.test (encontrado)");
168
+ comprobadores.push({
169
+ id: "test",
170
+ etiqueta: "test (npm test)",
171
+ comando: "npm",
172
+ args: ["test", "--silent"],
173
+ cwd,
174
+ parsear: (salida) => parsearTestFallido(salida),
175
+ alcance: "proyecto",
176
+ });
177
+ }
178
+ const ruffConfig = existsSync(join(cwd, "ruff.toml")) || existsSync(join(cwd, ".ruff.toml")) || tienePyprojectRuff(cwd);
179
+ mirado.push(`pyproject.toml [tool.ruff] / ruff.toml / .ruff.toml (${ruffConfig ? "encontrado" : "no encontrado"})`);
180
+ if (ruffConfig) {
181
+ if (hayEnPath("ruff")) {
182
+ comprobadores.push({
183
+ id: "lint-py",
184
+ etiqueta: "lint (ruff)",
185
+ comando: "ruff",
186
+ args: ["check", "."],
187
+ cwd,
188
+ parsear: parsearGenerico,
189
+ alcance: "fichero",
190
+ });
191
+ }
192
+ else {
193
+ mirado.push("ruff: config encontrada pero el ejecutable 'ruff' no está en PATH");
194
+ }
195
+ }
196
+ const cargoToml = existsSync(join(cwd, "Cargo.toml"));
197
+ mirado.push(`Cargo.toml (${cargoToml ? "encontrado" : "no encontrado"})`);
198
+ if (cargoToml) {
199
+ if (hayEnPath("cargo")) {
200
+ comprobadores.push({
201
+ id: "lint-rs",
202
+ etiqueta: "lint (cargo clippy)",
203
+ comando: "cargo",
204
+ args: ["clippy", "--message-format=short"],
205
+ cwd,
206
+ parsear: parsearGenerico,
207
+ alcance: "fichero",
208
+ });
209
+ }
210
+ else {
211
+ mirado.push("cargo clippy: Cargo.toml encontrado pero el ejecutable 'cargo' no está en PATH");
212
+ }
213
+ }
214
+ const goMod = existsSync(join(cwd, "go.mod"));
215
+ mirado.push(`go.mod (${goMod ? "encontrado" : "no encontrado"})`);
216
+ if (goMod) {
217
+ if (hayEnPath("go")) {
218
+ comprobadores.push({
219
+ id: "vet-go",
220
+ etiqueta: "vet (go vet)",
221
+ comando: "go",
222
+ args: ["vet", "./..."],
223
+ cwd,
224
+ parsear: parsearGenerico,
225
+ alcance: "fichero",
226
+ });
227
+ }
228
+ else {
229
+ mirado.push("go vet: go.mod encontrado pero el ejecutable 'go' no está en PATH");
230
+ }
231
+ }
232
+ return { comprobadores, mirado };
233
+ }
234
+ /** Ejecuta un comando y distingue "no pude ejecutarlo" (ENOENT, timeout) de una ejecución real. */
235
+ function ejecutarComando(comprobador, timeoutMs = 120_000) {
236
+ return new Promise((resolve) => {
237
+ let proc;
238
+ try {
239
+ proc = spawn(comprobador.comando, comprobador.args, {
240
+ cwd: comprobador.cwd,
241
+ shell: false,
242
+ stdio: ["ignore", "pipe", "pipe"],
243
+ });
244
+ }
245
+ catch (error) {
246
+ resolve({ ok: false, motivo: error instanceof Error ? error.message : String(error) });
247
+ return;
248
+ }
249
+ let stdout = "";
250
+ let stderr = "";
251
+ let resuelto = false;
252
+ const temporizador = setTimeout(() => {
253
+ proc.kill("SIGKILL");
254
+ acabar({ ok: false, motivo: `timeout tras ${timeoutMs}ms` });
255
+ }, timeoutMs);
256
+ const acabar = (r) => {
257
+ if (resuelto)
258
+ return;
259
+ resuelto = true;
260
+ clearTimeout(temporizador);
261
+ resolve(r);
262
+ };
263
+ proc.on("error", (error) => acabar({ ok: false, motivo: error.message }));
264
+ proc.stdout?.on("data", (d) => {
265
+ stdout += d;
266
+ });
267
+ proc.stderr?.on("data", (d) => {
268
+ stderr += d;
269
+ });
270
+ proc.on("close", (code) => acabar({ ok: true, salida: { stdout, stderr, code: code ?? 0 } }));
271
+ });
272
+ }
273
+ /** Ejecuta comprobadores en paralelo y agrega sus diagnósticos. */
274
+ export async function ejecutarComprobadores(comprobadores) {
275
+ const diagnosticos = [];
276
+ const fallidos = [];
277
+ await Promise.all(comprobadores.map(async (comprobador) => {
278
+ const r = await ejecutarComando(comprobador);
279
+ if (!r.ok) {
280
+ fallidos.push({ id: comprobador.id, etiqueta: comprobador.etiqueta, motivo: r.motivo });
281
+ return;
282
+ }
283
+ const parciales = comprobador.parsear(r.salida, comprobador.cwd);
284
+ // Salió con error pero el parser no le sacó NINGÚN diagnóstico: no es
285
+ // que el proyecto esté limpio, es que el binario probablemente
286
+ // crasheó (lib que falta, versión incompatible…) y su salida no
287
+ // tiene el formato que el parser espera. Sin esto, un comprobador
288
+ // roto se leía como "proyecto limpio" — exit code ignorado del todo.
289
+ // ponytail: heurística, no perfecta — un linter que legítimamente
290
+ // sale con código !=0 sin issues (convención rara) contaría como
291
+ // fallido; el riesgo de leer "limpio" un binario roto es peor.
292
+ if (parciales.length === 0 && r.salida.code !== 0) {
293
+ const cola = `${r.salida.stdout}\n${r.salida.stderr}`.trim().split("\n").slice(-5).join("\n");
294
+ fallidos.push({
295
+ id: comprobador.id,
296
+ etiqueta: comprobador.etiqueta,
297
+ motivo: `salió con código ${r.salida.code} sin diagnósticos reconocibles:\n${cola}`,
298
+ });
299
+ return;
300
+ }
301
+ for (const parcial of parciales) {
302
+ diagnosticos.push({ ...parcial, comprobador: comprobador.id });
303
+ }
304
+ }));
305
+ return { diagnosticos, fallidos };
306
+ }
307
+ /** Re-ejecuta solo los comprobadores pedidos (por id) — la verificación tras un arreglo. */
308
+ export function ejecutarComprobadoresPorId(comprobadores, ids) {
309
+ return ejecutarComprobadores(comprobadores.filter((c) => ids.has(c.id)));
310
+ }
311
+ //# sourceMappingURL=comprobadores.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comprobadores.js","sourceRoot":"","sources":["../../../src/core/limpieza/comprobadores.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Detección y ejecución de comprobadores — MIRANDO lo que hay en el\n * proyecto, nunca inventando uno. `detectarComprobadores` documenta en\n * `mirado` cada sitio que ha comprobado, se haya encontrado algo o no: es lo\n * que distingue \"no he mirado\" de \"he mirado y no hay nada\" cuando no\n * aparece ningún comprobador ejecutable.\n */\n\nimport { spawn, spawnSync } from \"node:child_process\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { parsearBiomeGithub, parsearEslint, parsearGenerico, parsearTestFallido, parsearTsc } from \"./parseo.ts\";\nimport type { Comprobador, Deteccion, Diagnostico, SalidaComando } from \"./tipos.ts\";\n\nconst CONFIGS_ESLINT = [\n\t\"eslint.config.js\",\n\t\"eslint.config.mjs\",\n\t\"eslint.config.cjs\",\n\t\"eslint.config.ts\",\n\t\".eslintrc\",\n\t\".eslintrc.js\",\n\t\".eslintrc.cjs\",\n\t\".eslintrc.json\",\n];\n\n/** Busca un binario en `node_modules/.bin` subiendo directorios — la misma resolución que usa `npm run`. */\nfunction resolverBinLocal(desde: string, nombre: string): string | undefined {\n\tlet dir = desde;\n\tfor (;;) {\n\t\tconst candidato = join(dir, \"node_modules\", \".bin\", nombre);\n\t\tif (existsSync(candidato)) return candidato;\n\t\tconst padre = dirname(dir);\n\t\tif (padre === dir) return undefined;\n\t\tdir = padre;\n\t}\n}\n\n/** true si `nombre` resuelve en PATH — para herramientas ajenas a node (ruff, cargo, go). */\nfunction hayEnPath(nombre: string): boolean {\n\tconst r = spawnSync(process.platform === \"win32\" ? \"where\" : \"which\", [nombre], { stdio: \"ignore\" });\n\treturn r.status === 0;\n}\n\nfunction leerPackageJson(cwd: string): { scripts?: Record<string, string> } | undefined {\n\tconst ruta = join(cwd, \"package.json\");\n\tif (!existsSync(ruta)) return undefined;\n\ttry {\n\t\treturn JSON.parse(readFileSync(ruta, \"utf-8\"));\n\t} catch {\n\t\t// package.json ilegible: se trata como ausente, no se inventa nada a partir de él.\n\t\treturn undefined;\n\t}\n}\n\nfunction tienePyprojectRuff(cwd: string): boolean {\n\tconst ruta = join(cwd, \"pyproject.toml\");\n\tif (!existsSync(ruta)) return false;\n\ttry {\n\t\treturn readFileSync(ruta, \"utf-8\").includes(\"[tool.ruff]\");\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/**\n * Mira qué hay en el proyecto y arma la lista de comprobadores ejecutables.\n * Prioridad por lenguaje: la config específica (biome/eslint/tsconfig) gana\n * sobre el script de package.json genérico, porque sabemos parsear su salida.\n */\nexport function detectarComprobadores(cwd: string): Deteccion {\n\tconst mirado: string[] = [];\n\tconst comprobadores: Comprobador[] = [];\n\tconst tiene = (id: string) => comprobadores.some((c) => c.id === id);\n\n\tconst pkg = leerPackageJson(cwd);\n\tmirado.push(`package.json (${existsSync(join(cwd, \"package.json\")) ? \"existe\" : \"no existe\"})`);\n\n\tconst biomeConfig = existsSync(join(cwd, \"biome.json\")) || existsSync(join(cwd, \"biome.jsonc\"));\n\tmirado.push(`biome.json / biome.jsonc (${biomeConfig ? \"encontrado\" : \"no encontrado\"})`);\n\tif (biomeConfig) {\n\t\tconst bin = resolverBinLocal(cwd, \"biome\");\n\t\tif (bin) {\n\t\t\tcomprobadores.push({\n\t\t\t\tid: \"lint\",\n\t\t\t\tetiqueta: \"lint (biome)\",\n\t\t\t\tcomando: bin,\n\t\t\t\targs: [\"lint\", \"--reporter=github\", \".\"],\n\t\t\t\tcwd,\n\t\t\t\tparsear: parsearBiomeGithub,\n\t\t\t\talcance: \"fichero\",\n\t\t\t});\n\t\t} else {\n\t\t\tmirado.push(\"biome: config encontrada pero no hay node_modules/.bin/biome en el árbol de directorios\");\n\t\t}\n\t}\n\n\tconst eslintConfig = CONFIGS_ESLINT.some((f) => existsSync(join(cwd, f)));\n\tmirado.push(`config de eslint (${eslintConfig ? \"encontrada\" : \"no encontrada\"})`);\n\tif (eslintConfig && !tiene(\"lint\")) {\n\t\tconst bin = resolverBinLocal(cwd, \"eslint\");\n\t\tif (bin) {\n\t\t\tcomprobadores.push({\n\t\t\t\tid: \"lint\",\n\t\t\t\tetiqueta: \"lint (eslint)\",\n\t\t\t\tcomando: bin,\n\t\t\t\targs: [\".\", \"--format\", \"json\"],\n\t\t\t\tcwd,\n\t\t\t\tparsear: parsearEslint,\n\t\t\t\talcance: \"fichero\",\n\t\t\t});\n\t\t} else {\n\t\t\tmirado.push(\"eslint: config encontrada pero no hay node_modules/.bin/eslint en el árbol de directorios\");\n\t\t}\n\t}\n\n\tif (pkg?.scripts?.lint && !tiene(\"lint\")) {\n\t\tmirado.push(\"package.json → scripts.lint (encontrado, sin config de biome/eslint reconocida)\");\n\t\tcomprobadores.push({\n\t\t\tid: \"lint\",\n\t\t\tetiqueta: \"lint (npm run lint)\",\n\t\t\tcomando: \"npm\",\n\t\t\targs: [\"run\", \"lint\", \"--silent\"],\n\t\t\tcwd,\n\t\t\tparsear: parsearGenerico,\n\t\t\talcance: \"fichero\",\n\t\t});\n\t}\n\n\tconst tsconfig = existsSync(join(cwd, \"tsconfig.json\"));\n\tmirado.push(`tsconfig.json (${tsconfig ? \"encontrado\" : \"no encontrado\"})`);\n\tif (tsconfig) {\n\t\tconst bin = resolverBinLocal(cwd, \"tsc\");\n\t\tif (bin) {\n\t\t\tcomprobadores.push({\n\t\t\t\tid: \"typecheck\",\n\t\t\t\tetiqueta: \"typecheck (tsc)\",\n\t\t\t\tcomando: bin,\n\t\t\t\targs: [\"--noEmit\", \"--pretty\", \"false\"],\n\t\t\t\tcwd,\n\t\t\t\tparsear: parsearTsc,\n\t\t\t\talcance: \"fichero\",\n\t\t\t});\n\t\t} else if (pkg?.scripts?.typecheck) {\n\t\t\tcomprobadores.push({\n\t\t\t\tid: \"typecheck\",\n\t\t\t\tetiqueta: \"typecheck (npm run typecheck)\",\n\t\t\t\tcomando: \"npm\",\n\t\t\t\targs: [\"run\", \"typecheck\", \"--silent\"],\n\t\t\t\tcwd,\n\t\t\t\tparsear: parsearGenerico,\n\t\t\t\talcance: \"fichero\",\n\t\t\t});\n\t\t} else {\n\t\t\tmirado.push(\"tsconfig.json: sin node_modules/.bin/tsc ni scripts.typecheck en package.json\");\n\t\t}\n\t} else if (pkg?.scripts?.typecheck) {\n\t\tmirado.push(\"package.json → scripts.typecheck (encontrado, sin tsconfig.json)\");\n\t\tcomprobadores.push({\n\t\t\tid: \"typecheck\",\n\t\t\tetiqueta: \"typecheck (npm run typecheck)\",\n\t\t\tcomando: \"npm\",\n\t\t\targs: [\"run\", \"typecheck\", \"--silent\"],\n\t\t\tcwd,\n\t\t\tparsear: parsearGenerico,\n\t\t\talcance: \"fichero\",\n\t\t});\n\t}\n\n\tif (pkg?.scripts?.test) {\n\t\tmirado.push(\"package.json → scripts.test (encontrado)\");\n\t\tcomprobadores.push({\n\t\t\tid: \"test\",\n\t\t\tetiqueta: \"test (npm test)\",\n\t\t\tcomando: \"npm\",\n\t\t\targs: [\"test\", \"--silent\"],\n\t\t\tcwd,\n\t\t\tparsear: (salida) => parsearTestFallido(salida),\n\t\t\talcance: \"proyecto\",\n\t\t});\n\t}\n\n\tconst ruffConfig =\n\t\texistsSync(join(cwd, \"ruff.toml\")) || existsSync(join(cwd, \".ruff.toml\")) || tienePyprojectRuff(cwd);\n\tmirado.push(`pyproject.toml [tool.ruff] / ruff.toml / .ruff.toml (${ruffConfig ? \"encontrado\" : \"no encontrado\"})`);\n\tif (ruffConfig) {\n\t\tif (hayEnPath(\"ruff\")) {\n\t\t\tcomprobadores.push({\n\t\t\t\tid: \"lint-py\",\n\t\t\t\tetiqueta: \"lint (ruff)\",\n\t\t\t\tcomando: \"ruff\",\n\t\t\t\targs: [\"check\", \".\"],\n\t\t\t\tcwd,\n\t\t\t\tparsear: parsearGenerico,\n\t\t\t\talcance: \"fichero\",\n\t\t\t});\n\t\t} else {\n\t\t\tmirado.push(\"ruff: config encontrada pero el ejecutable 'ruff' no está en PATH\");\n\t\t}\n\t}\n\n\tconst cargoToml = existsSync(join(cwd, \"Cargo.toml\"));\n\tmirado.push(`Cargo.toml (${cargoToml ? \"encontrado\" : \"no encontrado\"})`);\n\tif (cargoToml) {\n\t\tif (hayEnPath(\"cargo\")) {\n\t\t\tcomprobadores.push({\n\t\t\t\tid: \"lint-rs\",\n\t\t\t\tetiqueta: \"lint (cargo clippy)\",\n\t\t\t\tcomando: \"cargo\",\n\t\t\t\targs: [\"clippy\", \"--message-format=short\"],\n\t\t\t\tcwd,\n\t\t\t\tparsear: parsearGenerico,\n\t\t\t\talcance: \"fichero\",\n\t\t\t});\n\t\t} else {\n\t\t\tmirado.push(\"cargo clippy: Cargo.toml encontrado pero el ejecutable 'cargo' no está en PATH\");\n\t\t}\n\t}\n\n\tconst goMod = existsSync(join(cwd, \"go.mod\"));\n\tmirado.push(`go.mod (${goMod ? \"encontrado\" : \"no encontrado\"})`);\n\tif (goMod) {\n\t\tif (hayEnPath(\"go\")) {\n\t\t\tcomprobadores.push({\n\t\t\t\tid: \"vet-go\",\n\t\t\t\tetiqueta: \"vet (go vet)\",\n\t\t\t\tcomando: \"go\",\n\t\t\t\targs: [\"vet\", \"./...\"],\n\t\t\t\tcwd,\n\t\t\t\tparsear: parsearGenerico,\n\t\t\t\talcance: \"fichero\",\n\t\t\t});\n\t\t} else {\n\t\t\tmirado.push(\"go vet: go.mod encontrado pero el ejecutable 'go' no está en PATH\");\n\t\t}\n\t}\n\n\treturn { comprobadores, mirado };\n}\n\n/** Ejecuta un comando y distingue \"no pude ejecutarlo\" (ENOENT, timeout) de una ejecución real. */\nfunction ejecutarComando(\n\tcomprobador: Comprobador,\n\ttimeoutMs = 120_000,\n): Promise<{ ok: true; salida: SalidaComando } | { ok: false; motivo: string }> {\n\treturn new Promise((resolve) => {\n\t\tlet proc: ReturnType<typeof spawn>;\n\t\ttry {\n\t\t\tproc = spawn(comprobador.comando, comprobador.args, {\n\t\t\t\tcwd: comprobador.cwd,\n\t\t\t\tshell: false,\n\t\t\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tresolve({ ok: false, motivo: error instanceof Error ? error.message : String(error) });\n\t\t\treturn;\n\t\t}\n\t\tlet stdout = \"\";\n\t\tlet stderr = \"\";\n\t\tlet resuelto = false;\n\t\tconst temporizador = setTimeout(() => {\n\t\t\tproc.kill(\"SIGKILL\");\n\t\t\tacabar({ ok: false, motivo: `timeout tras ${timeoutMs}ms` });\n\t\t}, timeoutMs);\n\t\tconst acabar = (r: { ok: true; salida: SalidaComando } | { ok: false; motivo: string }) => {\n\t\t\tif (resuelto) return;\n\t\t\tresuelto = true;\n\t\t\tclearTimeout(temporizador);\n\t\t\tresolve(r);\n\t\t};\n\t\tproc.on(\"error\", (error) => acabar({ ok: false, motivo: error.message }));\n\t\tproc.stdout?.on(\"data\", (d) => {\n\t\t\tstdout += d;\n\t\t});\n\t\tproc.stderr?.on(\"data\", (d) => {\n\t\t\tstderr += d;\n\t\t});\n\t\tproc.on(\"close\", (code) => acabar({ ok: true, salida: { stdout, stderr, code: code ?? 0 } }));\n\t});\n}\n\nexport interface ResultadoEjecucion {\n\tdiagnosticos: Diagnostico[];\n\t/** Comprobadores que NO se pudieron ejecutar (ejecutable ausente, timeout…) — no confundir con \"corrió limpio\". */\n\tfallidos: Array<{ id: string; etiqueta: string; motivo: string }>;\n}\n\n/** Ejecuta comprobadores en paralelo y agrega sus diagnósticos. */\nexport async function ejecutarComprobadores(comprobadores: readonly Comprobador[]): Promise<ResultadoEjecucion> {\n\tconst diagnosticos: Diagnostico[] = [];\n\tconst fallidos: ResultadoEjecucion[\"fallidos\"] = [];\n\tawait Promise.all(\n\t\tcomprobadores.map(async (comprobador) => {\n\t\t\tconst r = await ejecutarComando(comprobador);\n\t\t\tif (!r.ok) {\n\t\t\t\tfallidos.push({ id: comprobador.id, etiqueta: comprobador.etiqueta, motivo: r.motivo });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst parciales = comprobador.parsear(r.salida, comprobador.cwd);\n\t\t\t// Salió con error pero el parser no le sacó NINGÚN diagnóstico: no es\n\t\t\t// que el proyecto esté limpio, es que el binario probablemente\n\t\t\t// crasheó (lib que falta, versión incompatible…) y su salida no\n\t\t\t// tiene el formato que el parser espera. Sin esto, un comprobador\n\t\t\t// roto se leía como \"proyecto limpio\" — exit code ignorado del todo.\n\t\t\t// ponytail: heurística, no perfecta — un linter que legítimamente\n\t\t\t// sale con código !=0 sin issues (convención rara) contaría como\n\t\t\t// fallido; el riesgo de leer \"limpio\" un binario roto es peor.\n\t\t\tif (parciales.length === 0 && r.salida.code !== 0) {\n\t\t\t\tconst cola = `${r.salida.stdout}\\n${r.salida.stderr}`.trim().split(\"\\n\").slice(-5).join(\"\\n\");\n\t\t\t\tfallidos.push({\n\t\t\t\t\tid: comprobador.id,\n\t\t\t\t\tetiqueta: comprobador.etiqueta,\n\t\t\t\t\tmotivo: `salió con código ${r.salida.code} sin diagnósticos reconocibles:\\n${cola}`,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (const parcial of parciales) {\n\t\t\t\tdiagnosticos.push({ ...parcial, comprobador: comprobador.id });\n\t\t\t}\n\t\t}),\n\t);\n\treturn { diagnosticos, fallidos };\n}\n\n/** Re-ejecuta solo los comprobadores pedidos (por id) — la verificación tras un arreglo. */\nexport function ejecutarComprobadoresPorId(\n\tcomprobadores: readonly Comprobador[],\n\tids: ReadonlySet<string>,\n): Promise<ResultadoEjecucion> {\n\treturn ejecutarComprobadores(comprobadores.filter((c) => ids.has(c.id)));\n}\n"]}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Parseo de la salida de cada comprobador a {@link DiagnosticoParcial}[].
3
+ *
4
+ * Un parser por formato de verdad soportado (json de eslint, anotaciones
5
+ * `::warning`/`::error` de biome, el `path(linea,col): error TSxxxx:` de
6
+ * tsc) y un parser genérico de último recurso para lo demás (ruff, go vet,
7
+ * un script `npm run lint` cuyo formato interno no conocemos).
8
+ */
9
+ import type { DiagnosticoParcial, SalidaComando } from "./tipos.ts";
10
+ /** `eslint . --format json`: el único formato de eslint que no cambia entre versiones. */
11
+ export declare function parsearEslint(salida: SalidaComando, cwd: string): DiagnosticoParcial[];
12
+ /** `biome lint --reporter=github .`: una línea por diagnóstico, formato estable de CI. */
13
+ export declare function parsearBiomeGithub(salida: SalidaComando, cwd: string): DiagnosticoParcial[];
14
+ /** `tsc --noEmit --pretty false`: `ruta(linea,col): error TSxxxx: mensaje`, una línea por diagnóstico. */
15
+ export declare function parsearTsc(salida: SalidaComando, cwd: string): DiagnosticoParcial[];
16
+ export declare function parsearGenerico(salida: SalidaComando, cwd: string): DiagnosticoParcial[];
17
+ /** `npm test`: no hay {ruta,linea} que extraer de un runner cualquiera — un solo diagnóstico de proyecto. */
18
+ export declare function parsearTestFallido(salida: SalidaComando): DiagnosticoParcial[];
19
+ //# sourceMappingURL=parseo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseo.d.ts","sourceRoot":"","sources":["../../../src/core/limpieza/parseo.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA0BpE,2FAA0F;AAC1F,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAyBtF;AAID,4FAA0F;AAC1F,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAqB3F;AAID,4GAA0G;AAC1G,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAcnF;AASD,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAaxF;AAED,gHAA6G;AAC7G,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,kBAAkB,EAAE,CAI9E","sourcesContent":["/**\n * Parseo de la salida de cada comprobador a {@link DiagnosticoParcial}[].\n *\n * Un parser por formato de verdad soportado (json de eslint, anotaciones\n * `::warning`/`::error` de biome, el `path(linea,col): error TSxxxx:` de\n * tsc) y un parser genérico de último recurso para lo demás (ruff, go vet,\n * un script `npm run lint` cuyo formato interno no conocemos).\n */\n\nimport { isAbsolute, relative } from \"node:path\";\nimport type { DiagnosticoParcial, SalidaComando } from \"./tipos.ts\";\n\n/** Convierte una ruta absoluta dentro de `cwd` en relativa; deja las de fuera tal cual. */\nfunction relativizar(ruta: string, cwd: string): string {\n\tif (!isAbsolute(ruta)) return ruta;\n\tconst rel = relative(cwd, ruta);\n\treturn rel.startsWith(\"..\") ? ruta : rel;\n}\n\nfunction numeroOIndefinido(valor: string | undefined): number | undefined {\n\tif (valor === undefined) return undefined;\n\tconst n = Number(valor);\n\treturn Number.isFinite(n) ? n : undefined;\n}\n\ninterface MensajeEslint {\n\tline?: number;\n\tcolumn?: number;\n\truleId?: string | null;\n\tmessage: string;\n}\ninterface ResultadoEslint {\n\tfilePath: string;\n\tmessages: MensajeEslint[];\n}\n\n/** `eslint . --format json`: el único formato de eslint que no cambia entre versiones. */\nexport function parsearEslint(salida: SalidaComando, cwd: string): DiagnosticoParcial[] {\n\tconst texto = salida.stdout.trim();\n\tif (!texto) return [];\n\tlet resultados: ResultadoEslint[];\n\ttry {\n\t\tresultados = JSON.parse(texto);\n\t} catch {\n\t\t// Salida no-JSON (p.ej. un error de configuración impreso antes del array):\n\t\t// no hay nada fiable que extraer, mejor [] que adivinar.\n\t\treturn [];\n\t}\n\tconst diagnosticos: DiagnosticoParcial[] = [];\n\tfor (const resultado of resultados) {\n\t\tconst ruta = relativizar(resultado.filePath, cwd);\n\t\tfor (const m of resultado.messages ?? []) {\n\t\t\tdiagnosticos.push({\n\t\t\t\truta,\n\t\t\t\tlinea: m.line,\n\t\t\t\tcolumna: m.column,\n\t\t\t\tregla: m.ruleId ?? undefined,\n\t\t\t\tmensaje: m.message,\n\t\t\t});\n\t\t}\n\t}\n\treturn diagnosticos;\n}\n\nconst RE_ANOTACION = /^::(error|warning|notice)\\s+([^:]*)::(.*)$/;\n\n/** `biome lint --reporter=github .`: una línea por diagnóstico, formato estable de CI. */\nexport function parsearBiomeGithub(salida: SalidaComando, cwd: string): DiagnosticoParcial[] {\n\tconst diagnosticos: DiagnosticoParcial[] = [];\n\tfor (const linea of `${salida.stdout}\\n${salida.stderr}`.split(\"\\n\")) {\n\t\tconst m = RE_ANOTACION.exec(linea.trim());\n\t\tif (!m) continue;\n\t\tconst params = new Map<string, string>();\n\t\tfor (const par of m[2].split(\",\")) {\n\t\t\tconst i = par.indexOf(\"=\");\n\t\t\tif (i < 0) continue;\n\t\t\tparams.set(par.slice(0, i).trim(), par.slice(i + 1).trim());\n\t\t}\n\t\tconst archivo = params.get(\"file\");\n\t\tdiagnosticos.push({\n\t\t\truta: archivo ? relativizar(archivo, cwd) : undefined,\n\t\t\tlinea: numeroOIndefinido(params.get(\"line\")),\n\t\t\tcolumna: numeroOIndefinido(params.get(\"col\")),\n\t\t\tregla: params.get(\"title\"),\n\t\t\tmensaje: m[3].trim(),\n\t\t});\n\t}\n\treturn diagnosticos;\n}\n\nconst RE_TSC = /^(.+?)\\((\\d+),(\\d+)\\):\\s+(?:error|warning)\\s+(TS\\d+):\\s+(.*)$/;\n\n/** `tsc --noEmit --pretty false`: `ruta(linea,col): error TSxxxx: mensaje`, una línea por diagnóstico. */\nexport function parsearTsc(salida: SalidaComando, cwd: string): DiagnosticoParcial[] {\n\tconst diagnosticos: DiagnosticoParcial[] = [];\n\tfor (const linea of salida.stdout.split(\"\\n\")) {\n\t\tconst m = RE_TSC.exec(linea.trim());\n\t\tif (!m) continue;\n\t\tdiagnosticos.push({\n\t\t\truta: relativizar(m[1], cwd),\n\t\t\tlinea: Number(m[2]),\n\t\t\tcolumna: Number(m[3]),\n\t\t\tregla: m[4],\n\t\t\tmensaje: m[5].trim(),\n\t\t});\n\t}\n\treturn diagnosticos;\n}\n\n// ponytail: asume UNA línea por diagnóstico \"ruta:línea[:columna]: mensaje\" — el\n// formato de ruff y de go vet, y un piso razonable para lo que no reconocemos\n// (p.ej. un `npm run lint` que envuelve una herramienta desconocida). cargo\n// clippy en su formato humano por defecto es multilínea y este parser no lo\n// entiende; si clippy importa de verdad, añadir su propio parser como el de tsc.\nconst RE_GENERICO = /^([^\\s:][^:]*):(\\d+)(?::(\\d+))?:\\s*(.*)$/;\n\nexport function parsearGenerico(salida: SalidaComando, cwd: string): DiagnosticoParcial[] {\n\tconst diagnosticos: DiagnosticoParcial[] = [];\n\tfor (const linea of `${salida.stdout}\\n${salida.stderr}`.split(\"\\n\")) {\n\t\tconst m = RE_GENERICO.exec(linea.trim());\n\t\tif (!m) continue;\n\t\tdiagnosticos.push({\n\t\t\truta: relativizar(m[1], cwd),\n\t\t\tlinea: Number(m[2]),\n\t\t\tcolumna: m[3] ? Number(m[3]) : undefined,\n\t\t\tmensaje: m[4].trim(),\n\t\t});\n\t}\n\treturn diagnosticos;\n}\n\n/** `npm test`: no hay {ruta,linea} que extraer de un runner cualquiera — un solo diagnóstico de proyecto. */\nexport function parsearTestFallido(salida: SalidaComando): DiagnosticoParcial[] {\n\tif (salida.code === 0) return [];\n\tconst cola = `${salida.stdout}\\n${salida.stderr}`.trim().split(\"\\n\").slice(-20).join(\"\\n\");\n\treturn [{ mensaje: `npm test salió con código ${salida.code}:\\n${cola}` }];\n}\n"]}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Parseo de la salida de cada comprobador a {@link DiagnosticoParcial}[].
3
+ *
4
+ * Un parser por formato de verdad soportado (json de eslint, anotaciones
5
+ * `::warning`/`::error` de biome, el `path(linea,col): error TSxxxx:` de
6
+ * tsc) y un parser genérico de último recurso para lo demás (ruff, go vet,
7
+ * un script `npm run lint` cuyo formato interno no conocemos).
8
+ */
9
+ import { isAbsolute, relative } from "node:path";
10
+ /** Convierte una ruta absoluta dentro de `cwd` en relativa; deja las de fuera tal cual. */
11
+ function relativizar(ruta, cwd) {
12
+ if (!isAbsolute(ruta))
13
+ return ruta;
14
+ const rel = relative(cwd, ruta);
15
+ return rel.startsWith("..") ? ruta : rel;
16
+ }
17
+ function numeroOIndefinido(valor) {
18
+ if (valor === undefined)
19
+ return undefined;
20
+ const n = Number(valor);
21
+ return Number.isFinite(n) ? n : undefined;
22
+ }
23
+ /** `eslint . --format json`: el único formato de eslint que no cambia entre versiones. */
24
+ export function parsearEslint(salida, cwd) {
25
+ const texto = salida.stdout.trim();
26
+ if (!texto)
27
+ return [];
28
+ let resultados;
29
+ try {
30
+ resultados = JSON.parse(texto);
31
+ }
32
+ catch {
33
+ // Salida no-JSON (p.ej. un error de configuración impreso antes del array):
34
+ // no hay nada fiable que extraer, mejor [] que adivinar.
35
+ return [];
36
+ }
37
+ const diagnosticos = [];
38
+ for (const resultado of resultados) {
39
+ const ruta = relativizar(resultado.filePath, cwd);
40
+ for (const m of resultado.messages ?? []) {
41
+ diagnosticos.push({
42
+ ruta,
43
+ linea: m.line,
44
+ columna: m.column,
45
+ regla: m.ruleId ?? undefined,
46
+ mensaje: m.message,
47
+ });
48
+ }
49
+ }
50
+ return diagnosticos;
51
+ }
52
+ const RE_ANOTACION = /^::(error|warning|notice)\s+([^:]*)::(.*)$/;
53
+ /** `biome lint --reporter=github .`: una línea por diagnóstico, formato estable de CI. */
54
+ export function parsearBiomeGithub(salida, cwd) {
55
+ const diagnosticos = [];
56
+ for (const linea of `${salida.stdout}\n${salida.stderr}`.split("\n")) {
57
+ const m = RE_ANOTACION.exec(linea.trim());
58
+ if (!m)
59
+ continue;
60
+ const params = new Map();
61
+ for (const par of m[2].split(",")) {
62
+ const i = par.indexOf("=");
63
+ if (i < 0)
64
+ continue;
65
+ params.set(par.slice(0, i).trim(), par.slice(i + 1).trim());
66
+ }
67
+ const archivo = params.get("file");
68
+ diagnosticos.push({
69
+ ruta: archivo ? relativizar(archivo, cwd) : undefined,
70
+ linea: numeroOIndefinido(params.get("line")),
71
+ columna: numeroOIndefinido(params.get("col")),
72
+ regla: params.get("title"),
73
+ mensaje: m[3].trim(),
74
+ });
75
+ }
76
+ return diagnosticos;
77
+ }
78
+ const RE_TSC = /^(.+?)\((\d+),(\d+)\):\s+(?:error|warning)\s+(TS\d+):\s+(.*)$/;
79
+ /** `tsc --noEmit --pretty false`: `ruta(linea,col): error TSxxxx: mensaje`, una línea por diagnóstico. */
80
+ export function parsearTsc(salida, cwd) {
81
+ const diagnosticos = [];
82
+ for (const linea of salida.stdout.split("\n")) {
83
+ const m = RE_TSC.exec(linea.trim());
84
+ if (!m)
85
+ continue;
86
+ diagnosticos.push({
87
+ ruta: relativizar(m[1], cwd),
88
+ linea: Number(m[2]),
89
+ columna: Number(m[3]),
90
+ regla: m[4],
91
+ mensaje: m[5].trim(),
92
+ });
93
+ }
94
+ return diagnosticos;
95
+ }
96
+ // ponytail: asume UNA línea por diagnóstico "ruta:línea[:columna]: mensaje" — el
97
+ // formato de ruff y de go vet, y un piso razonable para lo que no reconocemos
98
+ // (p.ej. un `npm run lint` que envuelve una herramienta desconocida). cargo
99
+ // clippy en su formato humano por defecto es multilínea y este parser no lo
100
+ // entiende; si clippy importa de verdad, añadir su propio parser como el de tsc.
101
+ const RE_GENERICO = /^([^\s:][^:]*):(\d+)(?::(\d+))?:\s*(.*)$/;
102
+ export function parsearGenerico(salida, cwd) {
103
+ const diagnosticos = [];
104
+ for (const linea of `${salida.stdout}\n${salida.stderr}`.split("\n")) {
105
+ const m = RE_GENERICO.exec(linea.trim());
106
+ if (!m)
107
+ continue;
108
+ diagnosticos.push({
109
+ ruta: relativizar(m[1], cwd),
110
+ linea: Number(m[2]),
111
+ columna: m[3] ? Number(m[3]) : undefined,
112
+ mensaje: m[4].trim(),
113
+ });
114
+ }
115
+ return diagnosticos;
116
+ }
117
+ /** `npm test`: no hay {ruta,linea} que extraer de un runner cualquiera — un solo diagnóstico de proyecto. */
118
+ export function parsearTestFallido(salida) {
119
+ if (salida.code === 0)
120
+ return [];
121
+ const cola = `${salida.stdout}\n${salida.stderr}`.trim().split("\n").slice(-20).join("\n");
122
+ return [{ mensaje: `npm test salió con código ${salida.code}:\n${cola}` }];
123
+ }
124
+ //# sourceMappingURL=parseo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseo.js","sourceRoot":"","sources":["../../../src/core/limpieza/parseo.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Parseo de la salida de cada comprobador a {@link DiagnosticoParcial}[].\n *\n * Un parser por formato de verdad soportado (json de eslint, anotaciones\n * `::warning`/`::error` de biome, el `path(linea,col): error TSxxxx:` de\n * tsc) y un parser genérico de último recurso para lo demás (ruff, go vet,\n * un script `npm run lint` cuyo formato interno no conocemos).\n */\n\nimport { isAbsolute, relative } from \"node:path\";\nimport type { DiagnosticoParcial, SalidaComando } from \"./tipos.ts\";\n\n/** Convierte una ruta absoluta dentro de `cwd` en relativa; deja las de fuera tal cual. */\nfunction relativizar(ruta: string, cwd: string): string {\n\tif (!isAbsolute(ruta)) return ruta;\n\tconst rel = relative(cwd, ruta);\n\treturn rel.startsWith(\"..\") ? ruta : rel;\n}\n\nfunction numeroOIndefinido(valor: string | undefined): number | undefined {\n\tif (valor === undefined) return undefined;\n\tconst n = Number(valor);\n\treturn Number.isFinite(n) ? n : undefined;\n}\n\ninterface MensajeEslint {\n\tline?: number;\n\tcolumn?: number;\n\truleId?: string | null;\n\tmessage: string;\n}\ninterface ResultadoEslint {\n\tfilePath: string;\n\tmessages: MensajeEslint[];\n}\n\n/** `eslint . --format json`: el único formato de eslint que no cambia entre versiones. */\nexport function parsearEslint(salida: SalidaComando, cwd: string): DiagnosticoParcial[] {\n\tconst texto = salida.stdout.trim();\n\tif (!texto) return [];\n\tlet resultados: ResultadoEslint[];\n\ttry {\n\t\tresultados = JSON.parse(texto);\n\t} catch {\n\t\t// Salida no-JSON (p.ej. un error de configuración impreso antes del array):\n\t\t// no hay nada fiable que extraer, mejor [] que adivinar.\n\t\treturn [];\n\t}\n\tconst diagnosticos: DiagnosticoParcial[] = [];\n\tfor (const resultado of resultados) {\n\t\tconst ruta = relativizar(resultado.filePath, cwd);\n\t\tfor (const m of resultado.messages ?? []) {\n\t\t\tdiagnosticos.push({\n\t\t\t\truta,\n\t\t\t\tlinea: m.line,\n\t\t\t\tcolumna: m.column,\n\t\t\t\tregla: m.ruleId ?? undefined,\n\t\t\t\tmensaje: m.message,\n\t\t\t});\n\t\t}\n\t}\n\treturn diagnosticos;\n}\n\nconst RE_ANOTACION = /^::(error|warning|notice)\\s+([^:]*)::(.*)$/;\n\n/** `biome lint --reporter=github .`: una línea por diagnóstico, formato estable de CI. */\nexport function parsearBiomeGithub(salida: SalidaComando, cwd: string): DiagnosticoParcial[] {\n\tconst diagnosticos: DiagnosticoParcial[] = [];\n\tfor (const linea of `${salida.stdout}\\n${salida.stderr}`.split(\"\\n\")) {\n\t\tconst m = RE_ANOTACION.exec(linea.trim());\n\t\tif (!m) continue;\n\t\tconst params = new Map<string, string>();\n\t\tfor (const par of m[2].split(\",\")) {\n\t\t\tconst i = par.indexOf(\"=\");\n\t\t\tif (i < 0) continue;\n\t\t\tparams.set(par.slice(0, i).trim(), par.slice(i + 1).trim());\n\t\t}\n\t\tconst archivo = params.get(\"file\");\n\t\tdiagnosticos.push({\n\t\t\truta: archivo ? relativizar(archivo, cwd) : undefined,\n\t\t\tlinea: numeroOIndefinido(params.get(\"line\")),\n\t\t\tcolumna: numeroOIndefinido(params.get(\"col\")),\n\t\t\tregla: params.get(\"title\"),\n\t\t\tmensaje: m[3].trim(),\n\t\t});\n\t}\n\treturn diagnosticos;\n}\n\nconst RE_TSC = /^(.+?)\\((\\d+),(\\d+)\\):\\s+(?:error|warning)\\s+(TS\\d+):\\s+(.*)$/;\n\n/** `tsc --noEmit --pretty false`: `ruta(linea,col): error TSxxxx: mensaje`, una línea por diagnóstico. */\nexport function parsearTsc(salida: SalidaComando, cwd: string): DiagnosticoParcial[] {\n\tconst diagnosticos: DiagnosticoParcial[] = [];\n\tfor (const linea of salida.stdout.split(\"\\n\")) {\n\t\tconst m = RE_TSC.exec(linea.trim());\n\t\tif (!m) continue;\n\t\tdiagnosticos.push({\n\t\t\truta: relativizar(m[1], cwd),\n\t\t\tlinea: Number(m[2]),\n\t\t\tcolumna: Number(m[3]),\n\t\t\tregla: m[4],\n\t\t\tmensaje: m[5].trim(),\n\t\t});\n\t}\n\treturn diagnosticos;\n}\n\n// ponytail: asume UNA línea por diagnóstico \"ruta:línea[:columna]: mensaje\" — el\n// formato de ruff y de go vet, y un piso razonable para lo que no reconocemos\n// (p.ej. un `npm run lint` que envuelve una herramienta desconocida). cargo\n// clippy en su formato humano por defecto es multilínea y este parser no lo\n// entiende; si clippy importa de verdad, añadir su propio parser como el de tsc.\nconst RE_GENERICO = /^([^\\s:][^:]*):(\\d+)(?::(\\d+))?:\\s*(.*)$/;\n\nexport function parsearGenerico(salida: SalidaComando, cwd: string): DiagnosticoParcial[] {\n\tconst diagnosticos: DiagnosticoParcial[] = [];\n\tfor (const linea of `${salida.stdout}\\n${salida.stderr}`.split(\"\\n\")) {\n\t\tconst m = RE_GENERICO.exec(linea.trim());\n\t\tif (!m) continue;\n\t\tdiagnosticos.push({\n\t\t\truta: relativizar(m[1], cwd),\n\t\t\tlinea: Number(m[2]),\n\t\t\tcolumna: m[3] ? Number(m[3]) : undefined,\n\t\t\tmensaje: m[4].trim(),\n\t\t});\n\t}\n\treturn diagnosticos;\n}\n\n/** `npm test`: no hay {ruta,linea} que extraer de un runner cualquiera — un solo diagnóstico de proyecto. */\nexport function parsearTestFallido(salida: SalidaComando): DiagnosticoParcial[] {\n\tif (salida.code === 0) return [];\n\tconst cola = `${salida.stdout}\\n${salida.stderr}`.trim().split(\"\\n\").slice(-20).join(\"\\n\");\n\treturn [{ mensaje: `npm test salió con código ${salida.code}:\\n${cola}` }];\n}\n"]}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Orquestación de `ada-cli cleanse`: agrupa diagnósticos por fichero (diez
3
+ * problemas del mismo fichero en un subagente es UNA lectura, no diez),
4
+ * lanza un subagente por fichero con `AgentRunner` bajo un tope de
5
+ * concurrencia y, tras cada arreglo, RE-EJECUTA todos los comprobadores de
6
+ * "fichero" del proyecto (no solo el que generó el diagnóstico original —
7
+ * un arreglo de lint puede romper el typecheck del mismo fichero).
8
+ *
9
+ * Un arreglo se acepta solo si el diagnóstico original desapareció Y no
10
+ * apareció ninguno nuevo en ese mismo fichero. La comparación es por firma
11
+ * (comprobador+regla+mensaje, no por línea) porque un arreglo real desplaza
12
+ * líneas. Si no se acepta, el fichero se revierte al contenido que tenía
13
+ * antes del subagente — "rechazar" un arreglo que no se deshace no sería
14
+ * rechazarlo, sería solo decirlo.
15
+ */
16
+ import { type CreateSubagentSession } from "../workflows/agent-runner.ts";
17
+ import type { Comprobador, Diagnostico, GrupoPorFichero } from "./tipos.ts";
18
+ /** Agrupa diagnósticos por fichero; los de proyecto (`ruta` undefined) forman su propio grupo. */
19
+ export declare function agruparPorFichero(diagnosticos: readonly Diagnostico[]): GrupoPorFichero[];
20
+ export interface PlanLimpieza {
21
+ mirado: string[];
22
+ comprobadores: Comprobador[];
23
+ diagnosticos: Diagnostico[];
24
+ grupos: GrupoPorFichero[];
25
+ fallidos: Array<{
26
+ id: string;
27
+ etiqueta: string;
28
+ motivo: string;
29
+ }>;
30
+ }
31
+ /** Detecta comprobadores y los ejecuta una vez — el plan que `--dry-run` enseña sin tocar nada más. */
32
+ export declare function planificarLimpieza(cwd: string): Promise<PlanLimpieza>;
33
+ export interface ResultadoReparacion {
34
+ ruta?: string;
35
+ aceptado: boolean;
36
+ motivo: string;
37
+ diagnosticosResueltos: number;
38
+ diagnosticosRestantes: number;
39
+ nuevos: Diagnostico[];
40
+ }
41
+ export interface OpcionesReparacion {
42
+ cwd: string;
43
+ agentDir: string;
44
+ crearSesion: CreateSubagentSession;
45
+ /** "provider/model" explícito; si falta se usa `tier:cheap` (arreglar un lint no necesita el modelo caro). */
46
+ modeloSpec?: string;
47
+ concurrencia?: number;
48
+ agentTimeoutMs?: number | null;
49
+ log?: (linea: string) => void;
50
+ }
51
+ /**
52
+ * Lanza un subagente por grupo bajo un tope de concurrencia y verifica cada
53
+ * arreglo. Los grupos de fichero corren en paralelo entre sí; los de
54
+ * proyecto (sin fichero, comparten "ámbito" con todo) van después, en serie,
55
+ * para no pisarse entre ellos ni con una verificación en marcha.
56
+ */
57
+ export declare function repararLimpieza(plan: PlanLimpieza, opciones: OpcionesReparacion): Promise<ResultadoReparacion[]>;
58
+ export type EstadoCleanse = "limpio" | "sin_comprobadores" | "pendiente" | "arreglado_parcial";
59
+ export interface ResultadoCleanse {
60
+ estado: EstadoCleanse;
61
+ mirado: string[];
62
+ comprobadores: string[];
63
+ fallidos: Array<{
64
+ id: string;
65
+ etiqueta: string;
66
+ motivo: string;
67
+ }>;
68
+ diagnosticosIniciales: number;
69
+ grupos: GrupoPorFichero[];
70
+ reparaciones: ResultadoReparacion[];
71
+ diagnosticosFinales: number;
72
+ }
73
+ /** Punto de entrada único: detecta, planifica y (salvo `dryRun`) repara y verifica. */
74
+ export declare function ejecutarCleanse(cwd: string, opciones: Omit<OpcionesReparacion, "cwd"> & {
75
+ dryRun?: boolean;
76
+ }): Promise<ResultadoCleanse>;
77
+ //# sourceMappingURL=reparacion.d.ts.map