@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,168 @@
1
+ /**
2
+ * `ada-cli review` — revisa un diff y ancla cada hallazgo al código.
3
+ *
4
+ * La pantalla de bienvenida ya ofrecía «Revisa mis cambios sin commitear», pero
5
+ * eso era una frase que iba al modelo sin nada detrás: sin contrato de salida,
6
+ * sin criba y sin forma de sacar los hallazgos del terminal. Aquí hay las tres
7
+ * cosas.
8
+ *
9
+ * Lo que hace que sirva es el ANCLAJE: un hallazgo cuya evidencia no aparece en
10
+ * el diff se descarta. Un revisor que inventa una línea plausible es peor que
11
+ * no tener revisor, porque cuesta tiempo comprobar que no existe.
12
+ *
13
+ * Y lo que lo hace vendible es `--sarif`: sin él los hallazgos se quedan en la
14
+ * terminal de quien lanzó el comando y no entran en el proceso de seguridad de
15
+ * la empresa.
16
+ */
17
+ import { execFileSync } from "node:child_process";
18
+ import { writeFileSync } from "node:fs";
19
+ import { resolve } from "node:path";
20
+ import { puntuacionDe } from "../core/revision/hallazgo.js";
21
+ import { cribar, extraerCandidatos, PROMPT_REVISION } from "../core/revision/revisor.js";
22
+ import { aSarif } from "../core/revision/sarif.js";
23
+ const AYUDA = `Uso:
24
+ ada-cli review [--staged] [--base <ref>] [--model <p/m>] [--sarif <f>] [--json]
25
+
26
+ --staged Revisa lo que está en el índice (git diff --cached)
27
+ --base <ref> Revisa contra una referencia (p. ej. main)
28
+ --sarif <fich> Escribe los hallazgos en SARIF 2.1.0, para GitHub Code
29
+ Scanning o Azure DevOps
30
+ --model <p/m> Revisa con un modelo concreto (proveedor/modelo)
31
+ --json Escribe los hallazgos en JSON por stdout
32
+
33
+ Sin opciones revisa los cambios sin commitear (git diff).
34
+
35
+ Cada hallazgo lleva la línea exacta que lo justifica, y los que no se pueden
36
+ anclar en el diff se descartan: un revisor que inventa cuesta más tiempo del
37
+ que ahorra.
38
+
39
+ Sale con código 1 si hay algún hallazgo crítico o alto, para que lo pueda
40
+ mirar un CI.`;
41
+ /** El diff que toca revisar, según las opciones. */
42
+ function obtenerDiff(args, cwd) {
43
+ const base = args.indexOf("--base");
44
+ const argumentos = base >= 0 && args[base + 1]
45
+ ? ["diff", `${args[base + 1]}...HEAD`]
46
+ : args.includes("--staged")
47
+ ? ["diff", "--cached"]
48
+ : ["diff"];
49
+ // `-U5` da contexto suficiente para que el modelo entienda el cambio sin
50
+ // mandarle el fichero entero, que es lo que dispara el coste.
51
+ return execFileSync("git", [...argumentos, "-U5"], { cwd, encoding: "utf8", maxBuffer: 32 * 1024 * 1024 });
52
+ }
53
+ const COLOR = {
54
+ critica: "\u001b[31m",
55
+ alta: "\u001b[31m",
56
+ media: "\u001b[33m",
57
+ baja: "\u001b[36m",
58
+ informativa: "\u001b[90m",
59
+ };
60
+ const FIN = "\u001b[0m";
61
+ function imprimir(hallazgos) {
62
+ for (const h of hallazgos) {
63
+ const color = COLOR[h.severidad] ?? "";
64
+ console.log(`${color}${h.severidad.toUpperCase()}${FIN} ${h.titulo}`);
65
+ console.log(` ${h.ruta}:${h.lineaInicio}${h.lineaFin && h.lineaFin !== h.lineaInicio ? `-${h.lineaFin}` : ""}`);
66
+ console.log(` ${h.resumen}`);
67
+ console.log(` │ ${h.evidencia.split("\n").join("\n │ ")}`);
68
+ if (h.remedio)
69
+ console.log(` → ${h.remedio}`);
70
+ console.log("");
71
+ }
72
+ }
73
+ /** Devuelve true si consumió los argumentos. */
74
+ export async function runReviewCommand(args, deps) {
75
+ if (args[0] !== "review")
76
+ return false;
77
+ if (args.includes("--help") || args.includes("-h")) {
78
+ console.log(AYUDA);
79
+ return true;
80
+ }
81
+ const cwd = deps.cwd ?? process.cwd();
82
+ let diff;
83
+ try {
84
+ diff = obtenerDiff(args, cwd);
85
+ }
86
+ catch (error) {
87
+ console.error(`No se pudo obtener el diff: ${error instanceof Error ? error.message : String(error)}`);
88
+ process.exitCode = 1;
89
+ return true;
90
+ }
91
+ if (diff.trim() === "") {
92
+ // Distinto de "revisado y limpio". Si no hay diff, no se ha revisado
93
+ // nada, y decir "sin hallazgos" sería tranquilizar sobre algo que no ha
94
+ // pasado.
95
+ console.log("No hay cambios que revisar.");
96
+ return true;
97
+ }
98
+ let salida;
99
+ try {
100
+ salida = await deps.revisar(PROMPT_REVISION, diff);
101
+ }
102
+ catch (error) {
103
+ // Un fallo del modelo tiene que verse como fallo, con código 1, y no como
104
+ // una revisión limpia. Se midió: sobre un fallo sembrado, cuatro de cinco
105
+ // ejecuciones decían "no ha encontrado nada" cuando lo que pasaba era un
106
+ // 429 del proveedor. Y una traza de Node tampoco sirve: quien lanza esto
107
+ // desde un CI necesita el motivo en una línea.
108
+ console.error(`La revisión no se pudo completar.\n${error instanceof Error ? error.message : String(error)}`);
109
+ process.exitCode = 1;
110
+ return true;
111
+ }
112
+ const extraccion = extraerCandidatos(salida);
113
+ if (!extraccion.ok) {
114
+ // Una respuesta ilegible NO es un diff limpio. La guarda de arriba solo
115
+ // mira si el proveedor falló o cortó; un modelo que contesta prosa
116
+ // ("No puedo ayudarte con eso.") o un JSON roto pasaba entera y salía
117
+ // como "El revisor no ha encontrado nada en este diff." con código 0.
118
+ // Se midió: las dos salidas eran idénticas byte a byte.
119
+ console.error(`La revisión no se pudo completar.\n${extraccion.motivo}`);
120
+ console.error("NO se ha revisado el diff. Esto no significa que esté limpio.");
121
+ process.exitCode = 1;
122
+ return true;
123
+ }
124
+ const candidatos = extraccion.candidatos;
125
+ const { aceptados, descartados } = cribar(candidatos, diff);
126
+ if (args.includes("--json")) {
127
+ console.log(JSON.stringify(aceptados, null, 2));
128
+ }
129
+ else if (aceptados.length > 0) {
130
+ imprimir(aceptados);
131
+ }
132
+ else if (candidatos.length === 0) {
133
+ // El revisor miró y no vio nada. Distinto de lo de abajo, y distinto de
134
+ // "no había diff": las tres se leen igual si se juntan en un mensaje.
135
+ console.log("El revisor no ha encontrado nada en este diff.");
136
+ }
137
+ else {
138
+ // «Descartados», no «no se pudieron anclar»: el anclaje es solo uno de los
139
+ // motivos. Un hallazgo sin `lineaInicio` se tiraba con este mismo mensaje,
140
+ // que culpaba al anclaje de un fallo de forma y mandaba a mirar el sitio
141
+ // equivocado. Comprobado ejecutando el comando con un hallazgo sin línea.
142
+ console.log(`Ninguno de los ${candidatos.length} hallazgos pasó la criba; todos descartados.`);
143
+ }
144
+ // Los descartes se cuentan Y SE MOTIVAN, no se esconden: sin el motivo no hay
145
+ // forma de saber si el revisor está afinado, si el modelo inventa evidencias
146
+ // o si está devolviendo hallazgos mal formados. Agrupados por motivo para que
147
+ // diez descartes no tapen la pantalla.
148
+ if (descartados.length > 0) {
149
+ const porMotivo = new Map();
150
+ for (const d of descartados)
151
+ porMotivo.set(d.motivo, (porMotivo.get(d.motivo) ?? 0) + 1);
152
+ console.error(`${descartados.length} hallazgo(s) descartado(s):`);
153
+ for (const [motivo, cuantos] of porMotivo)
154
+ console.error(` ${cuantos}x ${motivo}`);
155
+ }
156
+ const indice = args.indexOf("--sarif");
157
+ if (indice >= 0 && args[indice + 1]) {
158
+ const destino = resolve(cwd, args[indice + 1]);
159
+ writeFileSync(destino, `${JSON.stringify(aSarif(aceptados, { raizRepo: cwd }), null, 2)}\n`, "utf8");
160
+ console.log(`SARIF escrito en ${destino}`);
161
+ }
162
+ // Código 1 solo con lo grave: un CI que falle por un hallazgo informativo se
163
+ // desactiva la primera semana.
164
+ if (aceptados.some((h) => puntuacionDe(h.severidad) >= puntuacionDe("alta")))
165
+ process.exitCode = 1;
166
+ return true;
167
+ }
168
+ //# sourceMappingURL=review-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-command.js","sourceRoot":"","sources":["../../src/cli/review-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAiB,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACzF,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;aAiBD,CAAC;AAEd,qDAAoD;AACpD,SAAS,WAAW,CAAC,IAAc,EAAE,GAAW,EAAU;IACzD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,UAAU,GACf,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC;QACtC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC1B,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC;YACtB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACd,yEAAyE;IACzE,8DAA8D;IAC9D,OAAO,YAAY,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;AAAA,CAC3G;AAED,MAAM,KAAK,GAA2B;IACrC,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,YAAY;CACzB,CAAC;AACF,MAAM,GAAG,GAAG,WAAW,CAAC;AAExB,SAAS,QAAQ,CAAC,SAAqB,EAAQ;IAC9C,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,SAAO,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAQ,CAAC,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,CAAC,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,SAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;AAAA,CACD;AAQD,iDAAgD;AAChD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAc,EAAE,IAA0B,EAAoB;IACpG,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACJ,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACxB,qEAAqE;QACrE,yEAAwE;QACxE,UAAU;QACV,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACJ,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,2EAA0E;QAC1E,4EAA0E;QAC1E,0EAAyE;QACzE,yEAAyE;QACzE,gDAA+C;QAC/C,OAAO,CAAC,KAAK,CAAC,uCAAsC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9G,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;QACpB,wEAAwE;QACxE,qEAAmE;QACnE,uEAAsE;QACtE,uEAAsE;QACtE,0DAAwD;QACxD,OAAO,CAAC,KAAK,CAAC,uCAAsC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,KAAK,CAAC,gEAA+D,CAAC,CAAC;QAC/E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IACzC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAE5D,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;SAAM,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACrB,CAAC;SAAM,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,yEAAwE;QACxE,uEAAsE;QACtE,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACP,+EAA2E;QAC3E,2EAA2E;QAC3E,yEAAyE;QACzE,2EAA0E;QAC1E,OAAO,CAAC,GAAG,CAAC,kBAAkB,UAAU,CAAC,MAAM,+CAA8C,CAAC,CAAC;IAChG,CAAC;IAED,8EAA8E;IAC9E,8EAA6E;IAC7E,+EAA8E;IAC9E,uCAAuC;IACvC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,WAAW;YAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzF,OAAO,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,MAAM,6BAA6B,CAAC,CAAC;QAClE,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,SAAS;YAAE,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,KAAK,MAAM,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,IAAI,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/C,aAAa,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrG,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,8EAA6E;IAC7E,+BAA+B;IAC/B,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACnG,OAAO,IAAI,CAAC;AAAA,CACZ","sourcesContent":["/**\n * `ada-cli review` — revisa un diff y ancla cada hallazgo al código.\n *\n * La pantalla de bienvenida ya ofrecía «Revisa mis cambios sin commitear», pero\n * eso era una frase que iba al modelo sin nada detrás: sin contrato de salida,\n * sin criba y sin forma de sacar los hallazgos del terminal. Aquí hay las tres\n * cosas.\n *\n * Lo que hace que sirva es el ANCLAJE: un hallazgo cuya evidencia no aparece en\n * el diff se descarta. Un revisor que inventa una línea plausible es peor que\n * no tener revisor, porque cuesta tiempo comprobar que no existe.\n *\n * Y lo que lo hace vendible es `--sarif`: sin él los hallazgos se quedan en la\n * terminal de quien lanzó el comando y no entran en el proceso de seguridad de\n * la empresa.\n */\n\nimport { execFileSync } from \"node:child_process\";\nimport { writeFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { type Hallazgo, puntuacionDe } from \"../core/revision/hallazgo.ts\";\nimport { cribar, extraerCandidatos, PROMPT_REVISION } from \"../core/revision/revisor.ts\";\nimport { aSarif } from \"../core/revision/sarif.ts\";\n\nconst AYUDA = `Uso:\n ada-cli review [--staged] [--base <ref>] [--model <p/m>] [--sarif <f>] [--json]\n\n --staged Revisa lo que está en el índice (git diff --cached)\n --base <ref> Revisa contra una referencia (p. ej. main)\n --sarif <fich> Escribe los hallazgos en SARIF 2.1.0, para GitHub Code\n Scanning o Azure DevOps\n --model <p/m> Revisa con un modelo concreto (proveedor/modelo)\n --json Escribe los hallazgos en JSON por stdout\n\nSin opciones revisa los cambios sin commitear (git diff).\n\nCada hallazgo lleva la línea exacta que lo justifica, y los que no se pueden\nanclar en el diff se descartan: un revisor que inventa cuesta más tiempo del\nque ahorra.\n\nSale con código 1 si hay algún hallazgo crítico o alto, para que lo pueda\nmirar un CI.`;\n\n/** El diff que toca revisar, según las opciones. */\nfunction obtenerDiff(args: string[], cwd: string): string {\n\tconst base = args.indexOf(\"--base\");\n\tconst argumentos =\n\t\tbase >= 0 && args[base + 1]\n\t\t\t? [\"diff\", `${args[base + 1]}...HEAD`]\n\t\t\t: args.includes(\"--staged\")\n\t\t\t\t? [\"diff\", \"--cached\"]\n\t\t\t\t: [\"diff\"];\n\t// `-U5` da contexto suficiente para que el modelo entienda el cambio sin\n\t// mandarle el fichero entero, que es lo que dispara el coste.\n\treturn execFileSync(\"git\", [...argumentos, \"-U5\"], { cwd, encoding: \"utf8\", maxBuffer: 32 * 1024 * 1024 });\n}\n\nconst COLOR: Record<string, string> = {\n\tcritica: \"\\u001b[31m\",\n\talta: \"\\u001b[31m\",\n\tmedia: \"\\u001b[33m\",\n\tbaja: \"\\u001b[36m\",\n\tinformativa: \"\\u001b[90m\",\n};\nconst FIN = \"\\u001b[0m\";\n\nfunction imprimir(hallazgos: Hallazgo[]): void {\n\tfor (const h of hallazgos) {\n\t\tconst color = COLOR[h.severidad] ?? \"\";\n\t\tconsole.log(`${color}${h.severidad.toUpperCase()}${FIN} ${h.titulo}`);\n\t\tconsole.log(` ${h.ruta}:${h.lineaInicio}${h.lineaFin && h.lineaFin !== h.lineaInicio ? `-${h.lineaFin}` : \"\"}`);\n\t\tconsole.log(` ${h.resumen}`);\n\t\tconsole.log(` │ ${h.evidencia.split(\"\\n\").join(\"\\n │ \")}`);\n\t\tif (h.remedio) console.log(` → ${h.remedio}`);\n\t\tconsole.log(\"\");\n\t}\n}\n\nexport interface DependenciasRevision {\n\t/** Pide la revisión al modelo. Se inyecta para poder probar sin red. */\n\trevisar: (sistema: string, diff: string) => Promise<string>;\n\tcwd?: string;\n}\n\n/** Devuelve true si consumió los argumentos. */\nexport async function runReviewCommand(args: string[], deps: DependenciasRevision): Promise<boolean> {\n\tif (args[0] !== \"review\") return false;\n\tif (args.includes(\"--help\") || args.includes(\"-h\")) {\n\t\tconsole.log(AYUDA);\n\t\treturn true;\n\t}\n\n\tconst cwd = deps.cwd ?? process.cwd();\n\tlet diff: string;\n\ttry {\n\t\tdiff = obtenerDiff(args, cwd);\n\t} catch (error) {\n\t\tconsole.error(`No se pudo obtener el diff: ${error instanceof Error ? error.message : String(error)}`);\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\tif (diff.trim() === \"\") {\n\t\t// Distinto de \"revisado y limpio\". Si no hay diff, no se ha revisado\n\t\t// nada, y decir \"sin hallazgos\" sería tranquilizar sobre algo que no ha\n\t\t// pasado.\n\t\tconsole.log(\"No hay cambios que revisar.\");\n\t\treturn true;\n\t}\n\n\tlet salida: string;\n\ttry {\n\t\tsalida = await deps.revisar(PROMPT_REVISION, diff);\n\t} catch (error) {\n\t\t// Un fallo del modelo tiene que verse como fallo, con código 1, y no como\n\t\t// una revisión limpia. Se midió: sobre un fallo sembrado, cuatro de cinco\n\t\t// ejecuciones decían \"no ha encontrado nada\" cuando lo que pasaba era un\n\t\t// 429 del proveedor. Y una traza de Node tampoco sirve: quien lanza esto\n\t\t// desde un CI necesita el motivo en una línea.\n\t\tconsole.error(`La revisión no se pudo completar.\\n${error instanceof Error ? error.message : String(error)}`);\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\tconst extraccion = extraerCandidatos(salida);\n\tif (!extraccion.ok) {\n\t\t// Una respuesta ilegible NO es un diff limpio. La guarda de arriba solo\n\t\t// mira si el proveedor falló o cortó; un modelo que contesta prosa\n\t\t// (\"No puedo ayudarte con eso.\") o un JSON roto pasaba entera y salía\n\t\t// como \"El revisor no ha encontrado nada en este diff.\" con código 0.\n\t\t// Se midió: las dos salidas eran idénticas byte a byte.\n\t\tconsole.error(`La revisión no se pudo completar.\\n${extraccion.motivo}`);\n\t\tconsole.error(\"NO se ha revisado el diff. Esto no significa que esté limpio.\");\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\tconst candidatos = extraccion.candidatos;\n\tconst { aceptados, descartados } = cribar(candidatos, diff);\n\n\tif (args.includes(\"--json\")) {\n\t\tconsole.log(JSON.stringify(aceptados, null, 2));\n\t} else if (aceptados.length > 0) {\n\t\timprimir(aceptados);\n\t} else if (candidatos.length === 0) {\n\t\t// El revisor miró y no vio nada. Distinto de lo de abajo, y distinto de\n\t\t// \"no había diff\": las tres se leen igual si se juntan en un mensaje.\n\t\tconsole.log(\"El revisor no ha encontrado nada en este diff.\");\n\t} else {\n\t\t// «Descartados», no «no se pudieron anclar»: el anclaje es solo uno de los\n\t\t// motivos. Un hallazgo sin `lineaInicio` se tiraba con este mismo mensaje,\n\t\t// que culpaba al anclaje de un fallo de forma y mandaba a mirar el sitio\n\t\t// equivocado. Comprobado ejecutando el comando con un hallazgo sin línea.\n\t\tconsole.log(`Ninguno de los ${candidatos.length} hallazgos pasó la criba; todos descartados.`);\n\t}\n\n\t// Los descartes se cuentan Y SE MOTIVAN, no se esconden: sin el motivo no hay\n\t// forma de saber si el revisor está afinado, si el modelo inventa evidencias\n\t// o si está devolviendo hallazgos mal formados. Agrupados por motivo para que\n\t// diez descartes no tapen la pantalla.\n\tif (descartados.length > 0) {\n\t\tconst porMotivo = new Map<string, number>();\n\t\tfor (const d of descartados) porMotivo.set(d.motivo, (porMotivo.get(d.motivo) ?? 0) + 1);\n\t\tconsole.error(`${descartados.length} hallazgo(s) descartado(s):`);\n\t\tfor (const [motivo, cuantos] of porMotivo) console.error(` ${cuantos}x ${motivo}`);\n\t}\n\n\tconst indice = args.indexOf(\"--sarif\");\n\tif (indice >= 0 && args[indice + 1]) {\n\t\tconst destino = resolve(cwd, args[indice + 1]);\n\t\twriteFileSync(destino, `${JSON.stringify(aSarif(aceptados, { raizRepo: cwd }), null, 2)}\\n`, \"utf8\");\n\t\tconsole.log(`SARIF escrito en ${destino}`);\n\t}\n\n\t// Código 1 solo con lo grave: un CI que falle por un hallazgo informativo se\n\t// desactiva la primera semana.\n\tif (aceptados.some((h) => puntuacionDe(h.severidad) >= puntuacionDe(\"alta\"))) process.exitCode = 1;\n\treturn true;\n}\n"]}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * `ada-cli schedule` — trabajo recurrente sobre una sesión residente.
3
+ *
4
+ * El módulo `core/scheduler` existía completo y testeado, pero NADIE lo
5
+ * importaba: era código muerto mientras la tabla comparativa lo daba por
6
+ * capacidad disponible. Esto es su punto de entrada.
7
+ *
8
+ * Vive en el CLI y no como comando slash porque programar trabajo recurrente
9
+ * sin un proceso que siga vivo no significa nada: el reloj corre dentro de
10
+ * `ada-cli serve`, y sin servidor un job no se dispara. De paso, este fichero
11
+ * es nuestro y no cuesta presupuesto de sync.
12
+ */
13
+ /** Convierte `30m`, `2h`, `1d` a milisegundos. Devuelve undefined si no encaja. */
14
+ export declare function parseDuration(text: string): number | undefined;
15
+ export declare function isScheduleCommand(args: string[]): boolean;
16
+ export declare function runScheduleCommand(args: string[]): Promise<boolean>;
17
+ //# sourceMappingURL=schedule-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule-command.d.ts","sourceRoot":"","sources":["../../src/cli/schedule-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAM9D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAEzD;AAqBD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CA8EzE","sourcesContent":["/**\n * `ada-cli schedule` — trabajo recurrente sobre una sesión residente.\n *\n * El módulo `core/scheduler` existía completo y testeado, pero NADIE lo\n * importaba: era código muerto mientras la tabla comparativa lo daba por\n * capacidad disponible. Esto es su punto de entrada.\n *\n * Vive en el CLI y no como comando slash porque programar trabajo recurrente\n * sin un proceso que siga vivo no significa nada: el reloj corre dentro de\n * `ada-cli serve`, y sin servidor un job no se dispara. De paso, este fichero\n * es nuestro y no cuesta presupuesto de sync.\n */\n\nimport { getAgentDir } from \"../config.ts\";\n\n/** Convierte `30m`, `2h`, `1d` a milisegundos. Devuelve undefined si no encaja. */\nexport function parseDuration(text: string): number | undefined {\n\tconst match = /^(\\d+)(m|h|d)$/.exec(text.trim());\n\tif (!match) return undefined;\n\tconst value = Number(match[1]);\n\tif (!Number.isFinite(value) || value <= 0) return undefined;\n\treturn value * (match[2] === \"m\" ? 60_000 : match[2] === \"h\" ? 3_600_000 : 86_400_000);\n}\n\nexport function isScheduleCommand(args: string[]): boolean {\n\treturn args[0] === \"schedule\";\n}\n\nfunction help(): void {\n\tconsole.log(`Uso:\n ada-cli schedule list\n ada-cli schedule add <id> --every <30m|2h|1d> --runs <n> --expires <ISO> -- <prompt>\n ada-cli schedule add <id> --at <ISO> --runs 1 --expires <ISO> -- <prompt>\n ada-cli schedule rm <id>\n\n--runs y --expires son OBLIGATORIOS: un trabajo recurrente sin techo ni fecha de\ncaducidad es gasto indefinido, y nadie se acuerda de apagarlo.\n\nEl reloj corre dentro de 'ada-cli serve'. Sin servidor, nada se dispara.`);\n}\n\n/** Lee `--flag valor` de la lista de argumentos. */\nfunction flag(args: string[], name: string): string | undefined {\n\tconst index = args.indexOf(name);\n\treturn index >= 0 ? args[index + 1] : undefined;\n}\n\nexport async function runScheduleCommand(args: string[]): Promise<boolean> {\n\tif (!isScheduleCommand(args)) return false;\n\tconst action = args[1];\n\tif (!action || args.includes(\"--help\") || args.includes(\"-h\")) {\n\t\thelp();\n\t\treturn true;\n\t}\n\n\tconst { Scheduler } = await import(\"../core/scheduler/scheduler.ts\");\n\tconst scheduler = new Scheduler(getAgentDir());\n\n\tif (action === \"list\") {\n\t\tconst jobs = scheduler.list();\n\t\tif (jobs.length === 0) {\n\t\t\tconsole.log(\"No hay trabajos programados.\");\n\t\t\treturn true;\n\t\t}\n\t\tfor (const job of jobs) {\n\t\t\tconst every = job.intervalMs ? `cada ${Math.round(job.intervalMs / 60000)}min` : \"una vez\";\n\t\t\tconsole.log(\n\t\t\t\t`${job.id} ${every} próxima: ${job.nextRunAt} ${job.runsUsed}/${job.maxRuns} ejecuciones caduca: ${job.expiresAt}${job.enabled ? \"\" : \" [desactivado]\"}`,\n\t\t\t);\n\t\t\tconsole.log(` ${job.prompt.slice(0, 100)}`);\n\t\t}\n\t\treturn true;\n\t}\n\n\tif (action === \"rm\") {\n\t\tconst id = args[2];\n\t\tif (!id) {\n\t\t\tconsole.error(\"Falta el id. Usa 'ada-cli schedule list' para verlos.\");\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t\tconsole.log(scheduler.remove(id) ? `Eliminado: ${id}` : `No existe: ${id}`);\n\t\treturn true;\n\t}\n\n\tif (action === \"add\") {\n\t\tconst id = args[2];\n\t\t// Todo lo que va tras `--` es el prompt, sin interpretar: así puede\n\t\t// contener guiones sin que se confundan con flags.\n\t\tconst separator = args.indexOf(\"--\", 3);\n\t\tconst prompt = separator >= 0 ? args.slice(separator + 1).join(\" \") : \"\";\n\t\tif (!id || !prompt) {\n\t\t\thelp();\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t\tconst every = flag(args, \"--every\");\n\t\tconst intervalMs = every ? parseDuration(every) : undefined;\n\t\tif (every && intervalMs === undefined) {\n\t\t\tconsole.error(`Intervalo no reconocido: '${every}'. Usa formato 30m, 2h o 1d.`);\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t\tconst runs = Number(flag(args, \"--runs\"));\n\t\tconst expiresAt = flag(args, \"--expires\");\n\t\tif (!expiresAt) {\n\t\t\tconsole.error(\"--expires es obligatorio (fecha ISO).\");\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t\tconst firstRunAt = flag(args, \"--at\") ?? new Date(Date.now() + (intervalMs ?? 0)).toISOString();\n\t\tconst result = scheduler.add({ id, prompt, firstRunAt, intervalMs, maxRuns: runs, expiresAt });\n\t\tif (!result.ok) {\n\t\t\tconsole.error(result.error ?? \"no se pudo crear el trabajo\");\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t\tconsole.log(`Programado '${id}'. Primera ejecución: ${firstRunAt}`);\n\t\tconsole.log(\"Recuerda que solo corre mientras 'ada-cli serve' esté levantado.\");\n\t\treturn true;\n\t}\n\n\thelp();\n\tprocess.exitCode = 1;\n\treturn true;\n}\n"]}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * `ada-cli schedule` — trabajo recurrente sobre una sesión residente.
3
+ *
4
+ * El módulo `core/scheduler` existía completo y testeado, pero NADIE lo
5
+ * importaba: era código muerto mientras la tabla comparativa lo daba por
6
+ * capacidad disponible. Esto es su punto de entrada.
7
+ *
8
+ * Vive en el CLI y no como comando slash porque programar trabajo recurrente
9
+ * sin un proceso que siga vivo no significa nada: el reloj corre dentro de
10
+ * `ada-cli serve`, y sin servidor un job no se dispara. De paso, este fichero
11
+ * es nuestro y no cuesta presupuesto de sync.
12
+ */
13
+ import { getAgentDir } from "../config.js";
14
+ /** Convierte `30m`, `2h`, `1d` a milisegundos. Devuelve undefined si no encaja. */
15
+ export function parseDuration(text) {
16
+ const match = /^(\d+)(m|h|d)$/.exec(text.trim());
17
+ if (!match)
18
+ return undefined;
19
+ const value = Number(match[1]);
20
+ if (!Number.isFinite(value) || value <= 0)
21
+ return undefined;
22
+ return value * (match[2] === "m" ? 60_000 : match[2] === "h" ? 3_600_000 : 86_400_000);
23
+ }
24
+ export function isScheduleCommand(args) {
25
+ return args[0] === "schedule";
26
+ }
27
+ function help() {
28
+ console.log(`Uso:
29
+ ada-cli schedule list
30
+ ada-cli schedule add <id> --every <30m|2h|1d> --runs <n> --expires <ISO> -- <prompt>
31
+ ada-cli schedule add <id> --at <ISO> --runs 1 --expires <ISO> -- <prompt>
32
+ ada-cli schedule rm <id>
33
+
34
+ --runs y --expires son OBLIGATORIOS: un trabajo recurrente sin techo ni fecha de
35
+ caducidad es gasto indefinido, y nadie se acuerda de apagarlo.
36
+
37
+ El reloj corre dentro de 'ada-cli serve'. Sin servidor, nada se dispara.`);
38
+ }
39
+ /** Lee `--flag valor` de la lista de argumentos. */
40
+ function flag(args, name) {
41
+ const index = args.indexOf(name);
42
+ return index >= 0 ? args[index + 1] : undefined;
43
+ }
44
+ export async function runScheduleCommand(args) {
45
+ if (!isScheduleCommand(args))
46
+ return false;
47
+ const action = args[1];
48
+ if (!action || args.includes("--help") || args.includes("-h")) {
49
+ help();
50
+ return true;
51
+ }
52
+ const { Scheduler } = await import("../core/scheduler/scheduler.js");
53
+ const scheduler = new Scheduler(getAgentDir());
54
+ if (action === "list") {
55
+ const jobs = scheduler.list();
56
+ if (jobs.length === 0) {
57
+ console.log("No hay trabajos programados.");
58
+ return true;
59
+ }
60
+ for (const job of jobs) {
61
+ const every = job.intervalMs ? `cada ${Math.round(job.intervalMs / 60000)}min` : "una vez";
62
+ console.log(`${job.id} ${every} próxima: ${job.nextRunAt} ${job.runsUsed}/${job.maxRuns} ejecuciones caduca: ${job.expiresAt}${job.enabled ? "" : " [desactivado]"}`);
63
+ console.log(` ${job.prompt.slice(0, 100)}`);
64
+ }
65
+ return true;
66
+ }
67
+ if (action === "rm") {
68
+ const id = args[2];
69
+ if (!id) {
70
+ console.error("Falta el id. Usa 'ada-cli schedule list' para verlos.");
71
+ process.exitCode = 1;
72
+ return true;
73
+ }
74
+ console.log(scheduler.remove(id) ? `Eliminado: ${id}` : `No existe: ${id}`);
75
+ return true;
76
+ }
77
+ if (action === "add") {
78
+ const id = args[2];
79
+ // Todo lo que va tras `--` es el prompt, sin interpretar: así puede
80
+ // contener guiones sin que se confundan con flags.
81
+ const separator = args.indexOf("--", 3);
82
+ const prompt = separator >= 0 ? args.slice(separator + 1).join(" ") : "";
83
+ if (!id || !prompt) {
84
+ help();
85
+ process.exitCode = 1;
86
+ return true;
87
+ }
88
+ const every = flag(args, "--every");
89
+ const intervalMs = every ? parseDuration(every) : undefined;
90
+ if (every && intervalMs === undefined) {
91
+ console.error(`Intervalo no reconocido: '${every}'. Usa formato 30m, 2h o 1d.`);
92
+ process.exitCode = 1;
93
+ return true;
94
+ }
95
+ const runs = Number(flag(args, "--runs"));
96
+ const expiresAt = flag(args, "--expires");
97
+ if (!expiresAt) {
98
+ console.error("--expires es obligatorio (fecha ISO).");
99
+ process.exitCode = 1;
100
+ return true;
101
+ }
102
+ const firstRunAt = flag(args, "--at") ?? new Date(Date.now() + (intervalMs ?? 0)).toISOString();
103
+ const result = scheduler.add({ id, prompt, firstRunAt, intervalMs, maxRuns: runs, expiresAt });
104
+ if (!result.ok) {
105
+ console.error(result.error ?? "no se pudo crear el trabajo");
106
+ process.exitCode = 1;
107
+ return true;
108
+ }
109
+ console.log(`Programado '${id}'. Primera ejecución: ${firstRunAt}`);
110
+ console.log("Recuerda que solo corre mientras 'ada-cli serve' esté levantado.");
111
+ return true;
112
+ }
113
+ help();
114
+ process.exitCode = 1;
115
+ return true;
116
+ }
117
+ //# sourceMappingURL=schedule-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule-command.js","sourceRoot":"","sources":["../../src/cli/schedule-command.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `ada-cli schedule` — trabajo recurrente sobre una sesión residente.\n *\n * El módulo `core/scheduler` existía completo y testeado, pero NADIE lo\n * importaba: era código muerto mientras la tabla comparativa lo daba por\n * capacidad disponible. Esto es su punto de entrada.\n *\n * Vive en el CLI y no como comando slash porque programar trabajo recurrente\n * sin un proceso que siga vivo no significa nada: el reloj corre dentro de\n * `ada-cli serve`, y sin servidor un job no se dispara. De paso, este fichero\n * es nuestro y no cuesta presupuesto de sync.\n */\n\nimport { getAgentDir } from \"../config.ts\";\n\n/** Convierte `30m`, `2h`, `1d` a milisegundos. Devuelve undefined si no encaja. */\nexport function parseDuration(text: string): number | undefined {\n\tconst match = /^(\\d+)(m|h|d)$/.exec(text.trim());\n\tif (!match) return undefined;\n\tconst value = Number(match[1]);\n\tif (!Number.isFinite(value) || value <= 0) return undefined;\n\treturn value * (match[2] === \"m\" ? 60_000 : match[2] === \"h\" ? 3_600_000 : 86_400_000);\n}\n\nexport function isScheduleCommand(args: string[]): boolean {\n\treturn args[0] === \"schedule\";\n}\n\nfunction help(): void {\n\tconsole.log(`Uso:\n ada-cli schedule list\n ada-cli schedule add <id> --every <30m|2h|1d> --runs <n> --expires <ISO> -- <prompt>\n ada-cli schedule add <id> --at <ISO> --runs 1 --expires <ISO> -- <prompt>\n ada-cli schedule rm <id>\n\n--runs y --expires son OBLIGATORIOS: un trabajo recurrente sin techo ni fecha de\ncaducidad es gasto indefinido, y nadie se acuerda de apagarlo.\n\nEl reloj corre dentro de 'ada-cli serve'. Sin servidor, nada se dispara.`);\n}\n\n/** Lee `--flag valor` de la lista de argumentos. */\nfunction flag(args: string[], name: string): string | undefined {\n\tconst index = args.indexOf(name);\n\treturn index >= 0 ? args[index + 1] : undefined;\n}\n\nexport async function runScheduleCommand(args: string[]): Promise<boolean> {\n\tif (!isScheduleCommand(args)) return false;\n\tconst action = args[1];\n\tif (!action || args.includes(\"--help\") || args.includes(\"-h\")) {\n\t\thelp();\n\t\treturn true;\n\t}\n\n\tconst { Scheduler } = await import(\"../core/scheduler/scheduler.ts\");\n\tconst scheduler = new Scheduler(getAgentDir());\n\n\tif (action === \"list\") {\n\t\tconst jobs = scheduler.list();\n\t\tif (jobs.length === 0) {\n\t\t\tconsole.log(\"No hay trabajos programados.\");\n\t\t\treturn true;\n\t\t}\n\t\tfor (const job of jobs) {\n\t\t\tconst every = job.intervalMs ? `cada ${Math.round(job.intervalMs / 60000)}min` : \"una vez\";\n\t\t\tconsole.log(\n\t\t\t\t`${job.id} ${every} próxima: ${job.nextRunAt} ${job.runsUsed}/${job.maxRuns} ejecuciones caduca: ${job.expiresAt}${job.enabled ? \"\" : \" [desactivado]\"}`,\n\t\t\t);\n\t\t\tconsole.log(` ${job.prompt.slice(0, 100)}`);\n\t\t}\n\t\treturn true;\n\t}\n\n\tif (action === \"rm\") {\n\t\tconst id = args[2];\n\t\tif (!id) {\n\t\t\tconsole.error(\"Falta el id. Usa 'ada-cli schedule list' para verlos.\");\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t\tconsole.log(scheduler.remove(id) ? `Eliminado: ${id}` : `No existe: ${id}`);\n\t\treturn true;\n\t}\n\n\tif (action === \"add\") {\n\t\tconst id = args[2];\n\t\t// Todo lo que va tras `--` es el prompt, sin interpretar: así puede\n\t\t// contener guiones sin que se confundan con flags.\n\t\tconst separator = args.indexOf(\"--\", 3);\n\t\tconst prompt = separator >= 0 ? args.slice(separator + 1).join(\" \") : \"\";\n\t\tif (!id || !prompt) {\n\t\t\thelp();\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t\tconst every = flag(args, \"--every\");\n\t\tconst intervalMs = every ? parseDuration(every) : undefined;\n\t\tif (every && intervalMs === undefined) {\n\t\t\tconsole.error(`Intervalo no reconocido: '${every}'. Usa formato 30m, 2h o 1d.`);\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t\tconst runs = Number(flag(args, \"--runs\"));\n\t\tconst expiresAt = flag(args, \"--expires\");\n\t\tif (!expiresAt) {\n\t\t\tconsole.error(\"--expires es obligatorio (fecha ISO).\");\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t\tconst firstRunAt = flag(args, \"--at\") ?? new Date(Date.now() + (intervalMs ?? 0)).toISOString();\n\t\tconst result = scheduler.add({ id, prompt, firstRunAt, intervalMs, maxRuns: runs, expiresAt });\n\t\tif (!result.ok) {\n\t\t\tconsole.error(result.error ?? \"no se pudo crear el trabajo\");\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t\tconsole.log(`Programado '${id}'. Primera ejecución: ${firstRunAt}`);\n\t\tconsole.log(\"Recuerda que solo corre mientras 'ada-cli serve' esté levantado.\");\n\t\treturn true;\n\t}\n\n\thelp();\n\tprocess.exitCode = 1;\n\treturn true;\n}\n"]}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Subcomandos que no abren el TUI: `serve`, `sessions`, `session`, `attach`,
3
+ * `acp`, `schedule`, `refine` y `telegram`.
4
+ *
5
+ * Se mantienen en un fichero propio y el enganche en `main.ts` es un import y
6
+ * una llamada, para no engordar la superficie de conflicto con upstream. `acp`
7
+ * entra aquí por lo mismo: añadirlo cuesta cero hunks nuevos contra upstream.
8
+ */
9
+ /**
10
+ * Separa `--socket <ruta>` de los argumentos de la operación.
11
+ *
12
+ * Existe porque sin ella se colaban dentro: `session x rename --socket /tmp/s`
13
+ * acababa poniéndole a la sesión el nombre "--socket /tmp/s". Se exporta para
14
+ * poder probarlo sin levantar un servidor.
15
+ */
16
+ export declare function parseSessionOpArgs(args: string[]): {
17
+ sessionId?: string;
18
+ op?: string;
19
+ rest: string[];
20
+ };
21
+ /**
22
+ * Por qué lo que ha llegado del modelo NO es una respuesta, o `null` si sí lo es.
23
+ *
24
+ * DOS formas de no serlo, y solo se miraba una:
25
+ *
26
+ * - `vacia`: no ha llegado texto. Ésta ya se miraba.
27
+ * - `cortada`: el proveedor se murió con el stream YA EMPEZADO. Llega texto,
28
+ * así que la guarda de «texto vacío» no lo ve, y el trozo sale como si
29
+ * fuera la respuesta buena.
30
+ *
31
+ * Reproducido con un servidor que emite un trozo y destruye el socket. La
32
+ * respuesta que devuelve el SDK es literalmente:
33
+ *
34
+ * { stopReason: "error", errorMessage: "terminated",
35
+ * texto: "reintenta las peti" }
36
+ *
37
+ * Y con eso, `ada-cli commit --hacer` dejó ESTO en la historia de git, con
38
+ * salida 0 y stderr vacío:
39
+ *
40
+ * [main c3a409b] reintenta las peti
41
+ * 1 file changed, 7 insertions(+)
42
+ *
43
+ * `review` entra por la misma puerta: media revisión sale como la revisión
44
+ * entera. Es exactamente el fallo que esta función dice impedir, colándose por
45
+ * el lado que no se miraba.
46
+ *
47
+ * El trozo se DESCARTA entero a propósito: media revisión no es una revisión y
48
+ * medio titular no es un titular. `length` NO cuenta como corte — ahí el modelo
49
+ * terminó de hablar, aunque fuera por el tope de tokens, y rechazarlo sería un
50
+ * falso positivo que rompe la cara buena.
51
+ */
52
+ export declare function porQueNoEsRespuesta(stopReason: string, texto: string): "vacia" | "cortada" | null;
53
+ /**
54
+ * Los subcomandos que se despachan aquí. La fuente de verdad, exportada.
55
+ *
56
+ * Se exporta para que la prueba de la ayuda pueda recorrer ESTA lista y no una
57
+ * copia. Con la copia, añadir un subcomando nuevo sin documentarlo dejaba la
58
+ * prueba en verde: se comprobó añadiendo `fantasma` a la lista y sin tocar la
59
+ * ayuda, y pasaron 21 de 21. La prueba decía mirar la fuente de verdad y miraba
60
+ * su propia copia, que es el mismo defecto que dice prevenir.
61
+ */
62
+ export declare const SUBCOMANDOS_SERVE: readonly string[];
63
+ export declare function isServeCommand(args: string[]): boolean;
64
+ export declare function printServeHelp(): void;
65
+ /**
66
+ * Ejecuta el subcomando. Devuelve true si consumió los argumentos.
67
+ *
68
+ * Las dependencias pesadas se cargan de forma perezosa: un arranque normal del
69
+ * CLI no debe pagar el coste de importar el servidor.
70
+ */
71
+ export declare function runServeCommand(args: string[]): Promise<boolean>;
72
+ //# sourceMappingURL=serve-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve-command.d.ts","sourceRoot":"","sources":["../../src/cli/serve-command.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAKtG;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAIjG;AAyED;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAkC9C,CAAC;AAEF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAEtD;AAED,wBAAgB,cAAc,IAAI,IAAI,CA8BrC;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAiYtE","sourcesContent":["/**\n * Subcomandos que no abren el TUI: `serve`, `sessions`, `session`, `attach`,\n * `acp`, `schedule`, `refine` y `telegram`.\n *\n * Se mantienen en un fichero propio y el enganche en `main.ts` es un import y\n * una llamada, para no engordar la superficie de conflicto con upstream. `acp`\n * entra aquí por lo mismo: añadirlo cuesta cero hunks nuevos contra upstream.\n */\n\nimport { join } from \"node:path\";\nimport { getAgentDir } from \"../config.ts\";\n\n/**\n * Separa `--socket <ruta>` de los argumentos de la operación.\n *\n * Existe porque sin ella se colaban dentro: `session x rename --socket /tmp/s`\n * acababa poniéndole a la sesión el nombre \"--socket /tmp/s\". Se exporta para\n * poder probarlo sin levantar un servidor.\n */\nexport function parseSessionOpArgs(args: string[]): { sessionId?: string; op?: string; rest: string[] } {\n\tconst socketIndex = args.indexOf(\"--socket\");\n\tconst cleaned = socketIndex >= 0 ? args.filter((_, i) => i !== socketIndex && i !== socketIndex + 1) : args;\n\tconst [, sessionId, op, ...rest] = cleaned;\n\treturn { sessionId, op, rest };\n}\n\n/**\n * Por qué lo que ha llegado del modelo NO es una respuesta, o `null` si sí lo es.\n *\n * DOS formas de no serlo, y solo se miraba una:\n *\n * - `vacia`: no ha llegado texto. Ésta ya se miraba.\n * - `cortada`: el proveedor se murió con el stream YA EMPEZADO. Llega texto,\n * así que la guarda de «texto vacío» no lo ve, y el trozo sale como si\n * fuera la respuesta buena.\n *\n * Reproducido con un servidor que emite un trozo y destruye el socket. La\n * respuesta que devuelve el SDK es literalmente:\n *\n * { stopReason: \"error\", errorMessage: \"terminated\",\n * texto: \"reintenta las peti\" }\n *\n * Y con eso, `ada-cli commit --hacer` dejó ESTO en la historia de git, con\n * salida 0 y stderr vacío:\n *\n * [main c3a409b] reintenta las peti\n * 1 file changed, 7 insertions(+)\n *\n * `review` entra por la misma puerta: media revisión sale como la revisión\n * entera. Es exactamente el fallo que esta función dice impedir, colándose por\n * el lado que no se miraba.\n *\n * El trozo se DESCARTA entero a propósito: media revisión no es una revisión y\n * medio titular no es un titular. `length` NO cuenta como corte — ahí el modelo\n * terminó de hablar, aunque fuera por el tope de tokens, y rechazarlo sería un\n * falso positivo que rompe la cara buena.\n */\nexport function porQueNoEsRespuesta(stopReason: string, texto: string): \"vacia\" | \"cortada\" | null {\n\tif (stopReason === \"error\" || stopReason === \"aborted\") return \"cortada\";\n\tif (texto.trim() === \"\") return \"vacia\";\n\treturn null;\n}\n\n/**\n * Una llamada al modelo configurado, lista para inyectar en un subcomando.\n *\n * Vive aquí y no en cada comando porque `review` y `commit` la necesitan igual,\n * y sobre todo porque la parte que importa —una respuesta vacía o cortada es un\n * FALLO, no un resultado— no puede depender de que cada comando se acuerde de\n * escribirla. Ya nos costó cuatro revisiones falsamente limpias: eran 429 del\n * proveedor que se leyeron como \"tu código está limpio\".\n *\n * `advertencia` es lo que cambia entre comandos: la frase que evita que el\n * usuario interprete el fallo como un veredicto.\n */\nfunction crearLlamadaAlModelo(\n\targs: string[],\n\tagentDir: string,\n\tadvertencia: string,\n): (sistema: string, usuario: string) => Promise<string> {\n\treturn async (sistema, usuario) => {\n\t\tconst { ModelRuntime } = await import(\"../core/model-runtime.ts\");\n\t\tconst { resolveCliModel } = await import(\"../core/model-resolver.ts\");\n\t\tconst { SettingsManager } = await import(\"../core/settings-manager.ts\");\n\t\tconst { homedir } = await import(\"node:os\");\n\t\tconst modelRuntime = await ModelRuntime.create();\n\t\t// El modelo de los ajustes, que es el que el usuario ya eligió. Sin esto\n\t\t// habría que pasarlo a mano en cada llamada, y un comando que exige\n\t\t// recordar un identificador de modelo no lo lanza nadie.\n\t\tconst ajustes = SettingsManager.create(homedir(), agentDir);\n\t\t// `--model proveedor/modelo` gana a los ajustes: un CI necesita fijar con\n\t\t// qué se ejecuta, y no depender de lo que tenga elegido quien lo configuró.\n\t\tconst iModelo = args.indexOf(\"--model\");\n\t\tconst spec = iModelo >= 0 ? args[iModelo + 1] : undefined;\n\t\tconst barra = spec?.indexOf(\"/\") ?? -1;\n\t\tconst { model } = resolveCliModel({\n\t\t\tmodelRuntime,\n\t\t\tcliProvider: barra > 0 ? spec?.slice(0, barra) : ajustes.getDefaultProvider(),\n\t\t\tcliModel: barra > 0 ? spec?.slice(barra + 1) : ajustes.getDefaultModel(),\n\t\t});\n\t\tif (!model) {\n\t\t\tthrow new Error(\"No hay modelo configurado. Abre `ada-cli` y elige uno con /login o /model.\");\n\t\t}\n\t\tconst { contentText } = await import(\"@earendil-works/pi-ai\");\n\t\tconst respuesta = await modelRuntime.completeSimple(model, {\n\t\t\tsystemPrompt: sistema,\n\t\t\tmessages: [{ role: \"user\", content: usuario }],\n\t\t} as never);\n\t\tconst texto = contentText(respuesta.content, \"\");\n\t\t// Ni vacía ni cortada. Lo encontró el propio `ada-cli review` revisando\n\t\t// este mismo diff, y tenía razón: cuatro de cinco ejecuciones sobre un\n\t\t// fallo sembrado decían \"el revisor no ha encontrado nada\" cuando lo que\n\t\t// pasaba era un 429 del proveedor.\n\t\tconst motivo = porQueNoEsRespuesta(respuesta.stopReason, texto);\n\t\tif (motivo) {\n\t\t\t// El error del proveedor, clasificado. Antes se le enseñaba al usuario el\n\t\t\t// volcado JSON entero —400 caracteres con tres cosas útiles dentro— y la\n\t\t\t// mayoría no lo lee: un error que no se lee se interpreta como \"esto no\n\t\t\t// funciona\".\n\t\t\tconst { clasificarError, explicarError } = await import(\"../core/errores/proveedor.ts\");\n\t\t\tconst clasificado = clasificarError({ mensaje: respuesta.errorMessage ?? respuesta.stopReason });\n\t\t\t// Decir CUÁNTO llegó y que se tira. Callarlo dejaría al usuario creyendo\n\t\t\t// que el proveedor no contestó nada, cuando lo que pasó es que contestó\n\t\t\t// a medias y hemos decidido no fiarnos.\n\t\t\tconst aMedias =\n\t\t\t\tmotivo === \"cortada\" && texto.trim() !== \"\"\n\t\t\t\t\t? `\\nLa respuesta llegó a medias (${texto.trim().length} caracteres) y se DESCARTA: media respuesta no es una respuesta.`\n\t\t\t\t\t: \"\";\n\t\t\tthrow new Error(`${explicarError(clasificado)}${aMedias}\\n${advertencia}`);\n\t\t}\n\t\treturn texto;\n\t};\n}\n\n/**\n * Los subcomandos que se despachan aquí. La fuente de verdad, exportada.\n *\n * Se exporta para que la prueba de la ayuda pueda recorrer ESTA lista y no una\n * copia. Con la copia, añadir un subcomando nuevo sin documentarlo dejaba la\n * prueba en verde: se comprobó añadiendo `fantasma` a la lista y sin tocar la\n * ayuda, y pasaron 21 de 21. La prueba decía mirar la fuente de verdad y miraba\n * su propia copia, que es el mismo defecto que dice prevenir.\n */\nexport const SUBCOMANDOS_SERVE: readonly string[] = [\n\t\"serve\",\n\t\"attach\",\n\t\"sessions\",\n\t\"session\",\n\t\"acp\",\n\t\"schedule\",\n\t\"refine\",\n\t\"telegram\",\n\t\"undo\",\n\t\"usage\",\n\t\"wiki\",\n\t\"audit\",\n\t\"review\",\n\t\"import\",\n\t\"discover\",\n\t\"hashline\",\n\t\"cleanse\",\n\t\"banco\",\n\t\"commit\",\n\t// `computer` faltaba mientras `runServeCommand` lo manejaba y `printServeHelp`\n\t// lo anunciaba: `ada-cli computer status` no llegaba nunca a su rama, se iba\n\t// al camino normal y salía \"No API key found\" con código 0 — capacidad\n\t// construida, documentada y desenchufada. Se perdió justamente porque la\n\t// lista vivía copiada en dos sitios; por eso ahora es UNA constante y la\n\t// guarda de `test/serve-command-lista.test.ts` la compara con el despacho.\n\t\"computer\",\n\t// `politica`/`policy`: el ámbito de configuración que el usuario no puede\n\t// editar. Va en la lista, en `ownsItsHelp` y en la ayuda a la vez, que son\n\t// los tres sitios donde `computer` se quedó a medias.\n\t\"politica\",\n\t\"policy\",\n\t\"telemetria\",\n\t\"telemetry\",\n];\n\nexport function isServeCommand(args: string[]): boolean {\n\treturn SUBCOMANDOS_SERVE.includes(args[0] ?? \"\");\n}\n\nexport function printServeHelp(): void {\n\tconsole.log(`Uso:\n ada-cli serve [--socket <ruta>] Hospeda sesiones residentes; el trabajo sobrevive al cierre del terminal\n ada-cli serve --broker [--escuchar host:puerto] [--credenciales <archivo.json>]\n Broker de credenciales: las claves salen del portátil de cada dev\n ada-cli sessions Lista las sesiones conocidas\n ada-cli attach <id> [--watch] Reconecta a una sesión servida (--watch = solo mirar)\n ada-cli session <id> <op> compact | rename <nombre> | fork | kill | ops\n ada-cli acp Habla Agent Client Protocol por stdio (Zed y otros editores)\n ada-cli schedule <acción> Trabajo recurrente (corre dentro de 'serve')\n ada-cli refine [sessionId] Extrae lecciones durables de una sesión al harness\n ada-cli telegram Controla las sesiones residentes desde Telegram\n ada-cli undo [--dry-run] Deshace los cambios de ficheros del último turno\n ada-cli usage [--days N] Tokens y coste reales, por modelo, proyecto y día\n ada-cli wiki <index|check> Wiki del repositorio con citas que caducan\n ada-cli computer <status|install> Motor de control del ordenador y sus permisos\n ada-cli review [--sarif <f>] Revisa el diff con hallazgos anclados al código y SARIF 2.1.0\n ada-cli audit <...> Registro de cumplimiento: solo lee ficheros, contesta aunque el resto esté caído\n ada-cli politica Política del equipo: el único ámbito que el usuario no puede editar\n (en inglés: ada-cli policy)\n ada-cli telemetria [--cuerpo] Exportación OTLP: qué sale de esta máquina, y qué no\n (en inglés: ada-cli telemetry)\n ada-cli import <...> Trae sesiones y configuración de otras herramientas\n ada-cli discover Lista MCP, skills y comandos que otras herramientas dejaron en el proyecto\n ada-cli hashline <tag|apply> Formato de edición anclado por hash de línea\n ada-cli cleanse [--dry-run] Detecta y arregla en paralelo los diagnósticos de lint/typecheck/test\n ada-cli banco <generar|run|comparar> Banco de fiabilidad de edición: casos, ejecución y comparación\n ada-cli commit [--hacer] Mensaje de commit de lo que hay en el índice, por map-reduce sobre el diff\n\nEl socket vive por defecto en <agentDir>/server.sock y solo lo puede leer tu usuario.`);\n}\n\n/**\n * Ejecuta el subcomando. Devuelve true si consumió los argumentos.\n *\n * Las dependencias pesadas se cargan de forma perezosa: un arranque normal del\n * CLI no debe pagar el coste de importar el servidor.\n */\nexport async function runServeCommand(args: string[]): Promise<boolean> {\n\tif (!isServeCommand(args)) return false;\n\n\t// La ayuda genérica solo cubre los subcomandos que NO traen la suya. Antes\n\t// se comprobaba primero y se comía a las demás: `refine --help` acababa\n\t// enseñando la ayuda de `serve`.\n\tconst ownsItsHelp = [\n\t\t\"acp\",\n\t\t\"schedule\",\n\t\t\"refine\",\n\t\t\"telegram\",\n\t\t\"undo\",\n\t\t\"usage\",\n\t\t\"wiki\",\n\t\t\"computer\",\n\t\t\"audit\",\n\t\t\"politica\",\n\t\t\"policy\",\n\t\t\"telemetria\",\n\t\t\"telemetry\",\n\t\t\"review\",\n\t\t\"import\",\n\t\t\"discover\",\n\t\t\"hashline\",\n\t\t\"cleanse\",\n\t\t\"banco\",\n\t\t\"commit\",\n\t].includes(args[0] ?? \"\");\n\tif (!ownsItsHelp && (args.includes(\"--help\") || args.includes(\"-h\"))) {\n\t\tprintServeHelp();\n\t\treturn true;\n\t}\n\n\tconst agentDir = getAgentDir();\n\n\t// `audit` va lo primero: solo lee ficheros, no necesita socket ni servidor,\n\t// y tiene que poder contestar aunque el resto esté caído — un registro de\n\t// cumplimiento que exige que el producto arranque no sirve de mucho.\n\tconst { runPoliticaCommand } = await import(\"./politica-command.ts\");\n\tif (await runPoliticaCommand(args)) return true;\n\n\tconst { runTelemetriaCommand } = await import(\"./telemetria-command.ts\");\n\tif (await runTelemetriaCommand(args, agentDir)) return true;\n\n\tconst { runAuditCommand } = await import(\"./audit-command.ts\");\n\tif (await runAuditCommand(args, agentDir)) return true;\n\n\t// `discover` tampoco necesita servidor: solo lee ficheros de otras\n\t// herramientas en el cwd (MCP, skills, comandos de barra).\n\tconst { runDiscoverCommand } = await import(\"./discover-command.ts\");\n\tif (await runDiscoverCommand(args)) return true;\n\n\t// `import` tampoco necesita servidor: lee ficheros de otras herramientas y\n\t// escribe los nuestros.\n\tif (args[0] === \"import\") {\n\t\tconst { runImportCommand } = await import(\"./import-command.ts\");\n\t\tconst { randomUUID } = await import(\"node:crypto\");\n\t\treturn runImportCommand(args, agentDir, () => randomUUID());\n\t}\n\n\t// Frontera de red. `audit`, `discover` e `import` solo leen y escriben\n\t// ficheros, y cargar `undici` para ellos cuesta 221 módulos medidos (`discover`\n\t// pasaba de 120 a 341). Todo lo que va DEBAJO puede hablar por red, así que el\n\t// dispatcher se configura aquí.\n\t//\n\t// El sentido en el que se estropea es el bueno a propósito: un subcomando nuevo\n\t// se añade debajo y recibe el dispatcher. Subirlo por encima de esta línea es\n\t// lo que hay que justificar, no bajarlo.\n\tconst { configureHttpDispatcher } = await import(\"../core/http-dispatcher.ts\");\n\tconfigureHttpDispatcher();\n\n\t// `cleanse` tampoco necesita servidor: detecta comprobadores del proyecto,\n\t// los ejecuta y lanza subagentes de reparación directamente.\n\tif (args[0] === \"cleanse\") {\n\t\tconst { runCleanseCommand } = await import(\"./cleanse-command.ts\");\n\t\treturn runCleanseCommand(args, agentDir);\n\t}\n\n\t// `banco` tampoco necesita servidor: `generar`/`comparar` solo leen y\n\t// escriben ficheros; `run` abre sus propias sesiones de agente puntuales.\n\tif (args[0] === \"banco\") {\n\t\tconst { runBancoCommand } = await import(\"./banco-command.ts\");\n\t\treturn runBancoCommand(args);\n\t}\n\n\t// `review` y `commit` necesitan el modelo, así que se les pasa la llamada ya\n\t// construida. La lógica vive en `core/revision/` y `core/commit/`, que se\n\t// pueden probar sin red.\n\tif (args[0] === \"review\") {\n\t\tconst { runReviewCommand } = await import(\"./review-command.ts\");\n\t\treturn await runReviewCommand(args, {\n\t\t\trevisar: crearLlamadaAlModelo(args, agentDir, \"NO se ha revisado el diff. Esto no significa que esté limpio.\"),\n\t\t});\n\t}\n\n\t// `commit` tampoco necesita servidor: lee el índice de git, resume cada\n\t// fichero por separado (map) y sintetiza el mensaje (reduce).\n\tif (args[0] === \"commit\") {\n\t\tconst { runCommitCommand } = await import(\"./commit-command.ts\");\n\t\treturn await runCommitCommand(args, {\n\t\t\tllamar: crearLlamadaAlModelo(args, agentDir, \"NO se ha generado ningún mensaje. El índice sigue intacto.\"),\n\t\t});\n\t}\n\n\t// `acp` va antes de resolver el socket: no usa ninguno, habla JSON-RPC por\n\t// stdio. Y sobre todo, no puede escribir NADA en stdout antes de arrancar —\n\t// stdout es el cable.\n\tif (args[0] === \"acp\") {\n\t\tif (args.includes(\"--help\") || args.includes(\"-h\")) {\n\t\t\tconsole.log(`Uso:\n ada-cli acp [--model <provider/model>] Habla Agent Client Protocol por stdio\n\nPensado para que lo lance un editor (Zed y otros clientes ACP), no para\nejecutarlo a mano: stdout es el cable JSON-RPC. Configúralo como comando del\nagente en tu editor.`);\n\t\t\treturn true;\n\t\t}\n\t\tconst { runAcpMode } = await import(\"../modes/acp/acp-mode.ts\");\n\t\tconst { createAgentSession } = await import(\"../core/sdk.ts\");\n\t\t// `--model provider/model`. Se parte por la PRIMERA barra: los ids de\n\t\t// modelo pueden llevar más (openrouter/stealth/ox-alpha).\n\t\tconst modelIndex = args.indexOf(\"--model\");\n\t\tconst modelSpec = modelIndex >= 0 ? args[modelIndex + 1] : undefined;\n\t\tlet model: import(\"@earendil-works/pi-ai\").Model<never> | undefined;\n\t\tif (modelSpec) {\n\t\t\tconst slash = modelSpec.indexOf(\"/\");\n\t\t\tif (slash <= 0) {\n\t\t\t\tprocess.stderr.write(`[acp] --model debe ser 'provider/model' (recibido: ${modelSpec}).\\n`);\n\t\t\t\tprocess.exitCode = 1;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconst { ModelRuntime } = await import(\"../core/model-runtime.ts\");\n\t\t\tconst runtime = await ModelRuntime.create({\n\t\t\t\tauthPath: join(agentDir, \"auth.json\"),\n\t\t\t\tmodelsPath: join(agentDir, \"models.json\"),\n\t\t\t});\n\t\t\tmodel = runtime.getModel(modelSpec.slice(0, slash), modelSpec.slice(slash + 1)) as never;\n\t\t\tif (!model) {\n\t\t\t\t// Fallar aquí y no más tarde: arrancar con el modelo equivocado y no\n\t\t\t\t// decirlo produce una prueba que parece pasar y no prueba nada.\n\t\t\t\tprocess.stderr.write(`[acp] modelo no encontrado: ${modelSpec}\\n`);\n\t\t\t\tprocess.exitCode = 1;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\tawait runAcpMode({\n\t\t\tcreateSession: async ({ cwd }) => {\n\t\t\t\tconst { session } = await createAgentSession({ cwd, agentDir, model });\n\t\t\t\treturn session;\n\t\t\t},\n\t\t});\n\t\treturn true;\n\t}\n\n\t// Ni `schedule` ni `refine` usan el socket: uno escribe el fichero de jobs\n\t// que `serve` lee, y el otro trabaja sobre una sesión en disco.\n\tif (args[0] === \"schedule\") {\n\t\tconst { runScheduleCommand } = await import(\"./schedule-command.ts\");\n\t\treturn runScheduleCommand(args);\n\t}\n\tif (args[0] === \"refine\") {\n\t\tconst { runRefineCommand } = await import(\"./refine-command.ts\");\n\t\treturn runRefineCommand(args);\n\t}\n\tif (args[0] === \"telegram\") {\n\t\tconst { runTelegramCommand } = await import(\"./telegram-command.ts\");\n\t\treturn runTelegramCommand(args);\n\t}\n\tif (args[0] === \"undo\") {\n\t\tconst { runUndoCommand } = await import(\"./undo-command.ts\");\n\t\treturn runUndoCommand(args, agentDir);\n\t}\n\tif (args[0] === \"usage\") {\n\t\tconst { runUsageCommand } = await import(\"./usage-command.ts\");\n\t\treturn runUsageCommand(args, agentDir);\n\t}\n\tif (args[0] === \"wiki\") {\n\t\tconst { runWikiCommand } = await import(\"./wiki-command.ts\");\n\t\treturn runWikiCommand(args);\n\t}\n\tif (args[0] === \"computer\") {\n\t\tconst { runComputerCommand } = await import(\"./computer-command.ts\");\n\t\treturn runComputerCommand(args);\n\t}\n\tif (args[0] === \"hashline\") {\n\t\tconst { runHashlineCommand } = await import(\"./hashline-command.ts\");\n\t\treturn runHashlineCommand(args);\n\t}\n\n\t// `serve --broker`: modo alternativo, no usa el socket Unix de sesiones. Es\n\t// lo que hace viable el hueco sin construir un producto servidor nuevo — un\n\t// equipo que quiera centralizar credenciales levanta esto, y quien no\n\t// quiera no paga nada porque el flag no existe hasta que se pide.\n\tif (args[0] === \"serve\" && args.includes(\"--broker\")) {\n\t\tconst { CredencialPool } = await import(\"../core/credenciales/pool.ts\");\n\t\tconst { iniciarServidorBroker, DEFAULT_BROKER_BIND } = await import(\"../core/credenciales/servidor.ts\");\n\t\tconst { LibroDeSesion } = await import(\"../core/audit/libro.ts\");\n\t\tconst { readFile } = await import(\"node:fs/promises\");\n\n\t\t// Fallar cerrado en el propio CLI, antes de tocar el pool o el fichero:\n\t\t// un broker sin bearer no debe ni intentar arrancar. `iniciarServidorBroker`\n\t\t// repite esta comprobación (es la que de verdad importa, por si algún día\n\t\t// se llama sin pasar por este CLI) — dos capas, un solo mensaje.\n\t\tconst token = process.env.ADA_BROKER_TOKEN?.trim();\n\t\tif (!token) {\n\t\t\tconsole.error(\n\t\t\t\t\"Falta ADA_BROKER_TOKEN. El broker no arranca sin un bearer: escuchar sin auth expondría \" +\n\t\t\t\t\t\"las credenciales de todo el equipo a quien alcance el puerto.\\n\" +\n\t\t\t\t\t'Genera uno y expórtalo, por ejemplo: export ADA_BROKER_TOKEN=\"$(node -e \\'console.log(require(\"crypto\").randomBytes(24).toString(\"hex\"))\\')\"',\n\t\t\t);\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\n\t\tconst iCredenciales = args.indexOf(\"--credenciales\");\n\t\tconst rutaCredenciales = iCredenciales >= 0 ? args[iCredenciales + 1] : undefined;\n\t\tif (!rutaCredenciales) {\n\t\t\tconsole.error(\n\t\t\t\t\"Falta --credenciales <archivo.json> con las credenciales del pool. Formato: \" +\n\t\t\t\t\t'{\"<proveedor>\": [{\"id\": \"...\", \"valor\": \"...\"}, ...]}',\n\t\t\t);\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\n\t\tlet credencialesCrudo: string;\n\t\ttry {\n\t\t\tcredencialesCrudo = await readFile(rutaCredenciales, \"utf-8\");\n\t\t} catch (error) {\n\t\t\tconsole.error(\n\t\t\t\t`No se puede leer ${rutaCredenciales}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t);\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\n\t\tconst pool = new CredencialPool(JSON.parse(credencialesCrudo));\n\t\t// Sesión propia \"broker\": no es una sesión de agente, pero el libro es el\n\t\t// mismo mecanismo y el mismo directorio — es lo que hace auditable \"quién\n\t\t// usó qué cuenta y cuándo\" sin construir un segundo sistema de registro.\n\t\tconst libro = new LibroDeSesion(agentDir, \"broker\");\n\n\t\tconst iEscuchar = args.indexOf(\"--escuchar\");\n\t\tconst bind = iEscuchar >= 0 && args[iEscuchar + 1] ? args[iEscuchar + 1] : DEFAULT_BROKER_BIND;\n\n\t\ttry {\n\t\t\tconst servidor = await iniciarServidorBroker({ pool, token, libro, bind });\n\t\t\tconsole.log(`Broker de credenciales escuchando en ${servidor.url}`);\n\t\t\tconsole.log(\"Bearer requerido en cada petición salvo /v1/health. Ctrl-C para parar.\");\n\t\t\tawait new Promise<void>(() => {});\n\t\t} catch (error) {\n\t\t\tconsole.error(error instanceof Error ? error.message : String(error));\n\t\t\tprocess.exitCode = 1;\n\t\t}\n\t\treturn true;\n\t}\n\n\tconst socketIndex = args.indexOf(\"--socket\");\n\tconst { defaultSocketPath } = await import(\"../server/serve.ts\");\n\tconst socketPath = socketIndex >= 0 && args[socketIndex + 1] ? args[socketIndex + 1] : defaultSocketPath(agentDir);\n\n\tif (args[0] === \"sessions\") {\n\t\tconst { SessionManager } = await import(\"../core/session-manager.ts\");\n\t\tconst sessions = await SessionManager.list(process.cwd());\n\t\tif (sessions.length === 0) {\n\t\t\tconsole.log(\"No hay sesiones en este proyecto.\");\n\t\t\treturn true;\n\t\t}\n\t\tfor (const session of sessions) {\n\t\t\tconst name = session.name ? ` — ${session.name}` : \"\";\n\t\t\tconsole.log(\n\t\t\t\t`${session.id.slice(0, 8)} ${session.modified.toISOString()} ${session.messageCount} msgs${name}`,\n\t\t\t);\n\t\t}\n\t\treturn true;\n\t}\n\n\tif (args[0] === \"session\") {\n\t\t// `ada-cli session <id> <op> [args]` — compact/rename/fork/kill sobre una\n\t\t// sesión del servidor. Van por el comando genérico `extension`, así que\n\t\t// añadir una op nueva no toca este fichero ni el protocolo.\n\t\tconst { sessionId, op, rest } = parseSessionOpArgs(args);\n\t\tif (!sessionId || !op) {\n\t\t\tconsole.error(\"Uso: ada-cli session <id> <compact|rename|fork|kill|ops> [args]\");\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t\tconst { existsSync } = await import(\"node:fs\");\n\t\tif (!existsSync(socketPath)) {\n\t\t\tconsole.error(`No hay ningún servidor de Ada en ${socketPath}. Arráncalo con 'ada-cli serve'.`);\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t\tconst payload =\n\t\t\top === \"rename\"\n\t\t\t\t? { name: rest.join(\" \") }\n\t\t\t\t: op === \"compact\" && rest.length > 0\n\t\t\t\t\t? { customInstructions: rest.join(\" \") }\n\t\t\t\t\t: {};\n\t\tconst { runExtensionOp } = await import(\"../server/extension-ops.ts\");\n\t\tconst result = await runExtensionOp({ socketPath, op, sessionId, payload });\n\t\tif (!result.ok) {\n\t\t\tconsole.error(result.error ?? \"la operación falló\");\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t\tconsole.log(JSON.stringify(result.data, null, 2));\n\t\treturn true;\n\t}\n\n\tif (args[0] === \"attach\") {\n\t\tconst sessionId = args[1];\n\t\tif (!sessionId) {\n\t\t\tconsole.error(\"Falta el id de sesión. Usa 'ada-cli sessions' para verlos.\");\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t\tconst { existsSync } = await import(\"node:fs\");\n\t\tif (!existsSync(socketPath)) {\n\t\t\tconsole.error(`No hay ningún servidor de Ada en ${socketPath}. Arráncalo con 'ada-cli serve'.`);\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\t\tconst { attach } = await import(\"../server/attach.ts\");\n\t\ttry {\n\t\t\t// --watch: solo mirar, sin abrir entrada. Útil para vigilar un goal\n\t\t\t// largo sin riesgo de escribir en él por accidente.\n\t\t\tawait attach({ socketPath, sessionId, readOnly: args.includes(\"--watch\") });\n\t\t} catch (error) {\n\t\t\tconsole.error(error instanceof Error ? error.message : String(error));\n\t\t\tprocess.exitCode = 1;\n\t\t}\n\t\treturn true;\n\t}\n\n\t// serve\n\tconst { AdaServerService } = await import(\"../server/pi-server-service.ts\");\n\tconst { serve } = await import(\"../server/serve.ts\");\n\tconst { createAgentSession } = await import(\"../core/sdk.ts\");\n\n\tconst service = new AdaServerService({\n\t\tagentDir,\n\t\tdefaultCwd: process.cwd(),\n\t\tcreateSession: async (options) => {\n\t\t\tconst { session } = await createAgentSession({\n\t\t\t\tcwd: options.cwd,\n\t\t\t\tagentDir,\n\t\t\t\tsessionManager: options.sessionManager as never,\n\t\t\t});\n\t\t\treturn session;\n\t\t},\n\t});\n\n\ttry {\n\t\tconst handle = await serve({\n\t\t\tservice,\n\t\t\tsocketPath,\n\t\t\tonError: (error) => console.error(`[serve] ${error.message}`),\n\t\t});\n\t\t// Reloj del scheduler: los trabajos recurrentes solo existen mientras haya\n\t\t// un proceso vivo que los dispare, y ese proceso es este.\n\t\tconst { Scheduler } = await import(\"../core/scheduler/scheduler.ts\");\n\t\tconst { startSchedulerTick } = await import(\"../server/scheduler-tick.ts\");\n\t\tconst scheduler = new Scheduler(agentDir);\n\t\tstartSchedulerTick({\n\t\t\tscheduler,\n\t\t\tonError: (error) => console.error(`[schedule] ${error.message}`),\n\t\t\tdispatch: async (job) => {\n\t\t\t\t// Sesión propia por job: dos trabajos recurrentes compartiendo\n\t\t\t\t// historial se contaminarían el contexto mutuamente.\n\t\t\t\tconst runtime = await service.createSession({ id: `schedule-${job.id}-${Date.now()}`, cwd: process.cwd() });\n\t\t\t\tawait runtime.prompt({ text: job.prompt });\n\t\t\t\treturn true;\n\t\t\t},\n\t\t});\n\n\t\tconsole.log(`Ada escuchando en ${handle.socketPath}`);\n\t\tconsole.log(\"El trabajo continúa aunque cierres este terminal. Ctrl-C para parar el servidor.\");\n\t\t// Mantener vivo el proceso: el servidor es el dueño de la ejecución.\n\t\tawait new Promise<void>(() => {});\n\t} catch (error) {\n\t\tconsole.error(error instanceof Error ? error.message : String(error));\n\t\tprocess.exitCode = 1;\n\t}\n\treturn true;\n}\n"]}