@hoilab/ada-cli 0.84.21 → 0.85.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1337) hide show
  1. package/CHANGELOG.md +49 -2
  2. package/README.es.md +174 -0
  3. package/README.md +203 -658
  4. package/dist/ada-publico.d.ts +35 -0
  5. package/dist/ada-publico.d.ts.map +1 -0
  6. package/dist/ada-publico.js +40 -0
  7. package/dist/ada-publico.js.map +1 -0
  8. package/dist/cli/args.d.ts +3 -0
  9. package/dist/cli/args.d.ts.map +1 -1
  10. package/dist/cli/args.js +11 -0
  11. package/dist/cli/args.js.map +1 -1
  12. package/dist/cli/audit-command.d.ts +15 -0
  13. package/dist/cli/audit-command.d.ts.map +1 -0
  14. package/dist/cli/audit-command.js +280 -0
  15. package/dist/cli/audit-command.js.map +1 -0
  16. package/dist/cli/banco-command.d.ts +15 -0
  17. package/dist/cli/banco-command.d.ts.map +1 -0
  18. package/dist/cli/banco-command.js +213 -0
  19. package/dist/cli/banco-command.js.map +1 -0
  20. package/dist/cli/cleanse-command.d.ts +11 -0
  21. package/dist/cli/cleanse-command.d.ts.map +1 -0
  22. package/dist/cli/cleanse-command.js +101 -0
  23. package/dist/cli/cleanse-command.js.map +1 -0
  24. package/dist/cli/commit-command.d.ts +31 -0
  25. package/dist/cli/commit-command.d.ts.map +1 -0
  26. package/dist/cli/commit-command.js +158 -0
  27. package/dist/cli/commit-command.js.map +1 -0
  28. package/dist/cli/computer-command.d.ts +12 -0
  29. package/dist/cli/computer-command.d.ts.map +1 -0
  30. package/dist/cli/computer-command.js +141 -0
  31. package/dist/cli/computer-command.js.map +1 -0
  32. package/dist/cli/discover-command.d.ts +18 -0
  33. package/dist/cli/discover-command.d.ts.map +1 -0
  34. package/dist/cli/discover-command.js +108 -0
  35. package/dist/cli/discover-command.js.map +1 -0
  36. package/dist/cli/file-processor.d.ts.map +1 -1
  37. package/dist/cli/file-processor.js +2 -1
  38. package/dist/cli/file-processor.js.map +1 -1
  39. package/dist/cli/hashline-command.d.ts +11 -0
  40. package/dist/cli/hashline-command.d.ts.map +1 -0
  41. package/dist/cli/hashline-command.js +106 -0
  42. package/dist/cli/hashline-command.js.map +1 -0
  43. package/dist/cli/home-screen.d.ts.map +1 -1
  44. package/dist/cli/home-screen.js +2 -2
  45. package/dist/cli/home-screen.js.map +1 -1
  46. package/dist/cli/import-command.d.ts +35 -0
  47. package/dist/cli/import-command.d.ts.map +1 -0
  48. package/dist/cli/import-command.js +164 -0
  49. package/dist/cli/import-command.js.map +1 -0
  50. package/dist/cli/politica-command.d.ts +20 -0
  51. package/dist/cli/politica-command.d.ts.map +1 -0
  52. package/dist/cli/politica-command.js +93 -0
  53. package/dist/cli/politica-command.js.map +1 -0
  54. package/dist/cli/refine-command.d.ts +18 -0
  55. package/dist/cli/refine-command.d.ts.map +1 -0
  56. package/dist/cli/refine-command.js +101 -0
  57. package/dist/cli/refine-command.js.map +1 -0
  58. package/dist/cli/review-command.d.ts +24 -0
  59. package/dist/cli/review-command.d.ts.map +1 -0
  60. package/dist/cli/review-command.js +168 -0
  61. package/dist/cli/review-command.js.map +1 -0
  62. package/dist/cli/schedule-command.d.ts +17 -0
  63. package/dist/cli/schedule-command.d.ts.map +1 -0
  64. package/dist/cli/schedule-command.js +117 -0
  65. package/dist/cli/schedule-command.js.map +1 -0
  66. package/dist/cli/serve-command.d.ts +72 -0
  67. package/dist/cli/serve-command.d.ts.map +1 -0
  68. package/dist/cli/serve-command.js +568 -0
  69. package/dist/cli/serve-command.js.map +1 -0
  70. package/dist/cli/startup-ui.d.ts.map +1 -1
  71. package/dist/cli/startup-ui.js +9 -3
  72. package/dist/cli/startup-ui.js.map +1 -1
  73. package/dist/cli/telegram-command.d.ts +18 -0
  74. package/dist/cli/telegram-command.d.ts.map +1 -0
  75. package/dist/cli/telegram-command.js +137 -0
  76. package/dist/cli/telegram-command.js.map +1 -0
  77. package/dist/cli/telemetria-command.d.ts +22 -0
  78. package/dist/cli/telemetria-command.d.ts.map +1 -0
  79. package/dist/cli/telemetria-command.js +127 -0
  80. package/dist/cli/telemetria-command.js.map +1 -0
  81. package/dist/cli/undo-command.d.ts +9 -0
  82. package/dist/cli/undo-command.d.ts.map +1 -0
  83. package/dist/cli/undo-command.js +56 -0
  84. package/dist/cli/undo-command.js.map +1 -0
  85. package/dist/cli/usage-command.d.ts +10 -0
  86. package/dist/cli/usage-command.d.ts.map +1 -0
  87. package/dist/cli/usage-command.js +209 -0
  88. package/dist/cli/usage-command.js.map +1 -0
  89. package/dist/cli/wiki-command.d.ts +9 -0
  90. package/dist/cli/wiki-command.d.ts.map +1 -0
  91. package/dist/cli/wiki-command.js +76 -0
  92. package/dist/cli/wiki-command.js.map +1 -0
  93. package/dist/cli.d.ts +6 -0
  94. package/dist/cli.d.ts.map +1 -1
  95. package/dist/cli.js +10 -11
  96. package/dist/cli.js.map +1 -1
  97. package/dist/config.d.ts +1 -1
  98. package/dist/config.d.ts.map +1 -1
  99. package/dist/config.js +3 -2
  100. package/dist/config.js.map +1 -1
  101. package/dist/core/ada.d.ts +58 -0
  102. package/dist/core/ada.d.ts.map +1 -0
  103. package/dist/core/ada.js +61 -0
  104. package/dist/core/ada.js.map +1 -0
  105. package/dist/core/advisor/guarda.d.ts +66 -0
  106. package/dist/core/advisor/guarda.d.ts.map +1 -0
  107. package/dist/core/advisor/guarda.js +191 -0
  108. package/dist/core/advisor/guarda.js.map +1 -0
  109. package/dist/core/advisor/runtime.d.ts +66 -0
  110. package/dist/core/advisor/runtime.d.ts.map +1 -0
  111. package/dist/core/advisor/runtime.js +121 -0
  112. package/dist/core/advisor/runtime.js.map +1 -0
  113. package/dist/core/advisor/sesion.d.ts +109 -0
  114. package/dist/core/advisor/sesion.d.ts.map +1 -0
  115. package/dist/core/advisor/sesion.js +139 -0
  116. package/dist/core/advisor/sesion.js.map +1 -0
  117. package/dist/core/agent-session.d.ts +85 -7
  118. package/dist/core/agent-session.d.ts.map +1 -1
  119. package/dist/core/agent-session.js +862 -78
  120. package/dist/core/agent-session.js.map +1 -1
  121. package/dist/core/agents/loader.d.ts +77 -0
  122. package/dist/core/agents/loader.d.ts.map +1 -0
  123. package/dist/core/agents/loader.js +154 -0
  124. package/dist/core/agents/loader.js.map +1 -0
  125. package/dist/core/aprobacion/generados.d.ts +37 -0
  126. package/dist/core/aprobacion/generados.d.ts.map +1 -0
  127. package/dist/core/aprobacion/generados.js +85 -0
  128. package/dist/core/aprobacion/generados.js.map +1 -0
  129. package/dist/core/aprobacion/politica-de-maquina.d.ts +90 -0
  130. package/dist/core/aprobacion/politica-de-maquina.d.ts.map +1 -0
  131. package/dist/core/aprobacion/politica-de-maquina.js +212 -0
  132. package/dist/core/aprobacion/politica-de-maquina.js.map +1 -0
  133. package/dist/core/aprobacion/politica.d.ts +90 -0
  134. package/dist/core/aprobacion/politica.d.ts.map +1 -0
  135. package/dist/core/aprobacion/politica.js +375 -0
  136. package/dist/core/aprobacion/politica.js.map +1 -0
  137. package/dist/core/arranque/atajos.d.ts +46 -0
  138. package/dist/core/arranque/atajos.d.ts.map +1 -0
  139. package/dist/core/arranque/atajos.js +113 -0
  140. package/dist/core/arranque/atajos.js.map +1 -0
  141. package/dist/core/audit/exportacion.d.ts +54 -0
  142. package/dist/core/audit/exportacion.d.ts.map +1 -0
  143. package/dist/core/audit/exportacion.js +265 -0
  144. package/dist/core/audit/exportacion.js.map +1 -0
  145. package/dist/core/audit/libro.d.ts +318 -0
  146. package/dist/core/audit/libro.d.ts.map +1 -0
  147. package/dist/core/audit/libro.js +508 -0
  148. package/dist/core/audit/libro.js.map +1 -0
  149. package/dist/core/audit/registro-sesion.d.ts +78 -0
  150. package/dist/core/audit/registro-sesion.d.ts.map +1 -0
  151. package/dist/core/audit/registro-sesion.js +202 -0
  152. package/dist/core/audit/registro-sesion.js.map +1 -0
  153. package/dist/core/audit/retencion.d.ts +82 -0
  154. package/dist/core/audit/retencion.d.ts.map +1 -0
  155. package/dist/core/audit/retencion.js +152 -0
  156. package/dist/core/audit/retencion.js.map +1 -0
  157. package/dist/core/audit/rutas.d.ts +23 -0
  158. package/dist/core/audit/rutas.d.ts.map +1 -0
  159. package/dist/core/audit/rutas.js +23 -0
  160. package/dist/core/audit/rutas.js.map +1 -0
  161. package/dist/core/auth-storage.d.ts +0 -3
  162. package/dist/core/auth-storage.d.ts.map +1 -1
  163. package/dist/core/auth-storage.js +21 -8
  164. package/dist/core/auth-storage.js.map +1 -1
  165. package/dist/core/banco/almacenamiento.d.ts +18 -0
  166. package/dist/core/banco/almacenamiento.d.ts.map +1 -0
  167. package/dist/core/banco/almacenamiento.js +50 -0
  168. package/dist/core/banco/almacenamiento.js.map +1 -0
  169. package/dist/core/banco/analisis.d.ts +37 -0
  170. package/dist/core/banco/analisis.d.ts.map +1 -0
  171. package/dist/core/banco/analisis.js +164 -0
  172. package/dist/core/banco/analisis.js.map +1 -0
  173. package/dist/core/banco/bloques.d.ts +39 -0
  174. package/dist/core/banco/bloques.d.ts.map +1 -0
  175. package/dist/core/banco/bloques.js +84 -0
  176. package/dist/core/banco/bloques.js.map +1 -0
  177. package/dist/core/banco/cargas.d.ts +84 -0
  178. package/dist/core/banco/cargas.d.ts.map +1 -0
  179. package/dist/core/banco/cargas.js +520 -0
  180. package/dist/core/banco/cargas.js.map +1 -0
  181. package/dist/core/banco/comparar.d.ts +29 -0
  182. package/dist/core/banco/comparar.d.ts.map +1 -0
  183. package/dist/core/banco/comparar.js +28 -0
  184. package/dist/core/banco/comparar.js.map +1 -0
  185. package/dist/core/banco/ejecutar.d.ts +44 -0
  186. package/dist/core/banco/ejecutar.d.ts.map +1 -0
  187. package/dist/core/banco/ejecutar.js +183 -0
  188. package/dist/core/banco/ejecutar.js.map +1 -0
  189. package/dist/core/banco/generar.d.ts +24 -0
  190. package/dist/core/banco/generar.d.ts.map +1 -0
  191. package/dist/core/banco/generar.js +159 -0
  192. package/dist/core/banco/generar.js.map +1 -0
  193. package/dist/core/banco/mutaciones.d.ts +25 -0
  194. package/dist/core/banco/mutaciones.d.ts.map +1 -0
  195. package/dist/core/banco/mutaciones.js +215 -0
  196. package/dist/core/banco/mutaciones.js.map +1 -0
  197. package/dist/core/banco/tipos.d.ts +121 -0
  198. package/dist/core/banco/tipos.d.ts.map +1 -0
  199. package/dist/core/banco/tipos.js +16 -0
  200. package/dist/core/banco/tipos.js.map +1 -0
  201. package/dist/core/blobs/almacen.d.ts +81 -0
  202. package/dist/core/blobs/almacen.d.ts.map +1 -0
  203. package/dist/core/blobs/almacen.js +198 -0
  204. package/dist/core/blobs/almacen.js.map +1 -0
  205. package/dist/core/blobs/broker.d.ts +103 -0
  206. package/dist/core/blobs/broker.d.ts.map +1 -0
  207. package/dist/core/blobs/broker.js +204 -0
  208. package/dist/core/blobs/broker.js.map +1 -0
  209. package/dist/core/blobs/index.d.ts +70 -0
  210. package/dist/core/blobs/index.d.ts.map +1 -0
  211. package/dist/core/blobs/index.js +232 -0
  212. package/dist/core/blobs/index.js.map +1 -0
  213. package/dist/core/blobs/payload.d.ts +55 -0
  214. package/dist/core/blobs/payload.d.ts.map +1 -0
  215. package/dist/core/blobs/payload.js +255 -0
  216. package/dist/core/blobs/payload.js.map +1 -0
  217. package/dist/core/blobs/proveedor.d.ts +85 -0
  218. package/dist/core/blobs/proveedor.d.ts.map +1 -0
  219. package/dist/core/blobs/proveedor.js +196 -0
  220. package/dist/core/blobs/proveedor.js.map +1 -0
  221. package/dist/core/browser/cdp.d.ts +41 -0
  222. package/dist/core/browser/cdp.d.ts.map +1 -0
  223. package/dist/core/browser/cdp.js +119 -0
  224. package/dist/core/browser/cdp.js.map +1 -0
  225. package/dist/core/browser/politica.d.ts +51 -0
  226. package/dist/core/browser/politica.d.ts.map +1 -0
  227. package/dist/core/browser/politica.js +123 -0
  228. package/dist/core/browser/politica.js.map +1 -0
  229. package/dist/core/browser/sesion.d.ts +52 -0
  230. package/dist/core/browser/sesion.d.ts.map +1 -0
  231. package/dist/core/browser/sesion.js +176 -0
  232. package/dist/core/browser/sesion.js.map +1 -0
  233. package/dist/core/browser/tools.d.ts +16 -0
  234. package/dist/core/browser/tools.d.ts.map +1 -0
  235. package/dist/core/browser/tools.js +279 -0
  236. package/dist/core/browser/tools.js.map +1 -0
  237. package/dist/core/commit/diff.d.ts +56 -0
  238. package/dist/core/commit/diff.d.ts.map +1 -0
  239. package/dist/core/commit/diff.js +145 -0
  240. package/dist/core/commit/diff.js.map +1 -0
  241. package/dist/core/commit/mensaje.d.ts +80 -0
  242. package/dist/core/commit/mensaje.d.ts.map +1 -0
  243. package/dist/core/commit/mensaje.js +207 -0
  244. package/dist/core/commit/mensaje.js.map +1 -0
  245. package/dist/core/compactar/index.d.ts +52 -0
  246. package/dist/core/compactar/index.d.ts.map +1 -0
  247. package/dist/core/compactar/index.js +91 -0
  248. package/dist/core/compactar/index.js.map +1 -0
  249. package/dist/core/compactar/registro-denso.d.ts +160 -0
  250. package/dist/core/compactar/registro-denso.d.ts.map +1 -0
  251. package/dist/core/compactar/registro-denso.js +620 -0
  252. package/dist/core/compactar/registro-denso.js.map +1 -0
  253. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  254. package/dist/core/compaction/branch-summarization.js +3 -0
  255. package/dist/core/compaction/branch-summarization.js.map +1 -1
  256. package/dist/core/compaction/compaction.d.ts +4 -3
  257. package/dist/core/compaction/compaction.d.ts.map +1 -1
  258. package/dist/core/compaction/compaction.js +41 -32
  259. package/dist/core/compaction/compaction.js.map +1 -1
  260. package/dist/core/computer/captura.d.ts +35 -0
  261. package/dist/core/computer/captura.d.ts.map +1 -0
  262. package/dist/core/computer/captura.js +140 -0
  263. package/dist/core/computer/captura.js.map +1 -0
  264. package/dist/core/computer/driver.d.ts +130 -0
  265. package/dist/core/computer/driver.d.ts.map +1 -0
  266. package/dist/core/computer/driver.js +206 -0
  267. package/dist/core/computer/driver.js.map +1 -0
  268. package/dist/core/computer/motor/actions.d.ts +109 -0
  269. package/dist/core/computer/motor/actions.d.ts.map +1 -0
  270. package/dist/core/computer/motor/actions.js +157 -0
  271. package/dist/core/computer/motor/actions.js.map +1 -0
  272. package/dist/core/computer/motor/bridge.d.ts +232 -0
  273. package/dist/core/computer/motor/bridge.d.ts.map +1 -0
  274. package/dist/core/computer/motor/bridge.js +2335 -0
  275. package/dist/core/computer/motor/bridge.js.map +1 -0
  276. package/dist/core/computer/motor/cdp.d.ts +107 -0
  277. package/dist/core/computer/motor/cdp.d.ts.map +1 -0
  278. package/dist/core/computer/motor/cdp.js +659 -0
  279. package/dist/core/computer/motor/cdp.js.map +1 -0
  280. package/dist/core/computer/motor/config.d.ts +23 -0
  281. package/dist/core/computer/motor/config.d.ts.map +1 -0
  282. package/dist/core/computer/motor/config.js +100 -0
  283. package/dist/core/computer/motor/config.js.map +1 -0
  284. package/dist/core/computer/motor/contract.d.ts +81 -0
  285. package/dist/core/computer/motor/contract.d.ts.map +1 -0
  286. package/dist/core/computer/motor/contract.js +14 -0
  287. package/dist/core/computer/motor/contract.js.map +1 -0
  288. package/dist/core/computer/motor/note.d.ts +37 -0
  289. package/dist/core/computer/motor/note.d.ts.map +1 -0
  290. package/dist/core/computer/motor/note.js +162 -0
  291. package/dist/core/computer/motor/note.js.map +1 -0
  292. package/dist/core/computer/motor/outline.d.ts +155 -0
  293. package/dist/core/computer/motor/outline.d.ts.map +1 -0
  294. package/dist/core/computer/motor/outline.js +590 -0
  295. package/dist/core/computer/motor/outline.js.map +1 -0
  296. package/dist/core/computer/motor/output.d.ts +18 -0
  297. package/dist/core/computer/motor/output.d.ts.map +1 -0
  298. package/dist/core/computer/motor/output.js +148 -0
  299. package/dist/core/computer/motor/output.js.map +1 -0
  300. package/dist/core/computer/motor/permissions.d.ts +41 -0
  301. package/dist/core/computer/motor/permissions.d.ts.map +1 -0
  302. package/dist/core/computer/motor/permissions.js +51 -0
  303. package/dist/core/computer/motor/permissions.js.map +1 -0
  304. package/dist/core/computer/motor/platform/architecture.d.ts +5 -0
  305. package/dist/core/computer/motor/platform/architecture.d.ts.map +1 -0
  306. package/dist/core/computer/motor/platform/architecture.js +21 -0
  307. package/dist/core/computer/motor/platform/architecture.js.map +1 -0
  308. package/dist/core/computer/motor/platform/coerce.d.ts +4 -0
  309. package/dist/core/computer/motor/platform/coerce.d.ts.map +1 -0
  310. package/dist/core/computer/motor/platform/coerce.js +17 -0
  311. package/dist/core/computer/motor/platform/coerce.js.map +1 -0
  312. package/dist/core/computer/motor/platform/index.d.ts +4 -0
  313. package/dist/core/computer/motor/platform/index.d.ts.map +1 -0
  314. package/dist/core/computer/motor/platform/index.js +79 -0
  315. package/dist/core/computer/motor/platform/index.js.map +1 -0
  316. package/dist/core/computer/motor/platform/linux/backend.d.ts +3 -0
  317. package/dist/core/computer/motor/platform/linux/backend.d.ts.map +1 -0
  318. package/dist/core/computer/motor/platform/linux/backend.js +173 -0
  319. package/dist/core/computer/motor/platform/linux/backend.js.map +1 -0
  320. package/dist/core/computer/motor/platform/linux/helper.d.ts +29 -0
  321. package/dist/core/computer/motor/platform/linux/helper.d.ts.map +1 -0
  322. package/dist/core/computer/motor/platform/linux/helper.js +261 -0
  323. package/dist/core/computer/motor/platform/linux/helper.js.map +1 -0
  324. package/dist/core/computer/motor/platform/macos/backend.d.ts +3 -0
  325. package/dist/core/computer/motor/platform/macos/backend.d.ts.map +1 -0
  326. package/dist/core/computer/motor/platform/macos/backend.js +124 -0
  327. package/dist/core/computer/motor/platform/macos/backend.js.map +1 -0
  328. package/dist/core/computer/motor/platform/macos/browser.d.ts +7 -0
  329. package/dist/core/computer/motor/platform/macos/browser.d.ts.map +1 -0
  330. package/dist/core/computer/motor/platform/macos/browser.js +101 -0
  331. package/dist/core/computer/motor/platform/macos/browser.js.map +1 -0
  332. package/dist/core/computer/motor/platform/macos/helper-path.mjs +34 -0
  333. package/dist/core/computer/motor/platform/macos/helper.d.ts +32 -0
  334. package/dist/core/computer/motor/platform/macos/helper.d.ts.map +1 -0
  335. package/dist/core/computer/motor/platform/macos/helper.js +277 -0
  336. package/dist/core/computer/motor/platform/macos/helper.js.map +1 -0
  337. package/dist/core/computer/motor/platform/macos/permissions.d.ts +4 -0
  338. package/dist/core/computer/motor/platform/macos/permissions.d.ts.map +1 -0
  339. package/dist/core/computer/motor/platform/macos/permissions.js +118 -0
  340. package/dist/core/computer/motor/platform/macos/permissions.js.map +1 -0
  341. package/dist/core/computer/motor/platform/types.d.ts +263 -0
  342. package/dist/core/computer/motor/platform/types.d.ts.map +1 -0
  343. package/dist/core/computer/motor/platform/types.js +2 -0
  344. package/dist/core/computer/motor/platform/types.js.map +1 -0
  345. package/dist/core/computer/motor/platform/windows/backend.d.ts +3 -0
  346. package/dist/core/computer/motor/platform/windows/backend.d.ts.map +1 -0
  347. package/dist/core/computer/motor/platform/windows/backend.js +163 -0
  348. package/dist/core/computer/motor/platform/windows/backend.js.map +1 -0
  349. package/dist/core/computer/motor/platform/windows/helper.d.ts +18 -0
  350. package/dist/core/computer/motor/platform/windows/helper.d.ts.map +1 -0
  351. package/dist/core/computer/motor/platform/windows/helper.js +174 -0
  352. package/dist/core/computer/motor/platform/windows/helper.js.map +1 -0
  353. package/dist/core/computer/motor/root-selection.d.ts +6 -0
  354. package/dist/core/computer/motor/root-selection.d.ts.map +1 -0
  355. package/dist/core/computer/motor/root-selection.js +28 -0
  356. package/dist/core/computer/motor/root-selection.js.map +1 -0
  357. package/dist/core/computer/motor/runtime.d.ts +50 -0
  358. package/dist/core/computer/motor/runtime.d.ts.map +1 -0
  359. package/dist/core/computer/motor/runtime.js +119 -0
  360. package/dist/core/computer/motor/runtime.js.map +1 -0
  361. package/dist/core/computer/motor/state.d.ts +68 -0
  362. package/dist/core/computer/motor/state.d.ts.map +1 -0
  363. package/dist/core/computer/motor/state.js +100 -0
  364. package/dist/core/computer/motor/state.js.map +1 -0
  365. package/dist/core/computer/motor/view.d.ts +6 -0
  366. package/dist/core/computer/motor/view.d.ts.map +1 -0
  367. package/dist/core/computer/motor/view.js +185 -0
  368. package/dist/core/computer/motor/view.js.map +1 -0
  369. package/dist/core/computer/motor-ada.d.ts +159 -0
  370. package/dist/core/computer/motor-ada.d.ts.map +1 -0
  371. package/dist/core/computer/motor-ada.js +412 -0
  372. package/dist/core/computer/motor-ada.js.map +1 -0
  373. package/dist/core/computer/politica.d.ts +56 -0
  374. package/dist/core/computer/politica.d.ts.map +1 -0
  375. package/dist/core/computer/politica.js +163 -0
  376. package/dist/core/computer/politica.js.map +1 -0
  377. package/dist/core/computer/tools.d.ts +26 -0
  378. package/dist/core/computer/tools.d.ts.map +1 -0
  379. package/dist/core/computer/tools.js +399 -0
  380. package/dist/core/computer/tools.js.map +1 -0
  381. package/dist/core/context-breakdown.d.ts +80 -0
  382. package/dist/core/context-breakdown.d.ts.map +1 -0
  383. package/dist/core/context-breakdown.js +87 -0
  384. package/dist/core/context-breakdown.js.map +1 -0
  385. package/dist/core/credenciales/cliente.d.ts +60 -0
  386. package/dist/core/credenciales/cliente.d.ts.map +1 -0
  387. package/dist/core/credenciales/cliente.js +81 -0
  388. package/dist/core/credenciales/cliente.js.map +1 -0
  389. package/dist/core/credenciales/pool.d.ts +96 -0
  390. package/dist/core/credenciales/pool.d.ts.map +1 -0
  391. package/dist/core/credenciales/pool.js +128 -0
  392. package/dist/core/credenciales/pool.js.map +1 -0
  393. package/dist/core/credenciales/reposo.d.ts +93 -0
  394. package/dist/core/credenciales/reposo.d.ts.map +1 -0
  395. package/dist/core/credenciales/reposo.js +489 -0
  396. package/dist/core/credenciales/reposo.js.map +1 -0
  397. package/dist/core/credenciales/servidor.d.ts +55 -0
  398. package/dist/core/credenciales/servidor.d.ts.map +1 -0
  399. package/dist/core/credenciales/servidor.js +205 -0
  400. package/dist/core/credenciales/servidor.js.map +1 -0
  401. package/dist/core/defaults.d.ts +1 -0
  402. package/dist/core/defaults.d.ts.map +1 -1
  403. package/dist/core/defaults.js +9 -0
  404. package/dist/core/defaults.js.map +1 -1
  405. package/dist/core/descubrimiento/comandos.d.ts +30 -0
  406. package/dist/core/descubrimiento/comandos.d.ts.map +1 -0
  407. package/dist/core/descubrimiento/comandos.js +76 -0
  408. package/dist/core/descubrimiento/comandos.js.map +1 -0
  409. package/dist/core/descubrimiento/mcp.d.ts +42 -0
  410. package/dist/core/descubrimiento/mcp.d.ts.map +1 -0
  411. package/dist/core/descubrimiento/mcp.js +130 -0
  412. package/dist/core/descubrimiento/mcp.js.map +1 -0
  413. package/dist/core/descubrimiento/reglas.d.ts +61 -0
  414. package/dist/core/descubrimiento/reglas.d.ts.map +1 -0
  415. package/dist/core/descubrimiento/reglas.js +134 -0
  416. package/dist/core/descubrimiento/reglas.js.map +1 -0
  417. package/dist/core/descubrimiento/skills.d.ts +57 -0
  418. package/dist/core/descubrimiento/skills.d.ts.map +1 -0
  419. package/dist/core/descubrimiento/skills.js +113 -0
  420. package/dist/core/descubrimiento/skills.js.map +1 -0
  421. package/dist/core/dificultad/clasificador.d.ts +133 -0
  422. package/dist/core/dificultad/clasificador.d.ts.map +1 -0
  423. package/dist/core/dificultad/clasificador.js +288 -0
  424. package/dist/core/dificultad/clasificador.js.map +1 -0
  425. package/dist/core/edicion/diario.d.ts +37 -0
  426. package/dist/core/edicion/diario.d.ts.map +1 -0
  427. package/dist/core/edicion/diario.js +51 -0
  428. package/dist/core/edicion/diario.js.map +1 -0
  429. package/dist/core/edicion/hashline.d.ts +71 -0
  430. package/dist/core/edicion/hashline.d.ts.map +1 -0
  431. package/dist/core/edicion/hashline.js +111 -0
  432. package/dist/core/edicion/hashline.js.map +1 -0
  433. package/dist/core/edicion/hueco.d.ts +64 -0
  434. package/dist/core/edicion/hueco.d.ts.map +1 -0
  435. package/dist/core/edicion/hueco.js +162 -0
  436. package/dist/core/edicion/hueco.js.map +1 -0
  437. package/dist/core/edicion/limpiar-carga.d.ts +39 -0
  438. package/dist/core/edicion/limpiar-carga.d.ts.map +1 -0
  439. package/dist/core/edicion/limpiar-carga.js +121 -0
  440. package/dist/core/edicion/limpiar-carga.js.map +1 -0
  441. package/dist/core/edicion/observador.d.ts +80 -0
  442. package/dist/core/edicion/observador.d.ts.map +1 -0
  443. package/dist/core/edicion/observador.js +183 -0
  444. package/dist/core/edicion/observador.js.map +1 -0
  445. package/dist/core/edicion/parecido.d.ts +53 -0
  446. package/dist/core/edicion/parecido.d.ts.map +1 -0
  447. package/dist/core/edicion/parecido.js +145 -0
  448. package/dist/core/edicion/parecido.js.map +1 -0
  449. package/dist/core/edicion/parseo.d.ts +58 -0
  450. package/dist/core/edicion/parseo.d.ts.map +1 -0
  451. package/dist/core/edicion/parseo.js +124 -0
  452. package/dist/core/edicion/parseo.js.map +1 -0
  453. package/dist/core/edicion/reparacion.d.ts +67 -0
  454. package/dist/core/edicion/reparacion.d.ts.map +1 -0
  455. package/dist/core/edicion/reparacion.js +202 -0
  456. package/dist/core/edicion/reparacion.js.map +1 -0
  457. package/dist/core/edicion/sangria.d.ts +121 -0
  458. package/dist/core/edicion/sangria.d.ts.map +1 -0
  459. package/dist/core/edicion/sangria.js +341 -0
  460. package/dist/core/edicion/sangria.js.map +1 -0
  461. package/dist/core/edicion/tipos.d.ts +58 -0
  462. package/dist/core/edicion/tipos.d.ts.map +1 -0
  463. package/dist/core/edicion/tipos.js +160 -0
  464. package/dist/core/edicion/tipos.js.map +1 -0
  465. package/dist/core/engine-personality.d.ts +12 -0
  466. package/dist/core/engine-personality.d.ts.map +1 -0
  467. package/dist/core/engine-personality.js +53 -0
  468. package/dist/core/engine-personality.js.map +1 -0
  469. package/dist/core/errores/proveedor.d.ts +53 -0
  470. package/dist/core/errores/proveedor.d.ts.map +1 -0
  471. package/dist/core/errores/proveedor.js +191 -0
  472. package/dist/core/errores/proveedor.js.map +1 -0
  473. package/dist/core/estructural/buscar.d.ts +61 -0
  474. package/dist/core/estructural/buscar.d.ts.map +1 -0
  475. package/dist/core/estructural/buscar.js +261 -0
  476. package/dist/core/estructural/buscar.js.map +1 -0
  477. package/dist/core/estructural/editar.d.ts +36 -0
  478. package/dist/core/estructural/editar.d.ts.map +1 -0
  479. package/dist/core/estructural/editar.js +123 -0
  480. package/dist/core/estructural/editar.js.map +1 -0
  481. package/dist/core/estructural/tools.d.ts +11 -0
  482. package/dist/core/estructural/tools.d.ts.map +1 -0
  483. package/dist/core/estructural/tools.js +100 -0
  484. package/dist/core/estructural/tools.js.map +1 -0
  485. package/dist/core/experimental.d.ts.map +1 -1
  486. package/dist/core/experimental.js +10 -1
  487. package/dist/core/experimental.js.map +1 -1
  488. package/dist/core/extensiones/suplantacion.d.ts +49 -0
  489. package/dist/core/extensiones/suplantacion.d.ts.map +1 -0
  490. package/dist/core/extensiones/suplantacion.js +61 -0
  491. package/dist/core/extensiones/suplantacion.js.map +1 -0
  492. package/dist/core/extensiones/vigilancia.d.ts +54 -0
  493. package/dist/core/extensiones/vigilancia.d.ts.map +1 -0
  494. package/dist/core/extensiones/vigilancia.js +217 -0
  495. package/dist/core/extensiones/vigilancia.js.map +1 -0
  496. package/dist/core/extensions/index.d.ts +1 -1
  497. package/dist/core/extensions/index.d.ts.map +1 -1
  498. package/dist/core/extensions/index.js.map +1 -1
  499. package/dist/core/extensions/loader.d.ts.map +1 -1
  500. package/dist/core/extensions/loader.js +21 -6
  501. package/dist/core/extensions/loader.js.map +1 -1
  502. package/dist/core/extensions/types.d.ts +23 -4
  503. package/dist/core/extensions/types.d.ts.map +1 -1
  504. package/dist/core/extensions/types.js.map +1 -1
  505. package/dist/core/harness/fuentes-de-contexto.d.ts +29 -0
  506. package/dist/core/harness/fuentes-de-contexto.d.ts.map +1 -0
  507. package/dist/core/harness/fuentes-de-contexto.js +44 -0
  508. package/dist/core/harness/fuentes-de-contexto.js.map +1 -0
  509. package/dist/core/harness/refine.d.ts +40 -0
  510. package/dist/core/harness/refine.d.ts.map +1 -0
  511. package/dist/core/harness/refine.js +109 -0
  512. package/dist/core/harness/refine.js.map +1 -0
  513. package/dist/core/harness/store.d.ts +75 -0
  514. package/dist/core/harness/store.d.ts.map +1 -0
  515. package/dist/core/harness/store.js +149 -0
  516. package/dist/core/harness/store.js.map +1 -0
  517. package/dist/core/hooks/contract.d.ts +85 -0
  518. package/dist/core/hooks/contract.d.ts.map +1 -0
  519. package/dist/core/hooks/contract.js +140 -0
  520. package/dist/core/hooks/contract.js.map +1 -0
  521. package/dist/core/hooks/runner.d.ts +42 -0
  522. package/dist/core/hooks/runner.d.ts.map +1 -0
  523. package/dist/core/hooks/runner.js +85 -0
  524. package/dist/core/hooks/runner.js.map +1 -0
  525. package/dist/core/hooks/session-hooks.d.ts +62 -0
  526. package/dist/core/hooks/session-hooks.d.ts.map +1 -0
  527. package/dist/core/hooks/session-hooks.js +84 -0
  528. package/dist/core/hooks/session-hooks.js.map +1 -0
  529. package/dist/core/importar/formatos.d.ts +69 -0
  530. package/dist/core/importar/formatos.d.ts.map +1 -0
  531. package/dist/core/importar/formatos.js +235 -0
  532. package/dist/core/importar/formatos.js.map +1 -0
  533. package/dist/core/interactivo/deteccion.d.ts +44 -0
  534. package/dist/core/interactivo/deteccion.d.ts.map +1 -0
  535. package/dist/core/interactivo/deteccion.js +82 -0
  536. package/dist/core/interactivo/deteccion.js.map +1 -0
  537. package/dist/core/interactivo/sesion.d.ts +50 -0
  538. package/dist/core/interactivo/sesion.d.ts.map +1 -0
  539. package/dist/core/interactivo/sesion.js +156 -0
  540. package/dist/core/interactivo/sesion.js.map +1 -0
  541. package/dist/core/interactivo/tools.d.ts +21 -0
  542. package/dist/core/interactivo/tools.d.ts.map +1 -0
  543. package/dist/core/interactivo/tools.js +122 -0
  544. package/dist/core/interactivo/tools.js.map +1 -0
  545. package/dist/core/keybindings.d.ts.map +1 -1
  546. package/dist/core/keybindings.js +2 -1
  547. package/dist/core/keybindings.js.map +1 -1
  548. package/dist/core/lectura/mapa.d.ts +70 -0
  549. package/dist/core/lectura/mapa.d.ts.map +1 -0
  550. package/dist/core/lectura/mapa.js +177 -0
  551. package/dist/core/lectura/mapa.js.map +1 -0
  552. package/dist/core/lectura/pdf.d.ts +49 -0
  553. package/dist/core/lectura/pdf.d.ts.map +1 -0
  554. package/dist/core/lectura/pdf.js +337 -0
  555. package/dist/core/lectura/pdf.js.map +1 -0
  556. package/dist/core/limpieza/comprobadores.d.ts +28 -0
  557. package/dist/core/limpieza/comprobadores.d.ts.map +1 -0
  558. package/dist/core/limpieza/comprobadores.js +311 -0
  559. package/dist/core/limpieza/comprobadores.js.map +1 -0
  560. package/dist/core/limpieza/parseo.d.ts +19 -0
  561. package/dist/core/limpieza/parseo.d.ts.map +1 -0
  562. package/dist/core/limpieza/parseo.js +124 -0
  563. package/dist/core/limpieza/parseo.js.map +1 -0
  564. package/dist/core/limpieza/reparacion.d.ts +77 -0
  565. package/dist/core/limpieza/reparacion.d.ts.map +1 -0
  566. package/dist/core/limpieza/reparacion.js +254 -0
  567. package/dist/core/limpieza/reparacion.js.map +1 -0
  568. package/dist/core/limpieza/tipos.d.ts +56 -0
  569. package/dist/core/limpieza/tipos.d.ts.map +1 -0
  570. package/dist/core/limpieza/tipos.js +9 -0
  571. package/dist/core/limpieza/tipos.js.map +1 -0
  572. package/dist/core/lsp/cliente.d.ts +52 -0
  573. package/dist/core/lsp/cliente.d.ts.map +1 -0
  574. package/dist/core/lsp/cliente.js +232 -0
  575. package/dist/core/lsp/cliente.js.map +1 -0
  576. package/dist/core/lsp/descubrimiento.d.ts +62 -0
  577. package/dist/core/lsp/descubrimiento.d.ts.map +1 -0
  578. package/dist/core/lsp/descubrimiento.js +152 -0
  579. package/dist/core/lsp/descubrimiento.js.map +1 -0
  580. package/dist/core/lsp/ediciones.d.ts +59 -0
  581. package/dist/core/lsp/ediciones.d.ts.map +1 -0
  582. package/dist/core/lsp/ediciones.js +89 -0
  583. package/dist/core/lsp/ediciones.js.map +1 -0
  584. package/dist/core/lsp/extension.d.ts +28 -0
  585. package/dist/core/lsp/extension.d.ts.map +1 -0
  586. package/dist/core/lsp/extension.js +34 -0
  587. package/dist/core/lsp/extension.js.map +1 -0
  588. package/dist/core/lsp/tools.d.ts +45 -0
  589. package/dist/core/lsp/tools.d.ts.map +1 -0
  590. package/dist/core/lsp/tools.js +265 -0
  591. package/dist/core/lsp/tools.js.map +1 -0
  592. package/dist/core/mcp/client.d.ts +60 -0
  593. package/dist/core/mcp/client.d.ts.map +1 -0
  594. package/dist/core/mcp/client.js +139 -0
  595. package/dist/core/mcp/client.js.map +1 -0
  596. package/dist/core/mcp/manager.d.ts +86 -0
  597. package/dist/core/mcp/manager.d.ts.map +1 -0
  598. package/dist/core/mcp/manager.js +124 -0
  599. package/dist/core/mcp/manager.js.map +1 -0
  600. package/dist/core/mcp/tools.d.ts +15 -0
  601. package/dist/core/mcp/tools.d.ts.map +1 -0
  602. package/dist/core/mcp/tools.js +84 -0
  603. package/dist/core/mcp/tools.js.map +1 -0
  604. package/dist/core/memory-engine/audit-export.d.ts +56 -0
  605. package/dist/core/memory-engine/audit-export.d.ts.map +1 -0
  606. package/dist/core/memory-engine/audit-export.js +100 -0
  607. package/dist/core/memory-engine/audit-export.js.map +1 -0
  608. package/dist/core/memory-engine/audit-indice.d.ts +153 -0
  609. package/dist/core/memory-engine/audit-indice.d.ts.map +1 -0
  610. package/dist/core/memory-engine/audit-indice.js +271 -0
  611. package/dist/core/memory-engine/audit-indice.js.map +1 -0
  612. package/dist/core/memory-engine/audit.d.ts +18 -6
  613. package/dist/core/memory-engine/audit.d.ts.map +1 -1
  614. package/dist/core/memory-engine/audit.js +32 -50
  615. package/dist/core/memory-engine/audit.js.map +1 -1
  616. package/dist/core/memory-engine/engine.d.ts +21 -4
  617. package/dist/core/memory-engine/engine.d.ts.map +1 -1
  618. package/dist/core/memory-engine/engine.js +219 -55
  619. package/dist/core/memory-engine/engine.js.map +1 -1
  620. package/dist/core/memory-engine/inverted-index.d.ts.map +1 -1
  621. package/dist/core/memory-engine/inverted-index.js +67 -10
  622. package/dist/core/memory-engine/inverted-index.js.map +1 -1
  623. package/dist/core/memory-engine/keychain.d.ts.map +1 -1
  624. package/dist/core/memory-engine/keychain.js +1 -6
  625. package/dist/core/memory-engine/keychain.js.map +1 -1
  626. package/dist/core/memory-engine/observation-store.d.ts +0 -1
  627. package/dist/core/memory-engine/observation-store.d.ts.map +1 -1
  628. package/dist/core/memory-engine/observation-store.js +40 -12
  629. package/dist/core/memory-engine/observation-store.js.map +1 -1
  630. package/dist/core/memory-engine/refinements.d.ts +51 -0
  631. package/dist/core/memory-engine/refinements.d.ts.map +1 -0
  632. package/dist/core/memory-engine/refinements.js +99 -0
  633. package/dist/core/memory-engine/refinements.js.map +1 -0
  634. package/dist/core/memory-engine/scanner.d.ts.map +1 -1
  635. package/dist/core/memory-engine/scanner.js +25 -5
  636. package/dist/core/memory-engine/scanner.js.map +1 -1
  637. package/dist/core/memory-engine/security.d.ts.map +1 -1
  638. package/dist/core/memory-engine/security.js +131 -23
  639. package/dist/core/memory-engine/security.js.map +1 -1
  640. package/dist/core/memory-engine/session-indexer.d.ts.map +1 -1
  641. package/dist/core/memory-engine/session-indexer.js +8 -2
  642. package/dist/core/memory-engine/session-indexer.js.map +1 -1
  643. package/dist/core/memory-engine/tools.d.ts +2 -2
  644. package/dist/core/memory-engine/tools.d.ts.map +1 -1
  645. package/dist/core/memory-engine/tools.js +41 -8
  646. package/dist/core/memory-engine/tools.js.map +1 -1
  647. package/dist/core/memory-engine/types.d.ts +2 -0
  648. package/dist/core/memory-engine/types.d.ts.map +1 -1
  649. package/dist/core/memory-engine/types.js.map +1 -1
  650. package/dist/core/memory-engine/vault.d.ts.map +1 -1
  651. package/dist/core/memory-engine/vault.js +2 -2
  652. package/dist/core/memory-engine/vault.js.map +1 -1
  653. package/dist/core/model-config.d.ts.map +1 -1
  654. package/dist/core/model-config.js +2 -1
  655. package/dist/core/model-config.js.map +1 -1
  656. package/dist/core/model-resolver.d.ts +1 -0
  657. package/dist/core/model-resolver.d.ts.map +1 -1
  658. package/dist/core/model-resolver.js +19 -7
  659. package/dist/core/model-resolver.js.map +1 -1
  660. package/dist/core/models-store.d.ts.map +1 -1
  661. package/dist/core/models-store.js +2 -1
  662. package/dist/core/models-store.js.map +1 -1
  663. package/dist/core/muestreo-restringido.d.ts +49 -0
  664. package/dist/core/muestreo-restringido.d.ts.map +1 -0
  665. package/dist/core/muestreo-restringido.js +65 -0
  666. package/dist/core/muestreo-restringido.js.map +1 -0
  667. package/dist/core/orphan-process-journal.d.ts +48 -0
  668. package/dist/core/orphan-process-journal.d.ts.map +1 -0
  669. package/dist/core/orphan-process-journal.js +116 -0
  670. package/dist/core/orphan-process-journal.js.map +1 -0
  671. package/dist/core/package-manager.d.ts.map +1 -1
  672. package/dist/core/package-manager.js +11 -6
  673. package/dist/core/package-manager.js.map +1 -1
  674. package/dist/core/pi-manifest.d.ts.map +1 -1
  675. package/dist/core/pi-manifest.js +2 -1
  676. package/dist/core/pi-manifest.js.map +1 -1
  677. package/dist/core/privacidad/categorias-especiales.d.ts +186 -0
  678. package/dist/core/privacidad/categorias-especiales.d.ts.map +1 -0
  679. package/dist/core/privacidad/categorias-especiales.js +745 -0
  680. package/dist/core/privacidad/categorias-especiales.js.map +1 -0
  681. package/dist/core/privacidad/tapar.d.ts +48 -0
  682. package/dist/core/privacidad/tapar.d.ts.map +1 -0
  683. package/dist/core/privacidad/tapar.js +66 -0
  684. package/dist/core/privacidad/tapar.js.map +1 -0
  685. package/dist/core/prompt-cache/diagnostics.d.ts +33 -0
  686. package/dist/core/prompt-cache/diagnostics.d.ts.map +1 -0
  687. package/dist/core/prompt-cache/diagnostics.js +100 -0
  688. package/dist/core/prompt-cache/diagnostics.js.map +1 -0
  689. package/dist/core/prompt-cache/index.d.ts +33 -0
  690. package/dist/core/prompt-cache/index.d.ts.map +1 -0
  691. package/dist/core/prompt-cache/index.js +189 -0
  692. package/dist/core/prompt-cache/index.js.map +1 -0
  693. package/dist/core/prompt-cache/payload.d.ts +58 -0
  694. package/dist/core/prompt-cache/payload.d.ts.map +1 -0
  695. package/dist/core/prompt-cache/payload.js +122 -0
  696. package/dist/core/prompt-cache/payload.js.map +1 -0
  697. package/dist/core/prompt-cache/stabilize.d.ts +65 -0
  698. package/dist/core/prompt-cache/stabilize.d.ts.map +1 -0
  699. package/dist/core/prompt-cache/stabilize.js +137 -0
  700. package/dist/core/prompt-cache/stabilize.js.map +1 -0
  701. package/dist/core/prompt-cache/stats.d.ts +55 -0
  702. package/dist/core/prompt-cache/stats.d.ts.map +1 -0
  703. package/dist/core/prompt-cache/stats.js +158 -0
  704. package/dist/core/prompt-cache/stats.js.map +1 -0
  705. package/dist/core/prompt-eleccion.d.ts +38 -0
  706. package/dist/core/prompt-eleccion.d.ts.map +1 -0
  707. package/dist/core/prompt-eleccion.js +46 -0
  708. package/dist/core/prompt-eleccion.js.map +1 -0
  709. package/dist/core/prompt-optimizer.d.ts +53 -0
  710. package/dist/core/prompt-optimizer.d.ts.map +1 -0
  711. package/dist/core/prompt-optimizer.js +138 -0
  712. package/dist/core/prompt-optimizer.js.map +1 -0
  713. package/dist/core/prompts/montar.d.ts +75 -0
  714. package/dist/core/prompts/montar.d.ts.map +1 -0
  715. package/dist/core/prompts/montar.js +146 -0
  716. package/dist/core/prompts/montar.js.map +1 -0
  717. package/dist/core/prompts/plantilla.d.ts +54 -0
  718. package/dist/core/prompts/plantilla.d.ts.map +1 -0
  719. package/dist/core/prompts/plantilla.js +153 -0
  720. package/dist/core/prompts/plantilla.js.map +1 -0
  721. package/dist/core/prompts/sistema.md +134 -0
  722. package/dist/core/provider-attribution.d.ts +24 -2
  723. package/dist/core/provider-attribution.d.ts.map +1 -1
  724. package/dist/core/provider-attribution.js +24 -42
  725. package/dist/core/provider-attribution.js.map +1 -1
  726. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  727. package/dist/core/remote-catalog-provider.js +2 -1
  728. package/dist/core/remote-catalog-provider.js.map +1 -1
  729. package/dist/core/remoto/destino.d.ts +38 -0
  730. package/dist/core/remoto/destino.d.ts.map +1 -0
  731. package/dist/core/remoto/destino.js +105 -0
  732. package/dist/core/remoto/destino.js.map +1 -0
  733. package/dist/core/remoto/ejecutor.d.ts +59 -0
  734. package/dist/core/remoto/ejecutor.d.ts.map +1 -0
  735. package/dist/core/remoto/ejecutor.js +225 -0
  736. package/dist/core/remoto/ejecutor.js.map +1 -0
  737. package/dist/core/remoto/ficheros.d.ts +29 -0
  738. package/dist/core/remoto/ficheros.d.ts.map +1 -0
  739. package/dist/core/remoto/ficheros.js +90 -0
  740. package/dist/core/remoto/ficheros.js.map +1 -0
  741. package/dist/core/remoto/registro-extension.d.ts +15 -0
  742. package/dist/core/remoto/registro-extension.d.ts.map +1 -0
  743. package/dist/core/remoto/registro-extension.js +17 -0
  744. package/dist/core/remoto/registro-extension.js.map +1 -0
  745. package/dist/core/remoto/tools.d.ts +28 -0
  746. package/dist/core/remoto/tools.d.ts.map +1 -0
  747. package/dist/core/remoto/tools.js +31 -0
  748. package/dist/core/remoto/tools.js.map +1 -0
  749. package/dist/core/resource-loader.d.ts +58 -0
  750. package/dist/core/resource-loader.d.ts.map +1 -1
  751. package/dist/core/resource-loader.js +326 -8
  752. package/dist/core/resource-loader.js.map +1 -1
  753. package/dist/core/revision/hallazgo.d.ts +51 -0
  754. package/dist/core/revision/hallazgo.d.ts.map +1 -0
  755. package/dist/core/revision/hallazgo.js +73 -0
  756. package/dist/core/revision/hallazgo.js.map +1 -0
  757. package/dist/core/revision/revisor.d.ts +81 -0
  758. package/dist/core/revision/revisor.d.ts.map +1 -0
  759. package/dist/core/revision/revisor.js +132 -0
  760. package/dist/core/revision/revisor.js.map +1 -0
  761. package/dist/core/revision/sarif.d.ts +30 -0
  762. package/dist/core/revision/sarif.d.ts.map +1 -0
  763. package/dist/core/revision/sarif.js +83 -0
  764. package/dist/core/revision/sarif.js.map +1 -0
  765. package/dist/core/scheduler/scheduler.d.ts +87 -0
  766. package/dist/core/scheduler/scheduler.d.ts.map +1 -0
  767. package/dist/core/scheduler/scheduler.js +178 -0
  768. package/dist/core/scheduler/scheduler.js.map +1 -0
  769. package/dist/core/sdk.d.ts +8 -0
  770. package/dist/core/sdk.d.ts.map +1 -1
  771. package/dist/core/sdk.js +11 -1
  772. package/dist/core/sdk.js.map +1 -1
  773. package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts +49 -0
  774. package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts.map +1 -0
  775. package/dist/core/sesion/cerrar-llamadas-abiertas.js +77 -0
  776. package/dist/core/sesion/cerrar-llamadas-abiertas.js.map +1 -0
  777. package/dist/core/session-manager.d.ts.map +1 -1
  778. package/dist/core/session-manager.js +2 -1
  779. package/dist/core/session-manager.js.map +1 -1
  780. package/dist/core/settings-diagnostics.d.ts +9 -0
  781. package/dist/core/settings-diagnostics.d.ts.map +1 -0
  782. package/dist/core/settings-diagnostics.js +21 -0
  783. package/dist/core/settings-diagnostics.js.map +1 -0
  784. package/dist/core/settings-manager.d.ts +156 -0
  785. package/dist/core/settings-manager.d.ts.map +1 -1
  786. package/dist/core/settings-manager.js +255 -10
  787. package/dist/core/settings-manager.js.map +1 -1
  788. package/dist/core/skills.d.ts.map +1 -1
  789. package/dist/core/skills.js +51 -33
  790. package/dist/core/skills.js.map +1 -1
  791. package/dist/core/slash-commands.d.ts.map +1 -1
  792. package/dist/core/slash-commands.js +2 -1
  793. package/dist/core/slash-commands.js.map +1 -1
  794. package/dist/core/system-prompt.d.ts +17 -0
  795. package/dist/core/system-prompt.d.ts.map +1 -1
  796. package/dist/core/system-prompt.js +13 -5
  797. package/dist/core/system-prompt.js.map +1 -1
  798. package/dist/core/telemetria/otlp.d.ts +122 -0
  799. package/dist/core/telemetria/otlp.d.ts.map +1 -0
  800. package/dist/core/telemetria/otlp.js +373 -0
  801. package/dist/core/telemetria/otlp.js.map +1 -0
  802. package/dist/core/tools/coercion-argumentos.d.ts +48 -0
  803. package/dist/core/tools/coercion-argumentos.d.ts.map +1 -0
  804. package/dist/core/tools/coercion-argumentos.js +99 -0
  805. package/dist/core/tools/coercion-argumentos.js.map +1 -0
  806. package/dist/core/tools/edit-diff.d.ts +0 -12
  807. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  808. package/dist/core/tools/edit-diff.js +234 -12
  809. package/dist/core/tools/edit-diff.js.map +1 -1
  810. package/dist/core/tools/edit.d.ts.map +1 -1
  811. package/dist/core/tools/edit.js +28 -5
  812. package/dist/core/tools/edit.js.map +1 -1
  813. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  814. package/dist/core/tools/file-mutation-queue.js +5 -0
  815. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  816. package/dist/core/tools/index.d.ts.map +1 -1
  817. package/dist/core/tools/index.js +2 -2
  818. package/dist/core/tools/index.js.map +1 -1
  819. package/dist/core/tools/json-tolerante.d.ts +30 -0
  820. package/dist/core/tools/json-tolerante.d.ts.map +1 -0
  821. package/dist/core/tools/json-tolerante.js +70 -0
  822. package/dist/core/tools/json-tolerante.js.map +1 -0
  823. package/dist/core/tools/project-memory-tool.d.ts.map +1 -1
  824. package/dist/core/tools/project-memory-tool.js +4 -1
  825. package/dist/core/tools/project-memory-tool.js.map +1 -1
  826. package/dist/core/tools/read.d.ts.map +1 -1
  827. package/dist/core/tools/read.js +17 -0
  828. package/dist/core/tools/read.js.map +1 -1
  829. package/dist/core/tools/tool-definition-wrapper.d.ts +14 -1
  830. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  831. package/dist/core/tools/tool-definition-wrapper.js +17 -1
  832. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  833. package/dist/core/trust-manager.d.ts.map +1 -1
  834. package/dist/core/trust-manager.js +2 -1
  835. package/dist/core/trust-manager.js.map +1 -1
  836. package/dist/core/turno-vacio/detectar.d.ts +38 -0
  837. package/dist/core/turno-vacio/detectar.d.ts.map +1 -0
  838. package/dist/core/turno-vacio/detectar.js +66 -0
  839. package/dist/core/turno-vacio/detectar.js.map +1 -0
  840. package/dist/core/undo/journal.d.ts +57 -0
  841. package/dist/core/undo/journal.d.ts.map +1 -0
  842. package/dist/core/undo/journal.js +178 -0
  843. package/dist/core/undo/journal.js.map +1 -0
  844. package/dist/core/urls-internas/auditoria.d.ts +10 -0
  845. package/dist/core/urls-internas/auditoria.d.ts.map +1 -0
  846. package/dist/core/urls-internas/auditoria.js +42 -0
  847. package/dist/core/urls-internas/auditoria.js.map +1 -0
  848. package/dist/core/urls-internas/boveda.d.ts +13 -0
  849. package/dist/core/urls-internas/boveda.d.ts.map +1 -0
  850. package/dist/core/urls-internas/boveda.js +40 -0
  851. package/dist/core/urls-internas/boveda.js.map +1 -0
  852. package/dist/core/urls-internas/lector.d.ts +30 -0
  853. package/dist/core/urls-internas/lector.d.ts.map +1 -0
  854. package/dist/core/urls-internas/lector.js +56 -0
  855. package/dist/core/urls-internas/lector.js.map +1 -0
  856. package/dist/core/urls-internas/memoria.d.ts +11 -0
  857. package/dist/core/urls-internas/memoria.d.ts.map +1 -0
  858. package/dist/core/urls-internas/memoria.js +25 -0
  859. package/dist/core/urls-internas/memoria.js.map +1 -0
  860. package/dist/core/urls-internas/parse.d.ts +28 -0
  861. package/dist/core/urls-internas/parse.d.ts.map +1 -0
  862. package/dist/core/urls-internas/parse.js +32 -0
  863. package/dist/core/urls-internas/parse.js.map +1 -0
  864. package/dist/core/urls-internas/reglas.d.ts +10 -0
  865. package/dist/core/urls-internas/reglas.d.ts.map +1 -0
  866. package/dist/core/urls-internas/reglas.js +31 -0
  867. package/dist/core/urls-internas/reglas.js.map +1 -0
  868. package/dist/core/usage/aggregate.d.ts +68 -0
  869. package/dist/core/usage/aggregate.d.ts.map +1 -0
  870. package/dist/core/usage/aggregate.js +93 -0
  871. package/dist/core/usage/aggregate.js.map +1 -0
  872. package/dist/core/usage/cuota/anthropic.d.ts +10 -0
  873. package/dist/core/usage/cuota/anthropic.d.ts.map +1 -0
  874. package/dist/core/usage/cuota/anthropic.js +63 -0
  875. package/dist/core/usage/cuota/anthropic.js.map +1 -0
  876. package/dist/core/usage/cuota/cache.d.ts +20 -0
  877. package/dist/core/usage/cuota/cache.d.ts.map +1 -0
  878. package/dist/core/usage/cuota/cache.js +36 -0
  879. package/dist/core/usage/cuota/cache.js.map +1 -0
  880. package/dist/core/usage/cuota/github-copilot.d.ts +9 -0
  881. package/dist/core/usage/cuota/github-copilot.d.ts.map +1 -0
  882. package/dist/core/usage/cuota/github-copilot.js +67 -0
  883. package/dist/core/usage/cuota/github-copilot.js.map +1 -0
  884. package/dist/core/usage/cuota/google-gemini.d.ts +9 -0
  885. package/dist/core/usage/cuota/google-gemini.d.ts.map +1 -0
  886. package/dist/core/usage/cuota/google-gemini.js +72 -0
  887. package/dist/core/usage/cuota/google-gemini.js.map +1 -0
  888. package/dist/core/usage/cuota/index.d.ts +25 -0
  889. package/dist/core/usage/cuota/index.d.ts.map +1 -0
  890. package/dist/core/usage/cuota/index.js +50 -0
  891. package/dist/core/usage/cuota/index.js.map +1 -0
  892. package/dist/core/usage/cuota/openai-codex.d.ts +9 -0
  893. package/dist/core/usage/cuota/openai-codex.d.ts.map +1 -0
  894. package/dist/core/usage/cuota/openai-codex.js +59 -0
  895. package/dist/core/usage/cuota/openai-codex.js.map +1 -0
  896. package/dist/core/usage/cuota/openrouter.d.ts +10 -0
  897. package/dist/core/usage/cuota/openrouter.d.ts.map +1 -0
  898. package/dist/core/usage/cuota/openrouter.js +47 -0
  899. package/dist/core/usage/cuota/openrouter.js.map +1 -0
  900. package/dist/core/usage/cuota/tipos.d.ts +50 -0
  901. package/dist/core/usage/cuota/tipos.d.ts.map +1 -0
  902. package/dist/core/usage/cuota/tipos.js +25 -0
  903. package/dist/core/usage/cuota/tipos.js.map +1 -0
  904. package/dist/core/web/busqueda-nativa.d.ts +82 -0
  905. package/dist/core/web/busqueda-nativa.d.ts.map +1 -0
  906. package/dist/core/web/busqueda-nativa.js +163 -0
  907. package/dist/core/web/busqueda-nativa.js.map +1 -0
  908. package/dist/core/web/destino.d.ts +58 -0
  909. package/dist/core/web/destino.d.ts.map +1 -0
  910. package/dist/core/web/destino.js +127 -0
  911. package/dist/core/web/destino.js.map +1 -0
  912. package/dist/core/web/proveedores/brave.d.ts +6 -0
  913. package/dist/core/web/proveedores/brave.d.ts.map +1 -0
  914. package/dist/core/web/proveedores/brave.js +20 -0
  915. package/dist/core/web/proveedores/brave.js.map +1 -0
  916. package/dist/core/web/proveedores/claves.d.ts +19 -0
  917. package/dist/core/web/proveedores/claves.d.ts.map +1 -0
  918. package/dist/core/web/proveedores/claves.js +36 -0
  919. package/dist/core/web/proveedores/claves.js.map +1 -0
  920. package/dist/core/web/proveedores/duckduckgo.d.ts +3 -0
  921. package/dist/core/web/proveedores/duckduckgo.d.ts.map +1 -0
  922. package/dist/core/web/proveedores/duckduckgo.js +109 -0
  923. package/dist/core/web/proveedores/duckduckgo.js.map +1 -0
  924. package/dist/core/web/proveedores/ecosia.d.ts +3 -0
  925. package/dist/core/web/proveedores/ecosia.d.ts.map +1 -0
  926. package/dist/core/web/proveedores/ecosia.js +72 -0
  927. package/dist/core/web/proveedores/ecosia.js.map +1 -0
  928. package/dist/core/web/proveedores/exa.d.ts +6 -0
  929. package/dist/core/web/proveedores/exa.d.ts.map +1 -0
  930. package/dist/core/web/proveedores/exa.js +24 -0
  931. package/dist/core/web/proveedores/exa.js.map +1 -0
  932. package/dist/core/web/proveedores/mojeek.d.ts +3 -0
  933. package/dist/core/web/proveedores/mojeek.d.ts.map +1 -0
  934. package/dist/core/web/proveedores/mojeek.js +65 -0
  935. package/dist/core/web/proveedores/mojeek.js.map +1 -0
  936. package/dist/core/web/proveedores/navegador.d.ts +10 -0
  937. package/dist/core/web/proveedores/navegador.d.ts.map +1 -0
  938. package/dist/core/web/proveedores/navegador.js +13 -0
  939. package/dist/core/web/proveedores/navegador.js.map +1 -0
  940. package/dist/core/web/proveedores/registro.d.ts +43 -0
  941. package/dist/core/web/proveedores/registro.d.ts.map +1 -0
  942. package/dist/core/web/proveedores/registro.js +49 -0
  943. package/dist/core/web/proveedores/registro.js.map +1 -0
  944. package/dist/core/web/proveedores/searxng.d.ts +9 -0
  945. package/dist/core/web/proveedores/searxng.d.ts.map +1 -0
  946. package/dist/core/web/proveedores/searxng.js +17 -0
  947. package/dist/core/web/proveedores/searxng.js.map +1 -0
  948. package/dist/core/web/proveedores/serper.d.ts +9 -0
  949. package/dist/core/web/proveedores/serper.d.ts.map +1 -0
  950. package/dist/core/web/proveedores/serper.js +19 -0
  951. package/dist/core/web/proveedores/serper.js.map +1 -0
  952. package/dist/core/web/proveedores/tavily.d.ts +6 -0
  953. package/dist/core/web/proveedores/tavily.d.ts.map +1 -0
  954. package/dist/core/web/proveedores/tavily.js +19 -0
  955. package/dist/core/web/proveedores/tavily.js.map +1 -0
  956. package/dist/core/web/proveedores/tipos.d.ts +36 -0
  957. package/dist/core/web/proveedores/tipos.d.ts.map +1 -0
  958. package/dist/core/web/proveedores/tipos.js +10 -0
  959. package/dist/core/web/proveedores/tipos.js.map +1 -0
  960. package/dist/core/web/registro-red.d.ts +43 -0
  961. package/dist/core/web/registro-red.d.ts.map +1 -0
  962. package/dist/core/web/registro-red.js +86 -0
  963. package/dist/core/web/registro-red.js.map +1 -0
  964. package/dist/core/web/scrapers/cisa-kev.d.ts +10 -0
  965. package/dist/core/web/scrapers/cisa-kev.d.ts.map +1 -0
  966. package/dist/core/web/scrapers/cisa-kev.js +38 -0
  967. package/dist/core/web/scrapers/cisa-kev.js.map +1 -0
  968. package/dist/core/web/scrapers/crates-io.d.ts +11 -0
  969. package/dist/core/web/scrapers/crates-io.d.ts.map +1 -0
  970. package/dist/core/web/scrapers/crates-io.js +29 -0
  971. package/dist/core/web/scrapers/crates-io.js.map +1 -0
  972. package/dist/core/web/scrapers/docs-rs.d.ts +10 -0
  973. package/dist/core/web/scrapers/docs-rs.d.ts.map +1 -0
  974. package/dist/core/web/scrapers/docs-rs.js +35 -0
  975. package/dist/core/web/scrapers/docs-rs.js.map +1 -0
  976. package/dist/core/web/scrapers/github.d.ts +3 -0
  977. package/dist/core/web/scrapers/github.d.ts.map +1 -0
  978. package/dist/core/web/scrapers/github.js +72 -0
  979. package/dist/core/web/scrapers/github.js.map +1 -0
  980. package/dist/core/web/scrapers/go-pkg.d.ts +7 -0
  981. package/dist/core/web/scrapers/go-pkg.d.ts.map +1 -0
  982. package/dist/core/web/scrapers/go-pkg.js +30 -0
  983. package/dist/core/web/scrapers/go-pkg.js.map +1 -0
  984. package/dist/core/web/scrapers/hex.d.ts +6 -0
  985. package/dist/core/web/scrapers/hex.d.ts.map +1 -0
  986. package/dist/core/web/scrapers/hex.js +27 -0
  987. package/dist/core/web/scrapers/hex.js.map +1 -0
  988. package/dist/core/web/scrapers/maven.d.ts +8 -0
  989. package/dist/core/web/scrapers/maven.d.ts.map +1 -0
  990. package/dist/core/web/scrapers/maven.js +41 -0
  991. package/dist/core/web/scrapers/maven.js.map +1 -0
  992. package/dist/core/web/scrapers/mdn.d.ts +6 -0
  993. package/dist/core/web/scrapers/mdn.d.ts.map +1 -0
  994. package/dist/core/web/scrapers/mdn.js +28 -0
  995. package/dist/core/web/scrapers/mdn.js.map +1 -0
  996. package/dist/core/web/scrapers/npm.d.ts +11 -0
  997. package/dist/core/web/scrapers/npm.d.ts.map +1 -0
  998. package/dist/core/web/scrapers/npm.js +57 -0
  999. package/dist/core/web/scrapers/npm.js.map +1 -0
  1000. package/dist/core/web/scrapers/nuget.d.ts +8 -0
  1001. package/dist/core/web/scrapers/nuget.d.ts.map +1 -0
  1002. package/dist/core/web/scrapers/nuget.js +22 -0
  1003. package/dist/core/web/scrapers/nuget.js.map +1 -0
  1004. package/dist/core/web/scrapers/nvd.d.ts +7 -0
  1005. package/dist/core/web/scrapers/nvd.d.ts.map +1 -0
  1006. package/dist/core/web/scrapers/nvd.js +37 -0
  1007. package/dist/core/web/scrapers/nvd.js.map +1 -0
  1008. package/dist/core/web/scrapers/pypi.d.ts +6 -0
  1009. package/dist/core/web/scrapers/pypi.d.ts.map +1 -0
  1010. package/dist/core/web/scrapers/pypi.js +31 -0
  1011. package/dist/core/web/scrapers/pypi.js.map +1 -0
  1012. package/dist/core/web/scrapers/registro.d.ts +13 -0
  1013. package/dist/core/web/scrapers/registro.d.ts.map +1 -0
  1014. package/dist/core/web/scrapers/registro.js +65 -0
  1015. package/dist/core/web/scrapers/registro.js.map +1 -0
  1016. package/dist/core/web/scrapers/rubygems.d.ts +6 -0
  1017. package/dist/core/web/scrapers/rubygems.d.ts.map +1 -0
  1018. package/dist/core/web/scrapers/rubygems.js +23 -0
  1019. package/dist/core/web/scrapers/rubygems.js.map +1 -0
  1020. package/dist/core/web/scrapers/stackoverflow.d.ts +3 -0
  1021. package/dist/core/web/scrapers/stackoverflow.d.ts.map +1 -0
  1022. package/dist/core/web/scrapers/stackoverflow.js +46 -0
  1023. package/dist/core/web/scrapers/stackoverflow.js.map +1 -0
  1024. package/dist/core/web/scrapers/tipos.d.ts +42 -0
  1025. package/dist/core/web/scrapers/tipos.d.ts.map +1 -0
  1026. package/dist/core/web/scrapers/tipos.js +23 -0
  1027. package/dist/core/web/scrapers/tipos.js.map +1 -0
  1028. package/dist/core/web/texto.d.ts +10 -0
  1029. package/dist/core/web/texto.d.ts.map +1 -0
  1030. package/dist/core/web/texto.js +26 -0
  1031. package/dist/core/web/texto.js.map +1 -0
  1032. package/dist/core/web/tools.d.ts +91 -0
  1033. package/dist/core/web/tools.d.ts.map +1 -0
  1034. package/dist/core/web/tools.js +304 -0
  1035. package/dist/core/web/tools.js.map +1 -0
  1036. package/dist/core/wiki/almacen.d.ts +33 -0
  1037. package/dist/core/wiki/almacen.d.ts.map +1 -0
  1038. package/dist/core/wiki/almacen.js +93 -0
  1039. package/dist/core/wiki/almacen.js.map +1 -0
  1040. package/dist/core/wiki/citas.d.ts +111 -0
  1041. package/dist/core/wiki/citas.d.ts.map +1 -0
  1042. package/dist/core/wiki/citas.js +146 -0
  1043. package/dist/core/wiki/citas.js.map +1 -0
  1044. package/dist/core/workflows/agent-runner.d.ts +88 -0
  1045. package/dist/core/workflows/agent-runner.d.ts.map +1 -0
  1046. package/dist/core/workflows/agent-runner.js +312 -0
  1047. package/dist/core/workflows/agent-runner.js.map +1 -0
  1048. package/dist/core/workflows/builtins.d.ts +41 -0
  1049. package/dist/core/workflows/builtins.d.ts.map +1 -0
  1050. package/dist/core/workflows/builtins.js +283 -0
  1051. package/dist/core/workflows/builtins.js.map +1 -0
  1052. package/dist/core/workflows/contrato/esquema.d.ts +32 -0
  1053. package/dist/core/workflows/contrato/esquema.d.ts.map +1 -0
  1054. package/dist/core/workflows/contrato/esquema.js +25 -0
  1055. package/dist/core/workflows/contrato/esquema.js.map +1 -0
  1056. package/dist/core/workflows/contrato/reparar-argumentos.d.ts +69 -0
  1057. package/dist/core/workflows/contrato/reparar-argumentos.d.ts.map +1 -0
  1058. package/dist/core/workflows/contrato/reparar-argumentos.js +117 -0
  1059. package/dist/core/workflows/contrato/reparar-argumentos.js.map +1 -0
  1060. package/dist/core/workflows/contrato/validador.d.ts +30 -0
  1061. package/dist/core/workflows/contrato/validador.d.ts.map +1 -0
  1062. package/dist/core/workflows/contrato/validador.js +56 -0
  1063. package/dist/core/workflows/contrato/validador.js.map +1 -0
  1064. package/dist/core/workflows/contrato/yield.d.ts +65 -0
  1065. package/dist/core/workflows/contrato/yield.d.ts.map +1 -0
  1066. package/dist/core/workflows/contrato/yield.js +80 -0
  1067. package/dist/core/workflows/contrato/yield.js.map +1 -0
  1068. package/dist/core/workflows/goal-engine/engine.d.ts +151 -0
  1069. package/dist/core/workflows/goal-engine/engine.d.ts.map +1 -0
  1070. package/dist/core/workflows/goal-engine/engine.js +503 -0
  1071. package/dist/core/workflows/goal-engine/engine.js.map +1 -0
  1072. package/dist/core/workflows/goal-engine/errors.d.ts +7 -0
  1073. package/dist/core/workflows/goal-engine/errors.d.ts.map +1 -0
  1074. package/dist/core/workflows/goal-engine/errors.js +9 -0
  1075. package/dist/core/workflows/goal-engine/errors.js.map +1 -0
  1076. package/dist/core/workflows/goal-engine/index.d.ts +13 -0
  1077. package/dist/core/workflows/goal-engine/index.d.ts.map +1 -0
  1078. package/dist/core/workflows/goal-engine/index.js +8 -0
  1079. package/dist/core/workflows/goal-engine/index.js.map +1 -0
  1080. package/dist/core/workflows/goal-engine/persistence.d.ts +31 -0
  1081. package/dist/core/workflows/goal-engine/persistence.d.ts.map +1 -0
  1082. package/dist/core/workflows/goal-engine/persistence.js +145 -0
  1083. package/dist/core/workflows/goal-engine/persistence.js.map +1 -0
  1084. package/dist/core/workflows/goal-engine/prompts.d.ts +37 -0
  1085. package/dist/core/workflows/goal-engine/prompts.d.ts.map +1 -0
  1086. package/dist/core/workflows/goal-engine/prompts.js +131 -0
  1087. package/dist/core/workflows/goal-engine/prompts.js.map +1 -0
  1088. package/dist/core/workflows/goal-engine/state.d.ts +41 -0
  1089. package/dist/core/workflows/goal-engine/state.d.ts.map +1 -0
  1090. package/dist/core/workflows/goal-engine/state.js +397 -0
  1091. package/dist/core/workflows/goal-engine/state.js.map +1 -0
  1092. package/dist/core/workflows/goal-engine/tools.d.ts +31 -0
  1093. package/dist/core/workflows/goal-engine/tools.d.ts.map +1 -0
  1094. package/dist/core/workflows/goal-engine/tools.js +211 -0
  1095. package/dist/core/workflows/goal-engine/tools.js.map +1 -0
  1096. package/dist/core/workflows/goal-engine/types.d.ts +286 -0
  1097. package/dist/core/workflows/goal-engine/types.d.ts.map +1 -0
  1098. package/dist/core/workflows/goal-engine/types.js +17 -0
  1099. package/dist/core/workflows/goal-engine/types.js.map +1 -0
  1100. package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts +23 -0
  1101. package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts.map +1 -0
  1102. package/dist/core/workflows/goal-engine/worktree-fingerprint.js +72 -0
  1103. package/dist/core/workflows/goal-engine/worktree-fingerprint.js.map +1 -0
  1104. package/dist/core/workflows/graph-sync.d.ts +67 -0
  1105. package/dist/core/workflows/graph-sync.d.ts.map +1 -0
  1106. package/dist/core/workflows/graph-sync.js +188 -0
  1107. package/dist/core/workflows/graph-sync.js.map +1 -0
  1108. package/dist/core/workflows/graph.d.ts +143 -0
  1109. package/dist/core/workflows/graph.d.ts.map +1 -0
  1110. package/dist/core/workflows/graph.js +319 -0
  1111. package/dist/core/workflows/graph.js.map +1 -0
  1112. package/dist/core/workflows/index.d.ts +26 -0
  1113. package/dist/core/workflows/index.d.ts.map +1 -0
  1114. package/dist/core/workflows/index.js +18 -0
  1115. package/dist/core/workflows/index.js.map +1 -0
  1116. package/dist/core/workflows/journal.d.ts +68 -0
  1117. package/dist/core/workflows/journal.d.ts.map +1 -0
  1118. package/dist/core/workflows/journal.js +83 -0
  1119. package/dist/core/workflows/journal.js.map +1 -0
  1120. package/dist/core/workflows/manager.d.ts +122 -0
  1121. package/dist/core/workflows/manager.d.ts.map +1 -0
  1122. package/dist/core/workflows/manager.js +351 -0
  1123. package/dist/core/workflows/manager.js.map +1 -0
  1124. package/dist/core/workflows/resolve-script.d.ts +35 -0
  1125. package/dist/core/workflows/resolve-script.d.ts.map +1 -0
  1126. package/dist/core/workflows/resolve-script.js +66 -0
  1127. package/dist/core/workflows/resolve-script.js.map +1 -0
  1128. package/dist/core/workflows/runtime.d.ts +62 -0
  1129. package/dist/core/workflows/runtime.d.ts.map +1 -0
  1130. package/dist/core/workflows/runtime.js +380 -0
  1131. package/dist/core/workflows/runtime.js.map +1 -0
  1132. package/dist/core/workflows/save-as-skill.d.ts +27 -0
  1133. package/dist/core/workflows/save-as-skill.d.ts.map +1 -0
  1134. package/dist/core/workflows/save-as-skill.js +54 -0
  1135. package/dist/core/workflows/save-as-skill.js.map +1 -0
  1136. package/dist/core/workflows/shared-store.d.ts +31 -0
  1137. package/dist/core/workflows/shared-store.d.ts.map +1 -0
  1138. package/dist/core/workflows/shared-store.js +80 -0
  1139. package/dist/core/workflows/shared-store.js.map +1 -0
  1140. package/dist/core/workflows/subagent-host.d.ts +50 -0
  1141. package/dist/core/workflows/subagent-host.d.ts.map +1 -0
  1142. package/dist/core/workflows/subagent-host.js +225 -0
  1143. package/dist/core/workflows/subagent-host.js.map +1 -0
  1144. package/dist/core/workflows/tool-workflow.d.ts +22 -0
  1145. package/dist/core/workflows/tool-workflow.d.ts.map +1 -0
  1146. package/dist/core/workflows/tool-workflow.js +120 -0
  1147. package/dist/core/workflows/tool-workflow.js.map +1 -0
  1148. package/dist/core/workflows/types.d.ts +191 -0
  1149. package/dist/core/workflows/types.d.ts.map +1 -0
  1150. package/dist/core/workflows/types.js +26 -0
  1151. package/dist/core/workflows/types.js.map +1 -0
  1152. package/dist/core/workflows/worktree.d.ts +42 -0
  1153. package/dist/core/workflows/worktree.d.ts.map +1 -0
  1154. package/dist/core/workflows/worktree.js +107 -0
  1155. package/dist/core/workflows/worktree.js.map +1 -0
  1156. package/dist/extensions/llama/index.d.ts.map +1 -1
  1157. package/dist/extensions/llama/index.js +2 -0
  1158. package/dist/extensions/llama/index.js.map +1 -1
  1159. package/dist/extensions/llama/provider.d.ts.map +1 -1
  1160. package/dist/extensions/llama/provider.js +6 -2
  1161. package/dist/extensions/llama/provider.js.map +1 -1
  1162. package/dist/extensions/remoto/index.d.ts +22 -0
  1163. package/dist/extensions/remoto/index.d.ts.map +1 -0
  1164. package/dist/extensions/remoto/index.js +54 -0
  1165. package/dist/extensions/remoto/index.js.map +1 -0
  1166. package/dist/index.d.ts +1 -13
  1167. package/dist/index.d.ts.map +1 -1
  1168. package/dist/index.js +7 -13
  1169. package/dist/index.js.map +1 -1
  1170. package/dist/main.d.ts +4 -0
  1171. package/dist/main.d.ts.map +1 -1
  1172. package/dist/main.js +26 -15
  1173. package/dist/main.js.map +1 -1
  1174. package/dist/migrations.d.ts.map +1 -1
  1175. package/dist/migrations.js +4 -3
  1176. package/dist/migrations.js.map +1 -1
  1177. package/dist/modes/acp/acp-mode.d.ts +42 -0
  1178. package/dist/modes/acp/acp-mode.d.ts.map +1 -0
  1179. package/dist/modes/acp/acp-mode.js +190 -0
  1180. package/dist/modes/acp/acp-mode.js.map +1 -0
  1181. package/dist/modes/acp/events.d.ts +74 -0
  1182. package/dist/modes/acp/events.d.ts.map +1 -0
  1183. package/dist/modes/acp/events.js +116 -0
  1184. package/dist/modes/acp/events.js.map +1 -0
  1185. package/dist/modes/interactive/components/home-screen.d.ts.map +1 -1
  1186. package/dist/modes/interactive/components/home-screen.js +2 -2
  1187. package/dist/modes/interactive/components/home-screen.js.map +1 -1
  1188. package/dist/modes/interactive/components/model-selector.d.ts +9 -3
  1189. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  1190. package/dist/modes/interactive/components/model-selector.js +56 -12
  1191. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  1192. package/dist/modes/interactive/components/prompt-optimization.d.ts +16 -0
  1193. package/dist/modes/interactive/components/prompt-optimization.d.ts.map +1 -0
  1194. package/dist/modes/interactive/components/prompt-optimization.js +46 -0
  1195. package/dist/modes/interactive/components/prompt-optimization.js.map +1 -0
  1196. package/dist/modes/interactive/components/settings-selector.d.ts +19 -2
  1197. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  1198. package/dist/modes/interactive/components/settings-selector.js +180 -56
  1199. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  1200. package/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
  1201. package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
  1202. package/dist/modes/interactive/components/settings-submenu.js +165 -0
  1203. package/dist/modes/interactive/components/settings-submenu.js.map +1 -0
  1204. package/dist/modes/interactive/components/thinking-selector.d.ts +15 -3
  1205. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  1206. package/dist/modes/interactive/components/thinking-selector.js +74 -17
  1207. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  1208. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  1209. package/dist/modes/interactive/external-editor.js +2 -1
  1210. package/dist/modes/interactive/external-editor.js.map +1 -1
  1211. package/dist/modes/interactive/interactive-mode.d.ts +21 -1
  1212. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  1213. package/dist/modes/interactive/interactive-mode.js +709 -75
  1214. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  1215. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  1216. package/dist/modes/interactive/theme/theme.js +4 -3
  1217. package/dist/modes/interactive/theme/theme.js.map +1 -1
  1218. package/dist/modes/json-event.d.ts +16 -13
  1219. package/dist/modes/json-event.d.ts.map +1 -1
  1220. package/dist/modes/json-event.js +20 -6
  1221. package/dist/modes/json-event.js.map +1 -1
  1222. package/dist/modes/print-mode.d.ts.map +1 -1
  1223. package/dist/modes/print-mode.js +11 -0
  1224. package/dist/modes/print-mode.js.map +1 -1
  1225. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  1226. package/dist/modes/rpc/rpc-mode.js +173 -0
  1227. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  1228. package/dist/modes/rpc/rpc-types.d.ts +29 -0
  1229. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  1230. package/dist/modes/rpc/rpc-types.js.map +1 -1
  1231. package/dist/package-manager-cli.d.ts.map +1 -1
  1232. package/dist/package-manager-cli.js +27 -5
  1233. package/dist/package-manager-cli.js.map +1 -1
  1234. package/dist/server/attach.d.ts +56 -0
  1235. package/dist/server/attach.d.ts.map +1 -0
  1236. package/dist/server/attach.js +130 -0
  1237. package/dist/server/attach.js.map +1 -0
  1238. package/dist/server/extension-ops.d.ts +40 -0
  1239. package/dist/server/extension-ops.d.ts.map +1 -0
  1240. package/dist/server/extension-ops.js +146 -0
  1241. package/dist/server/extension-ops.js.map +1 -0
  1242. package/dist/server/pi-server-service.d.ts +85 -0
  1243. package/dist/server/pi-server-service.d.ts.map +1 -0
  1244. package/dist/server/pi-server-service.js +213 -0
  1245. package/dist/server/pi-server-service.js.map +1 -0
  1246. package/dist/server/scheduler-tick.d.ts +32 -0
  1247. package/dist/server/scheduler-tick.d.ts.map +1 -0
  1248. package/dist/server/scheduler-tick.js +47 -0
  1249. package/dist/server/scheduler-tick.js.map +1 -0
  1250. package/dist/server/serve.d.ts +25 -0
  1251. package/dist/server/serve.d.ts.map +1 -0
  1252. package/dist/server/serve.js +83 -0
  1253. package/dist/server/serve.js.map +1 -0
  1254. package/dist/server/transcript.d.ts +38 -0
  1255. package/dist/server/transcript.d.ts.map +1 -0
  1256. package/dist/server/transcript.js +176 -0
  1257. package/dist/server/transcript.js.map +1 -0
  1258. package/dist/skills/ada-engine/SKILL.md +153 -0
  1259. package/dist/skills/skill-creator/SKILL.md +90 -0
  1260. package/dist/telegram/api.d.ts +75 -0
  1261. package/dist/telegram/api.d.ts.map +1 -0
  1262. package/dist/telegram/api.js +104 -0
  1263. package/dist/telegram/api.js.map +1 -0
  1264. package/dist/telegram/bridge.d.ts +85 -0
  1265. package/dist/telegram/bridge.d.ts.map +1 -0
  1266. package/dist/telegram/bridge.js +182 -0
  1267. package/dist/telegram/bridge.js.map +1 -0
  1268. package/dist/telegram/journal.d.ts +67 -0
  1269. package/dist/telegram/journal.d.ts.map +1 -0
  1270. package/dist/telegram/journal.js +119 -0
  1271. package/dist/telegram/journal.js.map +1 -0
  1272. package/dist/telegram/servidor.d.ts +15 -0
  1273. package/dist/telegram/servidor.d.ts.map +1 -0
  1274. package/dist/telegram/servidor.js +74 -0
  1275. package/dist/telegram/servidor.js.map +1 -0
  1276. package/dist/utils/frontmatter.d.ts.map +1 -1
  1277. package/dist/utils/frontmatter.js +2 -1
  1278. package/dist/utils/frontmatter.js.map +1 -1
  1279. package/dist/utils/management-http.d.ts +5 -3
  1280. package/dist/utils/management-http.d.ts.map +1 -1
  1281. package/dist/utils/management-http.js +14 -10
  1282. package/dist/utils/management-http.js.map +1 -1
  1283. package/dist/utils/shell.d.ts +11 -0
  1284. package/dist/utils/shell.d.ts.map +1 -1
  1285. package/dist/utils/shell.js +11 -0
  1286. package/dist/utils/shell.js.map +1 -1
  1287. package/dist/utils/text.d.ts +8 -0
  1288. package/dist/utils/text.d.ts.map +1 -0
  1289. package/dist/utils/text.js +9 -0
  1290. package/dist/utils/text.js.map +1 -0
  1291. package/dist/utils/version-check.d.ts.map +1 -1
  1292. package/dist/utils/version-check.js +29 -1
  1293. package/dist/utils/version-check.js.map +1 -1
  1294. package/docs/compaction.md +25 -10
  1295. package/docs/compliance.md +241 -0
  1296. package/docs/containerization.md +24 -24
  1297. package/docs/custom-provider.md +15 -12
  1298. package/docs/development.md +47 -10
  1299. package/docs/docs.json +14 -2
  1300. package/docs/environment-variables.md +20 -17
  1301. package/docs/extensions.md +62 -51
  1302. package/docs/index.md +15 -21
  1303. package/docs/json.md +10 -5
  1304. package/docs/keybindings.md +5 -5
  1305. package/docs/llama-cpp.md +9 -7
  1306. package/docs/models.md +18 -12
  1307. package/docs/packages.md +45 -45
  1308. package/docs/prompt-templates.md +5 -5
  1309. package/docs/providers.md +12 -12
  1310. package/docs/quickstart.md +39 -39
  1311. package/docs/rpc.md +21 -15
  1312. package/docs/sdk.md +38 -38
  1313. package/docs/security.md +26 -21
  1314. package/docs/session-format.md +7 -7
  1315. package/docs/sessions.md +14 -14
  1316. package/docs/settings.md +47 -22
  1317. package/docs/shell-aliases.md +2 -2
  1318. package/docs/skills.md +14 -13
  1319. package/docs/terminal-setup.md +14 -14
  1320. package/docs/termux.md +7 -7
  1321. package/docs/themes.md +11 -11
  1322. package/docs/tmux.md +4 -4
  1323. package/docs/tui.md +3 -3
  1324. package/docs/usage.md +54 -54
  1325. package/docs/windows.md +2 -2
  1326. package/examples/extensions/border-status-editor.ts +1 -1
  1327. package/examples/extensions/git-checkpoint.ts +2 -2
  1328. package/examples/extensions/notify.ts +3 -1
  1329. package/examples/extensions/subagent/README.md +1 -1
  1330. package/examples/extensions/subagent/index.ts +6 -1
  1331. package/examples/extensions/titlebar-spinner.ts +1 -1
  1332. package/examples/rpc-extension-ui.ts +1 -1
  1333. package/examples/sdk/06-extensions.ts +1 -1
  1334. package/examples/sdk/12-full-control.ts +9 -0
  1335. package/examples/sdk/README.md +1 -1
  1336. package/npm-shrinkwrap.json +35 -261
  1337. package/package.json +9 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal.js","sourceRoot":"","sources":["../../../src/core/undo/journal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAkBvC,gFAA+E;AAC/E,IAAI,MAAM,GAAuB,IAAI,CAAC;AAEtC,SAAS,aAAa,CAAC,QAAgB,EAAE,GAAW,EAAU;IAC7D,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC;AAAA,CAChD;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,GAAW,EAAE,KAAa,EAAU;IAChF,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAChD,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAChE,MAAM,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;IAClD,KAAK,KAAK,CAAC;IACX,OAAO,KAAK,CAAC;AAAA,CACb;AAED,MAAM,UAAU,WAAW,GAAS;IACnC,MAAM,GAAG,IAAI,CAAC;AAAA,CACd;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB,EAAQ;IAC1D,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;QAAE,OAAO;IACtD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE/B,IAAI,OAAsB,CAAC;IAC3B,IAAI,CAAC;QACJ,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9B,OAAO,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACpF,CAAC;aAAM,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,GAAG,cAAc,EAAE,CAAC;YACxD,OAAO,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACnG,CAAC;aAAM,CAAC;YACP,OAAO,GAAG;gBACT,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC;gBACzC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;aACd,CAAC;QACH,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,0EAAyE;QACzE,0DAAyD;QACzD,OAAO,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACnG,CAAC;IACD,IAAI,CAAC;QACJ,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACpF,CAAC;IAAC,MAAM,CAAC;QACR,yEAAwE;QACxE,8BAA6B;IAC9B,CAAC;AAAA,CACD;AAED,SAAS,YAAY,CAAC,UAAkB,EAAmB;IAC1D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAClE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YAAE,SAAS;QAC5B,IAAI,CAAC;YACJ,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAkB,CAAC,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACR,uDAAsD;QACvD,CAAC;IACF,CAAC;IACD,OAAO,QAAQ,CAAC;AAAA,CAChB;AAUD;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,QAAgB,EAAE,GAAW,EAAqB;IAC1E,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IACtC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAE9F,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEtE,gEAAgE;IAChE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAChD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,CAAC;QACJ,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC5B,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;gBACvB,mDAAkD;gBAClD,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;oBAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC3C,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACP,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChD,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACxC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QACF,CAAC;IACF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,MAAM,EAAE,CAAC;YACxC,IAAI,CAAC;gBACJ,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;oBACxB,IAAI,UAAU,CAAC,IAAI,CAAC;wBAAE,UAAU,CAAC,IAAI,CAAC,CAAC;gBACxC,CAAC;qBAAM,CAAC;oBACP,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;gBACxC,CAAC;YACF,CAAC;YAAC,MAAM,CAAC;gBACR,0DAAwD;YACzD,CAAC;QACF,CAAC;QACD,OAAO;YACN,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,EAAE;YACZ,QAAQ;YACR,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC7D,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,uBAAuB;IACvB,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;IAC7D,aAAa,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAEpG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAAA,CAC1D;AAED,kDAAgD;AAChD,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,GAAW,EAAmB;IAC7E,MAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IACtC,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;AAAA,CAC9E","sourcesContent":["/**\n * Diario para deshacer los cambios de ficheros de un turno.\n *\n * Guarda el estado ANTERIOR de cada fichero justo antes de tocarlo, agrupado\n * por turno. `deshacer()` devuelve todos los ficheros del último turno a la vez,\n * o ninguno: revertir la mitad de un cambio deja el repositorio en un estado que\n * el agente no produjo nunca y que nadie ha revisado.\n *\n * El punto de captura es `withFileMutationQueue`, por donde pasan tanto `edit`\n * como `write`. Engancharse ahí cubre las dos herramientas con un solo sitio, y\n * cualquier herramienta futura que escriba ficheros entra gratis.\n */\n\nimport { createHash } from \"node:crypto\";\nimport { appendFileSync, existsSync, mkdirSync, readFileSync, statSync, unlinkSync, writeFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\n\n/**\n * Un fichero más grande que esto no se fotografía.\n *\n * Se registra igualmente, marcado, para poder DECIRLO al deshacer. Callarlo\n * sería peor: el usuario creería que revirtió todo cuando faltó un fichero.\n */\nconst MAX_FOTO_BYTES = 4 * 1024 * 1024;\n\nexport interface EntradaDiario {\n\tturno: number;\n\tpath: string;\n\t/** Contenido anterior; `null` si el fichero no existía (lo creó el turno). */\n\tprevio: string | null;\n\t/** `true` si era demasiado grande para fotografiar. */\n\tomitido?: boolean;\n\tts: number;\n}\n\ninterface TurnoActivo {\n\trutaDiario: string;\n\tturno: number;\n\tvistos: Set<string>;\n}\n\n/** El turno abierto ahora mismo. La cola de mutaciones no conoce la sesión. */\nlet activo: TurnoActivo | null = null;\n\nfunction rutaDelDiario(agentDir: string, cwd: string): string {\n\tconst clave = createHash(\"sha256\").update(cwd).digest(\"hex\").slice(0, 16);\n\treturn join(agentDir, \"undo\", `${clave}.jsonl`);\n}\n\n/**\n * Abre un turno nuevo. Todo lo que se escriba a partir de aquí se agrupa junto.\n *\n * El número de turno sale del diario, no de un contador en memoria: si el\n * proceso se reinicia a mitad de sesión, el turno siguiente no puede reutilizar\n * un número y mezclarse con cambios viejos.\n */\nexport function abrirTurno(agentDir: string, cwd: string, ahora: number): number {\n\tconst rutaDiario = rutaDelDiario(agentDir, cwd);\n\tmkdirSync(dirname(rutaDiario), { recursive: true, mode: 0o700 });\n\tconst turno = (leerEntradas(rutaDiario).at(-1)?.turno ?? 0) + 1;\n\tactivo = { rutaDiario, turno, vistos: new Set() };\n\tvoid ahora;\n\treturn turno;\n}\n\nexport function cerrarTurno(): void {\n\tactivo = null;\n}\n\n/**\n * Fotografía un fichero antes de que lo toquen.\n *\n * Solo la PRIMERA vez dentro del turno: si el agente edita el mismo fichero\n * cinco veces, deshacer debe devolverlo a como estaba antes de las cinco, no\n * antes de la última.\n */\nexport function registrarPrevio(rutaFichero: string): void {\n\tif (!activo || activo.vistos.has(rutaFichero)) return;\n\tactivo.vistos.add(rutaFichero);\n\n\tlet entrada: EntradaDiario;\n\ttry {\n\t\tif (!existsSync(rutaFichero)) {\n\t\t\tentrada = { turno: activo.turno, path: rutaFichero, previo: null, ts: Date.now() };\n\t\t} else if (statSync(rutaFichero).size > MAX_FOTO_BYTES) {\n\t\t\tentrada = { turno: activo.turno, path: rutaFichero, previo: null, omitido: true, ts: Date.now() };\n\t\t} else {\n\t\t\tentrada = {\n\t\t\t\tturno: activo.turno,\n\t\t\t\tpath: rutaFichero,\n\t\t\t\tprevio: readFileSync(rutaFichero, \"utf8\"),\n\t\t\t\tts: Date.now(),\n\t\t\t};\n\t\t}\n\t} catch {\n\t\t// Un fichero ilegible no puede impedir la edición; se marca omitido para\n\t\t// que deshacer lo diga en vez de fingir que lo revirtió.\n\t\tentrada = { turno: activo.turno, path: rutaFichero, previo: null, omitido: true, ts: Date.now() };\n\t}\n\ttry {\n\t\tappendFileSync(activo.rutaDiario, `${JSON.stringify(entrada)}\\n`, { mode: 0o600 });\n\t} catch {\n\t\t// El diario es una comodidad, no una garantía: si no se puede escribir,\n\t\t// la edición sigue adelante.\n\t}\n}\n\nfunction leerEntradas(rutaDiario: string): EntradaDiario[] {\n\tif (!existsSync(rutaDiario)) return [];\n\tconst entradas: EntradaDiario[] = [];\n\tfor (const linea of readFileSync(rutaDiario, \"utf8\").split(\"\\n\")) {\n\t\tif (!linea.trim()) continue;\n\t\ttry {\n\t\t\tentradas.push(JSON.parse(linea) as EntradaDiario);\n\t\t} catch {\n\t\t\t// Una línea corrupta no invalida el resto del diario.\n\t\t}\n\t}\n\treturn entradas;\n}\n\nexport interface ResultadoDeshacer {\n\tturno: number | null;\n\trestaurados: string[];\n\tborrados: string[];\n\tomitidos: string[];\n\terror?: string;\n}\n\n/**\n * Deshace el último turno con cambios. Todo o nada.\n *\n * Antes de escribir nada se fotografía el estado actual de cada objetivo; si\n * una escritura falla a mitad, se devuelven todas atrás. Sin eso, un fallo de\n * permisos en el tercer fichero dejaría dos revertidos y tres no — un estado\n * que nadie escribió ni revisó.\n */\nexport function deshacer(agentDir: string, cwd: string): ResultadoDeshacer {\n\tconst rutaDiario = rutaDelDiario(agentDir, cwd);\n\tconst entradas = leerEntradas(rutaDiario);\n\tconst ultimo = entradas.at(-1)?.turno;\n\tif (ultimo === undefined) return { turno: null, restaurados: [], borrados: [], omitidos: [] };\n\n\tconst delTurno = entradas.filter((e) => e.turno === ultimo);\n\tconst aplicables = delTurno.filter((e) => !e.omitido);\n\tconst omitidos = delTurno.filter((e) => e.omitido).map((e) => e.path);\n\n\t// Foto de seguridad para poder retroceder si algo peta a mitad.\n\tconst seguro = new Map<string, string | null>();\n\tfor (const e of aplicables) {\n\t\tseguro.set(e.path, existsSync(e.path) ? readFileSync(e.path, \"utf8\") : null);\n\t}\n\n\tconst restaurados: string[] = [];\n\tconst borrados: string[] = [];\n\ttry {\n\t\tfor (const e of aplicables) {\n\t\t\tif (e.previo === null) {\n\t\t\t\t// El turno creó el fichero: deshacer es borrarlo.\n\t\t\t\tif (existsSync(e.path)) unlinkSync(e.path);\n\t\t\t\tborrados.push(e.path);\n\t\t\t} else {\n\t\t\t\tmkdirSync(dirname(e.path), { recursive: true });\n\t\t\t\twriteFileSync(e.path, e.previo, \"utf8\");\n\t\t\t\trestaurados.push(e.path);\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tfor (const [ruta, contenido] of seguro) {\n\t\t\ttry {\n\t\t\t\tif (contenido === null) {\n\t\t\t\t\tif (existsSync(ruta)) unlinkSync(ruta);\n\t\t\t\t} else {\n\t\t\t\t\twriteFileSync(ruta, contenido, \"utf8\");\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// Poco más se puede hacer; el mensaje de error lo dirá.\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tturno: ultimo,\n\t\t\trestaurados: [],\n\t\t\tborrados: [],\n\t\t\tomitidos,\n\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t};\n\t}\n\n\t// El turno deshecho sale del diario: deshacer dos veces debe ir al anterior,\n\t// no repetir el mismo.\n\tconst restantes = entradas.filter((e) => e.turno !== ultimo);\n\twriteFileSync(rutaDiario, restantes.map((e) => `${JSON.stringify(e)}\\n`).join(\"\"), { mode: 0o600 });\n\n\treturn { turno: ultimo, restaurados, borrados, omitidos };\n}\n\n/** Qué haría un `undo` sin llegar a hacerlo. */\nexport function previsualizar(agentDir: string, cwd: string): EntradaDiario[] {\n\tconst entradas = leerEntradas(rutaDelDiario(agentDir, cwd));\n\tconst ultimo = entradas.at(-1)?.turno;\n\treturn ultimo === undefined ? [] : entradas.filter((e) => e.turno === ultimo);\n}\n"]}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * `audit://<n>` — las últimas `n` entradas del libro de sesión
