@hoilab/ada-cli 0.84.21 → 0.85.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1337) hide show
  1. package/CHANGELOG.md +49 -2
  2. package/README.es.md +174 -0
  3. package/README.md +203 -658
  4. package/dist/ada-publico.d.ts +35 -0
  5. package/dist/ada-publico.d.ts.map +1 -0
  6. package/dist/ada-publico.js +40 -0
  7. package/dist/ada-publico.js.map +1 -0
  8. package/dist/cli/args.d.ts +3 -0
  9. package/dist/cli/args.d.ts.map +1 -1
  10. package/dist/cli/args.js +11 -0
  11. package/dist/cli/args.js.map +1 -1
  12. package/dist/cli/audit-command.d.ts +15 -0
  13. package/dist/cli/audit-command.d.ts.map +1 -0
  14. package/dist/cli/audit-command.js +280 -0
  15. package/dist/cli/audit-command.js.map +1 -0
  16. package/dist/cli/banco-command.d.ts +15 -0
  17. package/dist/cli/banco-command.d.ts.map +1 -0
  18. package/dist/cli/banco-command.js +213 -0
  19. package/dist/cli/banco-command.js.map +1 -0
  20. package/dist/cli/cleanse-command.d.ts +11 -0
  21. package/dist/cli/cleanse-command.d.ts.map +1 -0
  22. package/dist/cli/cleanse-command.js +101 -0
  23. package/dist/cli/cleanse-command.js.map +1 -0
  24. package/dist/cli/commit-command.d.ts +31 -0
  25. package/dist/cli/commit-command.d.ts.map +1 -0
  26. package/dist/cli/commit-command.js +158 -0
  27. package/dist/cli/commit-command.js.map +1 -0
  28. package/dist/cli/computer-command.d.ts +12 -0
  29. package/dist/cli/computer-command.d.ts.map +1 -0
  30. package/dist/cli/computer-command.js +141 -0
  31. package/dist/cli/computer-command.js.map +1 -0
  32. package/dist/cli/discover-command.d.ts +18 -0
  33. package/dist/cli/discover-command.d.ts.map +1 -0
  34. package/dist/cli/discover-command.js +108 -0
  35. package/dist/cli/discover-command.js.map +1 -0
  36. package/dist/cli/file-processor.d.ts.map +1 -1
  37. package/dist/cli/file-processor.js +2 -1
  38. package/dist/cli/file-processor.js.map +1 -1
  39. package/dist/cli/hashline-command.d.ts +11 -0
  40. package/dist/cli/hashline-command.d.ts.map +1 -0
  41. package/dist/cli/hashline-command.js +106 -0
  42. package/dist/cli/hashline-command.js.map +1 -0
  43. package/dist/cli/home-screen.d.ts.map +1 -1
  44. package/dist/cli/home-screen.js +2 -2
  45. package/dist/cli/home-screen.js.map +1 -1
  46. package/dist/cli/import-command.d.ts +35 -0
  47. package/dist/cli/import-command.d.ts.map +1 -0
  48. package/dist/cli/import-command.js +164 -0
  49. package/dist/cli/import-command.js.map +1 -0
  50. package/dist/cli/politica-command.d.ts +20 -0
  51. package/dist/cli/politica-command.d.ts.map +1 -0
  52. package/dist/cli/politica-command.js +93 -0
  53. package/dist/cli/politica-command.js.map +1 -0
  54. package/dist/cli/refine-command.d.ts +18 -0
  55. package/dist/cli/refine-command.d.ts.map +1 -0
  56. package/dist/cli/refine-command.js +101 -0
  57. package/dist/cli/refine-command.js.map +1 -0
  58. package/dist/cli/review-command.d.ts +24 -0
  59. package/dist/cli/review-command.d.ts.map +1 -0
  60. package/dist/cli/review-command.js +168 -0
  61. package/dist/cli/review-command.js.map +1 -0
  62. package/dist/cli/schedule-command.d.ts +17 -0
  63. package/dist/cli/schedule-command.d.ts.map +1 -0
  64. package/dist/cli/schedule-command.js +117 -0
  65. package/dist/cli/schedule-command.js.map +1 -0
  66. package/dist/cli/serve-command.d.ts +72 -0
  67. package/dist/cli/serve-command.d.ts.map +1 -0
  68. package/dist/cli/serve-command.js +568 -0
  69. package/dist/cli/serve-command.js.map +1 -0
  70. package/dist/cli/startup-ui.d.ts.map +1 -1
  71. package/dist/cli/startup-ui.js +9 -3
  72. package/dist/cli/startup-ui.js.map +1 -1
  73. package/dist/cli/telegram-command.d.ts +18 -0
  74. package/dist/cli/telegram-command.d.ts.map +1 -0
  75. package/dist/cli/telegram-command.js +137 -0
  76. package/dist/cli/telegram-command.js.map +1 -0
  77. package/dist/cli/telemetria-command.d.ts +22 -0
  78. package/dist/cli/telemetria-command.d.ts.map +1 -0
  79. package/dist/cli/telemetria-command.js +127 -0
  80. package/dist/cli/telemetria-command.js.map +1 -0
  81. package/dist/cli/undo-command.d.ts +9 -0
  82. package/dist/cli/undo-command.d.ts.map +1 -0
  83. package/dist/cli/undo-command.js +56 -0
  84. package/dist/cli/undo-command.js.map +1 -0
  85. package/dist/cli/usage-command.d.ts +10 -0
  86. package/dist/cli/usage-command.d.ts.map +1 -0
  87. package/dist/cli/usage-command.js +209 -0
  88. package/dist/cli/usage-command.js.map +1 -0
  89. package/dist/cli/wiki-command.d.ts +9 -0
  90. package/dist/cli/wiki-command.d.ts.map +1 -0
  91. package/dist/cli/wiki-command.js +76 -0
  92. package/dist/cli/wiki-command.js.map +1 -0
  93. package/dist/cli.d.ts +6 -0
  94. package/dist/cli.d.ts.map +1 -1
  95. package/dist/cli.js +10 -11
  96. package/dist/cli.js.map +1 -1
  97. package/dist/config.d.ts +1 -1
  98. package/dist/config.d.ts.map +1 -1
  99. package/dist/config.js +3 -2
  100. package/dist/config.js.map +1 -1
  101. package/dist/core/ada.d.ts +58 -0
  102. package/dist/core/ada.d.ts.map +1 -0
  103. package/dist/core/ada.js +61 -0
  104. package/dist/core/ada.js.map +1 -0
  105. package/dist/core/advisor/guarda.d.ts +66 -0
  106. package/dist/core/advisor/guarda.d.ts.map +1 -0
  107. package/dist/core/advisor/guarda.js +191 -0
  108. package/dist/core/advisor/guarda.js.map +1 -0
  109. package/dist/core/advisor/runtime.d.ts +66 -0
  110. package/dist/core/advisor/runtime.d.ts.map +1 -0
  111. package/dist/core/advisor/runtime.js +121 -0
  112. package/dist/core/advisor/runtime.js.map +1 -0
  113. package/dist/core/advisor/sesion.d.ts +109 -0
  114. package/dist/core/advisor/sesion.d.ts.map +1 -0
  115. package/dist/core/advisor/sesion.js +139 -0
  116. package/dist/core/advisor/sesion.js.map +1 -0
  117. package/dist/core/agent-session.d.ts +85 -7
  118. package/dist/core/agent-session.d.ts.map +1 -1
  119. package/dist/core/agent-session.js +862 -78
  120. package/dist/core/agent-session.js.map +1 -1
  121. package/dist/core/agents/loader.d.ts +77 -0
  122. package/dist/core/agents/loader.d.ts.map +1 -0
  123. package/dist/core/agents/loader.js +154 -0
  124. package/dist/core/agents/loader.js.map +1 -0
  125. package/dist/core/aprobacion/generados.d.ts +37 -0
  126. package/dist/core/aprobacion/generados.d.ts.map +1 -0
  127. package/dist/core/aprobacion/generados.js +85 -0
  128. package/dist/core/aprobacion/generados.js.map +1 -0
  129. package/dist/core/aprobacion/politica-de-maquina.d.ts +90 -0
  130. package/dist/core/aprobacion/politica-de-maquina.d.ts.map +1 -0
  131. package/dist/core/aprobacion/politica-de-maquina.js +212 -0
  132. package/dist/core/aprobacion/politica-de-maquina.js.map +1 -0
  133. package/dist/core/aprobacion/politica.d.ts +90 -0
  134. package/dist/core/aprobacion/politica.d.ts.map +1 -0
  135. package/dist/core/aprobacion/politica.js +375 -0
  136. package/dist/core/aprobacion/politica.js.map +1 -0
  137. package/dist/core/arranque/atajos.d.ts +46 -0
  138. package/dist/core/arranque/atajos.d.ts.map +1 -0
  139. package/dist/core/arranque/atajos.js +113 -0
  140. package/dist/core/arranque/atajos.js.map +1 -0
  141. package/dist/core/audit/exportacion.d.ts +54 -0
  142. package/dist/core/audit/exportacion.d.ts.map +1 -0
  143. package/dist/core/audit/exportacion.js +265 -0
  144. package/dist/core/audit/exportacion.js.map +1 -0
  145. package/dist/core/audit/libro.d.ts +318 -0
  146. package/dist/core/audit/libro.d.ts.map +1 -0
  147. package/dist/core/audit/libro.js +508 -0
  148. package/dist/core/audit/libro.js.map +1 -0
  149. package/dist/core/audit/registro-sesion.d.ts +78 -0
  150. package/dist/core/audit/registro-sesion.d.ts.map +1 -0
  151. package/dist/core/audit/registro-sesion.js +202 -0
  152. package/dist/core/audit/registro-sesion.js.map +1 -0
  153. package/dist/core/audit/retencion.d.ts +82 -0
  154. package/dist/core/audit/retencion.d.ts.map +1 -0
  155. package/dist/core/audit/retencion.js +152 -0
  156. package/dist/core/audit/retencion.js.map +1 -0
  157. package/dist/core/audit/rutas.d.ts +23 -0
  158. package/dist/core/audit/rutas.d.ts.map +1 -0
  159. package/dist/core/audit/rutas.js +23 -0
  160. package/dist/core/audit/rutas.js.map +1 -0
  161. package/dist/core/auth-storage.d.ts +0 -3
  162. package/dist/core/auth-storage.d.ts.map +1 -1
  163. package/dist/core/auth-storage.js +21 -8
  164. package/dist/core/auth-storage.js.map +1 -1
  165. package/dist/core/banco/almacenamiento.d.ts +18 -0
  166. package/dist/core/banco/almacenamiento.d.ts.map +1 -0
  167. package/dist/core/banco/almacenamiento.js +50 -0
  168. package/dist/core/banco/almacenamiento.js.map +1 -0
  169. package/dist/core/banco/analisis.d.ts +37 -0
  170. package/dist/core/banco/analisis.d.ts.map +1 -0
  171. package/dist/core/banco/analisis.js +164 -0
  172. package/dist/core/banco/analisis.js.map +1 -0
  173. package/dist/core/banco/bloques.d.ts +39 -0
  174. package/dist/core/banco/bloques.d.ts.map +1 -0
  175. package/dist/core/banco/bloques.js +84 -0
  176. package/dist/core/banco/bloques.js.map +1 -0
  177. package/dist/core/banco/cargas.d.ts +84 -0
  178. package/dist/core/banco/cargas.d.ts.map +1 -0
  179. package/dist/core/banco/cargas.js +520 -0
  180. package/dist/core/banco/cargas.js.map +1 -0
  181. package/dist/core/banco/comparar.d.ts +29 -0
  182. package/dist/core/banco/comparar.d.ts.map +1 -0
  183. package/dist/core/banco/comparar.js +28 -0
  184. package/dist/core/banco/comparar.js.map +1 -0
  185. package/dist/core/banco/ejecutar.d.ts +44 -0
  186. package/dist/core/banco/ejecutar.d.ts.map +1 -0
  187. package/dist/core/banco/ejecutar.js +183 -0
  188. package/dist/core/banco/ejecutar.js.map +1 -0
  189. package/dist/core/banco/generar.d.ts +24 -0
  190. package/dist/core/banco/generar.d.ts.map +1 -0
  191. package/dist/core/banco/generar.js +159 -0
  192. package/dist/core/banco/generar.js.map +1 -0
  193. package/dist/core/banco/mutaciones.d.ts +25 -0
  194. package/dist/core/banco/mutaciones.d.ts.map +1 -0
  195. package/dist/core/banco/mutaciones.js +215 -0
  196. package/dist/core/banco/mutaciones.js.map +1 -0
  197. package/dist/core/banco/tipos.d.ts +121 -0
  198. package/dist/core/banco/tipos.d.ts.map +1 -0
  199. package/dist/core/banco/tipos.js +16 -0
  200. package/dist/core/banco/tipos.js.map +1 -0
  201. package/dist/core/blobs/almacen.d.ts +81 -0
  202. package/dist/core/blobs/almacen.d.ts.map +1 -0
  203. package/dist/core/blobs/almacen.js +198 -0
  204. package/dist/core/blobs/almacen.js.map +1 -0
  205. package/dist/core/blobs/broker.d.ts +103 -0
  206. package/dist/core/blobs/broker.d.ts.map +1 -0
  207. package/dist/core/blobs/broker.js +204 -0
  208. package/dist/core/blobs/broker.js.map +1 -0
  209. package/dist/core/blobs/index.d.ts +70 -0
  210. package/dist/core/blobs/index.d.ts.map +1 -0
  211. package/dist/core/blobs/index.js +232 -0
  212. package/dist/core/blobs/index.js.map +1 -0
  213. package/dist/core/blobs/payload.d.ts +55 -0
  214. package/dist/core/blobs/payload.d.ts.map +1 -0
  215. package/dist/core/blobs/payload.js +255 -0
  216. package/dist/core/blobs/payload.js.map +1 -0
  217. package/dist/core/blobs/proveedor.d.ts +85 -0
  218. package/dist/core/blobs/proveedor.d.ts.map +1 -0
  219. package/dist/core/blobs/proveedor.js +196 -0
  220. package/dist/core/blobs/proveedor.js.map +1 -0
  221. package/dist/core/browser/cdp.d.ts +41 -0
  222. package/dist/core/browser/cdp.d.ts.map +1 -0
  223. package/dist/core/browser/cdp.js +119 -0
  224. package/dist/core/browser/cdp.js.map +1 -0
  225. package/dist/core/browser/politica.d.ts +51 -0
  226. package/dist/core/browser/politica.d.ts.map +1 -0
  227. package/dist/core/browser/politica.js +123 -0
  228. package/dist/core/browser/politica.js.map +1 -0
  229. package/dist/core/browser/sesion.d.ts +52 -0
  230. package/dist/core/browser/sesion.d.ts.map +1 -0
  231. package/dist/core/browser/sesion.js +176 -0
  232. package/dist/core/browser/sesion.js.map +1 -0
  233. package/dist/core/browser/tools.d.ts +16 -0
  234. package/dist/core/browser/tools.d.ts.map +1 -0
  235. package/dist/core/browser/tools.js +279 -0
  236. package/dist/core/browser/tools.js.map +1 -0
  237. package/dist/core/commit/diff.d.ts +56 -0
  238. package/dist/core/commit/diff.d.ts.map +1 -0
  239. package/dist/core/commit/diff.js +145 -0
  240. package/dist/core/commit/diff.js.map +1 -0
  241. package/dist/core/commit/mensaje.d.ts +80 -0
  242. package/dist/core/commit/mensaje.d.ts.map +1 -0
  243. package/dist/core/commit/mensaje.js +207 -0
  244. package/dist/core/commit/mensaje.js.map +1 -0
  245. package/dist/core/compactar/index.d.ts +52 -0
  246. package/dist/core/compactar/index.d.ts.map +1 -0
  247. package/dist/core/compactar/index.js +91 -0
  248. package/dist/core/compactar/index.js.map +1 -0
  249. package/dist/core/compactar/registro-denso.d.ts +160 -0
  250. package/dist/core/compactar/registro-denso.d.ts.map +1 -0
  251. package/dist/core/compactar/registro-denso.js +620 -0
  252. package/dist/core/compactar/registro-denso.js.map +1 -0
  253. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  254. package/dist/core/compaction/branch-summarization.js +3 -0
  255. package/dist/core/compaction/branch-summarization.js.map +1 -1
  256. package/dist/core/compaction/compaction.d.ts +4 -3
  257. package/dist/core/compaction/compaction.d.ts.map +1 -1
  258. package/dist/core/compaction/compaction.js +41 -32
  259. package/dist/core/compaction/compaction.js.map +1 -1
  260. package/dist/core/computer/captura.d.ts +35 -0
  261. package/dist/core/computer/captura.d.ts.map +1 -0
  262. package/dist/core/computer/captura.js +140 -0
  263. package/dist/core/computer/captura.js.map +1 -0
  264. package/dist/core/computer/driver.d.ts +130 -0
  265. package/dist/core/computer/driver.d.ts.map +1 -0
  266. package/dist/core/computer/driver.js +206 -0
  267. package/dist/core/computer/driver.js.map +1 -0
  268. package/dist/core/computer/motor/actions.d.ts +109 -0
  269. package/dist/core/computer/motor/actions.d.ts.map +1 -0
  270. package/dist/core/computer/motor/actions.js +157 -0
  271. package/dist/core/computer/motor/actions.js.map +1 -0
  272. package/dist/core/computer/motor/bridge.d.ts +232 -0
  273. package/dist/core/computer/motor/bridge.d.ts.map +1 -0
  274. package/dist/core/computer/motor/bridge.js +2335 -0
  275. package/dist/core/computer/motor/bridge.js.map +1 -0
  276. package/dist/core/computer/motor/cdp.d.ts +107 -0
  277. package/dist/core/computer/motor/cdp.d.ts.map +1 -0
  278. package/dist/core/computer/motor/cdp.js +659 -0
  279. package/dist/core/computer/motor/cdp.js.map +1 -0
  280. package/dist/core/computer/motor/config.d.ts +23 -0
  281. package/dist/core/computer/motor/config.d.ts.map +1 -0
  282. package/dist/core/computer/motor/config.js +100 -0
  283. package/dist/core/computer/motor/config.js.map +1 -0
  284. package/dist/core/computer/motor/contract.d.ts +81 -0
  285. package/dist/core/computer/motor/contract.d.ts.map +1 -0
  286. package/dist/core/computer/motor/contract.js +14 -0
  287. package/dist/core/computer/motor/contract.js.map +1 -0
  288. package/dist/core/computer/motor/note.d.ts +37 -0
  289. package/dist/core/computer/motor/note.d.ts.map +1 -0
  290. package/dist/core/computer/motor/note.js +162 -0
  291. package/dist/core/computer/motor/note.js.map +1 -0
  292. package/dist/core/computer/motor/outline.d.ts +155 -0
  293. package/dist/core/computer/motor/outline.d.ts.map +1 -0
  294. package/dist/core/computer/motor/outline.js +590 -0
  295. package/dist/core/computer/motor/outline.js.map +1 -0
  296. package/dist/core/computer/motor/output.d.ts +18 -0
  297. package/dist/core/computer/motor/output.d.ts.map +1 -0
  298. package/dist/core/computer/motor/output.js +148 -0
  299. package/dist/core/computer/motor/output.js.map +1 -0
  300. package/dist/core/computer/motor/permissions.d.ts +41 -0
  301. package/dist/core/computer/motor/permissions.d.ts.map +1 -0
  302. package/dist/core/computer/motor/permissions.js +51 -0
  303. package/dist/core/computer/motor/permissions.js.map +1 -0
  304. package/dist/core/computer/motor/platform/architecture.d.ts +5 -0
  305. package/dist/core/computer/motor/platform/architecture.d.ts.map +1 -0
  306. package/dist/core/computer/motor/platform/architecture.js +21 -0
  307. package/dist/core/computer/motor/platform/architecture.js.map +1 -0
  308. package/dist/core/computer/motor/platform/coerce.d.ts +4 -0
  309. package/dist/core/computer/motor/platform/coerce.d.ts.map +1 -0
  310. package/dist/core/computer/motor/platform/coerce.js +17 -0
  311. package/dist/core/computer/motor/platform/coerce.js.map +1 -0
  312. package/dist/core/computer/motor/platform/index.d.ts +4 -0
  313. package/dist/core/computer/motor/platform/index.d.ts.map +1 -0
  314. package/dist/core/computer/motor/platform/index.js +79 -0
  315. package/dist/core/computer/motor/platform/index.js.map +1 -0
  316. package/dist/core/computer/motor/platform/linux/backend.d.ts +3 -0
  317. package/dist/core/computer/motor/platform/linux/backend.d.ts.map +1 -0
  318. package/dist/core/computer/motor/platform/linux/backend.js +173 -0
  319. package/dist/core/computer/motor/platform/linux/backend.js.map +1 -0
  320. package/dist/core/computer/motor/platform/linux/helper.d.ts +29 -0
  321. package/dist/core/computer/motor/platform/linux/helper.d.ts.map +1 -0
  322. package/dist/core/computer/motor/platform/linux/helper.js +261 -0
  323. package/dist/core/computer/motor/platform/linux/helper.js.map +1 -0
  324. package/dist/core/computer/motor/platform/macos/backend.d.ts +3 -0
  325. package/dist/core/computer/motor/platform/macos/backend.d.ts.map +1 -0
  326. package/dist/core/computer/motor/platform/macos/backend.js +124 -0
  327. package/dist/core/computer/motor/platform/macos/backend.js.map +1 -0
  328. package/dist/core/computer/motor/platform/macos/browser.d.ts +7 -0
  329. package/dist/core/computer/motor/platform/macos/browser.d.ts.map +1 -0
  330. package/dist/core/computer/motor/platform/macos/browser.js +101 -0
  331. package/dist/core/computer/motor/platform/macos/browser.js.map +1 -0
  332. package/dist/core/computer/motor/platform/macos/helper-path.mjs +34 -0
  333. package/dist/core/computer/motor/platform/macos/helper.d.ts +32 -0
  334. package/dist/core/computer/motor/platform/macos/helper.d.ts.map +1 -0
  335. package/dist/core/computer/motor/platform/macos/helper.js +277 -0
  336. package/dist/core/computer/motor/platform/macos/helper.js.map +1 -0
  337. package/dist/core/computer/motor/platform/macos/permissions.d.ts +4 -0
  338. package/dist/core/computer/motor/platform/macos/permissions.d.ts.map +1 -0
  339. package/dist/core/computer/motor/platform/macos/permissions.js +118 -0
  340. package/dist/core/computer/motor/platform/macos/permissions.js.map +1 -0
  341. package/dist/core/computer/motor/platform/types.d.ts +263 -0
  342. package/dist/core/computer/motor/platform/types.d.ts.map +1 -0
  343. package/dist/core/computer/motor/platform/types.js +2 -0
  344. package/dist/core/computer/motor/platform/types.js.map +1 -0
  345. package/dist/core/computer/motor/platform/windows/backend.d.ts +3 -0
  346. package/dist/core/computer/motor/platform/windows/backend.d.ts.map +1 -0
  347. package/dist/core/computer/motor/platform/windows/backend.js +163 -0
  348. package/dist/core/computer/motor/platform/windows/backend.js.map +1 -0
  349. package/dist/core/computer/motor/platform/windows/helper.d.ts +18 -0
  350. package/dist/core/computer/motor/platform/windows/helper.d.ts.map +1 -0
  351. package/dist/core/computer/motor/platform/windows/helper.js +174 -0
  352. package/dist/core/computer/motor/platform/windows/helper.js.map +1 -0
  353. package/dist/core/computer/motor/root-selection.d.ts +6 -0
  354. package/dist/core/computer/motor/root-selection.d.ts.map +1 -0
  355. package/dist/core/computer/motor/root-selection.js +28 -0
  356. package/dist/core/computer/motor/root-selection.js.map +1 -0
  357. package/dist/core/computer/motor/runtime.d.ts +50 -0
  358. package/dist/core/computer/motor/runtime.d.ts.map +1 -0
  359. package/dist/core/computer/motor/runtime.js +119 -0
  360. package/dist/core/computer/motor/runtime.js.map +1 -0
  361. package/dist/core/computer/motor/state.d.ts +68 -0
  362. package/dist/core/computer/motor/state.d.ts.map +1 -0
  363. package/dist/core/computer/motor/state.js +100 -0
  364. package/dist/core/computer/motor/state.js.map +1 -0
  365. package/dist/core/computer/motor/view.d.ts +6 -0
  366. package/dist/core/computer/motor/view.d.ts.map +1 -0
  367. package/dist/core/computer/motor/view.js +185 -0
  368. package/dist/core/computer/motor/view.js.map +1 -0
  369. package/dist/core/computer/motor-ada.d.ts +159 -0
  370. package/dist/core/computer/motor-ada.d.ts.map +1 -0
  371. package/dist/core/computer/motor-ada.js +412 -0
  372. package/dist/core/computer/motor-ada.js.map +1 -0
  373. package/dist/core/computer/politica.d.ts +56 -0
  374. package/dist/core/computer/politica.d.ts.map +1 -0
  375. package/dist/core/computer/politica.js +163 -0
  376. package/dist/core/computer/politica.js.map +1 -0
  377. package/dist/core/computer/tools.d.ts +26 -0
  378. package/dist/core/computer/tools.d.ts.map +1 -0
  379. package/dist/core/computer/tools.js +399 -0
  380. package/dist/core/computer/tools.js.map +1 -0
  381. package/dist/core/context-breakdown.d.ts +80 -0
  382. package/dist/core/context-breakdown.d.ts.map +1 -0
  383. package/dist/core/context-breakdown.js +87 -0
  384. package/dist/core/context-breakdown.js.map +1 -0
  385. package/dist/core/credenciales/cliente.d.ts +60 -0
  386. package/dist/core/credenciales/cliente.d.ts.map +1 -0
  387. package/dist/core/credenciales/cliente.js +81 -0
  388. package/dist/core/credenciales/cliente.js.map +1 -0
  389. package/dist/core/credenciales/pool.d.ts +96 -0
  390. package/dist/core/credenciales/pool.d.ts.map +1 -0
  391. package/dist/core/credenciales/pool.js +128 -0
  392. package/dist/core/credenciales/pool.js.map +1 -0
  393. package/dist/core/credenciales/reposo.d.ts +93 -0
  394. package/dist/core/credenciales/reposo.d.ts.map +1 -0
  395. package/dist/core/credenciales/reposo.js +489 -0
  396. package/dist/core/credenciales/reposo.js.map +1 -0
  397. package/dist/core/credenciales/servidor.d.ts +55 -0
  398. package/dist/core/credenciales/servidor.d.ts.map +1 -0
  399. package/dist/core/credenciales/servidor.js +205 -0
  400. package/dist/core/credenciales/servidor.js.map +1 -0
  401. package/dist/core/defaults.d.ts +1 -0
  402. package/dist/core/defaults.d.ts.map +1 -1
  403. package/dist/core/defaults.js +9 -0
  404. package/dist/core/defaults.js.map +1 -1
  405. package/dist/core/descubrimiento/comandos.d.ts +30 -0
  406. package/dist/core/descubrimiento/comandos.d.ts.map +1 -0
  407. package/dist/core/descubrimiento/comandos.js +76 -0
  408. package/dist/core/descubrimiento/comandos.js.map +1 -0
  409. package/dist/core/descubrimiento/mcp.d.ts +42 -0
  410. package/dist/core/descubrimiento/mcp.d.ts.map +1 -0
  411. package/dist/core/descubrimiento/mcp.js +130 -0
  412. package/dist/core/descubrimiento/mcp.js.map +1 -0
  413. package/dist/core/descubrimiento/reglas.d.ts +61 -0
  414. package/dist/core/descubrimiento/reglas.d.ts.map +1 -0
  415. package/dist/core/descubrimiento/reglas.js +134 -0
  416. package/dist/core/descubrimiento/reglas.js.map +1 -0
  417. package/dist/core/descubrimiento/skills.d.ts +57 -0
  418. package/dist/core/descubrimiento/skills.d.ts.map +1 -0
  419. package/dist/core/descubrimiento/skills.js +113 -0
  420. package/dist/core/descubrimiento/skills.js.map +1 -0
  421. package/dist/core/dificultad/clasificador.d.ts +133 -0
  422. package/dist/core/dificultad/clasificador.d.ts.map +1 -0
  423. package/dist/core/dificultad/clasificador.js +288 -0
  424. package/dist/core/dificultad/clasificador.js.map +1 -0
  425. package/dist/core/edicion/diario.d.ts +37 -0
  426. package/dist/core/edicion/diario.d.ts.map +1 -0
  427. package/dist/core/edicion/diario.js +51 -0
  428. package/dist/core/edicion/diario.js.map +1 -0
  429. package/dist/core/edicion/hashline.d.ts +71 -0
  430. package/dist/core/edicion/hashline.d.ts.map +1 -0
  431. package/dist/core/edicion/hashline.js +111 -0
  432. package/dist/core/edicion/hashline.js.map +1 -0
  433. package/dist/core/edicion/hueco.d.ts +64 -0
  434. package/dist/core/edicion/hueco.d.ts.map +1 -0
  435. package/dist/core/edicion/hueco.js +162 -0
  436. package/dist/core/edicion/hueco.js.map +1 -0
  437. package/dist/core/edicion/limpiar-carga.d.ts +39 -0
  438. package/dist/core/edicion/limpiar-carga.d.ts.map +1 -0
  439. package/dist/core/edicion/limpiar-carga.js +121 -0
  440. package/dist/core/edicion/limpiar-carga.js.map +1 -0
  441. package/dist/core/edicion/observador.d.ts +80 -0
  442. package/dist/core/edicion/observador.d.ts.map +1 -0
  443. package/dist/core/edicion/observador.js +183 -0
  444. package/dist/core/edicion/observador.js.map +1 -0
  445. package/dist/core/edicion/parecido.d.ts +53 -0
  446. package/dist/core/edicion/parecido.d.ts.map +1 -0
  447. package/dist/core/edicion/parecido.js +145 -0
  448. package/dist/core/edicion/parecido.js.map +1 -0
  449. package/dist/core/edicion/parseo.d.ts +58 -0
  450. package/dist/core/edicion/parseo.d.ts.map +1 -0
  451. package/dist/core/edicion/parseo.js +124 -0
  452. package/dist/core/edicion/parseo.js.map +1 -0
  453. package/dist/core/edicion/reparacion.d.ts +67 -0
  454. package/dist/core/edicion/reparacion.d.ts.map +1 -0
  455. package/dist/core/edicion/reparacion.js +202 -0
  456. package/dist/core/edicion/reparacion.js.map +1 -0
  457. package/dist/core/edicion/sangria.d.ts +121 -0
  458. package/dist/core/edicion/sangria.d.ts.map +1 -0
  459. package/dist/core/edicion/sangria.js +341 -0
  460. package/dist/core/edicion/sangria.js.map +1 -0
  461. package/dist/core/edicion/tipos.d.ts +58 -0
  462. package/dist/core/edicion/tipos.d.ts.map +1 -0
  463. package/dist/core/edicion/tipos.js +160 -0
  464. package/dist/core/edicion/tipos.js.map +1 -0
  465. package/dist/core/engine-personality.d.ts +12 -0
  466. package/dist/core/engine-personality.d.ts.map +1 -0
  467. package/dist/core/engine-personality.js +53 -0
  468. package/dist/core/engine-personality.js.map +1 -0
  469. package/dist/core/errores/proveedor.d.ts +53 -0
  470. package/dist/core/errores/proveedor.d.ts.map +1 -0
  471. package/dist/core/errores/proveedor.js +191 -0
  472. package/dist/core/errores/proveedor.js.map +1 -0
  473. package/dist/core/estructural/buscar.d.ts +61 -0
  474. package/dist/core/estructural/buscar.d.ts.map +1 -0
  475. package/dist/core/estructural/buscar.js +261 -0
  476. package/dist/core/estructural/buscar.js.map +1 -0
  477. package/dist/core/estructural/editar.d.ts +36 -0
  478. package/dist/core/estructural/editar.d.ts.map +1 -0
  479. package/dist/core/estructural/editar.js +123 -0
  480. package/dist/core/estructural/editar.js.map +1 -0
  481. package/dist/core/estructural/tools.d.ts +11 -0
  482. package/dist/core/estructural/tools.d.ts.map +1 -0
  483. package/dist/core/estructural/tools.js +100 -0
  484. package/dist/core/estructural/tools.js.map +1 -0
  485. package/dist/core/experimental.d.ts.map +1 -1
  486. package/dist/core/experimental.js +10 -1
  487. package/dist/core/experimental.js.map +1 -1
  488. package/dist/core/extensiones/suplantacion.d.ts +49 -0
  489. package/dist/core/extensiones/suplantacion.d.ts.map +1 -0
  490. package/dist/core/extensiones/suplantacion.js +61 -0
  491. package/dist/core/extensiones/suplantacion.js.map +1 -0
  492. package/dist/core/extensiones/vigilancia.d.ts +54 -0
  493. package/dist/core/extensiones/vigilancia.d.ts.map +1 -0
  494. package/dist/core/extensiones/vigilancia.js +217 -0
  495. package/dist/core/extensiones/vigilancia.js.map +1 -0
  496. package/dist/core/extensions/index.d.ts +1 -1
  497. package/dist/core/extensions/index.d.ts.map +1 -1
  498. package/dist/core/extensions/index.js.map +1 -1
  499. package/dist/core/extensions/loader.d.ts.map +1 -1
  500. package/dist/core/extensions/loader.js +21 -6
  501. package/dist/core/extensions/loader.js.map +1 -1
  502. package/dist/core/extensions/types.d.ts +23 -4
  503. package/dist/core/extensions/types.d.ts.map +1 -1
  504. package/dist/core/extensions/types.js.map +1 -1
  505. package/dist/core/harness/fuentes-de-contexto.d.ts +29 -0
  506. package/dist/core/harness/fuentes-de-contexto.d.ts.map +1 -0
  507. package/dist/core/harness/fuentes-de-contexto.js +44 -0
  508. package/dist/core/harness/fuentes-de-contexto.js.map +1 -0
  509. package/dist/core/harness/refine.d.ts +40 -0
  510. package/dist/core/harness/refine.d.ts.map +1 -0
  511. package/dist/core/harness/refine.js +109 -0
  512. package/dist/core/harness/refine.js.map +1 -0
  513. package/dist/core/harness/store.d.ts +75 -0
  514. package/dist/core/harness/store.d.ts.map +1 -0
  515. package/dist/core/harness/store.js +149 -0
  516. package/dist/core/harness/store.js.map +1 -0
  517. package/dist/core/hooks/contract.d.ts +85 -0
  518. package/dist/core/hooks/contract.d.ts.map +1 -0
  519. package/dist/core/hooks/contract.js +140 -0
  520. package/dist/core/hooks/contract.js.map +1 -0
  521. package/dist/core/hooks/runner.d.ts +42 -0
  522. package/dist/core/hooks/runner.d.ts.map +1 -0
  523. package/dist/core/hooks/runner.js +85 -0
  524. package/dist/core/hooks/runner.js.map +1 -0
  525. package/dist/core/hooks/session-hooks.d.ts +62 -0
  526. package/dist/core/hooks/session-hooks.d.ts.map +1 -0
  527. package/dist/core/hooks/session-hooks.js +84 -0
  528. package/dist/core/hooks/session-hooks.js.map +1 -0
  529. package/dist/core/importar/formatos.d.ts +69 -0
  530. package/dist/core/importar/formatos.d.ts.map +1 -0
  531. package/dist/core/importar/formatos.js +235 -0
  532. package/dist/core/importar/formatos.js.map +1 -0
  533. package/dist/core/interactivo/deteccion.d.ts +44 -0
  534. package/dist/core/interactivo/deteccion.d.ts.map +1 -0
  535. package/dist/core/interactivo/deteccion.js +82 -0
  536. package/dist/core/interactivo/deteccion.js.map +1 -0
  537. package/dist/core/interactivo/sesion.d.ts +50 -0
  538. package/dist/core/interactivo/sesion.d.ts.map +1 -0
  539. package/dist/core/interactivo/sesion.js +156 -0
  540. package/dist/core/interactivo/sesion.js.map +1 -0
  541. package/dist/core/interactivo/tools.d.ts +21 -0
  542. package/dist/core/interactivo/tools.d.ts.map +1 -0
  543. package/dist/core/interactivo/tools.js +122 -0
  544. package/dist/core/interactivo/tools.js.map +1 -0
  545. package/dist/core/keybindings.d.ts.map +1 -1
  546. package/dist/core/keybindings.js +2 -1
  547. package/dist/core/keybindings.js.map +1 -1
  548. package/dist/core/lectura/mapa.d.ts +70 -0
  549. package/dist/core/lectura/mapa.d.ts.map +1 -0
  550. package/dist/core/lectura/mapa.js +177 -0
  551. package/dist/core/lectura/mapa.js.map +1 -0
  552. package/dist/core/lectura/pdf.d.ts +49 -0
  553. package/dist/core/lectura/pdf.d.ts.map +1 -0
  554. package/dist/core/lectura/pdf.js +337 -0
  555. package/dist/core/lectura/pdf.js.map +1 -0
  556. package/dist/core/limpieza/comprobadores.d.ts +28 -0
  557. package/dist/core/limpieza/comprobadores.d.ts.map +1 -0
  558. package/dist/core/limpieza/comprobadores.js +311 -0
  559. package/dist/core/limpieza/comprobadores.js.map +1 -0
  560. package/dist/core/limpieza/parseo.d.ts +19 -0
  561. package/dist/core/limpieza/parseo.d.ts.map +1 -0
  562. package/dist/core/limpieza/parseo.js +124 -0
  563. package/dist/core/limpieza/parseo.js.map +1 -0
  564. package/dist/core/limpieza/reparacion.d.ts +77 -0
  565. package/dist/core/limpieza/reparacion.d.ts.map +1 -0
  566. package/dist/core/limpieza/reparacion.js +254 -0
  567. package/dist/core/limpieza/reparacion.js.map +1 -0
  568. package/dist/core/limpieza/tipos.d.ts +56 -0
  569. package/dist/core/limpieza/tipos.d.ts.map +1 -0
  570. package/dist/core/limpieza/tipos.js +9 -0
  571. package/dist/core/limpieza/tipos.js.map +1 -0
  572. package/dist/core/lsp/cliente.d.ts +52 -0
  573. package/dist/core/lsp/cliente.d.ts.map +1 -0
  574. package/dist/core/lsp/cliente.js +232 -0
  575. package/dist/core/lsp/cliente.js.map +1 -0
  576. package/dist/core/lsp/descubrimiento.d.ts +62 -0
  577. package/dist/core/lsp/descubrimiento.d.ts.map +1 -0
  578. package/dist/core/lsp/descubrimiento.js +152 -0
  579. package/dist/core/lsp/descubrimiento.js.map +1 -0
  580. package/dist/core/lsp/ediciones.d.ts +59 -0
  581. package/dist/core/lsp/ediciones.d.ts.map +1 -0
  582. package/dist/core/lsp/ediciones.js +89 -0
  583. package/dist/core/lsp/ediciones.js.map +1 -0
  584. package/dist/core/lsp/extension.d.ts +28 -0
  585. package/dist/core/lsp/extension.d.ts.map +1 -0
  586. package/dist/core/lsp/extension.js +34 -0
  587. package/dist/core/lsp/extension.js.map +1 -0
  588. package/dist/core/lsp/tools.d.ts +45 -0
  589. package/dist/core/lsp/tools.d.ts.map +1 -0
  590. package/dist/core/lsp/tools.js +265 -0
  591. package/dist/core/lsp/tools.js.map +1 -0
  592. package/dist/core/mcp/client.d.ts +60 -0
  593. package/dist/core/mcp/client.d.ts.map +1 -0
  594. package/dist/core/mcp/client.js +139 -0
  595. package/dist/core/mcp/client.js.map +1 -0
  596. package/dist/core/mcp/manager.d.ts +86 -0
  597. package/dist/core/mcp/manager.d.ts.map +1 -0
  598. package/dist/core/mcp/manager.js +124 -0
  599. package/dist/core/mcp/manager.js.map +1 -0
  600. package/dist/core/mcp/tools.d.ts +15 -0
  601. package/dist/core/mcp/tools.d.ts.map +1 -0
  602. package/dist/core/mcp/tools.js +84 -0
  603. package/dist/core/mcp/tools.js.map +1 -0
  604. package/dist/core/memory-engine/audit-export.d.ts +56 -0
  605. package/dist/core/memory-engine/audit-export.d.ts.map +1 -0
  606. package/dist/core/memory-engine/audit-export.js +100 -0
  607. package/dist/core/memory-engine/audit-export.js.map +1 -0
  608. package/dist/core/memory-engine/audit-indice.d.ts +153 -0
  609. package/dist/core/memory-engine/audit-indice.d.ts.map +1 -0
  610. package/dist/core/memory-engine/audit-indice.js +271 -0
  611. package/dist/core/memory-engine/audit-indice.js.map +1 -0
  612. package/dist/core/memory-engine/audit.d.ts +18 -6
  613. package/dist/core/memory-engine/audit.d.ts.map +1 -1
  614. package/dist/core/memory-engine/audit.js +32 -50
  615. package/dist/core/memory-engine/audit.js.map +1 -1
  616. package/dist/core/memory-engine/engine.d.ts +21 -4
  617. package/dist/core/memory-engine/engine.d.ts.map +1 -1
  618. package/dist/core/memory-engine/engine.js +219 -55
  619. package/dist/core/memory-engine/engine.js.map +1 -1
  620. package/dist/core/memory-engine/inverted-index.d.ts.map +1 -1
  621. package/dist/core/memory-engine/inverted-index.js +67 -10
  622. package/dist/core/memory-engine/inverted-index.js.map +1 -1
  623. package/dist/core/memory-engine/keychain.d.ts.map +1 -1
  624. package/dist/core/memory-engine/keychain.js +1 -6
  625. package/dist/core/memory-engine/keychain.js.map +1 -1
  626. package/dist/core/memory-engine/observation-store.d.ts +0 -1
  627. package/dist/core/memory-engine/observation-store.d.ts.map +1 -1
  628. package/dist/core/memory-engine/observation-store.js +40 -12
  629. package/dist/core/memory-engine/observation-store.js.map +1 -1
  630. package/dist/core/memory-engine/refinements.d.ts +51 -0
  631. package/dist/core/memory-engine/refinements.d.ts.map +1 -0
  632. package/dist/core/memory-engine/refinements.js +99 -0
  633. package/dist/core/memory-engine/refinements.js.map +1 -0
  634. package/dist/core/memory-engine/scanner.d.ts.map +1 -1
  635. package/dist/core/memory-engine/scanner.js +25 -5
  636. package/dist/core/memory-engine/scanner.js.map +1 -1
  637. package/dist/core/memory-engine/security.d.ts.map +1 -1
  638. package/dist/core/memory-engine/security.js +131 -23
  639. package/dist/core/memory-engine/security.js.map +1 -1
  640. package/dist/core/memory-engine/session-indexer.d.ts.map +1 -1
  641. package/dist/core/memory-engine/session-indexer.js +8 -2
  642. package/dist/core/memory-engine/session-indexer.js.map +1 -1
  643. package/dist/core/memory-engine/tools.d.ts +2 -2
  644. package/dist/core/memory-engine/tools.d.ts.map +1 -1
  645. package/dist/core/memory-engine/tools.js +41 -8
  646. package/dist/core/memory-engine/tools.js.map +1 -1
  647. package/dist/core/memory-engine/types.d.ts +2 -0
  648. package/dist/core/memory-engine/types.d.ts.map +1 -1
  649. package/dist/core/memory-engine/types.js.map +1 -1
  650. package/dist/core/memory-engine/vault.d.ts.map +1 -1
  651. package/dist/core/memory-engine/vault.js +2 -2
  652. package/dist/core/memory-engine/vault.js.map +1 -1
  653. package/dist/core/model-config.d.ts.map +1 -1
  654. package/dist/core/model-config.js +2 -1
  655. package/dist/core/model-config.js.map +1 -1
  656. package/dist/core/model-resolver.d.ts +1 -0
  657. package/dist/core/model-resolver.d.ts.map +1 -1
  658. package/dist/core/model-resolver.js +19 -7
  659. package/dist/core/model-resolver.js.map +1 -1
  660. package/dist/core/models-store.d.ts.map +1 -1
  661. package/dist/core/models-store.js +2 -1
  662. package/dist/core/models-store.js.map +1 -1
  663. package/dist/core/muestreo-restringido.d.ts +49 -0
  664. package/dist/core/muestreo-restringido.d.ts.map +1 -0
  665. package/dist/core/muestreo-restringido.js +65 -0
  666. package/dist/core/muestreo-restringido.js.map +1 -0
  667. package/dist/core/orphan-process-journal.d.ts +48 -0
  668. package/dist/core/orphan-process-journal.d.ts.map +1 -0
  669. package/dist/core/orphan-process-journal.js +116 -0
  670. package/dist/core/orphan-process-journal.js.map +1 -0
  671. package/dist/core/package-manager.d.ts.map +1 -1
  672. package/dist/core/package-manager.js +11 -6
  673. package/dist/core/package-manager.js.map +1 -1
  674. package/dist/core/pi-manifest.d.ts.map +1 -1
  675. package/dist/core/pi-manifest.js +2 -1
  676. package/dist/core/pi-manifest.js.map +1 -1
  677. package/dist/core/privacidad/categorias-especiales.d.ts +186 -0
  678. package/dist/core/privacidad/categorias-especiales.d.ts.map +1 -0
  679. package/dist/core/privacidad/categorias-especiales.js +745 -0
  680. package/dist/core/privacidad/categorias-especiales.js.map +1 -0
  681. package/dist/core/privacidad/tapar.d.ts +48 -0
  682. package/dist/core/privacidad/tapar.d.ts.map +1 -0
  683. package/dist/core/privacidad/tapar.js +66 -0
  684. package/dist/core/privacidad/tapar.js.map +1 -0
  685. package/dist/core/prompt-cache/diagnostics.d.ts +33 -0
  686. package/dist/core/prompt-cache/diagnostics.d.ts.map +1 -0
  687. package/dist/core/prompt-cache/diagnostics.js +100 -0
  688. package/dist/core/prompt-cache/diagnostics.js.map +1 -0
  689. package/dist/core/prompt-cache/index.d.ts +33 -0
  690. package/dist/core/prompt-cache/index.d.ts.map +1 -0
  691. package/dist/core/prompt-cache/index.js +189 -0
  692. package/dist/core/prompt-cache/index.js.map +1 -0
  693. package/dist/core/prompt-cache/payload.d.ts +58 -0
  694. package/dist/core/prompt-cache/payload.d.ts.map +1 -0
  695. package/dist/core/prompt-cache/payload.js +122 -0
  696. package/dist/core/prompt-cache/payload.js.map +1 -0
  697. package/dist/core/prompt-cache/stabilize.d.ts +65 -0
  698. package/dist/core/prompt-cache/stabilize.d.ts.map +1 -0
  699. package/dist/core/prompt-cache/stabilize.js +137 -0
  700. package/dist/core/prompt-cache/stabilize.js.map +1 -0
  701. package/dist/core/prompt-cache/stats.d.ts +55 -0
  702. package/dist/core/prompt-cache/stats.d.ts.map +1 -0
  703. package/dist/core/prompt-cache/stats.js +158 -0
  704. package/dist/core/prompt-cache/stats.js.map +1 -0
  705. package/dist/core/prompt-eleccion.d.ts +38 -0
  706. package/dist/core/prompt-eleccion.d.ts.map +1 -0
  707. package/dist/core/prompt-eleccion.js +46 -0
  708. package/dist/core/prompt-eleccion.js.map +1 -0
  709. package/dist/core/prompt-optimizer.d.ts +53 -0
  710. package/dist/core/prompt-optimizer.d.ts.map +1 -0
  711. package/dist/core/prompt-optimizer.js +138 -0
  712. package/dist/core/prompt-optimizer.js.map +1 -0
  713. package/dist/core/prompts/montar.d.ts +75 -0
  714. package/dist/core/prompts/montar.d.ts.map +1 -0
  715. package/dist/core/prompts/montar.js +146 -0
  716. package/dist/core/prompts/montar.js.map +1 -0
  717. package/dist/core/prompts/plantilla.d.ts +54 -0
  718. package/dist/core/prompts/plantilla.d.ts.map +1 -0
  719. package/dist/core/prompts/plantilla.js +153 -0
  720. package/dist/core/prompts/plantilla.js.map +1 -0
  721. package/dist/core/prompts/sistema.md +134 -0
  722. package/dist/core/provider-attribution.d.ts +24 -2
  723. package/dist/core/provider-attribution.d.ts.map +1 -1
  724. package/dist/core/provider-attribution.js +24 -42
  725. package/dist/core/provider-attribution.js.map +1 -1
  726. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  727. package/dist/core/remote-catalog-provider.js +2 -1
  728. package/dist/core/remote-catalog-provider.js.map +1 -1
  729. package/dist/core/remoto/destino.d.ts +38 -0
  730. package/dist/core/remoto/destino.d.ts.map +1 -0
  731. package/dist/core/remoto/destino.js +105 -0
  732. package/dist/core/remoto/destino.js.map +1 -0
  733. package/dist/core/remoto/ejecutor.d.ts +59 -0
  734. package/dist/core/remoto/ejecutor.d.ts.map +1 -0
  735. package/dist/core/remoto/ejecutor.js +225 -0
  736. package/dist/core/remoto/ejecutor.js.map +1 -0
  737. package/dist/core/remoto/ficheros.d.ts +29 -0
  738. package/dist/core/remoto/ficheros.d.ts.map +1 -0
  739. package/dist/core/remoto/ficheros.js +90 -0
  740. package/dist/core/remoto/ficheros.js.map +1 -0
  741. package/dist/core/remoto/registro-extension.d.ts +15 -0
  742. package/dist/core/remoto/registro-extension.d.ts.map +1 -0
  743. package/dist/core/remoto/registro-extension.js +17 -0
  744. package/dist/core/remoto/registro-extension.js.map +1 -0
  745. package/dist/core/remoto/tools.d.ts +28 -0
  746. package/dist/core/remoto/tools.d.ts.map +1 -0
  747. package/dist/core/remoto/tools.js +31 -0
  748. package/dist/core/remoto/tools.js.map +1 -0
  749. package/dist/core/resource-loader.d.ts +58 -0
  750. package/dist/core/resource-loader.d.ts.map +1 -1
  751. package/dist/core/resource-loader.js +326 -8
  752. package/dist/core/resource-loader.js.map +1 -1
  753. package/dist/core/revision/hallazgo.d.ts +51 -0
  754. package/dist/core/revision/hallazgo.d.ts.map +1 -0
  755. package/dist/core/revision/hallazgo.js +73 -0
  756. package/dist/core/revision/hallazgo.js.map +1 -0
  757. package/dist/core/revision/revisor.d.ts +81 -0
  758. package/dist/core/revision/revisor.d.ts.map +1 -0
  759. package/dist/core/revision/revisor.js +132 -0
  760. package/dist/core/revision/revisor.js.map +1 -0
  761. package/dist/core/revision/sarif.d.ts +30 -0
  762. package/dist/core/revision/sarif.d.ts.map +1 -0
  763. package/dist/core/revision/sarif.js +83 -0
  764. package/dist/core/revision/sarif.js.map +1 -0
  765. package/dist/core/scheduler/scheduler.d.ts +87 -0
  766. package/dist/core/scheduler/scheduler.d.ts.map +1 -0
  767. package/dist/core/scheduler/scheduler.js +178 -0
  768. package/dist/core/scheduler/scheduler.js.map +1 -0
  769. package/dist/core/sdk.d.ts +8 -0
  770. package/dist/core/sdk.d.ts.map +1 -1
  771. package/dist/core/sdk.js +11 -1
  772. package/dist/core/sdk.js.map +1 -1
  773. package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts +49 -0
  774. package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts.map +1 -0
  775. package/dist/core/sesion/cerrar-llamadas-abiertas.js +77 -0
  776. package/dist/core/sesion/cerrar-llamadas-abiertas.js.map +1 -0
  777. package/dist/core/session-manager.d.ts.map +1 -1
  778. package/dist/core/session-manager.js +2 -1
  779. package/dist/core/session-manager.js.map +1 -1
  780. package/dist/core/settings-diagnostics.d.ts +9 -0
  781. package/dist/core/settings-diagnostics.d.ts.map +1 -0
  782. package/dist/core/settings-diagnostics.js +21 -0
  783. package/dist/core/settings-diagnostics.js.map +1 -0
  784. package/dist/core/settings-manager.d.ts +156 -0
  785. package/dist/core/settings-manager.d.ts.map +1 -1
  786. package/dist/core/settings-manager.js +255 -10
  787. package/dist/core/settings-manager.js.map +1 -1
  788. package/dist/core/skills.d.ts.map +1 -1
  789. package/dist/core/skills.js +51 -33
  790. package/dist/core/skills.js.map +1 -1
  791. package/dist/core/slash-commands.d.ts.map +1 -1
  792. package/dist/core/slash-commands.js +2 -1
  793. package/dist/core/slash-commands.js.map +1 -1
  794. package/dist/core/system-prompt.d.ts +17 -0
  795. package/dist/core/system-prompt.d.ts.map +1 -1
  796. package/dist/core/system-prompt.js +13 -5
  797. package/dist/core/system-prompt.js.map +1 -1
  798. package/dist/core/telemetria/otlp.d.ts +122 -0
  799. package/dist/core/telemetria/otlp.d.ts.map +1 -0
  800. package/dist/core/telemetria/otlp.js +373 -0
  801. package/dist/core/telemetria/otlp.js.map +1 -0
  802. package/dist/core/tools/coercion-argumentos.d.ts +48 -0
  803. package/dist/core/tools/coercion-argumentos.d.ts.map +1 -0
  804. package/dist/core/tools/coercion-argumentos.js +99 -0
  805. package/dist/core/tools/coercion-argumentos.js.map +1 -0
  806. package/dist/core/tools/edit-diff.d.ts +0 -12
  807. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  808. package/dist/core/tools/edit-diff.js +234 -12
  809. package/dist/core/tools/edit-diff.js.map +1 -1
  810. package/dist/core/tools/edit.d.ts.map +1 -1
  811. package/dist/core/tools/edit.js +28 -5
  812. package/dist/core/tools/edit.js.map +1 -1
  813. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  814. package/dist/core/tools/file-mutation-queue.js +5 -0
  815. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  816. package/dist/core/tools/index.d.ts.map +1 -1
  817. package/dist/core/tools/index.js +2 -2
  818. package/dist/core/tools/index.js.map +1 -1
  819. package/dist/core/tools/json-tolerante.d.ts +30 -0
  820. package/dist/core/tools/json-tolerante.d.ts.map +1 -0
  821. package/dist/core/tools/json-tolerante.js +70 -0
  822. package/dist/core/tools/json-tolerante.js.map +1 -0
  823. package/dist/core/tools/project-memory-tool.d.ts.map +1 -1
  824. package/dist/core/tools/project-memory-tool.js +4 -1
  825. package/dist/core/tools/project-memory-tool.js.map +1 -1
  826. package/dist/core/tools/read.d.ts.map +1 -1
  827. package/dist/core/tools/read.js +17 -0
  828. package/dist/core/tools/read.js.map +1 -1
  829. package/dist/core/tools/tool-definition-wrapper.d.ts +14 -1
  830. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  831. package/dist/core/tools/tool-definition-wrapper.js +17 -1
  832. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  833. package/dist/core/trust-manager.d.ts.map +1 -1
  834. package/dist/core/trust-manager.js +2 -1
  835. package/dist/core/trust-manager.js.map +1 -1
  836. package/dist/core/turno-vacio/detectar.d.ts +38 -0
  837. package/dist/core/turno-vacio/detectar.d.ts.map +1 -0
  838. package/dist/core/turno-vacio/detectar.js +66 -0
  839. package/dist/core/turno-vacio/detectar.js.map +1 -0
  840. package/dist/core/undo/journal.d.ts +57 -0
  841. package/dist/core/undo/journal.d.ts.map +1 -0
  842. package/dist/core/undo/journal.js +178 -0
  843. package/dist/core/undo/journal.js.map +1 -0
  844. package/dist/core/urls-internas/auditoria.d.ts +10 -0
  845. package/dist/core/urls-internas/auditoria.d.ts.map +1 -0
  846. package/dist/core/urls-internas/auditoria.js +42 -0
  847. package/dist/core/urls-internas/auditoria.js.map +1 -0
  848. package/dist/core/urls-internas/boveda.d.ts +13 -0
  849. package/dist/core/urls-internas/boveda.d.ts.map +1 -0
  850. package/dist/core/urls-internas/boveda.js +40 -0
  851. package/dist/core/urls-internas/boveda.js.map +1 -0
  852. package/dist/core/urls-internas/lector.d.ts +30 -0
  853. package/dist/core/urls-internas/lector.d.ts.map +1 -0
  854. package/dist/core/urls-internas/lector.js +56 -0
  855. package/dist/core/urls-internas/lector.js.map +1 -0
  856. package/dist/core/urls-internas/memoria.d.ts +11 -0
  857. package/dist/core/urls-internas/memoria.d.ts.map +1 -0
  858. package/dist/core/urls-internas/memoria.js +25 -0
  859. package/dist/core/urls-internas/memoria.js.map +1 -0
  860. package/dist/core/urls-internas/parse.d.ts +28 -0
  861. package/dist/core/urls-internas/parse.d.ts.map +1 -0
  862. package/dist/core/urls-internas/parse.js +32 -0
  863. package/dist/core/urls-internas/parse.js.map +1 -0
  864. package/dist/core/urls-internas/reglas.d.ts +10 -0
  865. package/dist/core/urls-internas/reglas.d.ts.map +1 -0
  866. package/dist/core/urls-internas/reglas.js +31 -0
  867. package/dist/core/urls-internas/reglas.js.map +1 -0
  868. package/dist/core/usage/aggregate.d.ts +68 -0
  869. package/dist/core/usage/aggregate.d.ts.map +1 -0
  870. package/dist/core/usage/aggregate.js +93 -0
  871. package/dist/core/usage/aggregate.js.map +1 -0
  872. package/dist/core/usage/cuota/anthropic.d.ts +10 -0
  873. package/dist/core/usage/cuota/anthropic.d.ts.map +1 -0
  874. package/dist/core/usage/cuota/anthropic.js +63 -0
  875. package/dist/core/usage/cuota/anthropic.js.map +1 -0
  876. package/dist/core/usage/cuota/cache.d.ts +20 -0
  877. package/dist/core/usage/cuota/cache.d.ts.map +1 -0
  878. package/dist/core/usage/cuota/cache.js +36 -0
  879. package/dist/core/usage/cuota/cache.js.map +1 -0
  880. package/dist/core/usage/cuota/github-copilot.d.ts +9 -0
  881. package/dist/core/usage/cuota/github-copilot.d.ts.map +1 -0
  882. package/dist/core/usage/cuota/github-copilot.js +67 -0
  883. package/dist/core/usage/cuota/github-copilot.js.map +1 -0
  884. package/dist/core/usage/cuota/google-gemini.d.ts +9 -0
  885. package/dist/core/usage/cuota/google-gemini.d.ts.map +1 -0
  886. package/dist/core/usage/cuota/google-gemini.js +72 -0
  887. package/dist/core/usage/cuota/google-gemini.js.map +1 -0
  888. package/dist/core/usage/cuota/index.d.ts +25 -0
  889. package/dist/core/usage/cuota/index.d.ts.map +1 -0
  890. package/dist/core/usage/cuota/index.js +50 -0
  891. package/dist/core/usage/cuota/index.js.map +1 -0
  892. package/dist/core/usage/cuota/openai-codex.d.ts +9 -0
  893. package/dist/core/usage/cuota/openai-codex.d.ts.map +1 -0
  894. package/dist/core/usage/cuota/openai-codex.js +59 -0
  895. package/dist/core/usage/cuota/openai-codex.js.map +1 -0
  896. package/dist/core/usage/cuota/openrouter.d.ts +10 -0
  897. package/dist/core/usage/cuota/openrouter.d.ts.map +1 -0
  898. package/dist/core/usage/cuota/openrouter.js +47 -0
  899. package/dist/core/usage/cuota/openrouter.js.map +1 -0
  900. package/dist/core/usage/cuota/tipos.d.ts +50 -0
  901. package/dist/core/usage/cuota/tipos.d.ts.map +1 -0
  902. package/dist/core/usage/cuota/tipos.js +25 -0
  903. package/dist/core/usage/cuota/tipos.js.map +1 -0
  904. package/dist/core/web/busqueda-nativa.d.ts +82 -0
  905. package/dist/core/web/busqueda-nativa.d.ts.map +1 -0
  906. package/dist/core/web/busqueda-nativa.js +163 -0
  907. package/dist/core/web/busqueda-nativa.js.map +1 -0
  908. package/dist/core/web/destino.d.ts +58 -0
  909. package/dist/core/web/destino.d.ts.map +1 -0
  910. package/dist/core/web/destino.js +127 -0
  911. package/dist/core/web/destino.js.map +1 -0
  912. package/dist/core/web/proveedores/brave.d.ts +6 -0
  913. package/dist/core/web/proveedores/brave.d.ts.map +1 -0
  914. package/dist/core/web/proveedores/brave.js +20 -0
  915. package/dist/core/web/proveedores/brave.js.map +1 -0
  916. package/dist/core/web/proveedores/claves.d.ts +19 -0
  917. package/dist/core/web/proveedores/claves.d.ts.map +1 -0
  918. package/dist/core/web/proveedores/claves.js +36 -0
  919. package/dist/core/web/proveedores/claves.js.map +1 -0
  920. package/dist/core/web/proveedores/duckduckgo.d.ts +3 -0
  921. package/dist/core/web/proveedores/duckduckgo.d.ts.map +1 -0
  922. package/dist/core/web/proveedores/duckduckgo.js +109 -0
  923. package/dist/core/web/proveedores/duckduckgo.js.map +1 -0
  924. package/dist/core/web/proveedores/ecosia.d.ts +3 -0
  925. package/dist/core/web/proveedores/ecosia.d.ts.map +1 -0
  926. package/dist/core/web/proveedores/ecosia.js +72 -0
  927. package/dist/core/web/proveedores/ecosia.js.map +1 -0
  928. package/dist/core/web/proveedores/exa.d.ts +6 -0
  929. package/dist/core/web/proveedores/exa.d.ts.map +1 -0
  930. package/dist/core/web/proveedores/exa.js +24 -0
  931. package/dist/core/web/proveedores/exa.js.map +1 -0
  932. package/dist/core/web/proveedores/mojeek.d.ts +3 -0
  933. package/dist/core/web/proveedores/mojeek.d.ts.map +1 -0
  934. package/dist/core/web/proveedores/mojeek.js +65 -0
  935. package/dist/core/web/proveedores/mojeek.js.map +1 -0
  936. package/dist/core/web/proveedores/navegador.d.ts +10 -0
  937. package/dist/core/web/proveedores/navegador.d.ts.map +1 -0
  938. package/dist/core/web/proveedores/navegador.js +13 -0
  939. package/dist/core/web/proveedores/navegador.js.map +1 -0
  940. package/dist/core/web/proveedores/registro.d.ts +43 -0
  941. package/dist/core/web/proveedores/registro.d.ts.map +1 -0
  942. package/dist/core/web/proveedores/registro.js +49 -0
  943. package/dist/core/web/proveedores/registro.js.map +1 -0
  944. package/dist/core/web/proveedores/searxng.d.ts +9 -0
  945. package/dist/core/web/proveedores/searxng.d.ts.map +1 -0
  946. package/dist/core/web/proveedores/searxng.js +17 -0
  947. package/dist/core/web/proveedores/searxng.js.map +1 -0
  948. package/dist/core/web/proveedores/serper.d.ts +9 -0
  949. package/dist/core/web/proveedores/serper.d.ts.map +1 -0
  950. package/dist/core/web/proveedores/serper.js +19 -0
  951. package/dist/core/web/proveedores/serper.js.map +1 -0
  952. package/dist/core/web/proveedores/tavily.d.ts +6 -0
  953. package/dist/core/web/proveedores/tavily.d.ts.map +1 -0
  954. package/dist/core/web/proveedores/tavily.js +19 -0
  955. package/dist/core/web/proveedores/tavily.js.map +1 -0
  956. package/dist/core/web/proveedores/tipos.d.ts +36 -0
  957. package/dist/core/web/proveedores/tipos.d.ts.map +1 -0
  958. package/dist/core/web/proveedores/tipos.js +10 -0
  959. package/dist/core/web/proveedores/tipos.js.map +1 -0
  960. package/dist/core/web/registro-red.d.ts +43 -0
  961. package/dist/core/web/registro-red.d.ts.map +1 -0
  962. package/dist/core/web/registro-red.js +86 -0
  963. package/dist/core/web/registro-red.js.map +1 -0
  964. package/dist/core/web/scrapers/cisa-kev.d.ts +10 -0
  965. package/dist/core/web/scrapers/cisa-kev.d.ts.map +1 -0
  966. package/dist/core/web/scrapers/cisa-kev.js +38 -0
  967. package/dist/core/web/scrapers/cisa-kev.js.map +1 -0
  968. package/dist/core/web/scrapers/crates-io.d.ts +11 -0
  969. package/dist/core/web/scrapers/crates-io.d.ts.map +1 -0
  970. package/dist/core/web/scrapers/crates-io.js +29 -0
  971. package/dist/core/web/scrapers/crates-io.js.map +1 -0
  972. package/dist/core/web/scrapers/docs-rs.d.ts +10 -0
  973. package/dist/core/web/scrapers/docs-rs.d.ts.map +1 -0
  974. package/dist/core/web/scrapers/docs-rs.js +35 -0
  975. package/dist/core/web/scrapers/docs-rs.js.map +1 -0
  976. package/dist/core/web/scrapers/github.d.ts +3 -0
  977. package/dist/core/web/scrapers/github.d.ts.map +1 -0
  978. package/dist/core/web/scrapers/github.js +72 -0
  979. package/dist/core/web/scrapers/github.js.map +1 -0
  980. package/dist/core/web/scrapers/go-pkg.d.ts +7 -0
  981. package/dist/core/web/scrapers/go-pkg.d.ts.map +1 -0
  982. package/dist/core/web/scrapers/go-pkg.js +30 -0
  983. package/dist/core/web/scrapers/go-pkg.js.map +1 -0
  984. package/dist/core/web/scrapers/hex.d.ts +6 -0
  985. package/dist/core/web/scrapers/hex.d.ts.map +1 -0
  986. package/dist/core/web/scrapers/hex.js +27 -0
  987. package/dist/core/web/scrapers/hex.js.map +1 -0
  988. package/dist/core/web/scrapers/maven.d.ts +8 -0
  989. package/dist/core/web/scrapers/maven.d.ts.map +1 -0
  990. package/dist/core/web/scrapers/maven.js +41 -0
  991. package/dist/core/web/scrapers/maven.js.map +1 -0
  992. package/dist/core/web/scrapers/mdn.d.ts +6 -0
  993. package/dist/core/web/scrapers/mdn.d.ts.map +1 -0
  994. package/dist/core/web/scrapers/mdn.js +28 -0
  995. package/dist/core/web/scrapers/mdn.js.map +1 -0
  996. package/dist/core/web/scrapers/npm.d.ts +11 -0
  997. package/dist/core/web/scrapers/npm.d.ts.map +1 -0
  998. package/dist/core/web/scrapers/npm.js +57 -0
  999. package/dist/core/web/scrapers/npm.js.map +1 -0
  1000. package/dist/core/web/scrapers/nuget.d.ts +8 -0
  1001. package/dist/core/web/scrapers/nuget.d.ts.map +1 -0
  1002. package/dist/core/web/scrapers/nuget.js +22 -0
  1003. package/dist/core/web/scrapers/nuget.js.map +1 -0
  1004. package/dist/core/web/scrapers/nvd.d.ts +7 -0
  1005. package/dist/core/web/scrapers/nvd.d.ts.map +1 -0
  1006. package/dist/core/web/scrapers/nvd.js +37 -0
  1007. package/dist/core/web/scrapers/nvd.js.map +1 -0
  1008. package/dist/core/web/scrapers/pypi.d.ts +6 -0
  1009. package/dist/core/web/scrapers/pypi.d.ts.map +1 -0
  1010. package/dist/core/web/scrapers/pypi.js +31 -0
  1011. package/dist/core/web/scrapers/pypi.js.map +1 -0
  1012. package/dist/core/web/scrapers/registro.d.ts +13 -0
  1013. package/dist/core/web/scrapers/registro.d.ts.map +1 -0
  1014. package/dist/core/web/scrapers/registro.js +65 -0
  1015. package/dist/core/web/scrapers/registro.js.map +1 -0
  1016. package/dist/core/web/scrapers/rubygems.d.ts +6 -0
  1017. package/dist/core/web/scrapers/rubygems.d.ts.map +1 -0
  1018. package/dist/core/web/scrapers/rubygems.js +23 -0
  1019. package/dist/core/web/scrapers/rubygems.js.map +1 -0
  1020. package/dist/core/web/scrapers/stackoverflow.d.ts +3 -0
  1021. package/dist/core/web/scrapers/stackoverflow.d.ts.map +1 -0
  1022. package/dist/core/web/scrapers/stackoverflow.js +46 -0
  1023. package/dist/core/web/scrapers/stackoverflow.js.map +1 -0
  1024. package/dist/core/web/scrapers/tipos.d.ts +42 -0
  1025. package/dist/core/web/scrapers/tipos.d.ts.map +1 -0
  1026. package/dist/core/web/scrapers/tipos.js +23 -0
  1027. package/dist/core/web/scrapers/tipos.js.map +1 -0
  1028. package/dist/core/web/texto.d.ts +10 -0
  1029. package/dist/core/web/texto.d.ts.map +1 -0
  1030. package/dist/core/web/texto.js +26 -0
  1031. package/dist/core/web/texto.js.map +1 -0
  1032. package/dist/core/web/tools.d.ts +91 -0
  1033. package/dist/core/web/tools.d.ts.map +1 -0
  1034. package/dist/core/web/tools.js +304 -0
  1035. package/dist/core/web/tools.js.map +1 -0
  1036. package/dist/core/wiki/almacen.d.ts +33 -0
  1037. package/dist/core/wiki/almacen.d.ts.map +1 -0
  1038. package/dist/core/wiki/almacen.js +93 -0
  1039. package/dist/core/wiki/almacen.js.map +1 -0
  1040. package/dist/core/wiki/citas.d.ts +111 -0
  1041. package/dist/core/wiki/citas.d.ts.map +1 -0
  1042. package/dist/core/wiki/citas.js +146 -0
  1043. package/dist/core/wiki/citas.js.map +1 -0
  1044. package/dist/core/workflows/agent-runner.d.ts +88 -0
  1045. package/dist/core/workflows/agent-runner.d.ts.map +1 -0
  1046. package/dist/core/workflows/agent-runner.js +312 -0
  1047. package/dist/core/workflows/agent-runner.js.map +1 -0
  1048. package/dist/core/workflows/builtins.d.ts +41 -0
  1049. package/dist/core/workflows/builtins.d.ts.map +1 -0
  1050. package/dist/core/workflows/builtins.js +283 -0
  1051. package/dist/core/workflows/builtins.js.map +1 -0
  1052. package/dist/core/workflows/contrato/esquema.d.ts +32 -0
  1053. package/dist/core/workflows/contrato/esquema.d.ts.map +1 -0
  1054. package/dist/core/workflows/contrato/esquema.js +25 -0
  1055. package/dist/core/workflows/contrato/esquema.js.map +1 -0
  1056. package/dist/core/workflows/contrato/reparar-argumentos.d.ts +69 -0
  1057. package/dist/core/workflows/contrato/reparar-argumentos.d.ts.map +1 -0
  1058. package/dist/core/workflows/contrato/reparar-argumentos.js +117 -0
  1059. package/dist/core/workflows/contrato/reparar-argumentos.js.map +1 -0
  1060. package/dist/core/workflows/contrato/validador.d.ts +30 -0
  1061. package/dist/core/workflows/contrato/validador.d.ts.map +1 -0
  1062. package/dist/core/workflows/contrato/validador.js +56 -0
  1063. package/dist/core/workflows/contrato/validador.js.map +1 -0
  1064. package/dist/core/workflows/contrato/yield.d.ts +65 -0
  1065. package/dist/core/workflows/contrato/yield.d.ts.map +1 -0
  1066. package/dist/core/workflows/contrato/yield.js +80 -0
  1067. package/dist/core/workflows/contrato/yield.js.map +1 -0
  1068. package/dist/core/workflows/goal-engine/engine.d.ts +151 -0
  1069. package/dist/core/workflows/goal-engine/engine.d.ts.map +1 -0
  1070. package/dist/core/workflows/goal-engine/engine.js +503 -0
  1071. package/dist/core/workflows/goal-engine/engine.js.map +1 -0
  1072. package/dist/core/workflows/goal-engine/errors.d.ts +7 -0
  1073. package/dist/core/workflows/goal-engine/errors.d.ts.map +1 -0
  1074. package/dist/core/workflows/goal-engine/errors.js +9 -0
  1075. package/dist/core/workflows/goal-engine/errors.js.map +1 -0
  1076. package/dist/core/workflows/goal-engine/index.d.ts +13 -0
  1077. package/dist/core/workflows/goal-engine/index.d.ts.map +1 -0
  1078. package/dist/core/workflows/goal-engine/index.js +8 -0
  1079. package/dist/core/workflows/goal-engine/index.js.map +1 -0
  1080. package/dist/core/workflows/goal-engine/persistence.d.ts +31 -0
  1081. package/dist/core/workflows/goal-engine/persistence.d.ts.map +1 -0
  1082. package/dist/core/workflows/goal-engine/persistence.js +145 -0
  1083. package/dist/core/workflows/goal-engine/persistence.js.map +1 -0
  1084. package/dist/core/workflows/goal-engine/prompts.d.ts +37 -0
  1085. package/dist/core/workflows/goal-engine/prompts.d.ts.map +1 -0
  1086. package/dist/core/workflows/goal-engine/prompts.js +131 -0
  1087. package/dist/core/workflows/goal-engine/prompts.js.map +1 -0
  1088. package/dist/core/workflows/goal-engine/state.d.ts +41 -0
  1089. package/dist/core/workflows/goal-engine/state.d.ts.map +1 -0
  1090. package/dist/core/workflows/goal-engine/state.js +397 -0
  1091. package/dist/core/workflows/goal-engine/state.js.map +1 -0
  1092. package/dist/core/workflows/goal-engine/tools.d.ts +31 -0
  1093. package/dist/core/workflows/goal-engine/tools.d.ts.map +1 -0
  1094. package/dist/core/workflows/goal-engine/tools.js +211 -0
  1095. package/dist/core/workflows/goal-engine/tools.js.map +1 -0
  1096. package/dist/core/workflows/goal-engine/types.d.ts +286 -0
  1097. package/dist/core/workflows/goal-engine/types.d.ts.map +1 -0
  1098. package/dist/core/workflows/goal-engine/types.js +17 -0
  1099. package/dist/core/workflows/goal-engine/types.js.map +1 -0
  1100. package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts +23 -0
  1101. package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts.map +1 -0
  1102. package/dist/core/workflows/goal-engine/worktree-fingerprint.js +72 -0
  1103. package/dist/core/workflows/goal-engine/worktree-fingerprint.js.map +1 -0
  1104. package/dist/core/workflows/graph-sync.d.ts +67 -0
  1105. package/dist/core/workflows/graph-sync.d.ts.map +1 -0
  1106. package/dist/core/workflows/graph-sync.js +188 -0
  1107. package/dist/core/workflows/graph-sync.js.map +1 -0
  1108. package/dist/core/workflows/graph.d.ts +143 -0
  1109. package/dist/core/workflows/graph.d.ts.map +1 -0
  1110. package/dist/core/workflows/graph.js +319 -0
  1111. package/dist/core/workflows/graph.js.map +1 -0
  1112. package/dist/core/workflows/index.d.ts +26 -0
  1113. package/dist/core/workflows/index.d.ts.map +1 -0
  1114. package/dist/core/workflows/index.js +18 -0
  1115. package/dist/core/workflows/index.js.map +1 -0
  1116. package/dist/core/workflows/journal.d.ts +68 -0
  1117. package/dist/core/workflows/journal.d.ts.map +1 -0
  1118. package/dist/core/workflows/journal.js +83 -0
  1119. package/dist/core/workflows/journal.js.map +1 -0
  1120. package/dist/core/workflows/manager.d.ts +122 -0
  1121. package/dist/core/workflows/manager.d.ts.map +1 -0
  1122. package/dist/core/workflows/manager.js +351 -0
  1123. package/dist/core/workflows/manager.js.map +1 -0
  1124. package/dist/core/workflows/resolve-script.d.ts +35 -0
  1125. package/dist/core/workflows/resolve-script.d.ts.map +1 -0
  1126. package/dist/core/workflows/resolve-script.js +66 -0
  1127. package/dist/core/workflows/resolve-script.js.map +1 -0
  1128. package/dist/core/workflows/runtime.d.ts +62 -0
  1129. package/dist/core/workflows/runtime.d.ts.map +1 -0
  1130. package/dist/core/workflows/runtime.js +380 -0
  1131. package/dist/core/workflows/runtime.js.map +1 -0
  1132. package/dist/core/workflows/save-as-skill.d.ts +27 -0
  1133. package/dist/core/workflows/save-as-skill.d.ts.map +1 -0
  1134. package/dist/core/workflows/save-as-skill.js +54 -0
  1135. package/dist/core/workflows/save-as-skill.js.map +1 -0
  1136. package/dist/core/workflows/shared-store.d.ts +31 -0
  1137. package/dist/core/workflows/shared-store.d.ts.map +1 -0
  1138. package/dist/core/workflows/shared-store.js +80 -0
  1139. package/dist/core/workflows/shared-store.js.map +1 -0
  1140. package/dist/core/workflows/subagent-host.d.ts +50 -0
  1141. package/dist/core/workflows/subagent-host.d.ts.map +1 -0
  1142. package/dist/core/workflows/subagent-host.js +225 -0
  1143. package/dist/core/workflows/subagent-host.js.map +1 -0
  1144. package/dist/core/workflows/tool-workflow.d.ts +22 -0
  1145. package/dist/core/workflows/tool-workflow.d.ts.map +1 -0
  1146. package/dist/core/workflows/tool-workflow.js +120 -0
  1147. package/dist/core/workflows/tool-workflow.js.map +1 -0
  1148. package/dist/core/workflows/types.d.ts +191 -0
  1149. package/dist/core/workflows/types.d.ts.map +1 -0
  1150. package/dist/core/workflows/types.js +26 -0
  1151. package/dist/core/workflows/types.js.map +1 -0
  1152. package/dist/core/workflows/worktree.d.ts +42 -0
  1153. package/dist/core/workflows/worktree.d.ts.map +1 -0
  1154. package/dist/core/workflows/worktree.js +107 -0
  1155. package/dist/core/workflows/worktree.js.map +1 -0
  1156. package/dist/extensions/llama/index.d.ts.map +1 -1
  1157. package/dist/extensions/llama/index.js +2 -0
  1158. package/dist/extensions/llama/index.js.map +1 -1
  1159. package/dist/extensions/llama/provider.d.ts.map +1 -1
  1160. package/dist/extensions/llama/provider.js +6 -2
  1161. package/dist/extensions/llama/provider.js.map +1 -1
  1162. package/dist/extensions/remoto/index.d.ts +22 -0
  1163. package/dist/extensions/remoto/index.d.ts.map +1 -0
  1164. package/dist/extensions/remoto/index.js +54 -0
  1165. package/dist/extensions/remoto/index.js.map +1 -0
  1166. package/dist/index.d.ts +1 -13
  1167. package/dist/index.d.ts.map +1 -1
  1168. package/dist/index.js +7 -13
  1169. package/dist/index.js.map +1 -1
  1170. package/dist/main.d.ts +4 -0
  1171. package/dist/main.d.ts.map +1 -1
  1172. package/dist/main.js +26 -15
  1173. package/dist/main.js.map +1 -1
  1174. package/dist/migrations.d.ts.map +1 -1
  1175. package/dist/migrations.js +4 -3
  1176. package/dist/migrations.js.map +1 -1
  1177. package/dist/modes/acp/acp-mode.d.ts +42 -0
  1178. package/dist/modes/acp/acp-mode.d.ts.map +1 -0
  1179. package/dist/modes/acp/acp-mode.js +190 -0
  1180. package/dist/modes/acp/acp-mode.js.map +1 -0
  1181. package/dist/modes/acp/events.d.ts +74 -0
  1182. package/dist/modes/acp/events.d.ts.map +1 -0
  1183. package/dist/modes/acp/events.js +116 -0
  1184. package/dist/modes/acp/events.js.map +1 -0
  1185. package/dist/modes/interactive/components/home-screen.d.ts.map +1 -1
  1186. package/dist/modes/interactive/components/home-screen.js +2 -2
  1187. package/dist/modes/interactive/components/home-screen.js.map +1 -1
  1188. package/dist/modes/interactive/components/model-selector.d.ts +9 -3
  1189. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  1190. package/dist/modes/interactive/components/model-selector.js +56 -12
  1191. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  1192. package/dist/modes/interactive/components/prompt-optimization.d.ts +16 -0
  1193. package/dist/modes/interactive/components/prompt-optimization.d.ts.map +1 -0
  1194. package/dist/modes/interactive/components/prompt-optimization.js +46 -0
  1195. package/dist/modes/interactive/components/prompt-optimization.js.map +1 -0
  1196. package/dist/modes/interactive/components/settings-selector.d.ts +19 -2
  1197. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  1198. package/dist/modes/interactive/components/settings-selector.js +180 -56
  1199. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  1200. package/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
  1201. package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
  1202. package/dist/modes/interactive/components/settings-submenu.js +165 -0
  1203. package/dist/modes/interactive/components/settings-submenu.js.map +1 -0
  1204. package/dist/modes/interactive/components/thinking-selector.d.ts +15 -3
  1205. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  1206. package/dist/modes/interactive/components/thinking-selector.js +74 -17
  1207. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  1208. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  1209. package/dist/modes/interactive/external-editor.js +2 -1
  1210. package/dist/modes/interactive/external-editor.js.map +1 -1
  1211. package/dist/modes/interactive/interactive-mode.d.ts +21 -1
  1212. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  1213. package/dist/modes/interactive/interactive-mode.js +709 -75
  1214. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  1215. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  1216. package/dist/modes/interactive/theme/theme.js +4 -3
  1217. package/dist/modes/interactive/theme/theme.js.map +1 -1
  1218. package/dist/modes/json-event.d.ts +16 -13
  1219. package/dist/modes/json-event.d.ts.map +1 -1
  1220. package/dist/modes/json-event.js +20 -6
  1221. package/dist/modes/json-event.js.map +1 -1
  1222. package/dist/modes/print-mode.d.ts.map +1 -1
  1223. package/dist/modes/print-mode.js +11 -0
  1224. package/dist/modes/print-mode.js.map +1 -1
  1225. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  1226. package/dist/modes/rpc/rpc-mode.js +173 -0
  1227. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  1228. package/dist/modes/rpc/rpc-types.d.ts +29 -0
  1229. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  1230. package/dist/modes/rpc/rpc-types.js.map +1 -1
  1231. package/dist/package-manager-cli.d.ts.map +1 -1
  1232. package/dist/package-manager-cli.js +27 -5
  1233. package/dist/package-manager-cli.js.map +1 -1
  1234. package/dist/server/attach.d.ts +56 -0
  1235. package/dist/server/attach.d.ts.map +1 -0
  1236. package/dist/server/attach.js +130 -0
  1237. package/dist/server/attach.js.map +1 -0
  1238. package/dist/server/extension-ops.d.ts +40 -0
  1239. package/dist/server/extension-ops.d.ts.map +1 -0
  1240. package/dist/server/extension-ops.js +146 -0
  1241. package/dist/server/extension-ops.js.map +1 -0
  1242. package/dist/server/pi-server-service.d.ts +85 -0
  1243. package/dist/server/pi-server-service.d.ts.map +1 -0
  1244. package/dist/server/pi-server-service.js +213 -0
  1245. package/dist/server/pi-server-service.js.map +1 -0
  1246. package/dist/server/scheduler-tick.d.ts +32 -0
  1247. package/dist/server/scheduler-tick.d.ts.map +1 -0
  1248. package/dist/server/scheduler-tick.js +47 -0
  1249. package/dist/server/scheduler-tick.js.map +1 -0
  1250. package/dist/server/serve.d.ts +25 -0
  1251. package/dist/server/serve.d.ts.map +1 -0
  1252. package/dist/server/serve.js +83 -0
  1253. package/dist/server/serve.js.map +1 -0
  1254. package/dist/server/transcript.d.ts +38 -0
  1255. package/dist/server/transcript.d.ts.map +1 -0
  1256. package/dist/server/transcript.js +176 -0
  1257. package/dist/server/transcript.js.map +1 -0
  1258. package/dist/skills/ada-engine/SKILL.md +153 -0
  1259. package/dist/skills/skill-creator/SKILL.md +90 -0
  1260. package/dist/telegram/api.d.ts +75 -0
  1261. package/dist/telegram/api.d.ts.map +1 -0
  1262. package/dist/telegram/api.js +104 -0
  1263. package/dist/telegram/api.js.map +1 -0
  1264. package/dist/telegram/bridge.d.ts +85 -0
  1265. package/dist/telegram/bridge.d.ts.map +1 -0
  1266. package/dist/telegram/bridge.js +182 -0
  1267. package/dist/telegram/bridge.js.map +1 -0
  1268. package/dist/telegram/journal.d.ts +67 -0
  1269. package/dist/telegram/journal.d.ts.map +1 -0
  1270. package/dist/telegram/journal.js +119 -0
  1271. package/dist/telegram/journal.js.map +1 -0
  1272. package/dist/telegram/servidor.d.ts +15 -0
  1273. package/dist/telegram/servidor.d.ts.map +1 -0
  1274. package/dist/telegram/servidor.js +74 -0
  1275. package/dist/telegram/servidor.js.map +1 -0
  1276. package/dist/utils/frontmatter.d.ts.map +1 -1
  1277. package/dist/utils/frontmatter.js +2 -1
  1278. package/dist/utils/frontmatter.js.map +1 -1
  1279. package/dist/utils/management-http.d.ts +5 -3
  1280. package/dist/utils/management-http.d.ts.map +1 -1
  1281. package/dist/utils/management-http.js +14 -10
  1282. package/dist/utils/management-http.js.map +1 -1
  1283. package/dist/utils/shell.d.ts +11 -0
  1284. package/dist/utils/shell.d.ts.map +1 -1
  1285. package/dist/utils/shell.js +11 -0
  1286. package/dist/utils/shell.js.map +1 -1
  1287. package/dist/utils/text.d.ts +8 -0
  1288. package/dist/utils/text.d.ts.map +1 -0
  1289. package/dist/utils/text.js +9 -0
  1290. package/dist/utils/text.js.map +1 -0
  1291. package/dist/utils/version-check.d.ts.map +1 -1
  1292. package/dist/utils/version-check.js +29 -1
  1293. package/dist/utils/version-check.js.map +1 -1
  1294. package/docs/compaction.md +25 -10
  1295. package/docs/compliance.md +241 -0
  1296. package/docs/containerization.md +24 -24
  1297. package/docs/custom-provider.md +15 -12
  1298. package/docs/development.md +47 -10
  1299. package/docs/docs.json +14 -2
  1300. package/docs/environment-variables.md +20 -17
  1301. package/docs/extensions.md +62 -51
  1302. package/docs/index.md +15 -21
  1303. package/docs/json.md +10 -5
  1304. package/docs/keybindings.md +5 -5
  1305. package/docs/llama-cpp.md +9 -7
  1306. package/docs/models.md +18 -12
  1307. package/docs/packages.md +45 -45
  1308. package/docs/prompt-templates.md +5 -5
  1309. package/docs/providers.md +12 -12
  1310. package/docs/quickstart.md +39 -39
  1311. package/docs/rpc.md +21 -15
  1312. package/docs/sdk.md +38 -38
  1313. package/docs/security.md +26 -21
  1314. package/docs/session-format.md +7 -7
  1315. package/docs/sessions.md +14 -14
  1316. package/docs/settings.md +47 -22
  1317. package/docs/shell-aliases.md +2 -2
  1318. package/docs/skills.md +14 -13
  1319. package/docs/terminal-setup.md +14 -14
  1320. package/docs/termux.md +7 -7
  1321. package/docs/themes.md +11 -11
  1322. package/docs/tmux.md +4 -4
  1323. package/docs/tui.md +3 -3
  1324. package/docs/usage.md +54 -54
  1325. package/docs/windows.md +2 -2
  1326. package/examples/extensions/border-status-editor.ts +1 -1
  1327. package/examples/extensions/git-checkpoint.ts +2 -2
  1328. package/examples/extensions/notify.ts +3 -1
  1329. package/examples/extensions/subagent/README.md +1 -1
  1330. package/examples/extensions/subagent/index.ts +6 -1
  1331. package/examples/extensions/titlebar-spinner.ts +1 -1
  1332. package/examples/rpc-extension-ui.ts +1 -1
  1333. package/examples/sdk/06-extensions.ts +1 -1
  1334. package/examples/sdk/12-full-control.ts +9 -0
  1335. package/examples/sdk/README.md +1 -1
  1336. package/npm-shrinkwrap.json +35 -261
  1337. package/package.json +9 -3
