@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,52 @@
1
+ /**
2
+ * Compactación a registro denso.
3
+ *
4
+ * Punto de entrada que usa la sesión: toma la `CompactionPreparation` (lo que
5
+ * upstream ya calculó sobre qué se descarta y qué se conserva) y produce un
6
+ * registro de hechos, sin llamar al modelo y sin poder inventar.
7
+ *
8
+ * Por qué el registro se AÑADE al resumen en prosa en vez de sustituirlo
9
+ * (`anadirRegistroDenso`): sustituirlo dejaba 12 pruebas de upstream en rojo, y
10
+ * no por capricho suyo — la prosa es el único camino por el que pasan los
11
+ * reintentos de summarización (#6647), la `usage` que alimenta el contador de
12
+ * coste de la sesión y la baseUrl resuelta por auth (#6768). Matar ese camino
13
+ * para ahorrar tokens sale caro: se pierde la síntesis (los "Next Steps", el
14
+ * porqué de una decisión) y se pierde la contabilidad. Sumar los dos cabe de
15
+ * sobra en el presupuesto que upstream YA reserva para el resumen: en la sesión
16
+ * real la prosa gastó 1.073 de los 13.107 tokens disponibles.
17
+ */
18
+ import type { AgentMessage } from "@earendil-works/pi-agent-core";
19
+ import type { CompactionPreparation, CompactionResult } from "../compaction/compaction.ts";
20
+ export * from "./registro-denso.ts";
21
+ /**
22
+ * Mensajes del lote en el mismo orden en que se numeran los turnos del
23
+ * registro. Se expone porque las pruebas de procedencia necesitan exactamente
24
+ * este array: si aquí y en `compactarADenso` se ordenaran distinto, la puerta
25
+ * de procedencia comprobaría contra los turnos equivocados.
26
+ */
27
+ export declare function mensajesDelLote(preparation: CompactionPreparation): AgentMessage[];
28
+ /**
29
+ * Construye SOLO el registro denso de un lote, sin prosa.
30
+ *
31
+ * Devuelve `null` cuando no hay ni un hecho que registrar, o cuando no queda
32
+ * presupuesto para escribirlo. Quien llama se queda con la prosa a secas.
33
+ *
34
+ * OJO: `null` NO distingue "no hay hechos" de "no cabe" — son dos cosas
35
+ * distintas y aquí salen por la misma puerta. Es deliberado y es lo único que
36
+ * puede serlo: el consumidor (`anadirRegistroDenso`) hace lo mismo en los dos
37
+ * casos, devolver la prosa intacta. Lo que el registro NO puede hacer es callar
38
+ * un recorte PARCIAL, y eso no pasa por aquí: lo anuncia `formatearRegistro`
39
+ * con su línea `[omitidos N hechos por presupuesto: ...]`.
40
+ */
41
+ export declare function compactarADenso(preparation: CompactionPreparation, presupuestoTokens?: number): CompactionResult | null;
42
+ /**
43
+ * Añade el registro denso al resultado de la compactación en prosa.
44
+ *
45
+ * Este es el punto que llama `AgentSession._runDefaultCompaction`. Si no cabe o
46
+ * no hay hechos, devuelve el resultado TAL CUAL: la compactación nunca falla ni
47
+ * se degrada por culpa del registro. `usage`, `details` y `firstKeptEntryId` de
48
+ * la prosa se respetan — el registro no toca la contabilidad de tokens porque
49
+ * no ha gastado ninguno.
50
+ */
51
+ export declare function anadirRegistroDenso(resultado: CompactionResult, preparation: CompactionPreparation): CompactionResult;
52
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/compactar/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAI3F,cAAc,qBAAqB,CAAC;AAEpC;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,qBAAqB,GAAG,YAAY,EAAE,CAElF;AAeD;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC9B,WAAW,EAAE,qBAAqB,EAClC,iBAAiB,SAAgC,GAC/C,gBAAgB,GAAG,IAAI,CAoBzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,qBAAqB,GAAG,gBAAgB,CAKrH","sourcesContent":["/**\n * Compactación a registro denso.\n *\n * Punto de entrada que usa la sesión: toma la `CompactionPreparation` (lo que\n * upstream ya calculó sobre qué se descarta y qué se conserva) y produce un\n * registro de hechos, sin llamar al modelo y sin poder inventar.\n *\n * Por qué el registro se AÑADE al resumen en prosa en vez de sustituirlo\n * (`anadirRegistroDenso`): sustituirlo dejaba 12 pruebas de upstream en rojo, y\n * no por capricho suyo — la prosa es el único camino por el que pasan los\n * reintentos de summarización (#6647), la `usage` que alimenta el contador de\n * coste de la sesión y la baseUrl resuelta por auth (#6768). Matar ese camino\n * para ahorrar tokens sale caro: se pierde la síntesis (los \"Next Steps\", el\n * porqué de una decisión) y se pierde la contabilidad. Sumar los dos cabe de\n * sobra en el presupuesto que upstream YA reserva para el resumen: en la sesión\n * real la prosa gastó 1.073 de los 13.107 tokens disponibles.\n */\n\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { CompactionPreparation, CompactionResult } from \"../compaction/compaction.ts\";\nimport { computeFileLists } from \"../compaction/utils.ts\";\nimport { reescribirADenso, tokensDeTexto } from \"./registro-denso.ts\";\n\nexport * from \"./registro-denso.ts\";\n\n/**\n * Mensajes del lote en el mismo orden en que se numeran los turnos del\n * registro. Se expone porque las pruebas de procedencia necesitan exactamente\n * este array: si aquí y en `compactarADenso` se ordenaran distinto, la puerta\n * de procedencia comprobaría contra los turnos equivocados.\n */\nexport function mensajesDelLote(preparation: CompactionPreparation): AgentMessage[] {\n\treturn [...preparation.messagesToSummarize, ...preparation.turnPrefixMessages];\n}\n\n/**\n * Techo de tokens del resumen completo: el mismo que `generateSummaryWithUsage`\n * le da a la prosa (0,8 * reserveTokens). El registro se queda con lo que la\n * prosa no haya gastado, así que el resumen entero nunca crece por encima de lo\n * que upstream ya reservaba.\n */\nfunction presupuestoTotal(preparation: CompactionPreparation): number {\n\treturn Math.floor(0.8 * preparation.settings.reserveTokens);\n}\n\n/** Por debajo de esto no cabe ni la cabecera del bloque: no vale la pena. */\nconst MINIMO_UTIL = 40;\n\n/**\n * Construye SOLO el registro denso de un lote, sin prosa.\n *\n * Devuelve `null` cuando no hay ni un hecho que registrar, o cuando no queda\n * presupuesto para escribirlo. Quien llama se queda con la prosa a secas.\n *\n * OJO: `null` NO distingue \"no hay hechos\" de \"no cabe\" — son dos cosas\n * distintas y aquí salen por la misma puerta. Es deliberado y es lo único que\n * puede serlo: el consumidor (`anadirRegistroDenso`) hace lo mismo en los dos\n * casos, devolver la prosa intacta. Lo que el registro NO puede hacer es callar\n * un recorte PARCIAL, y eso no pasa por aquí: lo anuncia `formatearRegistro`\n * con su línea `[omitidos N hechos por presupuesto: ...]`.\n */\nexport function compactarADenso(\n\tpreparation: CompactionPreparation,\n\tpresupuestoTokens = presupuestoTotal(preparation),\n): CompactionResult | null {\n\tconst mensajes = mensajesDelLote(preparation);\n\tif (mensajes.length === 0) return null;\n\tif (presupuestoTokens < MINIMO_UTIL) return null;\n\n\tconst registro = reescribirADenso(mensajes, presupuestoTokens, preparation.previousSummary);\n\tif (registro.incluidos.length === 0) return null;\n\n\t// Las listas de ficheros siguen yendo en `details` aunque el registro ya\n\t// nombre cada fichero: upstream las reinyecta en la SIGUIENTE compactación\n\t// (`extractFileOperations`), y romper esa cadena perdería los ficheros de\n\t// hace dos compactaciones.\n\tconst { readFiles, modifiedFiles } = computeFileLists(preparation.fileOps);\n\n\treturn {\n\t\tsummary: registro.texto,\n\t\tfirstKeptEntryId: preparation.firstKeptEntryId,\n\t\ttokensBefore: preparation.tokensBefore,\n\t\tdetails: { readFiles, modifiedFiles },\n\t};\n}\n\n/**\n * Añade el registro denso al resultado de la compactación en prosa.\n *\n * Este es el punto que llama `AgentSession._runDefaultCompaction`. Si no cabe o\n * no hay hechos, devuelve el resultado TAL CUAL: la compactación nunca falla ni\n * se degrada por culpa del registro. `usage`, `details` y `firstKeptEntryId` de\n * la prosa se respetan — el registro no toca la contabilidad de tokens porque\n * no ha gastado ninguno.\n */\nexport function anadirRegistroDenso(resultado: CompactionResult, preparation: CompactionPreparation): CompactionResult {\n\tconst restante = presupuestoTotal(preparation) - tokensDeTexto(resultado.summary);\n\tconst denso = compactarADenso(preparation, restante);\n\tif (!denso) return resultado;\n\treturn { ...resultado, summary: `${resultado.summary}\\n\\n${denso.summary}` };\n}\n"]}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Compactación a registro denso.
3
+ *
4
+ * Punto de entrada que usa la sesión: toma la `CompactionPreparation` (lo que
5
+ * upstream ya calculó sobre qué se descarta y qué se conserva) y produce un
6
+ * registro de hechos, sin llamar al modelo y sin poder inventar.
7
+ *
8
+ * Por qué el registro se AÑADE al resumen en prosa en vez de sustituirlo
9
+ * (`anadirRegistroDenso`): sustituirlo dejaba 12 pruebas de upstream en rojo, y
10
+ * no por capricho suyo — la prosa es el único camino por el que pasan los
11
+ * reintentos de summarización (#6647), la `usage` que alimenta el contador de
12
+ * coste de la sesión y la baseUrl resuelta por auth (#6768). Matar ese camino
13
+ * para ahorrar tokens sale caro: se pierde la síntesis (los "Next Steps", el
14
+ * porqué de una decisión) y se pierde la contabilidad. Sumar los dos cabe de
15
+ * sobra en el presupuesto que upstream YA reserva para el resumen: en la sesión
16
+ * real la prosa gastó 1.073 de los 13.107 tokens disponibles.
17
+ */
18
+ import { computeFileLists } from "../compaction/utils.js";
19
+ import { reescribirADenso, tokensDeTexto } from "./registro-denso.js";
20
+ export * from "./registro-denso.js";
21
+ /**
22
+ * Mensajes del lote en el mismo orden en que se numeran los turnos del
23
+ * registro. Se expone porque las pruebas de procedencia necesitan exactamente
24
+ * este array: si aquí y en `compactarADenso` se ordenaran distinto, la puerta
25
+ * de procedencia comprobaría contra los turnos equivocados.
26
+ */
27
+ export function mensajesDelLote(preparation) {
28
+ return [...preparation.messagesToSummarize, ...preparation.turnPrefixMessages];
29
+ }
30
+ /**
31
+ * Techo de tokens del resumen completo: el mismo que `generateSummaryWithUsage`
32
+ * le da a la prosa (0,8 * reserveTokens). El registro se queda con lo que la
33
+ * prosa no haya gastado, así que el resumen entero nunca crece por encima de lo
34
+ * que upstream ya reservaba.
35
+ */
36
+ function presupuestoTotal(preparation) {
37
+ return Math.floor(0.8 * preparation.settings.reserveTokens);
38
+ }
39
+ /** Por debajo de esto no cabe ni la cabecera del bloque: no vale la pena. */
40
+ const MINIMO_UTIL = 40;
41
+ /**
42
+ * Construye SOLO el registro denso de un lote, sin prosa.
43
+ *
44
+ * Devuelve `null` cuando no hay ni un hecho que registrar, o cuando no queda
45
+ * presupuesto para escribirlo. Quien llama se queda con la prosa a secas.
46
+ *
47
+ * OJO: `null` NO distingue "no hay hechos" de "no cabe" — son dos cosas
48
+ * distintas y aquí salen por la misma puerta. Es deliberado y es lo único que
49
+ * puede serlo: el consumidor (`anadirRegistroDenso`) hace lo mismo en los dos
50
+ * casos, devolver la prosa intacta. Lo que el registro NO puede hacer es callar
51
+ * un recorte PARCIAL, y eso no pasa por aquí: lo anuncia `formatearRegistro`
52
+ * con su línea `[omitidos N hechos por presupuesto: ...]`.
53
+ */
54
+ export function compactarADenso(preparation, presupuestoTokens = presupuestoTotal(preparation)) {
55
+ const mensajes = mensajesDelLote(preparation);
56
+ if (mensajes.length === 0)
57
+ return null;
58
+ if (presupuestoTokens < MINIMO_UTIL)
59
+ return null;
60
+ const registro = reescribirADenso(mensajes, presupuestoTokens, preparation.previousSummary);
61
+ if (registro.incluidos.length === 0)
62
+ return null;
63
+ // Las listas de ficheros siguen yendo en `details` aunque el registro ya
64
+ // nombre cada fichero: upstream las reinyecta en la SIGUIENTE compactación
65
+ // (`extractFileOperations`), y romper esa cadena perdería los ficheros de
66
+ // hace dos compactaciones.
67
+ const { readFiles, modifiedFiles } = computeFileLists(preparation.fileOps);
68
+ return {
69
+ summary: registro.texto,
70
+ firstKeptEntryId: preparation.firstKeptEntryId,
71
+ tokensBefore: preparation.tokensBefore,
72
+ details: { readFiles, modifiedFiles },
73
+ };
74
+ }
75
+ /**
76
+ * Añade el registro denso al resultado de la compactación en prosa.
77
+ *
78
+ * Este es el punto que llama `AgentSession._runDefaultCompaction`. Si no cabe o
79
+ * no hay hechos, devuelve el resultado TAL CUAL: la compactación nunca falla ni
80
+ * se degrada por culpa del registro. `usage`, `details` y `firstKeptEntryId` de
81
+ * la prosa se respetan — el registro no toca la contabilidad de tokens porque
82
+ * no ha gastado ninguno.
83
+ */
84
+ export function anadirRegistroDenso(resultado, preparation) {
85
+ const restante = presupuestoTotal(preparation) - tokensDeTexto(resultado.summary);
86
+ const denso = compactarADenso(preparation, restante);
87
+ if (!denso)
88
+ return resultado;
89
+ return { ...resultado, summary: `${resultado.summary}\n\n${denso.summary}` };
90
+ }
91
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/compactar/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEtE,cAAc,qBAAqB,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,WAAkC,EAAkB;IACnF,OAAO,CAAC,GAAG,WAAW,CAAC,mBAAmB,EAAE,GAAG,WAAW,CAAC,kBAAkB,CAAC,CAAC;AAAA,CAC/E;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,WAAkC,EAAU;IACrE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAAA,CAC5D;AAED,6EAA6E;AAC7E,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAC9B,WAAkC,EAClC,iBAAiB,GAAG,gBAAgB,CAAC,WAAW,CAAC,EACvB;IAC1B,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,iBAAiB,GAAG,WAAW;QAAE,OAAO,IAAI,CAAC;IAEjD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;IAC5F,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEjD,yEAAyE;IACzE,4EAA2E;IAC3E,2EAA0E;IAC1E,2BAA2B;IAC3B,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAE3E,OAAO;QACN,OAAO,EAAE,QAAQ,CAAC,KAAK;QACvB,gBAAgB,EAAE,WAAW,CAAC,gBAAgB;QAC9C,YAAY,EAAE,WAAW,CAAC,YAAY;QACtC,OAAO,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE;KACrC,CAAC;AAAA,CACF;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAA2B,EAAE,WAAkC,EAAoB;IACtH,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAClF,MAAM,KAAK,GAAG,eAAe,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,OAAO,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;AAAA,CAC7E","sourcesContent":["/**\n * Compactación a registro denso.\n *\n * Punto de entrada que usa la sesión: toma la `CompactionPreparation` (lo que\n * upstream ya calculó sobre qué se descarta y qué se conserva) y produce un\n * registro de hechos, sin llamar al modelo y sin poder inventar.\n *\n * Por qué el registro se AÑADE al resumen en prosa en vez de sustituirlo\n * (`anadirRegistroDenso`): sustituirlo dejaba 12 pruebas de upstream en rojo, y\n * no por capricho suyo — la prosa es el único camino por el que pasan los\n * reintentos de summarización (#6647), la `usage` que alimenta el contador de\n * coste de la sesión y la baseUrl resuelta por auth (#6768). Matar ese camino\n * para ahorrar tokens sale caro: se pierde la síntesis (los \"Next Steps\", el\n * porqué de una decisión) y se pierde la contabilidad. Sumar los dos cabe de\n * sobra en el presupuesto que upstream YA reserva para el resumen: en la sesión\n * real la prosa gastó 1.073 de los 13.107 tokens disponibles.\n */\n\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { CompactionPreparation, CompactionResult } from \"../compaction/compaction.ts\";\nimport { computeFileLists } from \"../compaction/utils.ts\";\nimport { reescribirADenso, tokensDeTexto } from \"./registro-denso.ts\";\n\nexport * from \"./registro-denso.ts\";\n\n/**\n * Mensajes del lote en el mismo orden en que se numeran los turnos del\n * registro. Se expone porque las pruebas de procedencia necesitan exactamente\n * este array: si aquí y en `compactarADenso` se ordenaran distinto, la puerta\n * de procedencia comprobaría contra los turnos equivocados.\n */\nexport function mensajesDelLote(preparation: CompactionPreparation): AgentMessage[] {\n\treturn [...preparation.messagesToSummarize, ...preparation.turnPrefixMessages];\n}\n\n/**\n * Techo de tokens del resumen completo: el mismo que `generateSummaryWithUsage`\n * le da a la prosa (0,8 * reserveTokens). El registro se queda con lo que la\n * prosa no haya gastado, así que el resumen entero nunca crece por encima de lo\n * que upstream ya reservaba.\n */\nfunction presupuestoTotal(preparation: CompactionPreparation): number {\n\treturn Math.floor(0.8 * preparation.settings.reserveTokens);\n}\n\n/** Por debajo de esto no cabe ni la cabecera del bloque: no vale la pena. */\nconst MINIMO_UTIL = 40;\n\n/**\n * Construye SOLO el registro denso de un lote, sin prosa.\n *\n * Devuelve `null` cuando no hay ni un hecho que registrar, o cuando no queda\n * presupuesto para escribirlo. Quien llama se queda con la prosa a secas.\n *\n * OJO: `null` NO distingue \"no hay hechos\" de \"no cabe\" — son dos cosas\n * distintas y aquí salen por la misma puerta. Es deliberado y es lo único que\n * puede serlo: el consumidor (`anadirRegistroDenso`) hace lo mismo en los dos\n * casos, devolver la prosa intacta. Lo que el registro NO puede hacer es callar\n * un recorte PARCIAL, y eso no pasa por aquí: lo anuncia `formatearRegistro`\n * con su línea `[omitidos N hechos por presupuesto: ...]`.\n */\nexport function compactarADenso(\n\tpreparation: CompactionPreparation,\n\tpresupuestoTokens = presupuestoTotal(preparation),\n): CompactionResult | null {\n\tconst mensajes = mensajesDelLote(preparation);\n\tif (mensajes.length === 0) return null;\n\tif (presupuestoTokens < MINIMO_UTIL) return null;\n\n\tconst registro = reescribirADenso(mensajes, presupuestoTokens, preparation.previousSummary);\n\tif (registro.incluidos.length === 0) return null;\n\n\t// Las listas de ficheros siguen yendo en `details` aunque el registro ya\n\t// nombre cada fichero: upstream las reinyecta en la SIGUIENTE compactación\n\t// (`extractFileOperations`), y romper esa cadena perdería los ficheros de\n\t// hace dos compactaciones.\n\tconst { readFiles, modifiedFiles } = computeFileLists(preparation.fileOps);\n\n\treturn {\n\t\tsummary: registro.texto,\n\t\tfirstKeptEntryId: preparation.firstKeptEntryId,\n\t\ttokensBefore: preparation.tokensBefore,\n\t\tdetails: { readFiles, modifiedFiles },\n\t};\n}\n\n/**\n * Añade el registro denso al resultado de la compactación en prosa.\n *\n * Este es el punto que llama `AgentSession._runDefaultCompaction`. Si no cabe o\n * no hay hechos, devuelve el resultado TAL CUAL: la compactación nunca falla ni\n * se degrada por culpa del registro. `usage`, `details` y `firstKeptEntryId` de\n * la prosa se respetan — el registro no toca la contabilidad de tokens porque\n * no ha gastado ninguno.\n */\nexport function anadirRegistroDenso(resultado: CompactionResult, preparation: CompactionPreparation): CompactionResult {\n\tconst restante = presupuestoTotal(preparation) - tokensDeTexto(resultado.summary);\n\tconst denso = compactarADenso(preparation, restante);\n\tif (!denso) return resultado;\n\treturn { ...resultado, summary: `${resultado.summary}\\n\\n${denso.summary}` };\n}\n"]}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Registro denso: reescribir el historial que se va a compactar como una lista
3
+ * de HECHOS extraídos literalmente de los turnos, en lugar de un resumen en
4
+ * prosa escrito por el modelo.
5
+ *
6
+ * Por qué existe esto:
7
+ *
8
+ * 1. La prosa es cara por token. Un resumen de 4.000 caracteres de la sesión
9
+ * real guardada en `test/fixtures/before-compaction.jsonl` gasta la mayor
10
+ * parte de su presupuesto en conectores ("The user wants to...", "Note
11
+ * that...") que no se pueden verificar contra nada.
12
+ * 2. La prosa PUEDE INVENTAR. Un resumen generado por un modelo puede afirmar
13
+ * que una prueba pasó cuando no pasó, y a partir de ese momento la sesión
14
+ * entera trabaja sobre una mentira que nadie puede rastrear. Aquí cada línea
15
+ * del registro sale de un turno concreto y `verificarProcedencia()` lo
16
+ * comprueba carácter a carácter contra el mensaje de origen.
17
+ * 3. Comprimir lo ya comprimido degrada en cascada: pedirle al modelo que
18
+ * resuma su propio resumen pierde algo en cada vuelta. Aquí el registro
19
+ * anterior se ABSORBE tal cual (`absorberRegistro`), no se vuelve a resumir.
20
+ *
21
+ * El precio, dicho claramente: no hay síntesis. Este registro no escribe
22
+ * "decidimos usar bcrypt porque sha1 es inseguro"; escribe la petición del
23
+ * usuario y el comando que se ejecutó, literales. A cambio, no puede mentir.
24
+ */
25
+ import type { AgentMessage } from "@earendil-works/pi-agent-core";
26
+ /**
27
+ * Clase de hecho. El orden importa poco; lo que importa es el peso (ver PESO),
28
+ * que decide qué se cae primero cuando no hay presupuesto.
29
+ */
30
+ export type ClaseHecho =
31
+ /** Petición del usuario, literal. */
32
+ "pet"
33
+ /** Comando de shell ejecutado. */
34
+ | "cmd"
35
+ /** Primera línea de la salida de una herramienta o comando. */
36
+ | "sal"
37
+ /** Resultado de herramienta marcado como error, o comando con exit != 0. */
38
+ | "err"
39
+ /** Fichero leído. */
40
+ | "lee"
41
+ /** Fichero escrito entero. */
42
+ | "esc"
43
+ /** Fichero editado. */
44
+ | "ed"
45
+ /** Otra herramienta invocada. */
46
+ | "her"
47
+ /** Texto del asistente (primera línea). */
48
+ | "dijo";
49
+ export interface Hecho {
50
+ /** Índice del mensaje de origen dentro del lote que se está comprimiendo. */
51
+ turno: number;
52
+ clase: ClaseHecho;
53
+ /**
54
+ * Texto literal. INVARIANTE: `nucleo(texto)` es siempre una subcadena de
55
+ * `serializarTurno(mensajes[turno])` cuando `heredado` es falso. De ahí sale
56
+ * la puerta de procedencia.
57
+ */
58
+ texto: string;
59
+ /**
60
+ * Verdadero si el hecho viene de un registro anterior absorbido. Su
61
+ * procedencia se fijó en la compactación que lo produjo; no se puede
62
+ * comprobar contra los mensajes de ESTE lote (que ya no los contienen).
63
+ */
64
+ heredado?: boolean;
65
+ }
66
+ /** Texto de un hecho sin la marca de truncado: lo que debe estar en el origen. */
67
+ export declare function nucleo(texto: string): string;
68
+ /**
69
+ * Texto canónico de un turno: TODO lo que se puede citar de él, aplanado.
70
+ *
71
+ * Incluye los argumentos de las tool calls dos veces (el JSON completo y cada
72
+ * valor de cadena por separado) a propósito: `JSON.stringify` escapa los saltos
73
+ * de línea, así que un comando multilínea no aparecería como subcadena del
74
+ * JSON. Sin el valor crudo, `verificarProcedencia` rechazaría hechos correctos.
75
+ */
76
+ export declare function serializarTurno(mensaje: AgentMessage): string;
77
+ /**
78
+ * Extrae los hechos de un lote de mensajes.
79
+ *
80
+ * Devuelve `[]` cuando NO HAY nada que extraer (lote vacío, o solo mensajes sin
81
+ * contenido citable). Eso es distinto de "no puedo": aquí siempre se puede,
82
+ * porque no hay ni red ni modelo de por medio. Quien decide qué hacer con un
83
+ * registro vacío es `compactarADenso`, que en ese caso devuelve `null` y deja
84
+ * que la compactación en prosa haga su trabajo.
85
+ */
86
+ export declare function extraerHechos(mensajes: AgentMessage[]): Hecho[];
87
+ /** Estimación de tokens con la misma heurística que usa la compactación (chars/4). */
88
+ export declare function tokensDeTexto(texto: string): number;
89
+ export interface RegistroFormateado {
90
+ texto: string;
91
+ incluidos: Hecho[];
92
+ omitidos: Hecho[];
93
+ }
94
+ /**
95
+ * Formatea los hechos como bloque de registro, respetando un presupuesto de
96
+ * tokens.
97
+ *
98
+ * Cuando no caben todos se caen primero los de menor peso (lecturas, prosa del
99
+ * asistente) y NUNCA en silencio: la última línea dice cuántos se han quitado y
100
+ * de qué clase. Un registro recortado que no lo dijera se leería como "esto es
101
+ * todo lo que pasó", que es exactamente el fallo que se lee como éxito.
102
+ *
103
+ * `omitidosPrevios` es la cuenta que YA declaraba el registro anterior de la
104
+ * cascada, y se suma al total. Sin ese arrastre el aviso duraba una sola vuelta:
105
+ * medido, la 1ª compactación decía "[omitidos 49 hechos]" y la 2ª —con
106
+ * presupuesto de sobra, sin nada nuevo que quitar— salía sin aviso ninguno. El
107
+ * registro volvía a leerse como "esto es todo lo que pasó" con 49 hechos ya
108
+ * perdidos, que es justo lo que este aviso existe para impedir.
109
+ */
110
+ export declare function formatearRegistro(hechos: Hecho[], presupuestoTokens: number, omitidosPrevios?: number): RegistroFormateado;
111
+ /**
112
+ * Cuántos hechos declara haber perdido un registro YA ESCRITO. Devuelve 0 si el
113
+ * texto no es un registro o si el registro no declara ninguna pérdida.
114
+ *
115
+ * Existe porque `absorberRegistro` solo recupera las líneas de hecho: el aviso
116
+ * de recorte no es un hecho y se quedaba fuera, así que la cuenta de lo perdido
117
+ * moría en la vuelta siguiente de la cascada. Ver `formatearRegistro`.
118
+ */
119
+ export declare function omitidosDeRegistro(texto: string): number;
120
+ /**
121
+ * Lee un bloque de registro denso de un texto.
122
+ *
123
+ * Tres estados, no dos:
124
+ * - `null` → NO ES un registro denso (prosa, o texto sin el bloque). "No lo he
125
+ * mirado" no aplica aquí, pero "esto no es lo mío" sí, y no se puede
126
+ * confundir con "el registro estaba vacío".
127
+ * - `[]` → es un registro denso y NO TIENE hechos.
128
+ * - `[...]` → los hechos, marcados como heredados.
129
+ */
130
+ export declare function absorberRegistro(texto: string): Hecho[] | null;
131
+ export interface Procedencia {
132
+ /** Hechos cuyo texto aparece literalmente en su turno de origen. */
133
+ validos: Hecho[];
134
+ /** Hechos que NO aparecen en su turno, o cuyo turno no existe. Inventados. */
135
+ invalidos: Hecho[];
136
+ /**
137
+ * Hechos heredados de un registro anterior. NO son inválidos: su origen está
138
+ * en un lote que ya no tenemos delante. Se cuentan aparte a propósito, para
139
+ * no leer "no lo puedo comprobar aquí" como "es válido".
140
+ */
141
+ heredados: Hecho[];
142
+ }
143
+ /**
144
+ * Comprueba que cada hecho se puede rastrear a su turno.
145
+ *
146
+ * Esta es la puerta que impide que el registro invente: un hecho cuyo texto no
147
+ * esté, carácter a carácter, en el mensaje que dice ser su origen, sale por
148
+ * `invalidos`.
149
+ */
150
+ export declare function verificarProcedencia(hechos: Hecho[], mensajes: AgentMessage[]): Procedencia;
151
+ /**
152
+ * Construye el registro denso de un lote, absorbiendo el registro anterior si
153
+ * lo hay.
154
+ *
155
+ * `resumenAnterior` es el resumen de la compactación previa. Si ya era un
156
+ * registro denso, sus líneas se conservan TAL CUAL (no se re-resumen): esa es
157
+ * la diferencia entre encadenar compactaciones y degradarlas en cascada.
158
+ */
159
+ export declare function reescribirADenso(mensajes: AgentMessage[], presupuestoTokens: number, resumenAnterior?: string): RegistroFormateado;
160
+ //# sourceMappingURL=registro-denso.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registro-denso.d.ts","sourceRoot":"","sources":["../../../src/core/compactar/registro-denso.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAMlE;;;GAGG;AACH,MAAM,MAAM,UAAU;AACrB,sCAAqC;AACnC,KAAK;AACP,kCAAkC;GAChC,KAAK;AACP,gEAA+D;GAC7D,KAAK;AACP,4EAA4E;GAC1E,KAAK;AACP,sBAAqB;GACnB,KAAK;AACP,8BAA8B;GAC5B,KAAK;AACP,uBAAuB;GACrB,IAAI;AACN,iCAAiC;GAC/B,KAAK;AACP,4CAA2C;GACzC,MAAM,CAAC;AAEV,MAAM,WAAW,KAAK;IACrB,+EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,CAAC;IAClB;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AA2BD,kFAAkF;AAClF,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5C;AAuCD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAyC7D;AAwDD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,KAAK,EAAE,CA6D/D;AAMD,yFAAsF;AACtF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAuHD,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,KAAK,EAAE,CAAC;IACnB,QAAQ,EAAE,KAAK,EAAE,CAAC;CAClB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,eAAe,SAAI,GAAG,kBAAkB,CAuDrH;AA6CD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASxD;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,IAAI,CA4B9D;AAMD,MAAM,WAAW,WAAW;IAC3B,oEAAoE;IACpE,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,8EAA8E;IAC9E,SAAS,EAAE,KAAK,EAAE,CAAC;IACnB;;;;OAIG;IACH,SAAS,EAAE,KAAK,EAAE,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,WAAW,CAoC3F;AAMD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC/B,QAAQ,EAAE,YAAY,EAAE,EACxB,iBAAiB,EAAE,MAAM,EACzB,eAAe,CAAC,EAAE,MAAM,GACtB,kBAAkB,CAQpB","sourcesContent":["/**\n * Registro denso: reescribir el historial que se va a compactar como una lista\n * de HECHOS extraídos literalmente de los turnos, en lugar de un resumen en\n * prosa escrito por el modelo.\n *\n * Por qué existe esto:\n *\n * 1. La prosa es cara por token. Un resumen de 4.000 caracteres de la sesión\n * real guardada en `test/fixtures/before-compaction.jsonl` gasta la mayor\n * parte de su presupuesto en conectores (\"The user wants to...\", \"Note\n * that...\") que no se pueden verificar contra nada.\n * 2. La prosa PUEDE INVENTAR. Un resumen generado por un modelo puede afirmar\n * que una prueba pasó cuando no pasó, y a partir de ese momento la sesión\n * entera trabaja sobre una mentira que nadie puede rastrear. Aquí cada línea\n * del registro sale de un turno concreto y `verificarProcedencia()` lo\n * comprueba carácter a carácter contra el mensaje de origen.\n * 3. Comprimir lo ya comprimido degrada en cascada: pedirle al modelo que\n * resuma su propio resumen pierde algo en cada vuelta. Aquí el registro\n * anterior se ABSORBE tal cual (`absorberRegistro`), no se vuelve a resumir.\n *\n * El precio, dicho claramente: no hay síntesis. Este registro no escribe\n * \"decidimos usar bcrypt porque sha1 es inseguro\"; escribe la petición del\n * usuario y el comando que se ejecutó, literales. A cambio, no puede mentir.\n */\n\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\n\n// ============================================================================\n// Tipos\n// ============================================================================\n\n/**\n * Clase de hecho. El orden importa poco; lo que importa es el peso (ver PESO),\n * que decide qué se cae primero cuando no hay presupuesto.\n */\nexport type ClaseHecho =\n\t/** Petición del usuario, literal. */\n\t| \"pet\"\n\t/** Comando de shell ejecutado. */\n\t| \"cmd\"\n\t/** Primera línea de la salida de una herramienta o comando. */\n\t| \"sal\"\n\t/** Resultado de herramienta marcado como error, o comando con exit != 0. */\n\t| \"err\"\n\t/** Fichero leído. */\n\t| \"lee\"\n\t/** Fichero escrito entero. */\n\t| \"esc\"\n\t/** Fichero editado. */\n\t| \"ed\"\n\t/** Otra herramienta invocada. */\n\t| \"her\"\n\t/** Texto del asistente (primera línea). */\n\t| \"dijo\";\n\nexport interface Hecho {\n\t/** Índice del mensaje de origen dentro del lote que se está comprimiendo. */\n\tturno: number;\n\tclase: ClaseHecho;\n\t/**\n\t * Texto literal. INVARIANTE: `nucleo(texto)` es siempre una subcadena de\n\t * `serializarTurno(mensajes[turno])` cuando `heredado` es falso. De ahí sale\n\t * la puerta de procedencia.\n\t */\n\ttexto: string;\n\t/**\n\t * Verdadero si el hecho viene de un registro anterior absorbido. Su\n\t * procedencia se fijó en la compactación que lo produjo; no se puede\n\t * comprobar contra los mensajes de ESTE lote (que ya no los contienen).\n\t */\n\theredado?: boolean;\n}\n\n/** Peso: más alto = se conserva más tiempo cuando falta presupuesto. */\nconst PESO: Record<ClaseHecho, number> = {\n\terr: 100,\n\tpet: 95,\n\ted: 90,\n\tesc: 90,\n\tcmd: 80,\n\tsal: 50,\n\ther: 40,\n\tlee: 30,\n\tdijo: 20,\n};\n\n/** Marca de truncado. Se quita antes de comparar con el origen (ver `nucleo`). */\nconst ELIPSIS = \"…\";\n\nconst MARCA_ABRE = \"<registro-denso>\";\nconst MARCA_CIERRA = \"</registro-denso>\";\n\n/**\n * Aviso de recorte de un registro YA ESCRITO. Solo se lee el total; el detalle\n * por clases describe la vuelta en que se escribió y no se reconstruye.\n */\nconst RE_OMITIDOS = /^\\[omitidos (\\d+) hechos? por presupuesto:/;\n\n/** Texto de un hecho sin la marca de truncado: lo que debe estar en el origen. */\nexport function nucleo(texto: string): string {\n\treturn texto.endsWith(ELIPSIS) ? texto.slice(0, -ELIPSIS.length) : texto;\n}\n\n// ============================================================================\n// Normalización\n// ============================================================================\n\n/**\n * Colapsa todos los espacios en blanco a un solo espacio y recorta.\n *\n * Es idempotente y distributiva sobre el salto de línea\n * (`aplanar(a + \"\\n\" + b) === aplanar(a) + \" \" + aplanar(b)` con a y b no\n * vacíos), que es justo lo que hace que \"primera línea aplanada\" siga siendo\n * un prefijo del turno aplanado entero. Sin esa propiedad la puerta de\n * procedencia daría falsos negativos en cuanto un comando llevara un salto.\n */\nfunction aplanar(texto: string): string {\n\treturn texto.replace(/\\s+/g, \" \").trim();\n}\n\nfunction recortar(texto: string, maxChars: number): string {\n\tconst plano = aplanar(texto);\n\tif (plano.length <= maxChars) return plano;\n\treturn plano.slice(0, maxChars) + ELIPSIS;\n}\n\n/** Texto de un contenido que puede ser cadena o bloques. */\nfunction textoDeContenido(contenido: unknown): string {\n\tif (typeof contenido === \"string\") return contenido;\n\tif (!Array.isArray(contenido)) return \"\";\n\tconst partes: string[] = [];\n\tfor (const bloque of contenido) {\n\t\tif (bloque && typeof bloque === \"object\" && (bloque as { type?: string }).type === \"text\") {\n\t\t\tconst t = (bloque as { text?: string }).text;\n\t\t\tif (typeof t === \"string\") partes.push(t);\n\t\t}\n\t}\n\treturn partes.join(\"\\n\");\n}\n\n/**\n * Texto canónico de un turno: TODO lo que se puede citar de él, aplanado.\n *\n * Incluye los argumentos de las tool calls dos veces (el JSON completo y cada\n * valor de cadena por separado) a propósito: `JSON.stringify` escapa los saltos\n * de línea, así que un comando multilínea no aparecería como subcadena del\n * JSON. Sin el valor crudo, `verificarProcedencia` rechazaría hechos correctos.\n */\nexport function serializarTurno(mensaje: AgentMessage): string {\n\tconst partes: string[] = [];\n\tconst msg = mensaje;\n\n\tswitch (msg.role) {\n\t\tcase \"user\":\n\t\tcase \"custom\":\n\t\t\tpartes.push(textoDeContenido(msg.content));\n\t\t\tbreak;\n\t\tcase \"toolResult\":\n\t\t\tpartes.push(textoDeContenido(msg.content));\n\t\t\tpartes.push(msg.toolName);\n\t\t\tbreak;\n\t\tcase \"assistant\": {\n\t\t\tfor (const bloque of msg.content) {\n\t\t\t\tif (bloque.type === \"text\") partes.push(bloque.text);\n\t\t\t\telse if (bloque.type === \"thinking\") partes.push(bloque.thinking);\n\t\t\t\telse if (bloque.type === \"toolCall\") {\n\t\t\t\t\tpartes.push(bloque.name);\n\t\t\t\t\tconst args = bloque.arguments as Record<string, unknown> | undefined;\n\t\t\t\t\tif (args) {\n\t\t\t\t\t\tpartes.push(JSON.stringify(args));\n\t\t\t\t\t\tfor (const valor of Object.values(args)) {\n\t\t\t\t\t\t\tif (typeof valor === \"string\") partes.push(valor);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase \"bashExecution\":\n\t\t\tpartes.push(msg.command);\n\t\t\tpartes.push(msg.output);\n\t\t\tbreak;\n\t\tcase \"branchSummary\":\n\t\tcase \"compactionSummary\":\n\t\t\tpartes.push(msg.summary);\n\t\t\tbreak;\n\t}\n\n\treturn aplanar(partes.join(\"\\n\"));\n}\n\n// ============================================================================\n// Extracción\n// ============================================================================\n\n// 160 y no 300: medido sobre la sesión real de `before-compaction.jsonl`, las\n// 12 peticiones del usuario a 300 caracteres se comían 900 de los 1073 tokens\n// del presupuesto y dejaban fuera 247 hechos. La petición recortada sigue\n// diciendo qué se pidió; las 140 caracteres de más solo decían cómo.\nconst MAX_PET = 160;\nconst MAX_CMD = 200;\nconst MAX_SAL = 160;\nconst MAX_DIJO = 140;\n/** Por encima de esto, la salida de una herramienta es contenido, no estado. */\nconst MAX_ESTADO = 100;\n\n/** Primera línea no vacía de un texto. */\nfunction primeraLinea(texto: string): string {\n\tfor (const linea of texto.split(\"\\n\")) {\n\t\tif (linea.trim().length > 0) return linea;\n\t}\n\treturn \"\";\n}\n\nfunction anadir(hechos: Hecho[], turno: number, clase: ClaseHecho, crudo: string, maxChars: number): void {\n\tconst texto = recortar(crudo, maxChars);\n\tif (nucleo(texto).length === 0) return;\n\thechos.push({ turno, clase, texto });\n}\n\nfunction hechosDeToolCall(hechos: Hecho[], turno: number, nombre: string, args: Record<string, unknown>): void {\n\tconst ruta = typeof args.path === \"string\" ? args.path : undefined;\n\tswitch (nombre) {\n\t\tcase \"read\":\n\t\t\tif (ruta) anadir(hechos, turno, \"lee\", ruta, MAX_CMD);\n\t\t\treturn;\n\t\tcase \"write\":\n\t\t\tif (ruta) anadir(hechos, turno, \"esc\", ruta, MAX_CMD);\n\t\t\treturn;\n\t\tcase \"edit\":\n\t\t\tif (ruta) anadir(hechos, turno, \"ed\", ruta, MAX_CMD);\n\t\t\treturn;\n\t\tcase \"bash\":\n\t\t\tif (typeof args.command === \"string\") anadir(hechos, turno, \"cmd\", args.command, MAX_CMD);\n\t\t\treturn;\n\t\tdefault: {\n\t\t\t// Para el resto de herramientas guardamos el nombre y el primer\n\t\t\t// argumento de cadena: suficiente para saber QUÉ se hizo sin pagar el\n\t\t\t// JSON entero. El nombre solo no distingue dos búsquedas distintas.\n\t\t\tconst primerValor = Object.values(args).find((v) => typeof v === \"string\") as string | undefined;\n\t\t\tanadir(hechos, turno, \"her\", primerValor ? `${nombre} ${primerValor}` : nombre, MAX_CMD);\n\t\t}\n\t}\n}\n\n/**\n * Extrae los hechos de un lote de mensajes.\n *\n * Devuelve `[]` cuando NO HAY nada que extraer (lote vacío, o solo mensajes sin\n * contenido citable). Eso es distinto de \"no puedo\": aquí siempre se puede,\n * porque no hay ni red ni modelo de por medio. Quien decide qué hacer con un\n * registro vacío es `compactarADenso`, que en ese caso devuelve `null` y deja\n * que la compactación en prosa haga su trabajo.\n */\nexport function extraerHechos(mensajes: AgentMessage[]): Hecho[] {\n\tconst hechos: Hecho[] = [];\n\n\tfor (let turno = 0; turno < mensajes.length; turno++) {\n\t\tconst msg = mensajes[turno];\n\t\tswitch (msg.role) {\n\t\t\tcase \"user\":\n\t\t\t\tanadir(hechos, turno, \"pet\", textoDeContenido(msg.content), MAX_PET);\n\t\t\t\tbreak;\n\t\t\tcase \"assistant\": {\n\t\t\t\tfor (const bloque of msg.content) {\n\t\t\t\t\tif (bloque.type === \"text\") {\n\t\t\t\t\t\tanadir(hechos, turno, \"dijo\", primeraLinea(bloque.text), MAX_DIJO);\n\t\t\t\t\t} else if (bloque.type === \"toolCall\") {\n\t\t\t\t\t\thechosDeToolCall(hechos, turno, bloque.name, (bloque.arguments as Record<string, unknown>) ?? {});\n\t\t\t\t\t}\n\t\t\t\t\t// El pensamiento no entra: no es un hecho, es deliberación.\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"toolResult\": {\n\t\t\t\tconst primera = primeraLinea(textoDeContenido(msg.content));\n\t\t\t\tif (msg.isError === true) {\n\t\t\t\t\tanadir(hechos, turno, \"err\", primera, MAX_SAL);\n\t\t\t\t} else if (aplanar(primera).length <= MAX_ESTADO) {\n\t\t\t\t\t// Solo la salida CORTA es un hecho (\"Switched to a new branch\n\t\t\t\t\t// 'refactor'\", \"(no output)\"). La primera línea de un `read` es la\n\t\t\t\t\t// primera línea del fichero: en la sesión real eran 3.545 tokens de\n\t\t\t\t\t// `import { ... }` que no dicen nada de lo que pasó, y la llamada que\n\t\t\t\t\t// los produjo ya está registrada.\n\t\t\t\t\tanadir(hechos, turno, \"sal\", primera, MAX_SAL);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"bashExecution\": {\n\t\t\t\tanadir(hechos, turno, \"cmd\", msg.command, MAX_CMD);\n\t\t\t\tconst fallo = typeof msg.exitCode === \"number\" && msg.exitCode !== 0;\n\t\t\t\tanadir(hechos, turno, fallo ? \"err\" : \"sal\", primeraLinea(msg.output), MAX_SAL);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"compactionSummary\":\n\t\t\tcase \"branchSummary\": {\n\t\t\t\t// Cascada: un resumen anterior que YA es un registro denso se\n\t\t\t\t// absorbe línea a línea. Si es prosa (compactación anterior a este\n\t\t\t\t// módulo, o de una extensión), se guarda su primera línea y nada\n\t\t\t\t// más: no vamos a fingir que sabemos de dónde salió cada frase.\n\t\t\t\tconst previos = absorberRegistro(msg.summary);\n\t\t\t\tif (previos) {\n\t\t\t\t\thechos.push(...previos);\n\t\t\t\t} else {\n\t\t\t\t\tanadir(hechos, turno, \"dijo\", primeraLinea(msg.summary), MAX_DIJO);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"custom\":\n\t\t\t\tanadir(hechos, turno, \"dijo\", primeraLinea(textoDeContenido(msg.content)), MAX_DIJO);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn hechos;\n}\n\n// ============================================================================\n// Formato y presupuesto\n// ============================================================================\n\n/** Estimación de tokens con la misma heurística que usa la compactación (chars/4). */\nexport function tokensDeTexto(texto: string): number {\n\treturn Math.ceil(texto.length / 4);\n}\n\n/**\n * Marca de raíz abreviada. La abreviatura vive solo en el texto formateado y\n * `absorberRegistro` la deshace, así que `Hecho.texto` sigue siendo literal en\n * memoria.\n *\n * Que sea reversible NO es gratis: depende de que ninguna línea del bloque\n * contenga este carácter por su cuenta, y `»` es comilla latina corriente en\n * español. Lo garantiza la guardia de `raizComun`, no el carácter en sí.\n */\nconst MARCA_RAIZ = \"»\";\n\n/**\n * Directorio cuya repetición más caracteres ahorra si se saca a una cabecera.\n *\n * Se parte del prefijo común de las rutas de FICHERO (`lee`/`esc`/`ed`, que son\n * homogéneas) y se prueban también sus directorios padre, quedándose con el que\n * más ahorra contando las apariciones en TODAS las líneas. Los padres importan:\n * en la sesión real de `before-compaction.jsonl` las rutas de fichero comparten\n * `…/pi-mono/packages/coding-agent/`, pero los 59 comandos empiezan por\n * `cd …/pi-mono && `, y solo el padre corto sirve para los dos.\n *\n * Primer intento: sacar el prefijo común de TODAS las rutas absolutas del lote.\n * Salía \"\" siempre — basta un `/dev/null` o un `/tmp/x` sueltos para que el\n * prefijo común se quede en \"/\" — y la abreviatura quedó de adorno, sin que\n * ninguna prueba lo notara. Lo cazó romper la función a propósito y ver que la\n * salida no cambiaba ni un byte.\n *\n * Devuelve \"\" cuando no compensa.\n */\nfunction raizComun(hechos: Hecho[]): string {\n\t// Si UN solo hecho lleva ya la marca, no hay abreviatura posible para NINGUNO:\n\t// `absorberRegistro` expande todas las marcas de la línea, así que una `»`\n\t// que venía en el texto literal se convertiría en la raíz. Con la petición\n\t// «lee el fichero \"main.ts\" y dime »qué hace» el hecho volvía de la cascada\n\t// como «... y dime /Users/x/proy/qué hace»: texto FABRICADO, y encima marcado\n\t// como heredado, que es justo lo que `verificarProcedencia` no comprueba.\n\t// La guardia por línea que había en `abreviar` no bastaba: protegía la línea\n\t// al escribir y la expansión al leer no la respetaba.\n\tif (hechos.some((h) => h.texto.includes(MARCA_RAIZ))) return \"\";\n\n\tconst rutas = hechos.filter((h) => h.clase === \"lee\" || h.clase === \"esc\" || h.clase === \"ed\").map((h) => h.texto);\n\tif (rutas.length < 3) return \"\";\n\n\tlet prefijo = rutas[0];\n\tfor (const ruta of rutas) {\n\t\tlet i = 0;\n\t\twhile (i < prefijo.length && i < ruta.length && prefijo[i] === ruta[i]) i++;\n\t\tprefijo = prefijo.slice(0, i);\n\t\tif (prefijo.length === 0) return \"\";\n\t}\n\n\tconst candidatos: string[] = [];\n\tfor (let corte = prefijo.lastIndexOf(\"/\"); corte > 0; corte = prefijo.lastIndexOf(\"/\", corte - 1)) {\n\t\tconst candidato = prefijo.slice(0, corte + 1);\n\t\tif (candidato.length >= 8) candidatos.push(candidato);\n\t}\n\n\tlet mejor = \"\";\n\tlet mejorAhorro = 0;\n\tfor (const candidato of candidatos) {\n\t\tlet apariciones = 0;\n\t\tfor (const hecho of hechos) apariciones += hecho.texto.split(candidato).length - 1;\n\t\t// Cada aparición se sustituye por un carácter, y la cabecera se paga una vez.\n\t\tconst ahorro = apariciones * (candidato.length - MARCA_RAIZ.length) - (candidato.length + 7);\n\t\tif (ahorro > mejorAhorro) {\n\t\t\tmejorAhorro = ahorro;\n\t\t\tmejor = candidato;\n\t\t}\n\t}\n\treturn mejor;\n}\n\n/**\n * Sustituye la raíz por su marca. `raizComun` ya ha garantizado que ningún\n * hecho del lote contiene la marca, así que la expansión de vuelta no puede ser\n * ambigua. La guardia por línea que había aquí daba esa garantía por línea y no\n * por bloque, que es donde se rompía (ver `raizComun`).\n */\nfunction abreviar(texto: string, raiz: string): string {\n\tif (!raiz) return texto;\n\treturn texto.split(raiz).join(MARCA_RAIZ);\n}\n\nfunction lineaDe(hecho: Hecho, raiz: string): string {\n\treturn `T${hecho.turno}${hecho.heredado ? \"*\" : \"\"} ${hecho.clase} ${abreviar(hecho.texto, raiz)}`;\n}\n\n/**\n * Quita duplicados exactos (misma clase y mismo texto).\n *\n * Ante un empate se conserva el que SÍ se puede verificar. En la cascada los\n * heredados van delante (`reescribirADenso` los antepone), así que \"conservar el\n * primero\" degradaba un hecho comprobable en uno que nadie puede comprobar: con\n * `resumenAnterior` conteniendo `T0 pet sigue` y un turno nuevo que vuelve a\n * decir «sigue» —cosa que pasa a diario— el registro se quedaba con la línea\n * heredada, y `verificarProcedencia` la devolvía por `heredados`, no por\n * `validos`. La puerta de procedencia se iba vaciando sola a cada compactación.\n */\nfunction deduplicar(hechos: Hecho[]): Hecho[] {\n\tconst posicion = new Map<string, number>();\n\tconst salida: Hecho[] = [];\n\tfor (const hecho of hechos) {\n\t\tconst clave = `${hecho.clase} ${hecho.texto}`;\n\t\tconst previa = posicion.get(clave);\n\t\tif (previa === undefined) {\n\t\t\tposicion.set(clave, salida.length);\n\t\t\tsalida.push(hecho);\n\t\t\tcontinue;\n\t\t}\n\t\t// Mismo texto: si el que guardamos es heredado y este no, se cambia por él.\n\t\t// Solo cambia el turno (y el `*`), nunca el texto, así que ninguna línea\n\t\t// aparece ni desaparece del registro por esto.\n\t\tif (salida[previa].heredado && !hecho.heredado) salida[previa] = hecho;\n\t}\n\treturn salida;\n}\n\nexport interface RegistroFormateado {\n\ttexto: string;\n\tincluidos: Hecho[];\n\tomitidos: Hecho[];\n}\n\n/**\n * Formatea los hechos como bloque de registro, respetando un presupuesto de\n * tokens.\n *\n * Cuando no caben todos se caen primero los de menor peso (lecturas, prosa del\n * asistente) y NUNCA en silencio: la última línea dice cuántos se han quitado y\n * de qué clase. Un registro recortado que no lo dijera se leería como \"esto es\n * todo lo que pasó\", que es exactamente el fallo que se lee como éxito.\n *\n * `omitidosPrevios` es la cuenta que YA declaraba el registro anterior de la\n * cascada, y se suma al total. Sin ese arrastre el aviso duraba una sola vuelta:\n * medido, la 1ª compactación decía \"[omitidos 49 hechos]\" y la 2ª —con\n * presupuesto de sobra, sin nada nuevo que quitar— salía sin aviso ninguno. El\n * registro volvía a leerse como \"esto es todo lo que pasó\" con 49 hechos ya\n * perdidos, que es justo lo que este aviso existe para impedir.\n */\nexport function formatearRegistro(hechos: Hecho[], presupuestoTokens: number, omitidosPrevios = 0): RegistroFormateado {\n\tconst unicos = deduplicar(hechos);\n\tconst raiz = raizComun(unicos);\n\tconst cabecera = raiz ? `#raiz ${raiz}\\n` : \"\";\n\n\t// Orden de sacrificio: peso ascendente y, a igualdad, los más antiguos primero.\n\tconst porSacrificar = [...unicos].sort((a, b) => PESO[a.clase] - PESO[b.clase] || a.turno - b.turno);\n\n\tconst fijos = tokensDeTexto(`${MARCA_ABRE}\\n${cabecera}${MARCA_CIERRA}\\n`);\n\tconst fuera = new Set<Hecho>();\n\n\t// El aviso de recorte se cuenta con su TEXTO REAL, no con un hueco de tamaño\n\t// fijo: con muchas clases omitidas mide 80 caracteres y no 45, y esa\n\t// diferencia se comió el presupuesto por un token en la primera versión.\n\tconst avisoDe = (omitidos: Hecho[]): string => {\n\t\tconst total = omitidos.length + omitidosPrevios;\n\t\tif (total === 0) return \"\";\n\t\tconst porClase = new Map<ClaseHecho, number>();\n\t\tfor (const h of omitidos) porClase.set(h.clase, (porClase.get(h.clase) ?? 0) + 1);\n\t\tconst detalle = [...porClase.entries()].sort((a, b) => b[1] - a[1]).map(([clase, n]) => `${clase} x${n}`);\n\t\t// El arrastre va como una entrada más del detalle, no como una frase\n\t\t// aparte: así el total de cabecera lo vuelve a leer `omitidosDeRegistro`\n\t\t// en la vuelta siguiente sin sumar dos veces lo mismo.\n\t\tif (omitidosPrevios > 0) detalle.push(`${omitidosPrevios} en compactaciones anteriores`);\n\t\treturn `[omitidos ${total} hechos por presupuesto: ${detalle.join(\", \")}]`;\n\t};\n\n\tlet incluidos = unicos;\n\tlet omitidos: Hecho[] = [];\n\tlet costeLineas = 0;\n\tfor (const h of unicos) costeLineas += tokensDeTexto(`${lineaDe(h, raiz)}\\n`);\n\n\tconst coste = () =>\n\t\tfijos + costeLineas + (omitidos.length + omitidosPrevios > 0 ? tokensDeTexto(`${avisoDe(omitidos)}\\n`) : 0);\n\n\tlet indice = 0;\n\twhile (coste() > presupuestoTokens && indice < porSacrificar.length) {\n\t\tconst victima = porSacrificar[indice];\n\t\tindice++;\n\t\tfuera.add(victima);\n\t\tcosteLineas -= tokensDeTexto(`${lineaDe(victima, raiz)}\\n`);\n\t\tomitidos = unicos.filter((h) => fuera.has(h));\n\t}\n\tincluidos = unicos.filter((h) => !fuera.has(h));\n\n\tconst lineas = incluidos.map((h) => lineaDe(h, raiz));\n\tif (raiz) lineas.unshift(`#raiz ${raiz}`);\n\tconst aviso = avisoDe(omitidos);\n\tif (aviso) lineas.push(aviso);\n\n\treturn {\n\t\ttexto: `${MARCA_ABRE}\\n${lineas.join(\"\\n\")}\\n${MARCA_CIERRA}`,\n\t\tincluidos,\n\t\tomitidos,\n\t};\n}\n\n// ============================================================================\n// Absorción (cascada)\n// ============================================================================\n\nconst RE_LINEA = /^T(\\d+)(\\*?) ([a-z]{2,4}) (.*)$/;\n\n/**\n * Límites `[abre, cierra]` del bloque de registro dentro de un texto, o `null`\n * si no hay bloque.\n *\n * Las marcas se buscan como LÍNEA COMPLETA, y la de apertura es la ÚLTIMA.\n * Buscarlas como subcadena (y la primera) leía el bloque equivocado en dos casos\n * reales:\n *\n * (a) El resumen persistido es «prosa + registro», y en la SIGUIENTE\n * compactación upstream se lo pasa entero al modelo dentro de\n * <previous-summary> pidiéndole un resumen actualizado. Si el modelo copia el\n * bloque en su prosa, esa copia va ANTES del registro de verdad y ganaba: se\n * heredaban hechos escritos por el modelo, que es exactamente lo que este\n * módulo existe para impedir — y como salen por `heredados`,\n * `verificarProcedencia` no los mira.\n * (b) Un hecho cuyo texto contiene \"</registro-denso>\" (basta con que el usuario\n * lo pegue) cerraba el bloque en mitad de la lista y las líneas siguientes se\n * perdían EN SILENCIO. Con 3 hechos se absorbía 1.\n *\n * Una línea de hecho siempre empieza por \"T<n> <clase> \", así que nunca es igual\n * a una marca entera: la comparación por línea las distingue sin heurística.\n */\nfunction localizarBloque(lineas: string[]): [number, number] | null {\n\tlet abre = -1;\n\tfor (let i = lineas.length - 1; i >= 0; i--) {\n\t\tif (lineas[i].trim() === MARCA_ABRE) {\n\t\t\tabre = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (abre < 0) return null;\n\tfor (let i = abre + 1; i < lineas.length; i++) {\n\t\tif (lineas[i].trim() === MARCA_CIERRA) return [abre, i];\n\t}\n\treturn null;\n}\n\n/**\n * Cuántos hechos declara haber perdido un registro YA ESCRITO. Devuelve 0 si el\n * texto no es un registro o si el registro no declara ninguna pérdida.\n *\n * Existe porque `absorberRegistro` solo recupera las líneas de hecho: el aviso\n * de recorte no es un hecho y se quedaba fuera, así que la cuenta de lo perdido\n * moría en la vuelta siguiente de la cascada. Ver `formatearRegistro`.\n */\nexport function omitidosDeRegistro(texto: string): number {\n\tconst lineas = texto.split(\"\\n\");\n\tconst limites = localizarBloque(lineas);\n\tif (!limites) return 0;\n\tfor (const linea of lineas.slice(limites[0] + 1, limites[1])) {\n\t\tconst m = linea.trim().match(RE_OMITIDOS);\n\t\tif (m) return Number.parseInt(m[1], 10);\n\t}\n\treturn 0;\n}\n\n/**\n * Lee un bloque de registro denso de un texto.\n *\n * Tres estados, no dos:\n * - `null` → NO ES un registro denso (prosa, o texto sin el bloque). \"No lo he\n * mirado\" no aplica aquí, pero \"esto no es lo mío\" sí, y no se puede\n * confundir con \"el registro estaba vacío\".\n * - `[]` → es un registro denso y NO TIENE hechos.\n * - `[...]` → los hechos, marcados como heredados.\n */\nexport function absorberRegistro(texto: string): Hecho[] | null {\n\tconst lineas = texto.split(\"\\n\");\n\tconst limites = localizarBloque(lineas);\n\tif (!limites) return null;\n\tconst [abre, cierra] = limites;\n\n\tconst hechos: Hecho[] = [];\n\tlet raiz = \"\";\n\tfor (const linea of lineas.slice(abre + 1, cierra)) {\n\t\tconst recortada = linea.trim();\n\t\tif (recortada.startsWith(\"#raiz \")) {\n\t\t\traiz = recortada.slice(\"#raiz \".length);\n\t\t\tcontinue;\n\t\t}\n\t\tconst m = recortada.match(RE_LINEA);\n\t\tif (!m) continue;\n\t\t// Se deshace la abreviatura AQUÍ: en memoria `texto` vuelve a ser literal,\n\t\t// que es lo que hace verificable un hecho heredado el día que alguien lo\n\t\t// compare contra su sesión de origen.\n\t\tconst bruto = m[4];\n\t\thechos.push({\n\t\t\tturno: Number.parseInt(m[1], 10),\n\t\t\tclase: m[3] as ClaseHecho,\n\t\t\ttexto: raiz ? bruto.split(MARCA_RAIZ).join(raiz) : bruto,\n\t\t\theredado: true,\n\t\t});\n\t}\n\treturn hechos;\n}\n\n// ============================================================================\n// Procedencia\n// ============================================================================\n\nexport interface Procedencia {\n\t/** Hechos cuyo texto aparece literalmente en su turno de origen. */\n\tvalidos: Hecho[];\n\t/** Hechos que NO aparecen en su turno, o cuyo turno no existe. Inventados. */\n\tinvalidos: Hecho[];\n\t/**\n\t * Hechos heredados de un registro anterior. NO son inválidos: su origen está\n\t * en un lote que ya no tenemos delante. Se cuentan aparte a propósito, para\n\t * no leer \"no lo puedo comprobar aquí\" como \"es válido\".\n\t */\n\theredados: Hecho[];\n}\n\n/**\n * Comprueba que cada hecho se puede rastrear a su turno.\n *\n * Esta es la puerta que impide que el registro invente: un hecho cuyo texto no\n * esté, carácter a carácter, en el mensaje que dice ser su origen, sale por\n * `invalidos`.\n */\nexport function verificarProcedencia(hechos: Hecho[], mensajes: AgentMessage[]): Procedencia {\n\tconst cache = new Map<number, string>();\n\tconst validos: Hecho[] = [];\n\tconst invalidos: Hecho[] = [];\n\tconst heredados: Hecho[] = [];\n\n\tfor (const hecho of hechos) {\n\t\tif (hecho.heredado) {\n\t\t\theredados.push(hecho);\n\t\t\tcontinue;\n\t\t}\n\t\tif (hecho.turno < 0 || hecho.turno >= mensajes.length) {\n\t\t\tinvalidos.push(hecho);\n\t\t\tcontinue;\n\t\t}\n\t\tlet canonico = cache.get(hecho.turno);\n\t\tif (canonico === undefined) {\n\t\t\tcanonico = serializarTurno(mensajes[hecho.turno]);\n\t\t\tcache.set(hecho.turno, canonico);\n\t\t}\n\t\tconst buscado = nucleo(hecho.texto);\n\t\t// Los hechos \"her\" llevan \"<nombre de herramienta> <primer argumento>\", y\n\t\t// esos dos trozos están en el turno pero no pegados. Se parte por el PRIMER\n\t\t// espacio y SOLO por él: partir por todos convertía la puerta en \"cada\n\t\t// palabra aparece en algún sitio del turno\", que es lo contrario de\n\t\t// verificar. Con la versión anterior, el hecho inventado\n\t\t// \"her borra secreto produccion\" pasaba como VÁLIDO contra un turno que\n\t\t// decía \"busca deploy en produccion y borra el fichero secreto\".\n\t\tconst corte = hecho.clase === \"her\" ? buscado.indexOf(\" \") : -1;\n\t\tconst ok =\n\t\t\tcanonico.includes(buscado) ||\n\t\t\t(corte > 0 && canonico.includes(buscado.slice(0, corte)) && canonico.includes(buscado.slice(corte + 1)));\n\t\t(ok ? validos : invalidos).push(hecho);\n\t}\n\n\treturn { validos, invalidos, heredados };\n}\n\n// ============================================================================\n// Reescritura completa\n// ============================================================================\n\n/**\n * Construye el registro denso de un lote, absorbiendo el registro anterior si\n * lo hay.\n *\n * `resumenAnterior` es el resumen de la compactación previa. Si ya era un\n * registro denso, sus líneas se conservan TAL CUAL (no se re-resumen): esa es\n * la diferencia entre encadenar compactaciones y degradarlas en cascada.\n */\nexport function reescribirADenso(\n\tmensajes: AgentMessage[],\n\tpresupuestoTokens: number,\n\tresumenAnterior?: string,\n): RegistroFormateado {\n\tconst previos = resumenAnterior ? (absorberRegistro(resumenAnterior) ?? []) : [];\n\tconst nuevos = extraerHechos(mensajes);\n\t// Lo que el registro anterior YA declaraba perdido se arrastra: esos hechos no\n\t// están en `previos` (nadie los escribió) y sin la cuenta nadie sabría que\n\t// faltan. Ver `formatearRegistro`.\n\tconst omitidosPrevios = resumenAnterior ? omitidosDeRegistro(resumenAnterior) : 0;\n\treturn formatearRegistro([...previos, ...nuevos], presupuestoTokens, omitidosPrevios);\n}\n"]}