@hoilab/ada-cli 0.84.22 → 0.85.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1114) hide show
  1. package/CHANGELOG.md +29 -2
  2. package/README.es.md +17 -6
  3. package/README.md +109 -11
  4. package/dist/ada-publico.d.ts +35 -0
  5. package/dist/ada-publico.d.ts.map +1 -0
  6. package/dist/ada-publico.js +40 -0
  7. package/dist/ada-publico.js.map +1 -0
  8. package/dist/cli/audit-command.d.ts +15 -0
  9. package/dist/cli/audit-command.d.ts.map +1 -0
  10. package/dist/cli/audit-command.js +280 -0
  11. package/dist/cli/audit-command.js.map +1 -0
  12. package/dist/cli/banco-command.d.ts +15 -0
  13. package/dist/cli/banco-command.d.ts.map +1 -0
  14. package/dist/cli/banco-command.js +213 -0
  15. package/dist/cli/banco-command.js.map +1 -0
  16. package/dist/cli/cleanse-command.d.ts +11 -0
  17. package/dist/cli/cleanse-command.d.ts.map +1 -0
  18. package/dist/cli/cleanse-command.js +101 -0
  19. package/dist/cli/cleanse-command.js.map +1 -0
  20. package/dist/cli/commit-command.d.ts +31 -0
  21. package/dist/cli/commit-command.d.ts.map +1 -0
  22. package/dist/cli/commit-command.js +158 -0
  23. package/dist/cli/commit-command.js.map +1 -0
  24. package/dist/cli/computer-command.d.ts +12 -0
  25. package/dist/cli/computer-command.d.ts.map +1 -0
  26. package/dist/cli/computer-command.js +141 -0
  27. package/dist/cli/computer-command.js.map +1 -0
  28. package/dist/cli/discover-command.d.ts +18 -0
  29. package/dist/cli/discover-command.d.ts.map +1 -0
  30. package/dist/cli/discover-command.js +108 -0
  31. package/dist/cli/discover-command.js.map +1 -0
  32. package/dist/cli/hashline-command.d.ts +11 -0
  33. package/dist/cli/hashline-command.d.ts.map +1 -0
  34. package/dist/cli/hashline-command.js +106 -0
  35. package/dist/cli/hashline-command.js.map +1 -0
  36. package/dist/cli/import-command.d.ts +35 -0
  37. package/dist/cli/import-command.d.ts.map +1 -0
  38. package/dist/cli/import-command.js +164 -0
  39. package/dist/cli/import-command.js.map +1 -0
  40. package/dist/cli/politica-command.d.ts +20 -0
  41. package/dist/cli/politica-command.d.ts.map +1 -0
  42. package/dist/cli/politica-command.js +93 -0
  43. package/dist/cli/politica-command.js.map +1 -0
  44. package/dist/cli/refine-command.d.ts +18 -0
  45. package/dist/cli/refine-command.d.ts.map +1 -0
  46. package/dist/cli/refine-command.js +101 -0
  47. package/dist/cli/refine-command.js.map +1 -0
  48. package/dist/cli/review-command.d.ts +24 -0
  49. package/dist/cli/review-command.d.ts.map +1 -0
  50. package/dist/cli/review-command.js +168 -0
  51. package/dist/cli/review-command.js.map +1 -0
  52. package/dist/cli/schedule-command.d.ts +17 -0
  53. package/dist/cli/schedule-command.d.ts.map +1 -0
  54. package/dist/cli/schedule-command.js +117 -0
  55. package/dist/cli/schedule-command.js.map +1 -0
  56. package/dist/cli/serve-command.d.ts +72 -0
  57. package/dist/cli/serve-command.d.ts.map +1 -0
  58. package/dist/cli/serve-command.js +568 -0
  59. package/dist/cli/serve-command.js.map +1 -0
  60. package/dist/cli/telegram-command.d.ts +18 -0
  61. package/dist/cli/telegram-command.d.ts.map +1 -0
  62. package/dist/cli/telegram-command.js +137 -0
  63. package/dist/cli/telegram-command.js.map +1 -0
  64. package/dist/cli/telemetria-command.d.ts +22 -0
  65. package/dist/cli/telemetria-command.d.ts.map +1 -0
  66. package/dist/cli/telemetria-command.js +127 -0
  67. package/dist/cli/telemetria-command.js.map +1 -0
  68. package/dist/cli/undo-command.d.ts +9 -0
  69. package/dist/cli/undo-command.d.ts.map +1 -0
  70. package/dist/cli/undo-command.js +56 -0
  71. package/dist/cli/undo-command.js.map +1 -0
  72. package/dist/cli/usage-command.d.ts +10 -0
  73. package/dist/cli/usage-command.d.ts.map +1 -0
  74. package/dist/cli/usage-command.js +209 -0
  75. package/dist/cli/usage-command.js.map +1 -0
  76. package/dist/cli/wiki-command.d.ts +9 -0
  77. package/dist/cli/wiki-command.d.ts.map +1 -0
  78. package/dist/cli/wiki-command.js +76 -0
  79. package/dist/cli/wiki-command.js.map +1 -0
  80. package/dist/cli.d.ts +6 -0
  81. package/dist/cli.d.ts.map +1 -1
  82. package/dist/cli.js +10 -11
  83. package/dist/cli.js.map +1 -1
  84. package/dist/config.d.ts +1 -1
  85. package/dist/config.d.ts.map +1 -1
  86. package/dist/config.js +1 -1
  87. package/dist/config.js.map +1 -1
  88. package/dist/core/ada.d.ts +58 -0
  89. package/dist/core/ada.d.ts.map +1 -0
  90. package/dist/core/ada.js +61 -0
  91. package/dist/core/ada.js.map +1 -0
  92. package/dist/core/advisor/guarda.d.ts +66 -0
  93. package/dist/core/advisor/guarda.d.ts.map +1 -0
  94. package/dist/core/advisor/guarda.js +191 -0
  95. package/dist/core/advisor/guarda.js.map +1 -0
  96. package/dist/core/advisor/runtime.d.ts +66 -0
  97. package/dist/core/advisor/runtime.d.ts.map +1 -0
  98. package/dist/core/advisor/runtime.js +121 -0
  99. package/dist/core/advisor/runtime.js.map +1 -0
  100. package/dist/core/advisor/sesion.d.ts +109 -0
  101. package/dist/core/advisor/sesion.d.ts.map +1 -0
  102. package/dist/core/advisor/sesion.js +139 -0
  103. package/dist/core/advisor/sesion.js.map +1 -0
  104. package/dist/core/agent-session.d.ts +30 -2
  105. package/dist/core/agent-session.d.ts.map +1 -1
  106. package/dist/core/agent-session.js +430 -22
  107. package/dist/core/agent-session.js.map +1 -1
  108. package/dist/core/agents/loader.d.ts +77 -0
  109. package/dist/core/agents/loader.d.ts.map +1 -0
  110. package/dist/core/agents/loader.js +154 -0
  111. package/dist/core/agents/loader.js.map +1 -0
  112. package/dist/core/aprobacion/generados.d.ts +37 -0
  113. package/dist/core/aprobacion/generados.d.ts.map +1 -0
  114. package/dist/core/aprobacion/generados.js +85 -0
  115. package/dist/core/aprobacion/generados.js.map +1 -0
  116. package/dist/core/aprobacion/politica-de-maquina.d.ts +90 -0
  117. package/dist/core/aprobacion/politica-de-maquina.d.ts.map +1 -0
  118. package/dist/core/aprobacion/politica-de-maquina.js +212 -0
  119. package/dist/core/aprobacion/politica-de-maquina.js.map +1 -0
  120. package/dist/core/aprobacion/politica.d.ts +90 -0
  121. package/dist/core/aprobacion/politica.d.ts.map +1 -0
  122. package/dist/core/aprobacion/politica.js +375 -0
  123. package/dist/core/aprobacion/politica.js.map +1 -0
  124. package/dist/core/arranque/atajos.d.ts +46 -0
  125. package/dist/core/arranque/atajos.d.ts.map +1 -0
  126. package/dist/core/arranque/atajos.js +113 -0
  127. package/dist/core/arranque/atajos.js.map +1 -0
  128. package/dist/core/audit/exportacion.d.ts +54 -0
  129. package/dist/core/audit/exportacion.d.ts.map +1 -0
  130. package/dist/core/audit/exportacion.js +265 -0
  131. package/dist/core/audit/exportacion.js.map +1 -0
  132. package/dist/core/audit/libro.d.ts +318 -0
  133. package/dist/core/audit/libro.d.ts.map +1 -0
  134. package/dist/core/audit/libro.js +508 -0
  135. package/dist/core/audit/libro.js.map +1 -0
  136. package/dist/core/audit/registro-sesion.d.ts +78 -0
  137. package/dist/core/audit/registro-sesion.d.ts.map +1 -0
  138. package/dist/core/audit/registro-sesion.js +202 -0
  139. package/dist/core/audit/registro-sesion.js.map +1 -0
  140. package/dist/core/audit/retencion.d.ts +82 -0
  141. package/dist/core/audit/retencion.d.ts.map +1 -0
  142. package/dist/core/audit/retencion.js +152 -0
  143. package/dist/core/audit/retencion.js.map +1 -0
  144. package/dist/core/audit/rutas.d.ts +23 -0
  145. package/dist/core/audit/rutas.d.ts.map +1 -0
  146. package/dist/core/audit/rutas.js +23 -0
  147. package/dist/core/audit/rutas.js.map +1 -0
  148. package/dist/core/auth-storage.d.ts +0 -3
  149. package/dist/core/auth-storage.d.ts.map +1 -1
  150. package/dist/core/auth-storage.js +17 -5
  151. package/dist/core/auth-storage.js.map +1 -1
  152. package/dist/core/banco/almacenamiento.d.ts +18 -0
  153. package/dist/core/banco/almacenamiento.d.ts.map +1 -0
  154. package/dist/core/banco/almacenamiento.js +50 -0
  155. package/dist/core/banco/almacenamiento.js.map +1 -0
  156. package/dist/core/banco/analisis.d.ts +37 -0
  157. package/dist/core/banco/analisis.d.ts.map +1 -0
  158. package/dist/core/banco/analisis.js +164 -0
  159. package/dist/core/banco/analisis.js.map +1 -0
  160. package/dist/core/banco/bloques.d.ts +39 -0
  161. package/dist/core/banco/bloques.d.ts.map +1 -0
  162. package/dist/core/banco/bloques.js +84 -0
  163. package/dist/core/banco/bloques.js.map +1 -0
  164. package/dist/core/banco/cargas.d.ts +84 -0
  165. package/dist/core/banco/cargas.d.ts.map +1 -0
  166. package/dist/core/banco/cargas.js +520 -0
  167. package/dist/core/banco/cargas.js.map +1 -0
  168. package/dist/core/banco/comparar.d.ts +29 -0
  169. package/dist/core/banco/comparar.d.ts.map +1 -0
  170. package/dist/core/banco/comparar.js +28 -0
  171. package/dist/core/banco/comparar.js.map +1 -0
  172. package/dist/core/banco/ejecutar.d.ts +44 -0
  173. package/dist/core/banco/ejecutar.d.ts.map +1 -0
  174. package/dist/core/banco/ejecutar.js +183 -0
  175. package/dist/core/banco/ejecutar.js.map +1 -0
  176. package/dist/core/banco/generar.d.ts +24 -0
  177. package/dist/core/banco/generar.d.ts.map +1 -0
  178. package/dist/core/banco/generar.js +159 -0
  179. package/dist/core/banco/generar.js.map +1 -0
  180. package/dist/core/banco/mutaciones.d.ts +25 -0
  181. package/dist/core/banco/mutaciones.d.ts.map +1 -0
  182. package/dist/core/banco/mutaciones.js +215 -0
  183. package/dist/core/banco/mutaciones.js.map +1 -0
  184. package/dist/core/banco/tipos.d.ts +121 -0
  185. package/dist/core/banco/tipos.d.ts.map +1 -0
  186. package/dist/core/banco/tipos.js +16 -0
  187. package/dist/core/banco/tipos.js.map +1 -0
  188. package/dist/core/blobs/almacen.d.ts +81 -0
  189. package/dist/core/blobs/almacen.d.ts.map +1 -0
  190. package/dist/core/blobs/almacen.js +198 -0
  191. package/dist/core/blobs/almacen.js.map +1 -0
  192. package/dist/core/blobs/broker.d.ts +103 -0
  193. package/dist/core/blobs/broker.d.ts.map +1 -0
  194. package/dist/core/blobs/broker.js +204 -0
  195. package/dist/core/blobs/broker.js.map +1 -0
  196. package/dist/core/blobs/index.d.ts +70 -0
  197. package/dist/core/blobs/index.d.ts.map +1 -0
  198. package/dist/core/blobs/index.js +232 -0
  199. package/dist/core/blobs/index.js.map +1 -0
  200. package/dist/core/blobs/payload.d.ts +55 -0
  201. package/dist/core/blobs/payload.d.ts.map +1 -0
  202. package/dist/core/blobs/payload.js +255 -0
  203. package/dist/core/blobs/payload.js.map +1 -0
  204. package/dist/core/blobs/proveedor.d.ts +85 -0
  205. package/dist/core/blobs/proveedor.d.ts.map +1 -0
  206. package/dist/core/blobs/proveedor.js +196 -0
  207. package/dist/core/blobs/proveedor.js.map +1 -0
  208. package/dist/core/browser/cdp.d.ts +41 -0
  209. package/dist/core/browser/cdp.d.ts.map +1 -0
  210. package/dist/core/browser/cdp.js +119 -0
  211. package/dist/core/browser/cdp.js.map +1 -0
  212. package/dist/core/browser/politica.d.ts +51 -0
  213. package/dist/core/browser/politica.d.ts.map +1 -0
  214. package/dist/core/browser/politica.js +123 -0
  215. package/dist/core/browser/politica.js.map +1 -0
  216. package/dist/core/browser/sesion.d.ts +52 -0
  217. package/dist/core/browser/sesion.d.ts.map +1 -0
  218. package/dist/core/browser/sesion.js +176 -0
  219. package/dist/core/browser/sesion.js.map +1 -0
  220. package/dist/core/browser/tools.d.ts +16 -0
  221. package/dist/core/browser/tools.d.ts.map +1 -0
  222. package/dist/core/browser/tools.js +279 -0
  223. package/dist/core/browser/tools.js.map +1 -0
  224. package/dist/core/commit/diff.d.ts +56 -0
  225. package/dist/core/commit/diff.d.ts.map +1 -0
  226. package/dist/core/commit/diff.js +145 -0
  227. package/dist/core/commit/diff.js.map +1 -0
  228. package/dist/core/commit/mensaje.d.ts +80 -0
  229. package/dist/core/commit/mensaje.d.ts.map +1 -0
  230. package/dist/core/commit/mensaje.js +207 -0
  231. package/dist/core/commit/mensaje.js.map +1 -0
  232. package/dist/core/compactar/index.d.ts +52 -0
  233. package/dist/core/compactar/index.d.ts.map +1 -0
  234. package/dist/core/compactar/index.js +91 -0
  235. package/dist/core/compactar/index.js.map +1 -0
  236. package/dist/core/compactar/registro-denso.d.ts +160 -0
  237. package/dist/core/compactar/registro-denso.d.ts.map +1 -0
  238. package/dist/core/compactar/registro-denso.js +620 -0
  239. package/dist/core/compactar/registro-denso.js.map +1 -0
  240. package/dist/core/computer/captura.d.ts +35 -0
  241. package/dist/core/computer/captura.d.ts.map +1 -0
  242. package/dist/core/computer/captura.js +140 -0
  243. package/dist/core/computer/captura.js.map +1 -0
  244. package/dist/core/computer/driver.d.ts +130 -0
  245. package/dist/core/computer/driver.d.ts.map +1 -0
  246. package/dist/core/computer/driver.js +206 -0
  247. package/dist/core/computer/driver.js.map +1 -0
  248. package/dist/core/computer/motor/actions.d.ts +109 -0
  249. package/dist/core/computer/motor/actions.d.ts.map +1 -0
  250. package/dist/core/computer/motor/actions.js +157 -0
  251. package/dist/core/computer/motor/actions.js.map +1 -0
  252. package/dist/core/computer/motor/bridge.d.ts +232 -0
  253. package/dist/core/computer/motor/bridge.d.ts.map +1 -0
  254. package/dist/core/computer/motor/bridge.js +2335 -0
  255. package/dist/core/computer/motor/bridge.js.map +1 -0
  256. package/dist/core/computer/motor/cdp.d.ts +107 -0
  257. package/dist/core/computer/motor/cdp.d.ts.map +1 -0
  258. package/dist/core/computer/motor/cdp.js +659 -0
  259. package/dist/core/computer/motor/cdp.js.map +1 -0
  260. package/dist/core/computer/motor/config.d.ts +23 -0
  261. package/dist/core/computer/motor/config.d.ts.map +1 -0
  262. package/dist/core/computer/motor/config.js +100 -0
  263. package/dist/core/computer/motor/config.js.map +1 -0
  264. package/dist/core/computer/motor/contract.d.ts +81 -0
  265. package/dist/core/computer/motor/contract.d.ts.map +1 -0
  266. package/dist/core/computer/motor/contract.js +14 -0
  267. package/dist/core/computer/motor/contract.js.map +1 -0
  268. package/dist/core/computer/motor/note.d.ts +37 -0
  269. package/dist/core/computer/motor/note.d.ts.map +1 -0
  270. package/dist/core/computer/motor/note.js +162 -0
  271. package/dist/core/computer/motor/note.js.map +1 -0
  272. package/dist/core/computer/motor/outline.d.ts +155 -0
  273. package/dist/core/computer/motor/outline.d.ts.map +1 -0
  274. package/dist/core/computer/motor/outline.js +590 -0
  275. package/dist/core/computer/motor/outline.js.map +1 -0
  276. package/dist/core/computer/motor/output.d.ts +18 -0
  277. package/dist/core/computer/motor/output.d.ts.map +1 -0
  278. package/dist/core/computer/motor/output.js +148 -0
  279. package/dist/core/computer/motor/output.js.map +1 -0
  280. package/dist/core/computer/motor/permissions.d.ts +41 -0
  281. package/dist/core/computer/motor/permissions.d.ts.map +1 -0
  282. package/dist/core/computer/motor/permissions.js +51 -0
  283. package/dist/core/computer/motor/permissions.js.map +1 -0
  284. package/dist/core/computer/motor/platform/architecture.d.ts +5 -0
  285. package/dist/core/computer/motor/platform/architecture.d.ts.map +1 -0
  286. package/dist/core/computer/motor/platform/architecture.js +21 -0
  287. package/dist/core/computer/motor/platform/architecture.js.map +1 -0
  288. package/dist/core/computer/motor/platform/coerce.d.ts +4 -0
  289. package/dist/core/computer/motor/platform/coerce.d.ts.map +1 -0
  290. package/dist/core/computer/motor/platform/coerce.js +17 -0
  291. package/dist/core/computer/motor/platform/coerce.js.map +1 -0
  292. package/dist/core/computer/motor/platform/index.d.ts +4 -0
  293. package/dist/core/computer/motor/platform/index.d.ts.map +1 -0
  294. package/dist/core/computer/motor/platform/index.js +79 -0
  295. package/dist/core/computer/motor/platform/index.js.map +1 -0
  296. package/dist/core/computer/motor/platform/linux/backend.d.ts +3 -0
  297. package/dist/core/computer/motor/platform/linux/backend.d.ts.map +1 -0
  298. package/dist/core/computer/motor/platform/linux/backend.js +173 -0
  299. package/dist/core/computer/motor/platform/linux/backend.js.map +1 -0
  300. package/dist/core/computer/motor/platform/linux/helper.d.ts +29 -0
  301. package/dist/core/computer/motor/platform/linux/helper.d.ts.map +1 -0
  302. package/dist/core/computer/motor/platform/linux/helper.js +261 -0
  303. package/dist/core/computer/motor/platform/linux/helper.js.map +1 -0
  304. package/dist/core/computer/motor/platform/macos/backend.d.ts +3 -0
  305. package/dist/core/computer/motor/platform/macos/backend.d.ts.map +1 -0
  306. package/dist/core/computer/motor/platform/macos/backend.js +124 -0
  307. package/dist/core/computer/motor/platform/macos/backend.js.map +1 -0
  308. package/dist/core/computer/motor/platform/macos/browser.d.ts +7 -0
  309. package/dist/core/computer/motor/platform/macos/browser.d.ts.map +1 -0
  310. package/dist/core/computer/motor/platform/macos/browser.js +101 -0
  311. package/dist/core/computer/motor/platform/macos/browser.js.map +1 -0
  312. package/dist/core/computer/motor/platform/macos/helper-path.mjs +34 -0
  313. package/dist/core/computer/motor/platform/macos/helper.d.ts +32 -0
  314. package/dist/core/computer/motor/platform/macos/helper.d.ts.map +1 -0
  315. package/dist/core/computer/motor/platform/macos/helper.js +277 -0
  316. package/dist/core/computer/motor/platform/macos/helper.js.map +1 -0
  317. package/dist/core/computer/motor/platform/macos/permissions.d.ts +4 -0
  318. package/dist/core/computer/motor/platform/macos/permissions.d.ts.map +1 -0
  319. package/dist/core/computer/motor/platform/macos/permissions.js +118 -0
  320. package/dist/core/computer/motor/platform/macos/permissions.js.map +1 -0
  321. package/dist/core/computer/motor/platform/types.d.ts +263 -0
  322. package/dist/core/computer/motor/platform/types.d.ts.map +1 -0
  323. package/dist/core/computer/motor/platform/types.js +2 -0
  324. package/dist/core/computer/motor/platform/types.js.map +1 -0
  325. package/dist/core/computer/motor/platform/windows/backend.d.ts +3 -0
  326. package/dist/core/computer/motor/platform/windows/backend.d.ts.map +1 -0
  327. package/dist/core/computer/motor/platform/windows/backend.js +163 -0
  328. package/dist/core/computer/motor/platform/windows/backend.js.map +1 -0
  329. package/dist/core/computer/motor/platform/windows/helper.d.ts +18 -0
  330. package/dist/core/computer/motor/platform/windows/helper.d.ts.map +1 -0
  331. package/dist/core/computer/motor/platform/windows/helper.js +174 -0
  332. package/dist/core/computer/motor/platform/windows/helper.js.map +1 -0
  333. package/dist/core/computer/motor/root-selection.d.ts +6 -0
  334. package/dist/core/computer/motor/root-selection.d.ts.map +1 -0
  335. package/dist/core/computer/motor/root-selection.js +28 -0
  336. package/dist/core/computer/motor/root-selection.js.map +1 -0
  337. package/dist/core/computer/motor/runtime.d.ts +50 -0
  338. package/dist/core/computer/motor/runtime.d.ts.map +1 -0
  339. package/dist/core/computer/motor/runtime.js +119 -0
  340. package/dist/core/computer/motor/runtime.js.map +1 -0
  341. package/dist/core/computer/motor/state.d.ts +68 -0
  342. package/dist/core/computer/motor/state.d.ts.map +1 -0
  343. package/dist/core/computer/motor/state.js +100 -0
  344. package/dist/core/computer/motor/state.js.map +1 -0
  345. package/dist/core/computer/motor/view.d.ts +6 -0
  346. package/dist/core/computer/motor/view.d.ts.map +1 -0
  347. package/dist/core/computer/motor/view.js +185 -0
  348. package/dist/core/computer/motor/view.js.map +1 -0
  349. package/dist/core/computer/motor-ada.d.ts +159 -0
  350. package/dist/core/computer/motor-ada.d.ts.map +1 -0
  351. package/dist/core/computer/motor-ada.js +412 -0
  352. package/dist/core/computer/motor-ada.js.map +1 -0
  353. package/dist/core/computer/politica.d.ts +56 -0
  354. package/dist/core/computer/politica.d.ts.map +1 -0
  355. package/dist/core/computer/politica.js +163 -0
  356. package/dist/core/computer/politica.js.map +1 -0
  357. package/dist/core/computer/tools.d.ts +26 -0
  358. package/dist/core/computer/tools.d.ts.map +1 -0
  359. package/dist/core/computer/tools.js +399 -0
  360. package/dist/core/computer/tools.js.map +1 -0
  361. package/dist/core/context-breakdown.d.ts +80 -0
  362. package/dist/core/context-breakdown.d.ts.map +1 -0
  363. package/dist/core/context-breakdown.js +87 -0
  364. package/dist/core/context-breakdown.js.map +1 -0
  365. package/dist/core/credenciales/cliente.d.ts +60 -0
  366. package/dist/core/credenciales/cliente.d.ts.map +1 -0
  367. package/dist/core/credenciales/cliente.js +81 -0
  368. package/dist/core/credenciales/cliente.js.map +1 -0
  369. package/dist/core/credenciales/pool.d.ts +96 -0
  370. package/dist/core/credenciales/pool.d.ts.map +1 -0
  371. package/dist/core/credenciales/pool.js +128 -0
  372. package/dist/core/credenciales/pool.js.map +1 -0
  373. package/dist/core/credenciales/reposo.d.ts +93 -0
  374. package/dist/core/credenciales/reposo.d.ts.map +1 -0
  375. package/dist/core/credenciales/reposo.js +489 -0
  376. package/dist/core/credenciales/reposo.js.map +1 -0
  377. package/dist/core/credenciales/servidor.d.ts +55 -0
  378. package/dist/core/credenciales/servidor.d.ts.map +1 -0
  379. package/dist/core/credenciales/servidor.js +205 -0
  380. package/dist/core/credenciales/servidor.js.map +1 -0
  381. package/dist/core/descubrimiento/comandos.d.ts +30 -0
  382. package/dist/core/descubrimiento/comandos.d.ts.map +1 -0
  383. package/dist/core/descubrimiento/comandos.js +76 -0
  384. package/dist/core/descubrimiento/comandos.js.map +1 -0
  385. package/dist/core/descubrimiento/mcp.d.ts +42 -0
  386. package/dist/core/descubrimiento/mcp.d.ts.map +1 -0
  387. package/dist/core/descubrimiento/mcp.js +130 -0
  388. package/dist/core/descubrimiento/mcp.js.map +1 -0
  389. package/dist/core/descubrimiento/reglas.d.ts +61 -0
  390. package/dist/core/descubrimiento/reglas.d.ts.map +1 -0
  391. package/dist/core/descubrimiento/reglas.js +134 -0
  392. package/dist/core/descubrimiento/reglas.js.map +1 -0
  393. package/dist/core/descubrimiento/skills.d.ts +57 -0
  394. package/dist/core/descubrimiento/skills.d.ts.map +1 -0
  395. package/dist/core/descubrimiento/skills.js +113 -0
  396. package/dist/core/descubrimiento/skills.js.map +1 -0
  397. package/dist/core/dificultad/clasificador.d.ts +133 -0
  398. package/dist/core/dificultad/clasificador.d.ts.map +1 -0
  399. package/dist/core/dificultad/clasificador.js +288 -0
  400. package/dist/core/dificultad/clasificador.js.map +1 -0
  401. package/dist/core/edicion/diario.d.ts +37 -0
  402. package/dist/core/edicion/diario.d.ts.map +1 -0
  403. package/dist/core/edicion/diario.js +51 -0
  404. package/dist/core/edicion/diario.js.map +1 -0
  405. package/dist/core/edicion/hashline.d.ts +71 -0
  406. package/dist/core/edicion/hashline.d.ts.map +1 -0
  407. package/dist/core/edicion/hashline.js +111 -0
  408. package/dist/core/edicion/hashline.js.map +1 -0
  409. package/dist/core/edicion/hueco.d.ts +64 -0
  410. package/dist/core/edicion/hueco.d.ts.map +1 -0
  411. package/dist/core/edicion/hueco.js +162 -0
  412. package/dist/core/edicion/hueco.js.map +1 -0
  413. package/dist/core/edicion/limpiar-carga.d.ts +39 -0
  414. package/dist/core/edicion/limpiar-carga.d.ts.map +1 -0
  415. package/dist/core/edicion/limpiar-carga.js +121 -0
  416. package/dist/core/edicion/limpiar-carga.js.map +1 -0
  417. package/dist/core/edicion/observador.d.ts +80 -0
  418. package/dist/core/edicion/observador.d.ts.map +1 -0
  419. package/dist/core/edicion/observador.js +183 -0
  420. package/dist/core/edicion/observador.js.map +1 -0
  421. package/dist/core/edicion/parecido.d.ts +53 -0
  422. package/dist/core/edicion/parecido.d.ts.map +1 -0
  423. package/dist/core/edicion/parecido.js +145 -0
  424. package/dist/core/edicion/parecido.js.map +1 -0
  425. package/dist/core/edicion/parseo.d.ts +58 -0
  426. package/dist/core/edicion/parseo.d.ts.map +1 -0
  427. package/dist/core/edicion/parseo.js +124 -0
  428. package/dist/core/edicion/parseo.js.map +1 -0
  429. package/dist/core/edicion/reparacion.d.ts +67 -0
  430. package/dist/core/edicion/reparacion.d.ts.map +1 -0
  431. package/dist/core/edicion/reparacion.js +202 -0
  432. package/dist/core/edicion/reparacion.js.map +1 -0
  433. package/dist/core/edicion/sangria.d.ts +121 -0
  434. package/dist/core/edicion/sangria.d.ts.map +1 -0
  435. package/dist/core/edicion/sangria.js +341 -0
  436. package/dist/core/edicion/sangria.js.map +1 -0
  437. package/dist/core/edicion/tipos.d.ts +58 -0
  438. package/dist/core/edicion/tipos.d.ts.map +1 -0
  439. package/dist/core/edicion/tipos.js +160 -0
  440. package/dist/core/edicion/tipos.js.map +1 -0
  441. package/dist/core/errores/proveedor.d.ts +53 -0
  442. package/dist/core/errores/proveedor.d.ts.map +1 -0
  443. package/dist/core/errores/proveedor.js +191 -0
  444. package/dist/core/errores/proveedor.js.map +1 -0
  445. package/dist/core/estructural/buscar.d.ts +61 -0
  446. package/dist/core/estructural/buscar.d.ts.map +1 -0
  447. package/dist/core/estructural/buscar.js +261 -0
  448. package/dist/core/estructural/buscar.js.map +1 -0
  449. package/dist/core/estructural/editar.d.ts +36 -0
  450. package/dist/core/estructural/editar.d.ts.map +1 -0
  451. package/dist/core/estructural/editar.js +123 -0
  452. package/dist/core/estructural/editar.js.map +1 -0
  453. package/dist/core/estructural/tools.d.ts +11 -0
  454. package/dist/core/estructural/tools.d.ts.map +1 -0
  455. package/dist/core/estructural/tools.js +100 -0
  456. package/dist/core/estructural/tools.js.map +1 -0
  457. package/dist/core/experimental.d.ts.map +1 -1
  458. package/dist/core/experimental.js +10 -1
  459. package/dist/core/experimental.js.map +1 -1
  460. package/dist/core/extensiones/suplantacion.d.ts +49 -0
  461. package/dist/core/extensiones/suplantacion.d.ts.map +1 -0
  462. package/dist/core/extensiones/suplantacion.js +61 -0
  463. package/dist/core/extensiones/suplantacion.js.map +1 -0
  464. package/dist/core/extensiones/vigilancia.d.ts +54 -0
  465. package/dist/core/extensiones/vigilancia.d.ts.map +1 -0
  466. package/dist/core/extensiones/vigilancia.js +217 -0
  467. package/dist/core/extensiones/vigilancia.js.map +1 -0
  468. package/dist/core/extensions/loader.d.ts.map +1 -1
  469. package/dist/core/extensions/loader.js +11 -1
  470. package/dist/core/extensions/loader.js.map +1 -1
  471. package/dist/core/harness/fuentes-de-contexto.d.ts +29 -0
  472. package/dist/core/harness/fuentes-de-contexto.d.ts.map +1 -0
  473. package/dist/core/harness/fuentes-de-contexto.js +44 -0
  474. package/dist/core/harness/fuentes-de-contexto.js.map +1 -0
  475. package/dist/core/harness/refine.d.ts +40 -0
  476. package/dist/core/harness/refine.d.ts.map +1 -0
  477. package/dist/core/harness/refine.js +109 -0
  478. package/dist/core/harness/refine.js.map +1 -0
  479. package/dist/core/harness/store.d.ts +75 -0
  480. package/dist/core/harness/store.d.ts.map +1 -0
  481. package/dist/core/harness/store.js +149 -0
  482. package/dist/core/harness/store.js.map +1 -0
  483. package/dist/core/hooks/contract.d.ts +85 -0
  484. package/dist/core/hooks/contract.d.ts.map +1 -0
  485. package/dist/core/hooks/contract.js +140 -0
  486. package/dist/core/hooks/contract.js.map +1 -0
  487. package/dist/core/hooks/runner.d.ts +42 -0
  488. package/dist/core/hooks/runner.d.ts.map +1 -0
  489. package/dist/core/hooks/runner.js +85 -0
  490. package/dist/core/hooks/runner.js.map +1 -0
  491. package/dist/core/hooks/session-hooks.d.ts +62 -0
  492. package/dist/core/hooks/session-hooks.d.ts.map +1 -0
  493. package/dist/core/hooks/session-hooks.js +84 -0
  494. package/dist/core/hooks/session-hooks.js.map +1 -0
  495. package/dist/core/importar/formatos.d.ts +69 -0
  496. package/dist/core/importar/formatos.d.ts.map +1 -0
  497. package/dist/core/importar/formatos.js +235 -0
  498. package/dist/core/importar/formatos.js.map +1 -0
  499. package/dist/core/interactivo/deteccion.d.ts +44 -0
  500. package/dist/core/interactivo/deteccion.d.ts.map +1 -0
  501. package/dist/core/interactivo/deteccion.js +82 -0
  502. package/dist/core/interactivo/deteccion.js.map +1 -0
  503. package/dist/core/interactivo/sesion.d.ts +50 -0
  504. package/dist/core/interactivo/sesion.d.ts.map +1 -0
  505. package/dist/core/interactivo/sesion.js +156 -0
  506. package/dist/core/interactivo/sesion.js.map +1 -0
  507. package/dist/core/interactivo/tools.d.ts +21 -0
  508. package/dist/core/interactivo/tools.d.ts.map +1 -0
  509. package/dist/core/interactivo/tools.js +122 -0
  510. package/dist/core/interactivo/tools.js.map +1 -0
  511. package/dist/core/lectura/mapa.d.ts +70 -0
  512. package/dist/core/lectura/mapa.d.ts.map +1 -0
  513. package/dist/core/lectura/mapa.js +177 -0
  514. package/dist/core/lectura/mapa.js.map +1 -0
  515. package/dist/core/lectura/pdf.d.ts +49 -0
  516. package/dist/core/lectura/pdf.d.ts.map +1 -0
  517. package/dist/core/lectura/pdf.js +337 -0
  518. package/dist/core/lectura/pdf.js.map +1 -0
  519. package/dist/core/limpieza/comprobadores.d.ts +28 -0
  520. package/dist/core/limpieza/comprobadores.d.ts.map +1 -0
  521. package/dist/core/limpieza/comprobadores.js +311 -0
  522. package/dist/core/limpieza/comprobadores.js.map +1 -0
  523. package/dist/core/limpieza/parseo.d.ts +19 -0
  524. package/dist/core/limpieza/parseo.d.ts.map +1 -0
  525. package/dist/core/limpieza/parseo.js +124 -0
  526. package/dist/core/limpieza/parseo.js.map +1 -0
  527. package/dist/core/limpieza/reparacion.d.ts +77 -0
  528. package/dist/core/limpieza/reparacion.d.ts.map +1 -0
  529. package/dist/core/limpieza/reparacion.js +254 -0
  530. package/dist/core/limpieza/reparacion.js.map +1 -0
  531. package/dist/core/limpieza/tipos.d.ts +56 -0
  532. package/dist/core/limpieza/tipos.d.ts.map +1 -0
  533. package/dist/core/limpieza/tipos.js +9 -0
  534. package/dist/core/limpieza/tipos.js.map +1 -0
  535. package/dist/core/lsp/cliente.d.ts +52 -0
  536. package/dist/core/lsp/cliente.d.ts.map +1 -0
  537. package/dist/core/lsp/cliente.js +232 -0
  538. package/dist/core/lsp/cliente.js.map +1 -0
  539. package/dist/core/lsp/descubrimiento.d.ts +62 -0
  540. package/dist/core/lsp/descubrimiento.d.ts.map +1 -0
  541. package/dist/core/lsp/descubrimiento.js +152 -0
  542. package/dist/core/lsp/descubrimiento.js.map +1 -0
  543. package/dist/core/lsp/ediciones.d.ts +59 -0
  544. package/dist/core/lsp/ediciones.d.ts.map +1 -0
  545. package/dist/core/lsp/ediciones.js +89 -0
  546. package/dist/core/lsp/ediciones.js.map +1 -0
  547. package/dist/core/lsp/extension.d.ts +28 -0
  548. package/dist/core/lsp/extension.d.ts.map +1 -0
  549. package/dist/core/lsp/extension.js +34 -0
  550. package/dist/core/lsp/extension.js.map +1 -0
  551. package/dist/core/lsp/tools.d.ts +45 -0
  552. package/dist/core/lsp/tools.d.ts.map +1 -0
  553. package/dist/core/lsp/tools.js +265 -0
  554. package/dist/core/lsp/tools.js.map +1 -0
  555. package/dist/core/mcp/client.d.ts +60 -0
  556. package/dist/core/mcp/client.d.ts.map +1 -0
  557. package/dist/core/mcp/client.js +139 -0
  558. package/dist/core/mcp/client.js.map +1 -0
  559. package/dist/core/mcp/manager.d.ts +86 -0
  560. package/dist/core/mcp/manager.d.ts.map +1 -0
  561. package/dist/core/mcp/manager.js +124 -0
  562. package/dist/core/mcp/manager.js.map +1 -0
  563. package/dist/core/mcp/tools.d.ts +15 -0
  564. package/dist/core/mcp/tools.d.ts.map +1 -0
  565. package/dist/core/mcp/tools.js +84 -0
  566. package/dist/core/mcp/tools.js.map +1 -0
  567. package/dist/core/memory-engine/audit-export.d.ts +12 -10
  568. package/dist/core/memory-engine/audit-export.d.ts.map +1 -1
  569. package/dist/core/memory-engine/audit-export.js +15 -0
  570. package/dist/core/memory-engine/audit-export.js.map +1 -1
  571. package/dist/core/memory-engine/audit-indice.d.ts +153 -0
  572. package/dist/core/memory-engine/audit-indice.d.ts.map +1 -0
  573. package/dist/core/memory-engine/audit-indice.js +271 -0
  574. package/dist/core/memory-engine/audit-indice.js.map +1 -0
  575. package/dist/core/memory-engine/audit.d.ts +18 -6
  576. package/dist/core/memory-engine/audit.d.ts.map +1 -1
  577. package/dist/core/memory-engine/audit.js +25 -42
  578. package/dist/core/memory-engine/audit.js.map +1 -1
  579. package/dist/core/memory-engine/engine.d.ts +19 -1
  580. package/dist/core/memory-engine/engine.d.ts.map +1 -1
  581. package/dist/core/memory-engine/engine.js +71 -5
  582. package/dist/core/memory-engine/engine.js.map +1 -1
  583. package/dist/core/memory-engine/observation-store.d.ts +0 -2
  584. package/dist/core/memory-engine/observation-store.d.ts.map +1 -1
  585. package/dist/core/memory-engine/observation-store.js +4 -5
  586. package/dist/core/memory-engine/observation-store.js.map +1 -1
  587. package/dist/core/memory-engine/refinements.d.ts +51 -0
  588. package/dist/core/memory-engine/refinements.d.ts.map +1 -0
  589. package/dist/core/memory-engine/refinements.js +99 -0
  590. package/dist/core/memory-engine/refinements.js.map +1 -0
  591. package/dist/core/memory-engine/tools.d.ts.map +1 -1
  592. package/dist/core/memory-engine/tools.js +27 -1
  593. package/dist/core/memory-engine/tools.js.map +1 -1
  594. package/dist/core/memory-engine/types.d.ts +2 -0
  595. package/dist/core/memory-engine/types.d.ts.map +1 -1
  596. package/dist/core/memory-engine/types.js.map +1 -1
  597. package/dist/core/model-resolver.d.ts.map +1 -1
  598. package/dist/core/model-resolver.js +7 -1
  599. package/dist/core/model-resolver.js.map +1 -1
  600. package/dist/core/muestreo-restringido.d.ts +49 -0
  601. package/dist/core/muestreo-restringido.d.ts.map +1 -0
  602. package/dist/core/muestreo-restringido.js +65 -0
  603. package/dist/core/muestreo-restringido.js.map +1 -0
  604. package/dist/core/orphan-process-journal.d.ts +48 -0
  605. package/dist/core/orphan-process-journal.d.ts.map +1 -0
  606. package/dist/core/orphan-process-journal.js +116 -0
  607. package/dist/core/orphan-process-journal.js.map +1 -0
  608. package/dist/core/privacidad/categorias-especiales.d.ts +186 -0
  609. package/dist/core/privacidad/categorias-especiales.d.ts.map +1 -0
  610. package/dist/core/privacidad/categorias-especiales.js +745 -0
  611. package/dist/core/privacidad/categorias-especiales.js.map +1 -0
  612. package/dist/core/privacidad/tapar.d.ts +48 -0
  613. package/dist/core/privacidad/tapar.d.ts.map +1 -0
  614. package/dist/core/privacidad/tapar.js +66 -0
  615. package/dist/core/privacidad/tapar.js.map +1 -0
  616. package/dist/core/prompt-cache/diagnostics.d.ts +33 -0
  617. package/dist/core/prompt-cache/diagnostics.d.ts.map +1 -0
  618. package/dist/core/prompt-cache/diagnostics.js +100 -0
  619. package/dist/core/prompt-cache/diagnostics.js.map +1 -0
  620. package/dist/core/prompt-cache/index.d.ts +33 -0
  621. package/dist/core/prompt-cache/index.d.ts.map +1 -0
  622. package/dist/core/prompt-cache/index.js +189 -0
  623. package/dist/core/prompt-cache/index.js.map +1 -0
  624. package/dist/core/prompt-cache/payload.d.ts +58 -0
  625. package/dist/core/prompt-cache/payload.d.ts.map +1 -0
  626. package/dist/core/prompt-cache/payload.js +122 -0
  627. package/dist/core/prompt-cache/payload.js.map +1 -0
  628. package/dist/core/prompt-cache/stabilize.d.ts +65 -0
  629. package/dist/core/prompt-cache/stabilize.d.ts.map +1 -0
  630. package/dist/core/prompt-cache/stabilize.js +137 -0
  631. package/dist/core/prompt-cache/stabilize.js.map +1 -0
  632. package/dist/core/prompt-cache/stats.d.ts +55 -0
  633. package/dist/core/prompt-cache/stats.d.ts.map +1 -0
  634. package/dist/core/prompt-cache/stats.js +158 -0
  635. package/dist/core/prompt-cache/stats.js.map +1 -0
  636. package/dist/core/prompt-eleccion.d.ts +38 -0
  637. package/dist/core/prompt-eleccion.d.ts.map +1 -0
  638. package/dist/core/prompt-eleccion.js +46 -0
  639. package/dist/core/prompt-eleccion.js.map +1 -0
  640. package/dist/core/prompts/montar.d.ts +75 -0
  641. package/dist/core/prompts/montar.d.ts.map +1 -0
  642. package/dist/core/prompts/montar.js +146 -0
  643. package/dist/core/prompts/montar.js.map +1 -0
  644. package/dist/core/prompts/plantilla.d.ts +54 -0
  645. package/dist/core/prompts/plantilla.d.ts.map +1 -0
  646. package/dist/core/prompts/plantilla.js +153 -0
  647. package/dist/core/prompts/plantilla.js.map +1 -0
  648. package/dist/core/prompts/sistema.md +134 -0
  649. package/dist/core/provider-attribution.d.ts +24 -2
  650. package/dist/core/provider-attribution.d.ts.map +1 -1
  651. package/dist/core/provider-attribution.js +24 -42
  652. package/dist/core/provider-attribution.js.map +1 -1
  653. package/dist/core/remoto/destino.d.ts +38 -0
  654. package/dist/core/remoto/destino.d.ts.map +1 -0
  655. package/dist/core/remoto/destino.js +105 -0
  656. package/dist/core/remoto/destino.js.map +1 -0
  657. package/dist/core/remoto/ejecutor.d.ts +59 -0
  658. package/dist/core/remoto/ejecutor.d.ts.map +1 -0
  659. package/dist/core/remoto/ejecutor.js +225 -0
  660. package/dist/core/remoto/ejecutor.js.map +1 -0
  661. package/dist/core/remoto/ficheros.d.ts +29 -0
  662. package/dist/core/remoto/ficheros.d.ts.map +1 -0
  663. package/dist/core/remoto/ficheros.js +90 -0
  664. package/dist/core/remoto/ficheros.js.map +1 -0
  665. package/dist/core/remoto/registro-extension.d.ts +15 -0
  666. package/dist/core/remoto/registro-extension.d.ts.map +1 -0
  667. package/dist/core/remoto/registro-extension.js +17 -0
  668. package/dist/core/remoto/registro-extension.js.map +1 -0
  669. package/dist/core/remoto/tools.d.ts +28 -0
  670. package/dist/core/remoto/tools.d.ts.map +1 -0
  671. package/dist/core/remoto/tools.js +31 -0
  672. package/dist/core/remoto/tools.js.map +1 -0
  673. package/dist/core/resource-loader.d.ts +8 -0
  674. package/dist/core/resource-loader.d.ts.map +1 -1
  675. package/dist/core/resource-loader.js +93 -1
  676. package/dist/core/resource-loader.js.map +1 -1
  677. package/dist/core/revision/hallazgo.d.ts +51 -0
  678. package/dist/core/revision/hallazgo.d.ts.map +1 -0
  679. package/dist/core/revision/hallazgo.js +73 -0
  680. package/dist/core/revision/hallazgo.js.map +1 -0
  681. package/dist/core/revision/revisor.d.ts +81 -0
  682. package/dist/core/revision/revisor.d.ts.map +1 -0
  683. package/dist/core/revision/revisor.js +132 -0
  684. package/dist/core/revision/revisor.js.map +1 -0
  685. package/dist/core/revision/sarif.d.ts +30 -0
  686. package/dist/core/revision/sarif.d.ts.map +1 -0
  687. package/dist/core/revision/sarif.js +83 -0
  688. package/dist/core/revision/sarif.js.map +1 -0
  689. package/dist/core/scheduler/scheduler.d.ts +87 -0
  690. package/dist/core/scheduler/scheduler.d.ts.map +1 -0
  691. package/dist/core/scheduler/scheduler.js +178 -0
  692. package/dist/core/scheduler/scheduler.js.map +1 -0
  693. package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts +49 -0
  694. package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts.map +1 -0
  695. package/dist/core/sesion/cerrar-llamadas-abiertas.js +77 -0
  696. package/dist/core/sesion/cerrar-llamadas-abiertas.js.map +1 -0
  697. package/dist/core/settings-manager.d.ts +110 -6
  698. package/dist/core/settings-manager.d.ts.map +1 -1
  699. package/dist/core/settings-manager.js +53 -2
  700. package/dist/core/settings-manager.js.map +1 -1
  701. package/dist/core/slash-commands.d.ts.map +1 -1
  702. package/dist/core/slash-commands.js +3 -3
  703. package/dist/core/slash-commands.js.map +1 -1
  704. package/dist/core/system-prompt.d.ts +17 -0
  705. package/dist/core/system-prompt.d.ts.map +1 -1
  706. package/dist/core/system-prompt.js +13 -5
  707. package/dist/core/system-prompt.js.map +1 -1
  708. package/dist/core/telemetria/otlp.d.ts +122 -0
  709. package/dist/core/telemetria/otlp.d.ts.map +1 -0
  710. package/dist/core/telemetria/otlp.js +373 -0
  711. package/dist/core/telemetria/otlp.js.map +1 -0
  712. package/dist/core/tools/coercion-argumentos.d.ts +48 -0
  713. package/dist/core/tools/coercion-argumentos.d.ts.map +1 -0
  714. package/dist/core/tools/coercion-argumentos.js +99 -0
  715. package/dist/core/tools/coercion-argumentos.js.map +1 -0
  716. package/dist/core/tools/edit-diff.d.ts +0 -7
  717. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  718. package/dist/core/tools/edit-diff.js +232 -7
  719. package/dist/core/tools/edit-diff.js.map +1 -1
  720. package/dist/core/tools/edit.d.ts.map +1 -1
  721. package/dist/core/tools/edit.js +8 -1
  722. package/dist/core/tools/edit.js.map +1 -1
  723. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  724. package/dist/core/tools/file-mutation-queue.js +5 -0
  725. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  726. package/dist/core/tools/json-tolerante.d.ts +30 -0
  727. package/dist/core/tools/json-tolerante.d.ts.map +1 -0
  728. package/dist/core/tools/json-tolerante.js +70 -0
  729. package/dist/core/tools/json-tolerante.js.map +1 -0
  730. package/dist/core/tools/read.d.ts.map +1 -1
  731. package/dist/core/tools/read.js +17 -0
  732. package/dist/core/tools/read.js.map +1 -1
  733. package/dist/core/tools/tool-definition-wrapper.d.ts +14 -1
  734. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  735. package/dist/core/tools/tool-definition-wrapper.js +17 -1
  736. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  737. package/dist/core/turno-vacio/detectar.d.ts +38 -0
  738. package/dist/core/turno-vacio/detectar.d.ts.map +1 -0
  739. package/dist/core/turno-vacio/detectar.js +66 -0
  740. package/dist/core/turno-vacio/detectar.js.map +1 -0
  741. package/dist/core/undo/journal.d.ts +57 -0
  742. package/dist/core/undo/journal.d.ts.map +1 -0
  743. package/dist/core/undo/journal.js +178 -0
  744. package/dist/core/undo/journal.js.map +1 -0
  745. package/dist/core/urls-internas/auditoria.d.ts +10 -0
  746. package/dist/core/urls-internas/auditoria.d.ts.map +1 -0
  747. package/dist/core/urls-internas/auditoria.js +42 -0
  748. package/dist/core/urls-internas/auditoria.js.map +1 -0
  749. package/dist/core/urls-internas/boveda.d.ts +13 -0
  750. package/dist/core/urls-internas/boveda.d.ts.map +1 -0
  751. package/dist/core/urls-internas/boveda.js +40 -0
  752. package/dist/core/urls-internas/boveda.js.map +1 -0
  753. package/dist/core/urls-internas/lector.d.ts +30 -0
  754. package/dist/core/urls-internas/lector.d.ts.map +1 -0
  755. package/dist/core/urls-internas/lector.js +56 -0
  756. package/dist/core/urls-internas/lector.js.map +1 -0
  757. package/dist/core/urls-internas/memoria.d.ts +11 -0
  758. package/dist/core/urls-internas/memoria.d.ts.map +1 -0
  759. package/dist/core/urls-internas/memoria.js +25 -0
  760. package/dist/core/urls-internas/memoria.js.map +1 -0
  761. package/dist/core/urls-internas/parse.d.ts +28 -0
  762. package/dist/core/urls-internas/parse.d.ts.map +1 -0
  763. package/dist/core/urls-internas/parse.js +32 -0
  764. package/dist/core/urls-internas/parse.js.map +1 -0
  765. package/dist/core/urls-internas/reglas.d.ts +10 -0
  766. package/dist/core/urls-internas/reglas.d.ts.map +1 -0
  767. package/dist/core/urls-internas/reglas.js +31 -0
  768. package/dist/core/urls-internas/reglas.js.map +1 -0
  769. package/dist/core/usage/aggregate.d.ts +68 -0
  770. package/dist/core/usage/aggregate.d.ts.map +1 -0
  771. package/dist/core/usage/aggregate.js +93 -0
  772. package/dist/core/usage/aggregate.js.map +1 -0
  773. package/dist/core/usage/cuota/anthropic.d.ts +10 -0
  774. package/dist/core/usage/cuota/anthropic.d.ts.map +1 -0
  775. package/dist/core/usage/cuota/anthropic.js +63 -0
  776. package/dist/core/usage/cuota/anthropic.js.map +1 -0
  777. package/dist/core/usage/cuota/cache.d.ts +20 -0
  778. package/dist/core/usage/cuota/cache.d.ts.map +1 -0
  779. package/dist/core/usage/cuota/cache.js +36 -0
  780. package/dist/core/usage/cuota/cache.js.map +1 -0
  781. package/dist/core/usage/cuota/github-copilot.d.ts +9 -0
  782. package/dist/core/usage/cuota/github-copilot.d.ts.map +1 -0
  783. package/dist/core/usage/cuota/github-copilot.js +67 -0
  784. package/dist/core/usage/cuota/github-copilot.js.map +1 -0
  785. package/dist/core/usage/cuota/google-gemini.d.ts +9 -0
  786. package/dist/core/usage/cuota/google-gemini.d.ts.map +1 -0
  787. package/dist/core/usage/cuota/google-gemini.js +72 -0
  788. package/dist/core/usage/cuota/google-gemini.js.map +1 -0
  789. package/dist/core/usage/cuota/index.d.ts +25 -0
  790. package/dist/core/usage/cuota/index.d.ts.map +1 -0
  791. package/dist/core/usage/cuota/index.js +50 -0
  792. package/dist/core/usage/cuota/index.js.map +1 -0
  793. package/dist/core/usage/cuota/openai-codex.d.ts +9 -0
  794. package/dist/core/usage/cuota/openai-codex.d.ts.map +1 -0
  795. package/dist/core/usage/cuota/openai-codex.js +59 -0
  796. package/dist/core/usage/cuota/openai-codex.js.map +1 -0
  797. package/dist/core/usage/cuota/openrouter.d.ts +10 -0
  798. package/dist/core/usage/cuota/openrouter.d.ts.map +1 -0
  799. package/dist/core/usage/cuota/openrouter.js +47 -0
  800. package/dist/core/usage/cuota/openrouter.js.map +1 -0
  801. package/dist/core/usage/cuota/tipos.d.ts +50 -0
  802. package/dist/core/usage/cuota/tipos.d.ts.map +1 -0
  803. package/dist/core/usage/cuota/tipos.js +25 -0
  804. package/dist/core/usage/cuota/tipos.js.map +1 -0
  805. package/dist/core/web/busqueda-nativa.d.ts +82 -0
  806. package/dist/core/web/busqueda-nativa.d.ts.map +1 -0
  807. package/dist/core/web/busqueda-nativa.js +163 -0
  808. package/dist/core/web/busqueda-nativa.js.map +1 -0
  809. package/dist/core/web/destino.d.ts +58 -0
  810. package/dist/core/web/destino.d.ts.map +1 -0
  811. package/dist/core/web/destino.js +127 -0
  812. package/dist/core/web/destino.js.map +1 -0
  813. package/dist/core/web/proveedores/brave.d.ts +6 -0
  814. package/dist/core/web/proveedores/brave.d.ts.map +1 -0
  815. package/dist/core/web/proveedores/brave.js +20 -0
  816. package/dist/core/web/proveedores/brave.js.map +1 -0
  817. package/dist/core/web/proveedores/claves.d.ts +19 -0
  818. package/dist/core/web/proveedores/claves.d.ts.map +1 -0
  819. package/dist/core/web/proveedores/claves.js +36 -0
  820. package/dist/core/web/proveedores/claves.js.map +1 -0
  821. package/dist/core/web/proveedores/duckduckgo.d.ts +3 -0
  822. package/dist/core/web/proveedores/duckduckgo.d.ts.map +1 -0
  823. package/dist/core/web/proveedores/duckduckgo.js +109 -0
  824. package/dist/core/web/proveedores/duckduckgo.js.map +1 -0
  825. package/dist/core/web/proveedores/ecosia.d.ts +3 -0
  826. package/dist/core/web/proveedores/ecosia.d.ts.map +1 -0
  827. package/dist/core/web/proveedores/ecosia.js +72 -0
  828. package/dist/core/web/proveedores/ecosia.js.map +1 -0
  829. package/dist/core/web/proveedores/exa.d.ts +6 -0
  830. package/dist/core/web/proveedores/exa.d.ts.map +1 -0
  831. package/dist/core/web/proveedores/exa.js +24 -0
  832. package/dist/core/web/proveedores/exa.js.map +1 -0
  833. package/dist/core/web/proveedores/mojeek.d.ts +3 -0
  834. package/dist/core/web/proveedores/mojeek.d.ts.map +1 -0
  835. package/dist/core/web/proveedores/mojeek.js +65 -0
  836. package/dist/core/web/proveedores/mojeek.js.map +1 -0
  837. package/dist/core/web/proveedores/navegador.d.ts +10 -0
  838. package/dist/core/web/proveedores/navegador.d.ts.map +1 -0
  839. package/dist/core/web/proveedores/navegador.js +13 -0
  840. package/dist/core/web/proveedores/navegador.js.map +1 -0
  841. package/dist/core/web/proveedores/registro.d.ts +43 -0
  842. package/dist/core/web/proveedores/registro.d.ts.map +1 -0
  843. package/dist/core/web/proveedores/registro.js +49 -0
  844. package/dist/core/web/proveedores/registro.js.map +1 -0
  845. package/dist/core/web/proveedores/searxng.d.ts +9 -0
  846. package/dist/core/web/proveedores/searxng.d.ts.map +1 -0
  847. package/dist/core/web/proveedores/searxng.js +17 -0
  848. package/dist/core/web/proveedores/searxng.js.map +1 -0
  849. package/dist/core/web/proveedores/serper.d.ts +9 -0
  850. package/dist/core/web/proveedores/serper.d.ts.map +1 -0
  851. package/dist/core/web/proveedores/serper.js +19 -0
  852. package/dist/core/web/proveedores/serper.js.map +1 -0
  853. package/dist/core/web/proveedores/tavily.d.ts +6 -0
  854. package/dist/core/web/proveedores/tavily.d.ts.map +1 -0
  855. package/dist/core/web/proveedores/tavily.js +19 -0
  856. package/dist/core/web/proveedores/tavily.js.map +1 -0
  857. package/dist/core/web/proveedores/tipos.d.ts +36 -0
  858. package/dist/core/web/proveedores/tipos.d.ts.map +1 -0
  859. package/dist/core/web/proveedores/tipos.js +10 -0
  860. package/dist/core/web/proveedores/tipos.js.map +1 -0
  861. package/dist/core/web/registro-red.d.ts +43 -0
  862. package/dist/core/web/registro-red.d.ts.map +1 -0
  863. package/dist/core/web/registro-red.js +86 -0
  864. package/dist/core/web/registro-red.js.map +1 -0
  865. package/dist/core/web/scrapers/cisa-kev.d.ts +10 -0
  866. package/dist/core/web/scrapers/cisa-kev.d.ts.map +1 -0
  867. package/dist/core/web/scrapers/cisa-kev.js +38 -0
  868. package/dist/core/web/scrapers/cisa-kev.js.map +1 -0
  869. package/dist/core/web/scrapers/crates-io.d.ts +11 -0
  870. package/dist/core/web/scrapers/crates-io.d.ts.map +1 -0
  871. package/dist/core/web/scrapers/crates-io.js +29 -0
  872. package/dist/core/web/scrapers/crates-io.js.map +1 -0
  873. package/dist/core/web/scrapers/docs-rs.d.ts +10 -0
  874. package/dist/core/web/scrapers/docs-rs.d.ts.map +1 -0
  875. package/dist/core/web/scrapers/docs-rs.js +35 -0
  876. package/dist/core/web/scrapers/docs-rs.js.map +1 -0
  877. package/dist/core/web/scrapers/github.d.ts +3 -0
  878. package/dist/core/web/scrapers/github.d.ts.map +1 -0
  879. package/dist/core/web/scrapers/github.js +72 -0
  880. package/dist/core/web/scrapers/github.js.map +1 -0
  881. package/dist/core/web/scrapers/go-pkg.d.ts +7 -0
  882. package/dist/core/web/scrapers/go-pkg.d.ts.map +1 -0
  883. package/dist/core/web/scrapers/go-pkg.js +30 -0
  884. package/dist/core/web/scrapers/go-pkg.js.map +1 -0
  885. package/dist/core/web/scrapers/hex.d.ts +6 -0
  886. package/dist/core/web/scrapers/hex.d.ts.map +1 -0
  887. package/dist/core/web/scrapers/hex.js +27 -0
  888. package/dist/core/web/scrapers/hex.js.map +1 -0
  889. package/dist/core/web/scrapers/maven.d.ts +8 -0
  890. package/dist/core/web/scrapers/maven.d.ts.map +1 -0
  891. package/dist/core/web/scrapers/maven.js +41 -0
  892. package/dist/core/web/scrapers/maven.js.map +1 -0
  893. package/dist/core/web/scrapers/mdn.d.ts +6 -0
  894. package/dist/core/web/scrapers/mdn.d.ts.map +1 -0
  895. package/dist/core/web/scrapers/mdn.js +28 -0
  896. package/dist/core/web/scrapers/mdn.js.map +1 -0
  897. package/dist/core/web/scrapers/npm.d.ts +11 -0
  898. package/dist/core/web/scrapers/npm.d.ts.map +1 -0
  899. package/dist/core/web/scrapers/npm.js +57 -0
  900. package/dist/core/web/scrapers/npm.js.map +1 -0
  901. package/dist/core/web/scrapers/nuget.d.ts +8 -0
  902. package/dist/core/web/scrapers/nuget.d.ts.map +1 -0
  903. package/dist/core/web/scrapers/nuget.js +22 -0
  904. package/dist/core/web/scrapers/nuget.js.map +1 -0
  905. package/dist/core/web/scrapers/nvd.d.ts +7 -0
  906. package/dist/core/web/scrapers/nvd.d.ts.map +1 -0
  907. package/dist/core/web/scrapers/nvd.js +37 -0
  908. package/dist/core/web/scrapers/nvd.js.map +1 -0
  909. package/dist/core/web/scrapers/pypi.d.ts +6 -0
  910. package/dist/core/web/scrapers/pypi.d.ts.map +1 -0
  911. package/dist/core/web/scrapers/pypi.js +31 -0
  912. package/dist/core/web/scrapers/pypi.js.map +1 -0
  913. package/dist/core/web/scrapers/registro.d.ts +13 -0
  914. package/dist/core/web/scrapers/registro.d.ts.map +1 -0
  915. package/dist/core/web/scrapers/registro.js +65 -0
  916. package/dist/core/web/scrapers/registro.js.map +1 -0
  917. package/dist/core/web/scrapers/rubygems.d.ts +6 -0
  918. package/dist/core/web/scrapers/rubygems.d.ts.map +1 -0
  919. package/dist/core/web/scrapers/rubygems.js +23 -0
  920. package/dist/core/web/scrapers/rubygems.js.map +1 -0
  921. package/dist/core/web/scrapers/stackoverflow.d.ts +3 -0
  922. package/dist/core/web/scrapers/stackoverflow.d.ts.map +1 -0
  923. package/dist/core/web/scrapers/stackoverflow.js +46 -0
  924. package/dist/core/web/scrapers/stackoverflow.js.map +1 -0
  925. package/dist/core/web/scrapers/tipos.d.ts +42 -0
  926. package/dist/core/web/scrapers/tipos.d.ts.map +1 -0
  927. package/dist/core/web/scrapers/tipos.js +23 -0
  928. package/dist/core/web/scrapers/tipos.js.map +1 -0
  929. package/dist/core/web/texto.d.ts +10 -0
  930. package/dist/core/web/texto.d.ts.map +1 -0
  931. package/dist/core/web/texto.js +26 -0
  932. package/dist/core/web/texto.js.map +1 -0
  933. package/dist/core/web/tools.d.ts +91 -0
  934. package/dist/core/web/tools.d.ts.map +1 -0
  935. package/dist/core/web/tools.js +304 -0
  936. package/dist/core/web/tools.js.map +1 -0
  937. package/dist/core/wiki/almacen.d.ts +33 -0
  938. package/dist/core/wiki/almacen.d.ts.map +1 -0
  939. package/dist/core/wiki/almacen.js +93 -0
  940. package/dist/core/wiki/almacen.js.map +1 -0
  941. package/dist/core/wiki/citas.d.ts +111 -0
  942. package/dist/core/wiki/citas.d.ts.map +1 -0
  943. package/dist/core/wiki/citas.js +146 -0
  944. package/dist/core/wiki/citas.js.map +1 -0
  945. package/dist/core/workflows/agent-runner.d.ts +2 -0
  946. package/dist/core/workflows/agent-runner.d.ts.map +1 -1
  947. package/dist/core/workflows/agent-runner.js +131 -44
  948. package/dist/core/workflows/agent-runner.js.map +1 -1
  949. package/dist/core/workflows/builtins.d.ts.map +1 -1
  950. package/dist/core/workflows/builtins.js +1 -0
  951. package/dist/core/workflows/builtins.js.map +1 -1
  952. package/dist/core/workflows/contrato/esquema.d.ts +32 -0
  953. package/dist/core/workflows/contrato/esquema.d.ts.map +1 -0
  954. package/dist/core/workflows/contrato/esquema.js +25 -0
  955. package/dist/core/workflows/contrato/esquema.js.map +1 -0
  956. package/dist/core/workflows/contrato/reparar-argumentos.d.ts +69 -0
  957. package/dist/core/workflows/contrato/reparar-argumentos.d.ts.map +1 -0
  958. package/dist/core/workflows/contrato/reparar-argumentos.js +117 -0
  959. package/dist/core/workflows/contrato/reparar-argumentos.js.map +1 -0
  960. package/dist/core/workflows/contrato/validador.d.ts +30 -0
  961. package/dist/core/workflows/contrato/validador.d.ts.map +1 -0
  962. package/dist/core/workflows/contrato/validador.js +56 -0
  963. package/dist/core/workflows/contrato/validador.js.map +1 -0
  964. package/dist/core/workflows/contrato/yield.d.ts +65 -0
  965. package/dist/core/workflows/contrato/yield.d.ts.map +1 -0
  966. package/dist/core/workflows/contrato/yield.js +80 -0
  967. package/dist/core/workflows/contrato/yield.js.map +1 -0
  968. package/dist/core/workflows/goal-engine/engine.d.ts +17 -0
  969. package/dist/core/workflows/goal-engine/engine.d.ts.map +1 -1
  970. package/dist/core/workflows/goal-engine/engine.js +41 -0
  971. package/dist/core/workflows/goal-engine/engine.js.map +1 -1
  972. package/dist/core/workflows/index.d.ts +8 -0
  973. package/dist/core/workflows/index.d.ts.map +1 -1
  974. package/dist/core/workflows/index.js +4 -0
  975. package/dist/core/workflows/index.js.map +1 -1
  976. package/dist/core/workflows/manager.d.ts +10 -0
  977. package/dist/core/workflows/manager.d.ts.map +1 -1
  978. package/dist/core/workflows/manager.js +35 -11
  979. package/dist/core/workflows/manager.js.map +1 -1
  980. package/dist/core/workflows/runtime.d.ts +13 -0
  981. package/dist/core/workflows/runtime.d.ts.map +1 -1
  982. package/dist/core/workflows/runtime.js +80 -1
  983. package/dist/core/workflows/runtime.js.map +1 -1
  984. package/dist/core/workflows/save-as-skill.d.ts +27 -0
  985. package/dist/core/workflows/save-as-skill.d.ts.map +1 -0
  986. package/dist/core/workflows/save-as-skill.js +54 -0
  987. package/dist/core/workflows/save-as-skill.js.map +1 -0
  988. package/dist/core/workflows/types.d.ts +49 -0
  989. package/dist/core/workflows/types.d.ts.map +1 -1
  990. package/dist/core/workflows/types.js.map +1 -1
  991. package/dist/extensions/remoto/index.d.ts +22 -0
  992. package/dist/extensions/remoto/index.d.ts.map +1 -0
  993. package/dist/extensions/remoto/index.js +54 -0
  994. package/dist/extensions/remoto/index.js.map +1 -0
  995. package/dist/index.d.ts +1 -17
  996. package/dist/index.d.ts.map +1 -1
  997. package/dist/index.js +7 -16
  998. package/dist/index.js.map +1 -1
  999. package/dist/main.d.ts.map +1 -1
  1000. package/dist/main.js +6 -0
  1001. package/dist/main.js.map +1 -1
  1002. package/dist/modes/acp/acp-mode.d.ts +42 -0
  1003. package/dist/modes/acp/acp-mode.d.ts.map +1 -0
  1004. package/dist/modes/acp/acp-mode.js +190 -0
  1005. package/dist/modes/acp/acp-mode.js.map +1 -0
  1006. package/dist/modes/acp/events.d.ts +74 -0
  1007. package/dist/modes/acp/events.d.ts.map +1 -0
  1008. package/dist/modes/acp/events.js +116 -0
  1009. package/dist/modes/acp/events.js.map +1 -0
  1010. package/dist/modes/interactive/components/model-selector.d.ts +8 -1
  1011. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  1012. package/dist/modes/interactive/components/model-selector.js +41 -7
  1013. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  1014. package/dist/modes/interactive/components/settings-selector.d.ts +1 -2
  1015. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  1016. package/dist/modes/interactive/components/settings-selector.js +9 -86
  1017. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  1018. package/dist/modes/interactive/components/thinking-selector.d.ts +8 -1
  1019. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  1020. package/dist/modes/interactive/components/thinking-selector.js +48 -17
  1021. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  1022. package/dist/modes/interactive/interactive-mode.d.ts +3 -7
  1023. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  1024. package/dist/modes/interactive/interactive-mode.js +137 -146
  1025. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  1026. package/dist/modes/print-mode.d.ts.map +1 -1
  1027. package/dist/modes/print-mode.js +11 -0
  1028. package/dist/modes/print-mode.js.map +1 -1
  1029. package/dist/package-manager-cli.d.ts.map +1 -1
  1030. package/dist/package-manager-cli.js +27 -5
  1031. package/dist/package-manager-cli.js.map +1 -1
  1032. package/dist/server/attach.d.ts +56 -0
  1033. package/dist/server/attach.d.ts.map +1 -0
  1034. package/dist/server/attach.js +130 -0
  1035. package/dist/server/attach.js.map +1 -0
  1036. package/dist/server/extension-ops.d.ts +40 -0
  1037. package/dist/server/extension-ops.d.ts.map +1 -0
  1038. package/dist/server/extension-ops.js +146 -0
  1039. package/dist/server/extension-ops.js.map +1 -0
  1040. package/dist/server/pi-server-service.d.ts +85 -0
  1041. package/dist/server/pi-server-service.d.ts.map +1 -0
  1042. package/dist/server/pi-server-service.js +213 -0
  1043. package/dist/server/pi-server-service.js.map +1 -0
  1044. package/dist/server/scheduler-tick.d.ts +32 -0
  1045. package/dist/server/scheduler-tick.d.ts.map +1 -0
  1046. package/dist/server/scheduler-tick.js +47 -0
  1047. package/dist/server/scheduler-tick.js.map +1 -0
  1048. package/dist/server/serve.d.ts +25 -0
  1049. package/dist/server/serve.d.ts.map +1 -0
  1050. package/dist/server/serve.js +83 -0
  1051. package/dist/server/serve.js.map +1 -0
  1052. package/dist/server/transcript.d.ts +38 -0
  1053. package/dist/server/transcript.d.ts.map +1 -0
  1054. package/dist/server/transcript.js +176 -0
  1055. package/dist/server/transcript.js.map +1 -0
  1056. package/dist/skills/skill-creator/SKILL.md +90 -0
  1057. package/dist/telegram/api.d.ts +75 -0
  1058. package/dist/telegram/api.d.ts.map +1 -0
  1059. package/dist/telegram/api.js +104 -0
  1060. package/dist/telegram/api.js.map +1 -0
  1061. package/dist/telegram/bridge.d.ts +85 -0
  1062. package/dist/telegram/bridge.d.ts.map +1 -0
  1063. package/dist/telegram/bridge.js +182 -0
  1064. package/dist/telegram/bridge.js.map +1 -0
  1065. package/dist/telegram/journal.d.ts +67 -0
  1066. package/dist/telegram/journal.d.ts.map +1 -0
  1067. package/dist/telegram/journal.js +119 -0
  1068. package/dist/telegram/journal.js.map +1 -0
  1069. package/dist/telegram/servidor.d.ts +15 -0
  1070. package/dist/telegram/servidor.d.ts.map +1 -0
  1071. package/dist/telegram/servidor.js +74 -0
  1072. package/dist/telegram/servidor.js.map +1 -0
  1073. package/dist/utils/shell.d.ts +11 -0
  1074. package/dist/utils/shell.d.ts.map +1 -1
  1075. package/dist/utils/shell.js +11 -0
  1076. package/dist/utils/shell.js.map +1 -1
  1077. package/dist/utils/version-check.d.ts.map +1 -1
  1078. package/dist/utils/version-check.js +29 -1
  1079. package/dist/utils/version-check.js.map +1 -1
  1080. package/docs/compaction.md +10 -10
  1081. package/docs/compliance.md +241 -0
  1082. package/docs/containerization.md +24 -24
  1083. package/docs/custom-provider.md +10 -10
  1084. package/docs/development.md +47 -10
  1085. package/docs/docs.json +14 -2
  1086. package/docs/environment-variables.md +20 -17
  1087. package/docs/extensions.md +51 -49
  1088. package/docs/index.md +15 -21
  1089. package/docs/json.md +3 -3
  1090. package/docs/keybindings.md +5 -5
  1091. package/docs/llama-cpp.md +7 -7
  1092. package/docs/models.md +12 -12
  1093. package/docs/packages.md +45 -45
  1094. package/docs/prompt-templates.md +5 -5
  1095. package/docs/providers.md +12 -12
  1096. package/docs/quickstart.md +39 -39
  1097. package/docs/rpc.md +12 -12
  1098. package/docs/sdk.md +38 -38
  1099. package/docs/security.md +26 -21
  1100. package/docs/session-format.md +7 -7
  1101. package/docs/sessions.md +14 -14
  1102. package/docs/settings.md +45 -20
  1103. package/docs/shell-aliases.md +2 -2
  1104. package/docs/skills.md +11 -11
  1105. package/docs/terminal-setup.md +14 -14
  1106. package/docs/termux.md +7 -7
  1107. package/docs/themes.md +11 -11
  1108. package/docs/tmux.md +4 -4
  1109. package/docs/tui.md +3 -3
  1110. package/docs/usage.md +54 -54
  1111. package/docs/windows.md +2 -2
  1112. package/examples/sdk/12-full-control.ts +9 -0
  1113. package/npm-shrinkwrap.json +35 -251
  1114. package/package.json +10 -4