3
+ * (`audit/libro.ts`), con el veredicto de la cadena de hashes.
4
+ *
5
+ * El veredicto va SIEMPRE, no solo cuando algo falla: "válida" es tan
6
+ * informativo como "alterada" para quien pregunta qué hizo el agente.
7
+ */
8
+ import type { LibroDeSesion } from "../audit/libro.ts";
9
+ export declare function leerAuditoria(libro: LibroDeSesion, resto: string): Promise<string>;
10
+ //# sourceMappingURL=auditoria.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auditoria.d.ts","sourceRoot":"","sources":["../../../src/core/urls-internas/auditoria.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAavD,wBAAsB,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BxF","sourcesContent":["/**\n * `audit://<n>` — las últimas `n` entradas del libro de sesión\n * (`audit/libro.ts`), con el veredicto de la cadena de hashes.\n *\n * El veredicto va SIEMPRE, no solo cuando algo falla: \"válida\" es tan\n * informativo como \"alterada\" para quien pregunta qué hizo el agente.\n */\n\nimport type { LibroDeSesion } from \"../audit/libro.ts\";\n\nconst LIMITE_DEFECTO = 20;\n\nfunction resumenSuceso(suceso: Record<string, unknown>): string {\n\tconst tipo = String(suceso.tipo ?? \"?\");\n\tconst resto = Object.entries(suceso)\n\t\t.filter(([k]) => k !== \"tipo\")\n\t\t.map(([k, v]) => `${k}=${JSON.stringify(v)}`)\n\t\t.join(\" \");\n\treturn resto ? `${tipo} ${resto}` : tipo;\n}\n\nexport async function leerAuditoria(libro: LibroDeSesion, resto: string): Promise<string> {\n\tconst texto = resto.trim();\n\tlet limite = LIMITE_DEFECTO;\n\tif (texto) {\n\t\tlimite = Number.parseInt(texto, 10);\n\t\tif (!Number.isFinite(limite) || limite <= 0) {\n\t\t\tthrow new Error(`audit://: \"${resto}\" no es un número positivo. Usa audit://<n>, por ejemplo audit://5.`);\n\t\t}\n\t}\n\n\tconst entradas = await libro.leer(limite);\n\tconst veredicto = await libro.verificar();\n\t// El caso «falta un fichero entero» no tiene `alteradaEn`, porque no hay\n\t// ninguna entrada que no cuadre: lo que no cuadra es el inventario. Sin esta\n\t// rama el texto decía «cadena ALTERADA en undefined», que es la peor versión\n\t// de un aviso — grita y no dice qué.\n\tconst cadena = veredicto.faltan?.length\n\t\t? `FALTAN ${veredicto.faltan.length} fichero(s) del libro con ${veredicto.faltan.reduce((n, f) => n + f.entradas, 0)} entrada(s), borrados de sesion/ y recuperados del índice`\n\t\t: veredicto.valido\n\t\t\t? `cadena válida (${veredicto.comprobadas} entrada(s) comprobada(s))`\n\t\t\t: `cadena ALTERADA${veredicto.alteradaEn ? ` en ${veredicto.alteradaEn}` : \"\"} (${veredicto.comprobadas} entrada(s) válidas antes de eso${veredicto.motivo ? `; ${veredicto.motivo}` : \"\"})`;\n\n\tif (entradas.length === 0) return `audit://${resto}: el libro de sesión está vacío. ${cadena}.`;\n\n\tconst lineas = entradas.map((e) => `#${e.seq} ${e.ts} ${resumenSuceso(e.suceso)}`);\n\treturn `${entradas.length} entrada(s) (de más reciente a más antigua), ${cadena}:\\n${lineas.join(\"\\n\")}`;\n}\n"]}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * `audit://<n>` — las últimas `n` entradas del libro de sesión
3
+ * (`audit/libro.ts`), con el veredicto de la cadena de hashes.
4
+ *
5
+ * El veredicto va SIEMPRE, no solo cuando algo falla: "válida" es tan
6
+ * informativo como "alterada" para quien pregunta qué hizo el agente.
7
+ */
8
+ const LIMITE_DEFECTO = 20;
9
+ function resumenSuceso(suceso) {
10
+ const tipo = String(suceso.tipo ?? "?");
11
+ const resto = Object.entries(suceso)
12
+ .filter(([k]) => k !== "tipo")
13
+ .map(([k, v]) => `${k}=${JSON.stringify(v)}`)
14
+ .join(" ");
15
+ return resto ? `${tipo} ${resto}` : tipo;
16
+ }
17
+ export async function leerAuditoria(libro, resto) {
18
+ const texto = resto.trim();
19
+ let limite = LIMITE_DEFECTO;
20
+ if (texto) {
21
+ limite = Number.parseInt(texto, 10);
22
+ if (!Number.isFinite(limite) || limite <= 0) {
23
+ throw new Error(`audit://: "${resto}" no es un número positivo. Usa audit://<n>, por ejemplo audit://5.`);
24
+ }
25
+ }
26
+ const entradas = await libro.leer(limite);
27
+ const veredicto = await libro.verificar();
28
+ // El caso «falta un fichero entero» no tiene `alteradaEn`, porque no hay
29
+ // ninguna entrada que no cuadre: lo que no cuadra es el inventario. Sin esta
30
+ // rama el texto decía «cadena ALTERADA en undefined», que es la peor versión
31
+ // de un aviso — grita y no dice qué.
32
+ const cadena = veredicto.faltan?.length
33
+ ? `FALTAN ${veredicto.faltan.length} fichero(s) del libro con ${veredicto.faltan.reduce((n, f) => n + f.entradas, 0)} entrada(s), borrados de sesion/ y recuperados del índice`
34
+ : veredicto.valido
35
+ ? `cadena válida (${veredicto.comprobadas} entrada(s) comprobada(s))`
36
+ : `cadena ALTERADA${veredicto.alteradaEn ? ` en ${veredicto.alteradaEn}` : ""} (${veredicto.comprobadas} entrada(s) válidas antes de eso${veredicto.motivo ? `; ${veredicto.motivo}` : ""})`;
37
+ if (entradas.length === 0)
38
+ return `audit://${resto}: el libro de sesión está vacío. ${cadena}.`;
39
+ const lineas = entradas.map((e) => `#${e.seq} ${e.ts} ${resumenSuceso(e.suceso)}`);
40
+ return `${entradas.length} entrada(s) (de más reciente a más antigua), ${cadena}:\n${lineas.join("\n")}`;
41
+ }
42
+ //# sourceMappingURL=auditoria.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auditoria.js","sourceRoot":"","sources":["../../../src/core/urls-internas/auditoria.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B,SAAS,aAAa,CAAC,MAA+B,EAAU;IAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SAClC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC;SAC7B,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5C,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAAA,CACzC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAoB,EAAE,KAAa,EAAmB;IACzF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,MAAM,GAAG,cAAc,CAAC;IAC5B,IAAI,KAAK,EAAE,CAAC;QACX,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,sEAAqE,CAAC,CAAC;QAC3G,CAAC;IACF,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC;IAC1C,2EAAyE;IACzE,6EAA6E;IAC7E,iFAA6E;IAC7E,wCAAqC;IACrC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM;QACtC,CAAC,CAAC,UAAU,SAAS,CAAC,MAAM,CAAC,MAAM,6BAA6B,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,4DAA2D;QAC/K,CAAC,CAAC,SAAS,CAAC,MAAM;YACjB,CAAC,CAAC,mBAAkB,SAAS,CAAC,WAAW,4BAA4B;YACrE,CAAC,CAAC,kBAAkB,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,WAAW,oCAAmC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IAE/L,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,WAAW,KAAK,uCAAoC,MAAM,GAAG,CAAC;IAEhG,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnF,OAAO,GAAG,QAAQ,CAAC,MAAM,kDAAgD,MAAM,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAAA,CACzG","sourcesContent":["/**\n * `audit://<n>` — las últimas `n` entradas del libro de sesión\n * (`audit/libro.ts`), con el veredicto de la cadena de hashes.\n *\n * El veredicto va SIEMPRE, no solo cuando algo falla: \"válida\" es tan\n * informativo como \"alterada\" para quien pregunta qué hizo el agente.\n */\n\nimport type { LibroDeSesion } from \"../audit/libro.ts\";\n\nconst LIMITE_DEFECTO = 20;\n\nfunction resumenSuceso(suceso: Record<string, unknown>): string {\n\tconst tipo = String(suceso.tipo ?? \"?\");\n\tconst resto = Object.entries(suceso)\n\t\t.filter(([k]) => k !== \"tipo\")\n\t\t.map(([k, v]) => `${k}=${JSON.stringify(v)}`)\n\t\t.join(\" \");\n\treturn resto ? `${tipo} ${resto}` : tipo;\n}\n\nexport async function leerAuditoria(libro: LibroDeSesion, resto: string): Promise<string> {\n\tconst texto = resto.trim();\n\tlet limite = LIMITE_DEFECTO;\n\tif (texto) {\n\t\tlimite = Number.parseInt(texto, 10);\n\t\tif (!Number.isFinite(limite) || limite <= 0) {\n\t\t\tthrow new Error(`audit://: \"${resto}\" no es un número positivo. Usa audit://<n>, por ejemplo audit://5.`);\n\t\t}\n\t}\n\n\tconst entradas = await libro.leer(limite);\n\tconst veredicto = await libro.verificar();\n\t// El caso «falta un fichero entero» no tiene `alteradaEn`, porque no hay\n\t// ninguna entrada que no cuadre: lo que no cuadra es el inventario. Sin esta\n\t// rama el texto decía «cadena ALTERADA en undefined», que es la peor versión\n\t// de un aviso — grita y no dice qué.\n\tconst cadena = veredicto.faltan?.length\n\t\t? `FALTAN ${veredicto.faltan.length} fichero(s) del libro con ${veredicto.faltan.reduce((n, f) => n + f.entradas, 0)} entrada(s), borrados de sesion/ y recuperados del índice`\n\t\t: veredicto.valido\n\t\t\t? `cadena válida (${veredicto.comprobadas} entrada(s) comprobada(s))`\n\t\t\t: `cadena ALTERADA${veredicto.alteradaEn ? ` en ${veredicto.alteradaEn}` : \"\"} (${veredicto.comprobadas} entrada(s) válidas antes de eso${veredicto.motivo ? `; ${veredicto.motivo}` : \"\"})`;\n\n\tif (entradas.length === 0) return `audit://${resto}: el libro de sesión está vacío. ${cadena}.`;\n\n\tconst lineas = entradas.map((e) => `#${e.seq} ${e.ts} ${resumenSuceso(e.suceso)}`);\n\treturn `${entradas.length} entrada(s) (de más reciente a más antigua), ${cadena}:\\n${lineas.join(\"\\n\")}`;\n}\n"]}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * `vault://<nombre>` — lista los NOMBRES del vault y su clasificación.
3
+ *
4
+ * Nunca el valor. La política de aprobación (`aprobacion/politica.ts`,
5
+ * `rutaProtegida`) deniega a propósito leer `<agentDir>/vault/…` incluso en
6
+ * modo `yolo` — es la única ruta que no es configurable. Este esquema no
7
+ * puede ser la puerta trasera que deshaga esa decisión, así que ni siquiera
8
+ * llama a `VaultManager.getSecret()`: solo a `.list()`, que por construcción
9
+ * no puede devolver un valor porque `VaultListEntry` no tiene ese campo.
10
+ */
11
+ import type { VaultManager } from "../memory-engine/vault.ts";
12
+ export declare function leerBoveda(vault: VaultManager | null, nombre: string): string;
13
+ //# sourceMappingURL=boveda.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boveda.d.ts","sourceRoot":"","sources":["../../../src/core/urls-internas/boveda.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAO9E,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAwB7E","sourcesContent":["/**\n * `vault://<nombre>` — lista los NOMBRES del vault y su clasificación.\n *\n * Nunca el valor. La política de aprobación (`aprobacion/politica.ts`,\n * `rutaProtegida`) deniega a propósito leer `<agentDir>/vault/…` incluso en\n * modo `yolo` — es la única ruta que no es configurable. Este esquema no\n * puede ser la puerta trasera que deshaga esa decisión, así que ni siquiera\n * llama a `VaultManager.getSecret()`: solo a `.list()`, que por construcción\n * no puede devolver un valor porque `VaultListEntry` no tiene ese campo.\n */\n\nimport type { VaultListEntry, VaultManager } from \"../memory-engine/vault.ts\";\n\nfunction formatoEntrada(e: VaultListEntry): string {\n\tconst categoria = e.category ?? \"sin categoría\";\n\treturn `- ${e.name} [${categoria}] (${e.source})${e.note ? ` — ${e.note}` : \"\"}`;\n}\n\nexport function leerBoveda(vault: VaultManager | null, nombre: string): string {\n\tif (!vault) throw new Error(\"vault://: no hay vault configurado en esta sesión.\");\n\tconst objetivo = nombre.trim();\n\tconst entradas = vault.list();\n\n\t// TRES estados, no dos.\n\t//\n\t// `VaultManager.list()` devuelve `[]` tanto cuando el vault está VACÍO como\n\t// cuando está BLOQUEADO —`projectVault` es `null` hasta que alguien lo\n\t// desbloquea—, así que un usuario con doce secretos guardados leía «no hay\n\t// secretos guardados». Es «no puedo» disfrazado de «no hay», y en la ruta de\n\t// seguridad: le empujaría a volver a guardarlos o a dar el vault por roto.\n\tif (entradas.length === 0 && vault.exists() && !vault.isUnlocked) {\n\t\treturn \"vault://: el vault de este proyecto existe pero está BLOQUEADO. No es que no haya secretos: no se han podido leer. Desbloquéalo para listarlos.\";\n\t}\n\n\tif (!objetivo) {\n\t\tif (entradas.length === 0) return \"vault://: no hay secretos guardados en este proyecto.\";\n\t\treturn `${entradas.length} secreto(s) en el vault (solo nombre y clasificación, nunca el valor):\\n${entradas.map(formatoEntrada).join(\"\\n\")}`;\n\t}\n\n\tconst encontrada = entradas.find((e) => e.name === objetivo);\n\tif (!encontrada) return `vault://${objetivo}: no existe una entrada con ese nombre.`;\n\treturn `${formatoEntrada(encontrada)}\\n(el valor no se expone por esta vía: la política de aprobación deniega leer el vault)`;\n}\n"]}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * `vault://<nombre>` — lista los NOMBRES del vault y su clasificación.
3
+ *
4
+ * Nunca el valor. La política de aprobación (`aprobacion/politica.ts`,
5
+ * `rutaProtegida`) deniega a propósito leer `<agentDir>/vault/…` incluso en
6
+ * modo `yolo` — es la única ruta que no es configurable. Este esquema no
7
+ * puede ser la puerta trasera que deshaga esa decisión, así que ni siquiera
8
+ * llama a `VaultManager.getSecret()`: solo a `.list()`, que por construcción
9
+ * no puede devolver un valor porque `VaultListEntry` no tiene ese campo.
10
+ */
11
+ function formatoEntrada(e) {
12
+ const categoria = e.category ?? "sin categoría";
13
+ return `- ${e.name} [${categoria}] (${e.source})${e.note ? ` — ${e.note}` : ""}`;
14
+ }
15
+ export function leerBoveda(vault, nombre) {
16
+ if (!vault)
17
+ throw new Error("vault://: no hay vault configurado en esta sesión.");
18
+ const objetivo = nombre.trim();
19
+ const entradas = vault.list();
20
+ // TRES estados, no dos.
21
+ //
22
+ // `VaultManager.list()` devuelve `[]` tanto cuando el vault está VACÍO como
23
+ // cuando está BLOQUEADO —`projectVault` es `null` hasta que alguien lo
24
+ // desbloquea—, así que un usuario con doce secretos guardados leía «no hay
25
+ // secretos guardados». Es «no puedo» disfrazado de «no hay», y en la ruta de
26
+ // seguridad: le empujaría a volver a guardarlos o a dar el vault por roto.
27
+ if (entradas.length === 0 && vault.exists() && !vault.isUnlocked) {
28
+ return "vault://: el vault de este proyecto existe pero está BLOQUEADO. No es que no haya secretos: no se han podido leer. Desbloquéalo para listarlos.";
29
+ }
30
+ if (!objetivo) {
31
+ if (entradas.length === 0)
32
+ return "vault://: no hay secretos guardados en este proyecto.";
33
+ return `${entradas.length} secreto(s) en el vault (solo nombre y clasificación, nunca el valor):\n${entradas.map(formatoEntrada).join("\n")}`;
34
+ }
35
+ const encontrada = entradas.find((e) => e.name === objetivo);
36
+ if (!encontrada)
37
+ return `vault://${objetivo}: no existe una entrada con ese nombre.`;
38
+ return `${formatoEntrada(encontrada)}\n(el valor no se expone por esta vía: la política de aprobación deniega leer el vault)`;
39
+ }
40
+ //# sourceMappingURL=boveda.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boveda.js","sourceRoot":"","sources":["../../../src/core/urls-internas/boveda.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,SAAS,cAAc,CAAC,CAAiB,EAAU;IAClD,MAAM,SAAS,GAAG,CAAC,CAAC,QAAQ,IAAI,gBAAe,CAAC;IAChD,OAAO,KAAK,CAAC,CAAC,IAAI,KAAK,SAAS,MAAM,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAAA,CACjF;AAED,MAAM,UAAU,UAAU,CAAC,KAA0B,EAAE,MAAc,EAAU;IAC9E,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,qDAAoD,CAAC,CAAC;IAClF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAE9B,wBAAwB;IACxB,EAAE;IACF,8EAA4E;IAC5E,0EAAuE;IACvE,gFAA2E;IAC3E,kFAA6E;IAC7E,4EAA2E;IAC3E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAClE,OAAO,mJAAiJ,CAAC;IAC1J,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,uDAAuD,CAAC;QAC1F,OAAO,GAAG,QAAQ,CAAC,MAAM,4EAA2E,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/I,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAC7D,IAAI,CAAC,UAAU;QAAE,OAAO,WAAW,QAAQ,yCAAyC,CAAC;IACrF,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,4FAAyF,CAAC;AAAA,CAC9H","sourcesContent":["/**\n * `vault://<nombre>` — lista los NOMBRES del vault y su clasificación.\n *\n * Nunca el valor. La política de aprobación (`aprobacion/politica.ts`,\n * `rutaProtegida`) deniega a propósito leer `<agentDir>/vault/…` incluso en\n * modo `yolo` — es la única ruta que no es configurable. Este esquema no\n * puede ser la puerta trasera que deshaga esa decisión, así que ni siquiera\n * llama a `VaultManager.getSecret()`: solo a `.list()`, que por construcción\n * no puede devolver un valor porque `VaultListEntry` no tiene ese campo.\n */\n\nimport type { VaultListEntry, VaultManager } from \"../memory-engine/vault.ts\";\n\nfunction formatoEntrada(e: VaultListEntry): string {\n\tconst categoria = e.category ?? \"sin categoría\";\n\treturn `- ${e.name} [${categoria}] (${e.source})${e.note ? ` — ${e.note}` : \"\"}`;\n}\n\nexport function leerBoveda(vault: VaultManager | null, nombre: string): string {\n\tif (!vault) throw new Error(\"vault://: no hay vault configurado en esta sesión.\");\n\tconst objetivo = nombre.trim();\n\tconst entradas = vault.list();\n\n\t// TRES estados, no dos.\n\t//\n\t// `VaultManager.list()` devuelve `[]` tanto cuando el vault está VACÍO como\n\t// cuando está BLOQUEADO —`projectVault` es `null` hasta que alguien lo\n\t// desbloquea—, así que un usuario con doce secretos guardados leía «no hay\n\t// secretos guardados». Es «no puedo» disfrazado de «no hay», y en la ruta de\n\t// seguridad: le empujaría a volver a guardarlos o a dar el vault por roto.\n\tif (entradas.length === 0 && vault.exists() && !vault.isUnlocked) {\n\t\treturn \"vault://: el vault de este proyecto existe pero está BLOQUEADO. No es que no haya secretos: no se han podido leer. Desbloquéalo para listarlos.\";\n\t}\n\n\tif (!objetivo) {\n\t\tif (entradas.length === 0) return \"vault://: no hay secretos guardados en este proyecto.\";\n\t\treturn `${entradas.length} secreto(s) en el vault (solo nombre y clasificación, nunca el valor):\\n${entradas.map(formatoEntrada).join(\"\\n\")}`;\n\t}\n\n\tconst encontrada = entradas.find((e) => e.name === objetivo);\n\tif (!encontrada) return `vault://${objetivo}: no existe una entrada con ese nombre.`;\n\treturn `${formatoEntrada(encontrada)}\\n(el valor no se expone por esta vía: la política de aprobación deniega leer el vault)`;\n}\n"]}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Engancha las cuatro URLs internas (`memory://`, `vault://`, `rule://`,
3
+ * `audit://`) en la tool `read`, SIN tocar `core/tools/read.ts`.
4
+ *
5
+ * `read.ts` es de upstream y el presupuesto de sincronización ya está al
6
+ * tope (115/115, ver `scripts/sync-ada.sh --check`): un hunk más ahí hace
7
+ * fallar la construcción. La tool en sí ya expone el hueco que hace falta —
8
+ * es un `ToolDefinition` normal, y `agent-session.ts` construye el registro
9
+ * de tools con `Map<string, ToolDefinition>` donde el nombre gana por
10
+ * inserción — así que envolver la definición y reemplazarla con
11
+ * `_baseToolDefinitions.set("read", …)` no es un rodeo, es como Ada ya
12
+ * registra `memory_*`, `web_*` y el resto de sus capacidades en ese mismo
13
+ * método.
14
+ *
15
+ * Delega TODO lo que no sea una URL interna al `read` original: rutas de
16
+ * fichero, imágenes, `offset`/`limit`… nada de eso cambia.
17
+ */
18
+ import type { LibroDeSesion } from "../audit/libro.ts";
19
+ import type { ToolDefinition } from "../extensions/types.ts";
20
+ import type { MemoryEngine } from "../memory-engine/engine.ts";
21
+ import type { VaultManager } from "../memory-engine/vault.ts";
22
+ export interface DependenciasUrlsInternas {
23
+ memoryEngine: MemoryEngine | null;
24
+ vaultManager: VaultManager | null;
25
+ cwd: string;
26
+ /** Perezoso porque el libro también lo es (ver `RegistroDeSesion.libro()`). */
27
+ libro: () => LibroDeSesion;
28
+ }
29
+ export declare function envolverReadConUrlsInternas(base: ToolDefinition, deps: DependenciasUrlsInternas): ToolDefinition;
30
+ //# sourceMappingURL=lector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lector.d.ts","sourceRoot":"","sources":["../../../src/core/urls-internas/lector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAmB,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAO9D,MAAM,WAAW,wBAAwB;IACxC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,gFAA+E;IAC/E,KAAK,EAAE,MAAM,aAAa,CAAC;CAC3B;AAoBD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,wBAAwB,GAAG,cAAc,CAchH","sourcesContent":["/**\n * Engancha las cuatro URLs internas (`memory://`, `vault://`, `rule://`,\n * `audit://`) en la tool `read`, SIN tocar `core/tools/read.ts`.\n *\n * `read.ts` es de upstream y el presupuesto de sincronización ya está al\n * tope (115/115, ver `scripts/sync-ada.sh --check`): un hunk más ahí hace\n * fallar la construcción. La tool en sí ya expone el hueco que hace falta —\n * es un `ToolDefinition` normal, y `agent-session.ts` construye el registro\n * de tools con `Map<string, ToolDefinition>` donde el nombre gana por\n * inserción — así que envolver la definición y reemplazarla con\n * `_baseToolDefinitions.set(\"read\", …)` no es un rodeo, es como Ada ya\n * registra `memory_*`, `web_*` y el resto de sus capacidades en ese mismo\n * método.\n *\n * Delega TODO lo que no sea una URL interna al `read` original: rutas de\n * fichero, imágenes, `offset`/`limit`… nada de eso cambia.\n */\n\nimport type { LibroDeSesion } from \"../audit/libro.ts\";\nimport type { AgentToolResult, ToolDefinition } from \"../extensions/types.ts\";\nimport type { MemoryEngine } from \"../memory-engine/engine.ts\";\nimport type { VaultManager } from \"../memory-engine/vault.ts\";\nimport { leerAuditoria } from \"./auditoria.ts\";\nimport { leerBoveda } from \"./boveda.ts\";\nimport { leerMemoria } from \"./memoria.ts\";\nimport { errorEsquemaDesconocido, esEsquemaConocido, parseaUrlInterna } from \"./parse.ts\";\nimport { leerReglas } from \"./reglas.ts\";\n\nexport interface DependenciasUrlsInternas {\n\tmemoryEngine: MemoryEngine | null;\n\tvaultManager: VaultManager | null;\n\tcwd: string;\n\t/** Perezoso porque el libro también lo es (ver `RegistroDeSesion.libro()`). */\n\tlibro: () => LibroDeSesion;\n}\n\nasync function resuelveUrlInterna(esquema: string, resto: string, deps: DependenciasUrlsInternas): Promise<string> {\n\tswitch (esquema) {\n\t\tcase \"memory\":\n\t\t\treturn leerMemoria(deps.memoryEngine, resto);\n\t\tcase \"vault\":\n\t\t\treturn leerBoveda(deps.vaultManager, resto);\n\t\tcase \"rule\":\n\t\t\treturn leerReglas(deps.cwd, resto);\n\t\tcase \"audit\":\n\t\t\treturn leerAuditoria(deps.libro(), resto);\n\t\tdefault:\n\t\t\t// Inalcanzable si `esEsquemaConocido` ya filtró, pero deja el fallo\n\t\t\t// hablando en vez de romper con un `undefined` silencioso si alguien\n\t\t\t// añade un esquema a la lista y olvida este switch.\n\t\t\tthrow errorEsquemaDesconocido(esquema);\n\t}\n}\n\nexport function envolverReadConUrlsInternas(base: ToolDefinition, deps: DependenciasUrlsInternas): ToolDefinition {\n\treturn {\n\t\t...base,\n\t\tdescription: `${base.description} Además de rutas de fichero, acepta URLs internas: memory://<consulta>, vault://<nombre> (solo nombre y clasificación, nunca el valor), rule://<origen>, audit://<n>.`,\n\t\tasync execute(toolCallId, params, signal, onUpdate, ctx): Promise<AgentToolResult<unknown>> {\n\t\t\tconst ruta = (params as { path?: unknown }).path;\n\t\t\tconst url = typeof ruta === \"string\" ? parseaUrlInterna(ruta) : null;\n\t\t\tif (!url) return base.execute(toolCallId, params, signal, onUpdate, ctx);\n\n\t\t\tif (!esEsquemaConocido(url.esquema)) throw errorEsquemaDesconocido(url.esquema);\n\t\t\tconst texto = await resuelveUrlInterna(url.esquema, url.resto, deps);\n\t\t\treturn { content: [{ type: \"text\", text: texto }], details: undefined };\n\t\t},\n\t};\n}\n"]}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Engancha las cuatro URLs internas (`memory://`, `vault://`, `rule://`,
3
+ * `audit://`) en la tool `read`, SIN tocar `core/tools/read.ts`.
4
+ *
5
+ * `read.ts` es de upstream y el presupuesto de sincronización ya está al
6
+ * tope (115/115, ver `scripts/sync-ada.sh --check`): un hunk más ahí hace
7
+ * fallar la construcción. La tool en sí ya expone el hueco que hace falta —
8
+ * es un `ToolDefinition` normal, y `agent-session.ts` construye el registro
9
+ * de tools con `Map<string, ToolDefinition>` donde el nombre gana por
10
+ * inserción — así que envolver la definición y reemplazarla con
11
+ * `_baseToolDefinitions.set("read", …)` no es un rodeo, es como Ada ya
12
+ * registra `memory_*`, `web_*` y el resto de sus capacidades en ese mismo
13
+ * método.
14
+ *
15
+ * Delega TODO lo que no sea una URL interna al `read` original: rutas de
16
+ * fichero, imágenes, `offset`/`limit`… nada de eso cambia.
17
+ */
18
+ import { leerAuditoria } from "./auditoria.js";
19
+ import { leerBoveda } from "./boveda.js";
20
+ import { leerMemoria } from "./memoria.js";
21
+ import { errorEsquemaDesconocido, esEsquemaConocido, parseaUrlInterna } from "./parse.js";
22
+ import { leerReglas } from "./reglas.js";
23
+ async function resuelveUrlInterna(esquema, resto, deps) {
24
+ switch (esquema) {
25
+ case "memory":
26
+ return leerMemoria(deps.memoryEngine, resto);
27
+ case "vault":
28
+ return leerBoveda(deps.vaultManager, resto);
29
+ case "rule":
30
+ return leerReglas(deps.cwd, resto);
31
+ case "audit":
32
+ return leerAuditoria(deps.libro(), resto);
33
+ default:
34
+ // Inalcanzable si `esEsquemaConocido` ya filtró, pero deja el fallo
35
+ // hablando en vez de romper con un `undefined` silencioso si alguien
36
+ // añade un esquema a la lista y olvida este switch.
37
+ throw errorEsquemaDesconocido(esquema);
38
+ }
39
+ }
40
+ export function envolverReadConUrlsInternas(base, deps) {
41
+ return {
42
+ ...base,
43
+ description: `${base.description} Además de rutas de fichero, acepta URLs internas: memory://<consulta>, vault://<nombre> (solo nombre y clasificación, nunca el valor), rule://<origen>, audit://<n>.`,
44
+ async execute(toolCallId, params, signal, onUpdate, ctx) {
45
+ const ruta = params.path;
46
+ const url = typeof ruta === "string" ? parseaUrlInterna(ruta) : null;
47
+ if (!url)
48
+ return base.execute(toolCallId, params, signal, onUpdate, ctx);
49
+ if (!esEsquemaConocido(url.esquema))
50
+ throw errorEsquemaDesconocido(url.esquema);
51
+ const texto = await resuelveUrlInterna(url.esquema, url.resto, deps);
52
+ return { content: [{ type: "text", text: texto }], details: undefined };
53
+ },
54
+ };
55
+ }
56
+ //# sourceMappingURL=lector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lector.js","sourceRoot":"","sources":["../../../src/core/urls-internas/lector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAUzC,KAAK,UAAU,kBAAkB,CAAC,OAAe,EAAE,KAAa,EAAE,IAA8B,EAAmB;IAClH,QAAQ,OAAO,EAAE,CAAC;QACjB,KAAK,QAAQ;YACZ,OAAO,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC9C,KAAK,OAAO;YACX,OAAO,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC7C,KAAK,MAAM;YACV,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACpC,KAAK,OAAO;YACX,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;QAC3C;YACC,qEAAoE;YACpE,qEAAqE;YACrE,qDAAoD;YACpD,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;AAAA,CACD;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAoB,EAAE,IAA8B,EAAkB;IACjH,OAAO;QACN,GAAG,IAAI;QACP,WAAW,EAAE,GAAG,IAAI,CAAC,WAAW,yKAAuK;QACvM,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAqC;YAC3F,MAAM,IAAI,GAAI,MAA6B,CAAC,IAAI,CAAC;YACjD,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACrE,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAEzE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,MAAM,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAChF,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACrE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAAA,CACxE;KACD,CAAC;AAAA,CACF","sourcesContent":["/**\n * Engancha las cuatro URLs internas (`memory://`, `vault://`, `rule://`,\n * `audit://`) en la tool `read`, SIN tocar `core/tools/read.ts`.\n *\n * `read.ts` es de upstream y el presupuesto de sincronización ya está al\n * tope (115/115, ver `scripts/sync-ada.sh --check`): un hunk más ahí hace\n * fallar la construcción. La tool en sí ya expone el hueco que hace falta —\n * es un `ToolDefinition` normal, y `agent-session.ts` construye el registro\n * de tools con `Map<string, ToolDefinition>` donde el nombre gana por\n * inserción — así que envolver la definición y reemplazarla con\n * `_baseToolDefinitions.set(\"read\", …)` no es un rodeo, es como Ada ya\n * registra `memory_*`, `web_*` y el resto de sus capacidades en ese mismo\n * método.\n *\n * Delega TODO lo que no sea una URL interna al `read` original: rutas de\n * fichero, imágenes, `offset`/`limit`… nada de eso cambia.\n */\n\nimport type { LibroDeSesion } from \"../audit/libro.ts\";\nimport type { AgentToolResult, ToolDefinition } from \"../extensions/types.ts\";\nimport type { MemoryEngine } from \"../memory-engine/engine.ts\";\nimport type { VaultManager } from \"../memory-engine/vault.ts\";\nimport { leerAuditoria } from \"./auditoria.ts\";\nimport { leerBoveda } from \"./boveda.ts\";\nimport { leerMemoria } from \"./memoria.ts\";\nimport { errorEsquemaDesconocido, esEsquemaConocido, parseaUrlInterna } from \"./parse.ts\";\nimport { leerReglas } from \"./reglas.ts\";\n\nexport interface DependenciasUrlsInternas {\n\tmemoryEngine: MemoryEngine | null;\n\tvaultManager: VaultManager | null;\n\tcwd: string;\n\t/** Perezoso porque el libro también lo es (ver `RegistroDeSesion.libro()`). */\n\tlibro: () => LibroDeSesion;\n}\n\nasync function resuelveUrlInterna(esquema: string, resto: string, deps: DependenciasUrlsInternas): Promise<string> {\n\tswitch (esquema) {\n\t\tcase \"memory\":\n\t\t\treturn leerMemoria(deps.memoryEngine, resto);\n\t\tcase \"vault\":\n\t\t\treturn leerBoveda(deps.vaultManager, resto);\n\t\tcase \"rule\":\n\t\t\treturn leerReglas(deps.cwd, resto);\n\t\tcase \"audit\":\n\t\t\treturn leerAuditoria(deps.libro(), resto);\n\t\tdefault:\n\t\t\t// Inalcanzable si `esEsquemaConocido` ya filtró, pero deja el fallo\n\t\t\t// hablando en vez de romper con un `undefined` silencioso si alguien\n\t\t\t// añade un esquema a la lista y olvida este switch.\n\t\t\tthrow errorEsquemaDesconocido(esquema);\n\t}\n}\n\nexport function envolverReadConUrlsInternas(base: ToolDefinition, deps: DependenciasUrlsInternas): ToolDefinition {\n\treturn {\n\t\t...base,\n\t\tdescription: `${base.description} Además de rutas de fichero, acepta URLs internas: memory://<consulta>, vault://<nombre> (solo nombre y clasificación, nunca el valor), rule://<origen>, audit://<n>.`,\n\t\tasync execute(toolCallId, params, signal, onUpdate, ctx): Promise<AgentToolResult<unknown>> {\n\t\t\tconst ruta = (params as { path?: unknown }).path;\n\t\t\tconst url = typeof ruta === \"string\" ? parseaUrlInterna(ruta) : null;\n\t\t\tif (!url) return base.execute(toolCallId, params, signal, onUpdate, ctx);\n\n\t\t\tif (!esEsquemaConocido(url.esquema)) throw errorEsquemaDesconocido(url.esquema);\n\t\t\tconst texto = await resuelveUrlInterna(url.esquema, url.resto, deps);\n\t\t\treturn { content: [{ type: \"text\", text: texto }], details: undefined };\n\t\t},\n\t};\n}\n"]}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * `memory://<consulta>` — busca en el motor de memoria (`memory-engine/engine.ts`).
3
+ *
4
+ * No es un tool nuevo: es el mismo `searchMemories` que ya usa `memory_search`
5
+ * en `memory-engine/tools.ts`, con el mismo formato de salida. Reutilizarlo en
6
+ * vez de reimplementar la búsqueda es justo el punto del hueco — un `read` en
7
+ * vez de veinte tools.
8
+ */
9
+ import type { MemoryEngine } from "../memory-engine/engine.ts";
10
+ export declare function leerMemoria(engine: MemoryEngine | null, consulta: string): string;
11
+ //# sourceMappingURL=memoria.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoria.d.ts","sourceRoot":"","sources":["../../../src/core/urls-internas/memoria.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI/D,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAajF","sourcesContent":["/**\n * `memory://<consulta>` — busca en el motor de memoria (`memory-engine/engine.ts`).\n *\n * No es un tool nuevo: es el mismo `searchMemories` que ya usa `memory_search`\n * en `memory-engine/tools.ts`, con el mismo formato de salida. Reutilizarlo en\n * vez de reimplementar la búsqueda es justo el punto del hueco — un `read` en\n * vez de veinte tools.\n */\n\nimport type { MemoryEngine } from \"../memory-engine/engine.ts\";\n\nconst LIMITE = 10;\n\nexport function leerMemoria(engine: MemoryEngine | null, consulta: string): string {\n\tif (!engine) throw new Error(\"memory://: el motor de memoria no está disponible en esta sesión.\");\n\tconst texto = consulta.trim();\n\tif (!texto) throw new Error(\"memory://: falta la consulta. Usa memory://<lo que buscas>.\");\n\n\tconst hits = engine.searchMemories({ text: texto, limit: LIMITE });\n\tif (hits.length === 0) return `memory://${consulta}: sin resultados.`;\n\n\tconst lineas = hits.map((hit, i) => {\n\t\tconst alcance = hit.observation.project ? \"project\" : \"global/user\";\n\t\treturn `${i + 1}. [${hit.observation.type} · ${alcance}] ${hit.observation.text}`;\n\t});\n\treturn `${hits.length} resultado(s) para memory://${consulta}:\\n${lineas.join(\"\\n\")}`;\n}\n"]}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * `memory://<consulta>` — busca en el motor de memoria (`memory-engine/engine.ts`).
3
+ *
4
+ * No es un tool nuevo: es el mismo `searchMemories` que ya usa `memory_search`
5
+ * en `memory-engine/tools.ts`, con el mismo formato de salida. Reutilizarlo en
6
+ * vez de reimplementar la búsqueda es justo el punto del hueco — un `read` en
7
+ * vez de veinte tools.
8
+ */
9
+ const LIMITE = 10;
10
+ export function leerMemoria(engine, consulta) {
11
+ if (!engine)
12
+ throw new Error("memory://: el motor de memoria no está disponible en esta sesión.");
13
+ const texto = consulta.trim();
14
+ if (!texto)
15
+ throw new Error("memory://: falta la consulta. Usa memory://<lo que buscas>.");
16
+ const hits = engine.searchMemories({ text: texto, limit: LIMITE });
17
+ if (hits.length === 0)
18
+ return `memory://${consulta}: sin resultados.`;
19
+ const lineas = hits.map((hit, i) => {
20
+ const alcance = hit.observation.project ? "project" : "global/user";
21
+ return `${i + 1}. [${hit.observation.type} · ${alcance}] ${hit.observation.text}`;
22
+ });
23
+ return `${hits.length} resultado(s) para memory://${consulta}:\n${lineas.join("\n")}`;
24
+ }
25
+ //# sourceMappingURL=memoria.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoria.js","sourceRoot":"","sources":["../../../src/core/urls-internas/memoria.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,MAAM,GAAG,EAAE,CAAC;AAElB,MAAM,UAAU,WAAW,CAAC,MAA2B,EAAE,QAAgB,EAAU;IAClF,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,qEAAmE,CAAC,CAAC;IAClG,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IAE3F,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACnE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,YAAY,QAAQ,mBAAmB,CAAC;IAEtE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC;QACpE,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,OAAM,OAAO,KAAK,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAAA,CAClF,CAAC,CAAC;IACH,OAAO,GAAG,IAAI,CAAC,MAAM,+BAA+B,QAAQ,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAAA,CACtF","sourcesContent":["/**\n * `memory://<consulta>` — busca en el motor de memoria (`memory-engine/engine.ts`).\n *\n * No es un tool nuevo: es el mismo `searchMemories` que ya usa `memory_search`\n * en `memory-engine/tools.ts`, con el mismo formato de salida. Reutilizarlo en\n * vez de reimplementar la búsqueda es justo el punto del hueco — un `read` en\n * vez de veinte tools.\n */\n\nimport type { MemoryEngine } from \"../memory-engine/engine.ts\";\n\nconst LIMITE = 10;\n\nexport function leerMemoria(engine: MemoryEngine | null, consulta: string): string {\n\tif (!engine) throw new Error(\"memory://: el motor de memoria no está disponible en esta sesión.\");\n\tconst texto = consulta.trim();\n\tif (!texto) throw new Error(\"memory://: falta la consulta. Usa memory://<lo que buscas>.\");\n\n\tconst hits = engine.searchMemories({ text: texto, limit: LIMITE });\n\tif (hits.length === 0) return `memory://${consulta}: sin resultados.`;\n\n\tconst lineas = hits.map((hit, i) => {\n\t\tconst alcance = hit.observation.project ? \"project\" : \"global/user\";\n\t\treturn `${i + 1}. [${hit.observation.type} · ${alcance}] ${hit.observation.text}`;\n\t});\n\treturn `${hits.length} resultado(s) para memory://${consulta}:\\n${lineas.join(\"\\n\")}`;\n}\n"]}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Parseo de URLs internas: `esquema://resto`.
3
+ *
4
+ * oh-my-pi (el competidor, ver `/Users/31017423z/auditoria-omp/oh-my-pi`)
5
+ * tiene veinte esquemas y un parser que reconstruye `URL` a mano para
6
+ * aguantar dos puntos dentro del host (`skill://plugin:name`). Nosotros no
7
+ * tenemos esa forma — nuestro "resto" es una consulta, un nombre o un número,
8
+ * nunca un host con puerto — así que un regex basta y no hace falta
9
+ * replicar esa máquina.
10
+ *
11
+ * La frontera es literal: cualquier texto con forma `algo://algo` entra en
12
+ * este espacio de nombres y YA NO se intenta como ruta de fichero. Una ruta
13
+ * real de disco no lleva `://`, así que no hay colisión que resolver.
14
+ */
15
+ /** Los únicos cuatro esquemas que existen hoy. Cualquier otro es un error con lista. */
16
+ export declare const ESQUEMAS_INTERNOS: readonly ["memory", "vault", "rule", "audit"];
17
+ export type EsquemaInterno = (typeof ESQUEMAS_INTERNOS)[number];
18
+ export interface UrlInterna {
19
+ esquema: string;
20
+ /** Todo lo que va después de `://`, sin decodificar: cada manejador decide qué hacer con él. */
21
+ resto: string;
22
+ }
23
+ /** `null` cuando el texto no tiene forma de URL — no es "no reconocido", es "no aplica". */
24
+ export declare function parseaUrlInterna(texto: string): UrlInterna | null;
25
+ export declare function esEsquemaConocido(esquema: string): esquema is EsquemaInterno;
26
+ /** El error que ve el modelo cuando pide un esquema que no existe. Siempre nombra los que sí. */
27
+ export declare function errorEsquemaDesconocido(esquema: string): Error;
28
+ //# sourceMappingURL=parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/core/urls-internas/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,yFAAwF;AACxF,eAAO,MAAM,iBAAiB,+CAAgD,CAAC;AAC/E,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,MAAM,WAAW,UAAU;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,mGAAgG;IAChG,KAAK,EAAE,MAAM,CAAC;CACd;AAID,8FAA4F;AAC5F,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAIjE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,cAAc,CAE5E;AAED,kGAAiG;AACjG,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAI9D","sourcesContent":["/**\n * Parseo de URLs internas: `esquema://resto`.\n *\n * oh-my-pi (el competidor, ver `/Users/31017423z/auditoria-omp/oh-my-pi`)\n * tiene veinte esquemas y un parser que reconstruye `URL` a mano para\n * aguantar dos puntos dentro del host (`skill://plugin:name`). Nosotros no\n * tenemos esa forma — nuestro \"resto\" es una consulta, un nombre o un número,\n * nunca un host con puerto — así que un regex basta y no hace falta\n * replicar esa máquina.\n *\n * La frontera es literal: cualquier texto con forma `algo://algo` entra en\n * este espacio de nombres y YA NO se intenta como ruta de fichero. Una ruta\n * real de disco no lleva `://`, así que no hay colisión que resolver.\n */\n\n/** Los únicos cuatro esquemas que existen hoy. Cualquier otro es un error con lista. */\nexport const ESQUEMAS_INTERNOS = [\"memory\", \"vault\", \"rule\", \"audit\"] as const;\nexport type EsquemaInterno = (typeof ESQUEMAS_INTERNOS)[number];\n\nexport interface UrlInterna {\n\tesquema: string;\n\t/** Todo lo que va después de `://`, sin decodificar: cada manejador decide qué hacer con él. */\n\tresto: string;\n}\n\nconst PATRON = /^([a-zA-Z][a-zA-Z0-9+.-]*):\\/\\/(.*)$/s;\n\n/** `null` cuando el texto no tiene forma de URL — no es \"no reconocido\", es \"no aplica\". */\nexport function parseaUrlInterna(texto: string): UrlInterna | null {\n\tconst m = PATRON.exec(texto);\n\tif (!m) return null;\n\treturn { esquema: m[1].toLowerCase(), resto: m[2] };\n}\n\nexport function esEsquemaConocido(esquema: string): esquema is EsquemaInterno {\n\treturn (ESQUEMAS_INTERNOS as readonly string[]).includes(esquema);\n}\n\n/** El error que ve el modelo cuando pide un esquema que no existe. Siempre nombra los que sí. */\nexport function errorEsquemaDesconocido(esquema: string): Error {\n\treturn new Error(\n\t\t`Esquema interno desconocido: \"${esquema}://\". Esquemas disponibles: ${ESQUEMAS_INTERNOS.map((e) => `${e}://`).join(\", \")}.`,\n\t);\n}\n"]}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Parseo de URLs internas: `esquema://resto`.
3
+ *
4
+ * oh-my-pi (el competidor, ver `/Users/31017423z/auditoria-omp/oh-my-pi`)
5
+ * tiene veinte esquemas y un parser que reconstruye `URL` a mano para
6
+ * aguantar dos puntos dentro del host (`skill://plugin:name`). Nosotros no
7
+ * tenemos esa forma — nuestro "resto" es una consulta, un nombre o un número,
8
+ * nunca un host con puerto — así que un regex basta y no hace falta
9
+ * replicar esa máquina.
10
+ *
11
+ * La frontera es literal: cualquier texto con forma `algo://algo` entra en
12
+ * este espacio de nombres y YA NO se intenta como ruta de fichero. Una ruta
13
+ * real de disco no lleva `://`, así que no hay colisión que resolver.
14
+ */
15
+ /** Los únicos cuatro esquemas que existen hoy. Cualquier otro es un error con lista. */
16
+ export const ESQUEMAS_INTERNOS = ["memory", "vault", "rule", "audit"];
17
+ const PATRON = /^([a-zA-Z][a-zA-Z0-9+.-]*):\/\/(.*)$/s;
18
+ /** `null` cuando el texto no tiene forma de URL — no es "no reconocido", es "no aplica". */
19
+ export function parseaUrlInterna(texto) {
20
+ const m = PATRON.exec(texto);
21
+ if (!m)
22
+ return null;
23
+ return { esquema: m[1].toLowerCase(), resto: m[2] };
24
+ }
25
+ export function esEsquemaConocido(esquema) {
26
+ return ESQUEMAS_INTERNOS.includes(esquema);
27
+ }
28
+ /** El error que ve el modelo cuando pide un esquema que no existe. Siempre nombra los que sí. */
29
+ export function errorEsquemaDesconocido(esquema) {
30
+ return new Error(`Esquema interno desconocido: "${esquema}://". Esquemas disponibles: ${ESQUEMAS_INTERNOS.map((e) => `${e}://`).join(", ")}.`);
31
+ }
32
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/core/urls-internas/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,yFAAwF;AACxF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAU,CAAC;AAS/E,MAAM,MAAM,GAAG,uCAAuC,CAAC;AAEvD,8FAA4F;AAC5F,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAqB;IAClE,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAAA,CACpD;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAA6B;IAC7E,OAAQ,iBAAuC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAAA,CAClE;AAED,kGAAiG;AACjG,MAAM,UAAU,uBAAuB,CAAC,OAAe,EAAS;IAC/D,OAAO,IAAI,KAAK,CACf,iCAAiC,OAAO,+BAA+B,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC5H,CAAC;AAAA,CACF","sourcesContent":["/**\n * Parseo de URLs internas: `esquema://resto`.\n *\n * oh-my-pi (el competidor, ver `/Users/31017423z/auditoria-omp/oh-my-pi`)\n * tiene veinte esquemas y un parser que reconstruye `URL` a mano para\n * aguantar dos puntos dentro del host (`skill://plugin:name`). Nosotros no\n * tenemos esa forma — nuestro \"resto\" es una consulta, un nombre o un número,\n * nunca un host con puerto — así que un regex basta y no hace falta\n * replicar esa máquina.\n *\n * La frontera es literal: cualquier texto con forma `algo://algo` entra en\n * este espacio de nombres y YA NO se intenta como ruta de fichero. Una ruta\n * real de disco no lleva `://`, así que no hay colisión que resolver.\n */\n\n/** Los únicos cuatro esquemas que existen hoy. Cualquier otro es un error con lista. */\nexport const ESQUEMAS_INTERNOS = [\"memory\", \"vault\", \"rule\", \"audit\"] as const;\nexport type EsquemaInterno = (typeof ESQUEMAS_INTERNOS)[number];\n\nexport interface UrlInterna {\n\tesquema: string;\n\t/** Todo lo que va después de `://`, sin decodificar: cada manejador decide qué hacer con él. */\n\tresto: string;\n}\n\nconst PATRON = /^([a-zA-Z][a-zA-Z0-9+.-]*):\\/\\/(.*)$/s;\n\n/** `null` cuando el texto no tiene forma de URL — no es \"no reconocido\", es \"no aplica\". */\nexport function parseaUrlInterna(texto: string): UrlInterna | null {\n\tconst m = PATRON.exec(texto);\n\tif (!m) return null;\n\treturn { esquema: m[1].toLowerCase(), resto: m[2] };\n}\n\nexport function esEsquemaConocido(esquema: string): esquema is EsquemaInterno {\n\treturn (ESQUEMAS_INTERNOS as readonly string[]).includes(esquema);\n}\n\n/** El error que ve el modelo cuando pide un esquema que no existe. Siempre nombra los que sí. */\nexport function errorEsquemaDesconocido(esquema: string): Error {\n\treturn new Error(\n\t\t`Esquema interno desconocido: \"${esquema}://\". Esquemas disponibles: ${ESQUEMAS_INTERNOS.map((e) => `${e}://`).join(\", \")}.`,\n\t);\n}\n"]}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * `rule://<origen>` — las reglas que `descubrimiento/reglas.ts` ya encuentra
3
+ * (`.cursorrules`, `.clinerules`, `.windsurfrules`, GEMINI.md, Copilot…).
4
+ *
5
+ * `descubrirReglas` ya hace la deduplicación por contenido y el tope de
6
+ * tamaño; aquí solo se filtra por origen y se recorta el texto final para no
7
+ * volcar un fichero de 32KB entero en una respuesta de `read`.
8
+ */
9
+ export declare function leerReglas(cwd: string, origen: string): string;
10
+ //# sourceMappingURL=reglas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reglas.d.ts","sourceRoot":"","sources":["../../../src/core/urls-internas/reglas.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAiB9D","sourcesContent":["/**\n * `rule://<origen>` — las reglas que `descubrimiento/reglas.ts` ya encuentra\n * (`.cursorrules`, `.clinerules`, `.windsurfrules`, GEMINI.md, Copilot…).\n *\n * `descubrirReglas` ya hace la deduplicación por contenido y el tope de\n * tamaño; aquí solo se filtra por origen y se recorta el texto final para no\n * volcar un fichero de 32KB entero en una respuesta de `read`.\n */\n\nimport { descubrirReglas } from \"../descubrimiento/reglas.ts\";\nimport { truncateHead } from \"../tools/truncate.ts\";\n\nconst TOPE_SALIDA = 8 * 1024;\n\nexport function leerReglas(cwd: string, origen: string): string {\n\tconst { reglas, omitidas } = descubrirReglas(cwd);\n\tconst filtro = origen.trim().toLowerCase();\n\tconst encontradas = filtro ? reglas.filter((r) => r.origen.toLowerCase().includes(filtro)) : reglas;\n\n\tif (reglas.length === 0) return \"rule://: no se ha descubierto ninguna regla en este proyecto.\";\n\tif (encontradas.length === 0) {\n\t\tconst origenes = [...new Set(reglas.map((r) => r.origen))].join(\", \");\n\t\treturn `rule://${origen}: ninguna regla descubierta de ese origen. Orígenes presentes: ${origenes}.`;\n\t}\n\n\tconst cuerpo = encontradas.map((r) => `── ${r.ruta} (${r.origen}) ──\\n${r.contenido}`).join(\"\\n\\n\");\n\tconst recortado = truncateHead(cuerpo, { maxBytes: TOPE_SALIDA });\n\tlet salida = `${encontradas.length} regla(s) de ${filtro ? origen : \"todos los orígenes\"}:\\n${recortado.content}`;\n\tif (recortado.truncated) salida += \"\\n\\n[recortado; pide un origen más concreto para ver el resto]\";\n\tif (omitidas.length > 0) salida += `\\n\\nOmitidas: ${omitidas.map((o) => `${o.ruta} (${o.motivo})`).join(\"; \")}`;\n\treturn salida;\n}\n"]}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * `rule://<origen>` — las reglas que `descubrimiento/reglas.ts` ya encuentra
3
+ * (`.cursorrules`, `.clinerules`, `.windsurfrules`, GEMINI.md, Copilot…).
4
+ *
5
+ * `descubrirReglas` ya hace la deduplicación por contenido y el tope de
6
+ * tamaño; aquí solo se filtra por origen y se recorta el texto final para no
7
+ * volcar un fichero de 32KB entero en una respuesta de `read`.
8
+ */
9
+ import { descubrirReglas } from "../descubrimiento/reglas.js";
10
+ import { truncateHead } from "../tools/truncate.js";
11
+ const TOPE_SALIDA = 8 * 1024;
12
+ export function leerReglas(cwd, origen) {
13
+ const { reglas, omitidas } = descubrirReglas(cwd);
14
+ const filtro = origen.trim().toLowerCase();
15
+ const encontradas = filtro ? reglas.filter((r) => r.origen.toLowerCase().includes(filtro)) : reglas;
16
+ if (reglas.length === 0)
17
+ return "rule://: no se ha descubierto ninguna regla en este proyecto.";
18
+ if (encontradas.length === 0) {
19
+ const origenes = [...new Set(reglas.map((r) => r.origen))].join(", ");
20
+ return `rule://${origen}: ninguna regla descubierta de ese origen. Orígenes presentes: ${origenes}.`;
21
+ }
22
+ const cuerpo = encontradas.map((r) => `── ${r.ruta} (${r.origen}) ──\n${r.contenido}`).join("\n\n");
23
+ const recortado = truncateHead(cuerpo, { maxBytes: TOPE_SALIDA });
24
+ let salida = `${encontradas.length} regla(s) de ${filtro ? origen : "todos los orígenes"}:\n${recortado.content}`;
25
+ if (recortado.truncated)
26
+ salida += "\n\n[recortado; pide un origen más concreto para ver el resto]";
27
+ if (omitidas.length > 0)
28
+ salida += `\n\nOmitidas: ${omitidas.map((o) => `${o.ruta} (${o.motivo})`).join("; ")}`;
29
+ return salida;
30
+ }
31
+ //# sourceMappingURL=reglas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reglas.js","sourceRoot":"","sources":["../../../src/core/urls-internas/reglas.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC;AAE7B,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,MAAc,EAAU;IAC/D,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAEpG,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,+DAA+D,CAAC;IAChG,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,OAAO,UAAU,MAAM,mEAAkE,QAAQ,GAAG,CAAC;IACtG,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,aAAS,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpG,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;IAClE,IAAI,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,gBAAgB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAoB,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;IAClH,IAAI,SAAS,CAAC,SAAS;QAAE,MAAM,IAAI,iEAAgE,CAAC;IACpG,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,iBAAiB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAChH,OAAO,MAAM,CAAC;AAAA,CACd","sourcesContent":["/**\n * `rule://<origen>` — las reglas que `descubrimiento/reglas.ts` ya encuentra\n * (`.cursorrules`, `.clinerules`, `.windsurfrules`, GEMINI.md, Copilot…).\n *\n * `descubrirReglas` ya hace la deduplicación por contenido y el tope de\n * tamaño; aquí solo se filtra por origen y se recorta el texto final para no\n * volcar un fichero de 32KB entero en una respuesta de `read`.\n */\n\nimport { descubrirReglas } from \"../descubrimiento/reglas.ts\";\nimport { truncateHead } from \"../tools/truncate.ts\";\n\nconst TOPE_SALIDA = 8 * 1024;\n\nexport function leerReglas(cwd: string, origen: string): string {\n\tconst { reglas, omitidas } = descubrirReglas(cwd);\n\tconst filtro = origen.trim().toLowerCase();\n\tconst encontradas = filtro ? reglas.filter((r) => r.origen.toLowerCase().includes(filtro)) : reglas;\n\n\tif (reglas.length === 0) return \"rule://: no se ha descubierto ninguna regla en este proyecto.\";\n\tif (encontradas.length === 0) {\n\t\tconst origenes = [...new Set(reglas.map((r) => r.origen))].join(\", \");\n\t\treturn `rule://${origen}: ninguna regla descubierta de ese origen. Orígenes presentes: ${origenes}.`;\n\t}\n\n\tconst cuerpo = encontradas.map((r) => `── ${r.ruta} (${r.origen}) ──\\n${r.contenido}`).join(\"\\n\\n\");\n\tconst recortado = truncateHead(cuerpo, { maxBytes: TOPE_SALIDA });\n\tlet salida = `${encontradas.length} regla(s) de ${filtro ? origen : \"todos los orígenes\"}:\\n${recortado.content}`;\n\tif (recortado.truncated) salida += \"\\n\\n[recortado; pide un origen más concreto para ver el resto]\";\n\tif (omitidas.length > 0) salida += `\\n\\nOmitidas: ${omitidas.map((o) => `${o.ruta} (${o.motivo})`).join(\"; \")}`;\n\treturn salida;\n}\n"]}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Agrega el consumo real a partir de los JSONL de sesión.
3
+ *
4
+ * El dato ya estaba ahí —cada mensaje del asistente guarda `usage` con tokens y
5
+ * coste—, solo que nadie lo leía. Esto no estima nada: suma lo que el proveedor
6
+ * cobró.
7
+ *
8
+ * Los tokens de caché se cuentan APARTE. Meterlos en el total haría que un día
9
+ * con mucha caché pareciera carísimo cuando es justo lo contrario: la caché es
10
+ * lo que abarata: en DeepSeek un acierto cuesta ~1/31 de un fallo. Un panel que
11
+ * los mezcla enseña un número que no se corresponde con la factura.
12
+ */
13
+ export interface UsoBruto {
14
+ input?: number;
15
+ output?: number;
16
+ cacheRead?: number;
17
+ cacheWrite?: number;
18
+ cost?: {
19
+ total?: number;
20
+ };
21
+ }
22
+ export interface LineaSesion {
23
+ type?: string;
24
+ timestamp?: string;
25
+ cwd?: string;
26
+ message?: {
27
+ role?: string;
28
+ provider?: string;
29
+ model?: string;
30
+ usage?: UsoBruto;
31
+ };
32
+ }
33
+ export interface Totales {
34
+ mensajes: number;
35
+ entrada: number;
36
+ salida: number;
37
+ cacheRead: number;
38
+ cacheWrite: number;
39
+ coste: number;
40
+ }
41
+ export interface Resumen extends Totales {
42
+ sesiones: number;
43
+ /** Sesiones descartadas por vivir en un directorio temporal. */
44
+ sesionesTemporales: number;
45
+ porModelo: Record<string, Totales>;
46
+ porDia: Record<string, Totales>;
47
+ porProyecto: Record<string, Totales>;
48
+ }
49
+ export declare function esRutaTemporal(ruta: string): boolean;
50
+ export interface OpcionesResumen {
51
+ /** Solo mensajes a partir de esta fecha (ISO). */
52
+ desde?: string;
53
+ /** Incluir las sesiones de directorios temporales (las de los tests). */
54
+ incluirTemporales?: boolean;
55
+ }
56
+ /**
57
+ * Resume una o varias sesiones.
58
+ *
59
+ * Una sesión cuenta solo si aportó consumo: los JSONL abandonados sin una sola
60
+ * respuesta inflarían el recuento de sesiones sin corresponder a trabajo.
61
+ */
62
+ export declare function resumir(sesiones: Array<{
63
+ cwd?: string;
64
+ lineas: LineaSesion[];
65
+ }>, opciones?: OpcionesResumen): Resumen;
66
+ /** Ordena un desglose de mayor a menor coste, que es el orden que importa. */
67
+ export declare function porCoste(cubos: Record<string, Totales>): Array<[string, Totales]>;
68
+ //# sourceMappingURL=aggregate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../src/core/usage/aggregate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,QAAQ;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,QAAQ,CAAC;KACjB,CAAC;CACF;AAED,MAAM,WAAW,OAAO;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,OAAQ,SAAQ,OAAO;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAoCD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,MAAM,WAAW,eAAe;IAC/B,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CACtB,QAAQ,EAAE,KAAK,CAAC;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC,EACxD,QAAQ,GAAE,eAAoB,GAC5B,OAAO,CAmCT;AAED,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAEjF","sourcesContent":["/**\n * Agrega el consumo real a partir de los JSONL de sesión.\n *\n * El dato ya estaba ahí —cada mensaje del asistente guarda `usage` con tokens y\n * coste—, solo que nadie lo leía. Esto no estima nada: suma lo que el proveedor\n * cobró.\n *\n * Los tokens de caché se cuentan APARTE. Meterlos en el total haría que un día\n * con mucha caché pareciera carísimo cuando es justo lo contrario: la caché es\n * lo que abarata: en DeepSeek un acierto cuesta ~1/31 de un fallo. Un panel que\n * los mezcla enseña un número que no se corresponde con la factura.\n */\n\nexport interface UsoBruto {\n\tinput?: number;\n\toutput?: number;\n\tcacheRead?: number;\n\tcacheWrite?: number;\n\tcost?: { total?: number };\n}\n\nexport interface LineaSesion {\n\ttype?: string;\n\ttimestamp?: string;\n\tcwd?: string;\n\tmessage?: {\n\t\trole?: string;\n\t\tprovider?: string;\n\t\tmodel?: string;\n\t\tusage?: UsoBruto;\n\t};\n}\n\nexport interface Totales {\n\tmensajes: number;\n\tentrada: number;\n\tsalida: number;\n\tcacheRead: number;\n\tcacheWrite: number;\n\tcoste: number;\n}\n\nexport interface Resumen extends Totales {\n\tsesiones: number;\n\t/** Sesiones descartadas por vivir en un directorio temporal. */\n\tsesionesTemporales: number;\n\tporModelo: Record<string, Totales>;\n\tporDia: Record<string, Totales>;\n\tporProyecto: Record<string, Totales>;\n}\n\nfunction vacio(): Totales {\n\treturn { mensajes: 0, entrada: 0, salida: 0, cacheRead: 0, cacheWrite: 0, coste: 0 };\n}\n\nfunction acumular(destino: Totales, uso: UsoBruto): void {\n\tdestino.mensajes += 1;\n\tdestino.entrada += uso.input ?? 0;\n\tdestino.salida += uso.output ?? 0;\n\tdestino.cacheRead += uso.cacheRead ?? 0;\n\tdestino.cacheWrite += uso.cacheWrite ?? 0;\n\tdestino.coste += uso.cost?.total ?? 0;\n}\n\nfunction enCubo(mapa: Record<string, Totales>, clave: string): Totales {\n\tconst actual = mapa[clave];\n\tif (actual) return actual;\n\tconst nuevo = vacio();\n\tmapa[clave] = nuevo;\n\treturn nuevo;\n}\n\n/**\n * Directorios que nunca son un proyecto del usuario.\n *\n * Las suites de tests crean sus sesiones en temporales del sistema y acaban en\n * el mismo almacén que las reales: sin filtrarlas, el desglose por proyecto son\n * 989 rutas `/var/folders/kl/5b56hptn6…` que ya ni existen, y el consumo real\n * queda enterrado debajo.\n *\n * Estrecho a propósito: esconder un proyecto real sería peor que enseñar una\n * ruta rara, y por eso hay `--all`.\n */\nconst RUTAS_TEMPORALES = [/^\\/var\\/folders\\//, /^\\/private\\/var\\/folders\\//, /^\\/tmp\\//, /[\\\\/]Temp[\\\\/]/i];\n\nexport function esRutaTemporal(ruta: string): boolean {\n\treturn RUTAS_TEMPORALES.some((patron) => patron.test(ruta));\n}\n\nexport interface OpcionesResumen {\n\t/** Solo mensajes a partir de esta fecha (ISO). */\n\tdesde?: string;\n\t/** Incluir las sesiones de directorios temporales (las de los tests). */\n\tincluirTemporales?: boolean;\n}\n\n/**\n * Resume una o varias sesiones.\n *\n * Una sesión cuenta solo si aportó consumo: los JSONL abandonados sin una sola\n * respuesta inflarían el recuento de sesiones sin corresponder a trabajo.\n */\nexport function resumir(\n\tsesiones: Array<{ cwd?: string; lineas: LineaSesion[] }>,\n\topciones: OpcionesResumen = {},\n): Resumen {\n\tconst resumen: Resumen = {\n\t\t...vacio(),\n\t\tsesiones: 0,\n\t\tsesionesTemporales: 0,\n\t\tporModelo: {},\n\t\tporDia: {},\n\t\tporProyecto: {},\n\t};\n\n\tfor (const sesion of sesiones) {\n\t\tlet aporto = false;\n\t\t// El `cwd` viene en la cabecera; si falta, se etiqueta explícitamente en\n\t\t// vez de repartirlo entre los demás proyectos.\n\t\tconst proyecto = sesion.cwd ?? sesion.lineas.find((l) => l.type === \"session\")?.cwd ?? \"(desconocido)\";\n\t\tif (!opciones.incluirTemporales && esRutaTemporal(proyecto)) {\n\t\t\tresumen.sesionesTemporales += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (const linea of sesion.lineas) {\n\t\t\tconst uso = linea.message?.usage;\n\t\t\tif (!uso || linea.message?.role !== \"assistant\") continue;\n\t\t\tif (opciones.desde && linea.timestamp && linea.timestamp < opciones.desde) continue;\n\n\t\t\taporto = true;\n\t\t\tacumular(resumen, uso);\n\t\t\tacumular(enCubo(resumen.porModelo, `${linea.message.provider ?? \"?\"}/${linea.message.model ?? \"?\"}`), uso);\n\t\t\tacumular(enCubo(resumen.porProyecto, proyecto), uso);\n\t\t\tif (linea.timestamp) acumular(enCubo(resumen.porDia, linea.timestamp.slice(0, 10)), uso);\n\t\t}\n\t\tif (aporto) resumen.sesiones += 1;\n\t}\n\n\treturn resumen;\n}\n\n/** Ordena un desglose de mayor a menor coste, que es el orden que importa. */\nexport function porCoste(cubos: Record<string, Totales>): Array<[string, Totales]> {\n\treturn Object.entries(cubos).sort((a, b) => b[1].coste - a[1].coste || b[1].salida - a[1].salida);\n}\n"]}