@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,65 @@
1
+ /**
2
+ * Mojeek, vía su página HTML pública (`mojeek.com/search`).
3
+ *
4
+ * Índice propio, sin clave. En la práctica bloquea con un captcha (ALTCHA) a
5
+ * casi cualquier cliente sin navegador real bastante a menudo — se implementa
6
+ * igualmente porque cuando SÍ contesta trae resultados reales, y el registro
7
+ * ya está pensado para saltar al siguiente proveedor cuando este lanza.
8
+ */
9
+ import { CABECERAS_NAVEGADOR } from "./navegador.js";
10
+ const ENDPOINT = "https://www.mojeek.com/search";
11
+ function esBloqueoAntiBot(html) {
12
+ return html.includes("altcha-widget") || html.includes("captcha-wrap") || /sending automated queries/i.test(html);
13
+ }
14
+ function limpiarTexto(html) {
15
+ return html
16
+ .replace(/<[^>]*>/g, " ")
17
+ .replace(/&amp;/gi, "&")
18
+ .replace(/&lt;/gi, "<")
19
+ .replace(/&gt;/gi, ">")
20
+ .replace(/&quot;/gi, '"')
21
+ .replace(/&#39;|&apos;/gi, "'")
22
+ .replace(/&nbsp;/gi, " ")
23
+ .replace(/\s+/g, " ")
24
+ .trim();
25
+ }
26
+ /** Cada resultado orgánico es un `<li>` de `ul.results-standard`, con el título en `h2 > a.title`. */
27
+ const RE_ITEM = /<li\b[^>]*>[\s\S]*?<h2[^>]*>\s*<a\b[^>]*\bclass="[^"]*\btitle\b[^"]*"[^>]*\bhref="([^"]+)"[^>]*>([\s\S]*?)<\/a>[\s\S]*?<\/li>/g;
28
+ const RE_SNIPPET = /<p\b[^>]*\bclass="[^"]*\bs\b[^"]*"[^>]*>([\s\S]*?)<\/p>/;
29
+ function parsear(html) {
30
+ const bloque = html.match(/<ul\b[^>]*\bclass="[^"]*\bresults-standard\b[^"]*"[^>]*>([\s\S]*?)<\/ul>/);
31
+ if (!bloque)
32
+ return [];
33
+ const resultados = [];
34
+ for (const item of bloque[1].matchAll(RE_ITEM)) {
35
+ const href = item[1];
36
+ if (!href.startsWith("http://") && !href.startsWith("https://"))
37
+ continue;
38
+ if (/mojeek\.(com|co\.uk|fr|de)/i.test(href))
39
+ continue; // navegación interna, no resultado
40
+ const tituloTexto = limpiarTexto(item[2]);
41
+ if (!tituloTexto)
42
+ continue;
43
+ const snippet = item[0].match(RE_SNIPPET);
44
+ resultados.push({
45
+ titulo: tituloTexto,
46
+ url: href,
47
+ resumen: snippet ? limpiarTexto(snippet[1]) || undefined : undefined,
48
+ });
49
+ }
50
+ return resultados;
51
+ }
52
+ export const buscar = async (consulta, maximo, _clave, fetchImpl, signal) => {
53
+ const url = new URL(ENDPOINT);
54
+ url.searchParams.set("q", consulta);
55
+ url.searchParams.set("t", String(maximo));
56
+ const respuesta = await fetchImpl(url, { headers: CABECERAS_NAVEGADOR, signal });
57
+ const html = await respuesta.text();
58
+ if (esBloqueoAntiBot(html)) {
59
+ throw new Error("Mojeek bloqueó la petición con su captcha anti-bot.");
60
+ }
61
+ if (!respuesta.ok)
62
+ throw new Error(`Mojeek respondió HTTP ${respuesta.status}.`);
63
+ return parsear(html).slice(0, maximo);
64
+ };
65
+ //# sourceMappingURL=mojeek.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mojeek.js","sourceRoot":"","sources":["../../../../src/core/web/proveedores/mojeek.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrD,MAAM,QAAQ,GAAG,+BAA+B,CAAC;AAEjD,SAAS,gBAAgB,CAAC,IAAY,EAAW;IAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAAA,CAClH;AAED,SAAS,YAAY,CAAC,IAAY,EAAU;IAC3C,OAAO,IAAI;SACT,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAC;AAAA,CACT;AAED,wGAAsG;AACtG,MAAM,OAAO,GACZ,gIAAgI,CAAC;AAClI,MAAM,UAAU,GAAG,yDAAyD,CAAC;AAE7E,SAAS,OAAO,CAAC,IAAY,EAAwB;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;IACtG,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,MAAM,UAAU,GAAyB,EAAE,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,SAAS;QAC1E,IAAI,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS,CAAC,oCAAmC;QAC3F,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW;YAAE,SAAS;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1C,UAAU,CAAC,IAAI,CAAC;YACf,MAAM,EAAE,WAAW;YACnB,GAAG,EAAE,IAAI;YACT,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS;SACpE,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AAAA,CAClB;AAED,MAAM,CAAC,MAAM,MAAM,GAAkB,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;IAC3F,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACpC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,CAAC;IACjF,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,uDAAqD,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,0BAAyB,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IACjF,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAAA,CACtC,CAAC","sourcesContent":["/**\n * Mojeek, vía su página HTML pública (`mojeek.com/search`).\n *\n * Índice propio, sin clave. En la práctica bloquea con un captcha (ALTCHA) a\n * casi cualquier cliente sin navegador real bastante a menudo — se implementa\n * igualmente porque cuando SÍ contesta trae resultados reales, y el registro\n * ya está pensado para saltar al siguiente proveedor cuando este lanza.\n */\nimport { CABECERAS_NAVEGADOR } from \"./navegador.ts\";\nimport type { FuncionBuscar, ResultadoProveedor } from \"./tipos.ts\";\n\nconst ENDPOINT = \"https://www.mojeek.com/search\";\n\nfunction esBloqueoAntiBot(html: string): boolean {\n\treturn html.includes(\"altcha-widget\") || html.includes(\"captcha-wrap\") || /sending automated queries/i.test(html);\n}\n\nfunction limpiarTexto(html: string): string {\n\treturn html\n\t\t.replace(/<[^>]*>/g, \" \")\n\t\t.replace(/&amp;/gi, \"&\")\n\t\t.replace(/&lt;/gi, \"<\")\n\t\t.replace(/&gt;/gi, \">\")\n\t\t.replace(/&quot;/gi, '\"')\n\t\t.replace(/&#39;|&apos;/gi, \"'\")\n\t\t.replace(/&nbsp;/gi, \" \")\n\t\t.replace(/\\s+/g, \" \")\n\t\t.trim();\n}\n\n/** Cada resultado orgánico es un `<li>` de `ul.results-standard`, con el título en `h2 > a.title`. */\nconst RE_ITEM =\n\t/<li\\b[^>]*>[\\s\\S]*?<h2[^>]*>\\s*<a\\b[^>]*\\bclass=\"[^\"]*\\btitle\\b[^\"]*\"[^>]*\\bhref=\"([^\"]+)\"[^>]*>([\\s\\S]*?)<\\/a>[\\s\\S]*?<\\/li>/g;\nconst RE_SNIPPET = /<p\\b[^>]*\\bclass=\"[^\"]*\\bs\\b[^\"]*\"[^>]*>([\\s\\S]*?)<\\/p>/;\n\nfunction parsear(html: string): ResultadoProveedor[] {\n\tconst bloque = html.match(/<ul\\b[^>]*\\bclass=\"[^\"]*\\bresults-standard\\b[^\"]*\"[^>]*>([\\s\\S]*?)<\\/ul>/);\n\tif (!bloque) return [];\n\tconst resultados: ResultadoProveedor[] = [];\n\tfor (const item of bloque[1].matchAll(RE_ITEM)) {\n\t\tconst href = item[1];\n\t\tif (!href.startsWith(\"http://\") && !href.startsWith(\"https://\")) continue;\n\t\tif (/mojeek\\.(com|co\\.uk|fr|de)/i.test(href)) continue; // navegación interna, no resultado\n\t\tconst tituloTexto = limpiarTexto(item[2]);\n\t\tif (!tituloTexto) continue;\n\t\tconst snippet = item[0].match(RE_SNIPPET);\n\t\tresultados.push({\n\t\t\ttitulo: tituloTexto,\n\t\t\turl: href,\n\t\t\tresumen: snippet ? limpiarTexto(snippet[1]) || undefined : undefined,\n\t\t});\n\t}\n\treturn resultados;\n}\n\nexport const buscar: FuncionBuscar = async (consulta, maximo, _clave, fetchImpl, signal) => {\n\tconst url = new URL(ENDPOINT);\n\turl.searchParams.set(\"q\", consulta);\n\turl.searchParams.set(\"t\", String(maximo));\n\tconst respuesta = await fetchImpl(url, { headers: CABECERAS_NAVEGADOR, signal });\n\tconst html = await respuesta.text();\n\tif (esBloqueoAntiBot(html)) {\n\t\tthrow new Error(\"Mojeek bloqueó la petición con su captcha anti-bot.\");\n\t}\n\tif (!respuesta.ok) throw new Error(`Mojeek respondió HTTP ${respuesta.status}.`);\n\treturn parsear(html).slice(0, maximo);\n};\n"]}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Cabeceras de navegador para los proveedores sin clave.
3
+ *
4
+ * DuckDuckGo, Mojeek y Ecosia sirven HTML pensado para un navegador: sin un
5
+ * User-Agent y un Accept-Language plausibles, varios devuelven directamente la
6
+ * página de captcha en vez de resultados. No es spoofing agresivo —un único
7
+ * perfil fijo, no rotación— solo lo mínimo para no parecer un script desnudo.
8
+ */
9
+ export declare const CABECERAS_NAVEGADOR: Record<string, string>;
10
+ //# sourceMappingURL=navegador.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navegador.d.ts","sourceRoot":"","sources":["../../../../src/core/web/proveedores/navegador.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAItD,CAAC","sourcesContent":["/**\n * Cabeceras de navegador para los proveedores sin clave.\n *\n * DuckDuckGo, Mojeek y Ecosia sirven HTML pensado para un navegador: sin un\n * User-Agent y un Accept-Language plausibles, varios devuelven directamente la\n * página de captcha en vez de resultados. No es spoofing agresivo —un único\n * perfil fijo, no rotación— solo lo mínimo para no parecer un script desnudo.\n */\nexport const CABECERAS_NAVEGADOR: Record<string, string> = {\n\t\"user-agent\":\n\t\t\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36\",\n\t\"accept-language\": \"en-US,en;q=0.9\",\n};\n"]}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Cabeceras de navegador para los proveedores sin clave.
3
+ *
4
+ * DuckDuckGo, Mojeek y Ecosia sirven HTML pensado para un navegador: sin un
5
+ * User-Agent y un Accept-Language plausibles, varios devuelven directamente la
6
+ * página de captcha en vez de resultados. No es spoofing agresivo —un único
7
+ * perfil fijo, no rotación— solo lo mínimo para no parecer un script desnudo.
8
+ */
9
+ export const CABECERAS_NAVEGADOR = {
10
+ "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36",
11
+ "accept-language": "en-US,en;q=0.9",
12
+ };
13
+ //# sourceMappingURL=navegador.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navegador.js","sourceRoot":"","sources":["../../../../src/core/web/proveedores/navegador.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IAC1D,YAAY,EACX,mHAAmH;IACpH,iBAAiB,EAAE,gBAAgB;CACnC,CAAC","sourcesContent":["/**\n * Cabeceras de navegador para los proveedores sin clave.\n *\n * DuckDuckGo, Mojeek y Ecosia sirven HTML pensado para un navegador: sin un\n * User-Agent y un Accept-Language plausibles, varios devuelven directamente la\n * página de captcha en vez de resultados. No es spoofing agresivo —un único\n * perfil fijo, no rotación— solo lo mínimo para no parecer un script desnudo.\n */\nexport const CABECERAS_NAVEGADOR: Record<string, string> = {\n\t\"user-agent\":\n\t\t\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36\",\n\t\"accept-language\": \"en-US,en;q=0.9\",\n};\n"]}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Registro perezoso de proveedores de búsqueda web.
3
+ *
4
+ * Importar este fichero no carga NINGÚN proveedor: cada `cargar()` es un
5
+ * `import()` dinámico que solo se ejecuta cuando le toca el turno en
6
+ * `buscarConProveedores`. Son módulos pesados —parseo de HTML, clientes de
7
+ * API— y como mucho se usa uno por sesión; cargarlos todos al arrancar sería
8
+ * trabajo tirado para el 99% de las sesiones que no los necesitan.
9
+ *
10
+ * Orden: la búsqueda nativa del modelo (Anthropic) se resuelve ANTES de
11
+ * llegar aquí, en `tools.ts`. Dentro de este registro: clave configurada >
12
+ * sin clave — lo explícito que el usuario ha pagado y configurado gana a lo
13
+ * gratuito. Entre proveedores con clave, el orden es el de esta lista; el
14
+ * primero con clave disponible es el que se prueba primero.
15
+ */
16
+ import type { DescriptorProveedor, ResultadoProveedor } from "./tipos.ts";
17
+ /** Metadatos de todos los proveedores, en orden de intento. Ningún `cargar()` se ejecuta aquí. */
18
+ export declare const PROVEEDORES: readonly DescriptorProveedor[];
19
+ export interface ResultadoBusquedaProveedores {
20
+ proveedor: string;
21
+ resultados: ResultadoProveedor[];
22
+ }
23
+ export interface OpcionesBusquedaProveedores {
24
+ /** Vault primero, variable de entorno después — lo resuelve quien llama. */
25
+ obtenerClave: (nombreProveedor: string) => Promise<string | undefined>;
26
+ fetchImpl?: typeof fetch;
27
+ signal?: AbortSignal;
28
+ }
29
+ /**
30
+ * Prueba los proveedores en orden hasta que uno responda (con o sin
31
+ * resultados) o se agoten todos.
32
+ *
33
+ * Un proveedor sin clave configurada se SALTA sin contar como fallo — no está
34
+ * disponible, no ha fallado. Un proveedor que lanza SÍ cuenta como fallo y se
35
+ * acumula su motivo. Los tres proveedores sin clave (duckduckgo, mojeek,
36
+ * ecosia) están SIEMPRE en la lista, así que siempre hay al menos uno que
37
+ * intentar: si el bucle se agota es porque todos lanzaron, nunca porque no
38
+ * hubiera nada que probar. Por eso el único error que se lanza aquí es
39
+ * «fallaron», nunca «no configurado» — decir lo contrario sería mentir sobre
40
+ * qué pasó.
41
+ */
42
+ export declare function buscarConProveedores(consulta: string, maximo: number, opciones: OpcionesBusquedaProveedores): Promise<ResultadoBusquedaProveedores>;
43
+ //# sourceMappingURL=registro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registro.d.ts","sourceRoot":"","sources":["../../../../src/core/web/proveedores/registro.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAgB1E,oGAAkG;AAClG,eAAO,MAAM,WAAW,EAAE,SAAS,mBAAmB,EAAiC,CAAC;AAExF,MAAM,WAAW,4BAA4B;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,kBAAkB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,2BAA2B;IAC3C,+EAA4E;IAC5E,YAAY,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACvE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,oBAAoB,CACzC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,2BAA2B,GACnC,OAAO,CAAC,4BAA4B,CAAC,CAoBvC","sourcesContent":["/**\n * Registro perezoso de proveedores de búsqueda web.\n *\n * Importar este fichero no carga NINGÚN proveedor: cada `cargar()` es un\n * `import()` dinámico que solo se ejecuta cuando le toca el turno en\n * `buscarConProveedores`. Son módulos pesados —parseo de HTML, clientes de\n * API— y como mucho se usa uno por sesión; cargarlos todos al arrancar sería\n * trabajo tirado para el 99% de las sesiones que no los necesitan.\n *\n * Orden: la búsqueda nativa del modelo (Anthropic) se resuelve ANTES de\n * llegar aquí, en `tools.ts`. Dentro de este registro: clave configurada >\n * sin clave — lo explícito que el usuario ha pagado y configurado gana a lo\n * gratuito. Entre proveedores con clave, el orden es el de esta lista; el\n * primero con clave disponible es el que se prueba primero.\n */\nimport type { DescriptorProveedor, ResultadoProveedor } from \"./tipos.ts\";\n\nconst CON_CLAVE: DescriptorProveedor[] = [\n\t{ nombre: \"brave\", necesitaClave: true, cargar: () => import(\"./brave.ts\") },\n\t{ nombre: \"tavily\", necesitaClave: true, cargar: () => import(\"./tavily.ts\") },\n\t{ nombre: \"exa\", necesitaClave: true, cargar: () => import(\"./exa.ts\") },\n\t{ nombre: \"searxng\", necesitaClave: true, cargar: () => import(\"./searxng.ts\") },\n\t{ nombre: \"serper\", necesitaClave: true, cargar: () => import(\"./serper.ts\") },\n];\n\nconst SIN_CLAVE: DescriptorProveedor[] = [\n\t{ nombre: \"duckduckgo\", necesitaClave: false, cargar: () => import(\"./duckduckgo.ts\") },\n\t{ nombre: \"mojeek\", necesitaClave: false, cargar: () => import(\"./mojeek.ts\") },\n\t{ nombre: \"ecosia\", necesitaClave: false, cargar: () => import(\"./ecosia.ts\") },\n];\n\n/** Metadatos de todos los proveedores, en orden de intento. Ningún `cargar()` se ejecuta aquí. */\nexport const PROVEEDORES: readonly DescriptorProveedor[] = [...CON_CLAVE, ...SIN_CLAVE];\n\nexport interface ResultadoBusquedaProveedores {\n\tproveedor: string;\n\tresultados: ResultadoProveedor[];\n}\n\nexport interface OpcionesBusquedaProveedores {\n\t/** Vault primero, variable de entorno después — lo resuelve quien llama. */\n\tobtenerClave: (nombreProveedor: string) => Promise<string | undefined>;\n\tfetchImpl?: typeof fetch;\n\tsignal?: AbortSignal;\n}\n\n/**\n * Prueba los proveedores en orden hasta que uno responda (con o sin\n * resultados) o se agoten todos.\n *\n * Un proveedor sin clave configurada se SALTA sin contar como fallo — no está\n * disponible, no ha fallado. Un proveedor que lanza SÍ cuenta como fallo y se\n * acumula su motivo. Los tres proveedores sin clave (duckduckgo, mojeek,\n * ecosia) están SIEMPRE en la lista, así que siempre hay al menos uno que\n * intentar: si el bucle se agota es porque todos lanzaron, nunca porque no\n * hubiera nada que probar. Por eso el único error que se lanza aquí es\n * «fallaron», nunca «no configurado» — decir lo contrario sería mentir sobre\n * qué pasó.\n */\nexport async function buscarConProveedores(\n\tconsulta: string,\n\tmaximo: number,\n\topciones: OpcionesBusquedaProveedores,\n): Promise<ResultadoBusquedaProveedores> {\n\tconst fetchImpl = opciones.fetchImpl ?? fetch;\n\tconst errores: string[] = [];\n\n\tfor (const descriptor of PROVEEDORES) {\n\t\tlet clave: string | undefined;\n\t\tif (descriptor.necesitaClave) {\n\t\t\tclave = await opciones.obtenerClave(descriptor.nombre);\n\t\t\tif (!clave) continue; // no configurado: no es un fallo, es \"no disponible\"\n\t\t}\n\t\ttry {\n\t\t\tconst modulo = await descriptor.cargar();\n\t\t\tconst resultados = await modulo.buscar(consulta, maximo, clave, fetchImpl, opciones.signal);\n\t\t\treturn { proveedor: descriptor.nombre, resultados };\n\t\t} catch (error) {\n\t\t\terrores.push(`${descriptor.nombre}: ${error instanceof Error ? error.message : String(error)}`);\n\t\t}\n\t}\n\n\tthrow new Error(`Todos los proveedores de búsqueda fallaron: ${errores.join(\" | \")}`);\n}\n"]}
@@ -0,0 +1,49 @@
1
+ const CON_CLAVE = [
2
+ { nombre: "brave", necesitaClave: true, cargar: () => import("./brave.js") },
3
+ { nombre: "tavily", necesitaClave: true, cargar: () => import("./tavily.js") },
4
+ { nombre: "exa", necesitaClave: true, cargar: () => import("./exa.js") },
5
+ { nombre: "searxng", necesitaClave: true, cargar: () => import("./searxng.js") },
6
+ { nombre: "serper", necesitaClave: true, cargar: () => import("./serper.js") },
7
+ ];
8
+ const SIN_CLAVE = [
9
+ { nombre: "duckduckgo", necesitaClave: false, cargar: () => import("./duckduckgo.js") },
10
+ { nombre: "mojeek", necesitaClave: false, cargar: () => import("./mojeek.js") },
11
+ { nombre: "ecosia", necesitaClave: false, cargar: () => import("./ecosia.js") },
12
+ ];
13
+ /** Metadatos de todos los proveedores, en orden de intento. Ningún `cargar()` se ejecuta aquí. */
14
+ export const PROVEEDORES = [...CON_CLAVE, ...SIN_CLAVE];
15
+ /**
16
+ * Prueba los proveedores en orden hasta que uno responda (con o sin
17
+ * resultados) o se agoten todos.
18
+ *
19
+ * Un proveedor sin clave configurada se SALTA sin contar como fallo — no está
20
+ * disponible, no ha fallado. Un proveedor que lanza SÍ cuenta como fallo y se
21
+ * acumula su motivo. Los tres proveedores sin clave (duckduckgo, mojeek,
22
+ * ecosia) están SIEMPRE en la lista, así que siempre hay al menos uno que
23
+ * intentar: si el bucle se agota es porque todos lanzaron, nunca porque no
24
+ * hubiera nada que probar. Por eso el único error que se lanza aquí es
25
+ * «fallaron», nunca «no configurado» — decir lo contrario sería mentir sobre
26
+ * qué pasó.
27
+ */
28
+ export async function buscarConProveedores(consulta, maximo, opciones) {
29
+ const fetchImpl = opciones.fetchImpl ?? fetch;
30
+ const errores = [];
31
+ for (const descriptor of PROVEEDORES) {
32
+ let clave;
33
+ if (descriptor.necesitaClave) {
34
+ clave = await opciones.obtenerClave(descriptor.nombre);
35
+ if (!clave)
36
+ continue; // no configurado: no es un fallo, es "no disponible"
37
+ }
38
+ try {
39
+ const modulo = await descriptor.cargar();
40
+ const resultados = await modulo.buscar(consulta, maximo, clave, fetchImpl, opciones.signal);
41
+ return { proveedor: descriptor.nombre, resultados };
42
+ }
43
+ catch (error) {
44
+ errores.push(`${descriptor.nombre}: ${error instanceof Error ? error.message : String(error)}`);
45
+ }
46
+ }
47
+ throw new Error(`Todos los proveedores de búsqueda fallaron: ${errores.join(" | ")}`);
48
+ }
49
+ //# sourceMappingURL=registro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registro.js","sourceRoot":"","sources":["../../../../src/core/web/proveedores/registro.ts"],"names":[],"mappings":"AAiBA,MAAM,SAAS,GAA0B;IACxC,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;IAC5E,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;IAC9E,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;IACxE,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;IAChF,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;CAC9E,CAAC;AAEF,MAAM,SAAS,GAA0B;IACxC,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE;IACvF,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;IAC/E,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;CAC/E,CAAC;AAEF,oGAAkG;AAClG,MAAM,CAAC,MAAM,WAAW,GAAmC,CAAC,GAAG,SAAS,EAAE,GAAG,SAAS,CAAC,CAAC;AAcxF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,QAAgB,EAChB,MAAc,EACd,QAAqC,EACG;IACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,KAAK,CAAC;IAC9C,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACtC,IAAI,KAAyB,CAAC;QAC9B,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;YAC9B,KAAK,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,CAAC,KAAK;gBAAE,SAAS,CAAC,qDAAqD;QAC5E,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;YACzC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC5F,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjG,CAAC;IACF,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,gDAA+C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAAA,CACtF","sourcesContent":["/**\n * Registro perezoso de proveedores de búsqueda web.\n *\n * Importar este fichero no carga NINGÚN proveedor: cada `cargar()` es un\n * `import()` dinámico que solo se ejecuta cuando le toca el turno en\n * `buscarConProveedores`. Son módulos pesados —parseo de HTML, clientes de\n * API— y como mucho se usa uno por sesión; cargarlos todos al arrancar sería\n * trabajo tirado para el 99% de las sesiones que no los necesitan.\n *\n * Orden: la búsqueda nativa del modelo (Anthropic) se resuelve ANTES de\n * llegar aquí, en `tools.ts`. Dentro de este registro: clave configurada >\n * sin clave — lo explícito que el usuario ha pagado y configurado gana a lo\n * gratuito. Entre proveedores con clave, el orden es el de esta lista; el\n * primero con clave disponible es el que se prueba primero.\n */\nimport type { DescriptorProveedor, ResultadoProveedor } from \"./tipos.ts\";\n\nconst CON_CLAVE: DescriptorProveedor[] = [\n\t{ nombre: \"brave\", necesitaClave: true, cargar: () => import(\"./brave.ts\") },\n\t{ nombre: \"tavily\", necesitaClave: true, cargar: () => import(\"./tavily.ts\") },\n\t{ nombre: \"exa\", necesitaClave: true, cargar: () => import(\"./exa.ts\") },\n\t{ nombre: \"searxng\", necesitaClave: true, cargar: () => import(\"./searxng.ts\") },\n\t{ nombre: \"serper\", necesitaClave: true, cargar: () => import(\"./serper.ts\") },\n];\n\nconst SIN_CLAVE: DescriptorProveedor[] = [\n\t{ nombre: \"duckduckgo\", necesitaClave: false, cargar: () => import(\"./duckduckgo.ts\") },\n\t{ nombre: \"mojeek\", necesitaClave: false, cargar: () => import(\"./mojeek.ts\") },\n\t{ nombre: \"ecosia\", necesitaClave: false, cargar: () => import(\"./ecosia.ts\") },\n];\n\n/** Metadatos de todos los proveedores, en orden de intento. Ningún `cargar()` se ejecuta aquí. */\nexport const PROVEEDORES: readonly DescriptorProveedor[] = [...CON_CLAVE, ...SIN_CLAVE];\n\nexport interface ResultadoBusquedaProveedores {\n\tproveedor: string;\n\tresultados: ResultadoProveedor[];\n}\n\nexport interface OpcionesBusquedaProveedores {\n\t/** Vault primero, variable de entorno después — lo resuelve quien llama. */\n\tobtenerClave: (nombreProveedor: string) => Promise<string | undefined>;\n\tfetchImpl?: typeof fetch;\n\tsignal?: AbortSignal;\n}\n\n/**\n * Prueba los proveedores en orden hasta que uno responda (con o sin\n * resultados) o se agoten todos.\n *\n * Un proveedor sin clave configurada se SALTA sin contar como fallo — no está\n * disponible, no ha fallado. Un proveedor que lanza SÍ cuenta como fallo y se\n * acumula su motivo. Los tres proveedores sin clave (duckduckgo, mojeek,\n * ecosia) están SIEMPRE en la lista, así que siempre hay al menos uno que\n * intentar: si el bucle se agota es porque todos lanzaron, nunca porque no\n * hubiera nada que probar. Por eso el único error que se lanza aquí es\n * «fallaron», nunca «no configurado» — decir lo contrario sería mentir sobre\n * qué pasó.\n */\nexport async function buscarConProveedores(\n\tconsulta: string,\n\tmaximo: number,\n\topciones: OpcionesBusquedaProveedores,\n): Promise<ResultadoBusquedaProveedores> {\n\tconst fetchImpl = opciones.fetchImpl ?? fetch;\n\tconst errores: string[] = [];\n\n\tfor (const descriptor of PROVEEDORES) {\n\t\tlet clave: string | undefined;\n\t\tif (descriptor.necesitaClave) {\n\t\t\tclave = await opciones.obtenerClave(descriptor.nombre);\n\t\t\tif (!clave) continue; // no configurado: no es un fallo, es \"no disponible\"\n\t\t}\n\t\ttry {\n\t\t\tconst modulo = await descriptor.cargar();\n\t\t\tconst resultados = await modulo.buscar(consulta, maximo, clave, fetchImpl, opciones.signal);\n\t\t\treturn { proveedor: descriptor.nombre, resultados };\n\t\t} catch (error) {\n\t\t\terrores.push(`${descriptor.nombre}: ${error instanceof Error ? error.message : String(error)}`);\n\t\t}\n\t}\n\n\tthrow new Error(`Todos los proveedores de búsqueda fallaron: ${errores.join(\" | \")}`);\n}\n"]}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * SearXNG: metabuscador autoalojado. No tiene clave propia en el sentido
3
+ * habitual —lo que hace falta es la URL de LA instancia del usuario—, pero
4
+ * cuenta como «con clave» porque, igual que una API key, no funciona de
5
+ * fábrica: hay que configurarla (vault `searxng`, o SEARXNG_URL).
6
+ */
7
+ import type { FuncionBuscar } from "./tipos.ts";
8
+ export declare const buscar: FuncionBuscar;
9
+ //# sourceMappingURL=searxng.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searxng.d.ts","sourceRoot":"","sources":["../../../../src/core/web/proveedores/searxng.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,YAAY,CAAC;AAMpE,eAAO,MAAM,MAAM,EAAE,aAapB,CAAC","sourcesContent":["/**\n * SearXNG: metabuscador autoalojado. No tiene clave propia en el sentido\n * habitual —lo que hace falta es la URL de LA instancia del usuario—, pero\n * cuenta como «con clave» porque, igual que una API key, no funciona de\n * fábrica: hay que configurarla (vault `searxng`, o SEARXNG_URL).\n */\nimport type { FuncionBuscar, ResultadoProveedor } from \"./tipos.ts\";\n\ninterface RespuestaSearxng {\n\tresults?: Array<{ title?: string; url?: string; content?: string }>;\n}\n\nexport const buscar: FuncionBuscar = async (consulta, maximo, clave, fetchImpl, signal) => {\n\tif (!clave) throw new Error(\"SearXNG requiere la URL de una instancia.\");\n\tconst base = clave.replace(/\\/+$/, \"\");\n\tconst url = new URL(`${base}/search`);\n\turl.searchParams.set(\"q\", consulta);\n\turl.searchParams.set(\"format\", \"json\");\n\tconst respuesta = await fetchImpl(url, { headers: { Accept: \"application/json\" }, signal });\n\tif (!respuesta.ok) throw new Error(`SearXNG respondió HTTP ${respuesta.status}.`);\n\tconst datos = (await respuesta.json()) as RespuestaSearxng;\n\tconst resultados: ResultadoProveedor[] = (datos.results ?? [])\n\t\t.filter((r) => typeof r.url === \"string\" && r.url)\n\t\t.map((r) => ({ titulo: r.title || r.url!, url: r.url!, resumen: r.content }));\n\treturn resultados.slice(0, maximo);\n};\n"]}
@@ -0,0 +1,17 @@
1
+ export const buscar = async (consulta, maximo, clave, fetchImpl, signal) => {
2
+ if (!clave)
3
+ throw new Error("SearXNG requiere la URL de una instancia.");
4
+ const base = clave.replace(/\/+$/, "");
5
+ const url = new URL(`${base}/search`);
6
+ url.searchParams.set("q", consulta);
7
+ url.searchParams.set("format", "json");
8
+ const respuesta = await fetchImpl(url, { headers: { Accept: "application/json" }, signal });
9
+ if (!respuesta.ok)
10
+ throw new Error(`SearXNG respondió HTTP ${respuesta.status}.`);
11
+ const datos = (await respuesta.json());
12
+ const resultados = (datos.results ?? [])
13
+ .filter((r) => typeof r.url === "string" && r.url)
14
+ .map((r) => ({ titulo: r.title || r.url, url: r.url, resumen: r.content }));
15
+ return resultados.slice(0, maximo);
16
+ };
17
+ //# sourceMappingURL=searxng.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searxng.js","sourceRoot":"","sources":["../../../../src/core/web/proveedores/searxng.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,MAAM,GAAkB,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;IAC1F,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;IACtC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACpC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5F,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA0B,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAClF,MAAM,KAAK,GAAG,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,CAAqB,CAAC;IAC3D,MAAM,UAAU,GAAyB,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;SAC5D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC;SACjD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC/E,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAAA,CACnC,CAAC","sourcesContent":["/**\n * SearXNG: metabuscador autoalojado. No tiene clave propia en el sentido\n * habitual —lo que hace falta es la URL de LA instancia del usuario—, pero\n * cuenta como «con clave» porque, igual que una API key, no funciona de\n * fábrica: hay que configurarla (vault `searxng`, o SEARXNG_URL).\n */\nimport type { FuncionBuscar, ResultadoProveedor } from \"./tipos.ts\";\n\ninterface RespuestaSearxng {\n\tresults?: Array<{ title?: string; url?: string; content?: string }>;\n}\n\nexport const buscar: FuncionBuscar = async (consulta, maximo, clave, fetchImpl, signal) => {\n\tif (!clave) throw new Error(\"SearXNG requiere la URL de una instancia.\");\n\tconst base = clave.replace(/\\/+$/, \"\");\n\tconst url = new URL(`${base}/search`);\n\turl.searchParams.set(\"q\", consulta);\n\turl.searchParams.set(\"format\", \"json\");\n\tconst respuesta = await fetchImpl(url, { headers: { Accept: \"application/json\" }, signal });\n\tif (!respuesta.ok) throw new Error(`SearXNG respondió HTTP ${respuesta.status}.`);\n\tconst datos = (await respuesta.json()) as RespuestaSearxng;\n\tconst resultados: ResultadoProveedor[] = (datos.results ?? [])\n\t\t.filter((r) => typeof r.url === \"string\" && r.url)\n\t\t.map((r) => ({ titulo: r.title || r.url!, url: r.url!, resumen: r.content }));\n\treturn resultados.slice(0, maximo);\n};\n"]}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Serper (Google Search API). Requiere clave (`serper` en el vault, o
3
+ * SERPER_API_KEY). Es el proveedor histórico de Ada, anterior a este
4
+ * registro: se mantiene aquí para que quien ya tenga la clave configurada
5
+ * siga funcionando exactamente igual.
6
+ */
7
+ import type { FuncionBuscar } from "./tipos.ts";
8
+ export declare const buscar: FuncionBuscar;
9
+ //# sourceMappingURL=serper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serper.d.ts","sourceRoot":"","sources":["../../../../src/core/web/proveedores/serper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,YAAY,CAAC;AAQpE,eAAO,MAAM,MAAM,EAAE,aAcpB,CAAC","sourcesContent":["/**\n * Serper (Google Search API). Requiere clave (`serper` en el vault, o\n * SERPER_API_KEY). Es el proveedor histórico de Ada, anterior a este\n * registro: se mantiene aquí para que quien ya tenga la clave configurada\n * siga funcionando exactamente igual.\n */\nimport type { FuncionBuscar, ResultadoProveedor } from \"./tipos.ts\";\n\nconst ENDPOINT = \"https://google.serper.dev/search\";\n\ninterface RespuestaSerper {\n\torganic?: Array<{ title?: string; link?: string; snippet?: string }>;\n}\n\nexport const buscar: FuncionBuscar = async (consulta, maximo, clave, fetchImpl, signal) => {\n\tif (!clave) throw new Error(\"Serper requiere clave.\");\n\tconst respuesta = await fetchImpl(ENDPOINT, {\n\t\tmethod: \"POST\",\n\t\theaders: { \"X-API-KEY\": clave, \"content-type\": \"application/json\" },\n\t\tbody: JSON.stringify({ q: consulta, num: maximo }),\n\t\tsignal,\n\t});\n\tif (!respuesta.ok) throw new Error(`Serper respondió HTTP ${respuesta.status}.`);\n\tconst datos = (await respuesta.json()) as RespuestaSerper;\n\tconst resultados: ResultadoProveedor[] = (datos.organic ?? [])\n\t\t.filter((r) => typeof r.link === \"string\" && r.link)\n\t\t.map((r) => ({ titulo: r.title || r.link!, url: r.link!, resumen: r.snippet }));\n\treturn resultados.slice(0, maximo);\n};\n"]}
@@ -0,0 +1,19 @@
1
+ const ENDPOINT = "https://google.serper.dev/search";
2
+ export const buscar = async (consulta, maximo, clave, fetchImpl, signal) => {
3
+ if (!clave)
4
+ throw new Error("Serper requiere clave.");
5
+ const respuesta = await fetchImpl(ENDPOINT, {
6
+ method: "POST",
7
+ headers: { "X-API-KEY": clave, "content-type": "application/json" },
8
+ body: JSON.stringify({ q: consulta, num: maximo }),
9
+ signal,
10
+ });
11
+ if (!respuesta.ok)
12
+ throw new Error(`Serper respondió HTTP ${respuesta.status}.`);
13
+ const datos = (await respuesta.json());
14
+ const resultados = (datos.organic ?? [])
15
+ .filter((r) => typeof r.link === "string" && r.link)
16
+ .map((r) => ({ titulo: r.title || r.link, url: r.link, resumen: r.snippet }));
17
+ return resultados.slice(0, maximo);
18
+ };
19
+ //# sourceMappingURL=serper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serper.js","sourceRoot":"","sources":["../../../../src/core/web/proveedores/serper.ts"],"names":[],"mappings":"AAQA,MAAM,QAAQ,GAAG,kCAAkC,CAAC;AAMpD,MAAM,CAAC,MAAM,MAAM,GAAkB,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;IAC1F,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE;QAC3C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE;QACnE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;QAClD,MAAM;KACN,CAAC,CAAC;IACH,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,0BAAyB,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IACjF,MAAM,KAAK,GAAG,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,CAAoB,CAAC;IAC1D,MAAM,UAAU,GAAyB,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;SAC5D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;SACnD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAK,EAAE,GAAG,EAAE,CAAC,CAAC,IAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACjF,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAAA,CACnC,CAAC","sourcesContent":["/**\n * Serper (Google Search API). Requiere clave (`serper` en el vault, o\n * SERPER_API_KEY). Es el proveedor histórico de Ada, anterior a este\n * registro: se mantiene aquí para que quien ya tenga la clave configurada\n * siga funcionando exactamente igual.\n */\nimport type { FuncionBuscar, ResultadoProveedor } from \"./tipos.ts\";\n\nconst ENDPOINT = \"https://google.serper.dev/search\";\n\ninterface RespuestaSerper {\n\torganic?: Array<{ title?: string; link?: string; snippet?: string }>;\n}\n\nexport const buscar: FuncionBuscar = async (consulta, maximo, clave, fetchImpl, signal) => {\n\tif (!clave) throw new Error(\"Serper requiere clave.\");\n\tconst respuesta = await fetchImpl(ENDPOINT, {\n\t\tmethod: \"POST\",\n\t\theaders: { \"X-API-KEY\": clave, \"content-type\": \"application/json\" },\n\t\tbody: JSON.stringify({ q: consulta, num: maximo }),\n\t\tsignal,\n\t});\n\tif (!respuesta.ok) throw new Error(`Serper respondió HTTP ${respuesta.status}.`);\n\tconst datos = (await respuesta.json()) as RespuestaSerper;\n\tconst resultados: ResultadoProveedor[] = (datos.organic ?? [])\n\t\t.filter((r) => typeof r.link === \"string\" && r.link)\n\t\t.map((r) => ({ titulo: r.title || r.link!, url: r.link!, resumen: r.snippet }));\n\treturn resultados.slice(0, maximo);\n};\n"]}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Tavily Search API. Requiere clave (`tavily` en el vault, o TAVILY_API_KEY).
3
+ */
4
+ import type { FuncionBuscar } from "./tipos.ts";
5
+ export declare const buscar: FuncionBuscar;
6
+ //# sourceMappingURL=tavily.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tavily.d.ts","sourceRoot":"","sources":["../../../../src/core/web/proveedores/tavily.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,YAAY,CAAC;AAQpE,eAAO,MAAM,MAAM,EAAE,aAcpB,CAAC","sourcesContent":["/**\n * Tavily Search API. Requiere clave (`tavily` en el vault, o TAVILY_API_KEY).\n */\nimport type { FuncionBuscar, ResultadoProveedor } from \"./tipos.ts\";\n\nconst ENDPOINT = \"https://api.tavily.com/search\";\n\ninterface RespuestaTavily {\n\tresults?: Array<{ title?: string; url?: string; content?: string }>;\n}\n\nexport const buscar: FuncionBuscar = async (consulta, maximo, clave, fetchImpl, signal) => {\n\tif (!clave) throw new Error(\"Tavily requiere clave.\");\n\tconst respuesta = await fetchImpl(ENDPOINT, {\n\t\tmethod: \"POST\",\n\t\theaders: { \"content-type\": \"application/json\", authorization: `Bearer ${clave}` },\n\t\tbody: JSON.stringify({ query: consulta, max_results: Math.min(Math.max(maximo, 1), 20), search_depth: \"basic\" }),\n\t\tsignal,\n\t});\n\tif (!respuesta.ok) throw new Error(`Tavily respondió HTTP ${respuesta.status}.`);\n\tconst datos = (await respuesta.json()) as RespuestaTavily;\n\tconst resultados: ResultadoProveedor[] = (datos.results ?? [])\n\t\t.filter((r) => typeof r.url === \"string\" && r.url)\n\t\t.map((r) => ({ titulo: r.title || r.url!, url: r.url!, resumen: r.content }));\n\treturn resultados.slice(0, maximo);\n};\n"]}
@@ -0,0 +1,19 @@
1
+ const ENDPOINT = "https://api.tavily.com/search";
2
+ export const buscar = async (consulta, maximo, clave, fetchImpl, signal) => {
3
+ if (!clave)
4
+ throw new Error("Tavily requiere clave.");
5
+ const respuesta = await fetchImpl(ENDPOINT, {
6
+ method: "POST",
7
+ headers: { "content-type": "application/json", authorization: `Bearer ${clave}` },
8
+ body: JSON.stringify({ query: consulta, max_results: Math.min(Math.max(maximo, 1), 20), search_depth: "basic" }),
9
+ signal,
10
+ });
11
+ if (!respuesta.ok)
12
+ throw new Error(`Tavily respondió HTTP ${respuesta.status}.`);
13
+ const datos = (await respuesta.json());
14
+ const resultados = (datos.results ?? [])
15
+ .filter((r) => typeof r.url === "string" && r.url)
16
+ .map((r) => ({ titulo: r.title || r.url, url: r.url, resumen: r.content }));
17
+ return resultados.slice(0, maximo);
18
+ };
19
+ //# sourceMappingURL=tavily.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tavily.js","sourceRoot":"","sources":["../../../../src/core/web/proveedores/tavily.ts"],"names":[],"mappings":"AAKA,MAAM,QAAQ,GAAG,+BAA+B,CAAC;AAMjD,MAAM,CAAC,MAAM,MAAM,GAAkB,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;IAC1F,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE;QAC3C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE;QACjF,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;QAChH,MAAM;KACN,CAAC,CAAC;IACH,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,0BAAyB,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IACjF,MAAM,KAAK,GAAG,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,CAAoB,CAAC;IAC1D,MAAM,UAAU,GAAyB,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;SAC5D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC;SACjD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC/E,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAAA,CACnC,CAAC","sourcesContent":["/**\n * Tavily Search API. Requiere clave (`tavily` en el vault, o TAVILY_API_KEY).\n */\nimport type { FuncionBuscar, ResultadoProveedor } from \"./tipos.ts\";\n\nconst ENDPOINT = \"https://api.tavily.com/search\";\n\ninterface RespuestaTavily {\n\tresults?: Array<{ title?: string; url?: string; content?: string }>;\n}\n\nexport const buscar: FuncionBuscar = async (consulta, maximo, clave, fetchImpl, signal) => {\n\tif (!clave) throw new Error(\"Tavily requiere clave.\");\n\tconst respuesta = await fetchImpl(ENDPOINT, {\n\t\tmethod: \"POST\",\n\t\theaders: { \"content-type\": \"application/json\", authorization: `Bearer ${clave}` },\n\t\tbody: JSON.stringify({ query: consulta, max_results: Math.min(Math.max(maximo, 1), 20), search_depth: \"basic\" }),\n\t\tsignal,\n\t});\n\tif (!respuesta.ok) throw new Error(`Tavily respondió HTTP ${respuesta.status}.`);\n\tconst datos = (await respuesta.json()) as RespuestaTavily;\n\tconst resultados: ResultadoProveedor[] = (datos.results ?? [])\n\t\t.filter((r) => typeof r.url === \"string\" && r.url)\n\t\t.map((r) => ({ titulo: r.title || r.url!, url: r.url!, resumen: r.content }));\n\treturn resultados.slice(0, maximo);\n};\n"]}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Tipos compartidos por los proveedores de búsqueda web.
3
+ *
4
+ * Un proveedor es un módulo que se carga con `import()` la primera vez que se
5
+ * necesita: importar este fichero (o `registro.ts`) NO debe cargar ni un solo
6
+ * proveedor. Son pesados —cada uno trae su propio parseo— y como mucho se usa
7
+ * uno por sesión, así que cargarlos todos por adelantado es trabajo tirado.
8
+ */
9
+ /** Un resultado de búsqueda ya normalizado, con snippet cuando el proveedor lo trae. */
10
+ export interface ResultadoProveedor {
11
+ titulo: string;
12
+ url: string;
13
+ resumen?: string;
14
+ /** Antigüedad tal y como la da el proveedor ("3 weeks ago", "2026-07-30"). */
15
+ edad?: string;
16
+ }
17
+ /**
18
+ * Busca. Los proveedores SIN clave reciben `clave === undefined` y lo ignoran;
19
+ * el registro nunca llama a un proveedor CON clave sin haberla resuelto antes.
20
+ *
21
+ * Debe LANZAR en cualquier fallo real (red, HTTP, bloqueo anti-bot, JSON roto):
22
+ * el registro pasa al siguiente proveedor con ese error. Devolver `[]` es
23
+ * SOLO para «he preguntado y no hay resultados» — confundir las dos cosas es
24
+ * el error que la puerta de este hueco existe para atrapar.
25
+ */
26
+ export type FuncionBuscar = (consulta: string, maximo: number, clave: string | undefined, fetchImpl: typeof fetch, signal?: AbortSignal) => Promise<ResultadoProveedor[]>;
27
+ export interface ModuloProveedor {
28
+ buscar: FuncionBuscar;
29
+ }
30
+ export interface DescriptorProveedor {
31
+ nombre: string;
32
+ necesitaClave: boolean;
33
+ /** Import perezoso: no se ejecuta hasta que el proveedor le toca en el orden. */
34
+ cargar: () => Promise<ModuloProveedor>;
35
+ }
36
+ //# sourceMappingURL=tipos.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tipos.d.ts","sourceRoot":"","sources":["../../../../src/core/web/proveedores/tipos.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,yFAAwF;AACxF,MAAM,WAAW,kBAAkB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG,CAC3B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,SAAS,EAAE,OAAO,KAAK,EACvB,MAAM,CAAC,EAAE,WAAW,KAChB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAEnC,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,aAAa,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,iFAAiF;IACjF,MAAM,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;CACvC","sourcesContent":["/**\n * Tipos compartidos por los proveedores de búsqueda web.\n *\n * Un proveedor es un módulo que se carga con `import()` la primera vez que se\n * necesita: importar este fichero (o `registro.ts`) NO debe cargar ni un solo\n * proveedor. Son pesados —cada uno trae su propio parseo— y como mucho se usa\n * uno por sesión, así que cargarlos todos por adelantado es trabajo tirado.\n */\n\n/** Un resultado de búsqueda ya normalizado, con snippet cuando el proveedor lo trae. */\nexport interface ResultadoProveedor {\n\ttitulo: string;\n\turl: string;\n\tresumen?: string;\n\t/** Antigüedad tal y como la da el proveedor (\"3 weeks ago\", \"2026-07-30\"). */\n\tedad?: string;\n}\n\n/**\n * Busca. Los proveedores SIN clave reciben `clave === undefined` y lo ignoran;\n * el registro nunca llama a un proveedor CON clave sin haberla resuelto antes.\n *\n * Debe LANZAR en cualquier fallo real (red, HTTP, bloqueo anti-bot, JSON roto):\n * el registro pasa al siguiente proveedor con ese error. Devolver `[]` es\n * SOLO para «he preguntado y no hay resultados» — confundir las dos cosas es\n * el error que la puerta de este hueco existe para atrapar.\n */\nexport type FuncionBuscar = (\n\tconsulta: string,\n\tmaximo: number,\n\tclave: string | undefined,\n\tfetchImpl: typeof fetch,\n\tsignal?: AbortSignal,\n) => Promise<ResultadoProveedor[]>;\n\nexport interface ModuloProveedor {\n\tbuscar: FuncionBuscar;\n}\n\nexport interface DescriptorProveedor {\n\tnombre: string;\n\tnecesitaClave: boolean;\n\t/** Import perezoso: no se ejecuta hasta que el proveedor le toca en el orden. */\n\tcargar: () => Promise<ModuloProveedor>;\n}\n"]}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Tipos compartidos por los proveedores de búsqueda web.
3
+ *
4
+ * Un proveedor es un módulo que se carga con `import()` la primera vez que se
5
+ * necesita: importar este fichero (o `registro.ts`) NO debe cargar ni un solo
6
+ * proveedor. Son pesados —cada uno trae su propio parseo— y como mucho se usa
7
+ * uno por sesión, así que cargarlos todos por adelantado es trabajo tirado.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=tipos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tipos.js","sourceRoot":"","sources":["../../../../src/core/web/proveedores/tipos.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG","sourcesContent":["/**\n * Tipos compartidos por los proveedores de búsqueda web.\n *\n * Un proveedor es un módulo que se carga con `import()` la primera vez que se\n * necesita: importar este fichero (o `registro.ts`) NO debe cargar ni un solo\n * proveedor. Son pesados —cada uno trae su propio parseo— y como mucho se usa\n * uno por sesión, así que cargarlos todos por adelantado es trabajo tirado.\n */\n\n/** Un resultado de búsqueda ya normalizado, con snippet cuando el proveedor lo trae. */\nexport interface ResultadoProveedor {\n\ttitulo: string;\n\turl: string;\n\tresumen?: string;\n\t/** Antigüedad tal y como la da el proveedor (\"3 weeks ago\", \"2026-07-30\"). */\n\tedad?: string;\n}\n\n/**\n * Busca. Los proveedores SIN clave reciben `clave === undefined` y lo ignoran;\n * el registro nunca llama a un proveedor CON clave sin haberla resuelto antes.\n *\n * Debe LANZAR en cualquier fallo real (red, HTTP, bloqueo anti-bot, JSON roto):\n * el registro pasa al siguiente proveedor con ese error. Devolver `[]` es\n * SOLO para «he preguntado y no hay resultados» — confundir las dos cosas es\n * el error que la puerta de este hueco existe para atrapar.\n */\nexport type FuncionBuscar = (\n\tconsulta: string,\n\tmaximo: number,\n\tclave: string | undefined,\n\tfetchImpl: typeof fetch,\n\tsignal?: AbortSignal,\n) => Promise<ResultadoProveedor[]>;\n\nexport interface ModuloProveedor {\n\tbuscar: FuncionBuscar;\n}\n\nexport interface DescriptorProveedor {\n\tnombre: string;\n\tnecesitaClave: boolean;\n\t/** Import perezoso: no se ejecuta hasta que el proveedor le toca en el orden. */\n\tcargar: () => Promise<ModuloProveedor>;\n}\n"]}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Envolver un `fetch` para que cada salida quede en el libro de sesión.
3
+ *
4
+ * POR QUÉ VIVE APARTE. Esto nació dentro de `web/tools.ts`, envolviendo el
5
+ * `fetch` que reciben el fetch genérico, los scrapers y los proveedores de
6
+ * búsqueda. Cubría esos tres caminos y ninguno más, y el informe para el DPO
7
+ * escribía **«No hubo transferencias»** — una ausencia que el registro no podía
8
+ * sostener, porque el cliente MCP hablaba con servidores remotos sin pasar por
9
+ * aquí.
10
+ *
11
+ * Un DPO diría que contactar con un MCP remoto ES una transferencia (art. 44 y
12
+ * siguientes del RGPD), y tendría razón. Sacarlo a un módulo propio es lo que
13
+ * permite que cualquier camino de salida lo use, en vez de tener el registro
14
+ * atado al que se implementó primero.
15
+ *
16
+ * LO QUE REGISTRA Y LO QUE NO. El dominio y si se permitió, nunca la URL
17
+ * completa ni el cuerpo. Una ruta puede llevar un identificador y un cuerpo
18
+ * puede llevar datos personales; el libro guarda la FORMA de lo que pasó, no su
19
+ * contenido. Un registro de cumplimiento que copiara los datos sería un segundo
20
+ * almacén de justo lo que el RGPD quiere minimizar.
21
+ */
22
+ /** Qué se le cuenta al libro. `motivo` solo cuando se bloquea. */
23
+ export type AnotarRed = (dominio: string, permitido: boolean, motivo?: string) => void;
24
+ /** El dominio de un destino de `fetch`, o `null` si no se puede determinar. */
25
+ export declare function dominioDeDestino(destino: Parameters<typeof fetch>[0]): string | null;
26
+ /**
27
+ * `fetch` que anota cada salida antes de hacerla.
28
+ *
29
+ * Si `anotar` es `undefined` devuelve el `fetch` original tal cual, sin
30
+ * envolver: quien no tiene libro no paga el coste ni ve un comportamiento
31
+ * distinto.
32
+ *
33
+ * El registro es best-effort y la petición no: si anotar falla, la descarga
34
+ * sigue. Al revés sería un libro que puede tumbar el producto, y eso acabaría
35
+ * con el libro desactivado.
36
+ */
37
+ export declare function fetchConRegistro(base: typeof fetch, anotar: AnotarRed | undefined): typeof fetch;
38
+ export declare function publicarAnotarRed(anotar: AnotarRed | undefined): void;
39
+ /** `undefined` = no hay sesión con libro; quien llame no envuelve nada. */
40
+ export declare function anotarRedDeLaSesion(): AnotarRed | undefined;
41
+ /** Solo para pruebas. */
42
+ export declare function olvidarAnotarRed(): void;
43
+ //# sourceMappingURL=registro-red.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registro-red.d.ts","sourceRoot":"","sources":["../../../src/core/web/registro-red.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,mEAAkE;AAClE,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;AAEvF,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAOpF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,KAAK,CAahG;AAmBD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,CAErE;AAED,4EAA2E;AAC3E,wBAAgB,mBAAmB,IAAI,SAAS,GAAG,SAAS,CAE3D;AAED,yBAAyB;AACzB,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC","sourcesContent":["/**\n * Envolver un `fetch` para que cada salida quede en el libro de sesión.\n *\n * POR QUÉ VIVE APARTE. Esto nació dentro de `web/tools.ts`, envolviendo el\n * `fetch` que reciben el fetch genérico, los scrapers y los proveedores de\n * búsqueda. Cubría esos tres caminos y ninguno más, y el informe para el DPO\n * escribía **«No hubo transferencias»** — una ausencia que el registro no podía\n * sostener, porque el cliente MCP hablaba con servidores remotos sin pasar por\n * aquí.\n *\n * Un DPO diría que contactar con un MCP remoto ES una transferencia (art. 44 y\n * siguientes del RGPD), y tendría razón. Sacarlo a un módulo propio es lo que\n * permite que cualquier camino de salida lo use, en vez de tener el registro\n * atado al que se implementó primero.\n *\n * LO QUE REGISTRA Y LO QUE NO. El dominio y si se permitió, nunca la URL\n * completa ni el cuerpo. Una ruta puede llevar un identificador y un cuerpo\n * puede llevar datos personales; el libro guarda la FORMA de lo que pasó, no su\n * contenido. Un registro de cumplimiento que copiara los datos sería un segundo\n * almacén de justo lo que el RGPD quiere minimizar.\n */\n\n/** Qué se le cuenta al libro. `motivo` solo cuando se bloquea. */\nexport type AnotarRed = (dominio: string, permitido: boolean, motivo?: string) => void;\n\n/** El dominio de un destino de `fetch`, o `null` si no se puede determinar. */\nexport function dominioDeDestino(destino: Parameters<typeof fetch>[0]): string | null {\n\ttry {\n\t\tconst url = typeof destino === \"string\" ? destino : destino instanceof URL ? destino.href : destino.url;\n\t\treturn new URL(url).hostname || null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/**\n * `fetch` que anota cada salida antes de hacerla.\n *\n * Si `anotar` es `undefined` devuelve el `fetch` original tal cual, sin\n * envolver: quien no tiene libro no paga el coste ni ve un comportamiento\n * distinto.\n *\n * El registro es best-effort y la petición no: si anotar falla, la descarga\n * sigue. Al revés sería un libro que puede tumbar el producto, y eso acabaría\n * con el libro desactivado.\n */\nexport function fetchConRegistro(base: typeof fetch, anotar: AnotarRed | undefined): typeof fetch {\n\tif (!anotar) return base;\n\treturn (destino, init) => {\n\t\tconst dominio = dominioDeDestino(destino);\n\t\tif (dominio) {\n\t\t\ttry {\n\t\t\t\tanotar(dominio, true);\n\t\t\t} catch {\n\t\t\t\t// Un fallo del libro no puede impedir una petición.\n\t\t\t}\n\t\t}\n\t\treturn base(destino, init);\n\t};\n}\n\n/**\n * El `anotarRed` de la sesión en curso, publicado.\n *\n * Los caminos de salida no nacen todos en el mismo sitio: las tools web se\n * crean en `agent-session.ts`, que SÍ tiene el libro a mano, y el cliente MCP\n * lo crea `resource-loader.ts`, que no. Enhebrar el libro hasta allí costaba\n * hunks del presupuesto de fork en un fichero de upstream; publicarlo cuesta\n * cero y es el mismo patrón ya usado —y validado— en\n * `core/extensiones/vigilancia.ts`.\n *\n * Es estado mutable de módulo, con lo que eso tiene de malo. Se acepta por lo\n * que compra: sin esto el informe para el DPO afirma «No hubo transferencias»\n * sobre una sesión que habló con un servidor de terceros, y esa es la clase de\n * afirmación que no se puede hacer a la ligera en un registro de cumplimiento.\n */\nlet anotarPublicado: AnotarRed | undefined;\n\nexport function publicarAnotarRed(anotar: AnotarRed | undefined): void {\n\tanotarPublicado = anotar;\n}\n\n/** `undefined` = no hay sesión con libro; quien llame no envuelve nada. */\nexport function anotarRedDeLaSesion(): AnotarRed | undefined {\n\treturn anotarPublicado;\n}\n\n/** Solo para pruebas. */\nexport function olvidarAnotarRed(): void {\n\tanotarPublicado = undefined;\n}\n"]}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Envolver un `fetch` para que cada salida quede en el libro de sesión.
3
+ *
4
+ * POR QUÉ VIVE APARTE. Esto nació dentro de `web/tools.ts`, envolviendo el
5
+ * `fetch` que reciben el fetch genérico, los scrapers y los proveedores de
6
+ * búsqueda. Cubría esos tres caminos y ninguno más, y el informe para el DPO
7
+ * escribía **«No hubo transferencias»** — una ausencia que el registro no podía
8
+ * sostener, porque el cliente MCP hablaba con servidores remotos sin pasar por
9
+ * aquí.
10
+ *
11
+ * Un DPO diría que contactar con un MCP remoto ES una transferencia (art. 44 y
12
+ * siguientes del RGPD), y tendría razón. Sacarlo a un módulo propio es lo que
13
+ * permite que cualquier camino de salida lo use, en vez de tener el registro
14
+ * atado al que se implementó primero.
15
+ *
16
+ * LO QUE REGISTRA Y LO QUE NO. El dominio y si se permitió, nunca la URL
17
+ * completa ni el cuerpo. Una ruta puede llevar un identificador y un cuerpo
18
+ * puede llevar datos personales; el libro guarda la FORMA de lo que pasó, no su
19
+ * contenido. Un registro de cumplimiento que copiara los datos sería un segundo
20
+ * almacén de justo lo que el RGPD quiere minimizar.
21
+ */
22
+ /** El dominio de un destino de `fetch`, o `null` si no se puede determinar. */
23
+ export function dominioDeDestino(destino) {
24
+ try {
25
+ const url = typeof destino === "string" ? destino : destino instanceof URL ? destino.href : destino.url;
26
+ return new URL(url).hostname || null;
27
+ }
28
+ catch {
29
+ return null;
30
+ }
31
+ }
32
+ /**
33
+ * `fetch` que anota cada salida antes de hacerla.
34
+ *
35
+ * Si `anotar` es `undefined` devuelve el `fetch` original tal cual, sin
36
+ * envolver: quien no tiene libro no paga el coste ni ve un comportamiento
37
+ * distinto.
38
+ *
39
+ * El registro es best-effort y la petición no: si anotar falla, la descarga
40
+ * sigue. Al revés sería un libro que puede tumbar el producto, y eso acabaría
41
+ * con el libro desactivado.
42
+ */
43
+ export function fetchConRegistro(base, anotar) {
44
+ if (!anotar)
45
+ return base;
46
+ return (destino, init) => {
47
+ const dominio = dominioDeDestino(destino);
48
+ if (dominio) {
49
+ try {
50
+ anotar(dominio, true);
51
+ }
52
+ catch {
53
+ // Un fallo del libro no puede impedir una petición.
54
+ }
55
+ }
56
+ return base(destino, init);
57
+ };
58
+ }
59
+ /**
60
+ * El `anotarRed` de la sesión en curso, publicado.
61
+ *
62
+ * Los caminos de salida no nacen todos en el mismo sitio: las tools web se
63
+ * crean en `agent-session.ts`, que SÍ tiene el libro a mano, y el cliente MCP
64
+ * lo crea `resource-loader.ts`, que no. Enhebrar el libro hasta allí costaba
65
+ * hunks del presupuesto de fork en un fichero de upstream; publicarlo cuesta
66
+ * cero y es el mismo patrón ya usado —y validado— en
67
+ * `core/extensiones/vigilancia.ts`.
68
+ *
69
+ * Es estado mutable de módulo, con lo que eso tiene de malo. Se acepta por lo
70
+ * que compra: sin esto el informe para el DPO afirma «No hubo transferencias»
71
+ * sobre una sesión que habló con un servidor de terceros, y esa es la clase de
72
+ * afirmación que no se puede hacer a la ligera en un registro de cumplimiento.
73
+ */
74
+ let anotarPublicado;
75
+ export function publicarAnotarRed(anotar) {
76
+ anotarPublicado = anotar;
77
+ }
78
+ /** `undefined` = no hay sesión con libro; quien llame no envuelve nada. */
79
+ export function anotarRedDeLaSesion() {
80
+ return anotarPublicado;
81
+ }
82
+ /** Solo para pruebas. */
83
+ export function olvidarAnotarRed() {
84
+ anotarPublicado = undefined;
85
+ }
86
+ //# sourceMappingURL=registro-red.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registro-red.js","sourceRoot":"","sources":["../../../src/core/web/registro-red.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH,+EAA+E;AAC/E,MAAM,UAAU,gBAAgB,CAAC,OAAoC,EAAiB;IACrF,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,YAAY,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;QACxG,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AAAA,CACD;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAkB,EAAE,MAA6B,EAAgB;IACjG,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,OAAO,EAAE,CAAC;YACb,IAAI,CAAC;gBACJ,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACR,qDAAoD;YACrD,CAAC;QACF,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAAA,CAC3B,CAAC;AAAA,CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,IAAI,eAAsC,CAAC;AAE3C,MAAM,UAAU,iBAAiB,CAAC,MAA6B,EAAQ;IACtE,eAAe,GAAG,MAAM,CAAC;AAAA,CACzB;AAED,4EAA2E;AAC3E,MAAM,UAAU,mBAAmB,GAA0B;IAC5D,OAAO,eAAe,CAAC;AAAA,CACvB;AAED,yBAAyB;AACzB,MAAM,UAAU,gBAAgB,GAAS;IACxC,eAAe,GAAG,SAAS,CAAC;AAAA,CAC5B","sourcesContent":["/**\n * Envolver un `fetch` para que cada salida quede en el libro de sesión.\n *\n * POR QUÉ VIVE APARTE. Esto nació dentro de `web/tools.ts`, envolviendo el\n * `fetch` que reciben el fetch genérico, los scrapers y los proveedores de\n * búsqueda. Cubría esos tres caminos y ninguno más, y el informe para el DPO\n * escribía **«No hubo transferencias»** — una ausencia que el registro no podía\n * sostener, porque el cliente MCP hablaba con servidores remotos sin pasar por\n * aquí.\n *\n * Un DPO diría que contactar con un MCP remoto ES una transferencia (art. 44 y\n * siguientes del RGPD), y tendría razón. Sacarlo a un módulo propio es lo que\n * permite que cualquier camino de salida lo use, en vez de tener el registro\n * atado al que se implementó primero.\n *\n * LO QUE REGISTRA Y LO QUE NO. El dominio y si se permitió, nunca la URL\n * completa ni el cuerpo. Una ruta puede llevar un identificador y un cuerpo\n * puede llevar datos personales; el libro guarda la FORMA de lo que pasó, no su\n * contenido. Un registro de cumplimiento que copiara los datos sería un segundo\n * almacén de justo lo que el RGPD quiere minimizar.\n */\n\n/** Qué se le cuenta al libro. `motivo` solo cuando se bloquea. */\nexport type AnotarRed = (dominio: string, permitido: boolean, motivo?: string) => void;\n\n/** El dominio de un destino de `fetch`, o `null` si no se puede determinar. */\nexport function dominioDeDestino(destino: Parameters<typeof fetch>[0]): string | null {\n\ttry {\n\t\tconst url = typeof destino === \"string\" ? destino : destino instanceof URL ? destino.href : destino.url;\n\t\treturn new URL(url).hostname || null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/**\n * `fetch` que anota cada salida antes de hacerla.\n *\n * Si `anotar` es `undefined` devuelve el `fetch` original tal cual, sin\n * envolver: quien no tiene libro no paga el coste ni ve un comportamiento\n * distinto.\n *\n * El registro es best-effort y la petición no: si anotar falla, la descarga\n * sigue. Al revés sería un libro que puede tumbar el producto, y eso acabaría\n * con el libro desactivado.\n */\nexport function fetchConRegistro(base: typeof fetch, anotar: AnotarRed | undefined): typeof fetch {\n\tif (!anotar) return base;\n\treturn (destino, init) => {\n\t\tconst dominio = dominioDeDestino(destino);\n\t\tif (dominio) {\n\t\t\ttry {\n\t\t\t\tanotar(dominio, true);\n\t\t\t} catch {\n\t\t\t\t// Un fallo del libro no puede impedir una petición.\n\t\t\t}\n\t\t}\n\t\treturn base(destino, init);\n\t};\n}\n\n/**\n * El `anotarRed` de la sesión en curso, publicado.\n *\n * Los caminos de salida no nacen todos en el mismo sitio: las tools web se\n * crean en `agent-session.ts`, que SÍ tiene el libro a mano, y el cliente MCP\n * lo crea `resource-loader.ts`, que no. Enhebrar el libro hasta allí costaba\n * hunks del presupuesto de fork en un fichero de upstream; publicarlo cuesta\n * cero y es el mismo patrón ya usado —y validado— en\n * `core/extensiones/vigilancia.ts`.\n *\n * Es estado mutable de módulo, con lo que eso tiene de malo. Se acepta por lo\n * que compra: sin esto el informe para el DPO afirma «No hubo transferencias»\n * sobre una sesión que habló con un servidor de terceros, y esa es la clase de\n * afirmación que no se puede hacer a la ligera en un registro de cumplimiento.\n */\nlet anotarPublicado: AnotarRed | undefined;\n\nexport function publicarAnotarRed(anotar: AnotarRed | undefined): void {\n\tanotarPublicado = anotar;\n}\n\n/** `undefined` = no hay sesión con libro; quien llame no envuelve nada. */\nexport function anotarRedDeLaSesion(): AnotarRed | undefined {\n\treturn anotarPublicado;\n}\n\n/** Solo para pruebas. */\nexport function olvidarAnotarRed(): void {\n\tanotarPublicado = undefined;\n}\n"]}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * CISA KEV (Known Exploited Vulnerabilities), vía el feed JSON público.
3
+ *
4
+ * No hay endpoint por CVE: el feed es el catálogo entero (~1.5 MB). Se pide
5
+ * completo y se filtra en memoria — mismo coste de red que cualquier otra
6
+ * consulta a este catálogo, no hay forma más barata sin clave.
7
+ */
8
+ import { type FuncionScraper } from "./tipos.ts";
9
+ export declare const scrapear: FuncionScraper;
10
+ //# sourceMappingURL=cisa-kev.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cisa-kev.d.ts","sourceRoot":"","sources":["../../../../src/core/web/scrapers/cisa-kev.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAgBpE,eAAO,MAAM,QAAQ,EAAE,cAwBtB,CAAC","sourcesContent":["/**\n * CISA KEV (Known Exploited Vulnerabilities), vía el feed JSON público.\n *\n * No hay endpoint por CVE: el feed es el catálogo entero (~1.5 MB). Se pide\n * completo y se filtra en memoria — mismo coste de red que cualquier otra\n * consulta a este catálogo, no hay forma más barata sin clave.\n */\nimport { esHostOSubdominio, type FuncionScraper } from \"./tipos.ts\";\n\nconst FEED_URL = \"https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json\";\nconst RE_CVE = /CVE-\\d{4}-\\d{4,7}/i;\n\ninterface EntradaKev {\n\tcveID?: string;\n\tvendorProject?: string;\n\tproduct?: string;\n\tvulnerabilityName?: string;\n\tshortDescription?: string;\n\tdateAdded?: string;\n\tdueDate?: string;\n\tknownRansomwareCampaignUse?: string;\n}\n\nexport const scrapear: FuncionScraper = async (url, fetchImpl, signal) => {\n\tif (!esHostOSubdominio(url.hostname.toLowerCase(), \"cisa.gov\")) return null;\n\tconst cveMatch = url.pathname.match(RE_CVE) ?? url.search.match(RE_CVE);\n\tif (!cveMatch) return null;\n\tconst cveId = cveMatch[0].toUpperCase();\n\n\tconst respuesta = await fetchImpl(FEED_URL, { headers: { Accept: \"application/json\" }, signal });\n\tif (!respuesta.ok) throw new Error(`CISA KEV respondió HTTP ${respuesta.status}.`);\n\tconst doc = (await respuesta.json()) as { vulnerabilities?: EntradaKev[] };\n\tconst entrada = doc.vulnerabilities?.find((v) => v.cveID?.toUpperCase() === cveId);\n\tif (!entrada) return null; // el CVE es válido pero no está en el catálogo KEV\n\n\treturn {\n\t\ttitulo: `${entrada.cveID} — ${entrada.vulnerabilityName ?? \"explotado activamente (KEV)\"}`,\n\t\turl: `https://www.cisa.gov/known-exploited-vulnerabilities-catalog?search_api_fulltext=${entrada.cveID}`,\n\t\tresumen: entrada.shortDescription ?? \"\",\n\t\tdatos: {\n\t\t\tvendedor: entrada.vendorProject,\n\t\t\tproducto: entrada.product,\n\t\t\tañadido: entrada.dateAdded,\n\t\t\tfechaLimite: entrada.dueDate,\n\t\t\tusoEnRansomware: entrada.knownRansomwareCampaignUse,\n\t\t},\n\t};\n};\n"]}