@hoilab/ada-cli 0.84.21 → 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 (1337) hide show
  1. package/CHANGELOG.md +49 -2
  2. package/README.es.md +174 -0
  3. package/README.md +203 -658
  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/args.d.ts +3 -0
  9. package/dist/cli/args.d.ts.map +1 -1
  10. package/dist/cli/args.js +11 -0
  11. package/dist/cli/args.js.map +1 -1
  12. package/dist/cli/audit-command.d.ts +15 -0
  13. package/dist/cli/audit-command.d.ts.map +1 -0
  14. package/dist/cli/audit-command.js +280 -0
  15. package/dist/cli/audit-command.js.map +1 -0
  16. package/dist/cli/banco-command.d.ts +15 -0
  17. package/dist/cli/banco-command.d.ts.map +1 -0
  18. package/dist/cli/banco-command.js +213 -0
  19. package/dist/cli/banco-command.js.map +1 -0
  20. package/dist/cli/cleanse-command.d.ts +11 -0
  21. package/dist/cli/cleanse-command.d.ts.map +1 -0
  22. package/dist/cli/cleanse-command.js +101 -0
  23. package/dist/cli/cleanse-command.js.map +1 -0
  24. package/dist/cli/commit-command.d.ts +31 -0
  25. package/dist/cli/commit-command.d.ts.map +1 -0
  26. package/dist/cli/commit-command.js +158 -0
  27. package/dist/cli/commit-command.js.map +1 -0
  28. package/dist/cli/computer-command.d.ts +12 -0
  29. package/dist/cli/computer-command.d.ts.map +1 -0
  30. package/dist/cli/computer-command.js +141 -0
  31. package/dist/cli/computer-command.js.map +1 -0
  32. package/dist/cli/discover-command.d.ts +18 -0
  33. package/dist/cli/discover-command.d.ts.map +1 -0
  34. package/dist/cli/discover-command.js +108 -0
  35. package/dist/cli/discover-command.js.map +1 -0
  36. package/dist/cli/file-processor.d.ts.map +1 -1
  37. package/dist/cli/file-processor.js +2 -1
  38. package/dist/cli/file-processor.js.map +1 -1
  39. package/dist/cli/hashline-command.d.ts +11 -0
  40. package/dist/cli/hashline-command.d.ts.map +1 -0
  41. package/dist/cli/hashline-command.js +106 -0
  42. package/dist/cli/hashline-command.js.map +1 -0
  43. package/dist/cli/home-screen.d.ts.map +1 -1
  44. package/dist/cli/home-screen.js +2 -2
  45. package/dist/cli/home-screen.js.map +1 -1
  46. package/dist/cli/import-command.d.ts +35 -0
  47. package/dist/cli/import-command.d.ts.map +1 -0
  48. package/dist/cli/import-command.js +164 -0
  49. package/dist/cli/import-command.js.map +1 -0
  50. package/dist/cli/politica-command.d.ts +20 -0
  51. package/dist/cli/politica-command.d.ts.map +1 -0
  52. package/dist/cli/politica-command.js +93 -0
  53. package/dist/cli/politica-command.js.map +1 -0
  54. package/dist/cli/refine-command.d.ts +18 -0
  55. package/dist/cli/refine-command.d.ts.map +1 -0
  56. package/dist/cli/refine-command.js +101 -0
  57. package/dist/cli/refine-command.js.map +1 -0
  58. package/dist/cli/review-command.d.ts +24 -0
  59. package/dist/cli/review-command.d.ts.map +1 -0
  60. package/dist/cli/review-command.js +168 -0
  61. package/dist/cli/review-command.js.map +1 -0
  62. package/dist/cli/schedule-command.d.ts +17 -0
  63. package/dist/cli/schedule-command.d.ts.map +1 -0
  64. package/dist/cli/schedule-command.js +117 -0
  65. package/dist/cli/schedule-command.js.map +1 -0
  66. package/dist/cli/serve-command.d.ts +72 -0
  67. package/dist/cli/serve-command.d.ts.map +1 -0
  68. package/dist/cli/serve-command.js +568 -0
  69. package/dist/cli/serve-command.js.map +1 -0
  70. package/dist/cli/startup-ui.d.ts.map +1 -1
  71. package/dist/cli/startup-ui.js +9 -3
  72. package/dist/cli/startup-ui.js.map +1 -1
  73. package/dist/cli/telegram-command.d.ts +18 -0
  74. package/dist/cli/telegram-command.d.ts.map +1 -0
  75. package/dist/cli/telegram-command.js +137 -0
  76. package/dist/cli/telegram-command.js.map +1 -0
  77. package/dist/cli/telemetria-command.d.ts +22 -0
  78. package/dist/cli/telemetria-command.d.ts.map +1 -0
  79. package/dist/cli/telemetria-command.js +127 -0
  80. package/dist/cli/telemetria-command.js.map +1 -0
  81. package/dist/cli/undo-command.d.ts +9 -0
  82. package/dist/cli/undo-command.d.ts.map +1 -0
  83. package/dist/cli/undo-command.js +56 -0
  84. package/dist/cli/undo-command.js.map +1 -0
  85. package/dist/cli/usage-command.d.ts +10 -0
  86. package/dist/cli/usage-command.d.ts.map +1 -0
  87. package/dist/cli/usage-command.js +209 -0
  88. package/dist/cli/usage-command.js.map +1 -0
  89. package/dist/cli/wiki-command.d.ts +9 -0
  90. package/dist/cli/wiki-command.d.ts.map +1 -0
  91. package/dist/cli/wiki-command.js +76 -0
  92. package/dist/cli/wiki-command.js.map +1 -0
  93. package/dist/cli.d.ts +6 -0
  94. package/dist/cli.d.ts.map +1 -1
  95. package/dist/cli.js +10 -11
  96. package/dist/cli.js.map +1 -1
  97. package/dist/config.d.ts +1 -1
  98. package/dist/config.d.ts.map +1 -1
  99. package/dist/config.js +3 -2
  100. package/dist/config.js.map +1 -1
  101. package/dist/core/ada.d.ts +58 -0
  102. package/dist/core/ada.d.ts.map +1 -0
  103. package/dist/core/ada.js +61 -0
  104. package/dist/core/ada.js.map +1 -0
  105. package/dist/core/advisor/guarda.d.ts +66 -0
  106. package/dist/core/advisor/guarda.d.ts.map +1 -0
  107. package/dist/core/advisor/guarda.js +191 -0
  108. package/dist/core/advisor/guarda.js.map +1 -0
  109. package/dist/core/advisor/runtime.d.ts +66 -0
  110. package/dist/core/advisor/runtime.d.ts.map +1 -0
  111. package/dist/core/advisor/runtime.js +121 -0
  112. package/dist/core/advisor/runtime.js.map +1 -0
  113. package/dist/core/advisor/sesion.d.ts +109 -0
  114. package/dist/core/advisor/sesion.d.ts.map +1 -0
  115. package/dist/core/advisor/sesion.js +139 -0
  116. package/dist/core/advisor/sesion.js.map +1 -0
  117. package/dist/core/agent-session.d.ts +85 -7
  118. package/dist/core/agent-session.d.ts.map +1 -1
  119. package/dist/core/agent-session.js +862 -78
  120. package/dist/core/agent-session.js.map +1 -1
  121. package/dist/core/agents/loader.d.ts +77 -0
  122. package/dist/core/agents/loader.d.ts.map +1 -0
  123. package/dist/core/agents/loader.js +154 -0
  124. package/dist/core/agents/loader.js.map +1 -0
  125. package/dist/core/aprobacion/generados.d.ts +37 -0
  126. package/dist/core/aprobacion/generados.d.ts.map +1 -0
  127. package/dist/core/aprobacion/generados.js +85 -0
  128. package/dist/core/aprobacion/generados.js.map +1 -0
  129. package/dist/core/aprobacion/politica-de-maquina.d.ts +90 -0
  130. package/dist/core/aprobacion/politica-de-maquina.d.ts.map +1 -0
  131. package/dist/core/aprobacion/politica-de-maquina.js +212 -0
  132. package/dist/core/aprobacion/politica-de-maquina.js.map +1 -0
  133. package/dist/core/aprobacion/politica.d.ts +90 -0
  134. package/dist/core/aprobacion/politica.d.ts.map +1 -0
  135. package/dist/core/aprobacion/politica.js +375 -0
  136. package/dist/core/aprobacion/politica.js.map +1 -0
  137. package/dist/core/arranque/atajos.d.ts +46 -0
  138. package/dist/core/arranque/atajos.d.ts.map +1 -0
  139. package/dist/core/arranque/atajos.js +113 -0
  140. package/dist/core/arranque/atajos.js.map +1 -0
  141. package/dist/core/audit/exportacion.d.ts +54 -0
  142. package/dist/core/audit/exportacion.d.ts.map +1 -0
  143. package/dist/core/audit/exportacion.js +265 -0
  144. package/dist/core/audit/exportacion.js.map +1 -0
  145. package/dist/core/audit/libro.d.ts +318 -0
  146. package/dist/core/audit/libro.d.ts.map +1 -0
  147. package/dist/core/audit/libro.js +508 -0
  148. package/dist/core/audit/libro.js.map +1 -0
  149. package/dist/core/audit/registro-sesion.d.ts +78 -0
  150. package/dist/core/audit/registro-sesion.d.ts.map +1 -0
  151. package/dist/core/audit/registro-sesion.js +202 -0
  152. package/dist/core/audit/registro-sesion.js.map +1 -0
  153. package/dist/core/audit/retencion.d.ts +82 -0
  154. package/dist/core/audit/retencion.d.ts.map +1 -0
  155. package/dist/core/audit/retencion.js +152 -0
  156. package/dist/core/audit/retencion.js.map +1 -0
  157. package/dist/core/audit/rutas.d.ts +23 -0
  158. package/dist/core/audit/rutas.d.ts.map +1 -0
  159. package/dist/core/audit/rutas.js +23 -0
  160. package/dist/core/audit/rutas.js.map +1 -0
  161. package/dist/core/auth-storage.d.ts +0 -3
  162. package/dist/core/auth-storage.d.ts.map +1 -1
  163. package/dist/core/auth-storage.js +21 -8
  164. package/dist/core/auth-storage.js.map +1 -1
  165. package/dist/core/banco/almacenamiento.d.ts +18 -0
  166. package/dist/core/banco/almacenamiento.d.ts.map +1 -0
  167. package/dist/core/banco/almacenamiento.js +50 -0
  168. package/dist/core/banco/almacenamiento.js.map +1 -0
  169. package/dist/core/banco/analisis.d.ts +37 -0
  170. package/dist/core/banco/analisis.d.ts.map +1 -0
  171. package/dist/core/banco/analisis.js +164 -0
  172. package/dist/core/banco/analisis.js.map +1 -0
  173. package/dist/core/banco/bloques.d.ts +39 -0
  174. package/dist/core/banco/bloques.d.ts.map +1 -0
  175. package/dist/core/banco/bloques.js +84 -0
  176. package/dist/core/banco/bloques.js.map +1 -0
  177. package/dist/core/banco/cargas.d.ts +84 -0
  178. package/dist/core/banco/cargas.d.ts.map +1 -0
  179. package/dist/core/banco/cargas.js +520 -0
  180. package/dist/core/banco/cargas.js.map +1 -0
  181. package/dist/core/banco/comparar.d.ts +29 -0
  182. package/dist/core/banco/comparar.d.ts.map +1 -0
  183. package/dist/core/banco/comparar.js +28 -0
  184. package/dist/core/banco/comparar.js.map +1 -0
  185. package/dist/core/banco/ejecutar.d.ts +44 -0
  186. package/dist/core/banco/ejecutar.d.ts.map +1 -0
  187. package/dist/core/banco/ejecutar.js +183 -0
  188. package/dist/core/banco/ejecutar.js.map +1 -0
  189. package/dist/core/banco/generar.d.ts +24 -0
  190. package/dist/core/banco/generar.d.ts.map +1 -0
  191. package/dist/core/banco/generar.js +159 -0
  192. package/dist/core/banco/generar.js.map +1 -0
  193. package/dist/core/banco/mutaciones.d.ts +25 -0
  194. package/dist/core/banco/mutaciones.d.ts.map +1 -0
  195. package/dist/core/banco/mutaciones.js +215 -0
  196. package/dist/core/banco/mutaciones.js.map +1 -0
  197. package/dist/core/banco/tipos.d.ts +121 -0
  198. package/dist/core/banco/tipos.d.ts.map +1 -0
  199. package/dist/core/banco/tipos.js +16 -0
  200. package/dist/core/banco/tipos.js.map +1 -0
  201. package/dist/core/blobs/almacen.d.ts +81 -0
  202. package/dist/core/blobs/almacen.d.ts.map +1 -0
  203. package/dist/core/blobs/almacen.js +198 -0
  204. package/dist/core/blobs/almacen.js.map +1 -0
  205. package/dist/core/blobs/broker.d.ts +103 -0
  206. package/dist/core/blobs/broker.d.ts.map +1 -0
  207. package/dist/core/blobs/broker.js +204 -0
  208. package/dist/core/blobs/broker.js.map +1 -0
  209. package/dist/core/blobs/index.d.ts +70 -0
  210. package/dist/core/blobs/index.d.ts.map +1 -0
  211. package/dist/core/blobs/index.js +232 -0
  212. package/dist/core/blobs/index.js.map +1 -0
  213. package/dist/core/blobs/payload.d.ts +55 -0
  214. package/dist/core/blobs/payload.d.ts.map +1 -0
  215. package/dist/core/blobs/payload.js +255 -0
  216. package/dist/core/blobs/payload.js.map +1 -0
  217. package/dist/core/blobs/proveedor.d.ts +85 -0
  218. package/dist/core/blobs/proveedor.d.ts.map +1 -0
  219. package/dist/core/blobs/proveedor.js +196 -0
  220. package/dist/core/blobs/proveedor.js.map +1 -0
  221. package/dist/core/browser/cdp.d.ts +41 -0
  222. package/dist/core/browser/cdp.d.ts.map +1 -0
  223. package/dist/core/browser/cdp.js +119 -0
  224. package/dist/core/browser/cdp.js.map +1 -0
  225. package/dist/core/browser/politica.d.ts +51 -0
  226. package/dist/core/browser/politica.d.ts.map +1 -0
  227. package/dist/core/browser/politica.js +123 -0
  228. package/dist/core/browser/politica.js.map +1 -0
  229. package/dist/core/browser/sesion.d.ts +52 -0
  230. package/dist/core/browser/sesion.d.ts.map +1 -0
  231. package/dist/core/browser/sesion.js +176 -0
  232. package/dist/core/browser/sesion.js.map +1 -0
  233. package/dist/core/browser/tools.d.ts +16 -0
  234. package/dist/core/browser/tools.d.ts.map +1 -0
  235. package/dist/core/browser/tools.js +279 -0
  236. package/dist/core/browser/tools.js.map +1 -0
  237. package/dist/core/commit/diff.d.ts +56 -0
  238. package/dist/core/commit/diff.d.ts.map +1 -0
  239. package/dist/core/commit/diff.js +145 -0
  240. package/dist/core/commit/diff.js.map +1 -0
  241. package/dist/core/commit/mensaje.d.ts +80 -0
  242. package/dist/core/commit/mensaje.d.ts.map +1 -0
  243. package/dist/core/commit/mensaje.js +207 -0
  244. package/dist/core/commit/mensaje.js.map +1 -0
  245. package/dist/core/compactar/index.d.ts +52 -0
  246. package/dist/core/compactar/index.d.ts.map +1 -0
  247. package/dist/core/compactar/index.js +91 -0
  248. package/dist/core/compactar/index.js.map +1 -0
  249. package/dist/core/compactar/registro-denso.d.ts +160 -0
  250. package/dist/core/compactar/registro-denso.d.ts.map +1 -0
  251. package/dist/core/compactar/registro-denso.js +620 -0
  252. package/dist/core/compactar/registro-denso.js.map +1 -0
  253. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  254. package/dist/core/compaction/branch-summarization.js +3 -0
  255. package/dist/core/compaction/branch-summarization.js.map +1 -1
  256. package/dist/core/compaction/compaction.d.ts +4 -3
  257. package/dist/core/compaction/compaction.d.ts.map +1 -1
  258. package/dist/core/compaction/compaction.js +41 -32
  259. package/dist/core/compaction/compaction.js.map +1 -1
  260. package/dist/core/computer/captura.d.ts +35 -0
  261. package/dist/core/computer/captura.d.ts.map +1 -0
  262. package/dist/core/computer/captura.js +140 -0
  263. package/dist/core/computer/captura.js.map +1 -0
  264. package/dist/core/computer/driver.d.ts +130 -0
  265. package/dist/core/computer/driver.d.ts.map +1 -0
  266. package/dist/core/computer/driver.js +206 -0
  267. package/dist/core/computer/driver.js.map +1 -0
  268. package/dist/core/computer/motor/actions.d.ts +109 -0
  269. package/dist/core/computer/motor/actions.d.ts.map +1 -0
  270. package/dist/core/computer/motor/actions.js +157 -0
  271. package/dist/core/computer/motor/actions.js.map +1 -0
  272. package/dist/core/computer/motor/bridge.d.ts +232 -0
  273. package/dist/core/computer/motor/bridge.d.ts.map +1 -0
  274. package/dist/core/computer/motor/bridge.js +2335 -0
  275. package/dist/core/computer/motor/bridge.js.map +1 -0
  276. package/dist/core/computer/motor/cdp.d.ts +107 -0
  277. package/dist/core/computer/motor/cdp.d.ts.map +1 -0
  278. package/dist/core/computer/motor/cdp.js +659 -0
  279. package/dist/core/computer/motor/cdp.js.map +1 -0
  280. package/dist/core/computer/motor/config.d.ts +23 -0
  281. package/dist/core/computer/motor/config.d.ts.map +1 -0
  282. package/dist/core/computer/motor/config.js +100 -0
  283. package/dist/core/computer/motor/config.js.map +1 -0
  284. package/dist/core/computer/motor/contract.d.ts +81 -0
  285. package/dist/core/computer/motor/contract.d.ts.map +1 -0
  286. package/dist/core/computer/motor/contract.js +14 -0
  287. package/dist/core/computer/motor/contract.js.map +1 -0
  288. package/dist/core/computer/motor/note.d.ts +37 -0
  289. package/dist/core/computer/motor/note.d.ts.map +1 -0
  290. package/dist/core/computer/motor/note.js +162 -0
  291. package/dist/core/computer/motor/note.js.map +1 -0
  292. package/dist/core/computer/motor/outline.d.ts +155 -0
  293. package/dist/core/computer/motor/outline.d.ts.map +1 -0
  294. package/dist/core/computer/motor/outline.js +590 -0
  295. package/dist/core/computer/motor/outline.js.map +1 -0
  296. package/dist/core/computer/motor/output.d.ts +18 -0
  297. package/dist/core/computer/motor/output.d.ts.map +1 -0
  298. package/dist/core/computer/motor/output.js +148 -0
  299. package/dist/core/computer/motor/output.js.map +1 -0
  300. package/dist/core/computer/motor/permissions.d.ts +41 -0
  301. package/dist/core/computer/motor/permissions.d.ts.map +1 -0
  302. package/dist/core/computer/motor/permissions.js +51 -0
  303. package/dist/core/computer/motor/permissions.js.map +1 -0
  304. package/dist/core/computer/motor/platform/architecture.d.ts +5 -0
  305. package/dist/core/computer/motor/platform/architecture.d.ts.map +1 -0
  306. package/dist/core/computer/motor/platform/architecture.js +21 -0
  307. package/dist/core/computer/motor/platform/architecture.js.map +1 -0
  308. package/dist/core/computer/motor/platform/coerce.d.ts +4 -0
  309. package/dist/core/computer/motor/platform/coerce.d.ts.map +1 -0
  310. package/dist/core/computer/motor/platform/coerce.js +17 -0
  311. package/dist/core/computer/motor/platform/coerce.js.map +1 -0
  312. package/dist/core/computer/motor/platform/index.d.ts +4 -0
  313. package/dist/core/computer/motor/platform/index.d.ts.map +1 -0
  314. package/dist/core/computer/motor/platform/index.js +79 -0
  315. package/dist/core/computer/motor/platform/index.js.map +1 -0
  316. package/dist/core/computer/motor/platform/linux/backend.d.ts +3 -0
  317. package/dist/core/computer/motor/platform/linux/backend.d.ts.map +1 -0
  318. package/dist/core/computer/motor/platform/linux/backend.js +173 -0
  319. package/dist/core/computer/motor/platform/linux/backend.js.map +1 -0
  320. package/dist/core/computer/motor/platform/linux/helper.d.ts +29 -0
  321. package/dist/core/computer/motor/platform/linux/helper.d.ts.map +1 -0
  322. package/dist/core/computer/motor/platform/linux/helper.js +261 -0
  323. package/dist/core/computer/motor/platform/linux/helper.js.map +1 -0
  324. package/dist/core/computer/motor/platform/macos/backend.d.ts +3 -0
  325. package/dist/core/computer/motor/platform/macos/backend.d.ts.map +1 -0
  326. package/dist/core/computer/motor/platform/macos/backend.js +124 -0
  327. package/dist/core/computer/motor/platform/macos/backend.js.map +1 -0
  328. package/dist/core/computer/motor/platform/macos/browser.d.ts +7 -0
  329. package/dist/core/computer/motor/platform/macos/browser.d.ts.map +1 -0
  330. package/dist/core/computer/motor/platform/macos/browser.js +101 -0
  331. package/dist/core/computer/motor/platform/macos/browser.js.map +1 -0
  332. package/dist/core/computer/motor/platform/macos/helper-path.mjs +34 -0
  333. package/dist/core/computer/motor/platform/macos/helper.d.ts +32 -0
  334. package/dist/core/computer/motor/platform/macos/helper.d.ts.map +1 -0
  335. package/dist/core/computer/motor/platform/macos/helper.js +277 -0
  336. package/dist/core/computer/motor/platform/macos/helper.js.map +1 -0
  337. package/dist/core/computer/motor/platform/macos/permissions.d.ts +4 -0
  338. package/dist/core/computer/motor/platform/macos/permissions.d.ts.map +1 -0
  339. package/dist/core/computer/motor/platform/macos/permissions.js +118 -0
  340. package/dist/core/computer/motor/platform/macos/permissions.js.map +1 -0
  341. package/dist/core/computer/motor/platform/types.d.ts +263 -0
  342. package/dist/core/computer/motor/platform/types.d.ts.map +1 -0
  343. package/dist/core/computer/motor/platform/types.js +2 -0
  344. package/dist/core/computer/motor/platform/types.js.map +1 -0
  345. package/dist/core/computer/motor/platform/windows/backend.d.ts +3 -0
  346. package/dist/core/computer/motor/platform/windows/backend.d.ts.map +1 -0
  347. package/dist/core/computer/motor/platform/windows/backend.js +163 -0
  348. package/dist/core/computer/motor/platform/windows/backend.js.map +1 -0
  349. package/dist/core/computer/motor/platform/windows/helper.d.ts +18 -0
  350. package/dist/core/computer/motor/platform/windows/helper.d.ts.map +1 -0
  351. package/dist/core/computer/motor/platform/windows/helper.js +174 -0
  352. package/dist/core/computer/motor/platform/windows/helper.js.map +1 -0
  353. package/dist/core/computer/motor/root-selection.d.ts +6 -0
  354. package/dist/core/computer/motor/root-selection.d.ts.map +1 -0
  355. package/dist/core/computer/motor/root-selection.js +28 -0
  356. package/dist/core/computer/motor/root-selection.js.map +1 -0
  357. package/dist/core/computer/motor/runtime.d.ts +50 -0
  358. package/dist/core/computer/motor/runtime.d.ts.map +1 -0
  359. package/dist/core/computer/motor/runtime.js +119 -0
  360. package/dist/core/computer/motor/runtime.js.map +1 -0
  361. package/dist/core/computer/motor/state.d.ts +68 -0
  362. package/dist/core/computer/motor/state.d.ts.map +1 -0
  363. package/dist/core/computer/motor/state.js +100 -0
  364. package/dist/core/computer/motor/state.js.map +1 -0
  365. package/dist/core/computer/motor/view.d.ts +6 -0
  366. package/dist/core/computer/motor/view.d.ts.map +1 -0
  367. package/dist/core/computer/motor/view.js +185 -0
  368. package/dist/core/computer/motor/view.js.map +1 -0
  369. package/dist/core/computer/motor-ada.d.ts +159 -0
  370. package/dist/core/computer/motor-ada.d.ts.map +1 -0
  371. package/dist/core/computer/motor-ada.js +412 -0
  372. package/dist/core/computer/motor-ada.js.map +1 -0
  373. package/dist/core/computer/politica.d.ts +56 -0
  374. package/dist/core/computer/politica.d.ts.map +1 -0
  375. package/dist/core/computer/politica.js +163 -0
  376. package/dist/core/computer/politica.js.map +1 -0
  377. package/dist/core/computer/tools.d.ts +26 -0
  378. package/dist/core/computer/tools.d.ts.map +1 -0
  379. package/dist/core/computer/tools.js +399 -0
  380. package/dist/core/computer/tools.js.map +1 -0
  381. package/dist/core/context-breakdown.d.ts +80 -0
  382. package/dist/core/context-breakdown.d.ts.map +1 -0
  383. package/dist/core/context-breakdown.js +87 -0
  384. package/dist/core/context-breakdown.js.map +1 -0
  385. package/dist/core/credenciales/cliente.d.ts +60 -0
  386. package/dist/core/credenciales/cliente.d.ts.map +1 -0
  387. package/dist/core/credenciales/cliente.js +81 -0
  388. package/dist/core/credenciales/cliente.js.map +1 -0
  389. package/dist/core/credenciales/pool.d.ts +96 -0
  390. package/dist/core/credenciales/pool.d.ts.map +1 -0
  391. package/dist/core/credenciales/pool.js +128 -0
  392. package/dist/core/credenciales/pool.js.map +1 -0
  393. package/dist/core/credenciales/reposo.d.ts +93 -0
  394. package/dist/core/credenciales/reposo.d.ts.map +1 -0
  395. package/dist/core/credenciales/reposo.js +489 -0
  396. package/dist/core/credenciales/reposo.js.map +1 -0
  397. package/dist/core/credenciales/servidor.d.ts +55 -0
  398. package/dist/core/credenciales/servidor.d.ts.map +1 -0
  399. package/dist/core/credenciales/servidor.js +205 -0
  400. package/dist/core/credenciales/servidor.js.map +1 -0
  401. package/dist/core/defaults.d.ts +1 -0
  402. package/dist/core/defaults.d.ts.map +1 -1
  403. package/dist/core/defaults.js +9 -0
  404. package/dist/core/defaults.js.map +1 -1
  405. package/dist/core/descubrimiento/comandos.d.ts +30 -0
  406. package/dist/core/descubrimiento/comandos.d.ts.map +1 -0
  407. package/dist/core/descubrimiento/comandos.js +76 -0
  408. package/dist/core/descubrimiento/comandos.js.map +1 -0
  409. package/dist/core/descubrimiento/mcp.d.ts +42 -0
  410. package/dist/core/descubrimiento/mcp.d.ts.map +1 -0
  411. package/dist/core/descubrimiento/mcp.js +130 -0
  412. package/dist/core/descubrimiento/mcp.js.map +1 -0
  413. package/dist/core/descubrimiento/reglas.d.ts +61 -0
  414. package/dist/core/descubrimiento/reglas.d.ts.map +1 -0
  415. package/dist/core/descubrimiento/reglas.js +134 -0
  416. package/dist/core/descubrimiento/reglas.js.map +1 -0
  417. package/dist/core/descubrimiento/skills.d.ts +57 -0
  418. package/dist/core/descubrimiento/skills.d.ts.map +1 -0
  419. package/dist/core/descubrimiento/skills.js +113 -0
  420. package/dist/core/descubrimiento/skills.js.map +1 -0
  421. package/dist/core/dificultad/clasificador.d.ts +133 -0
  422. package/dist/core/dificultad/clasificador.d.ts.map +1 -0
  423. package/dist/core/dificultad/clasificador.js +288 -0
  424. package/dist/core/dificultad/clasificador.js.map +1 -0
  425. package/dist/core/edicion/diario.d.ts +37 -0
  426. package/dist/core/edicion/diario.d.ts.map +1 -0
  427. package/dist/core/edicion/diario.js +51 -0
  428. package/dist/core/edicion/diario.js.map +1 -0
  429. package/dist/core/edicion/hashline.d.ts +71 -0
  430. package/dist/core/edicion/hashline.d.ts.map +1 -0
  431. package/dist/core/edicion/hashline.js +111 -0
  432. package/dist/core/edicion/hashline.js.map +1 -0
  433. package/dist/core/edicion/hueco.d.ts +64 -0
  434. package/dist/core/edicion/hueco.d.ts.map +1 -0
  435. package/dist/core/edicion/hueco.js +162 -0
  436. package/dist/core/edicion/hueco.js.map +1 -0
  437. package/dist/core/edicion/limpiar-carga.d.ts +39 -0
  438. package/dist/core/edicion/limpiar-carga.d.ts.map +1 -0
  439. package/dist/core/edicion/limpiar-carga.js +121 -0
  440. package/dist/core/edicion/limpiar-carga.js.map +1 -0
  441. package/dist/core/edicion/observador.d.ts +80 -0
  442. package/dist/core/edicion/observador.d.ts.map +1 -0
  443. package/dist/core/edicion/observador.js +183 -0
  444. package/dist/core/edicion/observador.js.map +1 -0
  445. package/dist/core/edicion/parecido.d.ts +53 -0
  446. package/dist/core/edicion/parecido.d.ts.map +1 -0
  447. package/dist/core/edicion/parecido.js +145 -0
  448. package/dist/core/edicion/parecido.js.map +1 -0
  449. package/dist/core/edicion/parseo.d.ts +58 -0
  450. package/dist/core/edicion/parseo.d.ts.map +1 -0
  451. package/dist/core/edicion/parseo.js +124 -0
  452. package/dist/core/edicion/parseo.js.map +1 -0
  453. package/dist/core/edicion/reparacion.d.ts +67 -0
  454. package/dist/core/edicion/reparacion.d.ts.map +1 -0
  455. package/dist/core/edicion/reparacion.js +202 -0
  456. package/dist/core/edicion/reparacion.js.map +1 -0
  457. package/dist/core/edicion/sangria.d.ts +121 -0
  458. package/dist/core/edicion/sangria.d.ts.map +1 -0
  459. package/dist/core/edicion/sangria.js +341 -0
  460. package/dist/core/edicion/sangria.js.map +1 -0
  461. package/dist/core/edicion/tipos.d.ts +58 -0
  462. package/dist/core/edicion/tipos.d.ts.map +1 -0
  463. package/dist/core/edicion/tipos.js +160 -0
  464. package/dist/core/edicion/tipos.js.map +1 -0
  465. package/dist/core/engine-personality.d.ts +12 -0
  466. package/dist/core/engine-personality.d.ts.map +1 -0
  467. package/dist/core/engine-personality.js +53 -0
  468. package/dist/core/engine-personality.js.map +1 -0
  469. package/dist/core/errores/proveedor.d.ts +53 -0
  470. package/dist/core/errores/proveedor.d.ts.map +1 -0
  471. package/dist/core/errores/proveedor.js +191 -0
  472. package/dist/core/errores/proveedor.js.map +1 -0
  473. package/dist/core/estructural/buscar.d.ts +61 -0
  474. package/dist/core/estructural/buscar.d.ts.map +1 -0
  475. package/dist/core/estructural/buscar.js +261 -0
  476. package/dist/core/estructural/buscar.js.map +1 -0
  477. package/dist/core/estructural/editar.d.ts +36 -0
  478. package/dist/core/estructural/editar.d.ts.map +1 -0
  479. package/dist/core/estructural/editar.js +123 -0
  480. package/dist/core/estructural/editar.js.map +1 -0
  481. package/dist/core/estructural/tools.d.ts +11 -0
  482. package/dist/core/estructural/tools.d.ts.map +1 -0
  483. package/dist/core/estructural/tools.js +100 -0
  484. package/dist/core/estructural/tools.js.map +1 -0
  485. package/dist/core/experimental.d.ts.map +1 -1
  486. package/dist/core/experimental.js +10 -1
  487. package/dist/core/experimental.js.map +1 -1
  488. package/dist/core/extensiones/suplantacion.d.ts +49 -0
  489. package/dist/core/extensiones/suplantacion.d.ts.map +1 -0
  490. package/dist/core/extensiones/suplantacion.js +61 -0
  491. package/dist/core/extensiones/suplantacion.js.map +1 -0
  492. package/dist/core/extensiones/vigilancia.d.ts +54 -0
  493. package/dist/core/extensiones/vigilancia.d.ts.map +1 -0
  494. package/dist/core/extensiones/vigilancia.js +217 -0
  495. package/dist/core/extensiones/vigilancia.js.map +1 -0
  496. package/dist/core/extensions/index.d.ts +1 -1
  497. package/dist/core/extensions/index.d.ts.map +1 -1
  498. package/dist/core/extensions/index.js.map +1 -1
  499. package/dist/core/extensions/loader.d.ts.map +1 -1
  500. package/dist/core/extensions/loader.js +21 -6
  501. package/dist/core/extensions/loader.js.map +1 -1
  502. package/dist/core/extensions/types.d.ts +23 -4
  503. package/dist/core/extensions/types.d.ts.map +1 -1
  504. package/dist/core/extensions/types.js.map +1 -1
  505. package/dist/core/harness/fuentes-de-contexto.d.ts +29 -0
  506. package/dist/core/harness/fuentes-de-contexto.d.ts.map +1 -0
  507. package/dist/core/harness/fuentes-de-contexto.js +44 -0
  508. package/dist/core/harness/fuentes-de-contexto.js.map +1 -0
  509. package/dist/core/harness/refine.d.ts +40 -0
  510. package/dist/core/harness/refine.d.ts.map +1 -0
  511. package/dist/core/harness/refine.js +109 -0
  512. package/dist/core/harness/refine.js.map +1 -0
  513. package/dist/core/harness/store.d.ts +75 -0
  514. package/dist/core/harness/store.d.ts.map +1 -0
  515. package/dist/core/harness/store.js +149 -0
  516. package/dist/core/harness/store.js.map +1 -0
  517. package/dist/core/hooks/contract.d.ts +85 -0
  518. package/dist/core/hooks/contract.d.ts.map +1 -0
  519. package/dist/core/hooks/contract.js +140 -0
  520. package/dist/core/hooks/contract.js.map +1 -0
  521. package/dist/core/hooks/runner.d.ts +42 -0
  522. package/dist/core/hooks/runner.d.ts.map +1 -0
  523. package/dist/core/hooks/runner.js +85 -0
  524. package/dist/core/hooks/runner.js.map +1 -0
  525. package/dist/core/hooks/session-hooks.d.ts +62 -0
  526. package/dist/core/hooks/session-hooks.d.ts.map +1 -0
  527. package/dist/core/hooks/session-hooks.js +84 -0
  528. package/dist/core/hooks/session-hooks.js.map +1 -0
  529. package/dist/core/importar/formatos.d.ts +69 -0
  530. package/dist/core/importar/formatos.d.ts.map +1 -0
  531. package/dist/core/importar/formatos.js +235 -0
  532. package/dist/core/importar/formatos.js.map +1 -0
  533. package/dist/core/interactivo/deteccion.d.ts +44 -0
  534. package/dist/core/interactivo/deteccion.d.ts.map +1 -0
  535. package/dist/core/interactivo/deteccion.js +82 -0
  536. package/dist/core/interactivo/deteccion.js.map +1 -0
  537. package/dist/core/interactivo/sesion.d.ts +50 -0
  538. package/dist/core/interactivo/sesion.d.ts.map +1 -0
  539. package/dist/core/interactivo/sesion.js +156 -0
  540. package/dist/core/interactivo/sesion.js.map +1 -0
  541. package/dist/core/interactivo/tools.d.ts +21 -0
  542. package/dist/core/interactivo/tools.d.ts.map +1 -0
  543. package/dist/core/interactivo/tools.js +122 -0
  544. package/dist/core/interactivo/tools.js.map +1 -0
  545. package/dist/core/keybindings.d.ts.map +1 -1
  546. package/dist/core/keybindings.js +2 -1
  547. package/dist/core/keybindings.js.map +1 -1
  548. package/dist/core/lectura/mapa.d.ts +70 -0
  549. package/dist/core/lectura/mapa.d.ts.map +1 -0
  550. package/dist/core/lectura/mapa.js +177 -0
  551. package/dist/core/lectura/mapa.js.map +1 -0
  552. package/dist/core/lectura/pdf.d.ts +49 -0
  553. package/dist/core/lectura/pdf.d.ts.map +1 -0
  554. package/dist/core/lectura/pdf.js +337 -0
  555. package/dist/core/lectura/pdf.js.map +1 -0
  556. package/dist/core/limpieza/comprobadores.d.ts +28 -0
  557. package/dist/core/limpieza/comprobadores.d.ts.map +1 -0
  558. package/dist/core/limpieza/comprobadores.js +311 -0
  559. package/dist/core/limpieza/comprobadores.js.map +1 -0
  560. package/dist/core/limpieza/parseo.d.ts +19 -0
  561. package/dist/core/limpieza/parseo.d.ts.map +1 -0
  562. package/dist/core/limpieza/parseo.js +124 -0
  563. package/dist/core/limpieza/parseo.js.map +1 -0
  564. package/dist/core/limpieza/reparacion.d.ts +77 -0
  565. package/dist/core/limpieza/reparacion.d.ts.map +1 -0
  566. package/dist/core/limpieza/reparacion.js +254 -0
  567. package/dist/core/limpieza/reparacion.js.map +1 -0
  568. package/dist/core/limpieza/tipos.d.ts +56 -0
  569. package/dist/core/limpieza/tipos.d.ts.map +1 -0
  570. package/dist/core/limpieza/tipos.js +9 -0
  571. package/dist/core/limpieza/tipos.js.map +1 -0
  572. package/dist/core/lsp/cliente.d.ts +52 -0
  573. package/dist/core/lsp/cliente.d.ts.map +1 -0
  574. package/dist/core/lsp/cliente.js +232 -0
  575. package/dist/core/lsp/cliente.js.map +1 -0
  576. package/dist/core/lsp/descubrimiento.d.ts +62 -0
  577. package/dist/core/lsp/descubrimiento.d.ts.map +1 -0
  578. package/dist/core/lsp/descubrimiento.js +152 -0
  579. package/dist/core/lsp/descubrimiento.js.map +1 -0
  580. package/dist/core/lsp/ediciones.d.ts +59 -0
  581. package/dist/core/lsp/ediciones.d.ts.map +1 -0
  582. package/dist/core/lsp/ediciones.js +89 -0
  583. package/dist/core/lsp/ediciones.js.map +1 -0
  584. package/dist/core/lsp/extension.d.ts +28 -0
  585. package/dist/core/lsp/extension.d.ts.map +1 -0
  586. package/dist/core/lsp/extension.js +34 -0
  587. package/dist/core/lsp/extension.js.map +1 -0
  588. package/dist/core/lsp/tools.d.ts +45 -0
  589. package/dist/core/lsp/tools.d.ts.map +1 -0
  590. package/dist/core/lsp/tools.js +265 -0
  591. package/dist/core/lsp/tools.js.map +1 -0
  592. package/dist/core/mcp/client.d.ts +60 -0
  593. package/dist/core/mcp/client.d.ts.map +1 -0
  594. package/dist/core/mcp/client.js +139 -0
  595. package/dist/core/mcp/client.js.map +1 -0
  596. package/dist/core/mcp/manager.d.ts +86 -0
  597. package/dist/core/mcp/manager.d.ts.map +1 -0
  598. package/dist/core/mcp/manager.js +124 -0
  599. package/dist/core/mcp/manager.js.map +1 -0
  600. package/dist/core/mcp/tools.d.ts +15 -0
  601. package/dist/core/mcp/tools.d.ts.map +1 -0
  602. package/dist/core/mcp/tools.js +84 -0
  603. package/dist/core/mcp/tools.js.map +1 -0
  604. package/dist/core/memory-engine/audit-export.d.ts +56 -0
  605. package/dist/core/memory-engine/audit-export.d.ts.map +1 -0
  606. package/dist/core/memory-engine/audit-export.js +100 -0
  607. package/dist/core/memory-engine/audit-export.js.map +1 -0
  608. package/dist/core/memory-engine/audit-indice.d.ts +153 -0
  609. package/dist/core/memory-engine/audit-indice.d.ts.map +1 -0
  610. package/dist/core/memory-engine/audit-indice.js +271 -0
  611. package/dist/core/memory-engine/audit-indice.js.map +1 -0
  612. package/dist/core/memory-engine/audit.d.ts +18 -6
  613. package/dist/core/memory-engine/audit.d.ts.map +1 -1
  614. package/dist/core/memory-engine/audit.js +32 -50
  615. package/dist/core/memory-engine/audit.js.map +1 -1
  616. package/dist/core/memory-engine/engine.d.ts +21 -4
  617. package/dist/core/memory-engine/engine.d.ts.map +1 -1
  618. package/dist/core/memory-engine/engine.js +219 -55
  619. package/dist/core/memory-engine/engine.js.map +1 -1
  620. package/dist/core/memory-engine/inverted-index.d.ts.map +1 -1
  621. package/dist/core/memory-engine/inverted-index.js +67 -10
  622. package/dist/core/memory-engine/inverted-index.js.map +1 -1
  623. package/dist/core/memory-engine/keychain.d.ts.map +1 -1
  624. package/dist/core/memory-engine/keychain.js +1 -6
  625. package/dist/core/memory-engine/keychain.js.map +1 -1
  626. package/dist/core/memory-engine/observation-store.d.ts +0 -1
  627. package/dist/core/memory-engine/observation-store.d.ts.map +1 -1
  628. package/dist/core/memory-engine/observation-store.js +40 -12
  629. package/dist/core/memory-engine/observation-store.js.map +1 -1
  630. package/dist/core/memory-engine/refinements.d.ts +51 -0
  631. package/dist/core/memory-engine/refinements.d.ts.map +1 -0
  632. package/dist/core/memory-engine/refinements.js +99 -0
  633. package/dist/core/memory-engine/refinements.js.map +1 -0
  634. package/dist/core/memory-engine/scanner.d.ts.map +1 -1
  635. package/dist/core/memory-engine/scanner.js +25 -5
  636. package/dist/core/memory-engine/scanner.js.map +1 -1
  637. package/dist/core/memory-engine/security.d.ts.map +1 -1
  638. package/dist/core/memory-engine/security.js +131 -23
  639. package/dist/core/memory-engine/security.js.map +1 -1
  640. package/dist/core/memory-engine/session-indexer.d.ts.map +1 -1
  641. package/dist/core/memory-engine/session-indexer.js +8 -2
  642. package/dist/core/memory-engine/session-indexer.js.map +1 -1
  643. package/dist/core/memory-engine/tools.d.ts +2 -2
  644. package/dist/core/memory-engine/tools.d.ts.map +1 -1
  645. package/dist/core/memory-engine/tools.js +41 -8
  646. package/dist/core/memory-engine/tools.js.map +1 -1
  647. package/dist/core/memory-engine/types.d.ts +2 -0
  648. package/dist/core/memory-engine/types.d.ts.map +1 -1
  649. package/dist/core/memory-engine/types.js.map +1 -1
  650. package/dist/core/memory-engine/vault.d.ts.map +1 -1
  651. package/dist/core/memory-engine/vault.js +2 -2
  652. package/dist/core/memory-engine/vault.js.map +1 -1
  653. package/dist/core/model-config.d.ts.map +1 -1
  654. package/dist/core/model-config.js +2 -1
  655. package/dist/core/model-config.js.map +1 -1
  656. package/dist/core/model-resolver.d.ts +1 -0
  657. package/dist/core/model-resolver.d.ts.map +1 -1
  658. package/dist/core/model-resolver.js +19 -7
  659. package/dist/core/model-resolver.js.map +1 -1
  660. package/dist/core/models-store.d.ts.map +1 -1
  661. package/dist/core/models-store.js +2 -1
  662. package/dist/core/models-store.js.map +1 -1
  663. package/dist/core/muestreo-restringido.d.ts +49 -0
  664. package/dist/core/muestreo-restringido.d.ts.map +1 -0
  665. package/dist/core/muestreo-restringido.js +65 -0
  666. package/dist/core/muestreo-restringido.js.map +1 -0
  667. package/dist/core/orphan-process-journal.d.ts +48 -0
  668. package/dist/core/orphan-process-journal.d.ts.map +1 -0
  669. package/dist/core/orphan-process-journal.js +116 -0
  670. package/dist/core/orphan-process-journal.js.map +1 -0
  671. package/dist/core/package-manager.d.ts.map +1 -1
  672. package/dist/core/package-manager.js +11 -6
  673. package/dist/core/package-manager.js.map +1 -1
  674. package/dist/core/pi-manifest.d.ts.map +1 -1
  675. package/dist/core/pi-manifest.js +2 -1
  676. package/dist/core/pi-manifest.js.map +1 -1
  677. package/dist/core/privacidad/categorias-especiales.d.ts +186 -0
  678. package/dist/core/privacidad/categorias-especiales.d.ts.map +1 -0
  679. package/dist/core/privacidad/categorias-especiales.js +745 -0
  680. package/dist/core/privacidad/categorias-especiales.js.map +1 -0
  681. package/dist/core/privacidad/tapar.d.ts +48 -0
  682. package/dist/core/privacidad/tapar.d.ts.map +1 -0
  683. package/dist/core/privacidad/tapar.js +66 -0
  684. package/dist/core/privacidad/tapar.js.map +1 -0
  685. package/dist/core/prompt-cache/diagnostics.d.ts +33 -0
  686. package/dist/core/prompt-cache/diagnostics.d.ts.map +1 -0
  687. package/dist/core/prompt-cache/diagnostics.js +100 -0
  688. package/dist/core/prompt-cache/diagnostics.js.map +1 -0
  689. package/dist/core/prompt-cache/index.d.ts +33 -0
  690. package/dist/core/prompt-cache/index.d.ts.map +1 -0
  691. package/dist/core/prompt-cache/index.js +189 -0
  692. package/dist/core/prompt-cache/index.js.map +1 -0
  693. package/dist/core/prompt-cache/payload.d.ts +58 -0
  694. package/dist/core/prompt-cache/payload.d.ts.map +1 -0
  695. package/dist/core/prompt-cache/payload.js +122 -0
  696. package/dist/core/prompt-cache/payload.js.map +1 -0
  697. package/dist/core/prompt-cache/stabilize.d.ts +65 -0
  698. package/dist/core/prompt-cache/stabilize.d.ts.map +1 -0
  699. package/dist/core/prompt-cache/stabilize.js +137 -0
  700. package/dist/core/prompt-cache/stabilize.js.map +1 -0
  701. package/dist/core/prompt-cache/stats.d.ts +55 -0
  702. package/dist/core/prompt-cache/stats.d.ts.map +1 -0
  703. package/dist/core/prompt-cache/stats.js +158 -0
  704. package/dist/core/prompt-cache/stats.js.map +1 -0
  705. package/dist/core/prompt-eleccion.d.ts +38 -0
  706. package/dist/core/prompt-eleccion.d.ts.map +1 -0
  707. package/dist/core/prompt-eleccion.js +46 -0
  708. package/dist/core/prompt-eleccion.js.map +1 -0
  709. package/dist/core/prompt-optimizer.d.ts +53 -0
  710. package/dist/core/prompt-optimizer.d.ts.map +1 -0
  711. package/dist/core/prompt-optimizer.js +138 -0
  712. package/dist/core/prompt-optimizer.js.map +1 -0
  713. package/dist/core/prompts/montar.d.ts +75 -0
  714. package/dist/core/prompts/montar.d.ts.map +1 -0
  715. package/dist/core/prompts/montar.js +146 -0
  716. package/dist/core/prompts/montar.js.map +1 -0
  717. package/dist/core/prompts/plantilla.d.ts +54 -0
  718. package/dist/core/prompts/plantilla.d.ts.map +1 -0
  719. package/dist/core/prompts/plantilla.js +153 -0
  720. package/dist/core/prompts/plantilla.js.map +1 -0
  721. package/dist/core/prompts/sistema.md +134 -0
  722. package/dist/core/provider-attribution.d.ts +24 -2
  723. package/dist/core/provider-attribution.d.ts.map +1 -1
  724. package/dist/core/provider-attribution.js +24 -42
  725. package/dist/core/provider-attribution.js.map +1 -1
  726. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  727. package/dist/core/remote-catalog-provider.js +2 -1
  728. package/dist/core/remote-catalog-provider.js.map +1 -1
  729. package/dist/core/remoto/destino.d.ts +38 -0
  730. package/dist/core/remoto/destino.d.ts.map +1 -0
  731. package/dist/core/remoto/destino.js +105 -0
  732. package/dist/core/remoto/destino.js.map +1 -0
  733. package/dist/core/remoto/ejecutor.d.ts +59 -0
  734. package/dist/core/remoto/ejecutor.d.ts.map +1 -0
  735. package/dist/core/remoto/ejecutor.js +225 -0
  736. package/dist/core/remoto/ejecutor.js.map +1 -0
  737. package/dist/core/remoto/ficheros.d.ts +29 -0
  738. package/dist/core/remoto/ficheros.d.ts.map +1 -0
  739. package/dist/core/remoto/ficheros.js +90 -0
  740. package/dist/core/remoto/ficheros.js.map +1 -0
  741. package/dist/core/remoto/registro-extension.d.ts +15 -0
  742. package/dist/core/remoto/registro-extension.d.ts.map +1 -0
  743. package/dist/core/remoto/registro-extension.js +17 -0
  744. package/dist/core/remoto/registro-extension.js.map +1 -0
  745. package/dist/core/remoto/tools.d.ts +28 -0
  746. package/dist/core/remoto/tools.d.ts.map +1 -0
  747. package/dist/core/remoto/tools.js +31 -0
  748. package/dist/core/remoto/tools.js.map +1 -0
  749. package/dist/core/resource-loader.d.ts +58 -0
  750. package/dist/core/resource-loader.d.ts.map +1 -1
  751. package/dist/core/resource-loader.js +326 -8
  752. package/dist/core/resource-loader.js.map +1 -1
  753. package/dist/core/revision/hallazgo.d.ts +51 -0
  754. package/dist/core/revision/hallazgo.d.ts.map +1 -0
  755. package/dist/core/revision/hallazgo.js +73 -0
  756. package/dist/core/revision/hallazgo.js.map +1 -0
  757. package/dist/core/revision/revisor.d.ts +81 -0
  758. package/dist/core/revision/revisor.d.ts.map +1 -0
  759. package/dist/core/revision/revisor.js +132 -0
  760. package/dist/core/revision/revisor.js.map +1 -0
  761. package/dist/core/revision/sarif.d.ts +30 -0
  762. package/dist/core/revision/sarif.d.ts.map +1 -0
  763. package/dist/core/revision/sarif.js +83 -0
  764. package/dist/core/revision/sarif.js.map +1 -0
  765. package/dist/core/scheduler/scheduler.d.ts +87 -0
  766. package/dist/core/scheduler/scheduler.d.ts.map +1 -0
  767. package/dist/core/scheduler/scheduler.js +178 -0
  768. package/dist/core/scheduler/scheduler.js.map +1 -0
  769. package/dist/core/sdk.d.ts +8 -0
  770. package/dist/core/sdk.d.ts.map +1 -1
  771. package/dist/core/sdk.js +11 -1
  772. package/dist/core/sdk.js.map +1 -1
  773. package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts +49 -0
  774. package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts.map +1 -0
  775. package/dist/core/sesion/cerrar-llamadas-abiertas.js +77 -0
  776. package/dist/core/sesion/cerrar-llamadas-abiertas.js.map +1 -0
  777. package/dist/core/session-manager.d.ts.map +1 -1
  778. package/dist/core/session-manager.js +2 -1
  779. package/dist/core/session-manager.js.map +1 -1
  780. package/dist/core/settings-diagnostics.d.ts +9 -0
  781. package/dist/core/settings-diagnostics.d.ts.map +1 -0
  782. package/dist/core/settings-diagnostics.js +21 -0
  783. package/dist/core/settings-diagnostics.js.map +1 -0
  784. package/dist/core/settings-manager.d.ts +156 -0
  785. package/dist/core/settings-manager.d.ts.map +1 -1
  786. package/dist/core/settings-manager.js +255 -10
  787. package/dist/core/settings-manager.js.map +1 -1
  788. package/dist/core/skills.d.ts.map +1 -1
  789. package/dist/core/skills.js +51 -33
  790. package/dist/core/skills.js.map +1 -1
  791. package/dist/core/slash-commands.d.ts.map +1 -1
  792. package/dist/core/slash-commands.js +2 -1
  793. package/dist/core/slash-commands.js.map +1 -1
  794. package/dist/core/system-prompt.d.ts +17 -0
  795. package/dist/core/system-prompt.d.ts.map +1 -1
  796. package/dist/core/system-prompt.js +13 -5
  797. package/dist/core/system-prompt.js.map +1 -1
  798. package/dist/core/telemetria/otlp.d.ts +122 -0
  799. package/dist/core/telemetria/otlp.d.ts.map +1 -0
  800. package/dist/core/telemetria/otlp.js +373 -0
  801. package/dist/core/telemetria/otlp.js.map +1 -0
  802. package/dist/core/tools/coercion-argumentos.d.ts +48 -0
  803. package/dist/core/tools/coercion-argumentos.d.ts.map +1 -0
  804. package/dist/core/tools/coercion-argumentos.js +99 -0
  805. package/dist/core/tools/coercion-argumentos.js.map +1 -0
  806. package/dist/core/tools/edit-diff.d.ts +0 -12
  807. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  808. package/dist/core/tools/edit-diff.js +234 -12
  809. package/dist/core/tools/edit-diff.js.map +1 -1
  810. package/dist/core/tools/edit.d.ts.map +1 -1
  811. package/dist/core/tools/edit.js +28 -5
  812. package/dist/core/tools/edit.js.map +1 -1
  813. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  814. package/dist/core/tools/file-mutation-queue.js +5 -0
  815. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  816. package/dist/core/tools/index.d.ts.map +1 -1
  817. package/dist/core/tools/index.js +2 -2
  818. package/dist/core/tools/index.js.map +1 -1
  819. package/dist/core/tools/json-tolerante.d.ts +30 -0
  820. package/dist/core/tools/json-tolerante.d.ts.map +1 -0
  821. package/dist/core/tools/json-tolerante.js +70 -0
  822. package/dist/core/tools/json-tolerante.js.map +1 -0
  823. package/dist/core/tools/project-memory-tool.d.ts.map +1 -1
  824. package/dist/core/tools/project-memory-tool.js +4 -1
  825. package/dist/core/tools/project-memory-tool.js.map +1 -1
  826. package/dist/core/tools/read.d.ts.map +1 -1
  827. package/dist/core/tools/read.js +17 -0
  828. package/dist/core/tools/read.js.map +1 -1
  829. package/dist/core/tools/tool-definition-wrapper.d.ts +14 -1
  830. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  831. package/dist/core/tools/tool-definition-wrapper.js +17 -1
  832. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  833. package/dist/core/trust-manager.d.ts.map +1 -1
  834. package/dist/core/trust-manager.js +2 -1
  835. package/dist/core/trust-manager.js.map +1 -1
  836. package/dist/core/turno-vacio/detectar.d.ts +38 -0
  837. package/dist/core/turno-vacio/detectar.d.ts.map +1 -0
  838. package/dist/core/turno-vacio/detectar.js +66 -0
  839. package/dist/core/turno-vacio/detectar.js.map +1 -0
  840. package/dist/core/undo/journal.d.ts +57 -0
  841. package/dist/core/undo/journal.d.ts.map +1 -0
  842. package/dist/core/undo/journal.js +178 -0
  843. package/dist/core/undo/journal.js.map +1 -0
  844. package/dist/core/urls-internas/auditoria.d.ts +10 -0
  845. package/dist/core/urls-internas/auditoria.d.ts.map +1 -0
  846. package/dist/core/urls-internas/auditoria.js +42 -0
  847. package/dist/core/urls-internas/auditoria.js.map +1 -0
  848. package/dist/core/urls-internas/boveda.d.ts +13 -0
  849. package/dist/core/urls-internas/boveda.d.ts.map +1 -0
  850. package/dist/core/urls-internas/boveda.js +40 -0
  851. package/dist/core/urls-internas/boveda.js.map +1 -0
  852. package/dist/core/urls-internas/lector.d.ts +30 -0
  853. package/dist/core/urls-internas/lector.d.ts.map +1 -0
  854. package/dist/core/urls-internas/lector.js +56 -0
  855. package/dist/core/urls-internas/lector.js.map +1 -0
  856. package/dist/core/urls-internas/memoria.d.ts +11 -0
  857. package/dist/core/urls-internas/memoria.d.ts.map +1 -0
  858. package/dist/core/urls-internas/memoria.js +25 -0
  859. package/dist/core/urls-internas/memoria.js.map +1 -0
  860. package/dist/core/urls-internas/parse.d.ts +28 -0
  861. package/dist/core/urls-internas/parse.d.ts.map +1 -0
  862. package/dist/core/urls-internas/parse.js +32 -0
  863. package/dist/core/urls-internas/parse.js.map +1 -0
  864. package/dist/core/urls-internas/reglas.d.ts +10 -0
  865. package/dist/core/urls-internas/reglas.d.ts.map +1 -0
  866. package/dist/core/urls-internas/reglas.js +31 -0
  867. package/dist/core/urls-internas/reglas.js.map +1 -0
  868. package/dist/core/usage/aggregate.d.ts +68 -0
  869. package/dist/core/usage/aggregate.d.ts.map +1 -0
  870. package/dist/core/usage/aggregate.js +93 -0
  871. package/dist/core/usage/aggregate.js.map +1 -0
  872. package/dist/core/usage/cuota/anthropic.d.ts +10 -0
  873. package/dist/core/usage/cuota/anthropic.d.ts.map +1 -0
  874. package/dist/core/usage/cuota/anthropic.js +63 -0
  875. package/dist/core/usage/cuota/anthropic.js.map +1 -0
  876. package/dist/core/usage/cuota/cache.d.ts +20 -0
  877. package/dist/core/usage/cuota/cache.d.ts.map +1 -0
  878. package/dist/core/usage/cuota/cache.js +36 -0
  879. package/dist/core/usage/cuota/cache.js.map +1 -0
  880. package/dist/core/usage/cuota/github-copilot.d.ts +9 -0
  881. package/dist/core/usage/cuota/github-copilot.d.ts.map +1 -0
  882. package/dist/core/usage/cuota/github-copilot.js +67 -0
  883. package/dist/core/usage/cuota/github-copilot.js.map +1 -0
  884. package/dist/core/usage/cuota/google-gemini.d.ts +9 -0
  885. package/dist/core/usage/cuota/google-gemini.d.ts.map +1 -0
  886. package/dist/core/usage/cuota/google-gemini.js +72 -0
  887. package/dist/core/usage/cuota/google-gemini.js.map +1 -0
  888. package/dist/core/usage/cuota/index.d.ts +25 -0
  889. package/dist/core/usage/cuota/index.d.ts.map +1 -0
  890. package/dist/core/usage/cuota/index.js +50 -0
  891. package/dist/core/usage/cuota/index.js.map +1 -0
  892. package/dist/core/usage/cuota/openai-codex.d.ts +9 -0
  893. package/dist/core/usage/cuota/openai-codex.d.ts.map +1 -0
  894. package/dist/core/usage/cuota/openai-codex.js +59 -0
  895. package/dist/core/usage/cuota/openai-codex.js.map +1 -0
  896. package/dist/core/usage/cuota/openrouter.d.ts +10 -0
  897. package/dist/core/usage/cuota/openrouter.d.ts.map +1 -0
  898. package/dist/core/usage/cuota/openrouter.js +47 -0
  899. package/dist/core/usage/cuota/openrouter.js.map +1 -0
  900. package/dist/core/usage/cuota/tipos.d.ts +50 -0
  901. package/dist/core/usage/cuota/tipos.d.ts.map +1 -0
  902. package/dist/core/usage/cuota/tipos.js +25 -0
  903. package/dist/core/usage/cuota/tipos.js.map +1 -0
  904. package/dist/core/web/busqueda-nativa.d.ts +82 -0
  905. package/dist/core/web/busqueda-nativa.d.ts.map +1 -0
  906. package/dist/core/web/busqueda-nativa.js +163 -0
  907. package/dist/core/web/busqueda-nativa.js.map +1 -0
  908. package/dist/core/web/destino.d.ts +58 -0
  909. package/dist/core/web/destino.d.ts.map +1 -0
  910. package/dist/core/web/destino.js +127 -0
  911. package/dist/core/web/destino.js.map +1 -0
  912. package/dist/core/web/proveedores/brave.d.ts +6 -0
  913. package/dist/core/web/proveedores/brave.d.ts.map +1 -0
  914. package/dist/core/web/proveedores/brave.js +20 -0
  915. package/dist/core/web/proveedores/brave.js.map +1 -0
  916. package/dist/core/web/proveedores/claves.d.ts +19 -0
  917. package/dist/core/web/proveedores/claves.d.ts.map +1 -0
  918. package/dist/core/web/proveedores/claves.js +36 -0
  919. package/dist/core/web/proveedores/claves.js.map +1 -0
  920. package/dist/core/web/proveedores/duckduckgo.d.ts +3 -0
  921. package/dist/core/web/proveedores/duckduckgo.d.ts.map +1 -0
  922. package/dist/core/web/proveedores/duckduckgo.js +109 -0
  923. package/dist/core/web/proveedores/duckduckgo.js.map +1 -0
  924. package/dist/core/web/proveedores/ecosia.d.ts +3 -0
  925. package/dist/core/web/proveedores/ecosia.d.ts.map +1 -0
  926. package/dist/core/web/proveedores/ecosia.js +72 -0
  927. package/dist/core/web/proveedores/ecosia.js.map +1 -0
  928. package/dist/core/web/proveedores/exa.d.ts +6 -0
  929. package/dist/core/web/proveedores/exa.d.ts.map +1 -0
  930. package/dist/core/web/proveedores/exa.js +24 -0
  931. package/dist/core/web/proveedores/exa.js.map +1 -0
  932. package/dist/core/web/proveedores/mojeek.d.ts +3 -0
  933. package/dist/core/web/proveedores/mojeek.d.ts.map +1 -0
  934. package/dist/core/web/proveedores/mojeek.js +65 -0
  935. package/dist/core/web/proveedores/mojeek.js.map +1 -0
  936. package/dist/core/web/proveedores/navegador.d.ts +10 -0
  937. package/dist/core/web/proveedores/navegador.d.ts.map +1 -0
  938. package/dist/core/web/proveedores/navegador.js +13 -0
  939. package/dist/core/web/proveedores/navegador.js.map +1 -0
  940. package/dist/core/web/proveedores/registro.d.ts +43 -0
  941. package/dist/core/web/proveedores/registro.d.ts.map +1 -0
  942. package/dist/core/web/proveedores/registro.js +49 -0
  943. package/dist/core/web/proveedores/registro.js.map +1 -0
  944. package/dist/core/web/proveedores/searxng.d.ts +9 -0
  945. package/dist/core/web/proveedores/searxng.d.ts.map +1 -0
  946. package/dist/core/web/proveedores/searxng.js +17 -0
  947. package/dist/core/web/proveedores/searxng.js.map +1 -0
  948. package/dist/core/web/proveedores/serper.d.ts +9 -0
  949. package/dist/core/web/proveedores/serper.d.ts.map +1 -0
  950. package/dist/core/web/proveedores/serper.js +19 -0
  951. package/dist/core/web/proveedores/serper.js.map +1 -0
  952. package/dist/core/web/proveedores/tavily.d.ts +6 -0
  953. package/dist/core/web/proveedores/tavily.d.ts.map +1 -0
  954. package/dist/core/web/proveedores/tavily.js +19 -0
  955. package/dist/core/web/proveedores/tavily.js.map +1 -0
  956. package/dist/core/web/proveedores/tipos.d.ts +36 -0
  957. package/dist/core/web/proveedores/tipos.d.ts.map +1 -0
  958. package/dist/core/web/proveedores/tipos.js +10 -0
  959. package/dist/core/web/proveedores/tipos.js.map +1 -0
  960. package/dist/core/web/registro-red.d.ts +43 -0
  961. package/dist/core/web/registro-red.d.ts.map +1 -0
  962. package/dist/core/web/registro-red.js +86 -0
  963. package/dist/core/web/registro-red.js.map +1 -0
  964. package/dist/core/web/scrapers/cisa-kev.d.ts +10 -0
  965. package/dist/core/web/scrapers/cisa-kev.d.ts.map +1 -0
  966. package/dist/core/web/scrapers/cisa-kev.js +38 -0
  967. package/dist/core/web/scrapers/cisa-kev.js.map +1 -0
  968. package/dist/core/web/scrapers/crates-io.d.ts +11 -0
  969. package/dist/core/web/scrapers/crates-io.d.ts.map +1 -0
  970. package/dist/core/web/scrapers/crates-io.js +29 -0
  971. package/dist/core/web/scrapers/crates-io.js.map +1 -0
  972. package/dist/core/web/scrapers/docs-rs.d.ts +10 -0
  973. package/dist/core/web/scrapers/docs-rs.d.ts.map +1 -0
  974. package/dist/core/web/scrapers/docs-rs.js +35 -0
  975. package/dist/core/web/scrapers/docs-rs.js.map +1 -0
  976. package/dist/core/web/scrapers/github.d.ts +3 -0
  977. package/dist/core/web/scrapers/github.d.ts.map +1 -0
  978. package/dist/core/web/scrapers/github.js +72 -0
  979. package/dist/core/web/scrapers/github.js.map +1 -0
  980. package/dist/core/web/scrapers/go-pkg.d.ts +7 -0
  981. package/dist/core/web/scrapers/go-pkg.d.ts.map +1 -0
  982. package/dist/core/web/scrapers/go-pkg.js +30 -0
  983. package/dist/core/web/scrapers/go-pkg.js.map +1 -0
  984. package/dist/core/web/scrapers/hex.d.ts +6 -0
  985. package/dist/core/web/scrapers/hex.d.ts.map +1 -0
  986. package/dist/core/web/scrapers/hex.js +27 -0
  987. package/dist/core/web/scrapers/hex.js.map +1 -0
  988. package/dist/core/web/scrapers/maven.d.ts +8 -0
  989. package/dist/core/web/scrapers/maven.d.ts.map +1 -0
  990. package/dist/core/web/scrapers/maven.js +41 -0
  991. package/dist/core/web/scrapers/maven.js.map +1 -0
  992. package/dist/core/web/scrapers/mdn.d.ts +6 -0
  993. package/dist/core/web/scrapers/mdn.d.ts.map +1 -0
  994. package/dist/core/web/scrapers/mdn.js +28 -0
  995. package/dist/core/web/scrapers/mdn.js.map +1 -0
  996. package/dist/core/web/scrapers/npm.d.ts +11 -0
  997. package/dist/core/web/scrapers/npm.d.ts.map +1 -0
  998. package/dist/core/web/scrapers/npm.js +57 -0
  999. package/dist/core/web/scrapers/npm.js.map +1 -0
  1000. package/dist/core/web/scrapers/nuget.d.ts +8 -0
  1001. package/dist/core/web/scrapers/nuget.d.ts.map +1 -0
  1002. package/dist/core/web/scrapers/nuget.js +22 -0
  1003. package/dist/core/web/scrapers/nuget.js.map +1 -0
  1004. package/dist/core/web/scrapers/nvd.d.ts +7 -0
  1005. package/dist/core/web/scrapers/nvd.d.ts.map +1 -0
  1006. package/dist/core/web/scrapers/nvd.js +37 -0
  1007. package/dist/core/web/scrapers/nvd.js.map +1 -0
  1008. package/dist/core/web/scrapers/pypi.d.ts +6 -0
  1009. package/dist/core/web/scrapers/pypi.d.ts.map +1 -0
  1010. package/dist/core/web/scrapers/pypi.js +31 -0
  1011. package/dist/core/web/scrapers/pypi.js.map +1 -0
  1012. package/dist/core/web/scrapers/registro.d.ts +13 -0
  1013. package/dist/core/web/scrapers/registro.d.ts.map +1 -0
  1014. package/dist/core/web/scrapers/registro.js +65 -0
  1015. package/dist/core/web/scrapers/registro.js.map +1 -0
  1016. package/dist/core/web/scrapers/rubygems.d.ts +6 -0
  1017. package/dist/core/web/scrapers/rubygems.d.ts.map +1 -0
  1018. package/dist/core/web/scrapers/rubygems.js +23 -0
  1019. package/dist/core/web/scrapers/rubygems.js.map +1 -0
  1020. package/dist/core/web/scrapers/stackoverflow.d.ts +3 -0
  1021. package/dist/core/web/scrapers/stackoverflow.d.ts.map +1 -0
  1022. package/dist/core/web/scrapers/stackoverflow.js +46 -0
  1023. package/dist/core/web/scrapers/stackoverflow.js.map +1 -0
  1024. package/dist/core/web/scrapers/tipos.d.ts +42 -0
  1025. package/dist/core/web/scrapers/tipos.d.ts.map +1 -0
  1026. package/dist/core/web/scrapers/tipos.js +23 -0
  1027. package/dist/core/web/scrapers/tipos.js.map +1 -0
  1028. package/dist/core/web/texto.d.ts +10 -0
  1029. package/dist/core/web/texto.d.ts.map +1 -0
  1030. package/dist/core/web/texto.js +26 -0
  1031. package/dist/core/web/texto.js.map +1 -0
  1032. package/dist/core/web/tools.d.ts +91 -0
  1033. package/dist/core/web/tools.d.ts.map +1 -0
  1034. package/dist/core/web/tools.js +304 -0
  1035. package/dist/core/web/tools.js.map +1 -0
  1036. package/dist/core/wiki/almacen.d.ts +33 -0
  1037. package/dist/core/wiki/almacen.d.ts.map +1 -0
  1038. package/dist/core/wiki/almacen.js +93 -0
  1039. package/dist/core/wiki/almacen.js.map +1 -0
  1040. package/dist/core/wiki/citas.d.ts +111 -0
  1041. package/dist/core/wiki/citas.d.ts.map +1 -0
  1042. package/dist/core/wiki/citas.js +146 -0
  1043. package/dist/core/wiki/citas.js.map +1 -0
  1044. package/dist/core/workflows/agent-runner.d.ts +88 -0
  1045. package/dist/core/workflows/agent-runner.d.ts.map +1 -0
  1046. package/dist/core/workflows/agent-runner.js +312 -0
  1047. package/dist/core/workflows/agent-runner.js.map +1 -0
  1048. package/dist/core/workflows/builtins.d.ts +41 -0
  1049. package/dist/core/workflows/builtins.d.ts.map +1 -0
  1050. package/dist/core/workflows/builtins.js +283 -0
  1051. package/dist/core/workflows/builtins.js.map +1 -0
  1052. package/dist/core/workflows/contrato/esquema.d.ts +32 -0
  1053. package/dist/core/workflows/contrato/esquema.d.ts.map +1 -0
  1054. package/dist/core/workflows/contrato/esquema.js +25 -0
  1055. package/dist/core/workflows/contrato/esquema.js.map +1 -0
  1056. package/dist/core/workflows/contrato/reparar-argumentos.d.ts +69 -0
  1057. package/dist/core/workflows/contrato/reparar-argumentos.d.ts.map +1 -0
  1058. package/dist/core/workflows/contrato/reparar-argumentos.js +117 -0
  1059. package/dist/core/workflows/contrato/reparar-argumentos.js.map +1 -0
  1060. package/dist/core/workflows/contrato/validador.d.ts +30 -0
  1061. package/dist/core/workflows/contrato/validador.d.ts.map +1 -0
  1062. package/dist/core/workflows/contrato/validador.js +56 -0
  1063. package/dist/core/workflows/contrato/validador.js.map +1 -0
  1064. package/dist/core/workflows/contrato/yield.d.ts +65 -0
  1065. package/dist/core/workflows/contrato/yield.d.ts.map +1 -0
  1066. package/dist/core/workflows/contrato/yield.js +80 -0
  1067. package/dist/core/workflows/contrato/yield.js.map +1 -0
  1068. package/dist/core/workflows/goal-engine/engine.d.ts +151 -0
  1069. package/dist/core/workflows/goal-engine/engine.d.ts.map +1 -0
  1070. package/dist/core/workflows/goal-engine/engine.js +503 -0
  1071. package/dist/core/workflows/goal-engine/engine.js.map +1 -0
  1072. package/dist/core/workflows/goal-engine/errors.d.ts +7 -0
  1073. package/dist/core/workflows/goal-engine/errors.d.ts.map +1 -0
  1074. package/dist/core/workflows/goal-engine/errors.js +9 -0
  1075. package/dist/core/workflows/goal-engine/errors.js.map +1 -0
  1076. package/dist/core/workflows/goal-engine/index.d.ts +13 -0
  1077. package/dist/core/workflows/goal-engine/index.d.ts.map +1 -0
  1078. package/dist/core/workflows/goal-engine/index.js +8 -0
  1079. package/dist/core/workflows/goal-engine/index.js.map +1 -0
  1080. package/dist/core/workflows/goal-engine/persistence.d.ts +31 -0
  1081. package/dist/core/workflows/goal-engine/persistence.d.ts.map +1 -0
  1082. package/dist/core/workflows/goal-engine/persistence.js +145 -0
  1083. package/dist/core/workflows/goal-engine/persistence.js.map +1 -0
  1084. package/dist/core/workflows/goal-engine/prompts.d.ts +37 -0
  1085. package/dist/core/workflows/goal-engine/prompts.d.ts.map +1 -0
  1086. package/dist/core/workflows/goal-engine/prompts.js +131 -0
  1087. package/dist/core/workflows/goal-engine/prompts.js.map +1 -0
  1088. package/dist/core/workflows/goal-engine/state.d.ts +41 -0
  1089. package/dist/core/workflows/goal-engine/state.d.ts.map +1 -0
  1090. package/dist/core/workflows/goal-engine/state.js +397 -0
  1091. package/dist/core/workflows/goal-engine/state.js.map +1 -0
  1092. package/dist/core/workflows/goal-engine/tools.d.ts +31 -0
  1093. package/dist/core/workflows/goal-engine/tools.d.ts.map +1 -0
  1094. package/dist/core/workflows/goal-engine/tools.js +211 -0
  1095. package/dist/core/workflows/goal-engine/tools.js.map +1 -0
  1096. package/dist/core/workflows/goal-engine/types.d.ts +286 -0
  1097. package/dist/core/workflows/goal-engine/types.d.ts.map +1 -0
  1098. package/dist/core/workflows/goal-engine/types.js +17 -0
  1099. package/dist/core/workflows/goal-engine/types.js.map +1 -0
  1100. package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts +23 -0
  1101. package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts.map +1 -0
  1102. package/dist/core/workflows/goal-engine/worktree-fingerprint.js +72 -0
  1103. package/dist/core/workflows/goal-engine/worktree-fingerprint.js.map +1 -0
  1104. package/dist/core/workflows/graph-sync.d.ts +67 -0
  1105. package/dist/core/workflows/graph-sync.d.ts.map +1 -0
  1106. package/dist/core/workflows/graph-sync.js +188 -0
  1107. package/dist/core/workflows/graph-sync.js.map +1 -0
  1108. package/dist/core/workflows/graph.d.ts +143 -0
  1109. package/dist/core/workflows/graph.d.ts.map +1 -0
  1110. package/dist/core/workflows/graph.js +319 -0
  1111. package/dist/core/workflows/graph.js.map +1 -0
  1112. package/dist/core/workflows/index.d.ts +26 -0
  1113. package/dist/core/workflows/index.d.ts.map +1 -0
  1114. package/dist/core/workflows/index.js +18 -0
  1115. package/dist/core/workflows/index.js.map +1 -0
  1116. package/dist/core/workflows/journal.d.ts +68 -0
  1117. package/dist/core/workflows/journal.d.ts.map +1 -0
  1118. package/dist/core/workflows/journal.js +83 -0
  1119. package/dist/core/workflows/journal.js.map +1 -0
  1120. package/dist/core/workflows/manager.d.ts +122 -0
  1121. package/dist/core/workflows/manager.d.ts.map +1 -0
  1122. package/dist/core/workflows/manager.js +351 -0
  1123. package/dist/core/workflows/manager.js.map +1 -0
  1124. package/dist/core/workflows/resolve-script.d.ts +35 -0
  1125. package/dist/core/workflows/resolve-script.d.ts.map +1 -0
  1126. package/dist/core/workflows/resolve-script.js +66 -0
  1127. package/dist/core/workflows/resolve-script.js.map +1 -0
  1128. package/dist/core/workflows/runtime.d.ts +62 -0
  1129. package/dist/core/workflows/runtime.d.ts.map +1 -0
  1130. package/dist/core/workflows/runtime.js +380 -0
  1131. package/dist/core/workflows/runtime.js.map +1 -0
  1132. package/dist/core/workflows/save-as-skill.d.ts +27 -0
  1133. package/dist/core/workflows/save-as-skill.d.ts.map +1 -0
  1134. package/dist/core/workflows/save-as-skill.js +54 -0
  1135. package/dist/core/workflows/save-as-skill.js.map +1 -0
  1136. package/dist/core/workflows/shared-store.d.ts +31 -0
  1137. package/dist/core/workflows/shared-store.d.ts.map +1 -0
  1138. package/dist/core/workflows/shared-store.js +80 -0
  1139. package/dist/core/workflows/shared-store.js.map +1 -0
  1140. package/dist/core/workflows/subagent-host.d.ts +50 -0
  1141. package/dist/core/workflows/subagent-host.d.ts.map +1 -0
  1142. package/dist/core/workflows/subagent-host.js +225 -0
  1143. package/dist/core/workflows/subagent-host.js.map +1 -0
  1144. package/dist/core/workflows/tool-workflow.d.ts +22 -0
  1145. package/dist/core/workflows/tool-workflow.d.ts.map +1 -0
  1146. package/dist/core/workflows/tool-workflow.js +120 -0
  1147. package/dist/core/workflows/tool-workflow.js.map +1 -0
  1148. package/dist/core/workflows/types.d.ts +191 -0
  1149. package/dist/core/workflows/types.d.ts.map +1 -0
  1150. package/dist/core/workflows/types.js +26 -0
  1151. package/dist/core/workflows/types.js.map +1 -0
  1152. package/dist/core/workflows/worktree.d.ts +42 -0
  1153. package/dist/core/workflows/worktree.d.ts.map +1 -0
  1154. package/dist/core/workflows/worktree.js +107 -0
  1155. package/dist/core/workflows/worktree.js.map +1 -0
  1156. package/dist/extensions/llama/index.d.ts.map +1 -1
  1157. package/dist/extensions/llama/index.js +2 -0
  1158. package/dist/extensions/llama/index.js.map +1 -1
  1159. package/dist/extensions/llama/provider.d.ts.map +1 -1
  1160. package/dist/extensions/llama/provider.js +6 -2
  1161. package/dist/extensions/llama/provider.js.map +1 -1
  1162. package/dist/extensions/remoto/index.d.ts +22 -0
  1163. package/dist/extensions/remoto/index.d.ts.map +1 -0
  1164. package/dist/extensions/remoto/index.js +54 -0
  1165. package/dist/extensions/remoto/index.js.map +1 -0
  1166. package/dist/index.d.ts +1 -13
  1167. package/dist/index.d.ts.map +1 -1
  1168. package/dist/index.js +7 -13
  1169. package/dist/index.js.map +1 -1
  1170. package/dist/main.d.ts +4 -0
  1171. package/dist/main.d.ts.map +1 -1
  1172. package/dist/main.js +26 -15
  1173. package/dist/main.js.map +1 -1
  1174. package/dist/migrations.d.ts.map +1 -1
  1175. package/dist/migrations.js +4 -3
  1176. package/dist/migrations.js.map +1 -1
  1177. package/dist/modes/acp/acp-mode.d.ts +42 -0
  1178. package/dist/modes/acp/acp-mode.d.ts.map +1 -0
  1179. package/dist/modes/acp/acp-mode.js +190 -0
  1180. package/dist/modes/acp/acp-mode.js.map +1 -0
  1181. package/dist/modes/acp/events.d.ts +74 -0
  1182. package/dist/modes/acp/events.d.ts.map +1 -0
  1183. package/dist/modes/acp/events.js +116 -0
  1184. package/dist/modes/acp/events.js.map +1 -0
  1185. package/dist/modes/interactive/components/home-screen.d.ts.map +1 -1
  1186. package/dist/modes/interactive/components/home-screen.js +2 -2
  1187. package/dist/modes/interactive/components/home-screen.js.map +1 -1
  1188. package/dist/modes/interactive/components/model-selector.d.ts +9 -3
  1189. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  1190. package/dist/modes/interactive/components/model-selector.js +56 -12
  1191. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  1192. package/dist/modes/interactive/components/prompt-optimization.d.ts +16 -0
  1193. package/dist/modes/interactive/components/prompt-optimization.d.ts.map +1 -0
  1194. package/dist/modes/interactive/components/prompt-optimization.js +46 -0
  1195. package/dist/modes/interactive/components/prompt-optimization.js.map +1 -0
  1196. package/dist/modes/interactive/components/settings-selector.d.ts +19 -2
  1197. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  1198. package/dist/modes/interactive/components/settings-selector.js +180 -56
  1199. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  1200. package/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
  1201. package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
  1202. package/dist/modes/interactive/components/settings-submenu.js +165 -0
  1203. package/dist/modes/interactive/components/settings-submenu.js.map +1 -0
  1204. package/dist/modes/interactive/components/thinking-selector.d.ts +15 -3
  1205. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  1206. package/dist/modes/interactive/components/thinking-selector.js +74 -17
  1207. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  1208. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  1209. package/dist/modes/interactive/external-editor.js +2 -1
  1210. package/dist/modes/interactive/external-editor.js.map +1 -1
  1211. package/dist/modes/interactive/interactive-mode.d.ts +21 -1
  1212. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  1213. package/dist/modes/interactive/interactive-mode.js +709 -75
  1214. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  1215. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  1216. package/dist/modes/interactive/theme/theme.js +4 -3
  1217. package/dist/modes/interactive/theme/theme.js.map +1 -1
  1218. package/dist/modes/json-event.d.ts +16 -13
  1219. package/dist/modes/json-event.d.ts.map +1 -1
  1220. package/dist/modes/json-event.js +20 -6
  1221. package/dist/modes/json-event.js.map +1 -1
  1222. package/dist/modes/print-mode.d.ts.map +1 -1
  1223. package/dist/modes/print-mode.js +11 -0
  1224. package/dist/modes/print-mode.js.map +1 -1
  1225. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  1226. package/dist/modes/rpc/rpc-mode.js +173 -0
  1227. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  1228. package/dist/modes/rpc/rpc-types.d.ts +29 -0
  1229. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  1230. package/dist/modes/rpc/rpc-types.js.map +1 -1
  1231. package/dist/package-manager-cli.d.ts.map +1 -1
  1232. package/dist/package-manager-cli.js +27 -5
  1233. package/dist/package-manager-cli.js.map +1 -1
  1234. package/dist/server/attach.d.ts +56 -0
  1235. package/dist/server/attach.d.ts.map +1 -0
  1236. package/dist/server/attach.js +130 -0
  1237. package/dist/server/attach.js.map +1 -0
  1238. package/dist/server/extension-ops.d.ts +40 -0
  1239. package/dist/server/extension-ops.d.ts.map +1 -0
  1240. package/dist/server/extension-ops.js +146 -0
  1241. package/dist/server/extension-ops.js.map +1 -0
  1242. package/dist/server/pi-server-service.d.ts +85 -0
  1243. package/dist/server/pi-server-service.d.ts.map +1 -0
  1244. package/dist/server/pi-server-service.js +213 -0
  1245. package/dist/server/pi-server-service.js.map +1 -0
  1246. package/dist/server/scheduler-tick.d.ts +32 -0
  1247. package/dist/server/scheduler-tick.d.ts.map +1 -0
  1248. package/dist/server/scheduler-tick.js +47 -0
  1249. package/dist/server/scheduler-tick.js.map +1 -0
  1250. package/dist/server/serve.d.ts +25 -0
  1251. package/dist/server/serve.d.ts.map +1 -0
  1252. package/dist/server/serve.js +83 -0
  1253. package/dist/server/serve.js.map +1 -0
  1254. package/dist/server/transcript.d.ts +38 -0
  1255. package/dist/server/transcript.d.ts.map +1 -0
  1256. package/dist/server/transcript.js +176 -0
  1257. package/dist/server/transcript.js.map +1 -0
  1258. package/dist/skills/ada-engine/SKILL.md +153 -0
  1259. package/dist/skills/skill-creator/SKILL.md +90 -0
  1260. package/dist/telegram/api.d.ts +75 -0
  1261. package/dist/telegram/api.d.ts.map +1 -0
  1262. package/dist/telegram/api.js +104 -0
  1263. package/dist/telegram/api.js.map +1 -0
  1264. package/dist/telegram/bridge.d.ts +85 -0
  1265. package/dist/telegram/bridge.d.ts.map +1 -0
  1266. package/dist/telegram/bridge.js +182 -0
  1267. package/dist/telegram/bridge.js.map +1 -0
  1268. package/dist/telegram/journal.d.ts +67 -0
  1269. package/dist/telegram/journal.d.ts.map +1 -0
  1270. package/dist/telegram/journal.js +119 -0
  1271. package/dist/telegram/journal.js.map +1 -0
  1272. package/dist/telegram/servidor.d.ts +15 -0
  1273. package/dist/telegram/servidor.d.ts.map +1 -0
  1274. package/dist/telegram/servidor.js +74 -0
  1275. package/dist/telegram/servidor.js.map +1 -0
  1276. package/dist/utils/frontmatter.d.ts.map +1 -1
  1277. package/dist/utils/frontmatter.js +2 -1
  1278. package/dist/utils/frontmatter.js.map +1 -1
  1279. package/dist/utils/management-http.d.ts +5 -3
  1280. package/dist/utils/management-http.d.ts.map +1 -1
  1281. package/dist/utils/management-http.js +14 -10
  1282. package/dist/utils/management-http.js.map +1 -1
  1283. package/dist/utils/shell.d.ts +11 -0
  1284. package/dist/utils/shell.d.ts.map +1 -1
  1285. package/dist/utils/shell.js +11 -0
  1286. package/dist/utils/shell.js.map +1 -1
  1287. package/dist/utils/text.d.ts +8 -0
  1288. package/dist/utils/text.d.ts.map +1 -0
  1289. package/dist/utils/text.js +9 -0
  1290. package/dist/utils/text.js.map +1 -0
  1291. package/dist/utils/version-check.d.ts.map +1 -1
  1292. package/dist/utils/version-check.js +29 -1
  1293. package/dist/utils/version-check.js.map +1 -1
  1294. package/docs/compaction.md +25 -10
  1295. package/docs/compliance.md +241 -0
  1296. package/docs/containerization.md +24 -24
  1297. package/docs/custom-provider.md +15 -12
  1298. package/docs/development.md +47 -10
  1299. package/docs/docs.json +14 -2
  1300. package/docs/environment-variables.md +20 -17
  1301. package/docs/extensions.md +62 -51
  1302. package/docs/index.md +15 -21
  1303. package/docs/json.md +10 -5
  1304. package/docs/keybindings.md +5 -5
  1305. package/docs/llama-cpp.md +9 -7
  1306. package/docs/models.md +18 -12
  1307. package/docs/packages.md +45 -45
  1308. package/docs/prompt-templates.md +5 -5
  1309. package/docs/providers.md +12 -12
  1310. package/docs/quickstart.md +39 -39
  1311. package/docs/rpc.md +21 -15
  1312. package/docs/sdk.md +38 -38
  1313. package/docs/security.md +26 -21
  1314. package/docs/session-format.md +7 -7
  1315. package/docs/sessions.md +14 -14
  1316. package/docs/settings.md +47 -22
  1317. package/docs/shell-aliases.md +2 -2
  1318. package/docs/skills.md +14 -13
  1319. package/docs/terminal-setup.md +14 -14
  1320. package/docs/termux.md +7 -7
  1321. package/docs/themes.md +11 -11
  1322. package/docs/tmux.md +4 -4
  1323. package/docs/tui.md +3 -3
  1324. package/docs/usage.md +54 -54
  1325. package/docs/windows.md +2 -2
  1326. package/examples/extensions/border-status-editor.ts +1 -1
  1327. package/examples/extensions/git-checkpoint.ts +2 -2
  1328. package/examples/extensions/notify.ts +3 -1
  1329. package/examples/extensions/subagent/README.md +1 -1
  1330. package/examples/extensions/subagent/index.ts +6 -1
  1331. package/examples/extensions/titlebar-spinner.ts +1 -1
  1332. package/examples/rpc-extension-ui.ts +1 -1
  1333. package/examples/sdk/06-extensions.ts +1 -1
  1334. package/examples/sdk/12-full-control.ts +9 -0
  1335. package/examples/sdk/README.md +1 -1
  1336. package/npm-shrinkwrap.json +35 -261
  1337. package/package.json +9 -3
