@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,93 @@
1
+ /**
2
+ * Agrega el consumo real a partir de los JSONL de sesión.
3
+ *
4
+ * El dato ya estaba ahí —cada mensaje del asistente guarda `usage` con tokens y
5
+ * coste—, solo que nadie lo leía. Esto no estima nada: suma lo que el proveedor
6
+ * cobró.
7
+ *
8
+ * Los tokens de caché se cuentan APARTE. Meterlos en el total haría que un día
9
+ * con mucha caché pareciera carísimo cuando es justo lo contrario: la caché es
10
+ * lo que abarata: en DeepSeek un acierto cuesta ~1/31 de un fallo. Un panel que
11
+ * los mezcla enseña un número que no se corresponde con la factura.
12
+ */
13
+ function vacio() {
14
+ return { mensajes: 0, entrada: 0, salida: 0, cacheRead: 0, cacheWrite: 0, coste: 0 };
15
+ }
16
+ function acumular(destino, uso) {
17
+ destino.mensajes += 1;
18
+ destino.entrada += uso.input ?? 0;
19
+ destino.salida += uso.output ?? 0;
20
+ destino.cacheRead += uso.cacheRead ?? 0;
21
+ destino.cacheWrite += uso.cacheWrite ?? 0;
22
+ destino.coste += uso.cost?.total ?? 0;
23
+ }
24
+ function enCubo(mapa, clave) {
25
+ const actual = mapa[clave];
26
+ if (actual)
27
+ return actual;
28
+ const nuevo = vacio();
29
+ mapa[clave] = nuevo;
30
+ return nuevo;
31
+ }
32
+ /**
33
+ * Directorios que nunca son un proyecto del usuario.
34
+ *
35
+ * Las suites de tests crean sus sesiones en temporales del sistema y acaban en
36
+ * el mismo almacén que las reales: sin filtrarlas, el desglose por proyecto son
37
+ * 989 rutas `/var/folders/kl/5b56hptn6…` que ya ni existen, y el consumo real
38
+ * queda enterrado debajo.
39
+ *
40
+ * Estrecho a propósito: esconder un proyecto real sería peor que enseñar una
41
+ * ruta rara, y por eso hay `--all`.
42
+ */
43
+ const RUTAS_TEMPORALES = [/^\/var\/folders\//, /^\/private\/var\/folders\//, /^\/tmp\//, /[\\/]Temp[\\/]/i];
44
+ export function esRutaTemporal(ruta) {
45
+ return RUTAS_TEMPORALES.some((patron) => patron.test(ruta));
46
+ }
47
+ /**
48
+ * Resume una o varias sesiones.
49
+ *
50
+ * Una sesión cuenta solo si aportó consumo: los JSONL abandonados sin una sola
51
+ * respuesta inflarían el recuento de sesiones sin corresponder a trabajo.
52
+ */
53
+ export function resumir(sesiones, opciones = {}) {
54
+ const resumen = {
55
+ ...vacio(),
56
+ sesiones: 0,
57
+ sesionesTemporales: 0,
58
+ porModelo: {},
59
+ porDia: {},
60
+ porProyecto: {},
61
+ };
62
+ for (const sesion of sesiones) {
63
+ let aporto = false;
64
+ // El `cwd` viene en la cabecera; si falta, se etiqueta explícitamente en
65
+ // vez de repartirlo entre los demás proyectos.
66
+ const proyecto = sesion.cwd ?? sesion.lineas.find((l) => l.type === "session")?.cwd ?? "(desconocido)";
67
+ if (!opciones.incluirTemporales && esRutaTemporal(proyecto)) {
68
+ resumen.sesionesTemporales += 1;
69
+ continue;
70
+ }
71
+ for (const linea of sesion.lineas) {
72
+ const uso = linea.message?.usage;
73
+ if (!uso || linea.message?.role !== "assistant")
74
+ continue;
75
+ if (opciones.desde && linea.timestamp && linea.timestamp < opciones.desde)
76
+ continue;
77
+ aporto = true;
78
+ acumular(resumen, uso);
79
+ acumular(enCubo(resumen.porModelo, `${linea.message.provider ?? "?"}/${linea.message.model ?? "?"}`), uso);
80
+ acumular(enCubo(resumen.porProyecto, proyecto), uso);
81
+ if (linea.timestamp)
82
+ acumular(enCubo(resumen.porDia, linea.timestamp.slice(0, 10)), uso);
83
+ }
84
+ if (aporto)
85
+ resumen.sesiones += 1;
86
+ }
87
+ return resumen;
88
+ }
89
+ /** Ordena un desglose de mayor a menor coste, que es el orden que importa. */
90
+ export function porCoste(cubos) {
91
+ return Object.entries(cubos).sort((a, b) => b[1].coste - a[1].coste || b[1].salida - a[1].salida);
92
+ }
93
+ //# sourceMappingURL=aggregate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../../src/core/usage/aggregate.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Agrega el consumo real a partir de los JSONL de sesión.\n *\n * El dato ya estaba ahí —cada mensaje del asistente guarda `usage` con tokens y\n * coste—, solo que nadie lo leía. Esto no estima nada: suma lo que el proveedor\n * cobró.\n *\n * Los tokens de caché se cuentan APARTE. Meterlos en el total haría que un día\n * con mucha caché pareciera carísimo cuando es justo lo contrario: la caché es\n * lo que abarata: en DeepSeek un acierto cuesta ~1/31 de un fallo. Un panel que\n * los mezcla enseña un número que no se corresponde con la factura.\n */\n\nexport interface UsoBruto {\n\tinput?: number;\n\toutput?: number;\n\tcacheRead?: number;\n\tcacheWrite?: number;\n\tcost?: { total?: number };\n}\n\nexport interface LineaSesion {\n\ttype?: string;\n\ttimestamp?: string;\n\tcwd?: string;\n\tmessage?: {\n\t\trole?: string;\n\t\tprovider?: string;\n\t\tmodel?: string;\n\t\tusage?: UsoBruto;\n\t};\n}\n\nexport interface Totales {\n\tmensajes: number;\n\tentrada: number;\n\tsalida: number;\n\tcacheRead: number;\n\tcacheWrite: number;\n\tcoste: number;\n}\n\nexport interface Resumen extends Totales {\n\tsesiones: number;\n\t/** Sesiones descartadas por vivir en un directorio temporal. */\n\tsesionesTemporales: number;\n\tporModelo: Record<string, Totales>;\n\tporDia: Record<string, Totales>;\n\tporProyecto: Record<string, Totales>;\n}\n\nfunction vacio(): Totales {\n\treturn { mensajes: 0, entrada: 0, salida: 0, cacheRead: 0, cacheWrite: 0, coste: 0 };\n}\n\nfunction acumular(destino: Totales, uso: UsoBruto): void {\n\tdestino.mensajes += 1;\n\tdestino.entrada += uso.input ?? 0;\n\tdestino.salida += uso.output ?? 0;\n\tdestino.cacheRead += uso.cacheRead ?? 0;\n\tdestino.cacheWrite += uso.cacheWrite ?? 0;\n\tdestino.coste += uso.cost?.total ?? 0;\n}\n\nfunction enCubo(mapa: Record<string, Totales>, clave: string): Totales {\n\tconst actual = mapa[clave];\n\tif (actual) return actual;\n\tconst nuevo = vacio();\n\tmapa[clave] = nuevo;\n\treturn nuevo;\n}\n\n/**\n * Directorios que nunca son un proyecto del usuario.\n *\n * Las suites de tests crean sus sesiones en temporales del sistema y acaban en\n * el mismo almacén que las reales: sin filtrarlas, el desglose por proyecto son\n * 989 rutas `/var/folders/kl/5b56hptn6…` que ya ni existen, y el consumo real\n * queda enterrado debajo.\n *\n * Estrecho a propósito: esconder un proyecto real sería peor que enseñar una\n * ruta rara, y por eso hay `--all`.\n */\nconst RUTAS_TEMPORALES = [/^\\/var\\/folders\\//, /^\\/private\\/var\\/folders\\//, /^\\/tmp\\//, /[\\\\/]Temp[\\\\/]/i];\n\nexport function esRutaTemporal(ruta: string): boolean {\n\treturn RUTAS_TEMPORALES.some((patron) => patron.test(ruta));\n}\n\nexport interface OpcionesResumen {\n\t/** Solo mensajes a partir de esta fecha (ISO). */\n\tdesde?: string;\n\t/** Incluir las sesiones de directorios temporales (las de los tests). */\n\tincluirTemporales?: boolean;\n}\n\n/**\n * Resume una o varias sesiones.\n *\n * Una sesión cuenta solo si aportó consumo: los JSONL abandonados sin una sola\n * respuesta inflarían el recuento de sesiones sin corresponder a trabajo.\n */\nexport function resumir(\n\tsesiones: Array<{ cwd?: string; lineas: LineaSesion[] }>,\n\topciones: OpcionesResumen = {},\n): Resumen {\n\tconst resumen: Resumen = {\n\t\t...vacio(),\n\t\tsesiones: 0,\n\t\tsesionesTemporales: 0,\n\t\tporModelo: {},\n\t\tporDia: {},\n\t\tporProyecto: {},\n\t};\n\n\tfor (const sesion of sesiones) {\n\t\tlet aporto = false;\n\t\t// El `cwd` viene en la cabecera; si falta, se etiqueta explícitamente en\n\t\t// vez de repartirlo entre los demás proyectos.\n\t\tconst proyecto = sesion.cwd ?? sesion.lineas.find((l) => l.type === \"session\")?.cwd ?? \"(desconocido)\";\n\t\tif (!opciones.incluirTemporales && esRutaTemporal(proyecto)) {\n\t\t\tresumen.sesionesTemporales += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (const linea of sesion.lineas) {\n\t\t\tconst uso = linea.message?.usage;\n\t\t\tif (!uso || linea.message?.role !== \"assistant\") continue;\n\t\t\tif (opciones.desde && linea.timestamp && linea.timestamp < opciones.desde) continue;\n\n\t\t\taporto = true;\n\t\t\tacumular(resumen, uso);\n\t\t\tacumular(enCubo(resumen.porModelo, `${linea.message.provider ?? \"?\"}/${linea.message.model ?? \"?\"}`), uso);\n\t\t\tacumular(enCubo(resumen.porProyecto, proyecto), uso);\n\t\t\tif (linea.timestamp) acumular(enCubo(resumen.porDia, linea.timestamp.slice(0, 10)), uso);\n\t\t}\n\t\tif (aporto) resumen.sesiones += 1;\n\t}\n\n\treturn resumen;\n}\n\n/** Ordena un desglose de mayor a menor coste, que es el orden que importa. */\nexport function porCoste(cubos: Record<string, Totales>): Array<[string, Totales]> {\n\treturn Object.entries(cubos).sort((a, b) => b[1].coste - a[1].coste || b[1].salida - a[1].salida);\n}\n"]}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Cuota de Anthropic — solo publica límites la sesión OAuth de Claude
3
+ * (claude.ai/Claude Code); la clave de API de la consola es pago por token,
4
+ * sin techo que consultar.
5
+ *
6
+ * Mismo endpoint que usa Claude Code para pintar "Usage limit" en su CLI.
7
+ */
8
+ import { type ConsultorCuota } from "./tipos.ts";
9
+ export declare const consultorAnthropic: ConsultorCuota;
10
+ //# sourceMappingURL=anthropic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../../src/core/usage/cuota/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,cAAc,EAAyC,MAAM,YAAY,CAAC;AA0BxF,eAAO,MAAM,kBAAkB,EAAE,cA0ChC,CAAC","sourcesContent":["/**\n * Cuota de Anthropic — solo publica límites la sesión OAuth de Claude\n * (claude.ai/Claude Code); la clave de API de la consola es pago por token,\n * sin techo que consultar.\n *\n * Mismo endpoint que usa Claude Code para pintar \"Usage limit\" en su CLI.\n */\n\nimport { type ConsultorCuota, ErrorConsultaCuota, type VentanaCuota } from \"./tipos.ts\";\n\nconst ENDPOINT = \"https://api.anthropic.com/api/oauth/usage\";\n\ninterface CuboBruto {\n\tutilization?: number;\n\tresets_at?: string | null;\n}\n\ninterface RespuestaAnthropic {\n\tfive_hour?: CuboBruto | null;\n\tseven_day?: CuboBruto | null;\n}\n\nfunction aVentana(etiqueta: string, cubo: CuboBruto | null | undefined): VentanaCuota | undefined {\n\tif (!cubo || typeof cubo.utilization !== \"number\") return undefined;\n\tconst seReinicia = cubo.resets_at ? Date.parse(cubo.resets_at) : Number.NaN;\n\treturn {\n\t\tetiqueta,\n\t\tusado: Math.min(Math.max(cubo.utilization, 0), 100),\n\t\tlimite: 100,\n\t\tseReinicia: Number.isFinite(seReinicia) ? seReinicia : null,\n\t\tunidad: \"porcentaje\",\n\t};\n}\n\nexport const consultorAnthropic: ConsultorCuota = {\n\tid: \"anthropic\",\n\tsoporta: (credencial) => credencial.type === \"oauth\",\n\tasync consultar({ credencial, fetch: fetchImpl = fetch, señal }) {\n\t\tif (credencial.type !== \"oauth\") return null;\n\n\t\tlet respuesta: Response;\n\t\ttry {\n\t\t\trespuesta = await fetchImpl(ENDPOINT, {\n\t\t\t\theaders: {\n\t\t\t\t\taccept: \"application/json\",\n\t\t\t\t\t\"anthropic-beta\": \"oauth-2025-04-20\",\n\t\t\t\t\t\"content-type\": \"application/json\",\n\t\t\t\t\tauthorization: `Bearer ${credencial.access}`,\n\t\t\t\t},\n\t\t\t\tsignal: señal,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthrow new ErrorConsultaCuota(\"anthropic\", `no se pudo contactar con Anthropic: ${String(error)}`, {\n\t\t\t\tcause: error,\n\t\t\t});\n\t\t}\n\t\tif (!respuesta.ok) {\n\t\t\tthrow new ErrorConsultaCuota(\"anthropic\", `Anthropic respondió ${respuesta.status} ${respuesta.statusText}`);\n\t\t}\n\n\t\tlet datos: RespuestaAnthropic;\n\t\ttry {\n\t\t\tdatos = (await respuesta.json()) as RespuestaAnthropic;\n\t\t} catch (error) {\n\t\t\tthrow new ErrorConsultaCuota(\"anthropic\", `la respuesta de Anthropic no es JSON válido: ${String(error)}`, {\n\t\t\t\tcause: error,\n\t\t\t});\n\t\t}\n\n\t\tconst ventanas = [aVentana(\"5 horas\", datos.five_hour), aVentana(\"7 días\", datos.seven_day)].filter(\n\t\t\t(v): v is VentanaCuota => v !== undefined,\n\t\t);\n\t\t// Cero ventanas reconocibles no es \"cero cuota usada\": es que la cuenta\n\t\t// no publicó ningún cubo, y eso hay que enseñarlo como \"no publica\".\n\t\treturn ventanas.length > 0 ? ventanas : null;\n\t},\n};\n"]}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Cuota de Anthropic — solo publica límites la sesión OAuth de Claude
3
+ * (claude.ai/Claude Code); la clave de API de la consola es pago por token,
4
+ * sin techo que consultar.
5
+ *
6
+ * Mismo endpoint que usa Claude Code para pintar "Usage limit" en su CLI.
7
+ */
8
+ import { ErrorConsultaCuota } from "./tipos.js";
9
+ const ENDPOINT = "https://api.anthropic.com/api/oauth/usage";
10
+ function aVentana(etiqueta, cubo) {
11
+ if (!cubo || typeof cubo.utilization !== "number")
12
+ return undefined;
13
+ const seReinicia = cubo.resets_at ? Date.parse(cubo.resets_at) : Number.NaN;
14
+ return {
15
+ etiqueta,
16
+ usado: Math.min(Math.max(cubo.utilization, 0), 100),
17
+ limite: 100,
18
+ seReinicia: Number.isFinite(seReinicia) ? seReinicia : null,
19
+ unidad: "porcentaje",
20
+ };
21
+ }
22
+ export const consultorAnthropic = {
23
+ id: "anthropic",
24
+ soporta: (credencial) => credencial.type === "oauth",
25
+ async consultar({ credencial, fetch: fetchImpl = fetch, señal }) {
26
+ if (credencial.type !== "oauth")
27
+ return null;
28
+ let respuesta;
29
+ try {
30
+ respuesta = await fetchImpl(ENDPOINT, {
31
+ headers: {
32
+ accept: "application/json",
33
+ "anthropic-beta": "oauth-2025-04-20",
34
+ "content-type": "application/json",
35
+ authorization: `Bearer ${credencial.access}`,
36
+ },
37
+ signal: señal,
38
+ });
39
+ }
40
+ catch (error) {
41
+ throw new ErrorConsultaCuota("anthropic", `no se pudo contactar con Anthropic: ${String(error)}`, {
42
+ cause: error,
43
+ });
44
+ }
45
+ if (!respuesta.ok) {
46
+ throw new ErrorConsultaCuota("anthropic", `Anthropic respondió ${respuesta.status} ${respuesta.statusText}`);
47
+ }
48
+ let datos;
49
+ try {
50
+ datos = (await respuesta.json());
51
+ }
52
+ catch (error) {
53
+ throw new ErrorConsultaCuota("anthropic", `la respuesta de Anthropic no es JSON válido: ${String(error)}`, {
54
+ cause: error,
55
+ });
56
+ }
57
+ const ventanas = [aVentana("5 horas", datos.five_hour), aVentana("7 días", datos.seven_day)].filter((v) => v !== undefined);
58
+ // Cero ventanas reconocibles no es "cero cuota usada": es que la cuenta
59
+ // no publicó ningún cubo, y eso hay que enseñarlo como "no publica".
60
+ return ventanas.length > 0 ? ventanas : null;
61
+ },
62
+ };
63
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../../src/core/usage/cuota/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAuB,kBAAkB,EAAqB,MAAM,YAAY,CAAC;AAExF,MAAM,QAAQ,GAAG,2CAA2C,CAAC;AAY7D,SAAS,QAAQ,CAAC,QAAgB,EAAE,IAAkC,EAA4B;IACjG,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACpE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IAC5E,OAAO;QACN,QAAQ;QACR,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;QACnD,MAAM,EAAE,GAAG;QACX,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;QAC3D,MAAM,EAAE,YAAY;KACpB,CAAC;AAAA,CACF;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAmB;IACjD,EAAE,EAAE,WAAW;IACf,OAAO,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO;IACpD,KAAK,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,GAAG,KAAK,EAAE,MAAK,EAAE,EAAE;QAChE,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QAE7C,IAAI,SAAmB,CAAC;QACxB,IAAI,CAAC;YACJ,SAAS,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE;gBACrC,OAAO,EAAE;oBACR,MAAM,EAAE,kBAAkB;oBAC1B,gBAAgB,EAAE,kBAAkB;oBACpC,cAAc,EAAE,kBAAkB;oBAClC,aAAa,EAAE,UAAU,UAAU,CAAC,MAAM,EAAE;iBAC5C;gBACD,MAAM,EAAE,MAAK;aACb,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,kBAAkB,CAAC,WAAW,EAAE,uCAAuC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE;gBACjG,KAAK,EAAE,KAAK;aACZ,CAAC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;YACnB,MAAM,IAAI,kBAAkB,CAAC,WAAW,EAAE,wBAAuB,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9G,CAAC;QAED,IAAI,KAAyB,CAAC;QAC9B,IAAI,CAAC;YACJ,KAAK,GAAG,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,CAAuB,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,kBAAkB,CAAC,WAAW,EAAE,iDAAgD,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE;gBAC1G,KAAK,EAAE,KAAK;aACZ,CAAC,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,SAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAClG,CAAC,CAAC,EAAqB,EAAE,CAAC,CAAC,KAAK,SAAS,CACzC,CAAC;QACF,wEAAwE;QACxE,wEAAqE;QACrE,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAAA,CAC7C;CACD,CAAC","sourcesContent":["/**\n * Cuota de Anthropic — solo publica límites la sesión OAuth de Claude\n * (claude.ai/Claude Code); la clave de API de la consola es pago por token,\n * sin techo que consultar.\n *\n * Mismo endpoint que usa Claude Code para pintar \"Usage limit\" en su CLI.\n */\n\nimport { type ConsultorCuota, ErrorConsultaCuota, type VentanaCuota } from \"./tipos.ts\";\n\nconst ENDPOINT = \"https://api.anthropic.com/api/oauth/usage\";\n\ninterface CuboBruto {\n\tutilization?: number;\n\tresets_at?: string | null;\n}\n\ninterface RespuestaAnthropic {\n\tfive_hour?: CuboBruto | null;\n\tseven_day?: CuboBruto | null;\n}\n\nfunction aVentana(etiqueta: string, cubo: CuboBruto | null | undefined): VentanaCuota | undefined {\n\tif (!cubo || typeof cubo.utilization !== \"number\") return undefined;\n\tconst seReinicia = cubo.resets_at ? Date.parse(cubo.resets_at) : Number.NaN;\n\treturn {\n\t\tetiqueta,\n\t\tusado: Math.min(Math.max(cubo.utilization, 0), 100),\n\t\tlimite: 100,\n\t\tseReinicia: Number.isFinite(seReinicia) ? seReinicia : null,\n\t\tunidad: \"porcentaje\",\n\t};\n}\n\nexport const consultorAnthropic: ConsultorCuota = {\n\tid: \"anthropic\",\n\tsoporta: (credencial) => credencial.type === \"oauth\",\n\tasync consultar({ credencial, fetch: fetchImpl = fetch, señal }) {\n\t\tif (credencial.type !== \"oauth\") return null;\n\n\t\tlet respuesta: Response;\n\t\ttry {\n\t\t\trespuesta = await fetchImpl(ENDPOINT, {\n\t\t\t\theaders: {\n\t\t\t\t\taccept: \"application/json\",\n\t\t\t\t\t\"anthropic-beta\": \"oauth-2025-04-20\",\n\t\t\t\t\t\"content-type\": \"application/json\",\n\t\t\t\t\tauthorization: `Bearer ${credencial.access}`,\n\t\t\t\t},\n\t\t\t\tsignal: señal,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthrow new ErrorConsultaCuota(\"anthropic\", `no se pudo contactar con Anthropic: ${String(error)}`, {\n\t\t\t\tcause: error,\n\t\t\t});\n\t\t}\n\t\tif (!respuesta.ok) {\n\t\t\tthrow new ErrorConsultaCuota(\"anthropic\", `Anthropic respondió ${respuesta.status} ${respuesta.statusText}`);\n\t\t}\n\n\t\tlet datos: RespuestaAnthropic;\n\t\ttry {\n\t\t\tdatos = (await respuesta.json()) as RespuestaAnthropic;\n\t\t} catch (error) {\n\t\t\tthrow new ErrorConsultaCuota(\"anthropic\", `la respuesta de Anthropic no es JSON válido: ${String(error)}`, {\n\t\t\t\tcause: error,\n\t\t\t});\n\t\t}\n\n\t\tconst ventanas = [aVentana(\"5 horas\", datos.five_hour), aVentana(\"7 días\", datos.seven_day)].filter(\n\t\t\t(v): v is VentanaCuota => v !== undefined,\n\t\t);\n\t\t// Cero ventanas reconocibles no es \"cero cuota usada\": es que la cuenta\n\t\t// no publicó ningún cubo, y eso hay que enseñarlo como \"no publica\".\n\t\treturn ventanas.length > 0 ? ventanas : null;\n\t},\n};\n"]}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Cachea la respuesta de cuota unos minutos.
3
+ *
4
+ * Sin esto, cada turno del agente dispararía una petición HTTP más solo para
5
+ * enseñar un número que apenas cambia turno a turno — el hueco que describe
6
+ * la tarea: "una petición de más por turno".
7
+ */
8
+ /**
9
+ * Devuelve el valor cacheado si sigue vivo; si no, lo calcula y lo guarda.
10
+ *
11
+ * Cachea la PROMESA, no el resultado ya resuelto: dos llamadas concurrentes
12
+ * antes de que la primera responda comparten la misma petición en vuelo en
13
+ * vez de disparar dos. Si la promesa acaba en rechazo, se borra de la caché
14
+ * para que la siguiente consulta pueda reintentar — un fallo cacheado como
15
+ * si fuera bueno sería peor que no cachear nada.
16
+ */
17
+ export declare function conCache<T>(clave: string, calcular: () => Promise<T>, ttlMs?: number): Promise<T>;
18
+ /** Solo para pruebas: vacía la caché entre casos. */
19
+ export declare function limpiarCacheCuota(): void;
20
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../../src/core/usage/cuota/cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAWjG;AAED,uDAAqD;AACrD,wBAAgB,iBAAiB,IAAI,IAAI,CAExC","sourcesContent":["/**\n * Cachea la respuesta de cuota unos minutos.\n *\n * Sin esto, cada turno del agente dispararía una petición HTTP más solo para\n * enseñar un número que apenas cambia turno a turno — el hueco que describe\n * la tarea: \"una petición de más por turno\".\n */\n\nconst TTL_MS = 5 * 60_000;\n\ninterface Entrada<T> {\n\texpira: number;\n\tvalor: Promise<T>;\n}\n\nconst cache = new Map<string, Entrada<unknown>>();\n\n/**\n * Devuelve el valor cacheado si sigue vivo; si no, lo calcula y lo guarda.\n *\n * Cachea la PROMESA, no el resultado ya resuelto: dos llamadas concurrentes\n * antes de que la primera responda comparten la misma petición en vuelo en\n * vez de disparar dos. Si la promesa acaba en rechazo, se borra de la caché\n * para que la siguiente consulta pueda reintentar — un fallo cacheado como\n * si fuera bueno sería peor que no cachear nada.\n */\nexport function conCache<T>(clave: string, calcular: () => Promise<T>, ttlMs = TTL_MS): Promise<T> {\n\tconst ahora = Date.now();\n\tconst existente = cache.get(clave) as Entrada<T> | undefined;\n\tif (existente && existente.expira > ahora) return existente.valor;\n\n\tconst valor = calcular();\n\tcache.set(clave, { expira: ahora + ttlMs, valor });\n\tvalor.catch(() => {\n\t\tif (cache.get(clave)?.valor === valor) cache.delete(clave);\n\t});\n\treturn valor;\n}\n\n/** Solo para pruebas: vacía la caché entre casos. */\nexport function limpiarCacheCuota(): void {\n\tcache.clear();\n}\n"]}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Cachea la respuesta de cuota unos minutos.
3
+ *
4
+ * Sin esto, cada turno del agente dispararía una petición HTTP más solo para
5
+ * enseñar un número que apenas cambia turno a turno — el hueco que describe
6
+ * la tarea: "una petición de más por turno".
7
+ */
8
+ const TTL_MS = 5 * 60_000;
9
+ const cache = new Map();
10
+ /**
11
+ * Devuelve el valor cacheado si sigue vivo; si no, lo calcula y lo guarda.
12
+ *
13
+ * Cachea la PROMESA, no el resultado ya resuelto: dos llamadas concurrentes
14
+ * antes de que la primera responda comparten la misma petición en vuelo en
15
+ * vez de disparar dos. Si la promesa acaba en rechazo, se borra de la caché
16
+ * para que la siguiente consulta pueda reintentar — un fallo cacheado como
17
+ * si fuera bueno sería peor que no cachear nada.
18
+ */
19
+ export function conCache(clave, calcular, ttlMs = TTL_MS) {
20
+ const ahora = Date.now();
21
+ const existente = cache.get(clave);
22
+ if (existente && existente.expira > ahora)
23
+ return existente.valor;
24
+ const valor = calcular();
25
+ cache.set(clave, { expira: ahora + ttlMs, valor });
26
+ valor.catch(() => {
27
+ if (cache.get(clave)?.valor === valor)
28
+ cache.delete(clave);
29
+ });
30
+ return valor;
31
+ }
32
+ /** Solo para pruebas: vacía la caché entre casos. */
33
+ export function limpiarCacheCuota() {
34
+ cache.clear();
35
+ }
36
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../../src/core/usage/cuota/cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;AAO1B,MAAM,KAAK,GAAG,IAAI,GAAG,EAA4B,CAAC;AAElD;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAI,KAAa,EAAE,QAA0B,EAAE,KAAK,GAAG,MAAM,EAAc;IAClG,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAA2B,CAAC;IAC7D,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,KAAK;QAAE,OAAO,SAAS,CAAC,KAAK,CAAC;IAElE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACnD,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACjB,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,KAAK;YAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAAA,CAC3D,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AAAA,CACb;AAED,uDAAqD;AACrD,MAAM,UAAU,iBAAiB,GAAS;IACzC,KAAK,CAAC,KAAK,EAAE,CAAC;AAAA,CACd","sourcesContent":["/**\n * Cachea la respuesta de cuota unos minutos.\n *\n * Sin esto, cada turno del agente dispararía una petición HTTP más solo para\n * enseñar un número que apenas cambia turno a turno — el hueco que describe\n * la tarea: \"una petición de más por turno\".\n */\n\nconst TTL_MS = 5 * 60_000;\n\ninterface Entrada<T> {\n\texpira: number;\n\tvalor: Promise<T>;\n}\n\nconst cache = new Map<string, Entrada<unknown>>();\n\n/**\n * Devuelve el valor cacheado si sigue vivo; si no, lo calcula y lo guarda.\n *\n * Cachea la PROMESA, no el resultado ya resuelto: dos llamadas concurrentes\n * antes de que la primera responda comparten la misma petición en vuelo en\n * vez de disparar dos. Si la promesa acaba en rechazo, se borra de la caché\n * para que la siguiente consulta pueda reintentar — un fallo cacheado como\n * si fuera bueno sería peor que no cachear nada.\n */\nexport function conCache<T>(clave: string, calcular: () => Promise<T>, ttlMs = TTL_MS): Promise<T> {\n\tconst ahora = Date.now();\n\tconst existente = cache.get(clave) as Entrada<T> | undefined;\n\tif (existente && existente.expira > ahora) return existente.valor;\n\n\tconst valor = calcular();\n\tcache.set(clave, { expira: ahora + ttlMs, valor });\n\tvalor.catch(() => {\n\t\tif (cache.get(clave)?.valor === valor) cache.delete(clave);\n\t});\n\treturn valor;\n}\n\n/** Solo para pruebas: vacía la caché entre casos. */\nexport function limpiarCacheCuota(): void {\n\tcache.clear();\n}\n"]}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Cuota de GitHub Copilot — `quota_snapshots` en el endpoint interno de
3
+ * cuenta. Un cubo `unlimited: true` (plan Business/Enterprise sin techo de
4
+ * peticiones premium) se descarta a propósito: no tiene "usado/límite" que
5
+ * enseñar, y forzar un 0/0 mentiría sobre haber consultado algo real.
6
+ */
7
+ import { type ConsultorCuota } from "./tipos.ts";
8
+ export declare const consultorGithubCopilot: ConsultorCuota;
9
+ //# sourceMappingURL=github-copilot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-copilot.d.ts","sourceRoot":"","sources":["../../../../src/core/usage/cuota/github-copilot.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,KAAK,cAAc,EAAyC,MAAM,YAAY,CAAC;AAsCxF,eAAO,MAAM,sBAAsB,EAAE,cA8CpC,CAAC","sourcesContent":["/**\n * Cuota de GitHub Copilot — `quota_snapshots` en el endpoint interno de\n * cuenta. Un cubo `unlimited: true` (plan Business/Enterprise sin techo de\n * peticiones premium) se descarta a propósito: no tiene \"usado/límite\" que\n * enseñar, y forzar un 0/0 mentiría sobre haber consultado algo real.\n */\n\nimport type { Credential } from \"@earendil-works/pi-ai\";\nimport { type ConsultorCuota, ErrorConsultaCuota, type VentanaCuota } from \"./tipos.ts\";\n\nconst ENDPOINT = \"https://api.github.com/copilot_internal/user\";\n\ninterface CuotaBruta {\n\tentitlement?: number;\n\tremaining?: number;\n\tunlimited?: boolean;\n}\n\ninterface RespuestaCopilot {\n\tquota_reset_date?: string;\n\tquota_snapshots?: {\n\t\tchat?: CuotaBruta;\n\t\tcompletions?: CuotaBruta;\n\t\tpremium_interactions?: CuotaBruta;\n\t};\n}\n\nfunction aVentana(etiqueta: string, cubo: CuotaBruta | undefined, seReinicia: number | null): VentanaCuota | undefined {\n\tif (!cubo || cubo.unlimited || typeof cubo.entitlement !== \"number\" || typeof cubo.remaining !== \"number\") {\n\t\treturn undefined;\n\t}\n\treturn {\n\t\tetiqueta,\n\t\tusado: Math.max(0, cubo.entitlement - cubo.remaining),\n\t\tlimite: cubo.entitlement,\n\t\tseReinicia,\n\t\tunidad: \"peticiones\",\n\t};\n}\n\n/** OAuth guarda el token de GitHub en `refresh`; api_key es un PAT directo. */\nfunction tokenDe(credencial: Credential): string | undefined {\n\tif (credencial.type === \"oauth\") return credencial.refresh || credencial.access;\n\treturn credencial.key;\n}\n\nexport const consultorGithubCopilot: ConsultorCuota = {\n\tid: \"github-copilot\",\n\tsoporta: (credencial) => Boolean(tokenDe(credencial)),\n\tasync consultar({ credencial, fetch: fetchImpl = fetch, señal }) {\n\t\tconst token = tokenDe(credencial);\n\t\tif (!token) return null;\n\n\t\tlet respuesta: Response;\n\t\ttry {\n\t\t\trespuesta = await fetchImpl(ENDPOINT, {\n\t\t\t\theaders: { accept: \"application/json\", authorization: `Bearer ${token}` },\n\t\t\t\tsignal: señal,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthrow new ErrorConsultaCuota(\"github-copilot\", `no se pudo contactar con GitHub Copilot: ${String(error)}`, {\n\t\t\t\tcause: error,\n\t\t\t});\n\t\t}\n\t\tif (!respuesta.ok) {\n\t\t\tthrow new ErrorConsultaCuota(\n\t\t\t\t\"github-copilot\",\n\t\t\t\t`GitHub Copilot respondió ${respuesta.status} ${respuesta.statusText}`,\n\t\t\t);\n\t\t}\n\n\t\tlet datos: RespuestaCopilot;\n\t\ttry {\n\t\t\tdatos = (await respuesta.json()) as RespuestaCopilot;\n\t\t} catch (error) {\n\t\t\tthrow new ErrorConsultaCuota(\n\t\t\t\t\"github-copilot\",\n\t\t\t\t`la respuesta de GitHub Copilot no es JSON válido: ${String(error)}`,\n\t\t\t\t{ cause: error },\n\t\t\t);\n\t\t}\n\n\t\tconst seReiniciaBruto = datos.quota_reset_date ? Date.parse(datos.quota_reset_date) : Number.NaN;\n\t\tconst seReinicia = Number.isFinite(seReiniciaBruto) ? seReiniciaBruto : null;\n\t\tconst snapshots = datos.quota_snapshots ?? {};\n\t\tconst ventanas = [\n\t\t\taVentana(\"Peticiones premium\", snapshots.premium_interactions, seReinicia),\n\t\t\taVentana(\"Chat\", snapshots.chat, seReinicia),\n\t\t\taVentana(\"Autocompletado\", snapshots.completions, seReinicia),\n\t\t].filter((v): v is VentanaCuota => v !== undefined);\n\t\treturn ventanas.length > 0 ? ventanas : null;\n\t},\n};\n"]}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Cuota de GitHub Copilot — `quota_snapshots` en el endpoint interno de
3
+ * cuenta. Un cubo `unlimited: true` (plan Business/Enterprise sin techo de
4
+ * peticiones premium) se descarta a propósito: no tiene "usado/límite" que
5
+ * enseñar, y forzar un 0/0 mentiría sobre haber consultado algo real.
6
+ */
7
+ import { ErrorConsultaCuota } from "./tipos.js";
8
+ const ENDPOINT = "https://api.github.com/copilot_internal/user";
9
+ function aVentana(etiqueta, cubo, seReinicia) {
10
+ if (!cubo || cubo.unlimited || typeof cubo.entitlement !== "number" || typeof cubo.remaining !== "number") {
11
+ return undefined;
12
+ }
13
+ return {
14
+ etiqueta,
15
+ usado: Math.max(0, cubo.entitlement - cubo.remaining),
16
+ limite: cubo.entitlement,
17
+ seReinicia,
18
+ unidad: "peticiones",
19
+ };
20
+ }
21
+ /** OAuth guarda el token de GitHub en `refresh`; api_key es un PAT directo. */
22
+ function tokenDe(credencial) {
23
+ if (credencial.type === "oauth")
24
+ return credencial.refresh || credencial.access;
25
+ return credencial.key;
26
+ }
27
+ export const consultorGithubCopilot = {
28
+ id: "github-copilot",
29
+ soporta: (credencial) => Boolean(tokenDe(credencial)),
30
+ async consultar({ credencial, fetch: fetchImpl = fetch, señal }) {
31
+ const token = tokenDe(credencial);
32
+ if (!token)
33
+ return null;
34
+ let respuesta;
35
+ try {
36
+ respuesta = await fetchImpl(ENDPOINT, {
37
+ headers: { accept: "application/json", authorization: `Bearer ${token}` },
38
+ signal: señal,
39
+ });
40
+ }
41
+ catch (error) {
42
+ throw new ErrorConsultaCuota("github-copilot", `no se pudo contactar con GitHub Copilot: ${String(error)}`, {
43
+ cause: error,
44
+ });
45
+ }
46
+ if (!respuesta.ok) {
47
+ throw new ErrorConsultaCuota("github-copilot", `GitHub Copilot respondió ${respuesta.status} ${respuesta.statusText}`);
48
+ }
49
+ let datos;
50
+ try {
51
+ datos = (await respuesta.json());
52
+ }
53
+ catch (error) {
54
+ throw new ErrorConsultaCuota("github-copilot", `la respuesta de GitHub Copilot no es JSON válido: ${String(error)}`, { cause: error });
55
+ }
56
+ const seReiniciaBruto = datos.quota_reset_date ? Date.parse(datos.quota_reset_date) : Number.NaN;
57
+ const seReinicia = Number.isFinite(seReiniciaBruto) ? seReiniciaBruto : null;
58
+ const snapshots = datos.quota_snapshots ?? {};
59
+ const ventanas = [
60
+ aVentana("Peticiones premium", snapshots.premium_interactions, seReinicia),
61
+ aVentana("Chat", snapshots.chat, seReinicia),
62
+ aVentana("Autocompletado", snapshots.completions, seReinicia),
63
+ ].filter((v) => v !== undefined);
64
+ return ventanas.length > 0 ? ventanas : null;
65
+ },
66
+ };
67
+ //# sourceMappingURL=github-copilot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-copilot.js","sourceRoot":"","sources":["../../../../src/core/usage/cuota/github-copilot.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Cuota de GitHub Copilot — `quota_snapshots` en el endpoint interno de\n * cuenta. Un cubo `unlimited: true` (plan Business/Enterprise sin techo de\n * peticiones premium) se descarta a propósito: no tiene \"usado/límite\" que\n * enseñar, y forzar un 0/0 mentiría sobre haber consultado algo real.\n */\n\nimport type { Credential } from \"@earendil-works/pi-ai\";\nimport { type ConsultorCuota, ErrorConsultaCuota, type VentanaCuota } from \"./tipos.ts\";\n\nconst ENDPOINT = \"https://api.github.com/copilot_internal/user\";\n\ninterface CuotaBruta {\n\tentitlement?: number;\n\tremaining?: number;\n\tunlimited?: boolean;\n}\n\ninterface RespuestaCopilot {\n\tquota_reset_date?: string;\n\tquota_snapshots?: {\n\t\tchat?: CuotaBruta;\n\t\tcompletions?: CuotaBruta;\n\t\tpremium_interactions?: CuotaBruta;\n\t};\n}\n\nfunction aVentana(etiqueta: string, cubo: CuotaBruta | undefined, seReinicia: number | null): VentanaCuota | undefined {\n\tif (!cubo || cubo.unlimited || typeof cubo.entitlement !== \"number\" || typeof cubo.remaining !== \"number\") {\n\t\treturn undefined;\n\t}\n\treturn {\n\t\tetiqueta,\n\t\tusado: Math.max(0, cubo.entitlement - cubo.remaining),\n\t\tlimite: cubo.entitlement,\n\t\tseReinicia,\n\t\tunidad: \"peticiones\",\n\t};\n}\n\n/** OAuth guarda el token de GitHub en `refresh`; api_key es un PAT directo. */\nfunction tokenDe(credencial: Credential): string | undefined {\n\tif (credencial.type === \"oauth\") return credencial.refresh || credencial.access;\n\treturn credencial.key;\n}\n\nexport const consultorGithubCopilot: ConsultorCuota = {\n\tid: \"github-copilot\",\n\tsoporta: (credencial) => Boolean(tokenDe(credencial)),\n\tasync consultar({ credencial, fetch: fetchImpl = fetch, señal }) {\n\t\tconst token = tokenDe(credencial);\n\t\tif (!token) return null;\n\n\t\tlet respuesta: Response;\n\t\ttry {\n\t\t\trespuesta = await fetchImpl(ENDPOINT, {\n\t\t\t\theaders: { accept: \"application/json\", authorization: `Bearer ${token}` },\n\t\t\t\tsignal: señal,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthrow new ErrorConsultaCuota(\"github-copilot\", `no se pudo contactar con GitHub Copilot: ${String(error)}`, {\n\t\t\t\tcause: error,\n\t\t\t});\n\t\t}\n\t\tif (!respuesta.ok) {\n\t\t\tthrow new ErrorConsultaCuota(\n\t\t\t\t\"github-copilot\",\n\t\t\t\t`GitHub Copilot respondió ${respuesta.status} ${respuesta.statusText}`,\n\t\t\t);\n\t\t}\n\n\t\tlet datos: RespuestaCopilot;\n\t\ttry {\n\t\t\tdatos = (await respuesta.json()) as RespuestaCopilot;\n\t\t} catch (error) {\n\t\t\tthrow new ErrorConsultaCuota(\n\t\t\t\t\"github-copilot\",\n\t\t\t\t`la respuesta de GitHub Copilot no es JSON válido: ${String(error)}`,\n\t\t\t\t{ cause: error },\n\t\t\t);\n\t\t}\n\n\t\tconst seReiniciaBruto = datos.quota_reset_date ? Date.parse(datos.quota_reset_date) : Number.NaN;\n\t\tconst seReinicia = Number.isFinite(seReiniciaBruto) ? seReiniciaBruto : null;\n\t\tconst snapshots = datos.quota_snapshots ?? {};\n\t\tconst ventanas = [\n\t\t\taVentana(\"Peticiones premium\", snapshots.premium_interactions, seReinicia),\n\t\t\taVentana(\"Chat\", snapshots.chat, seReinicia),\n\t\t\taVentana(\"Autocompletado\", snapshots.completions, seReinicia),\n\t\t].filter((v): v is VentanaCuota => v !== undefined);\n\t\treturn ventanas.length > 0 ? ventanas : null;\n\t},\n};\n"]}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Cuota de Gemini (Google Code Assist / Antigravity) — dos llamadas: primero
3
+ * `loadCodeAssist` para resolver el proyecto de Cloud, luego
4
+ * `retrieveUserQuota` con ese proyecto. Si la credencial ya trae un
5
+ * `projectId` guardado se usa ese y se ahorra la primera petición.
6
+ */
7
+ import { type ConsultorCuota } from "./tipos.ts";
8
+ export declare const consultorGoogleGemini: ConsultorCuota;
9
+ //# sourceMappingURL=google-gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-gemini.d.ts","sourceRoot":"","sources":["../../../../src/core/usage/cuota/google-gemini.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,cAAc,EAAyC,MAAM,YAAY,CAAC;AAwDxF,eAAO,MAAM,qBAAqB,EAAE,cA0CnC,CAAC","sourcesContent":["/**\n * Cuota de Gemini (Google Code Assist / Antigravity) — dos llamadas: primero\n * `loadCodeAssist` para resolver el proyecto de Cloud, luego\n * `retrieveUserQuota` con ese proyecto. Si la credencial ya trae un\n * `projectId` guardado se usa ese y se ahorra la primera petición.\n */\n\nimport { type ConsultorCuota, ErrorConsultaCuota, type VentanaCuota } from \"./tipos.ts\";\n\nconst BASE_URL = \"https://cloudcode-pa.googleapis.com\";\nconst PROVEEDOR = \"google\";\n\ninterface CargaCodeAssist {\n\tcloudaicompanionProject?: string | { id?: string };\n}\n\ninterface CuboBruto {\n\tmodelId?: string;\n\tremainingFraction?: number;\n\tresetTime?: string;\n}\n\ninterface RespuestaCuota {\n\tbuckets?: CuboBruto[];\n}\n\nfunction proyectoDe(carga: CargaCodeAssist | undefined): string | undefined {\n\tconst p = carga?.cloudaicompanionProject;\n\tif (typeof p === \"string\") return p;\n\tif (p && typeof p === \"object\") return p.id;\n\treturn undefined;\n}\n\nasync function pedir<T>(\n\tfetchImpl: typeof fetch,\n\turl: string,\n\ttoken: string,\n\tcuerpo: unknown,\n\tseñal: AbortSignal | undefined,\n): Promise<T> {\n\tlet respuesta: Response;\n\ttry {\n\t\trespuesta = await fetchImpl(url, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: { authorization: `Bearer ${token}`, \"content-type\": \"application/json\" },\n\t\t\tbody: JSON.stringify(cuerpo),\n\t\t\tsignal: señal,\n\t\t});\n\t} catch (error) {\n\t\tthrow new ErrorConsultaCuota(PROVEEDOR, `no se pudo contactar con Google: ${String(error)}`, { cause: error });\n\t}\n\tif (!respuesta.ok) {\n\t\tthrow new ErrorConsultaCuota(PROVEEDOR, `Google respondió ${respuesta.status} ${respuesta.statusText}`);\n\t}\n\ttry {\n\t\treturn (await respuesta.json()) as T;\n\t} catch (error) {\n\t\tthrow new ErrorConsultaCuota(PROVEEDOR, `la respuesta de Google no es JSON válido: ${String(error)}`, {\n\t\t\tcause: error,\n\t\t});\n\t}\n}\n\nexport const consultorGoogleGemini: ConsultorCuota = {\n\tid: PROVEEDOR,\n\tsoporta: (credencial) => credencial.type === \"oauth\",\n\tasync consultar({ credencial, fetch: fetchImpl = fetch, señal }) {\n\t\tif (credencial.type !== \"oauth\") return null;\n\n\t\tconst proyectoGuardado = typeof credencial.projectId === \"string\" ? credencial.projectId : undefined;\n\t\tlet proyecto = proyectoGuardado;\n\t\tif (!proyecto) {\n\t\t\tconst carga = await pedir<CargaCodeAssist>(\n\t\t\t\tfetchImpl,\n\t\t\t\t`${BASE_URL}/v1internal:loadCodeAssist`,\n\t\t\t\tcredencial.access,\n\t\t\t\t{ metadata: { ideType: \"IDE_UNSPECIFIED\", platform: \"PLATFORM_UNSPECIFIED\", pluginType: \"GEMINI\" } },\n\t\t\t\tseñal,\n\t\t\t);\n\t\t\tproyecto = proyectoDe(carga);\n\t\t}\n\n\t\tconst cuota = await pedir<RespuestaCuota>(\n\t\t\tfetchImpl,\n\t\t\t`${BASE_URL}/v1internal:retrieveUserQuota`,\n\t\t\tcredencial.access,\n\t\t\tproyecto ? { project: proyecto } : {},\n\t\t\tseñal,\n\t\t);\n\n\t\tconst ventanas = (cuota.buckets ?? [])\n\t\t\t.filter((b): b is CuboBruto & { remainingFraction: number } => typeof b.remainingFraction === \"number\")\n\t\t\t.map((b): VentanaCuota => {\n\t\t\t\tconst restante = Math.min(Math.max(b.remainingFraction, 0), 1);\n\t\t\t\tconst seReiniciaBruto = b.resetTime ? Date.parse(b.resetTime) : Number.NaN;\n\t\t\t\treturn {\n\t\t\t\t\tetiqueta: b.modelId ?? \"Gemini\",\n\t\t\t\t\tusado: Math.round((1 - restante) * 1000) / 10,\n\t\t\t\t\tlimite: 100,\n\t\t\t\t\tseReinicia: Number.isFinite(seReiniciaBruto) ? seReiniciaBruto : null,\n\t\t\t\t\tunidad: \"porcentaje\",\n\t\t\t\t};\n\t\t\t});\n\t\treturn ventanas.length > 0 ? ventanas : null;\n\t},\n};\n"]}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Cuota de Gemini (Google Code Assist / Antigravity) — dos llamadas: primero
3
+ * `loadCodeAssist` para resolver el proyecto de Cloud, luego
4
+ * `retrieveUserQuota` con ese proyecto. Si la credencial ya trae un
5
+ * `projectId` guardado se usa ese y se ahorra la primera petición.
6
+ */
7
+ import { ErrorConsultaCuota } from "./tipos.js";
8
+ const BASE_URL = "https://cloudcode-pa.googleapis.com";
9
+ const PROVEEDOR = "google";
10
+ function proyectoDe(carga) {
11
+ const p = carga?.cloudaicompanionProject;
12
+ if (typeof p === "string")
13
+ return p;
14
+ if (p && typeof p === "object")
15
+ return p.id;
16
+ return undefined;
17
+ }
18
+ async function pedir(fetchImpl, url, token, cuerpo, señal) {
19
+ let respuesta;
20
+ try {
21
+ respuesta = await fetchImpl(url, {
22
+ method: "POST",
23
+ headers: { authorization: `Bearer ${token}`, "content-type": "application/json" },
24
+ body: JSON.stringify(cuerpo),
25
+ signal: señal,
26
+ });
27
+ }
28
+ catch (error) {
29
+ throw new ErrorConsultaCuota(PROVEEDOR, `no se pudo contactar con Google: ${String(error)}`, { cause: error });
30
+ }
31
+ if (!respuesta.ok) {
32
+ throw new ErrorConsultaCuota(PROVEEDOR, `Google respondió ${respuesta.status} ${respuesta.statusText}`);
33
+ }
34
+ try {
35
+ return (await respuesta.json());
36
+ }
37
+ catch (error) {
38
+ throw new ErrorConsultaCuota(PROVEEDOR, `la respuesta de Google no es JSON válido: ${String(error)}`, {
39
+ cause: error,
40
+ });
41
+ }
42
+ }
43
+ export const consultorGoogleGemini = {
44
+ id: PROVEEDOR,
45
+ soporta: (credencial) => credencial.type === "oauth",
46
+ async consultar({ credencial, fetch: fetchImpl = fetch, señal }) {
47
+ if (credencial.type !== "oauth")
48
+ return null;
49
+ const proyectoGuardado = typeof credencial.projectId === "string" ? credencial.projectId : undefined;
50
+ let proyecto = proyectoGuardado;
51
+ if (!proyecto) {
52
+ const carga = await pedir(fetchImpl, `${BASE_URL}/v1internal:loadCodeAssist`, credencial.access, { metadata: { ideType: "IDE_UNSPECIFIED", platform: "PLATFORM_UNSPECIFIED", pluginType: "GEMINI" } }, señal);
53
+ proyecto = proyectoDe(carga);
54
+ }
55
+ const cuota = await pedir(fetchImpl, `${BASE_URL}/v1internal:retrieveUserQuota`, credencial.access, proyecto ? { project: proyecto } : {}, señal);
56
+ const ventanas = (cuota.buckets ?? [])
57
+ .filter((b) => typeof b.remainingFraction === "number")
58
+ .map((b) => {
59
+ const restante = Math.min(Math.max(b.remainingFraction, 0), 1);
60
+ const seReiniciaBruto = b.resetTime ? Date.parse(b.resetTime) : Number.NaN;
61
+ return {
62
+ etiqueta: b.modelId ?? "Gemini",
63
+ usado: Math.round((1 - restante) * 1000) / 10,
64
+ limite: 100,
65
+ seReinicia: Number.isFinite(seReiniciaBruto) ? seReiniciaBruto : null,
66
+ unidad: "porcentaje",
67
+ };
68
+ });
69
+ return ventanas.length > 0 ? ventanas : null;
70
+ },
71
+ };
72
+ //# sourceMappingURL=google-gemini.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-gemini.js","sourceRoot":"","sources":["../../../../src/core/usage/cuota/google-gemini.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Cuota de Gemini (Google Code Assist / Antigravity) — dos llamadas: primero\n * `loadCodeAssist` para resolver el proyecto de Cloud, luego\n * `retrieveUserQuota` con ese proyecto. Si la credencial ya trae un\n * `projectId` guardado se usa ese y se ahorra la primera petición.\n */\n\nimport { type ConsultorCuota, ErrorConsultaCuota, type VentanaCuota } from \"./tipos.ts\";\n\nconst BASE_URL = \"https://cloudcode-pa.googleapis.com\";\nconst PROVEEDOR = \"google\";\n\ninterface CargaCodeAssist {\n\tcloudaicompanionProject?: string | { id?: string };\n}\n\ninterface CuboBruto {\n\tmodelId?: string;\n\tremainingFraction?: number;\n\tresetTime?: string;\n}\n\ninterface RespuestaCuota {\n\tbuckets?: CuboBruto[];\n}\n\nfunction proyectoDe(carga: CargaCodeAssist | undefined): string | undefined {\n\tconst p = carga?.cloudaicompanionProject;\n\tif (typeof p === \"string\") return p;\n\tif (p && typeof p === \"object\") return p.id;\n\treturn undefined;\n}\n\nasync function pedir<T>(\n\tfetchImpl: typeof fetch,\n\turl: string,\n\ttoken: string,\n\tcuerpo: unknown,\n\tseñal: AbortSignal | undefined,\n): Promise<T> {\n\tlet respuesta: Response;\n\ttry {\n\t\trespuesta = await fetchImpl(url, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: { authorization: `Bearer ${token}`, \"content-type\": \"application/json\" },\n\t\t\tbody: JSON.stringify(cuerpo),\n\t\t\tsignal: señal,\n\t\t});\n\t} catch (error) {\n\t\tthrow new ErrorConsultaCuota(PROVEEDOR, `no se pudo contactar con Google: ${String(error)}`, { cause: error });\n\t}\n\tif (!respuesta.ok) {\n\t\tthrow new ErrorConsultaCuota(PROVEEDOR, `Google respondió ${respuesta.status} ${respuesta.statusText}`);\n\t}\n\ttry {\n\t\treturn (await respuesta.json()) as T;\n\t} catch (error) {\n\t\tthrow new ErrorConsultaCuota(PROVEEDOR, `la respuesta de Google no es JSON válido: ${String(error)}`, {\n\t\t\tcause: error,\n\t\t});\n\t}\n}\n\nexport const consultorGoogleGemini: ConsultorCuota = {\n\tid: PROVEEDOR,\n\tsoporta: (credencial) => credencial.type === \"oauth\",\n\tasync consultar({ credencial, fetch: fetchImpl = fetch, señal }) {\n\t\tif (credencial.type !== \"oauth\") return null;\n\n\t\tconst proyectoGuardado = typeof credencial.projectId === \"string\" ? credencial.projectId : undefined;\n\t\tlet proyecto = proyectoGuardado;\n\t\tif (!proyecto) {\n\t\t\tconst carga = await pedir<CargaCodeAssist>(\n\t\t\t\tfetchImpl,\n\t\t\t\t`${BASE_URL}/v1internal:loadCodeAssist`,\n\t\t\t\tcredencial.access,\n\t\t\t\t{ metadata: { ideType: \"IDE_UNSPECIFIED\", platform: \"PLATFORM_UNSPECIFIED\", pluginType: \"GEMINI\" } },\n\t\t\t\tseñal,\n\t\t\t);\n\t\t\tproyecto = proyectoDe(carga);\n\t\t}\n\n\t\tconst cuota = await pedir<RespuestaCuota>(\n\t\t\tfetchImpl,\n\t\t\t`${BASE_URL}/v1internal:retrieveUserQuota`,\n\t\t\tcredencial.access,\n\t\t\tproyecto ? { project: proyecto } : {},\n\t\t\tseñal,\n\t\t);\n\n\t\tconst ventanas = (cuota.buckets ?? [])\n\t\t\t.filter((b): b is CuboBruto & { remainingFraction: number } => typeof b.remainingFraction === \"number\")\n\t\t\t.map((b): VentanaCuota => {\n\t\t\t\tconst restante = Math.min(Math.max(b.remainingFraction, 0), 1);\n\t\t\t\tconst seReiniciaBruto = b.resetTime ? Date.parse(b.resetTime) : Number.NaN;\n\t\t\t\treturn {\n\t\t\t\t\tetiqueta: b.modelId ?? \"Gemini\",\n\t\t\t\t\tusado: Math.round((1 - restante) * 1000) / 10,\n\t\t\t\t\tlimite: 100,\n\t\t\t\t\tseReinicia: Number.isFinite(seReiniciaBruto) ? seReiniciaBruto : null,\n\t\t\t\t\tunidad: \"porcentaje\",\n\t\t\t\t};\n\t\t\t});\n\t\treturn ventanas.length > 0 ? ventanas : null;\n\t},\n};\n"]}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Registro de consultores de cuota, uno por proveedor.
3
+ *
4
+ * `ada-cli usage` (ver `../aggregate.ts`) dice lo GASTADO. Esto dice lo que
5
+ * QUEDA: se lo pregunta al proveedor, con la credencial que ya tiene
6
+ * guardada en `auth.json`, y cachea la respuesta unos minutos para no sumar
7
+ * una petición HTTP a cada turno.
8
+ */
9
+ import type { Credential } from "@earendil-works/pi-ai";
10
+ import type { ContextoConsulta, VentanaCuota } from "./tipos.ts";
11
+ export { limpiarCacheCuota } from "./cache.ts";
12
+ export { type ConsultorCuota, type ContextoConsulta, ErrorConsultaCuota, type UnidadCuota, type VentanaCuota, } from "./tipos.ts";
13
+ /** Proveedores para los que hay un consultor de cuota, en el orden en que se enseñan. */
14
+ export declare const PROVEEDORES_CON_CUOTA: readonly string[];
15
+ /**
16
+ * Cuánto queda del plan para un proveedor, con la credencial dada.
17
+ *
18
+ * `null` = no hay credencial, el proveedor no la reconoce, o el proveedor no
19
+ * publica cuota para ese tipo de credencial (p.ej. la API key de Anthropic).
20
+ * Lanza {@link ErrorConsultaCuota} si la consulta llega a intentarse y falla:
21
+ * eso NUNCA se reporta como `null`, o un fallo de red se leería como "sin
22
+ * límite".
23
+ */
24
+ export declare function consultarCuota(proveedor: string, credencial: Credential | undefined, opciones?: Omit<ContextoConsulta, "credencial">): Promise<VentanaCuota[] | null>;
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/usage/cuota/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAOxD,OAAO,KAAK,EAAkB,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,kBAAkB,EAClB,KAAK,WAAW,EAChB,KAAK,YAAY,GACjB,MAAM,YAAY,CAAC;AAUpB,0FAAyF;AACzF,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAA6B,CAAC;AAYjF;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CACnC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,QAAQ,GAAE,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAM,GACjD,OAAO,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,CAIhC","sourcesContent":["/**\n * Registro de consultores de cuota, uno por proveedor.\n *\n * `ada-cli usage` (ver `../aggregate.ts`) dice lo GASTADO. Esto dice lo que\n * QUEDA: se lo pregunta al proveedor, con la credencial que ya tiene\n * guardada en `auth.json`, y cachea la respuesta unos minutos para no sumar\n * una petición HTTP a cada turno.\n */\n\nimport type { Credential } from \"@earendil-works/pi-ai\";\nimport { consultorAnthropic } from \"./anthropic.ts\";\nimport { conCache } from \"./cache.ts\";\nimport { consultorGithubCopilot } from \"./github-copilot.ts\";\nimport { consultorGoogleGemini } from \"./google-gemini.ts\";\nimport { consultorOpenAiCodex } from \"./openai-codex.ts\";\nimport { consultorOpenRouter } from \"./openrouter.ts\";\nimport type { ConsultorCuota, ContextoConsulta, VentanaCuota } from \"./tipos.ts\";\n\nexport { limpiarCacheCuota } from \"./cache.ts\";\nexport {\n\ttype ConsultorCuota,\n\ttype ContextoConsulta,\n\tErrorConsultaCuota,\n\ttype UnidadCuota,\n\ttype VentanaCuota,\n} from \"./tipos.ts\";\n\nconst CONSULTORES: Record<string, ConsultorCuota> = {\n\tanthropic: consultorAnthropic,\n\topenrouter: consultorOpenRouter,\n\t\"openai-codex\": consultorOpenAiCodex,\n\t\"github-copilot\": consultorGithubCopilot,\n\tgoogle: consultorGoogleGemini,\n};\n\n/** Proveedores para los que hay un consultor de cuota, en el orden en que se enseñan. */\nexport const PROVEEDORES_CON_CUOTA: readonly string[] = Object.keys(CONSULTORES);\n\n/**\n * Los últimos caracteres del secreto bastan para distinguir dos credenciales\n * del mismo proveedor sin quedarse el secreto entero más tiempo del\n * necesario dentro de la clave de caché.\n */\nfunction claveCache(proveedor: string, credencial: Credential): string {\n\tconst identidad = credencial.type === \"oauth\" ? credencial.access : (credencial.key ?? \"\");\n\treturn `${proveedor}:${identidad.slice(-12)}`;\n}\n\n/**\n * Cuánto queda del plan para un proveedor, con la credencial dada.\n *\n * `null` = no hay credencial, el proveedor no la reconoce, o el proveedor no\n * publica cuota para ese tipo de credencial (p.ej. la API key de Anthropic).\n * Lanza {@link ErrorConsultaCuota} si la consulta llega a intentarse y falla:\n * eso NUNCA se reporta como `null`, o un fallo de red se leería como \"sin\n * límite\".\n */\nexport async function consultarCuota(\n\tproveedor: string,\n\tcredencial: Credential | undefined,\n\topciones: Omit<ContextoConsulta, \"credencial\"> = {},\n): Promise<VentanaCuota[] | null> {\n\tconst consultor = CONSULTORES[proveedor];\n\tif (!consultor || !credencial || !consultor.soporta(credencial)) return null;\n\treturn conCache(claveCache(proveedor, credencial), () => consultor.consultar({ ...opciones, credencial }));\n}\n"]}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Registro de consultores de cuota, uno por proveedor.
3
+ *
4
+ * `ada-cli usage` (ver `../aggregate.ts`) dice lo GASTADO. Esto dice lo que
5
+ * QUEDA: se lo pregunta al proveedor, con la credencial que ya tiene
6
+ * guardada en `auth.json`, y cachea la respuesta unos minutos para no sumar
7
+ * una petición HTTP a cada turno.
8
+ */
9
+ import { consultorAnthropic } from "./anthropic.js";
10
+ import { conCache } from "./cache.js";
11
+ import { consultorGithubCopilot } from "./github-copilot.js";
12
+ import { consultorGoogleGemini } from "./google-gemini.js";
13
+ import { consultorOpenAiCodex } from "./openai-codex.js";
14
+ import { consultorOpenRouter } from "./openrouter.js";
15
+ export { limpiarCacheCuota } from "./cache.js";
16
+ export { ErrorConsultaCuota, } from "./tipos.js";
17
+ const CONSULTORES = {
18
+ anthropic: consultorAnthropic,
19
+ openrouter: consultorOpenRouter,
20
+ "openai-codex": consultorOpenAiCodex,
21
+ "github-copilot": consultorGithubCopilot,
22
+ google: consultorGoogleGemini,
23
+ };
24
+ /** Proveedores para los que hay un consultor de cuota, en el orden en que se enseñan. */
25
+ export const PROVEEDORES_CON_CUOTA = Object.keys(CONSULTORES);
26
+ /**
27
+ * Los últimos caracteres del secreto bastan para distinguir dos credenciales
28
+ * del mismo proveedor sin quedarse el secreto entero más tiempo del
29
+ * necesario dentro de la clave de caché.
30
+ */
31
+ function claveCache(proveedor, credencial) {
32
+ const identidad = credencial.type === "oauth" ? credencial.access : (credencial.key ?? "");
33
+ return `${proveedor}:${identidad.slice(-12)}`;
34
+ }
35
+ /**
36
+ * Cuánto queda del plan para un proveedor, con la credencial dada.
37
+ *
38
+ * `null` = no hay credencial, el proveedor no la reconoce, o el proveedor no
39
+ * publica cuota para ese tipo de credencial (p.ej. la API key de Anthropic).
40
+ * Lanza {@link ErrorConsultaCuota} si la consulta llega a intentarse y falla:
41
+ * eso NUNCA se reporta como `null`, o un fallo de red se leería como "sin
42
+ * límite".
43
+ */
44
+ export async function consultarCuota(proveedor, credencial, opciones = {}) {
45
+ const consultor = CONSULTORES[proveedor];
46
+ if (!consultor || !credencial || !consultor.soporta(credencial))
47
+ return null;
48
+ return conCache(claveCache(proveedor, credencial), () => consultor.consultar({ ...opciones, credencial }));
49
+ }
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/usage/cuota/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAGN,kBAAkB,GAGlB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,GAAmC;IACnD,SAAS,EAAE,kBAAkB;IAC7B,UAAU,EAAE,mBAAmB;IAC/B,cAAc,EAAE,oBAAoB;IACpC,gBAAgB,EAAE,sBAAsB;IACxC,MAAM,EAAE,qBAAqB;CAC7B,CAAC;AAEF,0FAAyF;AACzF,MAAM,CAAC,MAAM,qBAAqB,GAAsB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAEjF;;;;GAIG;AACH,SAAS,UAAU,CAAC,SAAiB,EAAE,UAAsB,EAAU;IACtE,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC3F,OAAO,GAAG,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAAA,CAC9C;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CACnC,SAAiB,EACjB,UAAkC,EAClC,QAAQ,GAAyC,EAAE,EAClB;IACjC,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7E,OAAO,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;AAAA,CAC3G","sourcesContent":["/**\n * Registro de consultores de cuota, uno por proveedor.\n *\n * `ada-cli usage` (ver `../aggregate.ts`) dice lo GASTADO. Esto dice lo que\n * QUEDA: se lo pregunta al proveedor, con la credencial que ya tiene\n * guardada en `auth.json`, y cachea la respuesta unos minutos para no sumar\n * una petición HTTP a cada turno.\n */\n\nimport type { Credential } from \"@earendil-works/pi-ai\";\nimport { consultorAnthropic } from \"./anthropic.ts\";\nimport { conCache } from \"./cache.ts\";\nimport { consultorGithubCopilot } from \"./github-copilot.ts\";\nimport { consultorGoogleGemini } from \"./google-gemini.ts\";\nimport { consultorOpenAiCodex } from \"./openai-codex.ts\";\nimport { consultorOpenRouter } from \"./openrouter.ts\";\nimport type { ConsultorCuota, ContextoConsulta, VentanaCuota } from \"./tipos.ts\";\n\nexport { limpiarCacheCuota } from \"./cache.ts\";\nexport {\n\ttype ConsultorCuota,\n\ttype ContextoConsulta,\n\tErrorConsultaCuota,\n\ttype UnidadCuota,\n\ttype VentanaCuota,\n} from \"./tipos.ts\";\n\nconst CONSULTORES: Record<string, ConsultorCuota> = {\n\tanthropic: consultorAnthropic,\n\topenrouter: consultorOpenRouter,\n\t\"openai-codex\": consultorOpenAiCodex,\n\t\"github-copilot\": consultorGithubCopilot,\n\tgoogle: consultorGoogleGemini,\n};\n\n/** Proveedores para los que hay un consultor de cuota, en el orden en que se enseñan. */\nexport const PROVEEDORES_CON_CUOTA: readonly string[] = Object.keys(CONSULTORES);\n\n/**\n * Los últimos caracteres del secreto bastan para distinguir dos credenciales\n * del mismo proveedor sin quedarse el secreto entero más tiempo del\n * necesario dentro de la clave de caché.\n */\nfunction claveCache(proveedor: string, credencial: Credential): string {\n\tconst identidad = credencial.type === \"oauth\" ? credencial.access : (credencial.key ?? \"\");\n\treturn `${proveedor}:${identidad.slice(-12)}`;\n}\n\n/**\n * Cuánto queda del plan para un proveedor, con la credencial dada.\n *\n * `null` = no hay credencial, el proveedor no la reconoce, o el proveedor no\n * publica cuota para ese tipo de credencial (p.ej. la API key de Anthropic).\n * Lanza {@link ErrorConsultaCuota} si la consulta llega a intentarse y falla:\n * eso NUNCA se reporta como `null`, o un fallo de red se leería como \"sin\n * límite\".\n */\nexport async function consultarCuota(\n\tproveedor: string,\n\tcredencial: Credential | undefined,\n\topciones: Omit<ContextoConsulta, \"credencial\"> = {},\n): Promise<VentanaCuota[] | null> {\n\tconst consultor = CONSULTORES[proveedor];\n\tif (!consultor || !credencial || !consultor.soporta(credencial)) return null;\n\treturn conCache(claveCache(proveedor, credencial), () => consultor.consultar({ ...opciones, credencial }));\n}\n"]}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Cuota de OpenAI Codex (ChatGPT) — endpoint interno de cuenta, no la API de
3
+ * pago por token. Vive en `chatgpt.com`, no en `api.openai.com`: no hay
4
+ * override de `baseUrl` que valga aquí, un proxy de streaming lo devolvería
5
+ * en 404.
6
+ */
7
+ import { type ConsultorCuota } from "./tipos.ts";
8
+ export declare const consultorOpenAiCodex: ConsultorCuota;
9
+ //# sourceMappingURL=openai-codex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-codex.d.ts","sourceRoot":"","sources":["../../../../src/core/usage/cuota/openai-codex.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,cAAc,EAAyC,MAAM,YAAY,CAAC;AA4BxF,eAAO,MAAM,oBAAoB,EAAE,cA4ClC,CAAC","sourcesContent":["/**\n * Cuota de OpenAI Codex (ChatGPT) — endpoint interno de cuenta, no la API de\n * pago por token. Vive en `chatgpt.com`, no en `api.openai.com`: no hay\n * override de `baseUrl` que valga aquí, un proxy de streaming lo devolvería\n * en 404.\n */\n\nimport { type ConsultorCuota, ErrorConsultaCuota, type VentanaCuota } from \"./tipos.ts\";\n\nconst ENDPOINT = \"https://chatgpt.com/backend-api/wham/usage\";\n\ninterface VentanaBruta {\n\tused_percent?: number;\n\treset_at?: number;\n}\n\ninterface RespuestaCodex {\n\trate_limit?: {\n\t\tprimary_window?: VentanaBruta | null;\n\t\tsecondary_window?: VentanaBruta | null;\n\t} | null;\n}\n\nfunction aVentana(etiqueta: string, cubo: VentanaBruta | null | undefined): VentanaCuota | undefined {\n\tif (!cubo || typeof cubo.used_percent !== \"number\") return undefined;\n\tconst seReinicia = typeof cubo.reset_at === \"number\" && cubo.reset_at > 0 ? cubo.reset_at * 1000 : null;\n\treturn {\n\t\tetiqueta,\n\t\tusado: Math.min(Math.max(cubo.used_percent, 0), 100),\n\t\tlimite: 100,\n\t\tseReinicia,\n\t\tunidad: \"porcentaje\",\n\t};\n}\n\nexport const consultorOpenAiCodex: ConsultorCuota = {\n\tid: \"openai-codex\",\n\tsoporta: (credencial) => credencial.type === \"oauth\",\n\tasync consultar({ credencial, fetch: fetchImpl = fetch, señal }) {\n\t\tif (credencial.type !== \"oauth\") return null;\n\n\t\tconst headers: Record<string, string> = { authorization: `Bearer ${credencial.access}` };\n\t\tconst accountId = credencial.accountId;\n\t\tif (typeof accountId === \"string\" && accountId) headers[\"chatgpt-account-id\"] = accountId;\n\n\t\tlet respuesta: Response;\n\t\ttry {\n\t\t\trespuesta = await fetchImpl(ENDPOINT, { headers, signal: señal });\n\t\t} catch (error) {\n\t\t\tthrow new ErrorConsultaCuota(\"openai-codex\", `no se pudo contactar con OpenAI Codex: ${String(error)}`, {\n\t\t\t\tcause: error,\n\t\t\t});\n\t\t}\n\t\tif (!respuesta.ok) {\n\t\t\tthrow new ErrorConsultaCuota(\n\t\t\t\t\"openai-codex\",\n\t\t\t\t`OpenAI Codex respondió ${respuesta.status} ${respuesta.statusText}`,\n\t\t\t);\n\t\t}\n\n\t\tlet datos: RespuestaCodex;\n\t\ttry {\n\t\t\tdatos = (await respuesta.json()) as RespuestaCodex;\n\t\t} catch (error) {\n\t\t\tthrow new ErrorConsultaCuota(\n\t\t\t\t\"openai-codex\",\n\t\t\t\t`la respuesta de OpenAI Codex no es JSON válido: ${String(error)}`,\n\t\t\t\t{\n\t\t\t\t\tcause: error,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\tconst ventanas = [\n\t\t\taVentana(\"Ventana principal\", datos.rate_limit?.primary_window),\n\t\t\taVentana(\"Ventana secundaria\", datos.rate_limit?.secondary_window),\n\t\t].filter((v): v is VentanaCuota => v !== undefined);\n\t\treturn ventanas.length > 0 ? ventanas : null;\n\t},\n};\n"]}