@@ -0,0 +1,215 @@
1
+ /**
2
+ * Catálogo de mutaciones: bugs deterministas de una línea.
3
+ *
4
+ * ponytail: mutaciones por regex sobre texto, no por AST (a diferencia de
5
+ * oh-my-pi, que parsea con Babel). Para medir precisión de EDICIÓN basta con
6
+ * un bug sintácticamente trivial en un sitio adverso — la dificultad la pone
7
+ * la selección de fichero y línea, no la sutileza del bug. Sube a un
8
+ * mutador AST si algún día hace falta que el bug sea semánticamente sutil
9
+ * (p.ej. no reventar con `!isFoo` dentro de un string).
10
+ *
11
+ * Cada mutación busca TODAS las posiciones aplicables en el fichero y una
12
+ * `rng` elige una: mismo fichero, misma semilla, mismo caso siempre.
13
+ */
14
+ /**
15
+ * Rangos [inicio, fin) de todo literal de cadena o de expresión regular en la
16
+ * línea. Tokenizador de una pasada, no un parser: basta para decidir si una
17
+ * posición cae DENTRO de un literal, que es todo lo que este módulo necesita.
18
+ *
19
+ * Encontrado auditando: la guarda anterior (`entreComillas`) solo miraba el
20
+ * carácter pegado al match, así que `"the value is true today"` mutaba a
21
+ * `"...is false today"` — el bug caía en medio de la cadena, no en su borde.
22
+ * Y no cubría literales de regex en absoluto: `/-----BEGIN...KEY-----/`
23
+ * (política de secretos en `core/computer/politica.ts`) se corrompía a
24
+ * `--++-` sin que ninguna guarda lo viera venir.
25
+ */
26
+ function rangosDeLiterales(linea) {
27
+ const rangos = [];
28
+ let i = 0;
29
+ while (i < linea.length) {
30
+ const ch = linea[i];
31
+ if (ch === "'" || ch === '"' || ch === "`") {
32
+ const inicio = i;
33
+ i++;
34
+ while (i < linea.length && linea[i] !== ch) {
35
+ i += linea[i] === "\\" ? 2 : 1;
36
+ }
37
+ i++; // consume la comilla de cierre (o el final de línea si no cierra)
38
+ rangos.push([inicio, i]);
39
+ continue;
40
+ }
41
+ if (ch === "/" && linea[i + 1] !== "/" && linea[i + 1] !== "*") {
42
+ // Heurística estándar de tokenizador: `/` abre regex salvo que el
43
+ // carácter no-espacio anterior sugiera división (identificador,
44
+ // número, `)` o `]`).
45
+ const anterior = linea.slice(0, i).trimEnd();
46
+ const esDivision = /[A-Za-z0-9_$)\]]$/.test(anterior);
47
+ if (!esDivision) {
48
+ const inicio = i;
49
+ i++;
50
+ while (i < linea.length && linea[i] !== "/") {
51
+ i += linea[i] === "\\" ? 2 : 1;
52
+ }
53
+ i++; // consume el `/` de cierre
54
+ while (i < linea.length && /[a-z]/i.test(linea[i]))
55
+ i++; // flags
56
+ rangos.push([inicio, i]);
57
+ continue;
58
+ }
59
+ }
60
+ i++;
61
+ }
62
+ return rangos;
63
+ }
64
+ /** ¿El rango [inicio, fin) cae dentro de algún literal de cadena o regex de la línea? */
65
+ function dentroDeLiteral(linea, inicio, fin) {
66
+ return rangosDeLiterales(linea).some(([a, b]) => inicio < b && fin > a);
67
+ }
68
+ /**
69
+ * Para cada línea, ¿es puramente comentario? Cubre `//` (ya cubierto antes)
70
+ * Y `/* ... *\/` de una o varias líneas — que NO estaba cubierto: una línea
71
+ * JSDoc de una sola línea como `/** If true, ... *\/` mutaba igual que
72
+ * código real. Simplificación deliberada, igual que el resto del módulo:
73
+ * trata la línea entera como comentario si EMPIEZA por `//` o `/*` tras
74
+ * recortar espacios; no separa código y comentario en la misma línea
75
+ * (`const x = 1; /* nota *\/`), caso raro en este corpus con biome.
76
+ */
77
+ function lineasComentadas(lineas) {
78
+ const resultado = [];
79
+ let dentroDeBloque = false;
80
+ for (const linea of lineas) {
81
+ const t = linea.trimStart();
82
+ if (dentroDeBloque) {
83
+ resultado.push(true);
84
+ if (linea.includes("*/"))
85
+ dentroDeBloque = false;
86
+ continue;
87
+ }
88
+ if (t.startsWith("//")) {
89
+ resultado.push(true);
90
+ continue;
91
+ }
92
+ if (t.startsWith("/*")) {
93
+ resultado.push(true);
94
+ dentroDeBloque = !linea.includes("*/", linea.indexOf("/*") + 2);
95
+ continue;
96
+ }
97
+ resultado.push(false);
98
+ }
99
+ return resultado;
100
+ }
101
+ function candidatosPorPalabra(lineas, palabra, reemplazo) {
102
+ const re = new RegExp(`(?<![A-Za-z0-9_$])${palabra}(?![A-Za-z0-9_$])`, "g");
103
+ const comentadas = lineasComentadas(lineas);
104
+ const salida = [];
105
+ lineas.forEach((linea, i) => {
106
+ if (comentadas[i])
107
+ return;
108
+ for (const m of linea.matchAll(re)) {
109
+ if (m.index === undefined)
110
+ continue;
111
+ if (dentroDeLiteral(linea, m.index, m.index + m[0].length))
112
+ continue;
113
+ const mutada = linea.slice(0, m.index) + reemplazo + linea.slice(m.index + m[0].length);
114
+ salida.push({ numeroLinea: i + 1, lineaOriginal: linea, lineaMutada: mutada });
115
+ }
116
+ });
117
+ return salida;
118
+ }
119
+ function candidatosPorToken(lineas, token, reemplazo) {
120
+ const comentadas = lineasComentadas(lineas);
121
+ const salida = [];
122
+ lineas.forEach((linea, i) => {
123
+ if (comentadas[i])
124
+ return;
125
+ let desde = 0;
126
+ let idx = linea.indexOf(token, desde);
127
+ while (idx !== -1) {
128
+ if (!dentroDeLiteral(linea, idx, idx + token.length)) {
129
+ const mutada = linea.slice(0, idx) + reemplazo + linea.slice(idx + token.length);
130
+ salida.push({ numeroLinea: i + 1, lineaOriginal: linea, lineaMutada: mutada });
131
+ }
132
+ desde = idx + token.length;
133
+ idx = linea.indexOf(token, desde);
134
+ }
135
+ });
136
+ return salida;
137
+ }
138
+ const invertirBooleano = {
139
+ nombre: "invertir-booleano",
140
+ candidatos: (lineas) => [
141
+ ...candidatosPorPalabra(lineas, "true", "false"),
142
+ ...candidatosPorPalabra(lineas, "false", "true"),
143
+ ],
144
+ };
145
+ const intercambiarIgualdad = {
146
+ nombre: "intercambiar-igualdad",
147
+ candidatos: (lineas) => [...candidatosPorToken(lineas, "===", "!=="), ...candidatosPorToken(lineas, "!==", "===")],
148
+ };
149
+ const intercambiarLogico = {
150
+ nombre: "intercambiar-logico",
151
+ candidatos: (lineas) => [...candidatosPorToken(lineas, "&&", "||"), ...candidatosPorToken(lineas, "||", "&&")],
152
+ };
153
+ const intercambiarNullish = {
154
+ nombre: "intercambiar-nullish",
155
+ candidatos: (lineas) => candidatosPorToken(lineas, "??", "||"),
156
+ };
157
+ const intercambiarIncremento = {
158
+ nombre: "intercambiar-incremento",
159
+ candidatos: (lineas) => [...candidatosPorToken(lineas, "++", "--"), ...candidatosPorToken(lineas, "--", "++")],
160
+ };
161
+ /** `!identificador` -> `identificador`. Nunca toca `!=`/`!==` porque esos ya llevan un `=` detrás. */
162
+ const quitarNegacion = {
163
+ nombre: "quitar-negacion",
164
+ candidatos: (lineas) => {
165
+ const re = /(?<![=!])!(?=[A-Za-z_$(])/g;
166
+ const comentadas = lineasComentadas(lineas);
167
+ const salida = [];
168
+ lineas.forEach((linea, i) => {
169
+ if (comentadas[i])
170
+ return;
171
+ for (const m of linea.matchAll(re)) {
172
+ if (m.index === undefined)
173
+ continue;
174
+ if (dentroDeLiteral(linea, m.index, m.index + 1))
175
+ continue;
176
+ const mutada = linea.slice(0, m.index) + linea.slice(m.index + 1);
177
+ salida.push({ numeroLinea: i + 1, lineaOriginal: linea, lineaMutada: mutada });
178
+ }
179
+ });
180
+ return salida;
181
+ },
182
+ };
183
+ /** Literal entero aislado (ni parte de un identificador ni de un decimal) +1. */
184
+ const offByOne = {
185
+ nombre: "off-by-one",
186
+ candidatos: (lineas) => {
187
+ const re = /(?<![\w.])(\d+)(?![\w.])/g;
188
+ const comentadas = lineasComentadas(lineas);
189
+ const salida = [];
190
+ lineas.forEach((linea, i) => {
191
+ if (comentadas[i])
192
+ return;
193
+ for (const m of linea.matchAll(re)) {
194
+ if (m.index === undefined)
195
+ continue;
196
+ if (dentroDeLiteral(linea, m.index, m.index + m[0].length))
197
+ continue;
198
+ const valor = Number(m[1]);
199
+ const mutada = `${linea.slice(0, m.index)}${valor + 1}${linea.slice(m.index + m[0].length)}`;
200
+ salida.push({ numeroLinea: i + 1, lineaOriginal: linea, lineaMutada: mutada });
201
+ }
202
+ });
203
+ return salida;
204
+ },
205
+ };
206
+ export const TODAS_LAS_MUTACIONES = [
207
+ invertirBooleano,
208
+ intercambiarIgualdad,
209
+ intercambiarLogico,
210
+ intercambiarNullish,
211
+ intercambiarIncremento,
212
+ quitarNegacion,
213
+ offByOne,
214
+ ];
215
+ //# sourceMappingURL=mutaciones.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutaciones.js","sourceRoot":"","sources":["../../../src/core/banco/mutaciones.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Catálogo de mutaciones: bugs deterministas de una línea.\n *\n * ponytail: mutaciones por regex sobre texto, no por AST (a diferencia de\n * oh-my-pi, que parsea con Babel). Para medir precisión de EDICIÓN basta con\n * un bug sintácticamente trivial en un sitio adverso — la dificultad la pone\n * la selección de fichero y línea, no la sutileza del bug. Sube a un\n * mutador AST si algún día hace falta que el bug sea semánticamente sutil\n * (p.ej. no reventar con `!isFoo` dentro de un string).\n *\n * Cada mutación busca TODAS las posiciones aplicables en el fichero y una\n * `rng` elige una: mismo fichero, misma semilla, mismo caso siempre.\n */\n\nexport interface CandidatoMutacion {\n\tnumeroLinea: number; // 1-based\n\tlineaOriginal: string;\n\tlineaMutada: string;\n}\n\nexport interface Mutacion {\n\tnombre: string;\n\t/** Candidatos aplicables en el fichero (línea original -> línea con el bug). */\n\tcandidatos(lineas: string[]): CandidatoMutacion[];\n}\n\n/**\n * Rangos [inicio, fin) de todo literal de cadena o de expresión regular en la\n * línea. Tokenizador de una pasada, no un parser: basta para decidir si una\n * posición cae DENTRO de un literal, que es todo lo que este módulo necesita.\n *\n * Encontrado auditando: la guarda anterior (`entreComillas`) solo miraba el\n * carácter pegado al match, así que `\"the value is true today\"` mutaba a\n * `\"...is false today\"` — el bug caía en medio de la cadena, no en su borde.\n * Y no cubría literales de regex en absoluto: `/-----BEGIN...KEY-----/`\n * (política de secretos en `core/computer/politica.ts`) se corrompía a\n * `--++-` sin que ninguna guarda lo viera venir.\n */\nfunction rangosDeLiterales(linea: string): Array<[number, number]> {\n\tconst rangos: Array<[number, number]> = [];\n\tlet i = 0;\n\twhile (i < linea.length) {\n\t\tconst ch = linea[i];\n\t\tif (ch === \"'\" || ch === '\"' || ch === \"`\") {\n\t\t\tconst inicio = i;\n\t\t\ti++;\n\t\t\twhile (i < linea.length && linea[i] !== ch) {\n\t\t\t\ti += linea[i] === \"\\\\\" ? 2 : 1;\n\t\t\t}\n\t\t\ti++; // consume la comilla de cierre (o el final de línea si no cierra)\n\t\t\trangos.push([inicio, i]);\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === \"/\" && linea[i + 1] !== \"/\" && linea[i + 1] !== \"*\") {\n\t\t\t// Heurística estándar de tokenizador: `/` abre regex salvo que el\n\t\t\t// carácter no-espacio anterior sugiera división (identificador,\n\t\t\t// número, `)` o `]`).\n\t\t\tconst anterior = linea.slice(0, i).trimEnd();\n\t\t\tconst esDivision = /[A-Za-z0-9_$)\\]]$/.test(anterior);\n\t\t\tif (!esDivision) {\n\t\t\t\tconst inicio = i;\n\t\t\t\ti++;\n\t\t\t\twhile (i < linea.length && linea[i] !== \"/\") {\n\t\t\t\t\ti += linea[i] === \"\\\\\" ? 2 : 1;\n\t\t\t\t}\n\t\t\t\ti++; // consume el `/` de cierre\n\t\t\t\twhile (i < linea.length && /[a-z]/i.test(linea[i])) i++; // flags\n\t\t\t\trangos.push([inicio, i]);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\ti++;\n\t}\n\treturn rangos;\n}\n\n/** ¿El rango [inicio, fin) cae dentro de algún literal de cadena o regex de la línea? */\nfunction dentroDeLiteral(linea: string, inicio: number, fin: number): boolean {\n\treturn rangosDeLiterales(linea).some(([a, b]) => inicio < b && fin > a);\n}\n\n/**\n * Para cada línea, ¿es puramente comentario? Cubre `//` (ya cubierto antes)\n * Y `/* ... *\\/` de una o varias líneas — que NO estaba cubierto: una línea\n * JSDoc de una sola línea como `/** If true, ... *\\/` mutaba igual que\n * código real. Simplificación deliberada, igual que el resto del módulo:\n * trata la línea entera como comentario si EMPIEZA por `//` o `/*` tras\n * recortar espacios; no separa código y comentario en la misma línea\n * (`const x = 1; /* nota *\\/`), caso raro en este corpus con biome.\n */\nfunction lineasComentadas(lineas: string[]): boolean[] {\n\tconst resultado: boolean[] = [];\n\tlet dentroDeBloque = false;\n\tfor (const linea of lineas) {\n\t\tconst t = linea.trimStart();\n\t\tif (dentroDeBloque) {\n\t\t\tresultado.push(true);\n\t\t\tif (linea.includes(\"*/\")) dentroDeBloque = false;\n\t\t\tcontinue;\n\t\t}\n\t\tif (t.startsWith(\"//\")) {\n\t\t\tresultado.push(true);\n\t\t\tcontinue;\n\t\t}\n\t\tif (t.startsWith(\"/*\")) {\n\t\t\tresultado.push(true);\n\t\t\tdentroDeBloque = !linea.includes(\"*/\", linea.indexOf(\"/*\") + 2);\n\t\t\tcontinue;\n\t\t}\n\t\tresultado.push(false);\n\t}\n\treturn resultado;\n}\n\nfunction candidatosPorPalabra(lineas: string[], palabra: string, reemplazo: string): CandidatoMutacion[] {\n\tconst re = new RegExp(`(?<![A-Za-z0-9_$])${palabra}(?![A-Za-z0-9_$])`, \"g\");\n\tconst comentadas = lineasComentadas(lineas);\n\tconst salida: CandidatoMutacion[] = [];\n\tlineas.forEach((linea, i) => {\n\t\tif (comentadas[i]) return;\n\t\tfor (const m of linea.matchAll(re)) {\n\t\t\tif (m.index === undefined) continue;\n\t\t\tif (dentroDeLiteral(linea, m.index, m.index + m[0].length)) continue;\n\t\t\tconst mutada = linea.slice(0, m.index) + reemplazo + linea.slice(m.index + m[0].length);\n\t\t\tsalida.push({ numeroLinea: i + 1, lineaOriginal: linea, lineaMutada: mutada });\n\t\t}\n\t});\n\treturn salida;\n}\n\nfunction candidatosPorToken(lineas: string[], token: string, reemplazo: string): CandidatoMutacion[] {\n\tconst comentadas = lineasComentadas(lineas);\n\tconst salida: CandidatoMutacion[] = [];\n\tlineas.forEach((linea, i) => {\n\t\tif (comentadas[i]) return;\n\t\tlet desde = 0;\n\t\tlet idx = linea.indexOf(token, desde);\n\t\twhile (idx !== -1) {\n\t\t\tif (!dentroDeLiteral(linea, idx, idx + token.length)) {\n\t\t\t\tconst mutada = linea.slice(0, idx) + reemplazo + linea.slice(idx + token.length);\n\t\t\t\tsalida.push({ numeroLinea: i + 1, lineaOriginal: linea, lineaMutada: mutada });\n\t\t\t}\n\t\t\tdesde = idx + token.length;\n\t\t\tidx = linea.indexOf(token, desde);\n\t\t}\n\t});\n\treturn salida;\n}\n\nconst invertirBooleano: Mutacion = {\n\tnombre: \"invertir-booleano\",\n\tcandidatos: (lineas) => [\n\t\t...candidatosPorPalabra(lineas, \"true\", \"false\"),\n\t\t...candidatosPorPalabra(lineas, \"false\", \"true\"),\n\t],\n};\n\nconst intercambiarIgualdad: Mutacion = {\n\tnombre: \"intercambiar-igualdad\",\n\tcandidatos: (lineas) => [...candidatosPorToken(lineas, \"===\", \"!==\"), ...candidatosPorToken(lineas, \"!==\", \"===\")],\n};\n\nconst intercambiarLogico: Mutacion = {\n\tnombre: \"intercambiar-logico\",\n\tcandidatos: (lineas) => [...candidatosPorToken(lineas, \"&&\", \"||\"), ...candidatosPorToken(lineas, \"||\", \"&&\")],\n};\n\nconst intercambiarNullish: Mutacion = {\n\tnombre: \"intercambiar-nullish\",\n\tcandidatos: (lineas) => candidatosPorToken(lineas, \"??\", \"||\"),\n};\n\nconst intercambiarIncremento: Mutacion = {\n\tnombre: \"intercambiar-incremento\",\n\tcandidatos: (lineas) => [...candidatosPorToken(lineas, \"++\", \"--\"), ...candidatosPorToken(lineas, \"--\", \"++\")],\n};\n\n/** `!identificador` -> `identificador`. Nunca toca `!=`/`!==` porque esos ya llevan un `=` detrás. */\nconst quitarNegacion: Mutacion = {\n\tnombre: \"quitar-negacion\",\n\tcandidatos: (lineas) => {\n\t\tconst re = /(?<![=!])!(?=[A-Za-z_$(])/g;\n\t\tconst comentadas = lineasComentadas(lineas);\n\t\tconst salida: CandidatoMutacion[] = [];\n\t\tlineas.forEach((linea, i) => {\n\t\t\tif (comentadas[i]) return;\n\t\t\tfor (const m of linea.matchAll(re)) {\n\t\t\t\tif (m.index === undefined) continue;\n\t\t\t\tif (dentroDeLiteral(linea, m.index, m.index + 1)) continue;\n\t\t\t\tconst mutada = linea.slice(0, m.index) + linea.slice(m.index + 1);\n\t\t\t\tsalida.push({ numeroLinea: i + 1, lineaOriginal: linea, lineaMutada: mutada });\n\t\t\t}\n\t\t});\n\t\treturn salida;\n\t},\n};\n\n/** Literal entero aislado (ni parte de un identificador ni de un decimal) +1. */\nconst offByOne: Mutacion = {\n\tnombre: \"off-by-one\",\n\tcandidatos: (lineas) => {\n\t\tconst re = /(?<![\\w.])(\\d+)(?![\\w.])/g;\n\t\tconst comentadas = lineasComentadas(lineas);\n\t\tconst salida: CandidatoMutacion[] = [];\n\t\tlineas.forEach((linea, i) => {\n\t\t\tif (comentadas[i]) return;\n\t\t\tfor (const m of linea.matchAll(re)) {\n\t\t\t\tif (m.index === undefined) continue;\n\t\t\t\tif (dentroDeLiteral(linea, m.index, m.index + m[0].length)) continue;\n\t\t\t\tconst valor = Number(m[1]);\n\t\t\t\tconst mutada = `${linea.slice(0, m.index)}${valor + 1}${linea.slice(m.index + m[0].length)}`;\n\t\t\t\tsalida.push({ numeroLinea: i + 1, lineaOriginal: linea, lineaMutada: mutada });\n\t\t\t}\n\t\t});\n\t\treturn salida;\n\t},\n};\n\nexport const TODAS_LAS_MUTACIONES: Mutacion[] = [\n\tinvertirBooleano,\n\tintercambiarIgualdad,\n\tintercambiarLogico,\n\tintercambiarNullish,\n\tintercambiarIncremento,\n\tquitarNegacion,\n\toffByOne,\n];\n"]}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Tipos compartidos del banco de fiabilidad de edición.
3
+ *
4
+ * El hueco que esto llena: no había forma de MEDIR si un cambio en las tools
5
+ * de edición mejora o empeora la precisión del modelo aplicando parches. Sin
6
+ * número, cualquier afirmación sobre "esto edita mejor" es opinión.
7
+ *
8
+ * Diseño copiado a propósito de oh-my-pi/typescript-edit-benchmark (ver
9
+ * cabecera de `generar.ts`): cuatro niveles de dificultad que varían a la vez
10
+ * la selección de fichero y el detalle del prompt, condiciones adversas
11
+ * explícitas, validación por resolución antes de admitir un caso, y métricas
12
+ * de tarea/edición/fantasma/timeout SEPARADAS — la lección de deepseek
13
+ * (100% edición, 55% tarea, 9 fantasmas) es que una sola métrica miente.
14
+ */
15
+ export type Dificultad = "facil" | "medio" | "dificil" | "pesadilla";
16
+ /** Un caso de banco: un fichero con un bug determinista y su arreglo exacto. */
17
+ export interface CasoBanco {
18
+ id: string;
19
+ dificultad: Dificultad;
20
+ mutacion: string;
21
+ /** Ruta relativa al corpus de origen (informativa, no se usa para ejecutar). */
22
+ ficheroRelativo: string;
23
+ /** Contenido completo del fichero CON el bug: lo que ve el modelo. */
24
+ contenidoEntrada: string;
25
+ /** Contenido completo del fichero arreglado: lo que se compara al final. */
26
+ contenidoEsperado: string;
27
+ /** Número de línea (1-based, en el fichero de entrada) donde está el bug. */
28
+ numeroLinea: number;
29
+ /** Prompt completo que se le manda al modelo. */
30
+ prompt: string;
31
+ /** Puntuación de dificultad (mayor = más adversa), solo informativa. */
32
+ puntuacion: number;
33
+ contexto: {
34
+ lineasFichero: number;
35
+ esLineaRepetida: boolean;
36
+ vecesRepetida: number;
37
+ bloquesSimilares: number;
38
+ densidad: number;
39
+ };
40
+ }
41
+ export interface ConjuntoCasos {
42
+ version: 1;
43
+ generadoEn: string;
44
+ semilla: number;
45
+ corpus: string;
46
+ casos: CasoBanco[];
47
+ descartadosPorAmbiguos: number;
48
+ descartadosPorNoAplicable: number;
49
+ intentos: number;
50
+ }
51
+ /** Resultado de ejecutar UN caso contra un modelo. */
52
+ export interface ResultadoCaso {
53
+ casoId: string;
54
+ dificultad: Dificultad;
55
+ mutacion: string;
56
+ /**
57
+ * Tarea: el fichero final es BYTE A BYTE el esperado. Es la métrica dura.
58
+ */
59
+ tareaOk: boolean;
60
+ /**
61
+ * Edición: alguna llamada a `edit`/`write` sobre el fichero objetivo
62
+ * TERMINÓ SIN ERROR. Puede ser true con tareaOk false: el modelo editó
63
+ * algo, pero editó lo que no era.
64
+ */
65
+ edicionOk: boolean;
66
+ /**
67
+ * Fantasma: el turno TERMINÓ (sin error, sin timeout) y el modelo no
68
+ * tocó el fichero objetivo ni una vez. Ni acertó ni erró: no lo intentó.
69
+ * Contarlo junto al éxito de edición (como hace un editor que "casi no
70
+ * edita pero puntúa 100%") es el defecto exacto que este banco existe
71
+ * para exponer.
72
+ *
73
+ * Un fantasma es "no hay nada que editar" — el modelo decidió no tocar
74
+ * el fichero. Eso NO es lo mismo que "no pude saberlo" (`error` no
75
+ * vacío, p.ej. sin API key): confundirlos hace que un fallo de
76
+ * autenticación se lea como "el modelo no editó", que es la mentira
77
+ * exacta que la regla de `null` vs `[]` prohíbe.
78
+ *
79
+ * Tampoco es lo mismo que `vacio`: ahí el modelo NO CONTESTÓ. Un turno
80
+ * vacío contado como fantasma dice «este modelo decide no editar» sobre un
81
+ * proveedor que no devolvió nada. Pasó con `x-preview-f-free`.
82
+ */
83
+ fantasma: boolean;
84
+ /**
85
+ * Vacío: el turno terminó y el modelo devolvió al menos una respuesta SIN
86
+ * texto, sin razonamiento y sin llamadas a herramienta. No es un dato
87
+ * sobre si el modelo sabe editar: es que no hubo respuesta que medir.
88
+ */
89
+ vacio: boolean;
90
+ /** Se agotó el presupuesto de tiempo antes de que el turno terminara. */
91
+ timeout: boolean;
92
+ duracionMs: number;
93
+ /** El turno no llegó a terminar por un motivo que NO es timeout (auth, red, proveedor caído). */
94
+ error?: string;
95
+ }
96
+ export interface ResultadosEjecucion {
97
+ version: 1;
98
+ ejecutadoEn: string;
99
+ proveedor: string;
100
+ modelo: string;
101
+ casosArchivo: string;
102
+ resultados: ResultadoCaso[];
103
+ resumen: ResumenMetricas;
104
+ }
105
+ export interface ResumenMetricas {
106
+ total: number;
107
+ tareaOkPct: number;
108
+ edicionOkPct: number;
109
+ fantasmaPct: number;
110
+ /** Casos donde el modelo devolvió un turno vacío: NO se cuentan como fantasma. */
111
+ vacioPct: number;
112
+ timeoutPct: number;
113
+ /** Turnos que no terminaron por un error (no timeout): NO se cuentan como fantasma. */
114
+ errorPct: number;
115
+ porDificultad: Record<string, {
116
+ total: number;
117
+ tareaOkPct: number;
118
+ edicionOkPct: number;
119
+ }>;
120
+ }
121
+ //# sourceMappingURL=tipos.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tipos.d.ts","sourceRoot":"","sources":["../../../src/core/banco/tipos.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC;AAErE,gFAAgF;AAChF,MAAM,WAAW,SAAS;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,eAAe,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,gBAAgB,EAAE,MAAM,CAAC;IACzB,4EAA4E;IAC5E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gFAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,0EAAwE;IACxE,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE;QACT,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,OAAO,CAAC;QACzB,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,CAAC;QACzB,QAAQ,EAAE,MAAM,CAAC;KACjB,CAAC;CACF;AAED,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,CAAC,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,yBAAyB,EAAE,MAAM,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,sDAAsD;AACtD,MAAM,WAAW,aAAa;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,KAAK,EAAE,OAAO,CAAC;IACf,0EAAyE;IACzE,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,mGAAiG;IACjG,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,CAAC,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,OAAO,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,oFAAkF;IAClF,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3F","sourcesContent":["/**\n * Tipos compartidos del banco de fiabilidad de edición.\n *\n * El hueco que esto llena: no había forma de MEDIR si un cambio en las tools\n * de edición mejora o empeora la precisión del modelo aplicando parches. Sin\n * número, cualquier afirmación sobre \"esto edita mejor\" es opinión.\n *\n * Diseño copiado a propósito de oh-my-pi/typescript-edit-benchmark (ver\n * cabecera de `generar.ts`): cuatro niveles de dificultad que varían a la vez\n * la selección de fichero y el detalle del prompt, condiciones adversas\n * explícitas, validación por resolución antes de admitir un caso, y métricas\n * de tarea/edición/fantasma/timeout SEPARADAS — la lección de deepseek\n * (100% edición, 55% tarea, 9 fantasmas) es que una sola métrica miente.\n */\n\nexport type Dificultad = \"facil\" | \"medio\" | \"dificil\" | \"pesadilla\";\n\n/** Un caso de banco: un fichero con un bug determinista y su arreglo exacto. */\nexport interface CasoBanco {\n\tid: string;\n\tdificultad: Dificultad;\n\tmutacion: string;\n\t/** Ruta relativa al corpus de origen (informativa, no se usa para ejecutar). */\n\tficheroRelativo: string;\n\t/** Contenido completo del fichero CON el bug: lo que ve el modelo. */\n\tcontenidoEntrada: string;\n\t/** Contenido completo del fichero arreglado: lo que se compara al final. */\n\tcontenidoEsperado: string;\n\t/** Número de línea (1-based, en el fichero de entrada) donde está el bug. */\n\tnumeroLinea: number;\n\t/** Prompt completo que se le manda al modelo. */\n\tprompt: string;\n\t/** Puntuación de dificultad (mayor = más adversa), solo informativa. */\n\tpuntuacion: number;\n\tcontexto: {\n\t\tlineasFichero: number;\n\t\tesLineaRepetida: boolean;\n\t\tvecesRepetida: number;\n\t\tbloquesSimilares: number;\n\t\tdensidad: number;\n\t};\n}\n\nexport interface ConjuntoCasos {\n\tversion: 1;\n\tgeneradoEn: string;\n\tsemilla: number;\n\tcorpus: string;\n\tcasos: CasoBanco[];\n\tdescartadosPorAmbiguos: number;\n\tdescartadosPorNoAplicable: number;\n\tintentos: number;\n}\n\n/** Resultado de ejecutar UN caso contra un modelo. */\nexport interface ResultadoCaso {\n\tcasoId: string;\n\tdificultad: Dificultad;\n\tmutacion: string;\n\t/**\n\t * Tarea: el fichero final es BYTE A BYTE el esperado. Es la métrica dura.\n\t */\n\ttareaOk: boolean;\n\t/**\n\t * Edición: alguna llamada a `edit`/`write` sobre el fichero objetivo\n\t * TERMINÓ SIN ERROR. Puede ser true con tareaOk false: el modelo editó\n\t * algo, pero editó lo que no era.\n\t */\n\tedicionOk: boolean;\n\t/**\n\t * Fantasma: el turno TERMINÓ (sin error, sin timeout) y el modelo no\n\t * tocó el fichero objetivo ni una vez. Ni acertó ni erró: no lo intentó.\n\t * Contarlo junto al éxito de edición (como hace un editor que \"casi no\n\t * edita pero puntúa 100%\") es el defecto exacto que este banco existe\n\t * para exponer.\n\t *\n\t * Un fantasma es \"no hay nada que editar\" — el modelo decidió no tocar\n\t * el fichero. Eso NO es lo mismo que \"no pude saberlo\" (`error` no\n\t * vacío, p.ej. sin API key): confundirlos hace que un fallo de\n\t * autenticación se lea como \"el modelo no editó\", que es la mentira\n\t * exacta que la regla de `null` vs `[]` prohíbe.\n\t *\n\t * Tampoco es lo mismo que `vacio`: ahí el modelo NO CONTESTÓ. Un turno\n\t * vacío contado como fantasma dice «este modelo decide no editar» sobre un\n\t * proveedor que no devolvió nada. Pasó con `x-preview-f-free`.\n\t */\n\tfantasma: boolean;\n\t/**\n\t * Vacío: el turno terminó y el modelo devolvió al menos una respuesta SIN\n\t * texto, sin razonamiento y sin llamadas a herramienta. No es un dato\n\t * sobre si el modelo sabe editar: es que no hubo respuesta que medir.\n\t */\n\tvacio: boolean;\n\t/** Se agotó el presupuesto de tiempo antes de que el turno terminara. */\n\ttimeout: boolean;\n\tduracionMs: number;\n\t/** El turno no llegó a terminar por un motivo que NO es timeout (auth, red, proveedor caído). */\n\terror?: string;\n}\n\nexport interface ResultadosEjecucion {\n\tversion: 1;\n\tejecutadoEn: string;\n\tproveedor: string;\n\tmodelo: string;\n\tcasosArchivo: string;\n\tresultados: ResultadoCaso[];\n\tresumen: ResumenMetricas;\n}\n\nexport interface ResumenMetricas {\n\ttotal: number;\n\ttareaOkPct: number;\n\tedicionOkPct: number;\n\tfantasmaPct: number;\n\t/** Casos donde el modelo devolvió un turno vacío: NO se cuentan como fantasma. */\n\tvacioPct: number;\n\ttimeoutPct: number;\n\t/** Turnos que no terminaron por un error (no timeout): NO se cuentan como fantasma. */\n\terrorPct: number;\n\tporDificultad: Record<string, { total: number; tareaOkPct: number; edicionOkPct: number }>;\n}\n"]}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Tipos compartidos del banco de fiabilidad de edición.
3
+ *
4
+ * El hueco que esto llena: no había forma de MEDIR si un cambio en las tools
5
+ * de edición mejora o empeora la precisión del modelo aplicando parches. Sin
6
+ * número, cualquier afirmación sobre "esto edita mejor" es opinión.
7
+ *
8
+ * Diseño copiado a propósito de oh-my-pi/typescript-edit-benchmark (ver
9
+ * cabecera de `generar.ts`): cuatro niveles de dificultad que varían a la vez
10
+ * la selección de fichero y el detalle del prompt, condiciones adversas
11
+ * explícitas, validación por resolución antes de admitir un caso, y métricas
12
+ * de tarea/edición/fantasma/timeout SEPARADAS — la lección de deepseek
13
+ * (100% edición, 55% tarea, 9 fantasmas) es que una sola métrica miente.
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=tipos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tipos.js","sourceRoot":"","sources":["../../../src/core/banco/tipos.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG","sourcesContent":["/**\n * Tipos compartidos del banco de fiabilidad de edición.\n *\n * El hueco que esto llena: no había forma de MEDIR si un cambio en las tools\n * de edición mejora o empeora la precisión del modelo aplicando parches. Sin\n * número, cualquier afirmación sobre \"esto edita mejor\" es opinión.\n *\n * Diseño copiado a propósito de oh-my-pi/typescript-edit-benchmark (ver\n * cabecera de `generar.ts`): cuatro niveles de dificultad que varían a la vez\n * la selección de fichero y el detalle del prompt, condiciones adversas\n * explícitas, validación por resolución antes de admitir un caso, y métricas\n * de tarea/edición/fantasma/timeout SEPARADAS — la lección de deepseek\n * (100% edición, 55% tarea, 9 fantasmas) es que una sola métrica miente.\n */\n\nexport type Dificultad = \"facil\" | \"medio\" | \"dificil\" | \"pesadilla\";\n\n/** Un caso de banco: un fichero con un bug determinista y su arreglo exacto. */\nexport interface CasoBanco {\n\tid: string;\n\tdificultad: Dificultad;\n\tmutacion: string;\n\t/** Ruta relativa al corpus de origen (informativa, no se usa para ejecutar). */\n\tficheroRelativo: string;\n\t/** Contenido completo del fichero CON el bug: lo que ve el modelo. */\n\tcontenidoEntrada: string;\n\t/** Contenido completo del fichero arreglado: lo que se compara al final. */\n\tcontenidoEsperado: string;\n\t/** Número de línea (1-based, en el fichero de entrada) donde está el bug. */\n\tnumeroLinea: number;\n\t/** Prompt completo que se le manda al modelo. */\n\tprompt: string;\n\t/** Puntuación de dificultad (mayor = más adversa), solo informativa. */\n\tpuntuacion: number;\n\tcontexto: {\n\t\tlineasFichero: number;\n\t\tesLineaRepetida: boolean;\n\t\tvecesRepetida: number;\n\t\tbloquesSimilares: number;\n\t\tdensidad: number;\n\t};\n}\n\nexport interface ConjuntoCasos {\n\tversion: 1;\n\tgeneradoEn: string;\n\tsemilla: number;\n\tcorpus: string;\n\tcasos: CasoBanco[];\n\tdescartadosPorAmbiguos: number;\n\tdescartadosPorNoAplicable: number;\n\tintentos: number;\n}\n\n/** Resultado de ejecutar UN caso contra un modelo. */\nexport interface ResultadoCaso {\n\tcasoId: string;\n\tdificultad: Dificultad;\n\tmutacion: string;\n\t/**\n\t * Tarea: el fichero final es BYTE A BYTE el esperado. Es la métrica dura.\n\t */\n\ttareaOk: boolean;\n\t/**\n\t * Edición: alguna llamada a `edit`/`write` sobre el fichero objetivo\n\t * TERMINÓ SIN ERROR. Puede ser true con tareaOk false: el modelo editó\n\t * algo, pero editó lo que no era.\n\t */\n\tedicionOk: boolean;\n\t/**\n\t * Fantasma: el turno TERMINÓ (sin error, sin timeout) y el modelo no\n\t * tocó el fichero objetivo ni una vez. Ni acertó ni erró: no lo intentó.\n\t * Contarlo junto al éxito de edición (como hace un editor que \"casi no\n\t * edita pero puntúa 100%\") es el defecto exacto que este banco existe\n\t * para exponer.\n\t *\n\t * Un fantasma es \"no hay nada que editar\" — el modelo decidió no tocar\n\t * el fichero. Eso NO es lo mismo que \"no pude saberlo\" (`error` no\n\t * vacío, p.ej. sin API key): confundirlos hace que un fallo de\n\t * autenticación se lea como \"el modelo no editó\", que es la mentira\n\t * exacta que la regla de `null` vs `[]` prohíbe.\n\t *\n\t * Tampoco es lo mismo que `vacio`: ahí el modelo NO CONTESTÓ. Un turno\n\t * vacío contado como fantasma dice «este modelo decide no editar» sobre un\n\t * proveedor que no devolvió nada. Pasó con `x-preview-f-free`.\n\t */\n\tfantasma: boolean;\n\t/**\n\t * Vacío: el turno terminó y el modelo devolvió al menos una respuesta SIN\n\t * texto, sin razonamiento y sin llamadas a herramienta. No es un dato\n\t * sobre si el modelo sabe editar: es que no hubo respuesta que medir.\n\t */\n\tvacio: boolean;\n\t/** Se agotó el presupuesto de tiempo antes de que el turno terminara. */\n\ttimeout: boolean;\n\tduracionMs: number;\n\t/** El turno no llegó a terminar por un motivo que NO es timeout (auth, red, proveedor caído). */\n\terror?: string;\n}\n\nexport interface ResultadosEjecucion {\n\tversion: 1;\n\tejecutadoEn: string;\n\tproveedor: string;\n\tmodelo: string;\n\tcasosArchivo: string;\n\tresultados: ResultadoCaso[];\n\tresumen: ResumenMetricas;\n}\n\nexport interface ResumenMetricas {\n\ttotal: number;\n\ttareaOkPct: number;\n\tedicionOkPct: number;\n\tfantasmaPct: number;\n\t/** Casos donde el modelo devolvió un turno vacío: NO se cuentan como fantasma. */\n\tvacioPct: number;\n\ttimeoutPct: number;\n\t/** Turnos que no terminaron por un error (no timeout): NO se cuentan como fantasma. */\n\terrorPct: number;\n\tporDificultad: Record<string, { total: number; tareaOkPct: number; edicionOkPct: number }>;\n}\n"]}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Caché en disco de los identificadores que devuelve la API de ficheros del
3
+ * proveedor, indexada por (proveedor, hash del contenido).
4
+ *
5
+ * Por qué en disco y no en memoria: el ahorro grande no es entre turnos de una
6
+ * sesión —eso lo daría un Map— sino entre SESIONES. La captura de pantalla que
7
+ * pegaste ayer y vuelves a pegar hoy es el mismo fichero para el proveedor, y
8
+ * volver a subir 1,4 MB es tiempo y cuota tirados.
9
+ *
10
+ * Por qué se relee el fichero antes de escribir: hay más de un proceso de Ada
11
+ * a la vez (CLI + escritorio + subagentes) y todos apuntan al mismo agentDir.
12
+ * Escribir el mapa entero desde memoria haría que el último en cerrar borrase
13
+ * lo que subieron los demás; ya nos pasó con un fichero compartido y varios
14
+ * escritores. Aquí se funde por entrada, quedándose con la de uso más reciente.
15
+ */
16
+ export interface EntradaDeBlob {
17
+ /** Identificador que devolvió el proveedor (`file_...` / `file-...`). */
18
+ id: string;
19
+ /** Tamaño en bytes del contenido original, para el informe de `/blobs`. */
20
+ bytes: number;
21
+ mime: string;
22
+ /** Milisegundos epoch de la subida. */
23
+ subidoEn: number;
24
+ /** Milisegundos epoch del último uso; manda en la purga y en la fusión. */
25
+ usadoEn: number;
26
+ }
27
+ export interface OpcionesDePurga {
28
+ /** Edad máxima desde el último uso. Por defecto 30 días. */
29
+ maxEdadMs?: number;
30
+ /** Número máximo de entradas que se conservan. Por defecto 500. */
31
+ maxEntradas?: number;
32
+ /** Reloj inyectable; los tests no pueden esperar 30 días. */
33
+ ahora?: number;
34
+ }
35
+ /**
36
+ * Clave del mapa. El separador es `|` y no un byte NUL a propósito: un NUL en
37
+ * el fichero lo vuelve binario para `grep` y para `git diff`, y este fichero se
38
+ * mira a mano cuando algo va mal.
39
+ */
40
+ export declare function claveDeBlob(proveedor: string, hash: string): string;
41
+ export declare class AlmacenDeBlobs {
42
+ private readonly ruta;
43
+ private entradas;
44
+ private sucio;
45
+ /**
46
+ * Claves quitadas A PROPÓSITO (id muerto, purga por edad, purga a mano). La
47
+ * fusión de `volcar()` las tiene que borrar también de la copia en disco: si
48
+ * no, la entrada que este proceso acaba de tirar vuelve desde el fichero que
49
+ * dejó otro proceso y la purga no llega nunca al disco.
50
+ *
51
+ * Vive aquí y no en quien llama porque el llamador se olvida: la purga
52
+ * automática del arranque lo hacía y la de `/blobs purgar` no, así que el
53
+ * fichero crecía sin límite y las entradas de más de 30 días resucitaban en
54
+ * cada volcado. Comprobado ejecutándolo: purgar + volcar dejaba la clave
55
+ * `anthropic|aaa` intacta en disco.
56
+ */
57
+ private readonly olvidadas;
58
+ constructor(agentDir: string, nombreFichero?: string);
59
+ get rutaFichero(): string;
60
+ cargar(): Promise<void>;
61
+ /** Devuelve la entrada y marca el uso. `undefined` = no la tenemos. */
62
+ leer(proveedor: string, hash: string, ahora?: number): EntradaDeBlob | undefined;
63
+ guardar(proveedor: string, hash: string, entrada: EntradaDeBlob): void;
64
+ /**
65
+ * Borra una entrada. Se llama cuando el proveedor rechaza el id: mejor
66
+ * resubir 1 MB que dejar la conversación atada a un id muerto.
67
+ */
68
+ olvidar(proveedor: string, hash: string): boolean;
69
+ olvidarPorId(id: string): string[];
70
+ tamano(): number;
71
+ /** Devuelve las claves purgadas. Por edad primero, por número después. */
72
+ purgar(opciones?: OpcionesDePurga): string[];
73
+ /**
74
+ * Escribe fundiendo con lo que haya en disco. Las claves que este proceso ha
75
+ * borrado a propósito se quitan de la fusión: sin eso, la fusión las
76
+ * resucitaría desde la copia en disco de otro proceso y volveríamos a mandar
77
+ * un id que ya sabemos muerto, o a guardar para siempre lo que purgamos.
78
+ */
79
+ volcar(olvidadas?: Iterable<string>): Promise<void>;
80
+ }
81
+ //# sourceMappingURL=almacen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"almacen.d.ts","sourceRoot":"","sources":["../../../src/core/blobs/almacen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,MAAM,WAAW,aAAa;IAC7B,0EAAyE;IACzE,EAAE,EAAE,MAAM,CAAC;IACX,4EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC/B,+DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAKD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnE;AAsCD,qBAAa,cAAc;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,KAAK,CAAS;IACtB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAE/C,YAAY,QAAQ,EAAE,MAAM,EAAE,aAAa,SAAe,EAEzD;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAEK,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAO5B;IAED,uEAAuE;IACvE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,SAAa,GAAG,aAAa,GAAG,SAAS,CAMnF;IAED,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAOrE;IAED;;;OAGG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAMhD;IAED,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAUjC;IAED,MAAM,IAAI,MAAM,CAEf;IAMD,4EAA0E;IAC1E,MAAM,CAAC,QAAQ,GAAE,eAAoB,GAAG,MAAM,EAAE,CAyB/C;IAED;;;;;OAKG;IACG,MAAM,CAAC,SAAS,GAAE,QAAQ,CAAC,MAAM,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB5D;CACD","sourcesContent":["/**\n * Caché en disco de los identificadores que devuelve la API de ficheros del\n * proveedor, indexada por (proveedor, hash del contenido).\n *\n * Por qué en disco y no en memoria: el ahorro grande no es entre turnos de una\n * sesión —eso lo daría un Map— sino entre SESIONES. La captura de pantalla que\n * pegaste ayer y vuelves a pegar hoy es el mismo fichero para el proveedor, y\n * volver a subir 1,4 MB es tiempo y cuota tirados.\n *\n * Por qué se relee el fichero antes de escribir: hay más de un proceso de Ada\n * a la vez (CLI + escritorio + subagentes) y todos apuntan al mismo agentDir.\n * Escribir el mapa entero desde memoria haría que el último en cerrar borrase\n * lo que subieron los demás; ya nos pasó con un fichero compartido y varios\n * escritores. Aquí se funde por entrada, quedándose con la de uso más reciente.\n */\n\nimport { mkdir, readFile, rename, writeFile } from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\n\nexport interface EntradaDeBlob {\n\t/** Identificador que devolvió el proveedor (`file_...` / `file-...`). */\n\tid: string;\n\t/** Tamaño en bytes del contenido original, para el informe de `/blobs`. */\n\tbytes: number;\n\tmime: string;\n\t/** Milisegundos epoch de la subida. */\n\tsubidoEn: number;\n\t/** Milisegundos epoch del último uso; manda en la purga y en la fusión. */\n\tusadoEn: number;\n}\n\nexport interface OpcionesDePurga {\n\t/** Edad máxima desde el último uso. Por defecto 30 días. */\n\tmaxEdadMs?: number;\n\t/** Número máximo de entradas que se conservan. Por defecto 500. */\n\tmaxEntradas?: number;\n\t/** Reloj inyectable; los tests no pueden esperar 30 días. */\n\tahora?: number;\n}\n\nconst MAX_EDAD_POR_DEFECTO_MS = 30 * 24 * 60 * 60 * 1000;\nconst MAX_ENTRADAS_POR_DEFECTO = 500;\n\n/**\n * Clave del mapa. El separador es `|` y no un byte NUL a propósito: un NUL en\n * el fichero lo vuelve binario para `grep` y para `git diff`, y este fichero se\n * mira a mano cuando algo va mal.\n */\nexport function claveDeBlob(proveedor: string, hash: string): string {\n\treturn `${proveedor}|${hash}`;\n}\n\ninterface FicheroDeBlobs {\n\tversion: number;\n\tentradas: Record<string, EntradaDeBlob>;\n}\n\nfunction esEntrada(valor: unknown): valor is EntradaDeBlob {\n\tif (!valor || typeof valor !== \"object\") return false;\n\tconst e = valor as Record<string, unknown>;\n\treturn (\n\t\ttypeof e.id === \"string\" &&\n\t\te.id.length > 0 &&\n\t\ttypeof e.bytes === \"number\" &&\n\t\ttypeof e.mime === \"string\" &&\n\t\ttypeof e.subidoEn === \"number\" &&\n\t\ttypeof e.usadoEn === \"number\"\n\t);\n}\n\nfunction leerFichero(texto: string): Map<string, EntradaDeBlob> {\n\tconst mapa = new Map<string, EntradaDeBlob>();\n\tlet crudo: unknown;\n\ttry {\n\t\tcrudo = JSON.parse(texto);\n\t} catch {\n\t\t// Un fichero corrupto se trata como vacío: como mucho se resube. Fallar\n\t\t// aquí dejaría al agente sin poder mandar adjuntos por un JSON roto.\n\t\treturn mapa;\n\t}\n\tconst doc = crudo as Partial<FicheroDeBlobs> | null;\n\tif (!doc || typeof doc !== \"object\" || !doc.entradas || typeof doc.entradas !== \"object\") return mapa;\n\tfor (const [clave, valor] of Object.entries(doc.entradas)) {\n\t\tif (esEntrada(valor)) mapa.set(clave, valor);\n\t}\n\treturn mapa;\n}\n\nexport class AlmacenDeBlobs {\n\tprivate readonly ruta: string;\n\tprivate entradas = new Map<string, EntradaDeBlob>();\n\tprivate sucio = false;\n\t/**\n\t * Claves quitadas A PROPÓSITO (id muerto, purga por edad, purga a mano). La\n\t * fusión de `volcar()` las tiene que borrar también de la copia en disco: si\n\t * no, la entrada que este proceso acaba de tirar vuelve desde el fichero que\n\t * dejó otro proceso y la purga no llega nunca al disco.\n\t *\n\t * Vive aquí y no en quien llama porque el llamador se olvida: la purga\n\t * automática del arranque lo hacía y la de `/blobs purgar` no, así que el\n\t * fichero crecía sin límite y las entradas de más de 30 días resucitaban en\n\t * cada volcado. Comprobado ejecutándolo: purgar + volcar dejaba la clave\n\t * `anthropic|aaa` intacta en disco.\n\t */\n\tprivate readonly olvidadas = new Set<string>();\n\n\tconstructor(agentDir: string, nombreFichero = \"blobs.json\") {\n\t\tthis.ruta = join(agentDir, nombreFichero);\n\t}\n\n\tget rutaFichero(): string {\n\t\treturn this.ruta;\n\t}\n\n\tasync cargar(): Promise<void> {\n\t\ttry {\n\t\t\tthis.entradas = leerFichero(await readFile(this.ruta, \"utf-8\"));\n\t\t} catch {\n\t\t\t// No existe todavía: primer arranque.\n\t\t\tthis.entradas = new Map();\n\t\t}\n\t}\n\n\t/** Devuelve la entrada y marca el uso. `undefined` = no la tenemos. */\n\tleer(proveedor: string, hash: string, ahora = Date.now()): EntradaDeBlob | undefined {\n\t\tconst entrada = this.entradas.get(claveDeBlob(proveedor, hash));\n\t\tif (!entrada) return undefined;\n\t\tentrada.usadoEn = ahora;\n\t\tthis.sucio = true;\n\t\treturn entrada;\n\t}\n\n\tguardar(proveedor: string, hash: string, entrada: EntradaDeBlob): void {\n\t\tconst clave = claveDeBlob(proveedor, hash);\n\t\tthis.entradas.set(clave, entrada);\n\t\t// Se ha vuelto a subir: deja de estar olvidada, o la fusión la borraría\n\t\t// justo después de haberla pagado.\n\t\tthis.olvidadas.delete(clave);\n\t\tthis.sucio = true;\n\t}\n\n\t/**\n\t * Borra una entrada. Se llama cuando el proveedor rechaza el id: mejor\n\t * resubir 1 MB que dejar la conversación atada a un id muerto.\n\t */\n\tolvidar(proveedor: string, hash: string): boolean {\n\t\tconst clave = claveDeBlob(proveedor, hash);\n\t\tconst borrada = this.entradas.delete(clave);\n\t\tthis.olvidadas.add(clave);\n\t\tif (borrada) this.sucio = true;\n\t\treturn borrada;\n\t}\n\n\tolvidarPorId(id: string): string[] {\n\t\tconst borradas: string[] = [];\n\t\tfor (const [clave, entrada] of this.entradas) {\n\t\t\tif (entrada.id !== id) continue;\n\t\t\tthis.entradas.delete(clave);\n\t\t\tthis.olvidadas.add(clave);\n\t\t\tborradas.push(clave);\n\t\t}\n\t\tif (borradas.length > 0) this.sucio = true;\n\t\treturn borradas;\n\t}\n\n\ttamano(): number {\n\t\treturn this.entradas.size;\n\t}\n\n\t// Aquí vivía `listar()`. Nadie lo llamaba: `/blobs` enseña el tamaño y la\n\t// ruta del fichero, que se mira a mano. Borrado por lo mismo que\n\t// `borrarFichero`.\n\n\t/** Devuelve las claves purgadas. Por edad primero, por número después. */\n\tpurgar(opciones: OpcionesDePurga = {}): string[] {\n\t\tconst ahora = opciones.ahora ?? Date.now();\n\t\tconst maxEdadMs = opciones.maxEdadMs ?? MAX_EDAD_POR_DEFECTO_MS;\n\t\tconst maxEntradas = opciones.maxEntradas ?? MAX_ENTRADAS_POR_DEFECTO;\n\t\tconst purgadas: string[] = [];\n\n\t\tfor (const [clave, entrada] of this.entradas) {\n\t\t\tif (ahora - entrada.usadoEn > maxEdadMs) {\n\t\t\t\tthis.entradas.delete(clave);\n\t\t\t\tpurgadas.push(clave);\n\t\t\t}\n\t\t}\n\n\t\tif (this.entradas.size > maxEntradas) {\n\t\t\tconst porAntiguedad = [...this.entradas].sort((a, b) => a[1].usadoEn - b[1].usadoEn);\n\t\t\tconst sobran = this.entradas.size - maxEntradas;\n\t\t\tfor (const [clave] of porAntiguedad.slice(0, sobran)) {\n\t\t\t\tthis.entradas.delete(clave);\n\t\t\t\tpurgadas.push(clave);\n\t\t\t}\n\t\t}\n\n\t\tif (purgadas.length > 0) this.sucio = true;\n\t\tfor (const clave of purgadas) this.olvidadas.add(clave);\n\t\treturn purgadas;\n\t}\n\n\t/**\n\t * Escribe fundiendo con lo que haya en disco. Las claves que este proceso ha\n\t * borrado a propósito se quitan de la fusión: sin eso, la fusión las\n\t * resucitaría desde la copia en disco de otro proceso y volveríamos a mandar\n\t * un id que ya sabemos muerto, o a guardar para siempre lo que purgamos.\n\t */\n\tasync volcar(olvidadas: Iterable<string> = []): Promise<void> {\n\t\tif (!this.sucio) return;\n\t\tlet enDisco = new Map<string, EntradaDeBlob>();\n\t\ttry {\n\t\t\tenDisco = leerFichero(await readFile(this.ruta, \"utf-8\"));\n\t\t} catch {\n\t\t\t// Sin fichero previo: la fusión es la identidad.\n\t\t}\n\t\tfor (const clave of this.olvidadas) enDisco.delete(clave);\n\t\tfor (const clave of olvidadas) enDisco.delete(clave);\n\t\tfor (const [clave, mia] of this.entradas) {\n\t\t\tconst suya = enDisco.get(clave);\n\t\t\tenDisco.set(clave, !suya || mia.usadoEn >= suya.usadoEn ? mia : suya);\n\t\t}\n\t\tconst doc: FicheroDeBlobs = { version: 1, entradas: Object.fromEntries(enDisco) };\n\t\tawait mkdir(dirname(this.ruta), { recursive: true });\n\t\tconst temporal = `${this.ruta}.${process.pid}.tmp`;\n\t\tawait writeFile(temporal, JSON.stringify(doc, null, \"\\t\"), \"utf-8\");\n\t\tawait rename(temporal, this.ruta);\n\t\tthis.entradas = enDisco;\n\t\tthis.sucio = false;\n\t}\n}\n"]}