@@ -0,0 +1,520 @@
1
+ /**
2
+ * Banco de CARGAS MAL FORMADAS contra el motor de edición. Sin modelo.
3
+ *
4
+ * POR QUÉ HACE FALTA OTRO BANCO. `core/banco/` mide si el MODELO encuentra y
5
+ * arregla un bug: llama a un proveedor de verdad, cuesta dinero y, sobre todo,
6
+ * mide al modelo. Hoy quedó demostrado de la peor manera: con
7
+ * `opencode/x-preview-f-free` la línea base salió 37,5% de acierto y 62,5% de
8
+ * «fantasmas», y con `opencode/hy3-free` los MISMOS casos dieron 100% y 0%. Ese
9
+ * 37,5% no medía a Ada; medía un proveedor que devuelve respuestas vacías.
10
+ *
11
+ * Este banco mide LO NUESTRO: dado un `oldText` con los errores que los modelos
12
+ * cometen de verdad, ¿entra la edición y entra BIEN? Es determinista, no cuesta
13
+ * nada y sirve de puerta.
14
+ *
15
+ * LA MÉTRICA, que es la decisión de diseño importante.
16
+ *
17
+ * Lo natural sería contar «cuántas aplica», y sería un error. Medido sobre
18
+ * oh-my-pi: de 14 cargas aplica 10 y **tres de esas diez corrompen** —una
19
+ * inyecta un error de sintaxis y dos estropean la sangría—. Un motor más
20
+ * permisivo no es mejor: es más peligroso, porque un rechazo cuesta un turno y
21
+ * una corrupción silenciosa cuesta un fichero.
22
+ *
23
+ * Por eso hay TRES resultados y no dos:
24
+ *
25
+ * correcto la edición entra y el fichero queda como debía
26
+ * corrupto la edición entra y el fichero queda MAL ← el peor de los tres
27
+ * rechazado la edición no entra
28
+ *
29
+ * `corrupto` cuenta como peor que `rechazado` a propósito. Es la misma
30
+ * distinción que aplicamos en todo el repositorio: un fallo que se lee como
31
+ * éxito es más caro que un fallo que se ve.
32
+ */
33
+ import { applyEditsToNormalizedContent } from "../tools/edit-diff.js";
34
+ const TABS = [
35
+ "export function servir(puerto: number) {",
36
+ "\tconst app = express();",
37
+ "\tapp.listen(puerto);",
38
+ "}",
39
+ "",
40
+ ].join("\n");
41
+ const TABS_OK = [
42
+ "export function servir(puerto: number) {",
43
+ "\tconst app = express();",
44
+ "\tapp.listen(PUERTO);",
45
+ "}",
46
+ "",
47
+ ].join("\n");
48
+ const ESPACIOS = [
49
+ "function total(items: Item[]) {",
50
+ " let suma = 0;",
51
+ " for (const it of items) {",
52
+ " suma += it.precio;",
53
+ " }",
54
+ " return suma;",
55
+ "}",
56
+ "",
57
+ ].join("\n");
58
+ const REPETIDO = ["let total = 0;", "suma(a);", "let total = 0;", "suma(b);", ""].join("\n");
59
+ /**
60
+ * Dos líneas que son distintas al recortarlas y la MISMA al colapsar el
61
+ * espaciado interior. Existe para vigilar el camino que recupera
62
+ * `espaciado-interno`.
63
+ */
64
+ const ESPACIADO_REPETIDO = [
65
+ "const paso = calcular(1);",
66
+ "let x = 1;",
67
+ "const otro = calcular(2);",
68
+ "let x = 1;",
69
+ "",
70
+ ].join("\n");
71
+ /**
72
+ * Un doble espacio DENTRO de una cadena, que es espaciado con significado.
73
+ *
74
+ * Existe porque casar colapsando espacios abre la puerta a escribirlos
75
+ * colapsados: el modelo retipea esta línea con un espacio solo, sin intención de
76
+ * tocarla, mientras cambia la de abajo.
77
+ */
78
+ const CADENA_CON_DOS_ESPACIOS = ["function saludo() {", ' const s = "a b";', " return s;", "}", ""].join("\n");
79
+ /**
80
+ * Un fichero de tabuladores con un doble espacio INTERIOR, para el caso en que
81
+ * colapsar ese espacio es exactamente lo que el modelo pide.
82
+ */
83
+ const TABS_CON_DOS_ESPACIOS = [
84
+ "export function servir(puerto: number) {",
85
+ "\tconst app = express();",
86
+ "\tapp.listen(puerto);",
87
+ "}",
88
+ "",
89
+ ].join("\n");
90
+ /**
91
+ * Comillas tipográficas y espacios al final, que es lo que hace falta para
92
+ * ejercitar el empalme del camino DIFUSO.
93
+ *
94
+ * La línea 1 solo casa tras normalizar, así que enciende ese camino para todo el
95
+ * lote. La línea 2 se edita por dentro y lleva comillas tipográficas que nadie
96
+ * ha pedido tocar y tres espacios al final, que son los dos sitios donde el
97
+ * empalme se ha roto de verdad.
98
+ */
99
+ const TIPOGRAFICO = [
100
+ "const uno = “a”;",
101
+ 'const msg = "el “titulo” va aqui" + compute(1); ',
102
+ "const fin = 1;",
103
+ "",
104
+ ].join("\n");
105
+ const TIPOGRAFICO_OK = [
106
+ 'const uno = "b";',
107
+ 'const msg = "el “titulo” va aqui" + compute(2); ',
108
+ "const fin = 1;",
109
+ "",
110
+ ].join("\n");
111
+ /**
112
+ * Dos funciones seguidas: el `}` de la columna cero de la segunda vuelve
113
+ * ambigua el ancla de CIERRE de la primera. Es la forma de fichero más normal
114
+ * que existe y mide el alcance real de la elisión.
115
+ */
116
+ const DOS_FUNCIONES = ["function a() {", "\tuno();", "}", "", "function b() {", "\tdos();", "}", ""].join("\n");
117
+ /** Dos funciones idénticas: el ancla de apertura casa en los dos sitios. */
118
+ const DOS_IGUALES = [
119
+ "function envolver() {",
120
+ "\tinicio();",
121
+ "\tfin();",
122
+ "}",
123
+ "function envolver() {",
124
+ "\tinicio();",
125
+ "\tfin();",
126
+ "}",
127
+ "",
128
+ ].join("\n");
129
+ /**
130
+ * El corpus. Cada caso es un error que un modelo comete DE VERDAD.
131
+ *
132
+ * No están inventados: salen de la comparación motor contra motor de oh-my-pi y
133
+ * de la sonda de nueve casos que se ejecutó sobre este repositorio.
134
+ */
135
+ export const CARGAS = [
136
+ {
137
+ // El modelo retipea el contexto y se equivoca en una letra. omp lo aplica
138
+ // y ESCRIBE la errata: su fichero acaba con `item`, que no existe, y no
139
+ // compila. Nosotros casamos por parecido y escribimos la versión del
140
+ // FICHERO en las líneas que el modelo solo estaba citando.
141
+ id: "errata-en-el-contexto",
142
+ error: "el modelo retipea una línea de contexto con una errata (items → item)",
143
+ fichero: [
144
+ "function total(items) {",
145
+ " let suma = 0;",
146
+ " for (const it of items) {",
147
+ " suma += it.precio;",
148
+ " }",
149
+ " return suma;",
150
+ "}",
151
+ "",
152
+ ].join("\n"),
153
+ ediciones: [
154
+ {
155
+ oldText: " for (const it of item) {\n suma += it.precio;\n }",
156
+ newText: " for (const it of item) {\n suma += it.precio * it.cantidad;\n }",
157
+ },
158
+ ],
159
+ esperado: "aplica",
160
+ resultado: [
161
+ "function total(items) {",
162
+ " let suma = 0;",
163
+ " for (const it of items) {",
164
+ " suma += it.precio;",
165
+ " }",
166
+ " return suma;",
167
+ "}",
168
+ "",
169
+ ]
170
+ .join("\n")
171
+ .replace("suma += it.precio;", "suma += it.precio * it.cantidad;"),
172
+ },
173
+ {
174
+ // La puerta de DOMINANCIA. Dos bloques casi idénticos: el patrón con
175
+ // errata se parece a los dos, así que no sabemos cuál quería. Elegir por
176
+ // el modelo es peor que rechazar.
177
+ id: "parecido-ambiguo",
178
+ error: "un patrón con errata que se parece igual a DOS bloques distintos",
179
+ fichero: [
180
+ "function a() {",
181
+ " const valor = calcular(1);",
182
+ " return valor;",
183
+ "}",
184
+ "function b() {",
185
+ " const valor = calcular(1);",
186
+ " return valor;",
187
+ "}",
188
+ "",
189
+ ].join("\n"),
190
+ ediciones: [
191
+ {
192
+ oldText: " const valo = calcular(1);\n return valor;",
193
+ newText: " const valor = calcular(2);\n return valor;",
194
+ },
195
+ ],
196
+ esperado: "rechaza",
197
+ },
198
+ {
199
+ // La puerta del UMBRAL. No es una errata: es otro sitio. Un casado por
200
+ // parecido sin suelo casaría cualquier cosa con cualquier cosa.
201
+ id: "parecido-demasiado-lejos",
202
+ error: "el patrón no se parece a nada del fichero",
203
+ fichero: [
204
+ "function total(items) {",
205
+ " let suma = 0;",
206
+ " for (const it of items) {",
207
+ " suma += it.precio;",
208
+ " }",
209
+ " return suma;",
210
+ "}",
211
+ "",
212
+ ].join("\n"),
213
+ ediciones: [
214
+ {
215
+ oldText: " const cliente = new Cliente();\n cliente.enviar();",
216
+ newText: " const cliente = new Cliente();\n cliente.recibir();",
217
+ },
218
+ ],
219
+ esperado: "rechaza",
220
+ },
221
+ {
222
+ // Encontrado auditando oh-my-pi y reproducido ejecutando. El `oldText` casa
223
+ // EXACTO, así que el motor escribía el `newText` verbatim y se saltaba toda
224
+ // la lógica de sangría: el fichero acababa mezclando tabuladores y espacios.
225
+ // En Python eso es un `TabError` y no arranca, y `parseo.ts` no cubre `.py`,
226
+ // así que la red de reparación ni se despertaba.
227
+ id: "sangria-mixta-python",
228
+ error: "el modelo teclea el cuerpo con tabuladores en un fichero de 4 espacios",
229
+ fichero: ["class Carro:", " def total(self, items):", " s = 0", " return s", ""].join("\n"),
230
+ ediciones: [
231
+ {
232
+ oldText: " def total(self, items):\n s = 0\n return s",
233
+ newText: " def total(self, items):\n\t\ts = 0\n\t\tfor i in items:\n\t\t\ts += i.p\n\t\treturn s",
234
+ },
235
+ ],
236
+ esperado: "aplica",
237
+ resultado: [
238
+ "class Carro:",
239
+ " def total(self, items):",
240
+ " s = 0",
241
+ " for i in items:",
242
+ " s += i.p",
243
+ " return s",
244
+ "",
245
+ ].join("\n"),
246
+ },
247
+ {
248
+ // El mismo fallo en TypeScript. No rompe la sintaxis, pero deja el fichero
249
+ // con dos estilos y el siguiente `edit` casa peor: la edición ENTRA, así que
250
+ // se lee como éxito.
251
+ id: "sangria-mixta-ts",
252
+ error: "igual que el anterior, en TypeScript: entra y deja el fichero con dos estilos",
253
+ fichero: ["class C {", " total() {", " return 1;", " }", "}", ""].join("\n"),
254
+ ediciones: [
255
+ { oldText: " total() {\n return 1;\n }", newText: " total() {\n\t\treturn 0;\n }" },
256
+ ],
257
+ esperado: "aplica",
258
+ resultado: ["class C {", " total() {", " return 0;", " }", "}", ""].join("\n"),
259
+ },
260
+ {
261
+ id: "exacto",
262
+ error: "ninguno — es el control",
263
+ fichero: TABS,
264
+ ediciones: [{ oldText: "\tapp.listen(puerto);", newText: "\tapp.listen(PUERTO);" }],
265
+ esperado: "aplica",
266
+ resultado: TABS_OK,
267
+ },
268
+ {
269
+ id: "espacios-por-tabulador",
270
+ error: "el fichero usa tabuladores y el modelo emite espacios",
271
+ fichero: TABS,
272
+ ediciones: [{ oldText: " app.listen(puerto);", newText: " app.listen(PUERTO);" }],
273
+ esperado: "aplica",
274
+ resultado: TABS_OK,
275
+ },
276
+ {
277
+ id: "sin-sangria",
278
+ error: "el modelo manda la línea sin su sangría",
279
+ fichero: TABS,
280
+ ediciones: [{ oldText: "app.listen(puerto);", newText: "app.listen(PUERTO);" }],
281
+ esperado: "aplica",
282
+ resultado: TABS_OK,
283
+ },
284
+ {
285
+ id: "espacio-final-de-mas",
286
+ error: "un espacio al final que el fichero no tiene",
287
+ fichero: TABS,
288
+ ediciones: [{ oldText: "\tapp.listen(puerto); ", newText: "\tapp.listen(PUERTO);" }],
289
+ esperado: "aplica",
290
+ resultado: TABS_OK,
291
+ },
292
+ {
293
+ id: "valla-markdown",
294
+ error: "el bloque viene envuelto en ```",
295
+ fichero: TABS,
296
+ ediciones: [{ oldText: "```ts\n\tapp.listen(puerto);\n```", newText: "\tapp.listen(PUERTO);" }],
297
+ esperado: "aplica",
298
+ resultado: TABS_OK,
299
+ },
300
+ {
301
+ id: "sobre-de-parche",
302
+ error: "sentinelas de sobre (*** Begin Patch)",
303
+ fichero: TABS,
304
+ ediciones: [
305
+ { oldText: "*** Begin Patch\n\tapp.listen(puerto);\n*** End Patch", newText: "\tapp.listen(PUERTO);" },
306
+ ],
307
+ esperado: "aplica",
308
+ resultado: TABS_OK,
309
+ },
310
+ {
311
+ id: "cabecera-de-read",
312
+ error: "el modelo copia la cabecera que añade NUESTRO propio read",
313
+ fichero: TABS,
314
+ ediciones: [
315
+ {
316
+ oldText: "\tapp.listen(puerto);\n[Showing lines 1-5 of 5. Use offset=6 to continue.]",
317
+ newText: "\tapp.listen(PUERTO);",
318
+ },
319
+ ],
320
+ esperado: "aplica",
321
+ resultado: TABS_OK,
322
+ },
323
+ {
324
+ id: "numeros-de-linea",
325
+ error: "el modelo pega los números de línea de un grep",
326
+ fichero: TABS,
327
+ ediciones: [{ oldText: "3:\tapp.listen(puerto);", newText: "\tapp.listen(PUERTO);" }],
328
+ esperado: "aplica",
329
+ resultado: TABS_OK,
330
+ },
331
+ {
332
+ id: "bloque-sin-sangrar",
333
+ error: "bloque multilínea entero sin sangrar, fichero a 4 espacios",
334
+ fichero: ESPACIOS,
335
+ ediciones: [
336
+ {
337
+ oldText: "for (const it of items) {\nsuma += it.precio;\n}",
338
+ newText: "for (const it of items) {\nsuma += it.precio * it.cantidad;\n}",
339
+ },
340
+ ],
341
+ esperado: "aplica",
342
+ resultado: ESPACIOS.replace("suma += it.precio;", "suma += it.precio * it.cantidad;"),
343
+ },
344
+ {
345
+ id: "espaciado-interno",
346
+ error: "dos espacios donde el fichero tiene uno",
347
+ fichero: ESPACIOS,
348
+ ediciones: [{ oldText: " let suma = 0;", newText: " let suma = 1;" }],
349
+ esperado: "aplica",
350
+ resultado: ESPACIOS.replace("let suma = 0;", "let suma = 1;"),
351
+ },
352
+ {
353
+ id: "hueco-elidido",
354
+ error: "el modelo elide el medio con ...",
355
+ fichero: ESPACIOS,
356
+ ediciones: [
357
+ {
358
+ oldText: "function total(items: Item[]) {\n...\n}",
359
+ newText: "function total(items: Item[]) {\n\treturn 0;\n}",
360
+ },
361
+ ],
362
+ esperado: "aplica",
363
+ // Con la sangría DEL FICHERO, no la del modelo. `ESPACIOS` se sangra con
364
+ // cuatro espacios y el modelo manda `\treturn 0;`: este resultado declaraba
365
+ // el tabulador como correcto, o sea daba por bueno «entra y deja la sangría
366
+ // mal», que es una de las tres formas en las que corrompe oh-my-pi y la
367
+ // razón de existir de `core/edicion/sangria.ts`. La puerta bendecía el
368
+ // defecto que la puerta existe para cazar.
369
+ resultado: "function total(items: Item[]) {\n return 0;\n}\n",
370
+ },
371
+ {
372
+ id: "espaciado-a-proposito",
373
+ error: "el cambio ES el espaciado interior, y la sangría viene en espacios sobre un fichero de tabuladores",
374
+ fichero: TABS_CON_DOS_ESPACIOS,
375
+ ediciones: [{ oldText: " const app = express();", newText: " const app = express();" }],
376
+ esperado: "aplica",
377
+ // El doble espacio DESAPARECE. Es la otra mitad de `retecleo-inocente`: ahí
378
+ // el modelo colapsó una línea sin querer y gana el fichero; aquí el colapso
379
+ // es lo único que pide, y gana el modelo. Se distinguen por si el casado
380
+ // necesitó colapsar: este patrón casa con la pasada ESTRICTA (el modelo
381
+ // reprodujo los dos espacios), así que su `newText` es deliberado.
382
+ resultado: TABS_CON_DOS_ESPACIOS.replace("const app = express();", "const app = express();"),
383
+ },
384
+ {
385
+ id: "lote-difuso-empalme",
386
+ error: "dos ediciones, una difusa por comillas tipográficas, y la otra dentro de una línea con espacios al final",
387
+ fichero: TIPOGRAFICO,
388
+ ediciones: [
389
+ { oldText: 'const uno = "a";', newText: 'const uno = "b";' },
390
+ { oldText: "compute(1)", newText: "compute(2)" },
391
+ ],
392
+ esperado: "aplica",
393
+ // Las DOS mitades del empalme sobre bytes originales, en una sola carga:
394
+ //
395
+ // · las comillas tipográficas de la línea 2 siguen ahí. Nadie pidió
396
+ // tocarlas; escribir esa línea desde el texto normalizado dejaba
397
+ // comillas rectas anidadas dentro de una cadena y el fichero no
398
+ // compilaba.
399
+ // · los tres espacios finales de la línea 2 y su SALTO DE LÍNEA siguen
400
+ // ahí. Traducir el final normalizado de la línea a coordenadas del
401
+ // original cortaba dentro de ella y pegaba la línea 3 detrás de la 2.
402
+ //
403
+ // El corpus no tenía ninguna carga sobre el empalme difuso, que es el
404
+ // camino donde ya nos costó una corrupción silenciosa.
405
+ resultado: TIPOGRAFICO_OK,
406
+ },
407
+ {
408
+ id: "retecleo-inocente",
409
+ error: "retipea una cadena con un espacio donde hay dos, cambiando solo la línea de abajo",
410
+ fichero: CADENA_CON_DOS_ESPACIOS,
411
+ ediciones: [{ oldText: 'const s = "a b";\nreturn s;', newText: 'const s = "a b";\nreturn s.trim();' }],
412
+ esperado: "aplica",
413
+ // El doble espacio de la cadena SIGUE AHÍ. Es la mitad que no se ve del
414
+ // casado por espaciado: entra la edición y no se toca lo que nadie pidió.
415
+ resultado: CADENA_CON_DOS_ESPACIOS.replace("return s;", "return s.trim();"),
416
+ },
417
+ // ── Los que DEBEN rechazarse. Sin estos, «aplicar más» sería siempre mejor
418
+ // nota, y un motor que acepta cualquier cosa ganaría el banco.
419
+ {
420
+ id: "ambiguo-dos-ocurrencias",
421
+ error: "el oldText aparece dos veces: cuál se edita es una moneda al aire",
422
+ fichero: REPETIDO,
423
+ ediciones: [{ oldText: "let total = 0;", newText: "let total = 1;" }],
424
+ esperado: "rechaza",
425
+ },
426
+ {
427
+ id: "no-existe",
428
+ error: "el oldText no está en el fichero, ni parecido",
429
+ fichero: TABS,
430
+ ediciones: [{ oldText: "\tapp.escuchar(elPuerto);", newText: "\tapp.listen(PUERTO);" }],
431
+ esperado: "rechaza",
432
+ },
433
+ {
434
+ id: "vacio",
435
+ error: "oldText vacío: casaría en todas partes",
436
+ fichero: TABS,
437
+ ediciones: [{ oldText: "", newText: "algo" }],
438
+ esperado: "rechaza",
439
+ },
440
+ // ── Los tres siguientes vigilan EXACTAMENTE lo que abren `espaciado-interno`
441
+ // y `hueco-elidido`. Cada capacidad nueva de casado es una capacidad nueva
442
+ // de casar en el sitio equivocado, y una carga que se recupera sin una
443
+ // carga que la vigile es una permisividad sin medir.
444
+ {
445
+ id: "espaciado-ambiguo",
446
+ error: "el patrón solo casa si se colapsan los espacios, y entonces casa en DOS sitios",
447
+ fichero: ESPACIADO_REPETIDO,
448
+ ediciones: [{ oldText: "let x = 1;", newText: "let x = 2;" }],
449
+ esperado: "rechaza",
450
+ },
451
+ {
452
+ id: "hueco-ancla-ambigua",
453
+ error: "elide el medio, pero el ancla de apertura casa en dos funciones idénticas",
454
+ fichero: DOS_IGUALES,
455
+ ediciones: [
456
+ { oldText: "function envolver() {\n...\n\tfin();", newText: "function envolver() {\n\tsolo();\n\tfin();" },
457
+ ],
458
+ esperado: "rechaza",
459
+ },
460
+ {
461
+ id: "hueco-cierre-no-unico",
462
+ error: "elide la PRIMERA de dos funciones: el } de la segunda vuelve ambigua el ancla de cierre",
463
+ fichero: DOS_FUNCIONES,
464
+ ediciones: [{ oldText: "function a() {\n...\n}", newText: "function a() {\n\tuno2();\n}" }],
465
+ // Se rechaza, y esta carga existe para que ese rechazo sea un NÚMERO y no
466
+ // una sorpresa. Medido sobre `src/core/`: con la regla de ancla única, la
467
+ // elisión casa en 164 de 1173 funciones de nivel superior (14%), y en la
468
+ // práctica solo en la última de cada fichero. Elegir por el modelo entre
469
+ // dos cierres sería una moneda al aire que se traga código que él no ha
470
+ // nombrado, así que el rechazo es la respuesta correcta HOY; quien amplíe
471
+ // el alcance tendrá que cambiar esta línea a mano y decir con qué lo mide.
472
+ esperado: "rechaza",
473
+ },
474
+ {
475
+ id: "hueco-sin-fondo",
476
+ error: "el ... abre el hueco sin ancla delante: se comería el fichero desde el principio",
477
+ fichero: TABS,
478
+ ediciones: [{ oldText: "...\n}", newText: "\tapp.listen(PUERTO);\n}" }],
479
+ esperado: "rechaza",
480
+ },
481
+ ];
482
+ /** Pasa una carga por el motor y clasifica el resultado en tres estados. */
483
+ export function evaluarCarga(carga) {
484
+ const base = { id: carga.id, error: carga.error, esperado: carga.esperado };
485
+ let salida;
486
+ try {
487
+ salida = applyEditsToNormalizedContent(carga.fichero, [...carga.ediciones], `${carga.id}.ts`).newContent;
488
+ }
489
+ catch (error) {
490
+ return {
491
+ ...base,
492
+ veredicto: carga.esperado === "rechaza" ? "rechazado-bien" : "rechazado",
493
+ detalle: carga.esperado === "rechaza" ? undefined : error.message.slice(0, 120),
494
+ };
495
+ }
496
+ if (carga.esperado === "rechaza") {
497
+ // Aplicó algo que debía rechazar. Es corrupción por definición: el fichero
498
+ // cambió sin que nadie pudiera saber dónde.
499
+ return { ...base, veredicto: "corrupto", detalle: "aplicó una edición que debía rechazarse" };
500
+ }
501
+ if (salida === carga.resultado)
502
+ return { ...base, veredicto: "correcto" };
503
+ return {
504
+ ...base,
505
+ veredicto: "corrupto",
506
+ detalle: `salió ${JSON.stringify(salida.slice(0, 90))}, se esperaba ${JSON.stringify((carga.resultado ?? "").slice(0, 90))}`,
507
+ };
508
+ }
509
+ export function evaluarTodas(cargas = CARGAS) {
510
+ const resultados = cargas.map(evaluarCarga);
511
+ return {
512
+ correctos: resultados.filter((r) => r.veredicto === "correcto").length,
513
+ corruptos: resultados.filter((r) => r.veredicto === "corrupto").length,
514
+ rechazados: resultados.filter((r) => r.veredicto === "rechazado").length,
515
+ rechazadosBien: resultados.filter((r) => r.veredicto === "rechazado-bien").length,
516
+ total: resultados.length,
517
+ resultados,
518
+ };
519
+ }
520
+ //# sourceMappingURL=cargas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cargas.js","sourceRoot":"","sources":["../../../src/core/banco/cargas.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Banco de CARGAS MAL FORMADAS contra el motor de edición. Sin modelo.\n *\n * POR QUÉ HACE FALTA OTRO BANCO. `core/banco/` mide si el MODELO encuentra y\n * arregla un bug: llama a un proveedor de verdad, cuesta dinero y, sobre todo,\n * mide al modelo. Hoy quedó demostrado de la peor manera: con\n * `opencode/x-preview-f-free` la línea base salió 37,5% de acierto y 62,5% de\n * «fantasmas», y con `opencode/hy3-free` los MISMOS casos dieron 100% y 0%. Ese\n * 37,5% no medía a Ada; medía un proveedor que devuelve respuestas vacías.\n *\n * Este banco mide LO NUESTRO: dado un `oldText` con los errores que los modelos\n * cometen de verdad, ¿entra la edición y entra BIEN? Es determinista, no cuesta\n * nada y sirve de puerta.\n *\n * LA MÉTRICA, que es la decisión de diseño importante.\n *\n * Lo natural sería contar «cuántas aplica», y sería un error. Medido sobre\n * oh-my-pi: de 14 cargas aplica 10 y **tres de esas diez corrompen** —una\n * inyecta un error de sintaxis y dos estropean la sangría—. Un motor más\n * permisivo no es mejor: es más peligroso, porque un rechazo cuesta un turno y\n * una corrupción silenciosa cuesta un fichero.\n *\n * Por eso hay TRES resultados y no dos:\n *\n * correcto la edición entra y el fichero queda como debía\n * corrupto la edición entra y el fichero queda MAL ← el peor de los tres\n * rechazado la edición no entra\n *\n * `corrupto` cuenta como peor que `rechazado` a propósito. Es la misma\n * distinción que aplicamos en todo el repositorio: un fallo que se lee como\n * éxito es más caro que un fallo que se ve.\n */\n\nimport { applyEditsToNormalizedContent } from \"../tools/edit-diff.ts\";\n\n/** Qué debería pasar con una carga. Lo declara el caso, no lo decide el motor. */\nexport type Esperado = \"aplica\" | \"rechaza\";\n\nexport interface CargaMalFormada {\n\tid: string;\n\t/** Qué error del modelo reproduce, en una línea. */\n\terror: string;\n\t/** El fichero tal cual está en disco. */\n\tfichero: string;\n\tediciones: ReadonlyArray<{ oldText: string; newText: string }>;\n\t/**\n\t * `aplica` = el motor DEBERÍA recuperarlo. `rechaza` = debería negarse.\n\t *\n\t * Hay casos que deben rechazarse y esos son los que impiden que este banco\n\t * premie a un motor que acepta todo. Sin ellos, «aplicar más» sería siempre\n\t * mejor puntuación, y eso es exactamente el error de medición que queremos\n\t * evitar.\n\t */\n\tesperado: Esperado;\n\t/** El fichero resultante correcto. Solo para los `aplica`. */\n\tresultado?: string;\n}\n\nconst TABS = [\n\t\"export function servir(puerto: number) {\",\n\t\"\\tconst app = express();\",\n\t\"\\tapp.listen(puerto);\",\n\t\"}\",\n\t\"\",\n].join(\"\\n\");\nconst TABS_OK = [\n\t\"export function servir(puerto: number) {\",\n\t\"\\tconst app = express();\",\n\t\"\\tapp.listen(PUERTO);\",\n\t\"}\",\n\t\"\",\n].join(\"\\n\");\n\nconst ESPACIOS = [\n\t\"function total(items: Item[]) {\",\n\t\" let suma = 0;\",\n\t\" for (const it of items) {\",\n\t\" suma += it.precio;\",\n\t\" }\",\n\t\" return suma;\",\n\t\"}\",\n\t\"\",\n].join(\"\\n\");\n\nconst REPETIDO = [\"let total = 0;\", \"suma(a);\", \"let total = 0;\", \"suma(b);\", \"\"].join(\"\\n\");\n\n/**\n * Dos líneas que son distintas al recortarlas y la MISMA al colapsar el\n * espaciado interior. Existe para vigilar el camino que recupera\n * `espaciado-interno`.\n */\nconst ESPACIADO_REPETIDO = [\n\t\"const paso = calcular(1);\",\n\t\"let x = 1;\",\n\t\"const otro = calcular(2);\",\n\t\"let x = 1;\",\n\t\"\",\n].join(\"\\n\");\n\n/**\n * Un doble espacio DENTRO de una cadena, que es espaciado con significado.\n *\n * Existe porque casar colapsando espacios abre la puerta a escribirlos\n * colapsados: el modelo retipea esta línea con un espacio solo, sin intención de\n * tocarla, mientras cambia la de abajo.\n */\nconst CADENA_CON_DOS_ESPACIOS = [\"function saludo() {\", ' const s = \"a b\";', \" return s;\", \"}\", \"\"].join(\"\\n\");\n\n/**\n * Un fichero de tabuladores con un doble espacio INTERIOR, para el caso en que\n * colapsar ese espacio es exactamente lo que el modelo pide.\n */\nconst TABS_CON_DOS_ESPACIOS = [\n\t\"export function servir(puerto: number) {\",\n\t\"\\tconst app = express();\",\n\t\"\\tapp.listen(puerto);\",\n\t\"}\",\n\t\"\",\n].join(\"\\n\");\n\n/**\n * Comillas tipográficas y espacios al final, que es lo que hace falta para\n * ejercitar el empalme del camino DIFUSO.\n *\n * La línea 1 solo casa tras normalizar, así que enciende ese camino para todo el\n * lote. La línea 2 se edita por dentro y lleva comillas tipográficas que nadie\n * ha pedido tocar y tres espacios al final, que son los dos sitios donde el\n * empalme se ha roto de verdad.\n */\nconst TIPOGRAFICO = [\n\t\"const uno = “a”;\",\n\t'const msg = \"el “titulo” va aqui\" + compute(1); ',\n\t\"const fin = 1;\",\n\t\"\",\n].join(\"\\n\");\nconst TIPOGRAFICO_OK = [\n\t'const uno = \"b\";',\n\t'const msg = \"el “titulo” va aqui\" + compute(2); ',\n\t\"const fin = 1;\",\n\t\"\",\n].join(\"\\n\");\n\n/**\n * Dos funciones seguidas: el `}` de la columna cero de la segunda vuelve\n * ambigua el ancla de CIERRE de la primera. Es la forma de fichero más normal\n * que existe y mide el alcance real de la elisión.\n */\nconst DOS_FUNCIONES = [\"function a() {\", \"\\tuno();\", \"}\", \"\", \"function b() {\", \"\\tdos();\", \"}\", \"\"].join(\"\\n\");\n\n/** Dos funciones idénticas: el ancla de apertura casa en los dos sitios. */\nconst DOS_IGUALES = [\n\t\"function envolver() {\",\n\t\"\\tinicio();\",\n\t\"\\tfin();\",\n\t\"}\",\n\t\"function envolver() {\",\n\t\"\\tinicio();\",\n\t\"\\tfin();\",\n\t\"}\",\n\t\"\",\n].join(\"\\n\");\n\n/**\n * El corpus. Cada caso es un error que un modelo comete DE VERDAD.\n *\n * No están inventados: salen de la comparación motor contra motor de oh-my-pi y\n * de la sonda de nueve casos que se ejecutó sobre este repositorio.\n */\nexport const CARGAS: readonly CargaMalFormada[] = [\n\t{\n\t\t// El modelo retipea el contexto y se equivoca en una letra. omp lo aplica\n\t\t// y ESCRIBE la errata: su fichero acaba con `item`, que no existe, y no\n\t\t// compila. Nosotros casamos por parecido y escribimos la versión del\n\t\t// FICHERO en las líneas que el modelo solo estaba citando.\n\t\tid: \"errata-en-el-contexto\",\n\t\terror: \"el modelo retipea una línea de contexto con una errata (items → item)\",\n\t\tfichero: [\n\t\t\t\"function total(items) {\",\n\t\t\t\" let suma = 0;\",\n\t\t\t\" for (const it of items) {\",\n\t\t\t\" suma += it.precio;\",\n\t\t\t\" }\",\n\t\t\t\" return suma;\",\n\t\t\t\"}\",\n\t\t\t\"\",\n\t\t].join(\"\\n\"),\n\t\tediciones: [\n\t\t\t{\n\t\t\t\toldText: \" for (const it of item) {\\n suma += it.precio;\\n }\",\n\t\t\t\tnewText: \" for (const it of item) {\\n suma += it.precio * it.cantidad;\\n }\",\n\t\t\t},\n\t\t],\n\t\tesperado: \"aplica\",\n\t\tresultado: [\n\t\t\t\"function total(items) {\",\n\t\t\t\" let suma = 0;\",\n\t\t\t\" for (const it of items) {\",\n\t\t\t\" suma += it.precio;\",\n\t\t\t\" }\",\n\t\t\t\" return suma;\",\n\t\t\t\"}\",\n\t\t\t\"\",\n\t\t]\n\t\t\t.join(\"\\n\")\n\t\t\t.replace(\"suma += it.precio;\", \"suma += it.precio * it.cantidad;\"),\n\t},\n\t{\n\t\t// La puerta de DOMINANCIA. Dos bloques casi idénticos: el patrón con\n\t\t// errata se parece a los dos, así que no sabemos cuál quería. Elegir por\n\t\t// el modelo es peor que rechazar.\n\t\tid: \"parecido-ambiguo\",\n\t\terror: \"un patrón con errata que se parece igual a DOS bloques distintos\",\n\t\tfichero: [\n\t\t\t\"function a() {\",\n\t\t\t\" const valor = calcular(1);\",\n\t\t\t\" return valor;\",\n\t\t\t\"}\",\n\t\t\t\"function b() {\",\n\t\t\t\" const valor = calcular(1);\",\n\t\t\t\" return valor;\",\n\t\t\t\"}\",\n\t\t\t\"\",\n\t\t].join(\"\\n\"),\n\t\tediciones: [\n\t\t\t{\n\t\t\t\toldText: \" const valo = calcular(1);\\n return valor;\",\n\t\t\t\tnewText: \" const valor = calcular(2);\\n return valor;\",\n\t\t\t},\n\t\t],\n\t\tesperado: \"rechaza\",\n\t},\n\t{\n\t\t// La puerta del UMBRAL. No es una errata: es otro sitio. Un casado por\n\t\t// parecido sin suelo casaría cualquier cosa con cualquier cosa.\n\t\tid: \"parecido-demasiado-lejos\",\n\t\terror: \"el patrón no se parece a nada del fichero\",\n\t\tfichero: [\n\t\t\t\"function total(items) {\",\n\t\t\t\" let suma = 0;\",\n\t\t\t\" for (const it of items) {\",\n\t\t\t\" suma += it.precio;\",\n\t\t\t\" }\",\n\t\t\t\" return suma;\",\n\t\t\t\"}\",\n\t\t\t\"\",\n\t\t].join(\"\\n\"),\n\t\tediciones: [\n\t\t\t{\n\t\t\t\toldText: \" const cliente = new Cliente();\\n cliente.enviar();\",\n\t\t\t\tnewText: \" const cliente = new Cliente();\\n cliente.recibir();\",\n\t\t\t},\n\t\t],\n\t\tesperado: \"rechaza\",\n\t},\n\t{\n\t\t// Encontrado auditando oh-my-pi y reproducido ejecutando. El `oldText` casa\n\t\t// EXACTO, así que el motor escribía el `newText` verbatim y se saltaba toda\n\t\t// la lógica de sangría: el fichero acababa mezclando tabuladores y espacios.\n\t\t// En Python eso es un `TabError` y no arranca, y `parseo.ts` no cubre `.py`,\n\t\t// así que la red de reparación ni se despertaba.\n\t\tid: \"sangria-mixta-python\",\n\t\terror: \"el modelo teclea el cuerpo con tabuladores en un fichero de 4 espacios\",\n\t\tfichero: [\"class Carro:\", \" def total(self, items):\", \" s = 0\", \" return s\", \"\"].join(\"\\n\"),\n\t\tediciones: [\n\t\t\t{\n\t\t\t\toldText: \" def total(self, items):\\n s = 0\\n return s\",\n\t\t\t\tnewText: \" def total(self, items):\\n\\t\\ts = 0\\n\\t\\tfor i in items:\\n\\t\\t\\ts += i.p\\n\\t\\treturn s\",\n\t\t\t},\n\t\t],\n\t\tesperado: \"aplica\",\n\t\tresultado: [\n\t\t\t\"class Carro:\",\n\t\t\t\" def total(self, items):\",\n\t\t\t\" s = 0\",\n\t\t\t\" for i in items:\",\n\t\t\t\" s += i.p\",\n\t\t\t\" return s\",\n\t\t\t\"\",\n\t\t].join(\"\\n\"),\n\t},\n\t{\n\t\t// El mismo fallo en TypeScript. No rompe la sintaxis, pero deja el fichero\n\t\t// con dos estilos y el siguiente `edit` casa peor: la edición ENTRA, así que\n\t\t// se lee como éxito.\n\t\tid: \"sangria-mixta-ts\",\n\t\terror: \"igual que el anterior, en TypeScript: entra y deja el fichero con dos estilos\",\n\t\tfichero: [\"class C {\", \" total() {\", \" return 1;\", \" }\", \"}\", \"\"].join(\"\\n\"),\n\t\tediciones: [\n\t\t\t{ oldText: \" total() {\\n return 1;\\n }\", newText: \" total() {\\n\\t\\treturn 0;\\n }\" },\n\t\t],\n\t\tesperado: \"aplica\",\n\t\tresultado: [\"class C {\", \" total() {\", \" return 0;\", \" }\", \"}\", \"\"].join(\"\\n\"),\n\t},\n\t{\n\t\tid: \"exacto\",\n\t\terror: \"ninguno — es el control\",\n\t\tfichero: TABS,\n\t\tediciones: [{ oldText: \"\\tapp.listen(puerto);\", newText: \"\\tapp.listen(PUERTO);\" }],\n\t\tesperado: \"aplica\",\n\t\tresultado: TABS_OK,\n\t},\n\t{\n\t\tid: \"espacios-por-tabulador\",\n\t\terror: \"el fichero usa tabuladores y el modelo emite espacios\",\n\t\tfichero: TABS,\n\t\tediciones: [{ oldText: \" app.listen(puerto);\", newText: \" app.listen(PUERTO);\" }],\n\t\tesperado: \"aplica\",\n\t\tresultado: TABS_OK,\n\t},\n\t{\n\t\tid: \"sin-sangria\",\n\t\terror: \"el modelo manda la línea sin su sangría\",\n\t\tfichero: TABS,\n\t\tediciones: [{ oldText: \"app.listen(puerto);\", newText: \"app.listen(PUERTO);\" }],\n\t\tesperado: \"aplica\",\n\t\tresultado: TABS_OK,\n\t},\n\t{\n\t\tid: \"espacio-final-de-mas\",\n\t\terror: \"un espacio al final que el fichero no tiene\",\n\t\tfichero: TABS,\n\t\tediciones: [{ oldText: \"\\tapp.listen(puerto); \", newText: \"\\tapp.listen(PUERTO);\" }],\n\t\tesperado: \"aplica\",\n\t\tresultado: TABS_OK,\n\t},\n\t{\n\t\tid: \"valla-markdown\",\n\t\terror: \"el bloque viene envuelto en ```\",\n\t\tfichero: TABS,\n\t\tediciones: [{ oldText: \"```ts\\n\\tapp.listen(puerto);\\n```\", newText: \"\\tapp.listen(PUERTO);\" }],\n\t\tesperado: \"aplica\",\n\t\tresultado: TABS_OK,\n\t},\n\t{\n\t\tid: \"sobre-de-parche\",\n\t\terror: \"sentinelas de sobre (*** Begin Patch)\",\n\t\tfichero: TABS,\n\t\tediciones: [\n\t\t\t{ oldText: \"*** Begin Patch\\n\\tapp.listen(puerto);\\n*** End Patch\", newText: \"\\tapp.listen(PUERTO);\" },\n\t\t],\n\t\tesperado: \"aplica\",\n\t\tresultado: TABS_OK,\n\t},\n\t{\n\t\tid: \"cabecera-de-read\",\n\t\terror: \"el modelo copia la cabecera que añade NUESTRO propio read\",\n\t\tfichero: TABS,\n\t\tediciones: [\n\t\t\t{\n\t\t\t\toldText: \"\\tapp.listen(puerto);\\n[Showing lines 1-5 of 5. Use offset=6 to continue.]\",\n\t\t\t\tnewText: \"\\tapp.listen(PUERTO);\",\n\t\t\t},\n\t\t],\n\t\tesperado: \"aplica\",\n\t\tresultado: TABS_OK,\n\t},\n\t{\n\t\tid: \"numeros-de-linea\",\n\t\terror: \"el modelo pega los números de línea de un grep\",\n\t\tfichero: TABS,\n\t\tediciones: [{ oldText: \"3:\\tapp.listen(puerto);\", newText: \"\\tapp.listen(PUERTO);\" }],\n\t\tesperado: \"aplica\",\n\t\tresultado: TABS_OK,\n\t},\n\t{\n\t\tid: \"bloque-sin-sangrar\",\n\t\terror: \"bloque multilínea entero sin sangrar, fichero a 4 espacios\",\n\t\tfichero: ESPACIOS,\n\t\tediciones: [\n\t\t\t{\n\t\t\t\toldText: \"for (const it of items) {\\nsuma += it.precio;\\n}\",\n\t\t\t\tnewText: \"for (const it of items) {\\nsuma += it.precio * it.cantidad;\\n}\",\n\t\t\t},\n\t\t],\n\t\tesperado: \"aplica\",\n\t\tresultado: ESPACIOS.replace(\"suma += it.precio;\", \"suma += it.precio * it.cantidad;\"),\n\t},\n\t{\n\t\tid: \"espaciado-interno\",\n\t\terror: \"dos espacios donde el fichero tiene uno\",\n\t\tfichero: ESPACIOS,\n\t\tediciones: [{ oldText: \" let suma = 0;\", newText: \" let suma = 1;\" }],\n\t\tesperado: \"aplica\",\n\t\tresultado: ESPACIOS.replace(\"let suma = 0;\", \"let suma = 1;\"),\n\t},\n\t{\n\t\tid: \"hueco-elidido\",\n\t\terror: \"el modelo elide el medio con ...\",\n\t\tfichero: ESPACIOS,\n\t\tediciones: [\n\t\t\t{\n\t\t\t\toldText: \"function total(items: Item[]) {\\n...\\n}\",\n\t\t\t\tnewText: \"function total(items: Item[]) {\\n\\treturn 0;\\n}\",\n\t\t\t},\n\t\t],\n\t\tesperado: \"aplica\",\n\t\t// Con la sangría DEL FICHERO, no la del modelo. `ESPACIOS` se sangra con\n\t\t// cuatro espacios y el modelo manda `\\treturn 0;`: este resultado declaraba\n\t\t// el tabulador como correcto, o sea daba por bueno «entra y deja la sangría\n\t\t// mal», que es una de las tres formas en las que corrompe oh-my-pi y la\n\t\t// razón de existir de `core/edicion/sangria.ts`. La puerta bendecía el\n\t\t// defecto que la puerta existe para cazar.\n\t\tresultado: \"function total(items: Item[]) {\\n return 0;\\n}\\n\",\n\t},\n\t{\n\t\tid: \"espaciado-a-proposito\",\n\t\terror: \"el cambio ES el espaciado interior, y la sangría viene en espacios sobre un fichero de tabuladores\",\n\t\tfichero: TABS_CON_DOS_ESPACIOS,\n\t\tediciones: [{ oldText: \" const app = express();\", newText: \" const app = express();\" }],\n\t\tesperado: \"aplica\",\n\t\t// El doble espacio DESAPARECE. Es la otra mitad de `retecleo-inocente`: ahí\n\t\t// el modelo colapsó una línea sin querer y gana el fichero; aquí el colapso\n\t\t// es lo único que pide, y gana el modelo. Se distinguen por si el casado\n\t\t// necesitó colapsar: este patrón casa con la pasada ESTRICTA (el modelo\n\t\t// reprodujo los dos espacios), así que su `newText` es deliberado.\n\t\tresultado: TABS_CON_DOS_ESPACIOS.replace(\"const app = express();\", \"const app = express();\"),\n\t},\n\t{\n\t\tid: \"lote-difuso-empalme\",\n\t\terror: \"dos ediciones, una difusa por comillas tipográficas, y la otra dentro de una línea con espacios al final\",\n\t\tfichero: TIPOGRAFICO,\n\t\tediciones: [\n\t\t\t{ oldText: 'const uno = \"a\";', newText: 'const uno = \"b\";' },\n\t\t\t{ oldText: \"compute(1)\", newText: \"compute(2)\" },\n\t\t],\n\t\tesperado: \"aplica\",\n\t\t// Las DOS mitades del empalme sobre bytes originales, en una sola carga:\n\t\t//\n\t\t// · las comillas tipográficas de la línea 2 siguen ahí. Nadie pidió\n\t\t// tocarlas; escribir esa línea desde el texto normalizado dejaba\n\t\t// comillas rectas anidadas dentro de una cadena y el fichero no\n\t\t// compilaba.\n\t\t// · los tres espacios finales de la línea 2 y su SALTO DE LÍNEA siguen\n\t\t// ahí. Traducir el final normalizado de la línea a coordenadas del\n\t\t// original cortaba dentro de ella y pegaba la línea 3 detrás de la 2.\n\t\t//\n\t\t// El corpus no tenía ninguna carga sobre el empalme difuso, que es el\n\t\t// camino donde ya nos costó una corrupción silenciosa.\n\t\tresultado: TIPOGRAFICO_OK,\n\t},\n\t{\n\t\tid: \"retecleo-inocente\",\n\t\terror: \"retipea una cadena con un espacio donde hay dos, cambiando solo la línea de abajo\",\n\t\tfichero: CADENA_CON_DOS_ESPACIOS,\n\t\tediciones: [{ oldText: 'const s = \"a b\";\\nreturn s;', newText: 'const s = \"a b\";\\nreturn s.trim();' }],\n\t\tesperado: \"aplica\",\n\t\t// El doble espacio de la cadena SIGUE AHÍ. Es la mitad que no se ve del\n\t\t// casado por espaciado: entra la edición y no se toca lo que nadie pidió.\n\t\tresultado: CADENA_CON_DOS_ESPACIOS.replace(\"return s;\", \"return s.trim();\"),\n\t},\n\t// ── Los que DEBEN rechazarse. Sin estos, «aplicar más» sería siempre mejor\n\t// nota, y un motor que acepta cualquier cosa ganaría el banco.\n\t{\n\t\tid: \"ambiguo-dos-ocurrencias\",\n\t\terror: \"el oldText aparece dos veces: cuál se edita es una moneda al aire\",\n\t\tfichero: REPETIDO,\n\t\tediciones: [{ oldText: \"let total = 0;\", newText: \"let total = 1;\" }],\n\t\tesperado: \"rechaza\",\n\t},\n\t{\n\t\tid: \"no-existe\",\n\t\terror: \"el oldText no está en el fichero, ni parecido\",\n\t\tfichero: TABS,\n\t\tediciones: [{ oldText: \"\\tapp.escuchar(elPuerto);\", newText: \"\\tapp.listen(PUERTO);\" }],\n\t\tesperado: \"rechaza\",\n\t},\n\t{\n\t\tid: \"vacio\",\n\t\terror: \"oldText vacío: casaría en todas partes\",\n\t\tfichero: TABS,\n\t\tediciones: [{ oldText: \"\", newText: \"algo\" }],\n\t\tesperado: \"rechaza\",\n\t},\n\t// ── Los tres siguientes vigilan EXACTAMENTE lo que abren `espaciado-interno`\n\t// y `hueco-elidido`. Cada capacidad nueva de casado es una capacidad nueva\n\t// de casar en el sitio equivocado, y una carga que se recupera sin una\n\t// carga que la vigile es una permisividad sin medir.\n\t{\n\t\tid: \"espaciado-ambiguo\",\n\t\terror: \"el patrón solo casa si se colapsan los espacios, y entonces casa en DOS sitios\",\n\t\tfichero: ESPACIADO_REPETIDO,\n\t\tediciones: [{ oldText: \"let x = 1;\", newText: \"let x = 2;\" }],\n\t\tesperado: \"rechaza\",\n\t},\n\t{\n\t\tid: \"hueco-ancla-ambigua\",\n\t\terror: \"elide el medio, pero el ancla de apertura casa en dos funciones idénticas\",\n\t\tfichero: DOS_IGUALES,\n\t\tediciones: [\n\t\t\t{ oldText: \"function envolver() {\\n...\\n\\tfin();\", newText: \"function envolver() {\\n\\tsolo();\\n\\tfin();\" },\n\t\t],\n\t\tesperado: \"rechaza\",\n\t},\n\t{\n\t\tid: \"hueco-cierre-no-unico\",\n\t\terror: \"elide la PRIMERA de dos funciones: el } de la segunda vuelve ambigua el ancla de cierre\",\n\t\tfichero: DOS_FUNCIONES,\n\t\tediciones: [{ oldText: \"function a() {\\n...\\n}\", newText: \"function a() {\\n\\tuno2();\\n}\" }],\n\t\t// Se rechaza, y esta carga existe para que ese rechazo sea un NÚMERO y no\n\t\t// una sorpresa. Medido sobre `src/core/`: con la regla de ancla única, la\n\t\t// elisión casa en 164 de 1173 funciones de nivel superior (14%), y en la\n\t\t// práctica solo en la última de cada fichero. Elegir por el modelo entre\n\t\t// dos cierres sería una moneda al aire que se traga código que él no ha\n\t\t// nombrado, así que el rechazo es la respuesta correcta HOY; quien amplíe\n\t\t// el alcance tendrá que cambiar esta línea a mano y decir con qué lo mide.\n\t\tesperado: \"rechaza\",\n\t},\n\t{\n\t\tid: \"hueco-sin-fondo\",\n\t\terror: \"el ... abre el hueco sin ancla delante: se comería el fichero desde el principio\",\n\t\tfichero: TABS,\n\t\tediciones: [{ oldText: \"...\\n}\", newText: \"\\tapp.listen(PUERTO);\\n}\" }],\n\t\tesperado: \"rechaza\",\n\t},\n];\n\nexport type Veredicto = \"correcto\" | \"corrupto\" | \"rechazado\" | \"rechazado-bien\";\n\nexport interface ResultadoDeCarga {\n\tid: string;\n\terror: string;\n\tesperado: Esperado;\n\tveredicto: Veredicto;\n\t/** Qué salió, cuando salió mal. Para poder leer el fallo sin reproducirlo. */\n\tdetalle?: string;\n}\n\n/** Pasa una carga por el motor y clasifica el resultado en tres estados. */\nexport function evaluarCarga(carga: CargaMalFormada): ResultadoDeCarga {\n\tconst base = { id: carga.id, error: carga.error, esperado: carga.esperado };\n\tlet salida: string;\n\ttry {\n\t\tsalida = applyEditsToNormalizedContent(carga.fichero, [...carga.ediciones], `${carga.id}.ts`).newContent;\n\t} catch (error) {\n\t\treturn {\n\t\t\t...base,\n\t\t\tveredicto: carga.esperado === \"rechaza\" ? \"rechazado-bien\" : \"rechazado\",\n\t\t\tdetalle: carga.esperado === \"rechaza\" ? undefined : (error as Error).message.slice(0, 120),\n\t\t};\n\t}\n\tif (carga.esperado === \"rechaza\") {\n\t\t// Aplicó algo que debía rechazar. Es corrupción por definición: el fichero\n\t\t// cambió sin que nadie pudiera saber dónde.\n\t\treturn { ...base, veredicto: \"corrupto\", detalle: \"aplicó una edición que debía rechazarse\" };\n\t}\n\tif (salida === carga.resultado) return { ...base, veredicto: \"correcto\" };\n\treturn {\n\t\t...base,\n\t\tveredicto: \"corrupto\",\n\t\tdetalle: `salió ${JSON.stringify(salida.slice(0, 90))}, se esperaba ${JSON.stringify((carga.resultado ?? \"\").slice(0, 90))}`,\n\t};\n}\n\nexport interface Puntuacion {\n\tcorrectos: number;\n\tcorruptos: number;\n\trechazados: number;\n\trechazadosBien: number;\n\ttotal: number;\n\tresultados: readonly ResultadoDeCarga[];\n}\n\nexport function evaluarTodas(cargas: readonly CargaMalFormada[] = CARGAS): Puntuacion {\n\tconst resultados = cargas.map(evaluarCarga);\n\treturn {\n\t\tcorrectos: resultados.filter((r) => r.veredicto === \"correcto\").length,\n\t\tcorruptos: resultados.filter((r) => r.veredicto === \"corrupto\").length,\n\t\trechazados: resultados.filter((r) => r.veredicto === \"rechazado\").length,\n\t\trechazadosBien: resultados.filter((r) => r.veredicto === \"rechazado-bien\").length,\n\t\ttotal: resultados.length,\n\t\tresultados,\n\t};\n}\n"]}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Compara dos ejecuciones del banco: ¿el cambio de editor mejoró o empeoró?
3
+ *
4
+ * Sin esto, dos JSON de resultados son datos sueltos. Con esto son una
5
+ * respuesta a "¿esto que acabo de tocar edita mejor o peor que antes?".
6
+ */
7
+ import type { ResultadosEjecucion } from "./tipos.ts";
8
+ export interface DeltaMetrica {
9
+ nombre: string;
10
+ antes: number;
11
+ despues: number;
12
+ delta: number;
13
+ }
14
+ export interface ComparacionEjecuciones {
15
+ a: {
16
+ archivo: string;
17
+ modelo: string;
18
+ ejecutadoEn: string;
19
+ };
20
+ b: {
21
+ archivo: string;
22
+ modelo: string;
23
+ ejecutadoEn: string;
24
+ };
25
+ metricas: DeltaMetrica[];
26
+ }
27
+ export declare function compararEjecuciones(a: ResultadosEjecucion, b: ResultadosEjecucion, rutaA: string, rutaB: string): ComparacionEjecuciones;
28
+ export declare function formatearComparacion(c: ComparacionEjecuciones): string;
29
+ //# sourceMappingURL=comparar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comparar.d.ts","sourceRoot":"","sources":["../../../src/core/banco/comparar.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,sBAAsB;IACtC,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,QAAQ,EAAE,YAAY,EAAE,CAAC;CACzB;AAMD,wBAAgB,mBAAmB,CAClC,CAAC,EAAE,mBAAmB,EACtB,CAAC,EAAE,mBAAmB,EACtB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACX,sBAAsB,CAYxB;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,sBAAsB,GAAG,MAAM,CAOtE","sourcesContent":["/**\n * Compara dos ejecuciones del banco: ¿el cambio de editor mejoró o empeoró?\n *\n * Sin esto, dos JSON de resultados son datos sueltos. Con esto son una\n * respuesta a \"¿esto que acabo de tocar edita mejor o peor que antes?\".\n */\n\nimport type { ResultadosEjecucion } from \"./tipos.ts\";\n\nexport interface DeltaMetrica {\n\tnombre: string;\n\tantes: number;\n\tdespues: number;\n\tdelta: number;\n}\n\nexport interface ComparacionEjecuciones {\n\ta: { archivo: string; modelo: string; ejecutadoEn: string };\n\tb: { archivo: string; modelo: string; ejecutadoEn: string };\n\tmetricas: DeltaMetrica[];\n}\n\nfunction delta(nombre: string, antes: number, despues: number): DeltaMetrica {\n\treturn { nombre, antes, despues, delta: Math.round((despues - antes) * 10) / 10 };\n}\n\nexport function compararEjecuciones(\n\ta: ResultadosEjecucion,\n\tb: ResultadosEjecucion,\n\trutaA: string,\n\trutaB: string,\n): ComparacionEjecuciones {\n\treturn {\n\t\ta: { archivo: rutaA, modelo: `${a.proveedor}/${a.modelo}`, ejecutadoEn: a.ejecutadoEn },\n\t\tb: { archivo: rutaB, modelo: `${b.proveedor}/${b.modelo}`, ejecutadoEn: b.ejecutadoEn },\n\t\tmetricas: [\n\t\t\tdelta(\"tarea %\", a.resumen.tareaOkPct, b.resumen.tareaOkPct),\n\t\t\tdelta(\"edición %\", a.resumen.edicionOkPct, b.resumen.edicionOkPct),\n\t\t\tdelta(\"fantasma %\", a.resumen.fantasmaPct, b.resumen.fantasmaPct),\n\t\t\tdelta(\"timeout %\", a.resumen.timeoutPct, b.resumen.timeoutPct),\n\t\t\tdelta(\"error %\", a.resumen.errorPct, b.resumen.errorPct),\n\t\t],\n\t};\n}\n\nexport function formatearComparacion(c: ComparacionEjecuciones): string {\n\tconst flecha = (d: DeltaMetrica) => (d.delta > 0 ? \"▲\" : d.delta < 0 ? \"▼\" : \"=\");\n\tconst filas = c.metricas.map(\n\t\t(m) =>\n\t\t\t` ${m.nombre.padEnd(12)} ${m.antes.toFixed(1)}% → ${m.despues.toFixed(1)}% ${flecha(m)} ${Math.abs(m.delta).toFixed(1)}`,\n\t);\n\treturn [`A: ${c.a.modelo} (${c.a.archivo})`, `B: ${c.b.modelo} (${c.b.archivo})`, \"\", ...filas].join(\"\\n\");\n}\n"]}