@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
@@ -21,10 +21,11 @@ import { stripFrontmatter } from "../utils/frontmatter.js";
21
21
  import { resolvePath } from "../utils/paths.js";
22
22
  import { sleep } from "../utils/sleep.js";
23
23
  import { normalizeToolResultImages } from "../utils/tool-result-images.js";
24
+ import { abrirTurno, ajustarPresupuestoDeRazonamiento, anadirRegistroDenso, buildEnginePersonalityBlock, buscarConElModelo, cerrarLlamadasAbiertas, construirAdvisorDeSesion, construirDesglose, crearBrowserTools, crearComputerTools, crearEstructuralTools, crearInteractivoTools, crearObtenerClave, createGraphTool, createMcpTools, createMemoryEngineTools, createWebTools, createWorkflowTool, dispararHooks, envolverReadConPdf, envolverReadConUrlsInternas, estadoDelTurno, expandVaultRefs, GraphSync, goalSessionTools, leerDenegadas, loadProjectMemorySync, mensajeDeTurnoVacio, nivelDesdeConfig, optimizeUserPrompt, RegistroDeSesion, redactSensitive, saveProjectMemory, soportaBusquedaNativa, transcriptParaAdvisor, } from "./ada.js";
24
25
  import { formatNoApiKeyFoundMessage, formatNoModelSelectedMessage } from "./auth-guidance.js";
25
26
  import { executeBashWithOperations } from "./bash-executor.js";
26
27
  import { calculateContextTokens, collectEntriesForBranchSummary, compact, estimateContextTokens, estimateTokens, generateBranchSummary, prepareCompaction, shouldCompact, } from "./compaction/index.js";
27
- import { DEFAULT_THINKING_LEVEL } from "./defaults.js";
28
+ import { DEFAULT_THINKING_LEVEL, THINKING_LEVEL_OPTIONS } from "./defaults.js";
28
29
  import { exportSessionToHtml } from "./export-html/index.js";
29
30
  import { createToolHtmlRenderer } from "./export-html/tool-renderer.js";
30
31
  import { ExtensionRunner, wrapRegisteredTools, } from "./extensions/index.js";
@@ -32,16 +33,13 @@ import { emitSessionShutdownEvent } from "./extensions/runner.js";
32
33
  import { ModelRegistry } from "./model-registry.js";
33
34
  import { expandPromptTemplate } from "./prompt-templates.js";
34
35
  import { CURRENT_SESSION_VERSION, getLatestCompactionEntry } from "./session-manager.js";
35
- import { loadProjectMemorySync, saveProjectMemory } from "./project-memory.js";
36
36
  import { createSyntheticSourceInfo } from "./source-info.js";
37
37
  import { buildSystemPrompt } from "./system-prompt.js";
38
38
  import { createLocalBashOperations } from "./tools/bash.js";
39
39
  import { createAllToolDefinitions } from "./tools/index.js";
40
- import { createMemoryEngineTools } from "./memory-engine/tools.js";
41
- import { redactSensitive } from "./memory-engine/security.js";
42
- import { expandVaultRefs } from "./memory-engine/vault.js";
43
40
  import { createToolDefinitionFromAgentTool } from "./tools/tool-definition-wrapper.js";
44
41
  import { addUsageToTotals, createUsageTotals } from "./usage-totals.js";
42
+ import { publicarAnotarRed } from "./web/registro-red.js";
45
43
  /**
46
44
  * Parse a skill block from message text.
47
45
  * Returns null if the text doesn't contain a skill block.
@@ -75,8 +73,6 @@ function estimateMessagesTokens(messages) {
75
73
  // ============================================================================
76
74
  // Constants
77
75
  // ============================================================================
78
- /** Standard thinking levels */
79
- const THINKING_LEVELS = ["off", "minimal", "low", "medium", "high"];
80
76
  // ============================================================================
81
77
  // AgentSession Class
82
78
  // ============================================================================