@@ -0,0 +1,30 @@
1
+ export interface ResultadoValidacion<T> {
2
+ valido: boolean;
3
+ /** El valor final, ya reparado si hizo falta. `null` si nunca llegó a validar. */
4
+ datos: T | null;
5
+ /** Reintentos GASTADOS pidiendo corrección (0 = valida a la primera). */
6
+ intentos: number;
7
+ /** true si Clean/Convert tuvieron que tocar algo en la ronda que validó. */
8
+ reparado: boolean;
9
+ /** Errores de la ÚLTIMA ronda. Ausente si `valido`. */
10
+ errores?: string[];
11
+ }
12
+ export interface OpcionesValidacion {
13
+ /** JSON Schema (typebox u objeto plano equivalente) declarado por el agente o la llamada. */
14
+ esquema: unknown;
15
+ textoInicial: string;
16
+ /** Reintentos ADICIONALES tras el primer intento (que no cuenta como reintento). */
17
+ maxReintentos: number;
18
+ /** Extrae el valor candidato de un texto de respuesta (JSON en prosa, fences...). */
19
+ extraer: (texto: string) => unknown | undefined;
20
+ /** Manda `mensaje` (el error concreto) a la sesión y devuelve el texto de la siguiente respuesta. */
21
+ pedirCorreccion: (mensaje: string) => Promise<string>;
22
+ }
23
+ /**
24
+ * Valida `textoInicial` contra `esquema`; si no valida, pide corrección hasta
25
+ * `maxReintentos` veces con el error CONCRETO de la ronda anterior. Devuelve
26
+ * el resultado de la última ronda — `valido: false` tras agotar los
27
+ * reintentos, nunca datos fabricados a partir de una salida rota.
28
+ */
29
+ export declare function validarConReintentos<T>(opciones: OpcionesValidacion): Promise<ResultadoValidacion<T>>;
30
+ //# sourceMappingURL=validador.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validador.d.ts","sourceRoot":"","sources":["../../../../src/core/workflows/contrato/validador.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,mFAAkF;IAClF,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChB,0EAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA4E;IAC5E,QAAQ,EAAE,OAAO,CAAC;IAClB,wDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IAClC,6FAA6F;IAC7F,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,oFAAoF;IACpF,aAAa,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,CAAC;IAChD,sGAAqG;IACrG,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACtD;AA2BD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,EAAE,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CA4B3G","sourcesContent":["/**\n * Si la salida de un subagente no valida contra su esquema, se REINTENTA con\n * el error concreto — nunca se devuelve la salida rota como si fuera buena\n * (esa es la garantía; ver la regla del proyecto sobre \"no pude\" vs \"no hay\").\n *\n * El bucle vive aquí, fuera de agent-runner.ts, para poder probarlo con\n * dobles puros (sin sesión real ni typebox real necesariamente): `extraer` y\n * `pedirCorreccion` son las únicas piezas inyectadas, y son justo las dos que\n * agent-runner.ts sustituye por la extracción real y por reenviar un mensaje\n * a la sesión del subagente.\n */\nimport type { TSchema } from \"typebox\";\nimport { comprobar, esEsquemaValido } from \"./esquema.ts\";\nimport { repararConEsquema } from \"./reparar-argumentos.ts\";\n\nexport interface ResultadoValidacion<T> {\n\tvalido: boolean;\n\t/** El valor final, ya reparado si hizo falta. `null` si nunca llegó a validar. */\n\tdatos: T | null;\n\t/** Reintentos GASTADOS pidiendo corrección (0 = valida a la primera). */\n\tintentos: number;\n\t/** true si Clean/Convert tuvieron que tocar algo en la ronda que validó. */\n\treparado: boolean;\n\t/** Errores de la ÚLTIMA ronda. Ausente si `valido`. */\n\terrores?: string[];\n}\n\nexport interface OpcionesValidacion {\n\t/** JSON Schema (typebox u objeto plano equivalente) declarado por el agente o la llamada. */\n\tesquema: unknown;\n\ttextoInicial: string;\n\t/** Reintentos ADICIONALES tras el primer intento (que no cuenta como reintento). */\n\tmaxReintentos: number;\n\t/** Extrae el valor candidato de un texto de respuesta (JSON en prosa, fences...). */\n\textraer: (texto: string) => unknown | undefined;\n\t/** Manda `mensaje` (el error concreto) a la sesión y devuelve el texto de la siguiente respuesta. */\n\tpedirCorreccion: (mensaje: string) => Promise<string>;\n}\n\nfunction mensajeDeError(errores: string[]): string {\n\treturn [\n\t\t\"La salida no cumple el formato pedido:\",\n\t\t...errores.map((e) => `- ${e}`),\n\t\t\"Corrígela y responde SOLO con la salida corregida en el formato pedido, nada más.\",\n\t].join(\"\\n\");\n}\n\ninterface Intento<T> {\n\tdatos: T | null;\n\treparado: boolean;\n\terrores: string[];\n}\n\nfunction intentar<T>(esquema: TSchema, texto: string, extraer: (texto: string) => unknown | undefined): Intento<T> {\n\tconst extraido = extraer(texto);\n\tif (extraido === undefined) {\n\t\treturn { datos: null, reparado: false, errores: [\"no se encontró una salida en formato JSON en la respuesta\"] };\n\t}\n\tconst { valor, reparado } = repararConEsquema(esquema, extraido);\n\tconst resultado = comprobar(esquema, valor);\n\tif (resultado.valida) return { datos: valor as T, reparado, errores: [] };\n\treturn { datos: null, reparado, errores: resultado.errores };\n}\n\n/**\n * Valida `textoInicial` contra `esquema`; si no valida, pide corrección hasta\n * `maxReintentos` veces con el error CONCRETO de la ronda anterior. Devuelve\n * el resultado de la última ronda — `valido: false` tras agotar los\n * reintentos, nunca datos fabricados a partir de una salida rota.\n */\nexport async function validarConReintentos<T>(opciones: OpcionesValidacion): Promise<ResultadoValidacion<T>> {\n\tif (!esEsquemaValido(opciones.esquema)) {\n\t\t// Un esquema declarado pero mal formado no es \"sin esquema\" (eso lo\n\t\t// decide el caller no llamando a esta función): es un contrato roto, y\n\t\t// fingir que valida sería peor que decir que no se pudo.\n\t\treturn {\n\t\t\tvalido: false,\n\t\t\tdatos: null,\n\t\t\tintentos: 0,\n\t\t\treparado: false,\n\t\t\terrores: [\"el esquema declarado no es un JSON Schema válido\"],\n\t\t};\n\t}\n\tconst esquema = opciones.esquema;\n\tlet intento = intentar<T>(esquema, opciones.textoInicial, opciones.extraer);\n\tlet intentos = 0;\n\twhile (intento.errores.length > 0 && intentos < opciones.maxReintentos) {\n\t\tintentos++;\n\t\tconst texto = await opciones.pedirCorreccion(mensajeDeError(intento.errores));\n\t\tintento = intentar<T>(esquema, texto, opciones.extraer);\n\t}\n\treturn {\n\t\tvalido: intento.errores.length === 0,\n\t\tdatos: intento.datos,\n\t\tintentos,\n\t\treparado: intento.reparado,\n\t\terrores: intento.errores.length > 0 ? intento.errores : undefined,\n\t};\n}\n"]}
@@ -0,0 +1,56 @@
1
+ import { comprobar, esEsquemaValido } from "./esquema.js";
2
+ import { repararConEsquema } from "./reparar-argumentos.js";
3
+ function mensajeDeError(errores) {
4
+ return [
5
+ "La salida no cumple el formato pedido:",
6
+ ...errores.map((e) => `- ${e}`),
7
+ "Corrígela y responde SOLO con la salida corregida en el formato pedido, nada más.",
8
+ ].join("\n");
9
+ }
10
+ function intentar(esquema, texto, extraer) {
11
+ const extraido = extraer(texto);
12
+ if (extraido === undefined) {
13
+ return { datos: null, reparado: false, errores: ["no se encontró una salida en formato JSON en la respuesta"] };
14
+ }
15
+ const { valor, reparado } = repararConEsquema(esquema, extraido);
16
+ const resultado = comprobar(esquema, valor);
17
+ if (resultado.valida)
18
+ return { datos: valor, reparado, errores: [] };
19
+ return { datos: null, reparado, errores: resultado.errores };
20
+ }
21
+ /**
22
+ * Valida `textoInicial` contra `esquema`; si no valida, pide corrección hasta
23
+ * `maxReintentos` veces con el error CONCRETO de la ronda anterior. Devuelve
24
+ * el resultado de la última ronda — `valido: false` tras agotar los
25
+ * reintentos, nunca datos fabricados a partir de una salida rota.
26
+ */
27
+ export async function validarConReintentos(opciones) {
28
+ if (!esEsquemaValido(opciones.esquema)) {
29
+ // Un esquema declarado pero mal formado no es "sin esquema" (eso lo
30
+ // decide el caller no llamando a esta función): es un contrato roto, y
31
+ // fingir que valida sería peor que decir que no se pudo.
32
+ return {
33
+ valido: false,
34
+ datos: null,
35
+ intentos: 0,
36
+ reparado: false,
37
+ errores: ["el esquema declarado no es un JSON Schema válido"],
38
+ };
39
+ }
40
+ const esquema = opciones.esquema;
41
+ let intento = intentar(esquema, opciones.textoInicial, opciones.extraer);
42
+ let intentos = 0;
43
+ while (intento.errores.length > 0 && intentos < opciones.maxReintentos) {
44
+ intentos++;
45
+ const texto = await opciones.pedirCorreccion(mensajeDeError(intento.errores));
46
+ intento = intentar(esquema, texto, opciones.extraer);
47
+ }
48
+ return {
49
+ valido: intento.errores.length === 0,
50
+ datos: intento.datos,
51
+ intentos,
52
+ reparado: intento.reparado,
53
+ errores: intento.errores.length > 0 ? intento.errores : undefined,
54
+ };
55
+ }
56
+ //# sourceMappingURL=validador.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validador.js","sourceRoot":"","sources":["../../../../src/core/workflows/contrato/validador.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AA0B5D,SAAS,cAAc,CAAC,OAAiB,EAAU;IAClD,OAAO;QACN,wCAAwC;QACxC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,qFAAmF;KACnF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAAA,CACb;AAQD,SAAS,QAAQ,CAAI,OAAgB,EAAE,KAAa,EAAE,OAA+C,EAAc;IAClH,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,4DAA2D,CAAC,EAAE,CAAC;IACjH,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5C,IAAI,SAAS,CAAC,MAAM;QAAE,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC1E,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC;AAAA,CAC7D;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAI,QAA4B,EAAmC;IAC5G,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,oEAAoE;QACpE,wEAAuE;QACvE,0DAAyD;QACzD,OAAO;YACN,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,CAAC,mDAAkD,CAAC;SAC7D,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IACjC,IAAI,OAAO,GAAG,QAAQ,CAAI,OAAO,EAAE,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5E,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QACxE,QAAQ,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9E,OAAO,GAAG,QAAQ,CAAI,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IACD,OAAO;QACN,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QACpC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ;QACR,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;KACjE,CAAC;AAAA,CACF","sourcesContent":["/**\n * Si la salida de un subagente no valida contra su esquema, se REINTENTA con\n * el error concreto — nunca se devuelve la salida rota como si fuera buena\n * (esa es la garantía; ver la regla del proyecto sobre \"no pude\" vs \"no hay\").\n *\n * El bucle vive aquí, fuera de agent-runner.ts, para poder probarlo con\n * dobles puros (sin sesión real ni typebox real necesariamente): `extraer` y\n * `pedirCorreccion` son las únicas piezas inyectadas, y son justo las dos que\n * agent-runner.ts sustituye por la extracción real y por reenviar un mensaje\n * a la sesión del subagente.\n */\nimport type { TSchema } from \"typebox\";\nimport { comprobar, esEsquemaValido } from \"./esquema.ts\";\nimport { repararConEsquema } from \"./reparar-argumentos.ts\";\n\nexport interface ResultadoValidacion<T> {\n\tvalido: boolean;\n\t/** El valor final, ya reparado si hizo falta. `null` si nunca llegó a validar. */\n\tdatos: T | null;\n\t/** Reintentos GASTADOS pidiendo corrección (0 = valida a la primera). */\n\tintentos: number;\n\t/** true si Clean/Convert tuvieron que tocar algo en la ronda que validó. */\n\treparado: boolean;\n\t/** Errores de la ÚLTIMA ronda. Ausente si `valido`. */\n\terrores?: string[];\n}\n\nexport interface OpcionesValidacion {\n\t/** JSON Schema (typebox u objeto plano equivalente) declarado por el agente o la llamada. */\n\tesquema: unknown;\n\ttextoInicial: string;\n\t/** Reintentos ADICIONALES tras el primer intento (que no cuenta como reintento). */\n\tmaxReintentos: number;\n\t/** Extrae el valor candidato de un texto de respuesta (JSON en prosa, fences...). */\n\textraer: (texto: string) => unknown | undefined;\n\t/** Manda `mensaje` (el error concreto) a la sesión y devuelve el texto de la siguiente respuesta. */\n\tpedirCorreccion: (mensaje: string) => Promise<string>;\n}\n\nfunction mensajeDeError(errores: string[]): string {\n\treturn [\n\t\t\"La salida no cumple el formato pedido:\",\n\t\t...errores.map((e) => `- ${e}`),\n\t\t\"Corrígela y responde SOLO con la salida corregida en el formato pedido, nada más.\",\n\t].join(\"\\n\");\n}\n\ninterface Intento<T> {\n\tdatos: T | null;\n\treparado: boolean;\n\terrores: string[];\n}\n\nfunction intentar<T>(esquema: TSchema, texto: string, extraer: (texto: string) => unknown | undefined): Intento<T> {\n\tconst extraido = extraer(texto);\n\tif (extraido === undefined) {\n\t\treturn { datos: null, reparado: false, errores: [\"no se encontró una salida en formato JSON en la respuesta\"] };\n\t}\n\tconst { valor, reparado } = repararConEsquema(esquema, extraido);\n\tconst resultado = comprobar(esquema, valor);\n\tif (resultado.valida) return { datos: valor as T, reparado, errores: [] };\n\treturn { datos: null, reparado, errores: resultado.errores };\n}\n\n/**\n * Valida `textoInicial` contra `esquema`; si no valida, pide corrección hasta\n * `maxReintentos` veces con el error CONCRETO de la ronda anterior. Devuelve\n * el resultado de la última ronda — `valido: false` tras agotar los\n * reintentos, nunca datos fabricados a partir de una salida rota.\n */\nexport async function validarConReintentos<T>(opciones: OpcionesValidacion): Promise<ResultadoValidacion<T>> {\n\tif (!esEsquemaValido(opciones.esquema)) {\n\t\t// Un esquema declarado pero mal formado no es \"sin esquema\" (eso lo\n\t\t// decide el caller no llamando a esta función): es un contrato roto, y\n\t\t// fingir que valida sería peor que decir que no se pudo.\n\t\treturn {\n\t\t\tvalido: false,\n\t\t\tdatos: null,\n\t\t\tintentos: 0,\n\t\t\treparado: false,\n\t\t\terrores: [\"el esquema declarado no es un JSON Schema válido\"],\n\t\t};\n\t}\n\tconst esquema = opciones.esquema;\n\tlet intento = intentar<T>(esquema, opciones.textoInicial, opciones.extraer);\n\tlet intentos = 0;\n\twhile (intento.errores.length > 0 && intentos < opciones.maxReintentos) {\n\t\tintentos++;\n\t\tconst texto = await opciones.pedirCorreccion(mensajeDeError(intento.errores));\n\t\tintento = intentar<T>(esquema, texto, opciones.extraer);\n\t}\n\treturn {\n\t\tvalido: intento.errores.length === 0,\n\t\tdatos: intento.datos,\n\t\tintentos,\n\t\treparado: intento.reparado,\n\t\terrores: intento.errores.length > 0 ? intento.errores : undefined,\n\t};\n}\n"]}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Entrega incremental de resultados de un subagente.
3
+ *
4
+ * La tool `yield` que un subagente puede llamar varias veces durante su turno
5
+ * — cada llamada entrega UN hallazgo, en cuanto se produce, en vez de que el
6
+ * llamador tenga que esperar a que el subagente termine del todo.
7
+ *
8
+ * Y el YIELD FINAL FORZADO: si el subagente se descarrila (error o timeout)
9
+ * DESPUÉS de haber entregado algo, ese algo se devuelve en vez de perderse.
10
+ * Lo conecta agent-runner.ts, en el catch de `runOnce` — ver la cabecera de
11
+ * ese fichero para el porqué de dónde vive el enganche.
12
+ *
13
+ * NO cubre el abort (`signal.aborted`): una cancelación explícita del caller
14
+ * sigue devolviendo `null` sin hallazgos, igual que hacía antes de este
15
+ * contrato para un run completo y válido — cancelar significa "para del
16
+ * todo", no "dame lo que tengas". Ver el guard en agent-runner.ts.
17
+ */
18
+ import type { Static } from "typebox";
19
+ import { Type } from "typebox";
20
+ import type { ToolDefinition } from "../../extensions/types.ts";
21
+ export interface HallazgoParcial {
22
+ /** Orden de entrega dentro del run (0-based). */
23
+ indice: number;
24
+ /** `Date.now()` en el momento EXACTO de la llamada — es lo que demuestra "según se produce". */
25
+ timestampMs: number;
26
+ etiqueta: string;
27
+ datos: unknown;
28
+ confianza?: number;
29
+ }
30
+ /** Buffer mutable de hallazgos de UN run de subagente. Vive en el closure de `runOnce`. */
31
+ export declare class BufferDeHallazgos {
32
+ private hallazgos;
33
+ empujar(entrada: Omit<HallazgoParcial, "indice" | "timestampMs">): HallazgoParcial;
34
+ get longitud(): number;
35
+ todos(): HallazgoParcial[];
36
+ }
37
+ export declare const PARAMETROS_YIELD: Type.TObject<{
38
+ etiqueta: Type.TString;
39
+ datos: Type.TAny;
40
+ confianza: Type.TOptional<Type.TNumber>;
41
+ }>;
42
+ export type ParametrosYield = Static<typeof PARAMETROS_YIELD>;
43
+ /**
44
+ * Crea la tool `yield` de un subagente.
45
+ *
46
+ * `onEntrega` se llama de forma SÍNCRONA, en cuanto el subagente hace la
47
+ * llamada — es lo que permite que el llamador reciba cada hallazgo EN CUANTO
48
+ * se produce, no todos juntos al terminar.
49
+ *
50
+ * `prepareArguments` repara argumentos mal formados (campo de más,
51
+ * `confianza` como cadena, `datos` doblemente serializado) antes de que la
52
+ * validación de la tool los rechace y le cueste un turno al subagente.
53
+ */
54
+ export declare function crearHerramientaYield(opciones: {
55
+ buffer: BufferDeHallazgos;
56
+ onEntrega?: (hallazgo: HallazgoParcial) => void;
57
+ }): ToolDefinition<typeof PARAMETROS_YIELD>;
58
+ export interface ResultadoIncremental {
59
+ /** Marca que este resultado viene de un YIELD FINAL FORZADO, no de una respuesta final normal. */
60
+ parcial: true;
61
+ hallazgos: HallazgoParcial[];
62
+ }
63
+ /** Empaqueta el buffer como el resultado de un YIELD FINAL FORZADO (subagente descarrilado). */
64
+ export declare function ensamblarResultadoIncremental(buffer: BufferDeHallazgos): ResultadoIncremental;
65
+ //# sourceMappingURL=yield.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yield.d.ts","sourceRoot":"","sources":["../../../../src/core/workflows/contrato/yield.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,KAAK,EAAmB,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGjF,MAAM,WAAW,eAAe;IAC/B,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,mGAAgG;IAChG,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,2FAA2F;AAC3F,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,SAAS,CAAyB;IAE1C,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,aAAa,CAAC,GAAG,eAAe,CAIjF;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,KAAK,IAAI,eAAe,EAAE,CAEzB;CACD;AAED,eAAO,MAAM,gBAAgB;;;;EAS5B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE9D;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE;IAC/C,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,CAAC;CAChD,GAAG,cAAc,CAAC,OAAO,gBAAgB,CAAC,CAyB1C;AAED,MAAM,WAAW,oBAAoB;IACpC,kGAAkG;IAClG,OAAO,EAAE,IAAI,CAAC;IACd,SAAS,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,gGAAgG;AAChG,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,iBAAiB,GAAG,oBAAoB,CAE7F","sourcesContent":["/**\n * Entrega incremental de resultados de un subagente.\n *\n * La tool `yield` que un subagente puede llamar varias veces durante su turno\n * — cada llamada entrega UN hallazgo, en cuanto se produce, en vez de que el\n * llamador tenga que esperar a que el subagente termine del todo.\n *\n * Y el YIELD FINAL FORZADO: si el subagente se descarrila (error o timeout)\n * DESPUÉS de haber entregado algo, ese algo se devuelve en vez de perderse.\n * Lo conecta agent-runner.ts, en el catch de `runOnce` — ver la cabecera de\n * ese fichero para el porqué de dónde vive el enganche.\n *\n * NO cubre el abort (`signal.aborted`): una cancelación explícita del caller\n * sigue devolviendo `null` sin hallazgos, igual que hacía antes de este\n * contrato para un run completo y válido — cancelar significa \"para del\n * todo\", no \"dame lo que tengas\". Ver el guard en agent-runner.ts.\n */\n\nimport type { Static } from \"typebox\";\nimport { Type } from \"typebox\";\nimport type { AgentToolResult, ToolDefinition } from \"../../extensions/types.ts\";\nimport { repararArgumentos } from \"./reparar-argumentos.ts\";\n\nexport interface HallazgoParcial {\n\t/** Orden de entrega dentro del run (0-based). */\n\tindice: number;\n\t/** `Date.now()` en el momento EXACTO de la llamada — es lo que demuestra \"según se produce\". */\n\ttimestampMs: number;\n\tetiqueta: string;\n\tdatos: unknown;\n\tconfianza?: number;\n}\n\n/** Buffer mutable de hallazgos de UN run de subagente. Vive en el closure de `runOnce`. */\nexport class BufferDeHallazgos {\n\tprivate hallazgos: HallazgoParcial[] = [];\n\n\tempujar(entrada: Omit<HallazgoParcial, \"indice\" | \"timestampMs\">): HallazgoParcial {\n\t\tconst hallazgo: HallazgoParcial = { ...entrada, indice: this.hallazgos.length, timestampMs: Date.now() };\n\t\tthis.hallazgos.push(hallazgo);\n\t\treturn hallazgo;\n\t}\n\n\tget longitud(): number {\n\t\treturn this.hallazgos.length;\n\t}\n\n\ttodos(): HallazgoParcial[] {\n\t\treturn [...this.hallazgos];\n\t}\n}\n\nexport const PARAMETROS_YIELD = Type.Object(\n\t{\n\t\tetiqueta: Type.String({ description: \"Nombre corto del hallazgo, p.ej. 'sql-injection-login.ts'.\" }),\n\t\tdatos: Type.Any({ description: \"El hallazgo en sí: cualquier JSON serializable (objeto, texto, lista...).\" }),\n\t\tconfianza: Type.Optional(\n\t\t\tType.Number({ minimum: 0, maximum: 1, description: \"Confianza del hallazgo, de 0 a 1. Opcional.\" }),\n\t\t),\n\t},\n\t{ additionalProperties: false },\n);\n\nexport type ParametrosYield = Static<typeof PARAMETROS_YIELD>;\n\n/**\n * Crea la tool `yield` de un subagente.\n *\n * `onEntrega` se llama de forma SÍNCRONA, en cuanto el subagente hace la\n * llamada — es lo que permite que el llamador reciba cada hallazgo EN CUANTO\n * se produce, no todos juntos al terminar.\n *\n * `prepareArguments` repara argumentos mal formados (campo de más,\n * `confianza` como cadena, `datos` doblemente serializado) antes de que la\n * validación de la tool los rechace y le cueste un turno al subagente.\n */\nexport function crearHerramientaYield(opciones: {\n\tbuffer: BufferDeHallazgos;\n\tonEntrega?: (hallazgo: HallazgoParcial) => void;\n}): ToolDefinition<typeof PARAMETROS_YIELD> {\n\treturn {\n\t\tname: \"yield\",\n\t\tlabel: \"Entregar hallazgo\",\n\t\tdescription:\n\t\t\t\"Entrega un resultado parcial EN CUANTO lo produces, sin esperar a terminar la tarea entera. Llámala una vez por cada hallazgo — el llamador los va recibiendo según los produces, no todos juntos al final. Si te quedas sin turnos o algo falla a mitad, lo que ya hayas entregado con yield no se pierde.\",\n\t\tpromptSnippet: \"yield: entrega un hallazgo parcial ahora mismo, sin esperar al final de la tarea\",\n\t\tpromptGuidelines: [\n\t\t\t\"Llama a yield en cuanto tengas UN hallazgo listo, no acumules varios para entregarlos de golpe al final.\",\n\t\t],\n\t\tparameters: PARAMETROS_YIELD,\n\t\tprepareArguments: repararArgumentos<ParametrosYield>(PARAMETROS_YIELD, [\"datos\"]),\n\t\tasync execute(_toolCallId, params: ParametrosYield): Promise<AgentToolResult<undefined>> {\n\t\t\tconst hallazgo = opciones.buffer.empujar({\n\t\t\t\tetiqueta: params.etiqueta,\n\t\t\t\tdatos: params.datos,\n\t\t\t\tconfianza: params.confianza,\n\t\t\t});\n\t\t\topciones.onEntrega?.(hallazgo);\n\t\t\treturn {\n\t\t\t\tdetails: undefined,\n\t\t\t\tcontent: [{ type: \"text\", text: `Hallazgo #${hallazgo.indice} (\"${hallazgo.etiqueta}\") entregado.` }],\n\t\t\t};\n\t\t},\n\t};\n}\n\nexport interface ResultadoIncremental {\n\t/** Marca que este resultado viene de un YIELD FINAL FORZADO, no de una respuesta final normal. */\n\tparcial: true;\n\thallazgos: HallazgoParcial[];\n}\n\n/** Empaqueta el buffer como el resultado de un YIELD FINAL FORZADO (subagente descarrilado). */\nexport function ensamblarResultadoIncremental(buffer: BufferDeHallazgos): ResultadoIncremental {\n\treturn { parcial: true, hallazgos: buffer.todos() };\n}\n"]}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Entrega incremental de resultados de un subagente.
3
+ *
4
+ * La tool `yield` que un subagente puede llamar varias veces durante su turno
5
+ * — cada llamada entrega UN hallazgo, en cuanto se produce, en vez de que el
6
+ * llamador tenga que esperar a que el subagente termine del todo.
7
+ *
8
+ * Y el YIELD FINAL FORZADO: si el subagente se descarrila (error o timeout)
9
+ * DESPUÉS de haber entregado algo, ese algo se devuelve en vez de perderse.
10
+ * Lo conecta agent-runner.ts, en el catch de `runOnce` — ver la cabecera de
11
+ * ese fichero para el porqué de dónde vive el enganche.
12
+ *
13
+ * NO cubre el abort (`signal.aborted`): una cancelación explícita del caller
14
+ * sigue devolviendo `null` sin hallazgos, igual que hacía antes de este
15
+ * contrato para un run completo y válido — cancelar significa "para del
16
+ * todo", no "dame lo que tengas". Ver el guard en agent-runner.ts.
17
+ */
18
+ import { Type } from "typebox";
19
+ import { repararArgumentos } from "./reparar-argumentos.js";
20
+ /** Buffer mutable de hallazgos de UN run de subagente. Vive en el closure de `runOnce`. */
21
+ export class BufferDeHallazgos {
22
+ hallazgos = [];
23
+ empujar(entrada) {
24
+ const hallazgo = { ...entrada, indice: this.hallazgos.length, timestampMs: Date.now() };
25
+ this.hallazgos.push(hallazgo);
26
+ return hallazgo;
27
+ }
28
+ get longitud() {
29
+ return this.hallazgos.length;
30
+ }
31
+ todos() {
32
+ return [...this.hallazgos];
33
+ }
34
+ }
35
+ export const PARAMETROS_YIELD = Type.Object({
36
+ etiqueta: Type.String({ description: "Nombre corto del hallazgo, p.ej. 'sql-injection-login.ts'." }),
37
+ datos: Type.Any({ description: "El hallazgo en sí: cualquier JSON serializable (objeto, texto, lista...)." }),
38
+ confianza: Type.Optional(Type.Number({ minimum: 0, maximum: 1, description: "Confianza del hallazgo, de 0 a 1. Opcional." })),
39
+ }, { additionalProperties: false });
40
+ /**
41
+ * Crea la tool `yield` de un subagente.
42
+ *
43
+ * `onEntrega` se llama de forma SÍNCRONA, en cuanto el subagente hace la
44
+ * llamada — es lo que permite que el llamador reciba cada hallazgo EN CUANTO
45
+ * se produce, no todos juntos al terminar.
46
+ *
47
+ * `prepareArguments` repara argumentos mal formados (campo de más,
48
+ * `confianza` como cadena, `datos` doblemente serializado) antes de que la
49
+ * validación de la tool los rechace y le cueste un turno al subagente.
50
+ */
51
+ export function crearHerramientaYield(opciones) {
52
+ return {
53
+ name: "yield",
54
+ label: "Entregar hallazgo",
55
+ description: "Entrega un resultado parcial EN CUANTO lo produces, sin esperar a terminar la tarea entera. Llámala una vez por cada hallazgo — el llamador los va recibiendo según los produces, no todos juntos al final. Si te quedas sin turnos o algo falla a mitad, lo que ya hayas entregado con yield no se pierde.",
56
+ promptSnippet: "yield: entrega un hallazgo parcial ahora mismo, sin esperar al final de la tarea",
57
+ promptGuidelines: [
58
+ "Llama a yield en cuanto tengas UN hallazgo listo, no acumules varios para entregarlos de golpe al final.",
59
+ ],
60
+ parameters: PARAMETROS_YIELD,
61
+ prepareArguments: repararArgumentos(PARAMETROS_YIELD, ["datos"]),
62
+ async execute(_toolCallId, params) {
63
+ const hallazgo = opciones.buffer.empujar({
64
+ etiqueta: params.etiqueta,
65
+ datos: params.datos,
66
+ confianza: params.confianza,
67
+ });
68
+ opciones.onEntrega?.(hallazgo);
69
+ return {
70
+ details: undefined,
71
+ content: [{ type: "text", text: `Hallazgo #${hallazgo.indice} ("${hallazgo.etiqueta}") entregado.` }],
72
+ };
73
+ },
74
+ };
75
+ }
76
+ /** Empaqueta el buffer como el resultado de un YIELD FINAL FORZADO (subagente descarrilado). */
77
+ export function ensamblarResultadoIncremental(buffer) {
78
+ return { parcial: true, hallazgos: buffer.todos() };
79
+ }
80
+ //# sourceMappingURL=yield.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yield.js","sourceRoot":"","sources":["../../../../src/core/workflows/contrato/yield.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAY5D,2FAA2F;AAC3F,MAAM,OAAO,iBAAiB;IACrB,SAAS,GAAsB,EAAE,CAAC;IAE1C,OAAO,CAAC,OAAwD,EAAmB;QAClF,MAAM,QAAQ,GAAoB,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACzG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,QAAQ,CAAC;IAAA,CAChB;IAED,IAAI,QAAQ,GAAW;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IAAA,CAC7B;IAED,KAAK,GAAsB;QAC1B,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAAA,CAC3B;CACD;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAC1C;IACC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,4DAA4D,EAAE,CAAC;IACpG,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,4EAA2E,EAAE,CAAC;IAC7G,SAAS,EAAE,IAAI,CAAC,QAAQ,CACvB,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,6CAA6C,EAAE,CAAC,CACnG;CACD,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAC/B,CAAC;AAIF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAGrC,EAA2C;IAC3C,OAAO;QACN,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACV,iTAA6S;QAC9S,aAAa,EAAE,kFAAkF;QACjG,gBAAgB,EAAE;YACjB,0GAA0G;SAC1G;QACD,UAAU,EAAE,gBAAgB;QAC5B,gBAAgB,EAAE,iBAAiB,CAAkB,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC;QACjF,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAuB,EAAuC;YACxF,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;gBACxC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,SAAS,EAAE,MAAM,CAAC,SAAS;aAC3B,CAAC,CAAC;YACH,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC;YAC/B,OAAO;gBACN,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,QAAQ,CAAC,MAAM,MAAM,QAAQ,CAAC,QAAQ,eAAe,EAAE,CAAC;aACrG,CAAC;QAAA,CACF;KACD,CAAC;AAAA,CACF;AAQD,gGAAgG;AAChG,MAAM,UAAU,6BAA6B,CAAC,MAAyB,EAAwB;IAC9F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;AAAA,CACpD","sourcesContent":["/**\n * Entrega incremental de resultados de un subagente.\n *\n * La tool `yield` que un subagente puede llamar varias veces durante su turno\n * — cada llamada entrega UN hallazgo, en cuanto se produce, en vez de que el\n * llamador tenga que esperar a que el subagente termine del todo.\n *\n * Y el YIELD FINAL FORZADO: si el subagente se descarrila (error o timeout)\n * DESPUÉS de haber entregado algo, ese algo se devuelve en vez de perderse.\n * Lo conecta agent-runner.ts, en el catch de `runOnce` — ver la cabecera de\n * ese fichero para el porqué de dónde vive el enganche.\n *\n * NO cubre el abort (`signal.aborted`): una cancelación explícita del caller\n * sigue devolviendo `null` sin hallazgos, igual que hacía antes de este\n * contrato para un run completo y válido — cancelar significa \"para del\n * todo\", no \"dame lo que tengas\". Ver el guard en agent-runner.ts.\n */\n\nimport type { Static } from \"typebox\";\nimport { Type } from \"typebox\";\nimport type { AgentToolResult, ToolDefinition } from \"../../extensions/types.ts\";\nimport { repararArgumentos } from \"./reparar-argumentos.ts\";\n\nexport interface HallazgoParcial {\n\t/** Orden de entrega dentro del run (0-based). */\n\tindice: number;\n\t/** `Date.now()` en el momento EXACTO de la llamada — es lo que demuestra \"según se produce\". */\n\ttimestampMs: number;\n\tetiqueta: string;\n\tdatos: unknown;\n\tconfianza?: number;\n}\n\n/** Buffer mutable de hallazgos de UN run de subagente. Vive en el closure de `runOnce`. */\nexport class BufferDeHallazgos {\n\tprivate hallazgos: HallazgoParcial[] = [];\n\n\tempujar(entrada: Omit<HallazgoParcial, \"indice\" | \"timestampMs\">): HallazgoParcial {\n\t\tconst hallazgo: HallazgoParcial = { ...entrada, indice: this.hallazgos.length, timestampMs: Date.now() };\n\t\tthis.hallazgos.push(hallazgo);\n\t\treturn hallazgo;\n\t}\n\n\tget longitud(): number {\n\t\treturn this.hallazgos.length;\n\t}\n\n\ttodos(): HallazgoParcial[] {\n\t\treturn [...this.hallazgos];\n\t}\n}\n\nexport const PARAMETROS_YIELD = Type.Object(\n\t{\n\t\tetiqueta: Type.String({ description: \"Nombre corto del hallazgo, p.ej. 'sql-injection-login.ts'.\" }),\n\t\tdatos: Type.Any({ description: \"El hallazgo en sí: cualquier JSON serializable (objeto, texto, lista...).\" }),\n\t\tconfianza: Type.Optional(\n\t\t\tType.Number({ minimum: 0, maximum: 1, description: \"Confianza del hallazgo, de 0 a 1. Opcional.\" }),\n\t\t),\n\t},\n\t{ additionalProperties: false },\n);\n\nexport type ParametrosYield = Static<typeof PARAMETROS_YIELD>;\n\n/**\n * Crea la tool `yield` de un subagente.\n *\n * `onEntrega` se llama de forma SÍNCRONA, en cuanto el subagente hace la\n * llamada — es lo que permite que el llamador reciba cada hallazgo EN CUANTO\n * se produce, no todos juntos al terminar.\n *\n * `prepareArguments` repara argumentos mal formados (campo de más,\n * `confianza` como cadena, `datos` doblemente serializado) antes de que la\n * validación de la tool los rechace y le cueste un turno al subagente.\n */\nexport function crearHerramientaYield(opciones: {\n\tbuffer: BufferDeHallazgos;\n\tonEntrega?: (hallazgo: HallazgoParcial) => void;\n}): ToolDefinition<typeof PARAMETROS_YIELD> {\n\treturn {\n\t\tname: \"yield\",\n\t\tlabel: \"Entregar hallazgo\",\n\t\tdescription:\n\t\t\t\"Entrega un resultado parcial EN CUANTO lo produces, sin esperar a terminar la tarea entera. Llámala una vez por cada hallazgo — el llamador los va recibiendo según los produces, no todos juntos al final. Si te quedas sin turnos o algo falla a mitad, lo que ya hayas entregado con yield no se pierde.\",\n\t\tpromptSnippet: \"yield: entrega un hallazgo parcial ahora mismo, sin esperar al final de la tarea\",\n\t\tpromptGuidelines: [\n\t\t\t\"Llama a yield en cuanto tengas UN hallazgo listo, no acumules varios para entregarlos de golpe al final.\",\n\t\t],\n\t\tparameters: PARAMETROS_YIELD,\n\t\tprepareArguments: repararArgumentos<ParametrosYield>(PARAMETROS_YIELD, [\"datos\"]),\n\t\tasync execute(_toolCallId, params: ParametrosYield): Promise<AgentToolResult<undefined>> {\n\t\t\tconst hallazgo = opciones.buffer.empujar({\n\t\t\t\tetiqueta: params.etiqueta,\n\t\t\t\tdatos: params.datos,\n\t\t\t\tconfianza: params.confianza,\n\t\t\t});\n\t\t\topciones.onEntrega?.(hallazgo);\n\t\t\treturn {\n\t\t\t\tdetails: undefined,\n\t\t\t\tcontent: [{ type: \"text\", text: `Hallazgo #${hallazgo.indice} (\"${hallazgo.etiqueta}\") entregado.` }],\n\t\t\t};\n\t\t},\n\t};\n}\n\nexport interface ResultadoIncremental {\n\t/** Marca que este resultado viene de un YIELD FINAL FORZADO, no de una respuesta final normal. */\n\tparcial: true;\n\thallazgos: HallazgoParcial[];\n}\n\n/** Empaqueta el buffer como el resultado de un YIELD FINAL FORZADO (subagente descarrilado). */\nexport function ensamblarResultadoIncremental(buffer: BufferDeHallazgos): ResultadoIncremental {\n\treturn { parcial: true, hallazgos: buffer.todos() };\n}\n"]}
@@ -0,0 +1,151 @@
1
+ /**
2
+ * Ada Intelligence Engine — GoalEngine (modelo contenedor, estilo Claude Code).
3
+ *
4
+ * El goal es un CONTENEDOR de alto nivel: objetivo + doneCriteria + estado +
5
+ * frenos. NO tiene pasos propios — los pasos viven en los workflows dinámicos
6
+ * que desencadena. Cada sub-tarea del goal (tasks) lanza un workflow
7
+ * (`launchWorkflow` inyectable → WorkflowManager). Cuando todas las sub-tareas
8
+ * terminan, el juez verifica los doneCriteria y decide done/continue.
9
+ *
10
+ * Diseño: agnóstico del LLM — `launchWorkflow` (lanza el flujo dinámico de una
11
+ * sub-tarea) y `judge` (juez) son inyectables. Frenos integrados: maxTurns,
12
+ * repeat detector, stop-file (~/.ada-stop), budget, pausa ante decisiones
13
+ * irreversibles.
14
+ */
15
+ import type { AskUserQuestion, EvidenceItem, GoalEventListener, GoalFrenos, GoalJudgeFn, GoalPersistence, GoalReplanFn, GoalState, Task } from "./types.ts";
16
+ export interface GoalEngineOptions {
17
+ persistence: GoalPersistence;
18
+ /** Lanza el workflow dinámico de una sub-tarea → runId (goal-contenedor). */
19
+ launchWorkflow: (input: {
20
+ goalId: string;
21
+ goal: string;
22
+ taskId: string;
23
+ taskTitle: string;
24
+ doneCriteria: string[];
25
+ verifyCommand: string;
26
+ sessionId?: string;
27
+ }) => Promise<{
28
+ runId: string;
29
+ }>;
30
+ judge: GoalJudgeFn;
31
+ /** P1: re-planificación completa tras veredicto continue (opcional). */
32
+ replanFn?: GoalReplanFn;
33
+ frenos?: Partial<GoalFrenos>;
34
+ onEvent?: GoalEventListener;
35
+ /** Comprobador del stop-file (inyectable para tests). */
36
+ stopFileExists?: (path: string) => boolean;
37
+ /** P5: modo plan-only — no lanzar workflows hasta approve del plan. */
38
+ planOnly?: boolean;
39
+ /** Raíz del proyecto para la huella anti-cheat. Default: process.cwd(). */
40
+ cwd?: string;
41
+ /** Huella del árbol de trabajo (inyectable para tests). */
42
+ fingerprint?: (cwd: string) => Promise<string | undefined>;
43
+ now?: () => string;
44
+ }
45
+ export declare class GoalEngine {
46
+ private persistence;
47
+ /** Lock por-goal: nunca dos ticks concurrentes del mismo goal. */
48
+ private _tickInFlight;
49
+ /** Auto-continuación en vuelo tras `onWorkflowFinished` (ver `settle`). */
50
+ private _autoTick;
51
+ /** Temporizadores de `goal_wait(resumeAfterMs)`, uno por goal. */
52
+ private _waitTimers;
53
+ private launchWorkflow;
54
+ private judge;
55
+ private replanFn?;
56
+ private frenos;
57
+ private onEvent?;
58
+ private stopFileExists;
59
+ private planOnly;
60
+ private cwd;
61
+ private fingerprint;
62
+ private now;
63
+ /** cache en memoria: id → estado (el disco es la fuente de verdad). */
64
+ private cache;
65
+ constructor(options: GoalEngineOptions);
66
+ /** Crea un goal en estado setup (contrato). Devuelve el id para aprobar. */
67
+ createGoal(input: {
68
+ goal: string;
69
+ doneCriteria: string[];
70
+ verifyCommand: string;
71
+ sessionId?: string;
72
+ }): Promise<GoalState>;
73
+ /** Añade una tarea al TODO del goal sin reemplazar el plan. */
74
+ addTask(goalId: string, title: string): Promise<GoalState>;
75
+ /** Aprueba el contrato → el bucle puede arrancar. */
76
+ approve(goalId: string): Promise<GoalState>;
77
+ /**
78
+ * Un tick del bucle: se llama cuando el agente principal se ha settleado.
79
+ * Solo avanza si: status active, sin waiting, sin stop-file, bajo los
80
+ * límites (maxTurns, budget, repeat tolerance).
81
+ */
82
+ tick(goalId: string): Promise<{
83
+ advanced: boolean;
84
+ state: GoalState;
85
+ reason?: string;
86
+ }>;
87
+ private _tickInner;
88
+ /**
89
+ * Evento del WorkflowManager: una sub-tarea terminó su workflow.
90
+ * Marca la task done/failed, acumula tokens/coste del run en el presupuesto
91
+ * del goal (freno budgetTokens/costBudget), y aplica el repeat detector
92
+ * (sub-tareas fallidas consecutivas → pause). El siguiente tick decide.
93
+ */
94
+ onWorkflowFinished(workflowRunId: string, ok: boolean, summary?: string, usage?: {
95
+ tokens?: number;
96
+ cost?: number;
97
+ }): Promise<GoalState | null>;
98
+ /**
99
+ * Espera a la auto-continuación en vuelo. Pensado para tests, que necesitan
100
+ * un punto determinista tras `onWorkflowFinished`; en producción el tick es
101
+ * fire-and-forget y nadie lo espera.
102
+ */
103
+ settle(): Promise<void>;
104
+ /** Juez obligatorio: revisa SOLO goal + criteria + evidencia citada. */
105
+ runJudge(state: GoalState): Promise<GoalState>;
106
+ /** Completa el goal con evidencia — exige juez done y evidencia citada. */
107
+ complete(goalId: string, summary: string, evidence: EvidenceItem[]): Promise<GoalState>;
108
+ /** Reemplaza la checklist completa (tool `todo`). */
109
+ replaceTasks(goalId: string, tasks: Task[]): Promise<GoalState>;
110
+ /**
111
+ * P1: re-planificación completa. Genera un nuevo plan con el LLM
112
+ * (replanFn) aprendiendo de la evidencia y del último veredicto del juez,
113
+ * y arranca la iteración N+1. Sin replanFn → error suave (GoalError).
114
+ */
115
+ replan(goalId: string): Promise<GoalState>;
116
+ private autoReplanAfterContinue;
117
+ pause(goalId: string, reason?: string): Promise<GoalState>;
118
+ resume(goalId: string): Promise<GoalState>;
119
+ blocked(goalId: string, reason: string): Promise<GoalState>;
120
+ askUser(goalId: string, reason: string, questions: AskUserQuestion[]): Promise<GoalState>;
121
+ answerQuestions(goalId: string, answers: Record<string, string[]>): Promise<GoalState>;
122
+ get(goalId: string): Promise<GoalState | null>;
123
+ list(): Promise<Array<{
124
+ id: string;
125
+ goal: string;
126
+ status: GoalState["status"];
127
+ phase: GoalState["phase"];
128
+ updatedAt: string;
129
+ }>>;
130
+ private checkBrakes;
131
+ private mustLoad;
132
+ private commit;
133
+ /**
134
+ * Temporizador de `goal_wait(resumeAfterMs)`.
135
+ *
136
+ * Las dos mitades ya existían: la tool guarda `resumeAfterMs` en
137
+ * `state.waiting`, y `checkBrakes` libera el freno cuando el plazo vence.
138
+ * Pero nadie re-evaluaba, así que "espera 30 minutos" significaba en la
139
+ * práctica "espera a que el humano vuelva a escribir". Sondear un deploy o
140
+ * esperar a CI no funcionaba.
141
+ *
142
+ * Un despertar espurio es inofensivo: `tick` tiene su lock y `checkBrakes`
143
+ * vuelve a decidir.
144
+ */
145
+ private armWaitTimer;
146
+ /** Cancela los temporizadores pendientes (cierre de sesión, tests). */
147
+ dispose(): void;
148
+ private emit;
149
+ }
150
+ export declare function isBrakeRelevant(reason: string): boolean;
151
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../../src/core/workflows/goal-engine/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EACX,eAAe,EACf,YAAY,EAEZ,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,eAAe,EACf,YAAY,EACZ,SAAS,EACT,IAAI,EAEJ,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,iBAAiB;IACjC,WAAW,EAAE,eAAe,CAAC;IAC7B,gFAA6E;IAC7E,cAAc,EAAE,CAAC,KAAK,EAAE;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjC,KAAK,EAAE,WAAW,CAAC;IACnB,yEAAwE;IACxE,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,yDAAyD;IACzD,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3C,yEAAuE;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4DAA2D;IAC3D,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC3D,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACnB;AAED,qBAAa,UAAU;IACtB,OAAO,CAAC,WAAW,CAAkB;IACrC,kEAAkE;IAClE,OAAO,CAAC,aAAa,CAAqB;IAC1C,4EAA2E;IAC3E,OAAO,CAAC,SAAS,CAAuC;IACxD,kEAAkE;IAClE,OAAO,CAAC,WAAW,CAAoD;IACvE,OAAO,CAAC,cAAc,CAAsC;IAC5D,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,QAAQ,CAAC,CAAe;IAChC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAoB;IACpC,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,WAAW,CAA+C;IAClE,OAAO,CAAC,GAAG,CAAe;IAC1B,yEAAuE;IACvE,OAAO,CAAC,KAAK,CAAgC;IAE7C,YAAY,OAAO,EAAE,iBAAiB,EAYrC;IAID,4EAA4E;IACtE,UAAU,CAAC,KAAK,EAAE;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,SAAS,CAAC,CAMrB;IAED,gEAA+D;IACzD,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAI/D;IAED,uDAAqD;IAC/C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAIhD;IAID;;;;OAIG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,SAAS,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAa5F;YAEa,UAAU;IA4GxB;;;;;OAKG;IACG,kBAAkB,CACvB,aAAa,EAAE,MAAM,EACrB,EAAE,EAAE,OAAO,EACX,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GACxC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAuF3B;IAED;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5B;IAED,wEAAwE;IAClE,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAiBnD;IAED,6EAA2E;IACrE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAc5F;IAID,qDAAqD;IAC/C,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAIpE;IAED;;;;OAIG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAwB/C;YAOa,uBAAuB;IAY/B,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAI/D;IAEK,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAI/C;IAEK,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAIhE;IAEK,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAM9F;IAEK,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAI3F;IAIK,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAMnD;IAEK,IAAI,IAAI,OAAO,CACpB,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QAAC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAC9G,CAEA;IAID,OAAO,CAAC,WAAW;YAoCL,QAAQ;YAMR,MAAM;IAQpB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,YAAY;IAsBpB,wEAAuE;IACvE,OAAO,IAAI,IAAI,CAGd;IAED,OAAO,CAAC,IAAI;CAMZ;AAkBD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEvD","sourcesContent":["/**\n * Ada Intelligence Engine — GoalEngine (modelo contenedor, estilo Claude Code).\n *\n * El goal es un CONTENEDOR de alto nivel: objetivo + doneCriteria + estado +\n * frenos. NO tiene pasos propios — los pasos viven en los workflows dinámicos\n * que desencadena. Cada sub-tarea del goal (tasks) lanza un workflow\n * (`launchWorkflow` inyectable → WorkflowManager). Cuando todas las sub-tareas\n * terminan, el juez verifica los doneCriteria y decide done/continue.\n *\n * Diseño: agnóstico del LLM — `launchWorkflow` (lanza el flujo dinámico de una\n * sub-tarea) y `judge` (juez) son inyectables. Frenos integrados: maxTurns,\n * repeat detector, stop-file (~/.ada-stop), budget, pausa ante decisiones\n * irreversibles.\n */\n\nimport { GoalError } from \"./errors.ts\";\nimport { createGoalState, reduceGoal } from \"./state.ts\";\nimport type {\n\tAskUserQuestion,\n\tEvidenceItem,\n\tGoalAction,\n\tGoalEventListener,\n\tGoalFrenos,\n\tGoalJudgeFn,\n\tGoalPersistence,\n\tGoalReplanFn,\n\tGoalState,\n\tTask,\n\tTaskStatus,\n} from \"./types.ts\";\nimport { DEFAULT_GOAL_FRENOS } from \"./types.ts\";\nimport { workspaceFingerprint } from \"./worktree-fingerprint.ts\";\n\nexport interface GoalEngineOptions {\n\tpersistence: GoalPersistence;\n\t/** Lanza el workflow dinámico de una sub-tarea → runId (goal-contenedor). */\n\tlaunchWorkflow: (input: {\n\t\tgoalId: string;\n\t\tgoal: string;\n\t\ttaskId: string;\n\t\ttaskTitle: string;\n\t\tdoneCriteria: string[];\n\t\tverifyCommand: string;\n\t\tsessionId?: string;\n\t}) => Promise<{ runId: string }>;\n\tjudge: GoalJudgeFn;\n\t/** P1: re-planificación completa tras veredicto continue (opcional). */\n\treplanFn?: GoalReplanFn;\n\tfrenos?: Partial<GoalFrenos>;\n\tonEvent?: GoalEventListener;\n\t/** Comprobador del stop-file (inyectable para tests). */\n\tstopFileExists?: (path: string) => boolean;\n\t/** P5: modo plan-only — no lanzar workflows hasta approve del plan. */\n\tplanOnly?: boolean;\n\t/** Raíz del proyecto para la huella anti-cheat. Default: process.cwd(). */\n\tcwd?: string;\n\t/** Huella del árbol de trabajo (inyectable para tests). */\n\tfingerprint?: (cwd: string) => Promise<string | undefined>;\n\tnow?: () => string;\n}\n\nexport class GoalEngine {\n\tprivate persistence: GoalPersistence;\n\t/** Lock por-goal: nunca dos ticks concurrentes del mismo goal. */\n\tprivate _tickInFlight = new Set<string>();\n\t/** Auto-continuación en vuelo tras `onWorkflowFinished` (ver `settle`). */\n\tprivate _autoTick: Promise<unknown> = Promise.resolve();\n\t/** Temporizadores de `goal_wait(resumeAfterMs)`, uno por goal. */\n\tprivate _waitTimers = new Map<string, ReturnType<typeof setTimeout>>();\n\tprivate launchWorkflow: GoalEngineOptions[\"launchWorkflow\"];\n\tprivate judge: GoalJudgeFn;\n\tprivate replanFn?: GoalReplanFn;\n\tprivate frenos: GoalFrenos;\n\tprivate onEvent?: GoalEventListener;\n\tprivate stopFileExists: (path: string) => boolean;\n\tprivate planOnly: boolean;\n\tprivate cwd: string;\n\tprivate fingerprint: (cwd: string) => Promise<string | undefined>;\n\tprivate now: () => string;\n\t/** cache en memoria: id → estado (el disco es la fuente de verdad). */\n\tprivate cache = new Map<string, GoalState>();\n\n\tconstructor(options: GoalEngineOptions) {\n\t\tthis.persistence = options.persistence;\n\t\tthis.launchWorkflow = options.launchWorkflow;\n\t\tthis.judge = options.judge;\n\t\tthis.replanFn = options.replanFn;\n\t\tthis.frenos = { ...DEFAULT_GOAL_FRENOS, ...options.frenos };\n\t\tthis.onEvent = options.onEvent;\n\t\tthis.stopFileExists = options.stopFileExists ?? ((p) => p !== null && p.length > 0 && fsExists(p));\n\t\tthis.planOnly = options.planOnly ?? false;\n\t\tthis.cwd = options.cwd ?? process.cwd();\n\t\tthis.fingerprint = options.fingerprint ?? workspaceFingerprint;\n\t\tthis.now = options.now ?? (() => new Date().toISOString());\n\t}\n\n\t// ─── Contrato primero ───\n\n\t/** Crea un goal en estado setup (contrato). Devuelve el id para aprobar. */\n\tasync createGoal(input: {\n\t\tgoal: string;\n\t\tdoneCriteria: string[];\n\t\tverifyCommand: string;\n\t\tsessionId?: string;\n\t}): Promise<GoalState> {\n\t\tconst state = createGoalState({ ...input, id: `goal-${Date.now().toString(36)}-${randId()}`, now: this.now() });\n\t\tthis.cache.set(state.id, state);\n\t\tawait this.persistence.save(state);\n\t\tthis.emit(\"goal_update\", { goal: state });\n\t\treturn state;\n\t}\n\n\t/** Añade una tarea al TODO del goal sin reemplazar el plan. */\n\tasync addTask(goalId: string, title: string): Promise<GoalState> {\n\t\tconst state = await this.mustLoad(goalId);\n\t\tconst { state: next } = reduceGoal(state, { type: \"goal_task_add\", title }, this.frenos);\n\t\treturn this.commit(state, next);\n\t}\n\n\t/** Aprueba el contrato → el bucle puede arrancar. */\n\tasync approve(goalId: string): Promise<GoalState> {\n\t\tconst state = await this.mustLoad(goalId);\n\t\tconst { state: next } = reduceGoal(state, { type: \"goal_approve\" }, this.frenos);\n\t\treturn this.commit(state, next);\n\t}\n\n\t// ─── Bucle ───\n\n\t/**\n\t * Un tick del bucle: se llama cuando el agente principal se ha settleado.\n\t * Solo avanza si: status active, sin waiting, sin stop-file, bajo los\n\t * límites (maxTurns, budget, repeat tolerance).\n\t */\n\tasync tick(goalId: string): Promise<{ advanced: boolean; state: GoalState; reason?: string }> {\n\t\t// Reentrancia: nunca dos ticks concurrentes del mismo goal (el\n\t\t// subagent que ejecuta el turno comparte agentDir y NO re-dispara).\n\t\tif (this._tickInFlight.has(goalId)) {\n\t\t\tconst state = await this.mustLoad(goalId);\n\t\t\treturn { advanced: false, state, reason: \"tick ya en curso\" };\n\t\t}\n\t\tthis._tickInFlight.add(goalId);\n\t\ttry {\n\t\t\treturn await this._tickInner(goalId);\n\t\t} finally {\n\t\t\tthis._tickInFlight.delete(goalId);\n\t\t}\n\t}\n\n\tprivate async _tickInner(goalId: string): Promise<{ advanced: boolean; state: GoalState; reason?: string }> {\n\t\tlet state = await this.mustLoad(goalId);\n\n\t\t// Frenos que detienen el bucle ANTES de gastar un turno.\n\t\tconst brake = this.checkBrakes(state);\n\t\tif (brake) {\n\t\t\tconst { state: next } = reduceGoal(state, brake.action, this.frenos);\n\t\t\tawait this.commit(state, next);\n\t\t\treturn { advanced: false, state: next, reason: brake.reason };\n\t\t}\n\n\t\t// Continuación solo si el bucle está activo.\n\t\tif (state.status !== \"active\") return { advanced: false, state, reason: `status=${state.status}` };\n\n\t\t// ── Modelo contenedor: el goal lanza workflows por sub-tarea ──\n\t\t// 0. ¿Hay sub-tareas con workflow EN MARCHA? → esperar (uno a la vez).\n\t\t// El evento workflow_run_finished marcará la sub-tarea vía onWorkflowFinished.\n\t\tconst runningNow = state.tasks.filter((t) => t.status === \"running\");\n\t\tif (runningNow.length > 0) {\n\t\t\treturn { advanced: false, state, reason: `${runningNow.length} workflow(s) en curso` };\n\t\t}\n\n\t\t// 1. ¿Hay sub-tareas fallidas? → reintento (relanzar el workflow) hasta\n\t\t// la tolerancia; al alcanzarla, el repeat detector ya pausó.\n\t\tconst failedNow = state.tasks.filter((t) => t.status === \"failed\");\n\t\tif (failedNow.length > 0) {\n\t\t\tif (state.repeatedTurns >= this.frenos.repeatTolerance) {\n\t\t\t\treturn { advanced: false, state, reason: \"repeat detector pausado\" };\n\t\t\t}\n\t\t\t// Resetear la primera fallida a pending y CONTINUAR al lanzamiento.\n\t\t\tconst first = failedNow[0];\n\t\t\tconst { state: retry } = reduceGoal(\n\t\t\t\tstate,\n\t\t\t\t{ type: \"goal_task_result\", taskId: first.id, status: \"pending\" as TaskStatus },\n\t\t\t\tthis.frenos,\n\t\t\t);\n\t\t\tstate = retry;\n\t\t\tawait this.commit(state, state);\n\t\t}\n\n\t\t// P5: modo plan-only — no se lanzan workflows automáticamente; el goal\n\t\t// espera aprobación explícita del plan (approve) para cada iteración.\n\t\tif (this.planOnly) {\n\t\t\treturn { advanced: false, state, reason: \"plan-only: esperando approve del plan\" };\n\t\t}\n\n\t\t// 2. ¿Hay sub-tareas sin workflow lanzado? → lanza la siguiente.\n\t\tconst pending = state.tasks.find((t) => t.status === \"pending\" || t.status === \"active\");\n\t\tif (pending) {\n\t\t\tthis.emit(\"goal_agent\", {\n\t\t\t\tgoalId,\n\t\t\t\tagent: { id: `${goalId}:task:${pending.id}`, label: pending.title, detail: \"workflow dinámico\" },\n\t\t\t});\n\t\t\ttry {\n\t\t\t\tconst { runId } = await this.launchWorkflow({\n\t\t\t\t\tgoalId: state.id,\n\t\t\t\t\tgoal: state.goal,\n\t\t\t\t\ttaskId: pending.id,\n\t\t\t\t\ttaskTitle: pending.title,\n\t\t\t\t\tdoneCriteria: state.doneCriteria,\n\t\t\t\t\tverifyCommand: state.verifyCommand,\n\t\t\t\t\tsessionId: state.sessionId,\n\t\t\t\t});\n\t\t\t\t// Marcar la sub-tarea running con su runId.\n\t\t\t\tconst { state: launched } = reduceGoal(\n\t\t\t\t\tstate,\n\t\t\t\t\t{ type: \"goal_task_launched\", taskId: pending.id, workflowRunId: runId },\n\t\t\t\t\tthis.frenos,\n\t\t\t\t);\n\t\t\t\tawait this.commit(state, launched);\n\t\t\t\tthis.emit(\"goal_phase\", { goalId, phase: \"working\" });\n\t\t\t\treturn { advanced: true, state: launched, reason: `workflow ${runId} lanzado para ${pending.title}` };\n\t\t\t} catch (e) {\n\t\t\t\t// El workflow no se pudo lanzar → task failed, el juez decide.\n\t\t\t\tconst { state: failed } = reduceGoal(\n\t\t\t\t\tstate,\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"goal_task_result\",\n\t\t\t\t\t\ttaskId: pending.id,\n\t\t\t\t\t\tstatus: \"failed\",\n\t\t\t\t\t\tsummary: e instanceof Error ? e.message : String(e),\n\t\t\t\t\t},\n\t\t\t\t\tthis.frenos,\n\t\t\t\t);\n\t\t\t\tawait this.commit(state, failed);\n\t\t\t\treturn { advanced: true, state: failed, reason: \"workflow launch failed\" };\n\t\t\t}\n\t\t}\n\n\t\t// 3. Sin sub-tareas pendientes/running → todas done (o plan vacío) → juez.\n\t\tif (state.tasks.length === 0 || state.tasks.every((t) => t.status === \"done\")) {\n\t\t\tconst judged = await this.runJudge(state);\n\t\t\t// P1: veredicto continue → re-planificación completa automática\n\t\t\t// (nueva iteración con plan regenerado) si el freno maxReplans\n\t\t\t// lo permite y hay replanFn. Si no, reintento simple (behavior atual).\n\t\t\tif (judged.status === \"active\" && judged.judge.lastVerdict === \"continue\") {\n\t\t\t\tconst re = await this.autoReplanAfterContinue(judged);\n\t\t\t\tif (re.iteration > judged.iteration) {\n\t\t\t\t\treturn { advanced: true, state: re, reason: `juez continue → iteración ${re.iteration} (replan)` };\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn { advanced: true, state: judged, reason: \"todas las sub-tareas done → juez\" };\n\t\t}\n\n\t\t// 4. Plan incompleto (sub-tareas en otros estados) → esperar.\n\t\treturn { advanced: false, state, reason: \"plan en curso\" };\n\t}\n\n\t/**\n\t * Evento del WorkflowManager: una sub-tarea terminó su workflow.\n\t * Marca la task done/failed, acumula tokens/coste del run en el presupuesto\n\t * del goal (freno budgetTokens/costBudget), y aplica el repeat detector\n\t * (sub-tareas fallidas consecutivas → pause). El siguiente tick decide.\n\t */\n\tasync onWorkflowFinished(\n\t\tworkflowRunId: string,\n\t\tok: boolean,\n\t\tsummary?: string,\n\t\tusage?: { tokens?: number; cost?: number },\n\t): Promise<GoalState | null> {\n\t\t// Buscar el goal cuya sub-tarea corre ese workflow (en memoria).\n\t\tfor (const state of this.cache.values()) {\n\t\t\tconst task = state.tasks.find((t) => t.workflowRunId === workflowRunId);\n\t\t\tif (!task) continue;\n\t\t\tlet next = state;\n\t\t\t// Resultado de la sub-tarea.\n\t\t\tconst { state: afterResult } = reduceGoal(\n\t\t\t\tnext,\n\t\t\t\t{ type: \"goal_task_result\", taskId: task.id, status: ok ? \"done\" : \"failed\", summary },\n\t\t\t\tthis.frenos,\n\t\t\t);\n\t\t\tnext = afterResult;\n\t\t\t// Presupuesto: acumular tokens/coste reales del workflow.\n\t\t\tif (usage && (usage.tokens || usage.cost)) {\n\t\t\t\tnext = {\n\t\t\t\t\t...next,\n\t\t\t\t\ttokensUsed: next.tokensUsed + (usage.tokens ?? 0),\n\t\t\t\t\tcostUsed: next.costUsed + (usage.cost ?? 0),\n\t\t\t\t\tupdatedAt: this.now(),\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Repeat detector: sub-tareas fallidas consecutivas → pause.\n\t\t\tif (!ok) {\n\t\t\t\t// Anti-cheat: ¿cambió algo el agente? Un fallo con el árbol de\n\t\t\t\t// trabajo idéntico al del fallo anterior no es un intento nuevo, es\n\t\t\t\t// el mismo intento. Reintentarlo gasta presupuesto sin información.\n\t\t\t\tconst fingerprint = await this.fingerprint(this.cwd);\n\t\t\t\tconst stalled = fingerprint !== undefined && fingerprint === next.lastFailureFingerprint;\n\t\t\t\tnext = {\n\t\t\t\t\t...next,\n\t\t\t\t\trepeatedTurns: next.repeatedTurns + 1,\n\t\t\t\t\tlastAgentSummary: summary ?? \"workflow fallido\",\n\t\t\t\t\tlastFailureFingerprint: fingerprint ?? next.lastFailureFingerprint,\n\t\t\t\t\tupdatedAt: this.now(),\n\t\t\t\t};\n\t\t\t\tif (stalled) {\n\t\t\t\t\t// El plan es el problema, no el intento: parar y que el replan lo\n\t\t\t\t\t// vea, en vez de agotar la tolerancia repitiendo lo mismo.\n\t\t\t\t\tconst { state: paused } = reduceGoal(\n\t\t\t\t\t\tnext,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"goal_pause\",\n\t\t\t\t\t\t\treason:\n\t\t\t\t\t\t\t\t\"workspace sin cambios desde el fallo anterior — el agente no modificó nada, hace falta replantear\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tthis.frenos,\n\t\t\t\t\t);\n\t\t\t\t\tnext = paused;\n\t\t\t\t} else if (next.repeatedTurns >= this.frenos.repeatTolerance) {\n\t\t\t\t\tconst { state: paused } = reduceGoal(\n\t\t\t\t\t\tnext,\n\t\t\t\t\t\t{ type: \"goal_pause\", reason: `${this.frenos.repeatTolerance} sub-tareas fallidas seguidas` },\n\t\t\t\t\t\tthis.frenos,\n\t\t\t\t\t);\n\t\t\t\t\tnext = paused;\n\t\t\t\t}\n\t\t\t} else if (next.repeatedTurns > 0 || next.lastFailureFingerprint) {\n\t\t\t\t// Éxito resetea el contador de fallos y la huella.\n\t\t\t\tnext = { ...next, repeatedTurns: 0, lastFailureFingerprint: undefined, updatedAt: this.now() };\n\t\t\t}\n\t\t\tawait this.commit(state, next);\n\t\t\tthis.emit(\"goal_update\", { goal: next });\n\t\t\t// Auto-continuación. Sin esto el goal solo avanza cuando el humano\n\t\t\t// escribe: el único disparador de `tick` es el `agent_settled` de la\n\t\t\t// sesión principal, y el workflow de la sub-tarea corre en una sesión\n\t\t\t// de subagente que está excluida de ese camino. Es decir, un goal de\n\t\t\t// N sub-tareas exigía N mensajes del usuario.\n\t\t\t//\n\t\t\t// Se dispara desde dentro del engine a propósito: el engine solo\n\t\t\t// existe en la sesión principal, así que la propiedad anti-recursión\n\t\t\t// se conserva sin depender de agent-session.\n\t\t\t//\n\t\t\t// El bucle está acotado: `goal_task_launched` incrementa `turnsUsed`\n\t\t\t// (state.ts:133) contra `maxTurns`, los fallos consecutivos cuentan\n\t\t\t// contra `repeatTolerance` (y al alcanzarla el estado ya no es\n\t\t\t// `active`, así que no se re-tickea), y `checkBrakes` evalúa\n\t\t\t// stop-file y presupuestos antes de gastar nada.\n\t\t\tif (next.status === \"active\") {\n\t\t\t\tthis._autoTick = this.tick(next.id).catch(() => {\n\t\t\t\t\t// El tick persiste su propio estado; que falle no debe tumbar\n\t\t\t\t\t// al manejador del evento del workflow.\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn next;\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**\n\t * Espera a la auto-continuación en vuelo. Pensado para tests, que necesitan\n\t * un punto determinista tras `onWorkflowFinished`; en producción el tick es\n\t * fire-and-forget y nadie lo espera.\n\t */\n\tasync settle(): Promise<void> {\n\t\tawait this._autoTick;\n\t}\n\n\t/** Juez obligatorio: revisa SOLO goal + criteria + evidencia citada. */\n\tasync runJudge(state: GoalState): Promise<GoalState> {\n\t\tthis.emit(\"goal_judge\", { goalId: state.id, verdict: \"continue\", reason: \"juez iniciado\" });\n\t\tconst verdict = await this.judge({\n\t\t\tgoal: state.goal,\n\t\t\tdoneCriteria: state.doneCriteria,\n\t\t\tverifyCommand: state.verifyCommand,\n\t\t\tevidence: state.evidence,\n\t\t\tphase: state.phase,\n\t\t});\n\t\tconst { state: next } = reduceGoal(\n\t\t\tstate,\n\t\t\t{ type: \"goal_judge\", verdict: verdict.verdict, reason: verdict.reason, crossModel: verdict.crossModel },\n\t\t\tthis.frenos,\n\t\t);\n\t\tawait this.commit(state, next);\n\t\tthis.emit(\"goal_judge\", { goalId: state.id, verdict: verdict.verdict, reason: verdict.reason });\n\t\treturn next;\n\t}\n\n\t/** Completa el goal con evidencia — exige juez done y evidencia citada. */\n\tasync complete(goalId: string, summary: string, evidence: EvidenceItem[]): Promise<GoalState> {\n\t\tconst state = await this.mustLoad(goalId);\n\t\t// Añadir la evidencia nueva al estado (sin duplicar).\n\t\tlet current = state;\n\t\tif (evidence.length) {\n\t\t\tconst { state: withEv } = reduceGoal(current, { type: \"goal_agent_turn\", summary: \"\", evidence }, this.frenos);\n\t\t\tcurrent = withEv;\n\t\t}\n\t\tconst { state: next, stopLoop } = reduceGoal(current, { type: \"goal_complete\", summary, evidence }, this.frenos);\n\t\tawait this.commit(current, next);\n\t\tif (stopLoop && next.status === \"complete\") {\n\t\t\tthis.emit(\"goal_finished\", { goalId, status: \"complete\", verdict: next.judge.lastVerdict });\n\t\t}\n\t\treturn next;\n\t}\n\n\t// ─── Pausa / bloqueo / preguntas ───\n\n\t/** Reemplaza la checklist completa (tool `todo`). */\n\tasync replaceTasks(goalId: string, tasks: Task[]): Promise<GoalState> {\n\t\tconst state = await this.mustLoad(goalId);\n\t\tconst { state: next } = reduceGoal(state, { type: \"goal_tasks\", tasks }, this.frenos);\n\t\treturn this.commit(state, next);\n\t}\n\n\t/**\n\t * P1: re-planificación completa. Genera un nuevo plan con el LLM\n\t * (replanFn) aprendiendo de la evidencia y del último veredicto del juez,\n\t * y arranca la iteración N+1. Sin replanFn → error suave (GoalError).\n\t */\n\tasync replan(goalId: string): Promise<GoalState> {\n\t\tconst state = await this.mustLoad(goalId);\n\t\tif (!this.replanFn) throw new GoalError(\"replanFn no está configurado\", \"REPLAN_UNAVAILABLE\");\n\t\t// El motivo de una pausa por anti-cheat (\"el agente no cambió nada\") es\n\t\t// más accionable para replantear que el último veredicto del juez: dice\n\t\t// que el problema es el plan, no la ejecución. Si existe, manda.\n\t\tconst stalledReason = state.waiting?.reason?.includes(\"workspace sin cambios\") ? state.waiting.reason : undefined;\n\t\tconst replanned = await this.replanFn({\n\t\t\tgoal: state.goal,\n\t\t\tdoneCriteria: state.doneCriteria,\n\t\t\tverifyCommand: state.verifyCommand,\n\t\t\tevidence: state.evidence,\n\t\t\tcurrentTasks: state.tasks,\n\t\t\tlastVerdict: state.judge.lastVerdict,\n\t\t\tlastReason: stalledReason ?? state.judge.lastReason,\n\t\t});\n\t\tconst { state: next } = reduceGoal(\n\t\t\tstate,\n\t\t\t{ type: \"goal_replan\", tasks: replanned.tasks, rationale: replanned.rationale },\n\t\t\tthis.frenos,\n\t\t);\n\t\tawait this.commit(state, next);\n\t\tthis.emit(\"goal_update\", { goal: next });\n\t\treturn next;\n\t}\n\n\t/**\n\t * P1: re-planificación automática tras veredicto continue del juez.\n\t * Respeta el freno maxReplans; si se agota o no hay replanFn, hace el\n\t * reintento simple (comportamiento actual).\n\t */\n\tprivate async autoReplanAfterContinue(state: GoalState): Promise<GoalState> {\n\t\tconst maxReplans = this.frenos.maxReplans ?? 3;\n\t\t// El historial cuenta cuántas re-planificaciones ya se hicieron.\n\t\tconst replansDone = state.iterations.filter((it) => it.replanRationale).length;\n\t\tif (replansDone >= maxReplans || !this.replanFn) return state; // reintento simple\n\t\ttry {\n\t\t\treturn await this.replan(state.id);\n\t\t} catch {\n\t\t\treturn state; // fail-open: reintento simple\n\t\t}\n\t}\n\n\tasync pause(goalId: string, reason?: string): Promise<GoalState> {\n\t\tconst state = await this.mustLoad(goalId);\n\t\tconst { state: next } = reduceGoal(state, { type: \"goal_pause\", reason }, this.frenos);\n\t\treturn this.commit(state, next);\n\t}\n\n\tasync resume(goalId: string): Promise<GoalState> {\n\t\tconst state = await this.mustLoad(goalId);\n\t\tconst { state: next } = reduceGoal(state, { type: \"goal_resume\" }, this.frenos);\n\t\treturn this.commit(state, next);\n\t}\n\n\tasync blocked(goalId: string, reason: string): Promise<GoalState> {\n\t\tconst state = await this.mustLoad(goalId);\n\t\tconst { state: next } = reduceGoal(state, { type: \"goal_blocked\", reason }, this.frenos);\n\t\treturn this.commit(state, next);\n\t}\n\n\tasync askUser(goalId: string, reason: string, questions: AskUserQuestion[]): Promise<GoalState> {\n\t\tconst state = await this.mustLoad(goalId);\n\t\tconst { state: next } = reduceGoal(state, { type: \"goal_questions\", questions, reason }, this.frenos);\n\t\tawait this.commit(state, next);\n\t\tthis.emit(\"goal_question\", { goalId, questions });\n\t\treturn next;\n\t}\n\n\tasync answerQuestions(goalId: string, answers: Record<string, string[]>): Promise<GoalState> {\n\t\tconst state = await this.mustLoad(goalId);\n\t\tconst { state: next } = reduceGoal(state, { type: \"goal_answers\", answers }, this.frenos);\n\t\treturn this.commit(state, next);\n\t}\n\n\t// ─── Consultas ───\n\n\tasync get(goalId: string): Promise<GoalState | null> {\n\t\tconst cached = this.cache.get(goalId);\n\t\tif (cached) return cached;\n\t\tconst loaded = await this.persistence.load(goalId);\n\t\tif (loaded) this.cache.set(goalId, loaded);\n\t\treturn loaded;\n\t}\n\n\tasync list(): Promise<\n\t\tArray<{ id: string; goal: string; status: GoalState[\"status\"]; phase: GoalState[\"phase\"]; updatedAt: string }>\n\t> {\n\t\treturn this.persistence.list();\n\t}\n\n\t// ─── Frenos ───\n\n\tprivate checkBrakes(state: GoalState): { action: GoalAction; reason: string } | null {\n\t\t// ~/.ada-stop: freno de emergencia.\n\t\tif (this.frenos.stopFile && this.stopFileExists(this.frenos.stopFile)) {\n\t\t\treturn {\n\t\t\t\taction: { type: \"goal_pause\", reason: `stop-file presente: ${this.frenos.stopFile}` },\n\t\t\t\treason: \"stop-file\",\n\t\t\t};\n\t\t}\n\t\t// maxTurns.\n\t\tif (state.turnsUsed >= this.frenos.maxTurns) {\n\t\t\treturn {\n\t\t\t\taction: { type: \"goal_blocked\", reason: `máximo de ${this.frenos.maxTurns} turnos alcanzado` },\n\t\t\t\treason: \"maxTurns\",\n\t\t\t};\n\t\t}\n\t\t// Tokens.\n\t\tif (this.frenos.tokenBudget !== null && state.tokensUsed > this.frenos.tokenBudget) {\n\t\t\treturn { action: { type: \"goal_usage_limited\" }, reason: \"token budget\" };\n\t\t}\n\t\t// Coste.\n\t\tif (this.frenos.costBudget !== null && state.costUsed > this.frenos.costBudget) {\n\t\t\treturn { action: { type: \"goal_budget_limited\" }, reason: \"cost budget\" };\n\t\t}\n\t\t// waiting activo (resumeAfterMs: reanudar automáticamente si pasó).\n\t\tif (state.waiting) {\n\t\t\tif (\n\t\t\t\tstate.waiting.resumeAfterMs !== undefined &&\n\t\t\t\tDate.now() >= Date.parse(state.updatedAt) + state.waiting.resumeAfterMs\n\t\t\t) {\n\t\t\t\treturn null; // el tick puede continuar (el resume ocurre en commit)\n\t\t\t}\n\t\t\treturn { action: { type: \"goal_blocked\", reason: state.waiting.reason }, reason: \"waiting\" };\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate async mustLoad(goalId: string): Promise<GoalState> {\n\t\tconst state = await this.get(goalId);\n\t\tif (!state) throw new GoalError(`Goal no encontrado: ${goalId}`, \"GOAL_NOT_FOUND\");\n\t\treturn state;\n\t}\n\n\tprivate async commit(_before: GoalState, after: GoalState): Promise<GoalState> {\n\t\tthis.cache.set(after.id, after);\n\t\tawait this.persistence.save(after);\n\t\tthis.emit(\"goal_update\", { goal: after });\n\t\tthis.armWaitTimer(after);\n\t\treturn after;\n\t}\n\n\t/**\n\t * Temporizador de `goal_wait(resumeAfterMs)`.\n\t *\n\t * Las dos mitades ya existían: la tool guarda `resumeAfterMs` en\n\t * `state.waiting`, y `checkBrakes` libera el freno cuando el plazo vence.\n\t * Pero nadie re-evaluaba, así que \"espera 30 minutos\" significaba en la\n\t * práctica \"espera a que el humano vuelva a escribir\". Sondear un deploy o\n\t * esperar a CI no funcionaba.\n\t *\n\t * Un despertar espurio es inofensivo: `tick` tiene su lock y `checkBrakes`\n\t * vuelve a decidir.\n\t */\n\tprivate armWaitTimer(state: GoalState): void {\n\t\tconst previous = this._waitTimers.get(state.id);\n\t\tif (previous) {\n\t\t\tclearTimeout(previous);\n\t\t\tthis._waitTimers.delete(state.id);\n\t\t}\n\t\tif (state.status !== \"active\" && state.status !== \"blocked\") return;\n\t\tconst ms = state.waiting?.resumeAfterMs;\n\t\tif (ms === undefined) return;\n\t\tconst remaining = Date.parse(state.updatedAt) + ms - Date.now();\n\t\tconst timer = setTimeout(\n\t\t\t() => {\n\t\t\t\tthis._waitTimers.delete(state.id);\n\t\t\t\tvoid this.tick(state.id).catch(() => {});\n\t\t\t},\n\t\t\tMath.max(0, remaining),\n\t\t);\n\t\t// No mantener vivo el proceso solo por un goal dormido.\n\t\t(timer as unknown as { unref?: () => void }).unref?.();\n\t\tthis._waitTimers.set(state.id, timer);\n\t}\n\n\t/** Cancela los temporizadores pendientes (cierre de sesión, tests). */\n\tdispose(): void {\n\t\tfor (const timer of this._waitTimers.values()) clearTimeout(timer);\n\t\tthis._waitTimers.clear();\n\t}\n\n\tprivate emit<K extends keyof import(\"./types.ts\").GoalEventMap>(\n\t\ttype: K,\n\t\tpayload: import(\"./types.ts\").GoalEventMap[K],\n\t): void {\n\t\tthis.onEvent?.(type, payload);\n\t}\n}\n\n// ─── helpers ───\n\nimport { existsSync } from \"node:fs\";\n\nfunction fsExists(p: string): boolean {\n\ttry {\n\t\treturn existsSync(p);\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction randId(): string {\n\treturn Math.random().toString(36).slice(2, 7);\n}\n\nexport function isBrakeRelevant(reason: string): boolean {\n\treturn [\"stop-file\", \"maxTurns\", \"token budget\", \"cost budget\", \"repeat detector\", \"waiting\"].includes(reason);\n}\n"]}