@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,124 @@
1
+ /**
2
+ * ¿Sigue parseando el fichero después de la edición?
3
+ *
4
+ * El fallo más caro de un agente que edita no es equivocarse de lógica: es
5
+ * dejar el fichero sintácticamente roto y seguir trabajando encima como si nada.
6
+ * Hasta ahora, saber si el proyecto compilaba exigía un `npm run check` que el
7
+ * modelo no lanza solo.
8
+ *
9
+ * Sin dependencias nuevas. Se usa el compilador de TypeScript que ya está
10
+ * instalado, que cubre `.ts/.tsx/.js/.jsx/.mts/.cts/.mjs/.cjs`, más `JSON.parse`
11
+ * para `.json`. Es el grueso de lo que edita nuestro usuario. Tree-sitter
12
+ * cubriría además Python, Go y Rust, pero trae binarios nativos por plataforma
13
+ * —el mismo problema que ya nos dio `srt` con `bun --compile`— y eso no tiene
14
+ * por qué estar en el camino crítico.
15
+ *
16
+ * La regla que hace esto seguro, copiada de oh-my-pi porque es la correcta:
17
+ * **solo se acusa a la edición si la preimagen parseaba**. Un lenguaje que no
18
+ * sabemos leer devuelve `null` en las dos, así que nunca produce un falso
19
+ * positivo; y un fichero que ya estaba roto tampoco se le atribuye a quien
20
+ * acaba de tocarlo.
21
+ */
22
+ import ts from "typescript";
23
+ /** Extensiones que sabe leer el compilador de TypeScript. */
24
+ const TS_LIKE = new Set([".ts", ".tsx", ".mts", ".cts", ".js", ".jsx", ".mjs", ".cjs"]);
25
+ function extensionDe(ruta) {
26
+ const punto = ruta.lastIndexOf(".");
27
+ return punto === -1 ? "" : ruta.slice(punto).toLowerCase();
28
+ }
29
+ /**
30
+ * `true` parsea · `false` no parsea · `null` no sabemos leer este lenguaje.
31
+ *
32
+ * Los tres valores importan. Colapsar `null` en `true` haría que un `.py` roto
33
+ * pareciera sano; colapsarlo en `false` acusaría a cada edición de Python.
34
+ */
35
+ export function parsea(codigo, ruta) {
36
+ const ext = extensionDe(ruta);
37
+ if (ext === ".json") {
38
+ // Un JSON vacío no es JSON válido, pero tampoco es un fichero roto por
39
+ // una edición: es un fichero a medio escribir. Se trata como desconocido.
40
+ if (codigo.trim() === "")
41
+ return null;
42
+ try {
43
+ JSON.parse(codigo);
44
+ return true;
45
+ }
46
+ catch {
47
+ return false;
48
+ }
49
+ }
50
+ if (!TS_LIKE.has(ext))
51
+ return null;
52
+ // El fichero vacío es válido en todos los lenguajes que miramos: devolver
53
+ // `false` haría que crear un fichero contara como romperlo.
54
+ const fuente = ts.createSourceFile(ruta, codigo, ts.ScriptTarget.Latest, false);
55
+ // `parseDiagnostics` no está en el tipo público de `SourceFile`, y aun así es
56
+ // lo correcto aquí. Medido contra 10 casos: la alternativa pública
57
+ // (`transpileModule` con `reportDiagnostics`) falla 7 de 10 — da por rotos
58
+ // una coma final, un decorador, `satisfies`, el fichero vacío y hasta
59
+ // `export function a(x){return x+1}`, porque incluye diagnósticos de opciones
60
+ // del compilador que no tienen nada que ver con la sintaxis. `parseDiagnostics`
61
+ // acierta 10/10 e ignora los errores de TIPOS, que es justo lo que queremos:
62
+ // un `const a: NoExiste = 1` compila mal pero no está roto.
63
+ //
64
+ // Si TypeScript se lo lleva algún día, se devuelve `null` —"no sabemos"— y no
65
+ // `true`. Equivocarse hacia "no sabemos" cuesta un aviso que no sale;
66
+ // equivocarse hacia "parsea" cuesta dar por bueno un fichero roto.
67
+ const diagnosticos = fuente.parseDiagnostics;
68
+ if (!Array.isArray(diagnosticos))
69
+ return null;
70
+ return diagnosticos.length === 0;
71
+ }
72
+ /** El primer error de sintaxis, con su línea. `null` si no hay o no se sabe leer. */
73
+ export function primerErrorDe(codigo, ruta) {
74
+ const ext = extensionDe(ruta);
75
+ if (ext === ".json") {
76
+ try {
77
+ JSON.parse(codigo);
78
+ return null;
79
+ }
80
+ catch (e) {
81
+ // El mensaje de `JSON.parse` ya trae posición ("at position 42"), que
82
+ // para un fichero de datos es tan útil como el número de línea.
83
+ return { linea: 0, mensaje: e instanceof Error ? e.message : "JSON inválido" };
84
+ }
85
+ }
86
+ if (!TS_LIKE.has(ext))
87
+ return null;
88
+ const fuente = ts.createSourceFile(ruta, codigo, ts.ScriptTarget.Latest, false);
89
+ const diagnosticos = fuente.parseDiagnostics;
90
+ if (!Array.isArray(diagnosticos) || diagnosticos.length === 0)
91
+ return null;
92
+ const primero = diagnosticos[0];
93
+ const posicion = primero.start !== undefined ? fuente.getLineAndCharacterOfPosition(primero.start) : null;
94
+ return {
95
+ linea: posicion ? posicion.line + 1 : 0,
96
+ mensaje: ts.flattenDiagnosticMessageText(primero.messageText, " "),
97
+ };
98
+ }
99
+ /**
100
+ * `true` solo si esta edición convirtió un fichero que parseaba en uno que no.
101
+ *
102
+ * Nunca es `true` cuando la preimagen no parseaba o no se sabía leer: esa
103
+ * precondición es la que evita acusar a quien no ha roto nada.
104
+ */
105
+ export function rompioElParseo({ ruta, antes, despues }) {
106
+ if (antes === null || despues === null)
107
+ return false;
108
+ return parsea(antes, ruta) === true && parsea(despues, ruta) === false;
109
+ }
110
+ /**
111
+ * El aviso que se le devuelve al modelo, en su propio resultado de edición.
112
+ *
113
+ * Se le dice el qué y el siguiente paso. Un "syntax error" a secas invita a
114
+ * seguir editando a ciegas, que es como una edición rota se convierte en tres.
115
+ */
116
+ export function avisoDeParseoRoto(ruta, error) {
117
+ // Con la línea y el mensaje exactos, no con un "está roto" genérico. La
118
+ // diferencia práctica es entre releer el fichero entero adivinando y saber
119
+ // que en la 42 falta una llave. Sale gratis: el compilador ya lo tenía.
120
+ const donde = error ? (error.linea > 0 ? ` En la línea ${error.linea}: ${error.mensaje}` : ` ${error.mensaje}`) : "";
121
+ return (`⚠ Esta edición ha dejado \`${ruta}\` sintácticamente roto: antes parseaba y ahora no.${donde} ` +
122
+ `Arréglalo antes de seguir con otra cosa.`);
123
+ }
124
+ //# sourceMappingURL=parseo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseo.js","sourceRoot":"","sources":["../../../src/core/edicion/parseo.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * ¿Sigue parseando el fichero después de la edición?\n *\n * El fallo más caro de un agente que edita no es equivocarse de lógica: es\n * dejar el fichero sintácticamente roto y seguir trabajando encima como si nada.\n * Hasta ahora, saber si el proyecto compilaba exigía un `npm run check` que el\n * modelo no lanza solo.\n *\n * Sin dependencias nuevas. Se usa el compilador de TypeScript que ya está\n * instalado, que cubre `.ts/.tsx/.js/.jsx/.mts/.cts/.mjs/.cjs`, más `JSON.parse`\n * para `.json`. Es el grueso de lo que edita nuestro usuario. Tree-sitter\n * cubriría además Python, Go y Rust, pero trae binarios nativos por plataforma\n * —el mismo problema que ya nos dio `srt` con `bun --compile`— y eso no tiene\n * por qué estar en el camino crítico.\n *\n * La regla que hace esto seguro, copiada de oh-my-pi porque es la correcta:\n * **solo se acusa a la edición si la preimagen parseaba**. Un lenguaje que no\n * sabemos leer devuelve `null` en las dos, así que nunca produce un falso\n * positivo; y un fichero que ya estaba roto tampoco se le atribuye a quien\n * acaba de tocarlo.\n */\n\nimport ts from \"typescript\";\n\n/** Extensiones que sabe leer el compilador de TypeScript. */\nconst TS_LIKE = new Set([\".ts\", \".tsx\", \".mts\", \".cts\", \".js\", \".jsx\", \".mjs\", \".cjs\"]);\n\nfunction extensionDe(ruta: string): string {\n\tconst punto = ruta.lastIndexOf(\".\");\n\treturn punto === -1 ? \"\" : ruta.slice(punto).toLowerCase();\n}\n\n/**\n * `true` parsea · `false` no parsea · `null` no sabemos leer este lenguaje.\n *\n * Los tres valores importan. Colapsar `null` en `true` haría que un `.py` roto\n * pareciera sano; colapsarlo en `false` acusaría a cada edición de Python.\n */\nexport function parsea(codigo: string, ruta: string): boolean | null {\n\tconst ext = extensionDe(ruta);\n\n\tif (ext === \".json\") {\n\t\t// Un JSON vacío no es JSON válido, pero tampoco es un fichero roto por\n\t\t// una edición: es un fichero a medio escribir. Se trata como desconocido.\n\t\tif (codigo.trim() === \"\") return null;\n\t\ttry {\n\t\t\tJSON.parse(codigo);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tif (!TS_LIKE.has(ext)) return null;\n\n\t// El fichero vacío es válido en todos los lenguajes que miramos: devolver\n\t// `false` haría que crear un fichero contara como romperlo.\n\tconst fuente = ts.createSourceFile(ruta, codigo, ts.ScriptTarget.Latest, false);\n\n\t// `parseDiagnostics` no está en el tipo público de `SourceFile`, y aun así es\n\t// lo correcto aquí. Medido contra 10 casos: la alternativa pública\n\t// (`transpileModule` con `reportDiagnostics`) falla 7 de 10 — da por rotos\n\t// una coma final, un decorador, `satisfies`, el fichero vacío y hasta\n\t// `export function a(x){return x+1}`, porque incluye diagnósticos de opciones\n\t// del compilador que no tienen nada que ver con la sintaxis. `parseDiagnostics`\n\t// acierta 10/10 e ignora los errores de TIPOS, que es justo lo que queremos:\n\t// un `const a: NoExiste = 1` compila mal pero no está roto.\n\t//\n\t// Si TypeScript se lo lleva algún día, se devuelve `null` —\"no sabemos\"— y no\n\t// `true`. Equivocarse hacia \"no sabemos\" cuesta un aviso que no sale;\n\t// equivocarse hacia \"parsea\" cuesta dar por bueno un fichero roto.\n\tconst diagnosticos = (fuente as ts.SourceFile & { parseDiagnostics?: unknown }).parseDiagnostics;\n\tif (!Array.isArray(diagnosticos)) return null;\n\treturn diagnosticos.length === 0;\n}\n\n/** El primer error de sintaxis, con su línea. `null` si no hay o no se sabe leer. */\nexport function primerErrorDe(codigo: string, ruta: string): { linea: number; mensaje: string } | null {\n\tconst ext = extensionDe(ruta);\n\tif (ext === \".json\") {\n\t\ttry {\n\t\t\tJSON.parse(codigo);\n\t\t\treturn null;\n\t\t} catch (e) {\n\t\t\t// El mensaje de `JSON.parse` ya trae posición (\"at position 42\"), que\n\t\t\t// para un fichero de datos es tan útil como el número de línea.\n\t\t\treturn { linea: 0, mensaje: e instanceof Error ? e.message : \"JSON inválido\" };\n\t\t}\n\t}\n\tif (!TS_LIKE.has(ext)) return null;\n\tconst fuente = ts.createSourceFile(ruta, codigo, ts.ScriptTarget.Latest, false);\n\tconst diagnosticos = (fuente as ts.SourceFile & { parseDiagnostics?: unknown }).parseDiagnostics;\n\tif (!Array.isArray(diagnosticos) || diagnosticos.length === 0) return null;\n\tconst primero = diagnosticos[0] as ts.Diagnostic;\n\tconst posicion = primero.start !== undefined ? fuente.getLineAndCharacterOfPosition(primero.start) : null;\n\treturn {\n\t\tlinea: posicion ? posicion.line + 1 : 0,\n\t\tmensaje: ts.flattenDiagnosticMessageText(primero.messageText, \" \"),\n\t};\n}\n\nexport interface Edicion {\n\truta: string;\n\t/** Contenido antes. `null` si el fichero no existía. */\n\tantes: string | null;\n\t/** Contenido después. `null` si se borró. */\n\tdespues: string | null;\n}\n\n/**\n * `true` solo si esta edición convirtió un fichero que parseaba en uno que no.\n *\n * Nunca es `true` cuando la preimagen no parseaba o no se sabía leer: esa\n * precondición es la que evita acusar a quien no ha roto nada.\n */\nexport function rompioElParseo({ ruta, antes, despues }: Edicion): boolean {\n\tif (antes === null || despues === null) return false;\n\treturn parsea(antes, ruta) === true && parsea(despues, ruta) === false;\n}\n\n/**\n * El aviso que se le devuelve al modelo, en su propio resultado de edición.\n *\n * Se le dice el qué y el siguiente paso. Un \"syntax error\" a secas invita a\n * seguir editando a ciegas, que es como una edición rota se convierte en tres.\n */\nexport function avisoDeParseoRoto(ruta: string, error?: { linea: number; mensaje: string } | null): string {\n\t// Con la línea y el mensaje exactos, no con un \"está roto\" genérico. La\n\t// diferencia práctica es entre releer el fichero entero adivinando y saber\n\t// que en la 42 falta una llave. Sale gratis: el compilador ya lo tenía.\n\tconst donde = error ? (error.linea > 0 ? ` En la línea ${error.linea}: ${error.mensaje}` : ` ${error.mensaje}`) : \"\";\n\treturn (\n\t\t`⚠ Esta edición ha dejado \\`${ruta}\\` sintácticamente roto: antes parseaba y ahora no.${donde} ` +\n\t\t`Arréglalo antes de seguir con otra cosa.`\n\t);\n}\n"]}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Auto-reparación de una edición que rompió el parseo.
3
+ *
4
+ * Cuando `parseo.ts` detecta que una edición convirtió un fichero que
5
+ * parseaba en uno que no, esto intenta arreglarlo solo: localiza el conjunto
6
+ * mínimo de hunks (líneas cambiadas) cuya reversión restaura el parseo, le
7
+ * pide al modelo que arregle SOLO esa región mostrándole la versión sin
8
+ * romper como referencia, y acepta el resultado únicamente si (a) el
9
+ * fichero entero vuelve a parsear Y (b) lo que devolvió el modelo no es,
10
+ * quitando espacios, un calco de la referencia — es decir, no es una simple
11
+ * reversión del cambio que el usuario pidió.
12
+ *
13
+ * La idea y el reparto de responsabilidades vienen de `oh-my-pi`
14
+ * (packages/coding-agent/src/edit/auto-repair.ts): localizar antes de
15
+ * preguntar, y rechazar la reversión aunque parsee. Lo que cambia aquí es la
16
+ * implementación: sin tree-sitter (usamos el mismo `parsea()` de
17
+ * `parseo.ts`, que ya cubre lo que este fork edita) y con el paquete `diff`
18
+ * que este proyecto ya trae en vez de un diff de líneas propio.
19
+ */
20
+ /** La región rota localizada, con su referencia (culpables revertidos) para enseñarle al modelo. */
21
+ export interface RegionDeReparacion {
22
+ /** Tramo de líneas sustituido en el fichero roto, `[bInicio, bFin)`. */
23
+ bInicio: number;
24
+ bFin: number;
25
+ /** La región tal cual está en el fichero roto. */
26
+ textoRoto: string;
27
+ /** La misma región con los hunks culpables revertidos: empalmarla restaura el parseo. */
28
+ textoReferencia: string;
29
+ }
30
+ /**
31
+ * Localiza la rotura de `antes → despues` a una región de líneas acotada.
32
+ * `undefined` cuando no se puede aislar o cuando la región supera
33
+ * {@link MAX_LINEAS_REGION} — quien llama se queda entonces con el aviso de
34
+ * parseo roto normal.
35
+ */
36
+ export declare function calcularRegionDeReparacion(instantanea: {
37
+ ruta: string;
38
+ antes: string;
39
+ despues: string;
40
+ }): RegionDeReparacion | undefined;
41
+ /** Qué pasó al intentar reparar. Nunca colapsa "no pude intentarlo" con "lo intenté y no valió". */
42
+ export type ResultadoReparacion = {
43
+ estado: "reparado";
44
+ contenido: string;
45
+ intentos: number;
46
+ }
47
+ /** No había con qué preguntar (sin modelo) o la rotura no se pudo aislar/acotar. */
48
+ | {
49
+ estado: "no-aplicable";
50
+ }
51
+ /** Se preguntó al modelo pero ningún intento cumplió las dos condiciones de aceptación. */
52
+ | {
53
+ estado: "rechazada";
54
+ };
55
+ /**
56
+ * Intenta reparar una edición que rompió el parseo, preguntándole a `completar`.
57
+ *
58
+ * `completar` devuelve `null` cuando no pudo completarse (sin modelo, sin
59
+ * red, error de la API…): eso es "no-aplicable", nunca "rechazada" — una
60
+ * reparación rechazada es una que SE INTENTÓ y no sirvió.
61
+ */
62
+ export declare function intentarReparar(instantanea: {
63
+ ruta: string;
64
+ antes: string;
65
+ despues: string;
66
+ }, completar?: (prompt: string) => Promise<string | null>): Promise<ResultadoReparacion>;
67
+ //# sourceMappingURL=reparacion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reparacion.d.ts","sourceRoot":"","sources":["../../../src/core/edicion/reparacion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAmGH,sGAAoG;AACpG,MAAM,WAAW,kBAAkB;IAClC,yEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,oDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,0FAAyF;IACzF,eAAe,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CAChB,GAAG,kBAAkB,GAAG,SAAS,CA4BjC;AAkCD,wGAAoG;AACpG,MAAM,MAAM,mBAAmB,GAC5B;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AAC7D,sFAAoF;GAClF;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE;AAC5B,+FAA2F;GACzF;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC;AAE3B;;;;;;GAMG;AACH,wBAAsB,eAAe,CACpC,WAAW,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAC7D,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GACpD,OAAO,CAAC,mBAAmB,CAAC,CA2B9B","sourcesContent":["/**\n * Auto-reparación de una edición que rompió el parseo.\n *\n * Cuando `parseo.ts` detecta que una edición convirtió un fichero que\n * parseaba en uno que no, esto intenta arreglarlo solo: localiza el conjunto\n * mínimo de hunks (líneas cambiadas) cuya reversión restaura el parseo, le\n * pide al modelo que arregle SOLO esa región mostrándole la versión sin\n * romper como referencia, y acepta el resultado únicamente si (a) el\n * fichero entero vuelve a parsear Y (b) lo que devolvió el modelo no es,\n * quitando espacios, un calco de la referencia — es decir, no es una simple\n * reversión del cambio que el usuario pidió.\n *\n * La idea y el reparto de responsabilidades vienen de `oh-my-pi`\n * (packages/coding-agent/src/edit/auto-repair.ts): localizar antes de\n * preguntar, y rechazar la reversión aunque parsee. Lo que cambia aquí es la\n * implementación: sin tree-sitter (usamos el mismo `parsea()` de\n * `parseo.ts`, que ya cubre lo que este fork edita) y con el paquete `diff`\n * que este proyecto ya trae en vez de un diff de líneas propio.\n */\n\nimport * as Diff from \"diff\";\nimport { parsea } from \"./parseo.ts\";\n\n/** Cuántas líneas de contexto se enseñan alrededor de los hunks culpables. */\nconst LINEAS_DE_CONTEXTO = 6;\n/** Región más grande que merece la pena mandarle a un modelo. */\nconst MAX_LINEAS_REGION = 150;\n/** Un primer intento y un reintento con el rechazo anterior como pista. */\nconst MAX_INTENTOS = 2;\n\n/** Un tramo de líneas cambiado, en coordenadas de preimagen (`a`) y posimagen (`b`). */\ninterface Hunk {\n\taInicio: number;\n\taFin: number;\n\tbInicio: number;\n\tbFin: number;\n}\n\nfunction construirHunks(antes: string, despues: string): { hunks: Hunk[]; a: string[]; b: string[] } {\n\tconst a = antes.split(\"\\n\");\n\tconst b = despues.split(\"\\n\");\n\tconst partes = Diff.diffLines(antes, despues);\n\tconst hunks: Hunk[] = [];\n\tlet ai = 0;\n\tlet bi = 0;\n\tfor (const parte of partes) {\n\t\tconst lineas = parte.count ?? 0;\n\t\tif (!parte.added && !parte.removed) {\n\t\t\tai += lineas;\n\t\t\tbi += lineas;\n\t\t\tcontinue;\n\t\t}\n\t\tconst borradas = parte.removed ? lineas : 0;\n\t\tconst anadidas = parte.added ? lineas : 0;\n\t\t// Un borrado seguido de un añadido contiguos son la misma edición\n\t\t// (una sustitución), no dos hunks distintos que reventar por separado.\n\t\tconst ultimo = hunks.at(-1);\n\t\tif (ultimo && ultimo.aFin === ai && ultimo.bFin === bi) {\n\t\t\tultimo.aFin += borradas;\n\t\t\tultimo.bFin += anadidas;\n\t\t} else {\n\t\t\thunks.push({ aInicio: ai, aFin: ai + borradas, bInicio: bi, bFin: bi + anadidas });\n\t\t}\n\t\tai += borradas;\n\t\tbi += anadidas;\n\t}\n\treturn { hunks, a, b };\n}\n\n/** La posimagen con el conjunto `indices` de hunks revertidos a sus líneas de preimagen. */\nfunction revertirHunks(a: string[], b: string[], hunks: Hunk[], indices: readonly number[]): string {\n\tconst ordenados = [...indices].sort((x, y) => x - y);\n\tconst out: string[] = [];\n\tlet bi = 0;\n\tfor (const i of ordenados) {\n\t\tconst h = hunks[i];\n\t\tout.push(...b.slice(bi, h.bInicio), ...a.slice(h.aInicio, h.aFin));\n\t\tbi = h.bFin;\n\t}\n\tout.push(...b.slice(bi));\n\treturn out.join(\"\\n\");\n}\n\n/**\n * El conjunto de hunks cuya reversión conjunta restaura el parseo, o\n * `undefined` si no se puede aislar (incluye el caso \"revertirlos todos\n * tampoco parsea\", que solo pasaría si la preimagen ya estaba rota — y eso\n * ya lo descarta quien llama antes de invocar este módulo).\n */\nfunction aislarHunksCulpables(ruta: string, a: string[], b: string[], hunks: Hunk[]): number[] | undefined {\n\tconst n = hunks.length;\n\tif (n === 0) return undefined;\n\n\t// Camino rápido: la inmensa mayoría de roturas son un solo hunk.\n\tfor (let i = 0; i < n; i++) {\n\t\tif (parsea(revertirHunks(a, b, hunks, [i]), ruta) === true) return [i];\n\t}\n\n\t// ponytail: sin la búsqueda acotada de PARES de oh-my-pi antes de esto —\n\t// el pelado voraz de abajo ya encuentra un conjunto que funciona para\n\t// roturas de varios hunks, solo que no siempre es el par más pequeño\n\t// posible. Si algún caso real lo echa en falta, se añade aquí.\n\t//\n\t// Pelado voraz: se parte de \"revertir todos\" (que parsea, porque\n\t// reconstruye la preimagen) y se intenta, hunk a hunk, DEJARLO sin\n\t// revertir; si el resto sigue parseando, ese hunk no era culpable.\n\tconst conservar = new Set<number>(Array.from({ length: n }, (_, i) => i));\n\tfor (let i = 0; i < n; i++) {\n\t\tconst prueba = new Set(conservar);\n\t\tprueba.delete(i);\n\t\tif (parsea(revertirHunks(a, b, hunks, [...prueba]), ruta) === true) conservar.delete(i);\n\t}\n\tif (conservar.size === 0) return undefined;\n\tif (parsea(revertirHunks(a, b, hunks, [...conservar]), ruta) !== true) return undefined;\n\treturn [...conservar];\n}\n\n/** La región rota localizada, con su referencia (culpables revertidos) para enseñarle al modelo. */\nexport interface RegionDeReparacion {\n\t/** Tramo de líneas sustituido en el fichero roto, `[bInicio, bFin)`. */\n\tbInicio: number;\n\tbFin: number;\n\t/** La región tal cual está en el fichero roto. */\n\ttextoRoto: string;\n\t/** La misma región con los hunks culpables revertidos: empalmarla restaura el parseo. */\n\ttextoReferencia: string;\n}\n\n/**\n * Localiza la rotura de `antes → despues` a una región de líneas acotada.\n * `undefined` cuando no se puede aislar o cuando la región supera\n * {@link MAX_LINEAS_REGION} — quien llama se queda entonces con el aviso de\n * parseo roto normal.\n */\nexport function calcularRegionDeReparacion(instantanea: {\n\truta: string;\n\tantes: string;\n\tdespues: string;\n}): RegionDeReparacion | undefined {\n\tconst { ruta, antes, despues } = instantanea;\n\tconst { hunks, a, b } = construirHunks(antes, despues);\n\tconst culpables = aislarHunksCulpables(ruta, a, b, hunks);\n\tif (!culpables) return undefined;\n\n\tconst hs = culpables.map((i) => hunks[i]).sort((x, y) => x.bInicio - y.bInicio);\n\tconst bInicio = Math.max(0, hs[0].bInicio - LINEAS_DE_CONTEXTO);\n\tconst bFin = Math.min(b.length, (hs.at(-1) as Hunk).bFin + LINEAS_DE_CONTEXTO);\n\tif (bFin - bInicio > MAX_LINEAS_REGION) return undefined;\n\n\t// Referencia = la región rota con cada hunk culpable cambiado por sus\n\t// líneas de preimagen, así que empalmarla reproduce exactamente esa\n\t// reversión (que parsea por construcción).\n\tconst ref: string[] = [];\n\tlet bi = bInicio;\n\tfor (const h of hs) {\n\t\tref.push(...b.slice(bi, h.bInicio), ...a.slice(h.aInicio, h.aFin));\n\t\tbi = h.bFin;\n\t}\n\tref.push(...b.slice(bi, bFin));\n\n\treturn {\n\t\tbInicio,\n\t\tbFin,\n\t\ttextoRoto: b.slice(bInicio, bFin).join(\"\\n\"),\n\t\ttextoReferencia: ref.join(\"\\n\"),\n\t};\n}\n\nfunction empalmarRegion(b: string[], region: RegionDeReparacion, texto: string): string {\n\treturn [...b.slice(0, region.bInicio), ...texto.split(\"\\n\"), ...b.slice(region.bFin)].join(\"\\n\");\n}\n\n/** Quita una valla de código markdown envolvente, si la hay. */\nfunction quitarValla(texto: string): string {\n\tconst recortado = texto.trim();\n\tconst m = recortado.match(/^```[^\\n]*\\n([\\s\\S]*?)\\n?```$/);\n\treturn m ? m[1] : recortado;\n}\n\n/** Espacios colapsados para comparar sin que un reindentado cuente como cambio real. */\nfunction normalizarParaComparar(texto: string): string {\n\treturn texto.replace(/\\s+/g, \" \").trim();\n}\n\nfunction construirPrompt(region: RegionDeReparacion, ruta: string, intentoPrevio?: string): string {\n\tconst previo = intentoPrevio\n\t\t? `\\n\\nINTENTO ANTERIOR (rechazado — o seguía roto, o era un simple calco de la referencia):\\n\\`\\`\\`\\n${intentoPrevio}\\n\\`\\`\\`\\n`\n\t\t: \"\";\n\treturn (\n\t\t`El fichero ${ruta} quedó con un error de sintaxis tras una edición. Tu tarea es arreglar SOLO ` +\n\t\t`la sintaxis, sin deshacer el cambio que se pretendía.\\n\\n` +\n\t\t`REFERENCIA (parsea bien; es el cambio pretendido con la rotura revertida — NO la copies tal cual, ` +\n\t\t`solo es para que veas qué había antes):\\n\\`\\`\\`\\n${region.textoReferencia}\\n\\`\\`\\`\\n\\n` +\n\t\t`ROTO (esto es lo que hay que arreglar, conservando su intención):\\n\\`\\`\\`\\n${region.textoRoto}\\n\\`\\`\\`\\n` +\n\t\t`${previo}\\n` +\n\t\t`Devuelve SOLO el bloque de código que sustituye la sección ROTO, ya arreglado. Sin explicaciones, sin ` +\n\t\t`numerar líneas, sin nada fuera del bloque.`\n\t);\n}\n\n/** Qué pasó al intentar reparar. Nunca colapsa \"no pude intentarlo\" con \"lo intenté y no valió\". */\nexport type ResultadoReparacion =\n\t| { estado: \"reparado\"; contenido: string; intentos: number }\n\t/** No había con qué preguntar (sin modelo) o la rotura no se pudo aislar/acotar. */\n\t| { estado: \"no-aplicable\" }\n\t/** Se preguntó al modelo pero ningún intento cumplió las dos condiciones de aceptación. */\n\t| { estado: \"rechazada\" };\n\n/**\n * Intenta reparar una edición que rompió el parseo, preguntándole a `completar`.\n *\n * `completar` devuelve `null` cuando no pudo completarse (sin modelo, sin\n * red, error de la API…): eso es \"no-aplicable\", nunca \"rechazada\" — una\n * reparación rechazada es una que SE INTENTÓ y no sirvió.\n */\nexport async function intentarReparar(\n\tinstantanea: { ruta: string; antes: string; despues: string },\n\tcompletar?: (prompt: string) => Promise<string | null>,\n): Promise<ResultadoReparacion> {\n\tif (!completar) return { estado: \"no-aplicable\" };\n\tconst region = calcularRegionDeReparacion(instantanea);\n\tif (!region) return { estado: \"no-aplicable\" };\n\n\tconst b = instantanea.despues.split(\"\\n\");\n\tconst referenciaNormalizada = normalizarParaComparar(region.textoReferencia);\n\n\tlet intentoPrevio: string | undefined;\n\tfor (let intento = 1; intento <= MAX_INTENTOS; intento++) {\n\t\tconst respuesta = await completar(construirPrompt(region, instantanea.ruta, intentoPrevio));\n\t\tif (respuesta === null) return { estado: intento === 1 ? \"no-aplicable\" : \"rechazada\" };\n\n\t\tconst candidato = quitarValla(respuesta);\n\t\tintentoPrevio = candidato;\n\n\t\t// La regla que evita que la \"reparación\" deshaga el trabajo del\n\t\t// usuario: un candidato que, sin espacios, es un calco de la\n\t\t// referencia es una reversión pura y se descarta aunque parseara.\n\t\tif (normalizarParaComparar(candidato) === referenciaNormalizada) continue;\n\n\t\tconst contenido = empalmarRegion(b, region, candidato);\n\t\tif (parsea(contenido, instantanea.ruta) === true) {\n\t\t\treturn { estado: \"reparado\", contenido, intentos: intento };\n\t\t}\n\t}\n\treturn { estado: \"rechazada\" };\n}\n"]}
@@ -0,0 +1,202 @@
1
+ /**
2
+ * Auto-reparación de una edición que rompió el parseo.
3
+ *
4
+ * Cuando `parseo.ts` detecta que una edición convirtió un fichero que
5
+ * parseaba en uno que no, esto intenta arreglarlo solo: localiza el conjunto
6
+ * mínimo de hunks (líneas cambiadas) cuya reversión restaura el parseo, le
7
+ * pide al modelo que arregle SOLO esa región mostrándole la versión sin
8
+ * romper como referencia, y acepta el resultado únicamente si (a) el
9
+ * fichero entero vuelve a parsear Y (b) lo que devolvió el modelo no es,
10
+ * quitando espacios, un calco de la referencia — es decir, no es una simple
11
+ * reversión del cambio que el usuario pidió.
12
+ *
13
+ * La idea y el reparto de responsabilidades vienen de `oh-my-pi`
14
+ * (packages/coding-agent/src/edit/auto-repair.ts): localizar antes de
15
+ * preguntar, y rechazar la reversión aunque parsee. Lo que cambia aquí es la
16
+ * implementación: sin tree-sitter (usamos el mismo `parsea()` de
17
+ * `parseo.ts`, que ya cubre lo que este fork edita) y con el paquete `diff`
18
+ * que este proyecto ya trae en vez de un diff de líneas propio.
19
+ */
20
+ import * as Diff from "diff";
21
+ import { parsea } from "./parseo.js";
22
+ /** Cuántas líneas de contexto se enseñan alrededor de los hunks culpables. */
23
+ const LINEAS_DE_CONTEXTO = 6;
24
+ /** Región más grande que merece la pena mandarle a un modelo. */
25
+ const MAX_LINEAS_REGION = 150;
26
+ /** Un primer intento y un reintento con el rechazo anterior como pista. */
27
+ const MAX_INTENTOS = 2;
28
+ function construirHunks(antes, despues) {
29
+ const a = antes.split("\n");
30
+ const b = despues.split("\n");
31
+ const partes = Diff.diffLines(antes, despues);
32
+ const hunks = [];
33
+ let ai = 0;
34
+ let bi = 0;
35
+ for (const parte of partes) {
36
+ const lineas = parte.count ?? 0;
37
+ if (!parte.added && !parte.removed) {
38
+ ai += lineas;
39
+ bi += lineas;
40
+ continue;
41
+ }
42
+ const borradas = parte.removed ? lineas : 0;
43
+ const anadidas = parte.added ? lineas : 0;
44
+ // Un borrado seguido de un añadido contiguos son la misma edición
45
+ // (una sustitución), no dos hunks distintos que reventar por separado.
46
+ const ultimo = hunks.at(-1);
47
+ if (ultimo && ultimo.aFin === ai && ultimo.bFin === bi) {
48
+ ultimo.aFin += borradas;
49
+ ultimo.bFin += anadidas;
50
+ }
51
+ else {
52
+ hunks.push({ aInicio: ai, aFin: ai + borradas, bInicio: bi, bFin: bi + anadidas });
53
+ }
54
+ ai += borradas;
55
+ bi += anadidas;
56
+ }
57
+ return { hunks, a, b };
58
+ }
59
+ /** La posimagen con el conjunto `indices` de hunks revertidos a sus líneas de preimagen. */
60
+ function revertirHunks(a, b, hunks, indices) {
61
+ const ordenados = [...indices].sort((x, y) => x - y);
62
+ const out = [];
63
+ let bi = 0;
64
+ for (const i of ordenados) {
65
+ const h = hunks[i];
66
+ out.push(...b.slice(bi, h.bInicio), ...a.slice(h.aInicio, h.aFin));
67
+ bi = h.bFin;
68
+ }
69
+ out.push(...b.slice(bi));
70
+ return out.join("\n");
71
+ }
72
+ /**
73
+ * El conjunto de hunks cuya reversión conjunta restaura el parseo, o
74
+ * `undefined` si no se puede aislar (incluye el caso "revertirlos todos
75
+ * tampoco parsea", que solo pasaría si la preimagen ya estaba rota — y eso
76
+ * ya lo descarta quien llama antes de invocar este módulo).
77
+ */
78
+ function aislarHunksCulpables(ruta, a, b, hunks) {
79
+ const n = hunks.length;
80
+ if (n === 0)
81
+ return undefined;
82
+ // Camino rápido: la inmensa mayoría de roturas son un solo hunk.
83
+ for (let i = 0; i < n; i++) {
84
+ if (parsea(revertirHunks(a, b, hunks, [i]), ruta) === true)
85
+ return [i];
86
+ }
87
+ // ponytail: sin la búsqueda acotada de PARES de oh-my-pi antes de esto —
88
+ // el pelado voraz de abajo ya encuentra un conjunto que funciona para
89
+ // roturas de varios hunks, solo que no siempre es el par más pequeño
90
+ // posible. Si algún caso real lo echa en falta, se añade aquí.
91
+ //
92
+ // Pelado voraz: se parte de "revertir todos" (que parsea, porque
93
+ // reconstruye la preimagen) y se intenta, hunk a hunk, DEJARLO sin
94
+ // revertir; si el resto sigue parseando, ese hunk no era culpable.
95
+ const conservar = new Set(Array.from({ length: n }, (_, i) => i));
96
+ for (let i = 0; i < n; i++) {
97
+ const prueba = new Set(conservar);
98
+ prueba.delete(i);
99
+ if (parsea(revertirHunks(a, b, hunks, [...prueba]), ruta) === true)
100
+ conservar.delete(i);
101
+ }
102
+ if (conservar.size === 0)
103
+ return undefined;
104
+ if (parsea(revertirHunks(a, b, hunks, [...conservar]), ruta) !== true)
105
+ return undefined;
106
+ return [...conservar];
107
+ }
108
+ /**
109
+ * Localiza la rotura de `antes → despues` a una región de líneas acotada.
110
+ * `undefined` cuando no se puede aislar o cuando la región supera
111
+ * {@link MAX_LINEAS_REGION} — quien llama se queda entonces con el aviso de
112
+ * parseo roto normal.
113
+ */
114
+ export function calcularRegionDeReparacion(instantanea) {
115
+ const { ruta, antes, despues } = instantanea;
116
+ const { hunks, a, b } = construirHunks(antes, despues);
117
+ const culpables = aislarHunksCulpables(ruta, a, b, hunks);
118
+ if (!culpables)
119
+ return undefined;
120
+ const hs = culpables.map((i) => hunks[i]).sort((x, y) => x.bInicio - y.bInicio);
121
+ const bInicio = Math.max(0, hs[0].bInicio - LINEAS_DE_CONTEXTO);
122
+ const bFin = Math.min(b.length, hs.at(-1).bFin + LINEAS_DE_CONTEXTO);
123
+ if (bFin - bInicio > MAX_LINEAS_REGION)
124
+ return undefined;
125
+ // Referencia = la región rota con cada hunk culpable cambiado por sus
126
+ // líneas de preimagen, así que empalmarla reproduce exactamente esa
127
+ // reversión (que parsea por construcción).
128
+ const ref = [];
129
+ let bi = bInicio;
130
+ for (const h of hs) {
131
+ ref.push(...b.slice(bi, h.bInicio), ...a.slice(h.aInicio, h.aFin));
132
+ bi = h.bFin;
133
+ }
134
+ ref.push(...b.slice(bi, bFin));
135
+ return {
136
+ bInicio,
137
+ bFin,
138
+ textoRoto: b.slice(bInicio, bFin).join("\n"),
139
+ textoReferencia: ref.join("\n"),
140
+ };
141
+ }
142
+ function empalmarRegion(b, region, texto) {
143
+ return [...b.slice(0, region.bInicio), ...texto.split("\n"), ...b.slice(region.bFin)].join("\n");
144
+ }
145
+ /** Quita una valla de código markdown envolvente, si la hay. */
146
+ function quitarValla(texto) {
147
+ const recortado = texto.trim();
148
+ const m = recortado.match(/^```[^\n]*\n([\s\S]*?)\n?```$/);
149
+ return m ? m[1] : recortado;
150
+ }
151
+ /** Espacios colapsados para comparar sin que un reindentado cuente como cambio real. */
152
+ function normalizarParaComparar(texto) {
153
+ return texto.replace(/\s+/g, " ").trim();
154
+ }
155
+ function construirPrompt(region, ruta, intentoPrevio) {
156
+ const previo = intentoPrevio
157
+ ? `\n\nINTENTO ANTERIOR (rechazado — o seguía roto, o era un simple calco de la referencia):\n\`\`\`\n${intentoPrevio}\n\`\`\`\n`
158
+ : "";
159
+ return (`El fichero ${ruta} quedó con un error de sintaxis tras una edición. Tu tarea es arreglar SOLO ` +
160
+ `la sintaxis, sin deshacer el cambio que se pretendía.\n\n` +
161
+ `REFERENCIA (parsea bien; es el cambio pretendido con la rotura revertida — NO la copies tal cual, ` +
162
+ `solo es para que veas qué había antes):\n\`\`\`\n${region.textoReferencia}\n\`\`\`\n\n` +
163
+ `ROTO (esto es lo que hay que arreglar, conservando su intención):\n\`\`\`\n${region.textoRoto}\n\`\`\`\n` +
164
+ `${previo}\n` +
165
+ `Devuelve SOLO el bloque de código que sustituye la sección ROTO, ya arreglado. Sin explicaciones, sin ` +
166
+ `numerar líneas, sin nada fuera del bloque.`);
167
+ }
168
+ /**
169
+ * Intenta reparar una edición que rompió el parseo, preguntándole a `completar`.
170
+ *
171
+ * `completar` devuelve `null` cuando no pudo completarse (sin modelo, sin
172
+ * red, error de la API…): eso es "no-aplicable", nunca "rechazada" — una
173
+ * reparación rechazada es una que SE INTENTÓ y no sirvió.
174
+ */
175
+ export async function intentarReparar(instantanea, completar) {
176
+ if (!completar)
177
+ return { estado: "no-aplicable" };
178
+ const region = calcularRegionDeReparacion(instantanea);
179
+ if (!region)
180
+ return { estado: "no-aplicable" };
181
+ const b = instantanea.despues.split("\n");
182
+ const referenciaNormalizada = normalizarParaComparar(region.textoReferencia);
183
+ let intentoPrevio;
184
+ for (let intento = 1; intento <= MAX_INTENTOS; intento++) {
185
+ const respuesta = await completar(construirPrompt(region, instantanea.ruta, intentoPrevio));
186
+ if (respuesta === null)
187
+ return { estado: intento === 1 ? "no-aplicable" : "rechazada" };
188
+ const candidato = quitarValla(respuesta);
189
+ intentoPrevio = candidato;
190
+ // La regla que evita que la "reparación" deshaga el trabajo del
191
+ // usuario: un candidato que, sin espacios, es un calco de la
192
+ // referencia es una reversión pura y se descarta aunque parseara.
193
+ if (normalizarParaComparar(candidato) === referenciaNormalizada)
194
+ continue;
195
+ const contenido = empalmarRegion(b, region, candidato);
196
+ if (parsea(contenido, instantanea.ruta) === true) {
197
+ return { estado: "reparado", contenido, intentos: intento };
198
+ }
199
+ }
200
+ return { estado: "rechazada" };
201
+ }
202
+ //# sourceMappingURL=reparacion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reparacion.js","sourceRoot":"","sources":["../../../src/core/edicion/reparacion.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Auto-reparación de una edición que rompió el parseo.\n *\n * Cuando `parseo.ts` detecta que una edición convirtió un fichero que\n * parseaba en uno que no, esto intenta arreglarlo solo: localiza el conjunto\n * mínimo de hunks (líneas cambiadas) cuya reversión restaura el parseo, le\n * pide al modelo que arregle SOLO esa región mostrándole la versión sin\n * romper como referencia, y acepta el resultado únicamente si (a) el\n * fichero entero vuelve a parsear Y (b) lo que devolvió el modelo no es,\n * quitando espacios, un calco de la referencia — es decir, no es una simple\n * reversión del cambio que el usuario pidió.\n *\n * La idea y el reparto de responsabilidades vienen de `oh-my-pi`\n * (packages/coding-agent/src/edit/auto-repair.ts): localizar antes de\n * preguntar, y rechazar la reversión aunque parsee. Lo que cambia aquí es la\n * implementación: sin tree-sitter (usamos el mismo `parsea()` de\n * `parseo.ts`, que ya cubre lo que este fork edita) y con el paquete `diff`\n * que este proyecto ya trae en vez de un diff de líneas propio.\n */\n\nimport * as Diff from \"diff\";\nimport { parsea } from \"./parseo.ts\";\n\n/** Cuántas líneas de contexto se enseñan alrededor de los hunks culpables. */\nconst LINEAS_DE_CONTEXTO = 6;\n/** Región más grande que merece la pena mandarle a un modelo. */\nconst MAX_LINEAS_REGION = 150;\n/** Un primer intento y un reintento con el rechazo anterior como pista. */\nconst MAX_INTENTOS = 2;\n\n/** Un tramo de líneas cambiado, en coordenadas de preimagen (`a`) y posimagen (`b`). */\ninterface Hunk {\n\taInicio: number;\n\taFin: number;\n\tbInicio: number;\n\tbFin: number;\n}\n\nfunction construirHunks(antes: string, despues: string): { hunks: Hunk[]; a: string[]; b: string[] } {\n\tconst a = antes.split(\"\\n\");\n\tconst b = despues.split(\"\\n\");\n\tconst partes = Diff.diffLines(antes, despues);\n\tconst hunks: Hunk[] = [];\n\tlet ai = 0;\n\tlet bi = 0;\n\tfor (const parte of partes) {\n\t\tconst lineas = parte.count ?? 0;\n\t\tif (!parte.added && !parte.removed) {\n\t\t\tai += lineas;\n\t\t\tbi += lineas;\n\t\t\tcontinue;\n\t\t}\n\t\tconst borradas = parte.removed ? lineas : 0;\n\t\tconst anadidas = parte.added ? lineas : 0;\n\t\t// Un borrado seguido de un añadido contiguos son la misma edición\n\t\t// (una sustitución), no dos hunks distintos que reventar por separado.\n\t\tconst ultimo = hunks.at(-1);\n\t\tif (ultimo && ultimo.aFin === ai && ultimo.bFin === bi) {\n\t\t\tultimo.aFin += borradas;\n\t\t\tultimo.bFin += anadidas;\n\t\t} else {\n\t\t\thunks.push({ aInicio: ai, aFin: ai + borradas, bInicio: bi, bFin: bi + anadidas });\n\t\t}\n\t\tai += borradas;\n\t\tbi += anadidas;\n\t}\n\treturn { hunks, a, b };\n}\n\n/** La posimagen con el conjunto `indices` de hunks revertidos a sus líneas de preimagen. */\nfunction revertirHunks(a: string[], b: string[], hunks: Hunk[], indices: readonly number[]): string {\n\tconst ordenados = [...indices].sort((x, y) => x - y);\n\tconst out: string[] = [];\n\tlet bi = 0;\n\tfor (const i of ordenados) {\n\t\tconst h = hunks[i];\n\t\tout.push(...b.slice(bi, h.bInicio), ...a.slice(h.aInicio, h.aFin));\n\t\tbi = h.bFin;\n\t}\n\tout.push(...b.slice(bi));\n\treturn out.join(\"\\n\");\n}\n\n/**\n * El conjunto de hunks cuya reversión conjunta restaura el parseo, o\n * `undefined` si no se puede aislar (incluye el caso \"revertirlos todos\n * tampoco parsea\", que solo pasaría si la preimagen ya estaba rota — y eso\n * ya lo descarta quien llama antes de invocar este módulo).\n */\nfunction aislarHunksCulpables(ruta: string, a: string[], b: string[], hunks: Hunk[]): number[] | undefined {\n\tconst n = hunks.length;\n\tif (n === 0) return undefined;\n\n\t// Camino rápido: la inmensa mayoría de roturas son un solo hunk.\n\tfor (let i = 0; i < n; i++) {\n\t\tif (parsea(revertirHunks(a, b, hunks, [i]), ruta) === true) return [i];\n\t}\n\n\t// ponytail: sin la búsqueda acotada de PARES de oh-my-pi antes de esto —\n\t// el pelado voraz de abajo ya encuentra un conjunto que funciona para\n\t// roturas de varios hunks, solo que no siempre es el par más pequeño\n\t// posible. Si algún caso real lo echa en falta, se añade aquí.\n\t//\n\t// Pelado voraz: se parte de \"revertir todos\" (que parsea, porque\n\t// reconstruye la preimagen) y se intenta, hunk a hunk, DEJARLO sin\n\t// revertir; si el resto sigue parseando, ese hunk no era culpable.\n\tconst conservar = new Set<number>(Array.from({ length: n }, (_, i) => i));\n\tfor (let i = 0; i < n; i++) {\n\t\tconst prueba = new Set(conservar);\n\t\tprueba.delete(i);\n\t\tif (parsea(revertirHunks(a, b, hunks, [...prueba]), ruta) === true) conservar.delete(i);\n\t}\n\tif (conservar.size === 0) return undefined;\n\tif (parsea(revertirHunks(a, b, hunks, [...conservar]), ruta) !== true) return undefined;\n\treturn [...conservar];\n}\n\n/** La región rota localizada, con su referencia (culpables revertidos) para enseñarle al modelo. */\nexport interface RegionDeReparacion {\n\t/** Tramo de líneas sustituido en el fichero roto, `[bInicio, bFin)`. */\n\tbInicio: number;\n\tbFin: number;\n\t/** La región tal cual está en el fichero roto. */\n\ttextoRoto: string;\n\t/** La misma región con los hunks culpables revertidos: empalmarla restaura el parseo. */\n\ttextoReferencia: string;\n}\n\n/**\n * Localiza la rotura de `antes → despues` a una región de líneas acotada.\n * `undefined` cuando no se puede aislar o cuando la región supera\n * {@link MAX_LINEAS_REGION} — quien llama se queda entonces con el aviso de\n * parseo roto normal.\n */\nexport function calcularRegionDeReparacion(instantanea: {\n\truta: string;\n\tantes: string;\n\tdespues: string;\n}): RegionDeReparacion | undefined {\n\tconst { ruta, antes, despues } = instantanea;\n\tconst { hunks, a, b } = construirHunks(antes, despues);\n\tconst culpables = aislarHunksCulpables(ruta, a, b, hunks);\n\tif (!culpables) return undefined;\n\n\tconst hs = culpables.map((i) => hunks[i]).sort((x, y) => x.bInicio - y.bInicio);\n\tconst bInicio = Math.max(0, hs[0].bInicio - LINEAS_DE_CONTEXTO);\n\tconst bFin = Math.min(b.length, (hs.at(-1) as Hunk).bFin + LINEAS_DE_CONTEXTO);\n\tif (bFin - bInicio > MAX_LINEAS_REGION) return undefined;\n\n\t// Referencia = la región rota con cada hunk culpable cambiado por sus\n\t// líneas de preimagen, así que empalmarla reproduce exactamente esa\n\t// reversión (que parsea por construcción).\n\tconst ref: string[] = [];\n\tlet bi = bInicio;\n\tfor (const h of hs) {\n\t\tref.push(...b.slice(bi, h.bInicio), ...a.slice(h.aInicio, h.aFin));\n\t\tbi = h.bFin;\n\t}\n\tref.push(...b.slice(bi, bFin));\n\n\treturn {\n\t\tbInicio,\n\t\tbFin,\n\t\ttextoRoto: b.slice(bInicio, bFin).join(\"\\n\"),\n\t\ttextoReferencia: ref.join(\"\\n\"),\n\t};\n}\n\nfunction empalmarRegion(b: string[], region: RegionDeReparacion, texto: string): string {\n\treturn [...b.slice(0, region.bInicio), ...texto.split(\"\\n\"), ...b.slice(region.bFin)].join(\"\\n\");\n}\n\n/** Quita una valla de código markdown envolvente, si la hay. */\nfunction quitarValla(texto: string): string {\n\tconst recortado = texto.trim();\n\tconst m = recortado.match(/^```[^\\n]*\\n([\\s\\S]*?)\\n?```$/);\n\treturn m ? m[1] : recortado;\n}\n\n/** Espacios colapsados para comparar sin que un reindentado cuente como cambio real. */\nfunction normalizarParaComparar(texto: string): string {\n\treturn texto.replace(/\\s+/g, \" \").trim();\n}\n\nfunction construirPrompt(region: RegionDeReparacion, ruta: string, intentoPrevio?: string): string {\n\tconst previo = intentoPrevio\n\t\t? `\\n\\nINTENTO ANTERIOR (rechazado — o seguía roto, o era un simple calco de la referencia):\\n\\`\\`\\`\\n${intentoPrevio}\\n\\`\\`\\`\\n`\n\t\t: \"\";\n\treturn (\n\t\t`El fichero ${ruta} quedó con un error de sintaxis tras una edición. Tu tarea es arreglar SOLO ` +\n\t\t`la sintaxis, sin deshacer el cambio que se pretendía.\\n\\n` +\n\t\t`REFERENCIA (parsea bien; es el cambio pretendido con la rotura revertida — NO la copies tal cual, ` +\n\t\t`solo es para que veas qué había antes):\\n\\`\\`\\`\\n${region.textoReferencia}\\n\\`\\`\\`\\n\\n` +\n\t\t`ROTO (esto es lo que hay que arreglar, conservando su intención):\\n\\`\\`\\`\\n${region.textoRoto}\\n\\`\\`\\`\\n` +\n\t\t`${previo}\\n` +\n\t\t`Devuelve SOLO el bloque de código que sustituye la sección ROTO, ya arreglado. Sin explicaciones, sin ` +\n\t\t`numerar líneas, sin nada fuera del bloque.`\n\t);\n}\n\n/** Qué pasó al intentar reparar. Nunca colapsa \"no pude intentarlo\" con \"lo intenté y no valió\". */\nexport type ResultadoReparacion =\n\t| { estado: \"reparado\"; contenido: string; intentos: number }\n\t/** No había con qué preguntar (sin modelo) o la rotura no se pudo aislar/acotar. */\n\t| { estado: \"no-aplicable\" }\n\t/** Se preguntó al modelo pero ningún intento cumplió las dos condiciones de aceptación. */\n\t| { estado: \"rechazada\" };\n\n/**\n * Intenta reparar una edición que rompió el parseo, preguntándole a `completar`.\n *\n * `completar` devuelve `null` cuando no pudo completarse (sin modelo, sin\n * red, error de la API…): eso es \"no-aplicable\", nunca \"rechazada\" — una\n * reparación rechazada es una que SE INTENTÓ y no sirvió.\n */\nexport async function intentarReparar(\n\tinstantanea: { ruta: string; antes: string; despues: string },\n\tcompletar?: (prompt: string) => Promise<string | null>,\n): Promise<ResultadoReparacion> {\n\tif (!completar) return { estado: \"no-aplicable\" };\n\tconst region = calcularRegionDeReparacion(instantanea);\n\tif (!region) return { estado: \"no-aplicable\" };\n\n\tconst b = instantanea.despues.split(\"\\n\");\n\tconst referenciaNormalizada = normalizarParaComparar(region.textoReferencia);\n\n\tlet intentoPrevio: string | undefined;\n\tfor (let intento = 1; intento <= MAX_INTENTOS; intento++) {\n\t\tconst respuesta = await completar(construirPrompt(region, instantanea.ruta, intentoPrevio));\n\t\tif (respuesta === null) return { estado: intento === 1 ? \"no-aplicable\" : \"rechazada\" };\n\n\t\tconst candidato = quitarValla(respuesta);\n\t\tintentoPrevio = candidato;\n\n\t\t// La regla que evita que la \"reparación\" deshaga el trabajo del\n\t\t// usuario: un candidato que, sin espacios, es un calco de la\n\t\t// referencia es una reversión pura y se descarta aunque parseara.\n\t\tif (normalizarParaComparar(candidato) === referenciaNormalizada) continue;\n\n\t\tconst contenido = empalmarRegion(b, region, candidato);\n\t\tif (parsea(contenido, instantanea.ruta) === true) {\n\t\t\treturn { estado: \"reparado\", contenido, intentos: intento };\n\t\t}\n\t}\n\treturn { estado: \"rechazada\" };\n}\n"]}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Casar una edición cuando el modelo se equivoca con la SANGRÍA.
3
+ *
4
+ * EL CASO. Ada se indenta con tabuladores y los modelos emiten espacios sin
5
+ * parar. Medido sobre el banco de cargas mal formadas: de once cargas
6
+ * recuperables, el motor entraba en tres, y varias de las que rechazaba eran de
7
+ * sangría — el error más frecuente que existe.
8
+ *
9
+ * Un rechazo cuesta un turno entero: el modelo tiene que releer el fichero y
10
+ * volver a escribir el bloque a ciegas, y muchas veces repite el mismo error.
11
+ *
12
+ * LO QUE ESTE MÓDULO NO HACE, y es la parte importante. No basta con encontrar
13
+ * el sitio: hay que escribir el reemplazo con la sangría DEL FICHERO. oh-my-pi
14
+ * casa más cargas que nosotros pero de las diez que aplica, tres corrompen — dos
15
+ * de ellas dejando la sangría mal. Aplicar no es aplicar bien:
16
+ *
17
+ * antes: →app.listen(puerto);
18
+ * mal: app.listen(PUERTO); ← entró, y dejó espacios en un
19
+ * fichero de tabuladores
20
+ *
21
+ * En TypeScript eso es cosmético. En Python es un error de sintaxis, o peor: una
22
+ * línea que se sale del bloque `if` y cambia la semántica sin romper nada.
23
+ *
24
+ * DOS INVARIANTES QUE LO HACEN SEGURO:
25
+ *
26
+ * 1. **Una sola posición.** Si el patrón sin sangría casa en dos sitios, se
27
+ * devuelve `null`. Quitar la sangría hace el patrón MENOS específico, así que
28
+ * puede volver ambiguo algo que no lo era — y elegir por el modelo cuál de
29
+ * los dos editar es peor que rechazar.
30
+ * 2. **La sangría sale del fichero, nunca del patrón.** Se mide la del bloque
31
+ * casado y se reconstruye el reemplazo con su carácter y su unidad,
32
+ * conservando la profundidad RELATIVA que el modelo expresó.
33
+ *
34
+ * EL ESPACIADO INTERNO, que es el mismo error una columna más adentro. El
35
+ * fichero tiene `let suma = 0;` y el modelo manda `let suma = 0;`. No es un
36
+ * problema de sangría —la sangría está bien— y sin embargo cuesta un turno
37
+ * entero igual. Se recupera con una SEGUNDA pasada de comparación que colapsa
38
+ * los espacios y tabuladores interiores.
39
+ *
40
+ * Y aquí está la trampa que hay que ver antes de tocar esto. Colapsar espacios
41
+ * en `normalizeForFuzzyMatch` (en `core/tools/edit-diff.ts`) sería mucho más
42
+ * corto y estaría MAL: esa forma normalizada se convierte en la base de
43
+ * escritura cuando alguna edición del lote es difusa, y su traducción de
44
+ * posiciones exige que cada sustitución sea de un carácter por otro. `[ \t]+` a
45
+ * un espacio no lo es. Ya nos costó una corrupción silenciosa por el mismo
46
+ * camino: `“`→`"` en una línea que nadie pidió tocar, dejando ficheros que ni
47
+ * compilan. Aquí el colapso vive SOLO en la comparación —una función que se
48
+ * llama para decidir si dos líneas son la misma— y nunca en el texto que se
49
+ * escribe: el reemplazo se construye desde el `newText` del modelo y desde los
50
+ * bytes del bloque original, jamás desde la forma colapsada.
51
+ */
52
+ /** Un bloque casado, con lo que hace falta para empalmarlo. */
53
+ export interface CasadoPorSangria {
54
+ /** Desplazamiento del inicio del bloque en el contenido original. */
55
+ indice: number;
56
+ /** Cuántos caracteres ocupa el bloque casado. */
57
+ longitud: number;
58
+ /** El reemplazo, ya re-sangrado a la sangría del fichero. */
59
+ textoNuevo: string;
60
+ }
61
+ /**
62
+ * Qué unidad de sangría usa un bloque: el carácter y cuántos por nivel.
63
+ *
64
+ * Se deduce del propio bloque casado y no de todo el fichero, porque un fichero
65
+ * mixto —los hay— daría una respuesta que no vale para la región que se toca.
66
+ */
67
+ export declare function unidadDe(lineas: readonly string[]): {
68
+ caracter: string;
69
+ ancho: number;
70
+ };
71
+ /**
72
+ * Re-emite `nuevas` con la sangría del BLOQUE destino, conservando la
73
+ * profundidad relativa que expresó el modelo.
74
+ *
75
+ * Vive aquí y se exporta porque el camino del hueco elidido (`./hueco.ts`)
76
+ * necesita exactamente esto: escribía el `newText` tal cual y metía un
77
+ * tabulador en un fichero de cuatro espacios, que es el invariante 2 de este
78
+ * módulo roto en el camino de al lado.
79
+ */
80
+ export declare function reSangrarComoElBloque(nuevas: readonly string[], bloque: readonly string[]): string[];
81
+ /**
82
+ * Casa `oldText` contra `contenido` ignorando la sangría, y re-sangra `newText`.
83
+ *
84
+ * Devuelve `null` cuando no casa, cuando casa en más de un sitio, o cuando el
85
+ * patrón está vacío. `null` significa «no puedo», nunca «no hay»: quien llama
86
+ * debe seguir con su propio error, no dar la edición por aplicada.
87
+ */
88
+ export declare function casarIgnorandoSangria(contenido: string, oldText: string, newText: string): CasadoPorSangria | null;
89
+ /**
90
+ * ¿El texto nuevo mete un carácter de sangría que el fichero no usa?
91
+ *
92
+ * EL CASO, encontrado auditando y reproducido ejecutando. Cuando el `oldText`
93
+ * casa EXACTO, el motor escribe el `newText` tal cual y se salta toda la lógica
94
+ * de sangría de arriba. Si el modelo teclea el bloque nuevo con tabuladores en
95
+ * un fichero de espacios —cosa que hace constantemente— la mezcla entra sin que
96
+ * nadie la mire:
97
+ *
98
+ * class Carro:
99
+ * def total(self, items): ← 4 espacios, del fichero
100
+ * →→→→s = 0 ← tabuladores, del modelo
101
+ *
102
+ * En Python eso es un `TabError` y el fichero no arranca. Y no lo caza nadie:
103
+ * `core/edicion/parseo.ts` solo cubre TypeScript y JSON, así que para `.py`
104
+ * devuelve `null` y la red de reparación ni se despierta.
105
+ *
106
+ * En TypeScript no rompe la sintaxis, pero deja un fichero con dos estilos que
107
+ * el siguiente `edit` va a casar peor. Es la misma familia que perseguimos:
108
+ * la edición ENTRA, así que se lee como éxito.
109
+ *
110
+ * POR QUÉ AQUÍ Y NO EN UN COMPROBADOR POR LENGUAJE. Esto no necesita gramática
111
+ * de nada: se compara el carácter de sangría del bloque que se sustituye con el
112
+ * del texto que entra. Un comprobador de Python arreglaría Python; esto arregla
113
+ * cualquier lenguaje sensible a la sangría, presentes y futuros.
114
+ *
115
+ * QUÉ NO HACE: no toca el texto cuando el bloque original ya mezcla —ahí no hay
116
+ * un estilo del fichero que respetar, y elegir uno sería inventárselo—. omp, en
117
+ * ese caso, abandona y escribe el texto crudo (`normalize.ts:325`); nosotros
118
+ * hacemos lo mismo, pero solo en ese caso.
119
+ */
120
+ export declare function coherenteConElBloque(bloqueOriginal: string, textoNuevo: string): string;
121
+ //# sourceMappingURL=sangria.d.ts.map