@@ -130,6 +126,50 @@ export class AgentSession {
130
126
  _extensionErrorListener;
131
127
  _extensionErrorUnsubscriber;
132
128
  _modelRuntime;
129
+ // ── Campos de Ada ────────────────────────────────────────────────────────
130
+ // Juntos y no repartidos por la clase a propósito: cada bloque separado en
131
+ // este fichero de upstream es un hunk más que reaplicar en cada sync.
132
+ _isSubagentSession = false;
133
+ _graphSync;
134
+ _advisor;
135
+ /** Una vuelta del advisor sobre la sesión. Nunca espera ni lanza. */
136
+ _mirarConAdvisor() {
137
+ this._advisor ??= construirAdvisorDeSesion({
138
+ settings: this.settingsManager,
139
+ modelo: () => this.model,
140
+ runtime: this._modelRuntime,
141
+ entregar: (texto, severidad) => {
142
+ void this.sendCustomMessage({
143
+ customType: "advisor",
144
+ content: [{ type: "text", text: texto }],
145
+ display: true,
146
+ details: { severidad },
147
+ }, { deliverAs: "steer" });
148
+ },
149
+ libro: this._registro.libro(),
150
+ });
151
+ this._advisor.trasTurno(transcriptParaAdvisor(this.agent.state.messages));
152
+ }
153
+ _registro = new RegistroDeSesion(() => this._resourceLoader.getAgentDir(), () => this.sessionId, () => this._cwd, async (texto) => {
154
+ // Sin modelo elegido, ni lo intentamos: que `intentarReparar` lo lea
155
+ // como "no-aplicable", no como una llamada al modelo que devolvió vacío.
156
+ const modelo = this.model;
157
+ if (!modelo)
158
+ return null;
159
+ try {
160
+ const respuesta = await this._modelRuntime.completeSimple(modelo, {
161
+ messages: [{ role: "user", content: texto }],
162
+ });
163
+ return contentText(respuesta.content, "").trim();
164
+ }
165
+ catch {
166
+ return null;
167
+ }
168
+ });
169
+ /** Optimizador autónomo de prompts: "off" | "auto" | "clarify". */
170
+ _promptOptimizerMode = "off";
171
+ /** Clarificación pendiente (modo "clarify"): original + preguntas ya emitidas. */
172
+ _pendingClarification;
133
173
  // Tool registry for extension getTools/setTools
134
174
  _toolRegistry = new Map();
135
175
  _toolDefinitions = new Map();
@@ -146,6 +186,11 @@ export class AgentSession {
146
186
  this._scopedModels = config.scopedModels ?? [];
147
187
  this._resourceLoader = config.resourceLoader;
148
188
  this._customTools = config.customTools ?? [];
189
+ // ANTES de `_buildRuntime()`, que consulta este campo para decidir qué
190
+ // tools recibe un subagente. Moverlo más abajo para ahorrar un hunk hizo
191
+ // que se leyera `false` y los subagentes recibieran memory_add/search —
192
+ // justo lo que la anti-recursión existe para impedir.
193
+ this._isSubagentSession = config.isSubagent === true;
149
194
  this._cwd = config.cwd;
150
195
  this._modelRuntime = config.modelRuntime;
151
196
  this._extensionRunnerRef = config.extensionRunnerRef;
@@ -163,6 +208,23 @@ export class AgentSession {
163
208
  activeToolNames: this._initialActiveToolNames,
164
209
  includeAllExtensionTools: true,
165
210
  });
211
+ // Los subagentes (goals/workflows) HEREDAN el modelo de la sesión principal:
212
+ // misma provider/modelId → misma auth → misma API key del chat.
213
+ this._resourceLoader.setSessionModelGetter?.(() => {
214
+ const m = this.model;
215
+ return m
216
+ ? {
217
+ provider: m.provider,
218
+ modelId: m.modelId ?? m.id ?? "",
219
+ }
220
+ : undefined;
221
+ });
222
+ // Cuando un run de workflow arranca (tool del agente o sub-tarea del
223
+ // goal), la sesión emite workflow_started — el desktop lo usa para
224
+ // abrir el panel Engine automáticamente.
225
+ this._resourceLoader.setOnWorkflowRunStarted?.((runId, name) => {
226
+ this._emit({ type: "workflow_started", runId, name });
227
+ });
166
228
  // Ada Memory Engine: lazy-initialize (stores, migration, session index)
167
229
  // and wire the LLM callback used by review/correction/flush. Best-effort
168
230
  // and never blocks startup.
@@ -190,8 +252,7 @@ export class AgentSession {
190
252
  content: [
191
253
  {
192
254
  type: "text",
193
- text: "Has introducido un dato sensible que no se almacenará en memoria. " +
194
- reason,
255
+ text: `Has introducido un dato sensible que no se almacenará en memoria. ${reason}`,
195
256
  },
196
257
  ],
197
258
  display: true,
@@ -265,6 +326,30 @@ export class AgentSession {
265
326
  */
266
327
  _installAgentToolHooks() {
267
328
  this.agent.beforeToolCall = async ({ toolCall, args }) => {
329
+ // Política de aprobación por herramienta.
330
+ //
331
+ // Va ANTES que los hooks del usuario a propósito: las rutas
332
+ // protegidas y el `deny` explícito no son negociables, y dejar que un
333
+ // hook se ejecute primero le daría ocasión de ver los argumentos de
334
+ // una llamada que nunca debió llegar a considerarse.
335
+ //
336
+ // Se bloquea con `{block, reason}` y no lanzando: el modelo recibe un
337
+ // resultado de error legible que le dice qué hacer en su lugar, en vez
338
+ // de una excepción.
339
+ const decisionAprobacion = await this._registro.antesDeLlamada(toolCall.id, toolCall.name, args, this.settingsManager.getEngineConfig());
340
+ if (decisionAprobacion.veredicto === "denegada") {
341
+ return { block: true, reason: decisionAprobacion.motivo };
342
+ }
343
+ // Hooks del usuario (`settings.hooks.events.pre_tool_use`). Sale sin
344
+ // tocar nada si no hay ninguno configurado — ver core/hooks/.
345
+ const vetoPrevio = await dispararHooks(this.settingsManager.getEngineConfig(), "pre_tool_use", toolCall.name, {
346
+ sessionId: this.sessionId,
347
+ cwd: this._cwd,
348
+ toolName: toolCall.name,
349
+ toolInput: args,
350
+ });
351
+ if (vetoPrevio.bloquea)
352
+ throw new Error(vetoPrevio.motivo);
268
353
  const runner = this._extensionRunner;
269
354
  if (!runner.hasHandlers("tool_call")) {
270
355
  return undefined;
@@ -285,6 +370,44 @@ export class AgentSession {
285
370
  }
286
371
  };
287
372
  this.agent.afterToolCall = async ({ toolCall, args, result, isError }) => {
373
+ // `post_tool_use` es informativo: la herramienta YA corrió, así que su
374
+ // veredicto no puede vetar nada y solo se dispara para que el hook se
375
+ // entere. Bloquear aquí daría falsa sensación de control.
376
+ void dispararHooks(this.settingsManager.getEngineConfig(), "post_tool_use", toolCall.name, {
377
+ sessionId: this.sessionId,
378
+ cwd: this._cwd,
379
+ toolName: toolCall.name,
380
+ toolInput: args,
381
+ toolResult: result.content,
382
+ }).catch(() => { });
383
+ // Auto-registro del grafo (best-effort, nunca bloquea el agente).
384
+ try {
385
+ if (!this._graphSync) {
386
+ this._graphSync = new GraphSync({
387
+ graph: () => this._resourceLoader.getGraph?.(),
388
+ cwd: this._cwd,
389
+ activeGoal: () => null, // resuelto en agent_settled vía syncGoal
390
+ });
391
+ }
392
+ void this._graphSync.onToolResult(toolCall.name, args, result, isError);
393
+ }
394
+ catch {
395
+ // best-effort
396
+ }
397
+ // Libro de sesión: qué HIZO el agente, encadenado y verificable.
398
+ //
399
+ // Este es el punto por el que pasan TODAS las tools, que es lo que
400
+ // hace que el registro sea completo por construcción en vez de por
401
+ // haberse acordado de instrumentar cada una.
402
+ //
403
+ // De momento anota la ejecución y, para `bash`, el comando. Los
404
+ // hashes de fichero antes/después llegan con el observador de
405
+ // ediciones, que ya tiene que leer las dos versiones: hacerlo aquí
406
+ // obligaría a leer el fichero por segundo vez.
407
+ const avisoEdicion = await this._registro.trasLlamada(toolCall.id, toolCall.name, args, isError);
408
+ if (avisoEdicion !== null && Array.isArray(result.content)) {
409
+ result.content.push({ type: "text", text: avisoEdicion });
410
+ }
288
411
  const runner = this._extensionRunner;
289
412
  const hookResult = runner.hasHandlers("tool_result")
290
413
  ? await runner.emitToolResult({
@@ -350,6 +473,11 @@ export class AgentSession {
350
473
  followUp: [...this._followUpMessages],
351
474
  });
352
475
  }
476
+ async _emitSessionCompactFailed(event) {
477
+ if (this._extensionRunner.hasHandlers("session_compact_failed")) {
478
+ await this._extensionRunner.emit({ type: "session_compact_failed", ...event });
479
+ }
480
+ }
353
481
  _getIdleWaitPromise() {
354
482
  if (!this._idleWaitPromise) {
355
483
  this._idleWaitPromise = new Promise((resolve) => {
@@ -372,11 +500,101 @@ export class AgentSession {
372
500
  try {
373
501
  await this._extensionRunner.emit({ type: "agent_settled" });
374
502
  this._emit({ type: "agent_settled" });
503
+ // El advisor mira cuando el turno se ha ASENTADO.
504
+ //
505
+ // Aquí y no en el manejador de eventos por dos motivos, los dos
506
+ // aprendidos rompiendo cosas: `agent_settled` NO pasa por ese
507
+ // manejador —su unión de tipos no lo incluye, así que el gancho era
508
+ // código muerto que ninguna prueba veía—, y `agent_end`, que sí pasa,
509
+ // salta una vez por INTENTO: meter entonces un mensaje `steer` se cuela
510
+ // dentro del reintento y convierte uno que acaba bien en uno que acaba
511
+ // mal (tres pruebas de `agent-session-retry-events`).
512
+ //
513
+ // Y es además lo que hay que observar: lo que el agente acabó
514
+ // haciendo, no cada tentativa.
515
+ this._mirarConAdvisor();
516
+ // Ada Intelligence Engine: el GoalEngine es el ÚNICO dueño de la
517
+ // continuación automática del goal (pi-goal). No compite con retry/
518
+ // compaction/steer. Fire-and-forget; nunca bloquea ni rompe el chat.
519
+ try {
520
+ const goalEngine = this._isSubagentSession ? null : this._resourceLoader.getGoalEngine?.();
521
+ if (goalEngine) {
522
+ void this._maybeContinueGoal(goalEngine);
523
+ // Spine del grafo: sync automático del goal activo.
524
+ if (this._graphSync) {
525
+ void (async () => {
526
+ const goals = await goalEngine.list().catch(() => []);
527
+ const active = goals.find((g) => g.status === "active");
528
+ if (active) {
529
+ const full = await goalEngine.get(active.id).catch(() => null);
530
+ if (full) {
531
+ await this._graphSync?.syncGoal({
532
+ id: full.id,
533
+ goal: full.goal,
534
+ phase: full.phase,
535
+ tasks: full.tasks ?? [],
536
+ doneCriteria: full.doneCriteria ?? [],
537
+ });
538
+ }
539
+ }
540
+ })();
541
+ }
542
+ }
543
+ }
544
+ catch {
545
+ // best-effort
546
+ }
375
547
  }
376
548
  finally {
377
549
  this._resolveIdleWaitIfIdle();
378
550
  }
379
551
  }
552
+ /**
553
+ * Confirmación fail-closed del lanzamiento de workflows: emite un evento y
554
+ * espera respuesta humana hasta 15s; sin respuesta → NO lanzar.
555
+ */
556
+ _confirmWorkflowLaunch(prompt) {
557
+ return new Promise((resolve) => {
558
+ const timeout = setTimeout(() => {
559
+ this._confirmResolvers.delete(prompt);
560
+ resolve(false);
561
+ }, 15_000);
562
+ this._confirmResolvers.set(prompt, (ok) => {
563
+ clearTimeout(timeout);
564
+ this._confirmResolvers.delete(prompt);
565
+ resolve(ok);
566
+ });
567
+ this._emit({ type: "notification", message: `[workflow] ${prompt}`, level: "warning" });
568
+ });
569
+ }
570
+ /** Respuesta a una confirmación pendiente (la UI la llama). */
571
+ resolveWorkflowConfirmation(prompt, ok) {
572
+ const resolver = this._confirmResolvers.get(prompt);
573
+ if (!resolver)
574
+ return false;
575
+ resolver(ok);
576
+ return true;
577
+ }
578
+ /** Si hay un goal activo aprobado, avanza un turno del bucle. */
579
+ async _maybeContinueGoal(goalEngine) {
580
+ const goals = await goalEngine.list().catch(() => []);
581
+ const active = goals.find((g) => g.status === "active");
582
+ if (!active)
583
+ return;
584
+ // Freno por defecto del engine: si está desactivado no continúa.
585
+ if (!this.settingsManager.getGoalEngineEnabled())
586
+ return;
587
+ // markers anti-duplicados: solo avanzar si no hay un turno ya en curso.
588
+ if (this._isAgentRunActive)
589
+ return;
590
+ this._isAgentRunActive = true;
591
+ try {
592
+ await goalEngine.tick(active.id).catch(() => { });
593
+ }
594
+ finally {
595
+ this._isAgentRunActive = false;
596
+ }
597
+ }
380
598
  // =========================================================================
381
599
  // Automatic project memory (claude-mem style)
382
600
  // =========================================================================
@@ -488,6 +706,7 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
488
706
  // Track last assistant message for auto-compaction check
489
707
  _lastAssistantMessage = undefined;
490
708
  _lastAutoMemorizeAt = 0;
709
+ _confirmResolvers = new Map();
491
710
  /** Vault expansion redactions by user-message id (frontend + persistence). */
492
711
  _vaultRedactions = new Map();
493
712
  _userMessageSeq = 0;
@@ -533,6 +752,34 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
533
752
  void memoryEngine.onTurnEnd({ message: event.message });
534
753
  }
535
754
  }
755
+ // Libro de sesión: la llamada al modelo.
756
+ //
757
+ // Va en `message_end` y no en `agent_end` porque un turno puede gastar
758
+ // varias llamadas, y "qué modelo se usó y cuánto costó" hay que poder
759
+ // responderlo por llamada, no por turno.
760
+ //
761
+ // Se anotan también las que fallan: `motivoParada: "error"` es
762
+ // justamente lo que hay que poder enseñar.
763
+ if (event.type === "message_end" && event.message.role === "assistant") {
764
+ const asistente = event.message;
765
+ this._registro.anotarModelo(asistente);
766
+ // Un turno abortado puede dejar `toolCall` sin su `tool_result`, y un
767
+ // historial así lo rechazan los proveedores: la conversación entera deja
768
+ // de poder reanudarse. El bucle del agente ya lo cierra, pero ESE PAQUETE
769
+ // NO VIAJA en el tarball —se resuelve del registro, con la versión de
770
+ // upstream—, así que se cierra también aquí, donde sí llega al cliente.
771
+ // Es idempotente: si el bucle ya lo hizo, no encuentra nada que cerrar.
772
+ if (asistente.stopReason === "aborted" || asistente.stopReason === "error") {
773
+ cerrarLlamadasAbiertas(this.agent.state.messages, asistente);
774
+ }
775
+ // Un turno VACÍO no es un turno terminado. Sin este aviso el usuario
776
+ // ve silencio y lo lee como «el modelo decidió no hacer nada»: el
777
+ // caso real fue `x-preview-f-free` devolviendo respuestas vacías.
778
+ // El error y el abort NO entran aquí — ya se ven por su vía.
779
+ if (estadoDelTurno(asistente) === "vacio") {
780
+ this._emit({ type: "notification", message: mensajeDeTurnoVacio(asistente), level: "warning" });
781
+ }
782
+ }
536
783
  // Automatic project memory (claude-mem style): after each completed
537
784
  // agent turn with real user interaction, distill durable facts into
538
785
  // the shared project memory. Fire-and-forget; never blocks the turn.
@@ -922,10 +1169,32 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
922
1169
  }
923
1170
  const loaderSystemPrompt = this._resourceLoader.getSystemPrompt();
924
1171
  const loaderAppendSystemPrompt = this._resourceLoader.getAppendSystemPrompt();
925
- const appendSystemPrompt = loaderAppendSystemPrompt.length > 0 ? loaderAppendSystemPrompt.join("\n\n") : undefined;
1172
+ // Ada Intelligence Engine: PERSONALIDAD SIEMPRE presente (sesión principal).
1173
+ // No depende de que el modelo lea la skill: el árbol de decisión y los
1174
+ // procedimientos van inline en el prompt, cada turno.
1175
+ let enginePrompt;
1176
+ if (!this._isSubagentSession &&
1177
+ (this.settingsManager.getGoalEngineEnabled() || this.settingsManager.getWorkflowsEnabled())) {
1178
+ enginePrompt = buildEnginePersonalityBlock();
1179
+ }
1180
+ const appendSystemPrompt = enginePrompt
1181
+ ? [enginePrompt, ...(loaderAppendSystemPrompt.length > 0 ? [loaderAppendSystemPrompt.join("\n\n")] : [])].join("\n\n")
1182
+ : loaderAppendSystemPrompt.length > 0
1183
+ ? loaderAppendSystemPrompt.join("\n\n")
1184
+ : undefined;
926
1185
  const loadedSkills = this._resourceLoader.getSkills().skills;
927
1186
  const loadedContextFiles = this._resourceLoader.getAgentsFiles().agentsFiles;
928
1187
  this._baseSystemPromptOptions = {
1188
+ // Modo plan: el prompt gana la sección que dice que el árbol es de solo
1189
+ // lectura. Se deriva con la MISMA función que usa el guardián
1190
+ // (`RegistroDeSesion.antesDeLlamada` → `decidir({ modo: nivelDesdeConfig(…) })`)
1191
+ // y no leyendo `planOnly` a mano, para que el prompt no pueda decir una
1192
+ // cosa y la política otra el día que `nivelDesdeConfig` cambie de
1193
+ // criterio. Va como primer campo a propósito: así este cambio cae dentro
1194
+ // del hunk de sincronización que ya había justo arriba en vez de abrir
1195
+ // uno nuevo (el presupuesto de fork está a 118/118, medido).
1196
+ modoPlan: nivelDesdeConfig(this.settingsManager.getEngineConfig()) === "plan",
1197
+ toolsDenegadas: leerDenegadas(this.settingsManager.getEngineConfig()),
929
1198
  cwd: this._cwd,
930
1199
  skills: loadedSkills,
931
1200
  contextFiles: loadedContextFiles,
@@ -989,6 +1258,31 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
989
1258
  * @throws Error if no model selected or no API key available (when not streaming)
990
1259
  */
991
1260
  async prompt(text, options) {
1261
+ // Frontera de turno: agrupa las escrituras de este prompt para `undo`, y
1262
+ // dispara el hook `user_prompt_submit`. Las dos cosas necesitan el mismo
1263
+ // momento exacto, así que comparten sitio.
1264
+ abrirTurno(this._resourceLoader.getAgentDir(), this._cwd, Date.now());
1265
+ void dispararHooks(this.settingsManager.getEngineConfig(), "user_prompt_submit", "user_prompt_submit", {
1266
+ sessionId: this.sessionId,
1267
+ cwd: this._cwd,
1268
+ prompt: text,
1269
+ }).catch(() => { });
1270
+ // Presupuesto de razonamiento por dificultad del turno. Aquí y no más
1271
+ // abajo porque tiene que decidirse ANTES de construir la petición, y con
1272
+ // el texto tal cual lo escribió el usuario. No llama al modelo.
1273
+ // Solo fuera de streaming: un mensaje de dirección corto («no, para»)
1274
+ // no debe bajar el presupuesto de la tarea larga que ya está en marcha.
1275
+ if (!this.isStreaming) {
1276
+ ajustarPresupuestoDeRazonamiento(this, text, {
1277
+ nivelActual: this.thinkingLevel,
1278
+ disponibles: this.getAvailableThinkingLevels(),
1279
+ fijar: (nivel) => {
1280
+ this.setThinkingLevel(nivel);
1281
+ return this.thinkingLevel;
1282
+ },
1283
+ avisar: (mensaje) => this._emit({ type: "notification", message: mensaje, level: "info" }),
1284
+ });
1285
+ }
992
1286
  const expandPromptTemplates = options?.expandPromptTemplates ?? true;
993
1287
  const preflightResult = options?.preflightResult;
994
1288
  let messages;
@@ -1382,13 +1676,135 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1382
1676
  if (images.length === 0)
1383
1677
  images = undefined;
1384
1678
  }
1385
- await this.prompt(text, {
1679
+ // ── Optimizador autónomo de prompt ───────────────────────────────────
1680
+ // Mejora la petición del usuario (claridad, contexto, formato, criterios,
1681
+ // alcance) ANTES de que llegue al modelo. Fail-open: cualquier error o
1682
+ // timeout usa el prompt original — nunca degrada la experiencia.
1683
+ let finalText = text;
1684
+ if (this._promptOptimizerMode !== "off" && typeof text === "string" && !text.startsWith("/")) {
1685
+ try {
1686
+ const result = await this._runPromptOptimizer(text);
1687
+ if (result) {
1688
+ if (result.decision === "clarify" && this._promptOptimizerMode === "clarify") {
1689
+ // Preguntar primero y esperar respuesta; no enviamos aún.
1690
+ this._pendingClarification = { original: text, questions: result.questions };
1691
+ this._emit({
1692
+ type: "prompt_optimization",
1693
+ decision: "clarify",
1694
+ original: text,
1695
+ questions: result.questions,
1696
+ summary: result.summary,
1697
+ });
1698
+ const questions = result.questions.map((q, i) => `${i + 1}. ${q}`).join("\n");
1699
+ await this.sendCustomMessage({
1700
+ customType: "clarify-questions",
1701
+ content: [
1702
+ {
1703
+ type: "text",
1704
+ text: `🔎 Para dejar tu petición sin huecos, necesito aclarar:\n${questions}\n\nResponde a las preguntas y continuaré.`,
1705
+ },
1706
+ ],
1707
+ display: true,
1708
+ details: { q: result.questions },
1709
+ }, { triggerTurn: false });
1710
+ return;
1711
+ }
1712
+ if (result.enhanced && result.enhanced !== text) {
1713
+ finalText = result.enhanced;
1714
+ this._emit({
1715
+ type: "prompt_optimization",
1716
+ decision: "enhance",
1717
+ original: text,
1718
+ enhanced: result.enhanced,
1719
+ summary: result.summary,
1720
+ });
1721
+ // Mensaje persistente en el chat (CLI + desktop): muestra el
1722
+ // antes → después para que el usuario vea la mejora.
1723
+ void this.sendCustomMessage({
1724
+ customType: "prompt-optimization",
1725
+ content: [{ type: "text", text: result.enhanced }],
1726
+ display: true,
1727
+ details: { original: text, summary: result.summary },
1728
+ }, { triggerTurn: false });
1729
+ }
1730
+ }
1731
+ }
1732
+ catch {
1733
+ // fail-open: continuamos con el prompt original
1734
+ }
1735
+ }
1736
+ await this.prompt(finalText, {
1386
1737
  expandPromptTemplates: options?.expandPromptTemplates ?? false,
1387
1738
  streamingBehavior: options?.deliverAs,
1388
1739
  images,
1389
1740
  source: "extension",
1390
1741
  });
1391
1742
  }
1743
+ /**
1744
+ * Ejecuta el optimizador con el modelo de la sesión. Timeout de 12s,
1745
+ * nunca lanza (devuelve undefined → fail-open).
1746
+ */
1747
+ async _runPromptOptimizer(text) {
1748
+ const model = this.model;
1749
+ if (!model)
1750
+ return undefined;
1751
+ try {
1752
+ const answers = this._pendingClarification?.answers;
1753
+ const result = await Promise.race([
1754
+ optimizeUserPrompt({
1755
+ text,
1756
+ // En modo auto nunca bloqueamos al usuario: si el LLM pide
1757
+ // clarificar, forzamos una mejora con supuestos razonables.
1758
+ forceEnhance: this._promptOptimizerMode === "auto",
1759
+ context: {
1760
+ projectDir: this._cwd,
1761
+ // Si el usuario ya respondió a las preguntas de la ronda
1762
+ // anterior, se las pasamos al optimizador como contexto.
1763
+ recentMessages: answers?.length
1764
+ ? [...answers, ...(this._recentUserPrompts(3) ?? [])]
1765
+ : this._recentUserPrompts(3),
1766
+ },
1767
+ }, async (systemPrompt, userContent) => {
1768
+ const completed = await this._modelRuntime.completeSimple(model, {
1769
+ systemPrompt,
1770
+ messages: [{ role: "user", content: userContent }],
1771
+ signal: AbortSignal.timeout(20_000),
1772
+ });
1773
+ return contentText(completed.content, "").trim();
1774
+ }),
1775
+ new Promise((resolve) => setTimeout(() => resolve(undefined), 25_000)),
1776
+ ]);
1777
+ if (!result)
1778
+ return undefined;
1779
+ this._pendingClarification = undefined;
1780
+ return result;
1781
+ }
1782
+ catch {
1783
+ return undefined;
1784
+ }
1785
+ }
1786
+ /** Últimos prompts de usuario (para dar contexto al optimizador). */
1787
+ _recentUserPrompts(max) {
1788
+ const out = [];
1789
+ const messages = this.agent.state.messages;
1790
+ for (let i = messages.length - 1; i >= 0 && out.length < max; i--) {
1791
+ const m = messages[i];
1792
+ if (m.role === "user") {
1793
+ const t = contentText(m.content, "");
1794
+ if (t.trim())
1795
+ out.unshift(t.slice(0, 500));
1796
+ }
1797
+ }
1798
+ return out;
1799
+ }
1800
+ /** Ajusta el modo del optimizador autónomo de prompts. */
1801
+ setPromptOptimizerMode(mode) {
1802
+ this._promptOptimizerMode = mode;
1803
+ }
1804
+ /** Modo actual del optimizador autónomo de prompts. */
1805
+ getPromptOptimizerMode() {
1806
+ return this._promptOptimizerMode;
1807
+ }
1392
1808
  /**
1393
1809
  * Clear all queued messages and return them.
1394
1810
  * Useful for restoring to editor when user aborts.
@@ -1447,19 +1863,24 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1447
1863
  }
1448
1864
  /**
1449
1865
  * Set model directly.
1450
- * Validates that auth is configured, saves to session and settings.
1866
+ * Validates that auth is configured and saves to the session transcript.
1867
+ * Persists to global defaults only when options.persist is true.
1451
1868
  * @throws Error if no auth is configured for the model
1452
1869
  */
1453
- async setModel(model) {
1870
+ async setModel(model, options = {}) {
1454
1871
  if (!(await this._modelRuntime.checkAuth(model.provider))) {
1455
1872
  throw new Error(`No API key for ${model.provider}/${model.id}`);
1456
1873
  }
1457
1874
  const previousModel = this.model;
1458
- const thinkingLevel = this._getThinkingLevelForModelSwitch();
1875
+ const thinkingLevel = this._getThinkingLevelForModelSwitch(model);
1459
1876
  this.agent.state.model = model;
1460
1877
  this.sessionManager.appendModelChange(model.provider, model.id);
1461
- this.settingsManager.setDefaultModelAndProvider(model.provider, model.id);
1462
- // Re-clamp thinking level for new model's capabilities
1878
+ if (options.persist) {
1879
+ this.settingsManager.setDefaultModelAndProvider(model.provider, model.id);
1880
+ }
1881
+ // Apply thinking level for the new model.
1882
+ // Per-model thinking level overrides take priority over the global default.
1883
+ // Model persistence does not implicitly rewrite the global thinking default.
1463
1884
  this.setThinkingLevel(thinkingLevel);
1464
1885
  await this._emitModelSelect(model, previousModel, "set");
1465
1886
  }
@@ -1469,13 +1890,13 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1469
1890
  * @param direction - "forward" (default) or "backward"
1470
1891
  * @returns The new model info, or undefined if only one model available
1471
1892
  */
1472
- async cycleModel(direction = "forward") {
1893
+ async cycleModel(direction = "forward", options = {}) {
1473
1894
  if (this._scopedModels.length > 0) {
1474
- return this._cycleScopedModel(direction);
1895
+ return this._cycleScopedModel(direction, options);
1475
1896
  }
1476
- return this._cycleAvailableModel(direction);
1897
+ return this._cycleAvailableModel(direction, options);
1477
1898
  }
1478
- async _cycleScopedModel(direction) {
1899
+ async _cycleScopedModel(direction, options) {
1479
1900
  const availableIds = new Set(this._modelRuntime.getAvailableSnapshot().map((model) => `${model.provider}\0${model.id}`));
1480
1901
  const scopedModels = this._scopedModels.filter((scoped) => availableIds.has(`${scoped.model.provider}\0${scoped.model.id}`));
1481
1902
  if (scopedModels.length <= 1)
@@ -1487,20 +1908,23 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1487
1908
  const len = scopedModels.length;
1488
1909
  const nextIndex = direction === "forward" ? (currentIndex + 1) % len : (currentIndex - 1 + len) % len;
1489
1910
  const next = scopedModels[nextIndex];
1490
- const thinkingLevel = this._getThinkingLevelForModelSwitch(next.thinkingLevel);
1911
+ const thinkingLevel = this._getThinkingLevelForModelSwitch(next.model, next.thinkingLevel);
1491
1912
  // Apply model
1492
1913
  this.agent.state.model = next.model;
1493
1914
  this.sessionManager.appendModelChange(next.model.provider, next.model.id);
1494
- this.settingsManager.setDefaultModelAndProvider(next.model.provider, next.model.id);
1495
- // Apply thinking level.
1496
- // - Explicit scoped model thinking level overrides current session level
1497
- // - Undefined scoped model thinking level inherits the current session preference
1915
+ if (options.persist) {
1916
+ this.settingsManager.setDefaultModelAndProvider(next.model.provider, next.model.id);
1917
+ }
1918
+ // Apply thinking level for the new model.
1919
+ // - Explicit scoped model thinking level overrides defaults
1920
+ // - Per-model thinking level overrides take priority over the global default
1498
1921
  // setThinkingLevel clamps to model capabilities.
1922
+ // Model persistence does not implicitly rewrite the global thinking default.
1499
1923
  this.setThinkingLevel(thinkingLevel);
1500
1924
  await this._emitModelSelect(next.model, currentModel, "cycle");
1501
1925
  return { model: next.model, thinkingLevel: this.thinkingLevel, isScoped: true };
1502
1926
  }
1503
- async _cycleAvailableModel(direction) {
1927
+ async _cycleAvailableModel(direction, options) {
1504
1928
  const availableModels = this._modelRuntime.getAvailableSnapshot();
1505
1929
  if (availableModels.length <= 1)
1506
1930
  return undefined;
@@ -1511,11 +1935,14 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1511
1935
  const len = availableModels.length;
1512
1936
  const nextIndex = direction === "forward" ? (currentIndex + 1) % len : (currentIndex - 1 + len) % len;
1513
1937
  const nextModel = availableModels[nextIndex];
1514
- const thinkingLevel = this._getThinkingLevelForModelSwitch();
1938
+ const thinkingLevel = this._getThinkingLevelForModelSwitch(nextModel);
1515
1939
  this.agent.state.model = nextModel;
1516
1940
  this.sessionManager.appendModelChange(nextModel.provider, nextModel.id);
1517
- this.settingsManager.setDefaultModelAndProvider(nextModel.provider, nextModel.id);
1518
- // Re-clamp thinking level for new model's capabilities
1941
+ if (options.persist) {
1942
+ this.settingsManager.setDefaultModelAndProvider(nextModel.provider, nextModel.id);
1943
+ }
1944
+ // Apply thinking level for the new model.
1945
+ // Model persistence does not implicitly rewrite the global thinking default.
1519
1946
  this.setThinkingLevel(thinkingLevel);
1520
1947
  await this._emitModelSelect(nextModel, currentModel, "cycle");
1521
1948
  return { model: nextModel, thinkingLevel: this.thinkingLevel, isScoped: false };
@@ -1526,20 +1953,21 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1526
1953
  /**
1527
1954
  * Set thinking level.
1528
1955
  * Clamps to model capabilities based on available thinking levels.
1529
- * Saves to session and settings only if the level actually changes.
1956
+ * Saves the clamped level to the session transcript only if the level actually changes.
1957
+ * Persists the requested level to global defaults only when options.persist is true.
1530
1958
  */
1531
- setThinkingLevel(level) {
1959
+ setThinkingLevel(level, options = {}) {
1532
1960
  const availableLevels = this.getAvailableThinkingLevels();
1533
1961
  const effectiveLevel = availableLevels.includes(level) ? level : this._clampThinkingLevel(level, availableLevels);
1534
1962
  // Only persist if actually changing
1535
1963
  const previousLevel = this.agent.state.thinkingLevel;
1536
1964
  const isChanging = effectiveLevel !== previousLevel;
1537
1965
  this.agent.state.thinkingLevel = effectiveLevel;
1966
+ if (options.persist) {
1967
+ this.settingsManager.setDefaultThinkingLevel(level);
1968
+ }
1538
1969
  if (isChanging) {
1539
1970
  this.sessionManager.appendThinkingLevelChange(effectiveLevel);
1540
- if (this.supportsThinking() || effectiveLevel !== "off") {
1541
- this.settingsManager.setDefaultThinkingLevel(effectiveLevel);
1542
- }
1543
1971
  this._emit({ type: "thinking_level_changed", level: effectiveLevel });
1544
1972
  void this._extensionRunner.emit({
1545
1973
  type: "thinking_level_select",
@@ -1552,14 +1980,14 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1552
1980
  * Cycle to next thinking level.
1553
1981
  * @returns New level, or undefined if model doesn't support thinking
1554
1982
  */
1555
- cycleThinkingLevel() {
1983
+ cycleThinkingLevel(options = {}) {
1556
1984
  if (!this.supportsThinking())
1557
1985
  return undefined;
1558
1986
  const levels = this.getAvailableThinkingLevels();
1559
1987
  const currentIndex = levels.indexOf(this.thinkingLevel);
1560
1988
  const nextIndex = (currentIndex + 1) % levels.length;
1561
1989
  const nextLevel = levels[nextIndex];
1562
- this.setThinkingLevel(nextLevel);
1990
+ this.setThinkingLevel(nextLevel, options);
1563
1991
  return nextLevel;
1564
1992
  }
1565
1993
  /**
@@ -1568,7 +1996,7 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1568
1996
  */
1569
1997
  getAvailableThinkingLevels() {
1570
1998
  if (!this.model)
1571
- return THINKING_LEVELS;
1999
+ return [...THINKING_LEVEL_OPTIONS];
1572
2000
  return getSupportedThinkingLevels(this.model);
1573
2001
  }
1574
2002
  /**
@@ -1577,14 +2005,18 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1577
2005
  supportsThinking() {
1578
2006
  return !!this.model?.reasoning;
1579
2007
  }
1580
- _getThinkingLevelForModelSwitch(explicitLevel) {
2008
+ _getThinkingLevelForModelSwitch(targetModel, explicitLevel) {
1581
2009
  if (explicitLevel !== undefined) {
1582
2010
  return explicitLevel;
1583
2011
  }
1584
- if (!this.supportsThinking()) {
1585
- return this.settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL;
2012
+ // Per-model default takes priority when switching to a model that has one
2013
+ if (targetModel) {
2014
+ const perModel = this.settingsManager.getModelThinkingLevel(targetModel.provider, targetModel.id);
2015
+ if (perModel !== undefined) {
2016
+ return perModel;
2017
+ }
1586
2018
  }
1587
- return this.thinkingLevel;
2019
+ return this.settingsManager.getDefaultThinkingLevel() ?? this.thinkingLevel ?? DEFAULT_THINKING_LEVEL;
1588
2020
  }
1589
2021
  _clampThinkingLevel(level, _availableLevels) {
1590
2022
  return this.model ? clampThinkingLevel(this.model, level) : "off";
@@ -1615,15 +2047,36 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1615
2047
  // =========================================================================
1616
2048
  // Compaction
1617
2049
  // =========================================================================
2050
+ /** Generate Pi's built-in compaction summary for manual and automatic compaction. */
2051
+ async _runDefaultCompaction(preparation, requestModel, apiKey, headers, customInstructions, signal, env, reason) {
2052
+ // Ada: al resumen en prosa se le añade un REGISTRO DENSO de hechos
2053
+ // (rutas, comandos, errores) extraídos literalmente de los turnos. Este
2054
+ // es el ÚNICO punto por el que pasan las dos compactaciones de pi (la
2055
+ // manual de `/compact`, RPC y extensiones, y la automática por
2056
+ // umbral/desbordamiento), así que un solo hunk cubre la ruta entera.
2057
+ // Ver core/compactar/ para el porqué de sumar en vez de sustituir.
2058
+ return anadirRegistroDenso(await compact(preparation, requestModel, apiKey, headers, customInstructions, signal, this.thinkingLevel, this.agent.streamFunction, env, this.settingsManager.getRetrySettings(), this._summarizationRetryCallbacks({ source: "compaction", reason }), undefined), preparation);
2059
+ }
1618
2060
  /**
1619
2061
  * Manually compact the session context.
1620
- * Aborts current agent operation first.
2062
+ *
2063
+ * This is the manual entry point used by `/compact`, RPC, and extensions. It is
2064
+ * separate from automatic threshold/overflow compaction, which enters through
2065
+ * `_checkCompaction()` and `_runAutoCompaction()`. After preparation and the
2066
+ * `session_before_compact` hook, both paths call the lower-level `compact()`
2067
+ * function imported from `./compaction/index.ts`, unless the hook cancels or
2068
+ * supplies a custom result.
2069
+ *
2070
+ * Aborts the current agent operation first. Manual compaction never retries or
2071
+ * continues the interrupted agent turn.
2072
+ *
1621
2073
  * @param customInstructions Optional instructions for the compaction summary
1622
2074
  */
1623
2075
  async compact(customInstructions) {
1624
2076
  await this.abort();
1625
2077
  this._compactionAbortController = new AbortController();
1626
2078
  this._emit({ type: "compaction_start", reason: "manual" });
2079
+ let fromExtension = false;
1627
2080
  try {
1628
2081
  if (!this.model) {
1629
2082
  throw new Error(formatNoModelSelectedMessage());
@@ -1641,7 +2094,6 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1641
2094
  throw new Error("Nothing to compact (session too small)");
1642
2095
  }
1643
2096
  let extensionCompaction;
1644
- let fromExtension = false;
1645
2097
  if (this._extensionRunner.hasHandlers("session_before_compact")) {
1646
2098
  const result = (await this._extensionRunner.emit({
1647
2099
  type: "session_before_compact",
@@ -1674,8 +2126,8 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1674
2126
  details = extensionCompaction.details;
1675
2127
  }
1676
2128
  else {
1677
- // Generate compaction result
1678
- const result = await compact(preparation, requestModel, apiKey, headers, customInstructions, this._compactionAbortController.signal, this.thinkingLevel, this.agent.streamFunction, env, this.settingsManager.getRetrySettings(), this._summarizationRetryCallbacks({ source: "compaction", reason: "manual" }));
2129
+ // Shared default summary generator, also used by automatic compaction.
2130
+ const result = await this._runDefaultCompaction(preparation, requestModel, apiKey, headers, customInstructions, this._compactionAbortController.signal, env, "manual");
1679
2131
  summary = result.summary;
1680
2132
  firstKeptEntryId = result.firstKeptEntryId;
1681
2133
  tokensBefore = result.tokensBefore;
@@ -1723,6 +2175,7 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1723
2175
  catch (error) {
1724
2176
  const message = error instanceof Error ? error.message : String(error);
1725
2177
  const aborted = message === "Compaction cancelled" || (error instanceof Error && error.name === "AbortError");
2178
+ const errorMessage = aborted ? undefined : `Compaction failed: ${message}`;
1726
2179
  this._compactionAbortController = undefined;
1727
2180
  this._emit({
1728
2181
  type: "compaction_end",
@@ -1730,7 +2183,14 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1730
2183
  result: undefined,
1731
2184
  aborted,
1732
2185
  willRetry: false,
1733
- errorMessage: aborted ? undefined : `Compaction failed: ${message}`,
2186
+ errorMessage,
2187
+ });
2188
+ await this._emitSessionCompactFailed({
2189
+ reason: "manual",
2190
+ errorMessage,
2191
+ aborted,
2192
+ willRetry: false,
2193
+ fromExtension,
1734
2194
  });
1735
2195
  throw error;
1736
2196
  }
@@ -1752,16 +2212,25 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1752
2212
  this._branchSummaryAbortController?.abort();
1753
2213
  }
1754
2214
  /**
1755
- * Check if compaction is needed and run it.
1756
- * Called after agent_end and before prompt submission.
2215
+ * Dispatch automatic compaction after `agent_end` or before prompt submission.
2216
+ * Manual compaction does not call this method; it enters through `compact()`.
2217
+ *
2218
+ * Automatic cases:
2219
+ * 1. Overflow with retry: a context-overflow error or recoverable length stop;
2220
+ * remove the failed assistant message, compact, and retry the turn once.
2221
+ * 2. Overflow without retry: a successful response exceeded the configured
2222
+ * context window; compact but preserve the completed response.
2223
+ * 3. Threshold without retry: valid or estimated context usage crossed the
2224
+ * configured threshold; compact without retrying the completed response.
1757
2225
  *
1758
- * Two cases:
1759
- * 1. Recoverable failure: LLM returned context overflow or stopped below its desired output limit;
1760
- * remove the assistant message, compact, and auto-retry once
1761
- * 2. Threshold: Context over threshold, compact, NO auto-retry (user continues manually)
2226
+ * Each case calls `_runAutoCompaction()`. After preparation and the
2227
+ * `session_before_compact` hook, that method calls the lower-level `compact()`
2228
+ * function imported from `./compaction/index.ts`, unless the hook cancels or
2229
+ * supplies a custom result.
1762
2230
  *
1763
2231
  * @param assistantMessage The assistant message to check
1764
2232
  * @param skipAbortedCheck If false, include aborted messages (for pre-prompt check). Default: true
2233
+ * @returns Whether the post-run loop should call `agent.continue()` for overflow recovery or queued messages
1765
2234
  */
1766
2235
  async _checkCompaction(assistantMessage, skipAbortedCheck = true) {
1767
2236
  const settings = this.settingsManager.getCompactionSettings();
@@ -1784,38 +2253,49 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1784
2253
  if (assistantIsFromBeforeCompaction) {
1785
2254
  return false;
1786
2255
  }
1787
- // Case 1: Recoverable failure. Explicit/silent context overflow still uses context metadata.
2256
+ // Automatic cases 1 and 2: context overflow.
1788
2257
  // A length stop is recoverable when output ended below the model's original desired limit,
1789
2258
  // independent of the configured context size or any context-clamped provider request limit.
1790
- // A successful response over the configured window should compact but must not retry: the
1791
- // assistant answer already completed and agent.continue() cannot continue from an assistant.
2259
+ const contextOverflow = sameModel && isContextOverflow(assistantMessage, contextWindow);
1792
2260
  const recoverableLength = sameModel && isRecoverableLength(assistantMessage, this.model?.maxTokens ?? 0);
1793
- if (sameModel && (isContextOverflow(assistantMessage, contextWindow) || recoverableLength)) {
2261
+ if (contextOverflow || recoverableLength) {
1794
2262
  const willRetry = assistantMessage.stopReason !== "stop";
2263
+ // Case 2: the response completed successfully. Compact, but do not retry because
2264
+ // agent.continue() cannot continue from a completed assistant response.
1795
2265
  if (!willRetry) {
1796
2266
  return await this._runAutoCompaction("overflow", false);
1797
2267
  }
1798
2268
  if (this._overflowRecoveryAttempted) {
2269
+ const errorMessage = contextOverflow
2270
+ ? "Context overflow recovery failed after one compact-and-retry attempt. Try reducing context or switching to a larger-context model."
2271
+ : "Truncated response recovery failed after one compact-and-retry attempt.";
1799
2272
  this._emit({
1800
2273
  type: "compaction_end",
1801
2274
  reason: "overflow",
1802
2275
  result: undefined,
1803
2276
  aborted: false,
1804
2277
  willRetry: false,
1805
- errorMessage: "Context overflow recovery failed after one compact-and-retry attempt. Try reducing context or switching to a larger-context model.",
2278
+ errorMessage,
2279
+ });
2280
+ await this._emitSessionCompactFailed({
2281
+ reason: "overflow",
2282
+ errorMessage,
2283
+ aborted: false,
2284
+ willRetry: false,
2285
+ fromExtension: false,
1806
2286
  });
1807
2287
  return false;
1808
2288
  }
2289
+ // Case 1: remove the failed or truncated message from agent state, compact, and
2290
+ // retry once. The message remains in session history but is excluded from retry context.
1809
2291
  this._overflowRecoveryAttempted = true;
1810
- // Remove the failed or truncated message from agent state. It remains in session history,
1811
- // but must not be included in the compact-and-retry context.
1812
2292
  const messages = this.agent.state.messages;
1813
2293
  if (messages.length > 0 && messages[messages.length - 1].role === "assistant") {
1814
2294
  this.agent.state.messages = messages.slice(0, -1);
1815
2295
  }
1816
2296
  return await this._runAutoCompaction("overflow", willRetry);
1817
2297
  }
1818
- // Case 2: Threshold - context is getting large
2298
+ // Case 3: threshold compaction without retry.
1819
2299
  // For error messages or all-zero usage messages, estimate from the last valid response.
1820
2300
  // This ensures sessions that hit persistent API errors (e.g. 529) or malformed zero-usage
1821
2301
  // responses can still compact and do not reset context accounting.
@@ -1824,16 +2304,18 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1824
2304
  if (assistantMessage.stopReason === "error" || directContextTokens === 0) {
1825
2305
  const messages = this.agent.state.messages;
1826
2306
  const estimate = estimateContextTokens(messages);
1827
- if (estimate.lastUsageIndex === null)
1828
- return false; // No usage data at all
1829
- // Verify the usage source is post-compaction. Kept pre-compaction messages
1830
- // have stale usage reflecting the old (larger) context and would falsely
1831
- // trigger compaction right after one just finished.
1832
- const usageMsg = messages[estimate.lastUsageIndex];
1833
- if (compactionEntry &&
1834
- usageMsg.role === "assistant" &&
1835
- usageMsg.timestamp <= new Date(compactionEntry.timestamp).getTime()) {
1836
- return false;
2307
+ // Without provider usage, estimate.tokens is the pure message-size estimate.
2308
+ // Only usage-backed estimates need the stale pre-compaction check.
2309
+ if (estimate.lastUsageIndex !== null) {
2310
+ // Verify the usage source is post-compaction. Kept pre-compaction messages
2311
+ // have stale usage reflecting the old (larger) context and would falsely
2312
+ // trigger compaction right after one just finished.
2313
+ const usageMsg = messages[estimate.lastUsageIndex];
2314
+ if (compactionEntry &&
2315
+ usageMsg.role === "assistant" &&
2316
+ usageMsg.timestamp <= new Date(compactionEntry.timestamp).getTime()) {
2317
+ return false;
2318
+ }
1837
2319
  }
1838
2320
  contextTokens = estimate.tokens;
1839
2321
  }
@@ -1846,11 +2328,19 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1846
2328
  return false;
1847
2329
  }
1848
2330
  /**
1849
- * Internal: Run auto-compaction with events.
2331
+ * Execute threshold or overflow compaction. Manual compaction uses
2332
+ * `AgentSession.compact()` instead. Both paths call the lower-level `compact()`
2333
+ * function imported from `./compaction/index.ts` after preparation and extension
2334
+ * interception.
2335
+ *
2336
+ * @param reason Automatic trigger selected by `_checkCompaction()`
2337
+ * @param willRetry Whether to continue the interrupted turn after overflow compaction
2338
+ * @returns Whether the post-run loop should call `agent.continue()`
1850
2339
  */
1851
2340
  async _runAutoCompaction(reason, willRetry) {
1852
2341
  const settings = this.settingsManager.getCompactionSettings();
1853
2342
  let started = false;
2343
+ let fromExtension = false;
1854
2344
  try {
1855
2345
  if (!this.model) {
1856
2346
  return false;
@@ -1865,7 +2355,6 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1865
2355
  this._autoCompactionAbortController = new AbortController();
1866
2356
  started = true;
1867
2357
  let extensionCompaction;
1868
- let fromExtension = false;
1869
2358
  if (this._extensionRunner.hasHandlers("session_before_compact")) {
1870
2359
  const extensionResult = (await this._extensionRunner.emit({
1871
2360
  type: "session_before_compact",
@@ -1884,6 +2373,12 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1884
2373
  aborted: true,
1885
2374
  willRetry: false,
1886
2375
  });
2376
+ await this._emitSessionCompactFailed({
2377
+ reason,
2378
+ aborted: true,
2379
+ willRetry: false,
2380
+ fromExtension: false,
2381
+ });
1887
2382
  return false;
1888
2383
  }
1889
2384
  if (extensionResult?.compaction) {
@@ -1905,8 +2400,8 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1905
2400
  details = extensionCompaction.details;
1906
2401
  }
1907
2402
  else {
1908
- // Generate compaction result
1909
- const compactResult = await compact(preparation, requestModel, apiKey, headers, undefined, this._autoCompactionAbortController.signal, this.thinkingLevel, this.agent.streamFunction, env, this.settingsManager.getRetrySettings(), this._summarizationRetryCallbacks({ source: "compaction", reason }));
2403
+ // Shared default summary generator, also used by manual compaction.
2404
+ const compactResult = await this._runDefaultCompaction(preparation, requestModel, apiKey, headers, undefined, this._autoCompactionAbortController.signal, env, reason);
1910
2405
  summary = compactResult.summary;
1911
2406
  firstKeptEntryId = compactResult.firstKeptEntryId;
1912
2407
  tokensBefore = compactResult.tokensBefore;
@@ -1921,6 +2416,12 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1921
2416
  aborted: true,
1922
2417
  willRetry: false,
1923
2418
  });
2419
+ await this._emitSessionCompactFailed({
2420
+ reason,
2421
+ aborted: true,
2422
+ willRetry: false,
2423
+ fromExtension,
2424
+ });
1924
2425
  return false;
1925
2426
  }
1926
2427
  this.sessionManager.appendCompaction(summary, firstKeptEntryId, tokensBefore, details, fromExtension, usage);
@@ -1967,15 +2468,23 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
1967
2468
  catch (error) {
1968
2469
  const errorMessage = error instanceof Error ? error.message : "compaction failed";
1969
2470
  if (started) {
2471
+ const formattedErrorMessage = reason === "overflow"
2472
+ ? `Context overflow recovery failed: ${errorMessage}`
2473
+ : `Auto-compaction failed: ${errorMessage}`;
1970
2474
  this._emit({
1971
2475
  type: "compaction_end",
1972
2476
  reason,
1973
2477
  result: undefined,
1974
2478
  aborted: false,
1975
2479
  willRetry: false,
1976
- errorMessage: reason === "overflow"
1977
- ? `Context overflow recovery failed: ${errorMessage}`
1978
- : `Auto-compaction failed: ${errorMessage}`,
2480
+ errorMessage: formattedErrorMessage,
2481
+ });
2482
+ await this._emitSessionCompactFailed({
2483
+ reason,
2484
+ errorMessage: formattedErrorMessage,
2485
+ aborted: false,
2486
+ willRetry: false,
2487
+ fromExtension,
1979
2488
  });
1980
2489
  }
1981
2490
  return false;
@@ -2268,6 +2777,74 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
2268
2777
  }
2269
2778
  }
2270
2779
  }
2780
+ // Lo que el PROMPT promete tiene que estar ACTIVO, no solo registrado.
2781
+ //
2782
+ // `sdk.ts` pasa una lista explícita de cuatro tools (read, bash, edit,
2783
+ // write), y eso apaga la rama de arriba que activaría lo recién
2784
+ // registrado. Consecuencia medida: 29 tools construidas e invisibles para
2785
+ // el modelo, mientras el prompt le ordenaba usar cinco de ellas —
2786
+ // "usa la tool goal_new", "Use memory_search when…", "→ browser_*". El
2787
+ // agente las pedía, recibía un error opaco, y desde fuera parecía que "no
2788
+ // usa las funciones".
2789
+ //
2790
+ // Se activa POR PREFIJO y no con una lista de nombres a propósito: una
2791
+ // lista se desincroniza en cuanto alguien añade una tool a una familia, y
2792
+ // esa desincronización silenciosa es justo el defecto que esto arregla.
2793
+ // `_toolRegistry` ya viene filtrado por `isAllowedTool`, así que quien
2794
+ // restrinja tools con `options.tools` sigue mandando.
2795
+ //
2796
+ // `find`, `grep` y `ls` se quedan FUERA deliberadamente: el prompt dice
2797
+ // "usa bash para operaciones de ficheros (ls, grep, find)", así que sus
2798
+ // tools serían un segundo camino para lo mismo — el problema de elección
2799
+ // que ya nos costó trabajo con computer_* y browser_*.
2800
+ // PERO solo cuando nadie ha elegido. Esto es un DEFECTO, no un override:
2801
+ // si el usuario configuró `defaultTools`, o el llamante pasó `tools` o
2802
+ // `noTools`, esa decisión manda y aquí no se toca nada. La primera versión
2803
+ // de este bloque no lo distinguía y rompía cuatro contratos ya probados,
2804
+ // entre ellos "defaultTools se respeta tal cual".
2805
+ //
2806
+ // La señal de "nadie ha elegido" es que la lista entrante sea exactamente
2807
+ // el núcleo que `sdk.ts` usa como valor por defecto. Cualquier otra cosa
2808
+ // —una lista propia, `noTools`, o una selección ya expandida— significa
2809
+ // que alguien decidió, y se respeta.
2810
+ //
2811
+ // Solo hace falta en la PRIMERA construcción: en refrescos posteriores, la
2812
+ // rama de arriba ya activa lo que se acabe de registrar, así que encender
2813
+ // una capacidad en caliente sigue funcionando.
2814
+ const nucleoPorDefecto = ["read", "bash", "edit", "write"].filter(isAllowedTool);
2815
+ const entrante = options?.activeToolNames ?? previousActiveToolNames;
2816
+ const nadieHaElegido = this._allowedToolNames === undefined &&
2817
+ this.settingsManager.getDefaultTools() === undefined &&
2818
+ entrante.length === nucleoPorDefecto.length &&
2819
+ nucleoPorDefecto.every((nombre) => entrante.includes(nombre));
2820
+ const cfg = this.settingsManager.getEngineConfig();
2821
+ const capacidades = [
2822
+ // Sin condición: el prompt las ordena siempre.
2823
+ { prefijo: "memory_", disponible: true },
2824
+ { prefijo: "session_search", disponible: true },
2825
+ { prefijo: "web_", disponible: true },
2826
+ { prefijo: "ast_", disponible: true },
2827
+ { prefijo: "update_project_memory", disponible: true },
2828
+ { prefijo: "scratchpad", disponible: true },
2829
+ { prefijo: "todo", disponible: true },
2830
+ // Preguntar en vez de adivinar: sin esto el modelo solo puede suponer.
2831
+ { prefijo: "ask_user_question", disponible: true },
2832
+ // Con condición: cada una tiene su interruptor y su panel.
2833
+ { prefijo: "browser_", disponible: cfg.computerUse.browser },
2834
+ { prefijo: "computer_", disponible: cfg.computerUse.enabled },
2835
+ { prefijo: "goal_", disponible: cfg.goalEngine.enabled },
2836
+ { prefijo: "workflow", disponible: cfg.workflows.enabled },
2837
+ { prefijo: "graph_", disponible: cfg.graph.enabled },
2838
+ { prefijo: "bash_", disponible: true },
2839
+ ];
2840
+ for (const { prefijo, disponible } of nadieHaElegido ? capacidades : []) {
2841
+ if (!disponible)
2842
+ continue;
2843
+ for (const nombre of this._toolRegistry.keys()) {
2844
+ if (nombre.startsWith(prefijo))
2845
+ nextActiveToolNames.push(nombre);
2846
+ }
2847
+ }
2271
2848
  this.setActiveToolsByName([...new Set(nextActiveToolNames)]);
2272
2849
  }
2273
2850
  _buildRuntime(options) {
@@ -2290,13 +2867,164 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
2290
2867
  }
2291
2868
  // Ada Memory Engine tools (memory_add/replace/remove/search,
2292
2869
  // session_search, scratchpad, memory_status). Exposed when enabled.
2870
+ // Solo en la sesión principal: un subagente no debe poder mutar la
2871
+ // memoria durable del usuario (anti-recursión, igual que goal_* y
2872
+ // workflow abajo). Hasta ahora la propiedad se sostenía solo por la
2873
+ // allowlist de tools del call site, no por una guardia aquí.
2293
2874
  const memoryEngine = this._resourceLoader.getMemoryEngine();
2294
- if (memoryEngine && this.settingsManager.getProjectMemoryEnabled()) {
2875
+ if (memoryEngine && !this._isSubagentSession && this.settingsManager.getProjectMemoryEnabled()) {
2295
2876
  const engineTools = createMemoryEngineTools(memoryEngine);
2296
2877
  for (const [name, tool] of Object.entries(engineTools)) {
2297
2878
  this._baseToolDefinitions.set(name, tool);
2298
2879
  }
2299
2880
  }
2881
+ // URLs internas de `read`: memory://, vault://, rule://, audit:// — un
2882
+ // solo `read` en vez de veinte tools (ver core/urls-internas/lector.ts).
2883
+ // `read.ts` es de upstream y el presupuesto de sync está al tope, así que
2884
+ // esto envuelve la definición ya construida en vez de tocar ese fichero.
2885
+ //
2886
+ // memory:// nunca se pasa a un subagente: es la misma anti-recursión que
2887
+ // bloquea memory_* dos bloques más arriba. Sin esto, `read` (que SÍ está
2888
+ // en la allowlist por defecto de todo subagente) sería una puerta trasera
2889
+ // a la memoria durable que ese bloque ya decidió cerrar.
2890
+ const readBase = this._baseToolDefinitions.get("read");
2891
+ if (readBase) {
2892
+ this._baseToolDefinitions.set("read", envolverReadConUrlsInternas(envolverReadConPdf(readBase, this._cwd), {
2893
+ memoryEngine: this._isSubagentSession ? null : memoryEngine,
2894
+ vaultManager: this._resourceLoader.getVaultManager?.() ?? null,
2895
+ cwd: this._cwd,
2896
+ libro: () => this._registro.libro(),
2897
+ }));
2898
+ }
2899
+ // Tools MCP: EXACTAMENTE DOS (mcp_list_tools, mcp_call_tool), nunca una por
2900
+ // herramienta remota — un servidor con 40 tools inflaría el system prompt y
2901
+ // desplazaría el prefijo cacheable. Solo sesión principal: un subagente no
2902
+ // debe poder alcanzar el Jira de la empresa.
2903
+ const mcpManager = this._isSubagentSession ? null : this._resourceLoader.getMcpManager?.();
2904
+ if (mcpManager) {
2905
+ for (const [name, tool] of Object.entries(createMcpTools(mcpManager))) {
2906
+ this._baseToolDefinitions.set(name, tool);
2907
+ }
2908
+ }
2909
+ // El registro de salidas se publica ANTES de crear las tools web, para que
2910
+ // también lo vean los caminos que no nacen aquí — hoy el cliente MCP, que
2911
+ // crea `resource-loader` y no tiene el libro a mano. Sin esto, el informe
2912
+ // para el DPO afirmaba «No hubo transferencias» sobre una sesión que había
2913
+ // hablado con un servidor de terceros. Ver `core/web/registro-red.ts`.
2914
+ publicarAnotarRed((dominio, permitido, motivo) => {
2915
+ void this._registro.libro().anotar({ tipo: "red", dominio, permitido, motivo });
2916
+ });
2917
+ // Tools web. SÍ se registran en subagentes: `deep_research` delega la
2918
+ // búsqueda en ellos, y sin esto ese workflow pedía tools inexistentes.
2919
+ // El acceso no queda abierto: la allowlist del subagente solo las incluye
2920
+ // cuando el script pide `web: true` (ver workflows/agent-runner.ts).
2921
+ for (const [name, tool] of Object.entries(createWebTools({
2922
+ // Vault primero; si está bloqueado o no trae el proveedor cae a la
2923
+ // variable de entorno, que es lo que usa CI. Un `nombreProveedor` por
2924
+ // llamada porque el registro prueba varios (brave, tavily, exa,
2925
+ // searxng, serper), no solo Serper.
2926
+ obtenerClave: crearObtenerClave(() => this._resourceLoader.getVaultManager?.()),
2927
+ // Libro de sesión: qué salió de la máquina y hacia dónde (art. 44 RGPD).
2928
+ // Solo el dominio; la ruta y la query pueden llevar tokens.
2929
+ // Se publica ademas para los caminos de salida que NO nacen aqui: el
2930
+ // cliente MCP lo crea `resource-loader`, que no tiene el libro a mano.
2931
+ // Ver `core/web/registro-red.ts`.
2932
+ anotarRed: (dominio, permitido, motivo) => {
2933
+ void this._registro.libro().anotar({ tipo: "red", dominio, permitido, motivo });
2934
+ },
2935
+ // Búsqueda con la credencial del modelo cuando el proveedor la trae.
2936
+ // Es lo que hace que `web_search` funcione sin configurar nada.
2937
+ buscarNativo: async (consulta, maximo) => {
2938
+ const modelo = this.model;
2939
+ // `null`, no `[]`: no es lo mismo no poder buscar que no encontrar.
2940
+ if (!modelo || !soportaBusquedaNativa(modelo.provider))
2941
+ return null;
2942
+ return buscarConElModelo(consulta, {
2943
+ maxResultados: maximo,
2944
+ completar: async (texto, opciones) => {
2945
+ await this._modelRuntime.completeSimple(modelo, {
2946
+ systemPrompt: "Busca en la web lo que te pidan. Responde en una línea.",
2947
+ messages: [{ role: "user", content: texto }],
2948
+ }, opciones);
2949
+ },
2950
+ });
2951
+ },
2952
+ }))) {
2953
+ this._baseToolDefinitions.set(name, tool);
2954
+ }
2955
+ // Búsqueda y edición estructural (`ast_search`/`ast_edit`). Sin condición,
2956
+ // como las tools web: no dependen de ningún subsistema externo, solo del
2957
+ // compilador de TypeScript que ya está en el bundle. Se registran también
2958
+ // en subagentes: un subagente de refactor necesita la misma precisión.
2959
+ for (const [name, tool] of Object.entries(crearEstructuralTools(this._cwd))) {
2960
+ this._baseToolDefinitions.set(name, tool);
2961
+ }
2962
+ // Tools de navegador. Detrás de `computerUse.enabled`, que hasta ahora era
2963
+ // otro bloque de configuración con panel en el escritorio y nada detrás.
2964
+ // Registrarlas no arranca Chrome: el navegador se abre en la primera tool
2965
+ // que lo necesita. Para subagentes, además hay que pedir `browser: true`.
2966
+ // El navegador NO depende del control del ordenador, y antes sí: se pedía
2967
+ // `computerUse.enabled && computerUse.browser`. Eso dejaba la capacidad más
2968
+ // segura que tenemos —un Chrome con perfil vacío, sin sesiones iniciadas—
2969
+ // detrás del interruptor de la más peligrosa, que viene apagado. Resultado:
2970
+ // en una instalación recién hecha las tools de navegador ni siquiera se
2971
+ // registraban, y la regla del prompt "interactuar con una web → browser_*"
2972
+ // apuntaba al vacío.
2973
+ // La clave sigue viviendo bajo `computerUse` por compatibilidad con las
2974
+ // configuraciones que ya existen; lo que cambia es de qué depende.
2975
+ const configMotor = this.settingsManager.getEngineConfig();
2976
+ if (configMotor.computerUse.browser) {
2977
+ for (const [name, tool] of Object.entries(crearBrowserTools({
2978
+ agentDir: this._resourceLoader.getAgentDir(),
2979
+ // Para que la regla de elección solo nombre lo que existe.
2980
+ ordenador: configMotor.computerUse.enabled,
2981
+ }))) {
2982
+ this._baseToolDefinitions.set(name, tool);
2983
+ }
2984
+ }
2985
+ // Control del ordenador. El motor es nuestro fork, y corre EN PROCESO: no
2986
+ // hay servidor MCP que registrar. El agente habla con NUESTRAS tools, que
2987
+ // aplican el techo por categoría y las prohibiciones antes de mover nada.
2988
+ // Es un interruptor, sin lista de aplicaciones que mantener: lo que
2989
+ // limita cada aplicación es su categoría, y se calcula sola.
2990
+ if (configMotor.computerUse.enabled) {
2991
+ for (const [name, tool] of Object.entries(crearComputerTools({ navegador: configMotor.computerUse.browser }))) {
2992
+ this._baseToolDefinitions.set(name, tool);
2993
+ }
2994
+ }
2995
+ // Bash interactivo (bash_interactivo/bash_enviar/bash_cerrar). Sin
2996
+ // interruptor de settings a propósito: es la misma categoría de riesgo
2997
+ // que `bash` —pasa por la misma política de aprobación como `ejecucion`—
2998
+ // y ocultarla detrás de una opción solo dejaría al agente sin forma de
2999
+ // responder a un `sudo` o a un `rm -i` en las instalaciones por defecto.
3000
+ for (const [name, tool] of Object.entries(crearInteractivoTools({ cwd: this._cwd }))) {
3001
+ this._baseToolDefinitions.set(name, tool);
3002
+ }
3003
+ // Ada Intelligence Engine: tools del GoalEngine (resuelven el goal
3004
+ // activo por llamada). Registradas si el GoalEngine está habilitado.
3005
+ // Los subagentes NO reciben goal_*/workflow tools: solo el agente
3006
+ // principal orquesta el engine (anti-recursión y control de presupuesto).
3007
+ const goalEngine = this._isSubagentSession ? null : this._resourceLoader.getGoalEngine?.();
3008
+ if (goalEngine && this.settingsManager.getGoalEngineEnabled()) {
3009
+ for (const tool of goalSessionTools(goalEngine, () => this.sessionManager.getSessionId())) {
3010
+ this._baseToolDefinitions.set(tool.name, tool);
3011
+ }
3012
+ // graph_add_nodes: registros puntuales (QA_FINDING/RISK/DECISION).
3013
+ // El spine se auto-registra vía GraphSync — esto es complemento.
3014
+ if (this.settingsManager.getGraphEnabled()) {
3015
+ this._baseToolDefinitions.set("graph_add_nodes", createGraphTool(() => this._resourceLoader.getGraph?.()));
3016
+ }
3017
+ }
3018
+ // Tool `workflow` SOLO en la sesión principal: los subagentes no
3019
+ // orquestan workflows (anti-anidamiento y control de presupuesto).
3020
+ if (!this._isSubagentSession) {
3021
+ this._baseToolDefinitions.set("workflow", createWorkflowTool({
3022
+ getManager: () => this._resourceLoader.getWorkflowManager?.(),
3023
+ confirm: (prompt) => this._confirmWorkflowLaunch(prompt),
3024
+ agentDir: this._resourceLoader.getAgentDir(),
3025
+ sessionId: () => this.sessionManager.getSessionId(),
3026
+ }));
3027
+ }
2300
3028
  const extensionsResult = this._resourceLoader.getExtensions();
2301
3029
  if (options.flagValues) {
2302
3030
  for (const [name, value] of options.flagValues) {
@@ -2790,6 +3518,7 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
2790
3518
  }
2791
3519
  }
2792
3520
  return {
3521
+ contextBreakdown: this.getContextBreakdown(),
2793
3522
  sessionFile: this.sessionFile,
2794
3523
  sessionId: this.sessionId,
2795
3524
  userMessages,
@@ -2808,6 +3537,61 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
2808
3537
  contextUsage: this.getContextUsage(),
2809
3538
  };
2810
3539
  }
3540
+ /**
3541
+ * Desglose de qué llena la ventana de contexto.
3542
+ *
3543
+ * `getContextUsage()` da un único número; esto dice de dónde sale. Con caché
3544
+ * por prefijo eso no es curiosidad: el coste de tocar algo depende de su
3545
+ * posición, así que saber que las definiciones de tools ocupan 11 K y van
3546
+ * delante te dice que cambiarlas invalida todo lo de detrás.
3547
+ *
3548
+ * El total lo aporta el proveedor y es exacto; el reparto se estima. La
3549
+ * distinción viaja en `totalExacto` para que la interfaz no presente
3550
+ * estimaciones como medidas.
3551
+ */
3552
+ getContextBreakdown() {
3553
+ const model = this.model;
3554
+ if (!model?.contextWindow)
3555
+ return undefined;
3556
+ const usage = this.getContextUsage();
3557
+ const opciones = this._baseSystemPromptOptions;
3558
+ // Los bloques de memoria y del harness llegan como ficheros de contexto con
3559
+ // una ruta marcada; se separan porque son las dos palancas que el usuario
3560
+ // puede apagar desde ajustes.
3561
+ const esMemoria = (ruta) => ruta.startsWith("<ada-") || ruta.includes("memory");
3562
+ const rutas = opciones?.contextFiles ?? [];
3563
+ const definiciones = [];
3564
+ const mcp = [];
3565
+ for (const [nombre, { definition }] of this._toolDefinitions) {
3566
+ // Nombre + descripción + esquema es lo que de verdad viaja al modelo.
3567
+ const texto = `${nombre}${definition.description ?? ""}${JSON.stringify(definition.parameters ?? {})}`;
3568
+ if (nombre.startsWith("mcp_"))
3569
+ mcp.push(texto);
3570
+ else
3571
+ definiciones.push(texto);
3572
+ }
3573
+ const skills = this._resourceLoader.getSkills().skills.map((skill) => `${skill.name}${skill.description ?? ""}`);
3574
+ return construirDesglose({
3575
+ contextWindow: model.contextWindow,
3576
+ tokensReales: usage?.tokens ?? null,
3577
+ systemPrompt: this.systemPrompt ?? "",
3578
+ toolDefinitions: definiciones,
3579
+ skills,
3580
+ mcpTools: mcp,
3581
+ contextFiles: rutas.filter((f) => !esMemoria(f.path)).map((f) => f.content),
3582
+ memory: rutas.filter((f) => esMemoria(f.path)).map((f) => f.content),
3583
+ conversationTokens: this._estimarTokensConversacion(),
3584
+ });
3585
+ }
3586
+ /** Tokens de los mensajes del hilo activo, con el mismo estimador que compacta. */
3587
+ _estimarTokensConversacion() {
3588
+ let total = 0;
3589
+ for (const entrada of this.sessionManager.getBranch()) {
3590
+ if (entrada.type === "message")
3591
+ total += estimateTokens(entrada.message);
3592
+ }
3593
+ return total;
3594
+ }
2811
3595
  getContextUsage() {
2812
3596
  const model = this.model;
2813
3597
  if (!model)