@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,164 @@
1
+ /**
2
+ * Análisis del corpus fuente: qué ficheros hay y qué tan adversos son.
3
+ *
4
+ * Mide las mismas cuatro condiciones que pide la tarea: línea repetida,
5
+ * fichero largo con el bug en medio, bloques estructuralmente parecidos y
6
+ * código denso. La dificultad no es un adjetivo, es un filtro sobre estos
7
+ * números — así "pesadilla" siempre significa lo mismo entre ejecuciones.
8
+ */
9
+ import { readdirSync, readFileSync } from "node:fs";
10
+ import { extname, join, relative } from "node:path";
11
+ const EXTENSIONES = new Set([".ts", ".tsx"]);
12
+ const DIRS_EXCLUIDOS = new Set(["node_modules", "dist", "build", "coverage", ".git", "fixtures", "fixture"]);
13
+ function esExcluido(ruta) {
14
+ const partes = ruta.split("/");
15
+ if (partes.some((p) => DIRS_EXCLUIDOS.has(p)))
16
+ return true;
17
+ const base = partes[partes.length - 1] ?? "";
18
+ return base.includes(".test.") || base.includes(".spec.") || base.endsWith(".d.ts");
19
+ }
20
+ /** Recorre el corpus y devuelve rutas absolutas de ficheros candidatos. */
21
+ export function listarFicheros(raiz) {
22
+ const encontrados = [];
23
+ function recorrer(dir) {
24
+ let entradas;
25
+ try {
26
+ entradas = readdirSync(dir, { withFileTypes: true, encoding: "utf-8" });
27
+ }
28
+ catch {
29
+ return;
30
+ }
31
+ for (const entrada of entradas) {
32
+ const ruta = join(dir, entrada.name);
33
+ if (esExcluido(ruta))
34
+ continue;
35
+ if (entrada.isDirectory()) {
36
+ recorrer(ruta);
37
+ }
38
+ else if (entrada.isFile() && EXTENSIONES.has(extname(entrada.name))) {
39
+ encontrados.push(ruta);
40
+ }
41
+ }
42
+ }
43
+ recorrer(raiz);
44
+ return encontrados.sort();
45
+ }
46
+ const TRIVIALES = new Set(["{", "}", "};", ");", "],", "});", "return;", "break;", "continue;", ""]);
47
+ function contarLineasRepetidas(lineas) {
48
+ const posiciones = new Map();
49
+ lineas.forEach((linea, i) => {
50
+ const t = linea.trim();
51
+ if (t.length < 10 || TRIVIALES.has(t))
52
+ return;
53
+ const lista = posiciones.get(t) ?? [];
54
+ lista.push(i + 1);
55
+ posiciones.set(t, lista);
56
+ });
57
+ const repetidas = new Map();
58
+ for (const [t, pos] of posiciones)
59
+ if (pos.length >= 2)
60
+ repetidas.set(t, pos);
61
+ return repetidas;
62
+ }
63
+ /** Cuenta declaraciones de función/arrow-function: proxy barato de "bloques con forma parecida". */
64
+ function contarBloquesSimilares(contenido) {
65
+ const patron = /(?:function\s+\w+|(?:const|let)\s+\w+\s*=\s*(?:async\s*)?\([^)]*\)\s*=>)/g;
66
+ return (contenido.match(patron) ?? []).length;
67
+ }
68
+ function calcularDensidad(contenido) {
69
+ if (!contenido)
70
+ return 0;
71
+ const sinEspacios = contenido.replace(/\s/g, "").length;
72
+ return sinEspacios / contenido.length;
73
+ }
74
+ function calcularIndentMaxima(lineas) {
75
+ let max = 0;
76
+ for (const l of lineas) {
77
+ if (!l.trim())
78
+ continue;
79
+ max = Math.max(max, l.length - l.trimStart().length);
80
+ }
81
+ return max;
82
+ }
83
+ const MIN_LINEAS = 30;
84
+ const MAX_LINEAS = 800;
85
+ /** Lee y analiza el corpus completo; descarta ficheros minúsculos o gigantes. */
86
+ export function analizarCorpus(raiz) {
87
+ const resultado = [];
88
+ for (const ruta of listarFicheros(raiz)) {
89
+ let contenido;
90
+ try {
91
+ contenido = readFileSync(ruta, "utf-8");
92
+ }
93
+ catch {
94
+ continue;
95
+ }
96
+ const lineas = contenido.split("\n");
97
+ if (lineas.length < MIN_LINEAS || lineas.length > MAX_LINEAS)
98
+ continue;
99
+ if (!["function ", "class ", "export ", "=>"].some((t) => contenido.includes(t)))
100
+ continue;
101
+ resultado.push({
102
+ ruta,
103
+ relativa: relative(raiz, ruta),
104
+ contenido,
105
+ lineas,
106
+ lineasRepetidas: contarLineasRepetidas(lineas),
107
+ bloquesSimilares: contarBloquesSimilares(contenido),
108
+ densidad: calcularDensidad(contenido),
109
+ indentMaxima: calcularIndentMaxima(lineas),
110
+ });
111
+ }
112
+ return resultado;
113
+ }
114
+ /**
115
+ * Filtro de candidatos por dificultad. Cada nivel exige un tipo de condición
116
+ * adversa distinta, no solo "más grande":
117
+ * - facil: fichero corto, sin ambigüedad por repetición.
118
+ * - medio: fichero de tamaño medio.
119
+ * - dificil: fichero largo con bloques estructuralmente parecidos.
120
+ * - pesadilla: fichero largo con líneas repetidas — la ambigüedad forma
121
+ * parte del fichero, no solo del prompt.
122
+ */
123
+ export function candidatosPara(ficheros, dificultad) {
124
+ switch (dificultad) {
125
+ case "facil":
126
+ return ficheros.filter((f) => f.lineas.length < 150 && f.lineasRepetidas.size < 3);
127
+ case "medio":
128
+ return ficheros.filter((f) => f.lineas.length >= 100 && f.lineas.length <= 300);
129
+ case "dificil":
130
+ return ficheros.filter((f) => f.lineas.length > 200 && f.bloquesSimilares >= 3);
131
+ case "pesadilla":
132
+ return ficheros.filter((f) => f.lineasRepetidas.size > 0 && f.lineas.length > 200);
133
+ }
134
+ }
135
+ /** Puntuación de dificultad de UN caso concreto: mayor = más adverso. Solo informativa. */
136
+ export function puntuarDificultad(fichero, numeroLinea) {
137
+ let puntos = 0;
138
+ if (fichero.lineas.length > 300)
139
+ puntos += 3;
140
+ else if (fichero.lineas.length > 150)
141
+ puntos += 1;
142
+ const medio = fichero.lineas.length * 0.33;
143
+ const finMedio = fichero.lineas.length * 0.66;
144
+ if (numeroLinea >= medio && numeroLinea <= finMedio)
145
+ puntos += 2;
146
+ const texto = (fichero.lineas[numeroLinea - 1] ?? "").trim();
147
+ const repeticiones = fichero.lineasRepetidas.get(texto)?.length ?? 0;
148
+ puntos += Math.min(repeticiones, 5);
149
+ if (fichero.bloquesSimilares >= 5)
150
+ puntos += 3;
151
+ else if (fichero.bloquesSimilares >= 3)
152
+ puntos += 1;
153
+ if (fichero.densidad > 0.75)
154
+ puntos += 2;
155
+ else if (fichero.densidad > 0.65)
156
+ puntos += 1;
157
+ const indent = (fichero.lineas[numeroLinea - 1] ?? "").length - (fichero.lineas[numeroLinea - 1] ?? "").trimStart().length;
158
+ if (indent >= 16)
159
+ puntos += 2;
160
+ else if (indent >= 8)
161
+ puntos += 1;
162
+ return puntos;
163
+ }
164
+ //# sourceMappingURL=analisis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analisis.js","sourceRoot":"","sources":["../../../src/core/banco/analisis.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Análisis del corpus fuente: qué ficheros hay y qué tan adversos son.\n *\n * Mide las mismas cuatro condiciones que pide la tarea: línea repetida,\n * fichero largo con el bug en medio, bloques estructuralmente parecidos y\n * código denso. La dificultad no es un adjetivo, es un filtro sobre estos\n * números — así \"pesadilla\" siempre significa lo mismo entre ejecuciones.\n */\n\nimport { type Dirent, readdirSync, readFileSync } from \"node:fs\";\nimport { extname, join, relative } from \"node:path\";\nimport type { Dificultad } from \"./tipos.ts\";\n\nconst EXTENSIONES = new Set([\".ts\", \".tsx\"]);\nconst DIRS_EXCLUIDOS = new Set([\"node_modules\", \"dist\", \"build\", \"coverage\", \".git\", \"fixtures\", \"fixture\"]);\n\nfunction esExcluido(ruta: string): boolean {\n\tconst partes = ruta.split(\"/\");\n\tif (partes.some((p) => DIRS_EXCLUIDOS.has(p))) return true;\n\tconst base = partes[partes.length - 1] ?? \"\";\n\treturn base.includes(\".test.\") || base.includes(\".spec.\") || base.endsWith(\".d.ts\");\n}\n\n/** Recorre el corpus y devuelve rutas absolutas de ficheros candidatos. */\nexport function listarFicheros(raiz: string): string[] {\n\tconst encontrados: string[] = [];\n\tfunction recorrer(dir: string): void {\n\t\tlet entradas: Dirent<string>[];\n\t\ttry {\n\t\t\tentradas = readdirSync(dir, { withFileTypes: true, encoding: \"utf-8\" });\n\t\t} catch {\n\t\t\treturn;\n\t\t}\n\t\tfor (const entrada of entradas) {\n\t\t\tconst ruta = join(dir, entrada.name);\n\t\t\tif (esExcluido(ruta)) continue;\n\t\t\tif (entrada.isDirectory()) {\n\t\t\t\trecorrer(ruta);\n\t\t\t} else if (entrada.isFile() && EXTENSIONES.has(extname(entrada.name))) {\n\t\t\t\tencontrados.push(ruta);\n\t\t\t}\n\t\t}\n\t}\n\trecorrer(raiz);\n\treturn encontrados.sort();\n}\n\nconst TRIVIALES = new Set([\"{\", \"}\", \"};\", \");\", \"],\", \"});\", \"return;\", \"break;\", \"continue;\", \"\"]);\n\nexport interface FicheroAnalizado {\n\truta: string;\n\trelativa: string;\n\tcontenido: string;\n\tlineas: string[];\n\t/** Texto de línea (trim) -> números de línea (1-based) donde aparece, solo si >=2 veces. */\n\tlineasRepetidas: Map<string, number[]>;\n\tbloquesSimilares: number;\n\tdensidad: number;\n\tindentMaxima: number;\n}\n\nfunction contarLineasRepetidas(lineas: string[]): Map<string, number[]> {\n\tconst posiciones = new Map<string, number[]>();\n\tlineas.forEach((linea, i) => {\n\t\tconst t = linea.trim();\n\t\tif (t.length < 10 || TRIVIALES.has(t)) return;\n\t\tconst lista = posiciones.get(t) ?? [];\n\t\tlista.push(i + 1);\n\t\tposiciones.set(t, lista);\n\t});\n\tconst repetidas = new Map<string, number[]>();\n\tfor (const [t, pos] of posiciones) if (pos.length >= 2) repetidas.set(t, pos);\n\treturn repetidas;\n}\n\n/** Cuenta declaraciones de función/arrow-function: proxy barato de \"bloques con forma parecida\". */\nfunction contarBloquesSimilares(contenido: string): number {\n\tconst patron = /(?:function\\s+\\w+|(?:const|let)\\s+\\w+\\s*=\\s*(?:async\\s*)?\\([^)]*\\)\\s*=>)/g;\n\treturn (contenido.match(patron) ?? []).length;\n}\n\nfunction calcularDensidad(contenido: string): number {\n\tif (!contenido) return 0;\n\tconst sinEspacios = contenido.replace(/\\s/g, \"\").length;\n\treturn sinEspacios / contenido.length;\n}\n\nfunction calcularIndentMaxima(lineas: string[]): number {\n\tlet max = 0;\n\tfor (const l of lineas) {\n\t\tif (!l.trim()) continue;\n\t\tmax = Math.max(max, l.length - l.trimStart().length);\n\t}\n\treturn max;\n}\n\nconst MIN_LINEAS = 30;\nconst MAX_LINEAS = 800;\n\n/** Lee y analiza el corpus completo; descarta ficheros minúsculos o gigantes. */\nexport function analizarCorpus(raiz: string): FicheroAnalizado[] {\n\tconst resultado: FicheroAnalizado[] = [];\n\tfor (const ruta of listarFicheros(raiz)) {\n\t\tlet contenido: string;\n\t\ttry {\n\t\t\tcontenido = readFileSync(ruta, \"utf-8\");\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t\tconst lineas = contenido.split(\"\\n\");\n\t\tif (lineas.length < MIN_LINEAS || lineas.length > MAX_LINEAS) continue;\n\t\tif (![\"function \", \"class \", \"export \", \"=>\"].some((t) => contenido.includes(t))) continue;\n\t\tresultado.push({\n\t\t\truta,\n\t\t\trelativa: relative(raiz, ruta),\n\t\t\tcontenido,\n\t\t\tlineas,\n\t\t\tlineasRepetidas: contarLineasRepetidas(lineas),\n\t\t\tbloquesSimilares: contarBloquesSimilares(contenido),\n\t\t\tdensidad: calcularDensidad(contenido),\n\t\t\tindentMaxima: calcularIndentMaxima(lineas),\n\t\t});\n\t}\n\treturn resultado;\n}\n\n/**\n * Filtro de candidatos por dificultad. Cada nivel exige un tipo de condición\n * adversa distinta, no solo \"más grande\":\n * - facil: fichero corto, sin ambigüedad por repetición.\n * - medio: fichero de tamaño medio.\n * - dificil: fichero largo con bloques estructuralmente parecidos.\n * - pesadilla: fichero largo con líneas repetidas — la ambigüedad forma\n * parte del fichero, no solo del prompt.\n */\nexport function candidatosPara(ficheros: FicheroAnalizado[], dificultad: Dificultad): FicheroAnalizado[] {\n\tswitch (dificultad) {\n\t\tcase \"facil\":\n\t\t\treturn ficheros.filter((f) => f.lineas.length < 150 && f.lineasRepetidas.size < 3);\n\t\tcase \"medio\":\n\t\t\treturn ficheros.filter((f) => f.lineas.length >= 100 && f.lineas.length <= 300);\n\t\tcase \"dificil\":\n\t\t\treturn ficheros.filter((f) => f.lineas.length > 200 && f.bloquesSimilares >= 3);\n\t\tcase \"pesadilla\":\n\t\t\treturn ficheros.filter((f) => f.lineasRepetidas.size > 0 && f.lineas.length > 200);\n\t}\n}\n\n/** Puntuación de dificultad de UN caso concreto: mayor = más adverso. Solo informativa. */\nexport function puntuarDificultad(fichero: FicheroAnalizado, numeroLinea: number): number {\n\tlet puntos = 0;\n\tif (fichero.lineas.length > 300) puntos += 3;\n\telse if (fichero.lineas.length > 150) puntos += 1;\n\n\tconst medio = fichero.lineas.length * 0.33;\n\tconst finMedio = fichero.lineas.length * 0.66;\n\tif (numeroLinea >= medio && numeroLinea <= finMedio) puntos += 2;\n\n\tconst texto = (fichero.lineas[numeroLinea - 1] ?? \"\").trim();\n\tconst repeticiones = fichero.lineasRepetidas.get(texto)?.length ?? 0;\n\tpuntos += Math.min(repeticiones, 5);\n\n\tif (fichero.bloquesSimilares >= 5) puntos += 3;\n\telse if (fichero.bloquesSimilares >= 3) puntos += 1;\n\n\tif (fichero.densidad > 0.75) puntos += 2;\n\telse if (fichero.densidad > 0.65) puntos += 1;\n\n\tconst indent =\n\t\t(fichero.lineas[numeroLinea - 1] ?? \"\").length - (fichero.lineas[numeroLinea - 1] ?? \"\").trimStart().length;\n\tif (indent >= 16) puntos += 2;\n\telse if (indent >= 8) puntos += 1;\n\n\treturn puntos;\n}\n"]}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Construye el bloque que se le enseña al modelo y demuestra que es ÚNICO.
3
+ *
4
+ * El contrato de la tool `edit` real (`core/tools/edit.ts`) es: `oldText` debe
5
+ * ser único en el fichero. Este módulo aplica el MISMO contrato a la
6
+ * generación de casos: si la línea con el bug se repite en el fichero, amplía
7
+ * el bloque con contexto de arriba y abajo hasta que sea único, igual que
8
+ * tendría que hacer el propio modelo. Si no se puede — el fichero es tan
9
+ * repetitivo que ni con contexto hay una única ocurrencia — el caso se
10
+ * descarta por AMBIGUO en vez de admitirse y medir suerte.
11
+ */
12
+ /** Cuántas veces aparece `bloque` (como subsecuencia contigua) dentro de `lineas`. */
13
+ export declare function contarOcurrencias(lineas: string[], bloque: string[]): number;
14
+ export interface BloqueUnico {
15
+ /** Tal como aparece en el fichero CON el bug (lo que debe buscar `edit`). */
16
+ bloqueEntrada: string[];
17
+ /** Tal como debe quedar tras el arreglo. */
18
+ bloqueEsperado: string[];
19
+ /** Línea 1-based donde empieza el bloque en el fichero de entrada. */
20
+ lineaInicio: number;
21
+ /** false si ni ampliando al máximo se logró que `bloqueEntrada` fuera único. */
22
+ unico: boolean;
23
+ }
24
+ /**
25
+ * Amplía hacia arriba y abajo desde `indice` (0-based, la línea con el bug)
26
+ * hasta que el bloque construido sobre las líneas ORIGINALES —con la línea
27
+ * mutada sustituida en su sitio— sea único dentro de `lineasEntrada` (el
28
+ * fichero completo tal y como lo ve el modelo, con el bug ya metido).
29
+ */
30
+ export declare function construirBloqueUnico(lineasOriginales: string[], lineasEntrada: string[], indice: number, maxAmpliacion?: number): BloqueUnico;
31
+ /**
32
+ * Re-resuelve el caso desde cero: busca `bloque.bloqueEntrada` en el fichero
33
+ * de entrada y aplica el reemplazo. Si el resultado no es BYTE A BYTE
34
+ * idéntico al fichero esperado, el prompt no determina un arreglo único y el
35
+ * caso debe descartarse — esta es la comprobación que la tarea pide como
36
+ * puerta: "cada caso se valida resolviéndolo antes de admitirlo".
37
+ */
38
+ export declare function resuelveAlEsperado(contenidoEntrada: string, contenidoEsperado: string, bloque: BloqueUnico): boolean;
39
+ //# sourceMappingURL=bloques.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bloques.d.ts","sourceRoot":"","sources":["../../../src/core/banco/bloques.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,uFAAsF;AACtF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAU5E;AAED,MAAM,WAAW,WAAW;IAC3B,6EAA6E;IAC7E,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,4CAA4C;IAC5C,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,uEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;IACpB,mFAAgF;IAChF,KAAK,EAAE,OAAO,CAAC;CACf;AAID;;;;;GAKG;AACH,wBAAgB,oBAAoB,CACnC,gBAAgB,EAAE,MAAM,EAAE,EAC1B,aAAa,EAAE,MAAM,EAAE,EACvB,MAAM,EAAE,MAAM,EACd,aAAa,SAAiB,GAC5B,WAAW,CA4Bb;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAYpH","sourcesContent":["/**\n * Construye el bloque que se le enseña al modelo y demuestra que es ÚNICO.\n *\n * El contrato de la tool `edit` real (`core/tools/edit.ts`) es: `oldText` debe\n * ser único en el fichero. Este módulo aplica el MISMO contrato a la\n * generación de casos: si la línea con el bug se repite en el fichero, amplía\n * el bloque con contexto de arriba y abajo hasta que sea único, igual que\n * tendría que hacer el propio modelo. Si no se puede — el fichero es tan\n * repetitivo que ni con contexto hay una única ocurrencia — el caso se\n * descarta por AMBIGUO en vez de admitirse y medir suerte.\n */\n\n/** Cuántas veces aparece `bloque` (como subsecuencia contigua) dentro de `lineas`. */\nexport function contarOcurrencias(lineas: string[], bloque: string[]): number {\n\tif (bloque.length === 0 || bloque.length > lineas.length) return 0;\n\tlet cuenta = 0;\n\touter: for (let i = 0; i <= lineas.length - bloque.length; i++) {\n\t\tfor (let j = 0; j < bloque.length; j++) {\n\t\t\tif (lineas[i + j] !== bloque[j]) continue outer;\n\t\t}\n\t\tcuenta++;\n\t}\n\treturn cuenta;\n}\n\nexport interface BloqueUnico {\n\t/** Tal como aparece en el fichero CON el bug (lo que debe buscar `edit`). */\n\tbloqueEntrada: string[];\n\t/** Tal como debe quedar tras el arreglo. */\n\tbloqueEsperado: string[];\n\t/** Línea 1-based donde empieza el bloque en el fichero de entrada. */\n\tlineaInicio: number;\n\t/** false si ni ampliando al máximo se logró que `bloqueEntrada` fuera único. */\n\tunico: boolean;\n}\n\nconst MAX_AMPLIACION = 12;\n\n/**\n * Amplía hacia arriba y abajo desde `indice` (0-based, la línea con el bug)\n * hasta que el bloque construido sobre las líneas ORIGINALES —con la línea\n * mutada sustituida en su sitio— sea único dentro de `lineasEntrada` (el\n * fichero completo tal y como lo ve el modelo, con el bug ya metido).\n */\nexport function construirBloqueUnico(\n\tlineasOriginales: string[],\n\tlineasEntrada: string[],\n\tindice: number,\n\tmaxAmpliacion = MAX_AMPLIACION,\n): BloqueUnico {\n\tlet arriba = 0;\n\tlet abajo = 0;\n\n\tconst calcular = (): { inicio: number; bloqueEsperado: string[]; bloqueEntrada: string[] } => {\n\t\tconst inicio = indice - arriba;\n\t\tconst fin = indice + abajo;\n\t\tconst bloqueEsperado = lineasOriginales.slice(inicio, fin + 1);\n\t\tconst bloqueEntrada = lineasEntrada.slice(inicio, fin + 1);\n\t\treturn { inicio, bloqueEsperado, bloqueEntrada };\n\t};\n\n\tlet actual = calcular();\n\tlet intentos = 0;\n\twhile (contarOcurrencias(lineasEntrada, actual.bloqueEntrada) > 1 && intentos < maxAmpliacion) {\n\t\tintentos++;\n\t\tif (indice - arriba - 1 >= 0) arriba++;\n\t\telse if (indice + abajo + 1 < lineasEntrada.length) abajo++;\n\t\telse break;\n\t\tactual = calcular();\n\t}\n\n\treturn {\n\t\tbloqueEntrada: actual.bloqueEntrada,\n\t\tbloqueEsperado: actual.bloqueEsperado,\n\t\tlineaInicio: actual.inicio + 1,\n\t\tunico: contarOcurrencias(lineasEntrada, actual.bloqueEntrada) === 1,\n\t};\n}\n\n/**\n * Re-resuelve el caso desde cero: busca `bloque.bloqueEntrada` en el fichero\n * de entrada y aplica el reemplazo. Si el resultado no es BYTE A BYTE\n * idéntico al fichero esperado, el prompt no determina un arreglo único y el\n * caso debe descartarse — esta es la comprobación que la tarea pide como\n * puerta: \"cada caso se valida resolviéndolo antes de admitirlo\".\n */\nexport function resuelveAlEsperado(contenidoEntrada: string, contenidoEsperado: string, bloque: BloqueUnico): boolean {\n\tif (!bloque.unico) return false;\n\tconst lineas = contenidoEntrada.split(\"\\n\");\n\tconst ocurrencias = contarOcurrencias(lineas, bloque.bloqueEntrada);\n\tif (ocurrencias !== 1) return false;\n\tconst inicio = bloque.lineaInicio - 1;\n\tconst resultado = [\n\t\t...lineas.slice(0, inicio),\n\t\t...bloque.bloqueEsperado,\n\t\t...lineas.slice(inicio + bloque.bloqueEntrada.length),\n\t].join(\"\\n\");\n\treturn resultado === contenidoEsperado;\n}\n"]}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Construye el bloque que se le enseña al modelo y demuestra que es ÚNICO.
3
+ *
4
+ * El contrato de la tool `edit` real (`core/tools/edit.ts`) es: `oldText` debe
5
+ * ser único en el fichero. Este módulo aplica el MISMO contrato a la
6
+ * generación de casos: si la línea con el bug se repite en el fichero, amplía
7
+ * el bloque con contexto de arriba y abajo hasta que sea único, igual que
8
+ * tendría que hacer el propio modelo. Si no se puede — el fichero es tan
9
+ * repetitivo que ni con contexto hay una única ocurrencia — el caso se
10
+ * descarta por AMBIGUO en vez de admitirse y medir suerte.
11
+ */
12
+ /** Cuántas veces aparece `bloque` (como subsecuencia contigua) dentro de `lineas`. */
13
+ export function contarOcurrencias(lineas, bloque) {
14
+ if (bloque.length === 0 || bloque.length > lineas.length)
15
+ return 0;
16
+ let cuenta = 0;
17
+ outer: for (let i = 0; i <= lineas.length - bloque.length; i++) {
18
+ for (let j = 0; j < bloque.length; j++) {
19
+ if (lineas[i + j] !== bloque[j])
20
+ continue outer;
21
+ }
22
+ cuenta++;
23
+ }
24
+ return cuenta;
25
+ }
26
+ const MAX_AMPLIACION = 12;
27
+ /**
28
+ * Amplía hacia arriba y abajo desde `indice` (0-based, la línea con el bug)
29
+ * hasta que el bloque construido sobre las líneas ORIGINALES —con la línea
30
+ * mutada sustituida en su sitio— sea único dentro de `lineasEntrada` (el
31
+ * fichero completo tal y como lo ve el modelo, con el bug ya metido).
32
+ */
33
+ export function construirBloqueUnico(lineasOriginales, lineasEntrada, indice, maxAmpliacion = MAX_AMPLIACION) {
34
+ let arriba = 0;
35
+ let abajo = 0;
36
+ const calcular = () => {
37
+ const inicio = indice - arriba;
38
+ const fin = indice + abajo;
39
+ const bloqueEsperado = lineasOriginales.slice(inicio, fin + 1);
40
+ const bloqueEntrada = lineasEntrada.slice(inicio, fin + 1);
41
+ return { inicio, bloqueEsperado, bloqueEntrada };
42
+ };
43
+ let actual = calcular();
44
+ let intentos = 0;
45
+ while (contarOcurrencias(lineasEntrada, actual.bloqueEntrada) > 1 && intentos < maxAmpliacion) {
46
+ intentos++;
47
+ if (indice - arriba - 1 >= 0)
48
+ arriba++;
49
+ else if (indice + abajo + 1 < lineasEntrada.length)
50
+ abajo++;
51
+ else
52
+ break;
53
+ actual = calcular();
54
+ }
55
+ return {
56
+ bloqueEntrada: actual.bloqueEntrada,
57
+ bloqueEsperado: actual.bloqueEsperado,
58
+ lineaInicio: actual.inicio + 1,
59
+ unico: contarOcurrencias(lineasEntrada, actual.bloqueEntrada) === 1,
60
+ };
61
+ }
62
+ /**
63
+ * Re-resuelve el caso desde cero: busca `bloque.bloqueEntrada` en el fichero
64
+ * de entrada y aplica el reemplazo. Si el resultado no es BYTE A BYTE
65
+ * idéntico al fichero esperado, el prompt no determina un arreglo único y el
66
+ * caso debe descartarse — esta es la comprobación que la tarea pide como
67
+ * puerta: "cada caso se valida resolviéndolo antes de admitirlo".
68
+ */
69
+ export function resuelveAlEsperado(contenidoEntrada, contenidoEsperado, bloque) {
70
+ if (!bloque.unico)
71
+ return false;
72
+ const lineas = contenidoEntrada.split("\n");
73
+ const ocurrencias = contarOcurrencias(lineas, bloque.bloqueEntrada);
74
+ if (ocurrencias !== 1)
75
+ return false;
76
+ const inicio = bloque.lineaInicio - 1;
77
+ const resultado = [
78
+ ...lineas.slice(0, inicio),
79
+ ...bloque.bloqueEsperado,
80
+ ...lineas.slice(inicio + bloque.bloqueEntrada.length),
81
+ ].join("\n");
82
+ return resultado === contenidoEsperado;
83
+ }
84
+ //# sourceMappingURL=bloques.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bloques.js","sourceRoot":"","sources":["../../../src/core/banco/bloques.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,uFAAsF;AACtF,MAAM,UAAU,iBAAiB,CAAC,MAAgB,EAAE,MAAgB,EAAU;IAC7E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IACnE,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;gBAAE,SAAS,KAAK,CAAC;QACjD,CAAC;QACD,MAAM,EAAE,CAAC;IACV,CAAC;IACD,OAAO,MAAM,CAAC;AAAA,CACd;AAaD,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CACnC,gBAA0B,EAC1B,aAAuB,EACvB,MAAc,EACd,aAAa,GAAG,cAAc,EAChB;IACd,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,MAAM,QAAQ,GAAG,GAA0E,EAAE,CAAC;QAC7F,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,GAAG,KAAK,CAAC;QAC3B,MAAM,cAAc,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAC/D,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAC3D,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC;IAAA,CACjD,CAAC;IAEF,IAAI,MAAM,GAAG,QAAQ,EAAE,CAAC;IACxB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,OAAO,iBAAiB,CAAC,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,QAAQ,GAAG,aAAa,EAAE,CAAC;QAC/F,QAAQ,EAAE,CAAC;QACX,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC;YAAE,MAAM,EAAE,CAAC;aAClC,IAAI,MAAM,GAAG,KAAK,GAAG,CAAC,GAAG,aAAa,CAAC,MAAM;YAAE,KAAK,EAAE,CAAC;;YACvD,MAAM;QACX,MAAM,GAAG,QAAQ,EAAE,CAAC;IACrB,CAAC;IAED,OAAO;QACN,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,WAAW,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC;QAC9B,KAAK,EAAE,iBAAiB,CAAC,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;KACnE,CAAC;AAAA,CACF;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,gBAAwB,EAAE,iBAAyB,EAAE,MAAmB,EAAW;IACrH,IAAI,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAChC,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IACpE,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG;QACjB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC;QAC1B,GAAG,MAAM,CAAC,cAAc;QACxB,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;KACrD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,SAAS,KAAK,iBAAiB,CAAC;AAAA,CACvC","sourcesContent":["/**\n * Construye el bloque que se le enseña al modelo y demuestra que es ÚNICO.\n *\n * El contrato de la tool `edit` real (`core/tools/edit.ts`) es: `oldText` debe\n * ser único en el fichero. Este módulo aplica el MISMO contrato a la\n * generación de casos: si la línea con el bug se repite en el fichero, amplía\n * el bloque con contexto de arriba y abajo hasta que sea único, igual que\n * tendría que hacer el propio modelo. Si no se puede — el fichero es tan\n * repetitivo que ni con contexto hay una única ocurrencia — el caso se\n * descarta por AMBIGUO en vez de admitirse y medir suerte.\n */\n\n/** Cuántas veces aparece `bloque` (como subsecuencia contigua) dentro de `lineas`. */\nexport function contarOcurrencias(lineas: string[], bloque: string[]): number {\n\tif (bloque.length === 0 || bloque.length > lineas.length) return 0;\n\tlet cuenta = 0;\n\touter: for (let i = 0; i <= lineas.length - bloque.length; i++) {\n\t\tfor (let j = 0; j < bloque.length; j++) {\n\t\t\tif (lineas[i + j] !== bloque[j]) continue outer;\n\t\t}\n\t\tcuenta++;\n\t}\n\treturn cuenta;\n}\n\nexport interface BloqueUnico {\n\t/** Tal como aparece en el fichero CON el bug (lo que debe buscar `edit`). */\n\tbloqueEntrada: string[];\n\t/** Tal como debe quedar tras el arreglo. */\n\tbloqueEsperado: string[];\n\t/** Línea 1-based donde empieza el bloque en el fichero de entrada. */\n\tlineaInicio: number;\n\t/** false si ni ampliando al máximo se logró que `bloqueEntrada` fuera único. */\n\tunico: boolean;\n}\n\nconst MAX_AMPLIACION = 12;\n\n/**\n * Amplía hacia arriba y abajo desde `indice` (0-based, la línea con el bug)\n * hasta que el bloque construido sobre las líneas ORIGINALES —con la línea\n * mutada sustituida en su sitio— sea único dentro de `lineasEntrada` (el\n * fichero completo tal y como lo ve el modelo, con el bug ya metido).\n */\nexport function construirBloqueUnico(\n\tlineasOriginales: string[],\n\tlineasEntrada: string[],\n\tindice: number,\n\tmaxAmpliacion = MAX_AMPLIACION,\n): BloqueUnico {\n\tlet arriba = 0;\n\tlet abajo = 0;\n\n\tconst calcular = (): { inicio: number; bloqueEsperado: string[]; bloqueEntrada: string[] } => {\n\t\tconst inicio = indice - arriba;\n\t\tconst fin = indice + abajo;\n\t\tconst bloqueEsperado = lineasOriginales.slice(inicio, fin + 1);\n\t\tconst bloqueEntrada = lineasEntrada.slice(inicio, fin + 1);\n\t\treturn { inicio, bloqueEsperado, bloqueEntrada };\n\t};\n\n\tlet actual = calcular();\n\tlet intentos = 0;\n\twhile (contarOcurrencias(lineasEntrada, actual.bloqueEntrada) > 1 && intentos < maxAmpliacion) {\n\t\tintentos++;\n\t\tif (indice - arriba - 1 >= 0) arriba++;\n\t\telse if (indice + abajo + 1 < lineasEntrada.length) abajo++;\n\t\telse break;\n\t\tactual = calcular();\n\t}\n\n\treturn {\n\t\tbloqueEntrada: actual.bloqueEntrada,\n\t\tbloqueEsperado: actual.bloqueEsperado,\n\t\tlineaInicio: actual.inicio + 1,\n\t\tunico: contarOcurrencias(lineasEntrada, actual.bloqueEntrada) === 1,\n\t};\n}\n\n/**\n * Re-resuelve el caso desde cero: busca `bloque.bloqueEntrada` en el fichero\n * de entrada y aplica el reemplazo. Si el resultado no es BYTE A BYTE\n * idéntico al fichero esperado, el prompt no determina un arreglo único y el\n * caso debe descartarse — esta es la comprobación que la tarea pide como\n * puerta: \"cada caso se valida resolviéndolo antes de admitirlo\".\n */\nexport function resuelveAlEsperado(contenidoEntrada: string, contenidoEsperado: string, bloque: BloqueUnico): boolean {\n\tif (!bloque.unico) return false;\n\tconst lineas = contenidoEntrada.split(\"\\n\");\n\tconst ocurrencias = contarOcurrencias(lineas, bloque.bloqueEntrada);\n\tif (ocurrencias !== 1) return false;\n\tconst inicio = bloque.lineaInicio - 1;\n\tconst resultado = [\n\t\t...lineas.slice(0, inicio),\n\t\t...bloque.bloqueEsperado,\n\t\t...lineas.slice(inicio + bloque.bloqueEntrada.length),\n\t].join(\"\\n\");\n\treturn resultado === contenidoEsperado;\n}\n"]}
@@ -0,0 +1,84 @@
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
+ /** Qué debería pasar con una carga. Lo declara el caso, no lo decide el motor. */
34
+ export type Esperado = "aplica" | "rechaza";
35
+ export interface CargaMalFormada {
36
+ id: string;
37
+ /** Qué error del modelo reproduce, en una línea. */
38
+ error: string;
39
+ /** El fichero tal cual está en disco. */
40
+ fichero: string;
41
+ ediciones: ReadonlyArray<{
42
+ oldText: string;
43
+ newText: string;
44
+ }>;
45
+ /**
46
+ * `aplica` = el motor DEBERÍA recuperarlo. `rechaza` = debería negarse.
47
+ *
48
+ * Hay casos que deben rechazarse y esos son los que impiden que este banco
49
+ * premie a un motor que acepta todo. Sin ellos, «aplicar más» sería siempre
50
+ * mejor puntuación, y eso es exactamente el error de medición que queremos
51
+ * evitar.
52
+ */
53
+ esperado: Esperado;
54
+ /** El fichero resultante correcto. Solo para los `aplica`. */
55
+ resultado?: string;
56
+ }
57
+ /**
58
+ * El corpus. Cada caso es un error que un modelo comete DE VERDAD.
59
+ *
60
+ * No están inventados: salen de la comparación motor contra motor de oh-my-pi y
61
+ * de la sonda de nueve casos que se ejecutó sobre este repositorio.
62
+ */
63
+ export declare const CARGAS: readonly CargaMalFormada[];
64
+ export type Veredicto = "correcto" | "corrupto" | "rechazado" | "rechazado-bien";
65
+ export interface ResultadoDeCarga {
66
+ id: string;
67
+ error: string;
68
+ esperado: Esperado;
69
+ veredicto: Veredicto;
70
+ /** Qué salió, cuando salió mal. Para poder leer el fallo sin reproducirlo. */
71
+ detalle?: string;
72
+ }
73
+ /** Pasa una carga por el motor y clasifica el resultado en tres estados. */
74
+ export declare function evaluarCarga(carga: CargaMalFormada): ResultadoDeCarga;
75
+ export interface Puntuacion {
76
+ correctos: number;
77
+ corruptos: number;
78
+ rechazados: number;
79
+ rechazadosBien: number;
80
+ total: number;
81
+ resultados: readonly ResultadoDeCarga[];
82
+ }
83
+ export declare function evaluarTodas(cargas?: readonly CargaMalFormada[]): Puntuacion;
84
+ //# sourceMappingURL=cargas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cargas.d.ts","sourceRoot":"","sources":["../../../src/core/banco/cargas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAIH,oFAAkF;AAClF,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,sDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,0CAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D;;;;;;;OAOG;IACH,QAAQ,EAAE,QAAQ,CAAC;IACnB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AA0GD;;;;;GAKG;AACH,eAAO,MAAM,MAAM,EAAE,SAAS,eAAe,EA0V5C,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAEjF,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,iFAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,CAuBrE;AAED,MAAM,WAAW,UAAU;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACxC;AAED,wBAAgB,YAAY,CAAC,MAAM,GAAE,SAAS,eAAe,EAAW,GAAG,UAAU,CAUpF","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"]}