@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 @@
1
+ {"version":3,"file":"almacen.js","sourceRoot":"","sources":["../../../src/core/wiki/almacen.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Dónde vive la wiki y cómo se indexa.\n *\n * En `<proyecto>/<configDir>/wiki/`: páginas en Markdown y un `citas.json` con\n * la huella de cada cita. Va dentro del proyecto y no en el agentDir a\n * propósito — es documentación del repositorio, debe poder versionarse y\n * revisarse en un pull request como cualquier otro fichero.\n */\n\nimport { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { join, relative, resolve } from \"node:path\";\nimport { type Afirmacion, type Cita, extraerCitas, huellaDeTexto } from \"./citas.ts\";\n\nexport interface Wiki {\n\tversion: 1;\n\tafirmaciones: Afirmacion[];\n}\n\nconst VACIA: Wiki = { version: 1, afirmaciones: [] };\n\nexport function rutaWiki(cwd: string, configDirName: string): string {\n\treturn join(cwd, configDirName, \"wiki\");\n}\n\nexport function leerWiki(cwd: string, configDirName: string): Wiki {\n\tconst fichero = join(rutaWiki(cwd, configDirName), \"citas.json\");\n\tif (!existsSync(fichero)) return { ...VACIA };\n\ttry {\n\t\tconst datos = JSON.parse(readFileSync(fichero, \"utf8\")) as Wiki;\n\t\treturn Array.isArray(datos.afirmaciones) ? datos : { ...VACIA };\n\t} catch {\n\t\t// Un citas.json corrupto no puede impedir regenerar la wiki.\n\t\treturn { ...VACIA };\n\t}\n}\n\nexport function escribirWiki(cwd: string, configDirName: string, wiki: Wiki): void {\n\tconst dir = rutaWiki(cwd, configDirName);\n\tmkdirSync(dir, { recursive: true });\n\twriteFileSync(join(dir, \"citas.json\"), `${JSON.stringify(wiki, null, 2)}\\n`, \"utf8\");\n}\n\n/**\n * Lector de ficheros del proyecto, con la raíz cerrada.\n *\n * Una cita es texto que puede haber escrito un modelo. Sin esta comprobación,\n * `../../.ssh/id_rsa` en una página de la wiki haría que `wiki check` leyera\n * cualquier cosa del disco.\n */\nexport function lectorDelProyecto(cwd: string): (fichero: string) => string | null {\n\tconst raiz = resolve(cwd);\n\treturn (fichero) => {\n\t\tconst absoluta = resolve(raiz, fichero);\n\t\tconst dentro = relative(raiz, absoluta);\n\t\tif (dentro.startsWith(\"..\") || resolve(raiz, dentro) !== absoluta) return null;\n\t\ttry {\n\t\t\treturn readFileSync(absoluta, \"utf8\");\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t};\n}\n\n/**\n * Indexa las páginas Markdown: saca sus citas y les calcula la huella.\n *\n * Cada párrafo no vacío es una afirmación. Es una regla tonta a propósito: si\n * el troceado fuera listo, dos ejecuciones sobre el mismo texto podrían dar\n * afirmaciones distintas y el fichero de citas cambiaría sin que cambiara nada.\n */\nexport function indexarPaginas(cwd: string, configDirName: string): Wiki {\n\tconst dir = rutaWiki(cwd, configDirName);\n\tif (!existsSync(dir)) return { ...VACIA };\n\tconst leer = lectorDelProyecto(cwd);\n\tconst afirmaciones: Afirmacion[] = [];\n\n\tfor (const fichero of readdirSync(dir)\n\t\t.filter((f) => f.endsWith(\".md\"))\n\t\t.sort()) {\n\t\tconst contenido = readFileSync(join(dir, fichero), \"utf8\");\n\t\tconst parrafos = contenido\n\t\t\t.split(/\\n\\s*\\n/)\n\t\t\t.map((p) => p.trim())\n\t\t\t.filter(Boolean);\n\t\tparrafos.forEach((parrafo, i) => {\n\t\t\tconst citas: Cita[] = [];\n\t\t\tfor (const sinHuella of extraerCitas(parrafo)) {\n\t\t\t\tconst fuente = leer(sinHuella.fichero);\n\t\t\t\tif (fuente === null) continue;\n\t\t\t\tconst lineas = fuente.split(\"\\n\").slice(sinHuella.desde - 1, sinHuella.hasta);\n\t\t\t\tif (lineas.length === 0) continue;\n\t\t\t\tcitas.push({ ...sinHuella, huella: huellaDeTexto(lineas) });\n\t\t\t}\n\t\t\tafirmaciones.push({ id: `${fichero}#${i}`, texto: parrafo.slice(0, 400), citas });\n\t\t});\n\t}\n\treturn { version: 1, afirmaciones };\n}\n"]}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Citas verificables para la wiki del repositorio.
3
+ *
4
+ * Una wiki generada por un modelo envejece mal: describe un código que ya no
5
+ * existe y nadie se entera hasta que alguien la sigue y pierde una tarde. La
6
+ * diferencia que buscamos no es generar mejor prosa, es que **cada afirmación
7
+ * lleve su cita a `fichero:línea` y se sepa cuándo deja de ser cierta**.
8
+ *
9
+ * Aquí vive esa parte. Es pura: recibe texto y contenidos de fichero, no toca
10
+ * disco ni llama a ningún modelo.
11
+ *
12
+ * La decisión que la hace útil en vez de molesta: si las líneas citadas
13
+ * **cambiaron**, la afirmación queda obsoleta; pero si solo se **movieron** —el
14
+ * mismo texto está más arriba o más abajo— la cita se reubica y la afirmación
15
+ * sigue viva. Sin eso, insertar un import al principio de un fichero invalidaría
16
+ * cada cita del fichero entero, la wiki daría cientos de falsos positivos y en
17
+ * dos días nadie volvería a mirarla.
18
+ */
19
+ export interface Cita {
20
+ fichero: string;
21
+ /** 1-indexado e inclusivo, como lo escribe la gente. */
22
+ desde: number;
23
+ hasta: number;
24
+ /** Huella del texto citado cuando se escribió la afirmación. */
25
+ huella: string;
26
+ }
27
+ export interface Afirmacion {
28
+ id: string;
29
+ texto: string;
30
+ citas: Cita[];
31
+ }
32
+ export type EstadoCita = {
33
+ estado: "vigente";
34
+ cita: Cita;
35
+ } | {
36
+ estado: "movida";
37
+ cita: Cita;
38
+ desde: number;
39
+ hasta: number;
40
+ } | {
41
+ estado: "obsoleta";
42
+ cita: Cita;
43
+ motivo: string;
44
+ };
45
+ /**
46
+ * Huella del texto citado.
47
+ *
48
+ * Se normaliza el final de línea y los espacios al final de cada línea: un
49
+ * formateador que quita un espacio sobrante no cambia lo que el código dice, y
50
+ * marcar eso como obsoleto entrenaría a todo el mundo a ignorar los avisos.
51
+ * La indentación de la izquierda SÍ cuenta: en un lenguaje con bloques, mover
52
+ * algo de nivel sí cambia lo que hace.
53
+ */
54
+ export declare function huellaDeTexto(lineas: string[]): string;
55
+ /**
56
+ * Busca el texto citado en otro sitio del fichero.
57
+ *
58
+ * Devuelve la primera línea (1-indexada) donde encaja el bloque entero, o
59
+ * `null`. Es una búsqueda literal por bloques, no difusa: reubicar una cita
60
+ * sobre un parecido sería peor que declararla obsoleta, porque la afirmación
61
+ * pasaría a apuntar a un código que no es el suyo.
62
+ */
63
+ export declare function buscarBloque(lineas: string[], huella: string, alto: number): number | null;
64
+ /**
65
+ * Comprueba una cita contra el contenido actual del fichero.
66
+ *
67
+ * `contenido` es `null` si el fichero ya no existe.
68
+ */
69
+ export declare function verificarCita(cita: Cita, contenido: string | null): EstadoCita;
70
+ export interface EstadoAfirmacion {
71
+ afirmacion: Afirmacion;
72
+ citas: EstadoCita[];
73
+ /** Obsoleta si CUALQUIERA de sus citas lo está. Ver más abajo. */
74
+ obsoleta: boolean;
75
+ }
76
+ /**
77
+ * Comprueba una afirmación entera.
78
+ *
79
+ * Basta una cita obsoleta para marcarla: una afirmación apoyada en tres trozos
80
+ * de código de los que uno ya no dice lo que decía es, como mínimo,
81
+ * sospechosa. Exigir que fallen todas dejaría pasar justo el caso peligroso —
82
+ * la media verdad.
83
+ */
84
+ export declare function verificarAfirmacion(afirmacion: Afirmacion, leer: (fichero: string) => string | null): EstadoAfirmacion;
85
+ export interface ResumenWiki {
86
+ total: number;
87
+ vigentes: number;
88
+ movidas: number;
89
+ obsoletas: number;
90
+ sinCitas: number;
91
+ detalles: EstadoAfirmacion[];
92
+ }
93
+ export declare function verificarWiki(afirmaciones: Afirmacion[], leer: (fichero: string) => string | null): ResumenWiki;
94
+ /**
95
+ * Reescribe las citas que solo se movieron.
96
+ *
97
+ * Devuelve las afirmaciones con las líneas actualizadas; las obsoletas se
98
+ * dejan intactas a propósito: arreglarlas requiere leer el código nuevo y
99
+ * decidir si la frase sigue siendo cierta, y eso no lo hace un `replace`.
100
+ */
101
+ export declare function reubicarCitas(resumen: ResumenWiki): Afirmacion[];
102
+ /** `fichero:12-30` o `fichero:12`. Es lo que la gente escribe a mano. */
103
+ export declare function formatearCita(cita: Cita): string;
104
+ /**
105
+ * Saca las citas de un texto en Markdown.
106
+ *
107
+ * Sin huella: quien escribe a mano no la conoce. La calcula quien indexa, que
108
+ * es el que tiene el fichero delante.
109
+ */
110
+ export declare function extraerCitas(markdown: string): Array<Omit<Cita, "huella">>;
111
+ //# sourceMappingURL=citas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"citas.d.ts","sourceRoot":"","sources":["../../../src/core/wiki/citas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,MAAM,WAAW,IAAI;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,kEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;CACd;AAED,MAAM,MAAM,UAAU,GACnB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GACjC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9D;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAGtD;AAOD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM1F;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,UAAU,CA2B9E;AAED,MAAM,WAAW,gBAAgB;IAChC,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,oEAAkE;IAClE,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAClC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GACtC,gBAAgB,CAGlB;AAED,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,wBAAgB,aAAa,CAAC,YAAY,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,WAAW,CAiB/G;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,UAAU,EAAE,CAOhE;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAEhD;AAID;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAQ1E","sourcesContent":["/**\n * Citas verificables para la wiki del repositorio.\n *\n * Una wiki generada por un modelo envejece mal: describe un código que ya no\n * existe y nadie se entera hasta que alguien la sigue y pierde una tarde. La\n * diferencia que buscamos no es generar mejor prosa, es que **cada afirmación\n * lleve su cita a `fichero:línea` y se sepa cuándo deja de ser cierta**.\n *\n * Aquí vive esa parte. Es pura: recibe texto y contenidos de fichero, no toca\n * disco ni llama a ningún modelo.\n *\n * La decisión que la hace útil en vez de molesta: si las líneas citadas\n * **cambiaron**, la afirmación queda obsoleta; pero si solo se **movieron** —el\n * mismo texto está más arriba o más abajo— la cita se reubica y la afirmación\n * sigue viva. Sin eso, insertar un import al principio de un fichero invalidaría\n * cada cita del fichero entero, la wiki daría cientos de falsos positivos y en\n * dos días nadie volvería a mirarla.\n */\n\nimport { createHash } from \"node:crypto\";\n\nexport interface Cita {\n\tfichero: string;\n\t/** 1-indexado e inclusivo, como lo escribe la gente. */\n\tdesde: number;\n\thasta: number;\n\t/** Huella del texto citado cuando se escribió la afirmación. */\n\thuella: string;\n}\n\nexport interface Afirmacion {\n\tid: string;\n\ttexto: string;\n\tcitas: Cita[];\n}\n\nexport type EstadoCita =\n\t| { estado: \"vigente\"; cita: Cita }\n\t| { estado: \"movida\"; cita: Cita; desde: number; hasta: number }\n\t| { estado: \"obsoleta\"; cita: Cita; motivo: string };\n\n/**\n * Huella del texto citado.\n *\n * Se normaliza el final de línea y los espacios al final de cada línea: un\n * formateador que quita un espacio sobrante no cambia lo que el código dice, y\n * marcar eso como obsoleto entrenaría a todo el mundo a ignorar los avisos.\n * La indentación de la izquierda SÍ cuenta: en un lenguaje con bloques, mover\n * algo de nivel sí cambia lo que hace.\n */\nexport function huellaDeTexto(lineas: string[]): string {\n\tconst normalizado = lineas.map((l) => l.replace(/\\s+$/, \"\")).join(\"\\n\");\n\treturn createHash(\"sha256\").update(normalizado).digest(\"hex\").slice(0, 16);\n}\n\nfunction extraer(lineas: string[], desde: number, hasta: number): string[] | null {\n\tif (desde < 1 || hasta < desde || hasta > lineas.length) return null;\n\treturn lineas.slice(desde - 1, hasta);\n}\n\n/**\n * Busca el texto citado en otro sitio del fichero.\n *\n * Devuelve la primera línea (1-indexada) donde encaja el bloque entero, o\n * `null`. Es una búsqueda literal por bloques, no difusa: reubicar una cita\n * sobre un parecido sería peor que declararla obsoleta, porque la afirmación\n * pasaría a apuntar a un código que no es el suyo.\n */\nexport function buscarBloque(lineas: string[], huella: string, alto: number): number | null {\n\tif (alto <= 0 || alto > lineas.length) return null;\n\tfor (let inicio = 0; inicio + alto <= lineas.length; inicio++) {\n\t\tif (huellaDeTexto(lineas.slice(inicio, inicio + alto)) === huella) return inicio + 1;\n\t}\n\treturn null;\n}\n\n/**\n * Comprueba una cita contra el contenido actual del fichero.\n *\n * `contenido` es `null` si el fichero ya no existe.\n */\nexport function verificarCita(cita: Cita, contenido: string | null): EstadoCita {\n\tif (contenido === null) {\n\t\treturn { estado: \"obsoleta\", cita, motivo: `el fichero ${cita.fichero} ya no existe` };\n\t}\n\tconst lineas = contenido.split(\"\\n\");\n\tconst alto = cita.hasta - cita.desde + 1;\n\n\tconst enSuSitio = extraer(lineas, cita.desde, cita.hasta);\n\tif (enSuSitio && huellaDeTexto(enSuSitio) === cita.huella) {\n\t\treturn { estado: \"vigente\", cita };\n\t}\n\n\t// Puede que solo se haya movido. Ver la cabecera: sin esto, un import nuevo\n\t// al principio invalidaría todas las citas del fichero.\n\tconst nuevoInicio = buscarBloque(lineas, cita.huella, alto);\n\tif (nuevoInicio !== null) {\n\t\treturn { estado: \"movida\", cita, desde: nuevoInicio, hasta: nuevoInicio + alto - 1 };\n\t}\n\n\treturn {\n\t\testado: \"obsoleta\",\n\t\tcita,\n\t\tmotivo:\n\t\t\tenSuSitio === null\n\t\t\t\t? `${cita.fichero} ya no llega a la línea ${cita.hasta}`\n\t\t\t\t: `las líneas ${cita.desde}-${cita.hasta} de ${cita.fichero} han cambiado`,\n\t};\n}\n\nexport interface EstadoAfirmacion {\n\tafirmacion: Afirmacion;\n\tcitas: EstadoCita[];\n\t/** Obsoleta si CUALQUIERA de sus citas lo está. Ver más abajo. */\n\tobsoleta: boolean;\n}\n\n/**\n * Comprueba una afirmación entera.\n *\n * Basta una cita obsoleta para marcarla: una afirmación apoyada en tres trozos\n * de código de los que uno ya no dice lo que decía es, como mínimo,\n * sospechosa. Exigir que fallen todas dejaría pasar justo el caso peligroso —\n * la media verdad.\n */\nexport function verificarAfirmacion(\n\tafirmacion: Afirmacion,\n\tleer: (fichero: string) => string | null,\n): EstadoAfirmacion {\n\tconst citas = afirmacion.citas.map((c) => verificarCita(c, leer(c.fichero)));\n\treturn { afirmacion, citas, obsoleta: citas.some((c) => c.estado === \"obsoleta\") };\n}\n\nexport interface ResumenWiki {\n\ttotal: number;\n\tvigentes: number;\n\tmovidas: number;\n\tobsoletas: number;\n\tsinCitas: number;\n\tdetalles: EstadoAfirmacion[];\n}\n\nexport function verificarWiki(afirmaciones: Afirmacion[], leer: (fichero: string) => string | null): ResumenWiki {\n\tconst detalles = afirmaciones.map((a) => verificarAfirmacion(a, leer));\n\treturn {\n\t\ttotal: detalles.length,\n\t\t// Exige al menos una cita: `[].every()` es true, así que sin este filtro\n\t\t// una afirmación sin respaldo se contaba como verificada — que es\n\t\t// exactamente la mentira que esta wiki existe para evitar.\n\t\tvigentes: detalles.filter(\n\t\t\t(d) => d.afirmacion.citas.length > 0 && !d.obsoleta && d.citas.every((c) => c.estado === \"vigente\"),\n\t\t).length,\n\t\tmovidas: detalles.filter((d) => !d.obsoleta && d.citas.some((c) => c.estado === \"movida\")).length,\n\t\tobsoletas: detalles.filter((d) => d.obsoleta).length,\n\t\t// Una afirmación sin cita no es documentación, es una opinión. Se cuenta\n\t\t// aparte para que se vea cuánta wiki no está respaldada por nada.\n\t\tsinCitas: detalles.filter((d) => d.afirmacion.citas.length === 0).length,\n\t\tdetalles,\n\t};\n}\n\n/**\n * Reescribe las citas que solo se movieron.\n *\n * Devuelve las afirmaciones con las líneas actualizadas; las obsoletas se\n * dejan intactas a propósito: arreglarlas requiere leer el código nuevo y\n * decidir si la frase sigue siendo cierta, y eso no lo hace un `replace`.\n */\nexport function reubicarCitas(resumen: ResumenWiki): Afirmacion[] {\n\treturn resumen.detalles.map(({ afirmacion, citas }) => ({\n\t\t...afirmacion,\n\t\tcitas: citas.map((estado) =>\n\t\t\testado.estado === \"movida\" ? { ...estado.cita, desde: estado.desde, hasta: estado.hasta } : estado.cita,\n\t\t),\n\t}));\n}\n\n/** `fichero:12-30` o `fichero:12`. Es lo que la gente escribe a mano. */\nexport function formatearCita(cita: Cita): string {\n\treturn cita.desde === cita.hasta ? `${cita.fichero}:${cita.desde}` : `${cita.fichero}:${cita.desde}-${cita.hasta}`;\n}\n\nconst PATRON_CITA = /([\\w./@-]+\\.\\w+):(\\d+)(?:-(\\d+))?/g;\n\n/**\n * Saca las citas de un texto en Markdown.\n *\n * Sin huella: quien escribe a mano no la conoce. La calcula quien indexa, que\n * es el que tiene el fichero delante.\n */\nexport function extraerCitas(markdown: string): Array<Omit<Cita, \"huella\">> {\n\tconst encontradas: Array<Omit<Cita, \"huella\">> = [];\n\tfor (const m of markdown.matchAll(PATRON_CITA)) {\n\t\tconst desde = Number(m[2]);\n\t\tconst hasta = m[3] ? Number(m[3]) : desde;\n\t\tif (desde >= 1 && hasta >= desde) encontradas.push({ fichero: m[1], desde, hasta });\n\t}\n\treturn encontradas;\n}\n"]}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Citas verificables para la wiki del repositorio.
3
+ *
4
+ * Una wiki generada por un modelo envejece mal: describe un código que ya no
5
+ * existe y nadie se entera hasta que alguien la sigue y pierde una tarde. La
6
+ * diferencia que buscamos no es generar mejor prosa, es que **cada afirmación
7
+ * lleve su cita a `fichero:línea` y se sepa cuándo deja de ser cierta**.
8
+ *
9
+ * Aquí vive esa parte. Es pura: recibe texto y contenidos de fichero, no toca
10
+ * disco ni llama a ningún modelo.
11
+ *
12
+ * La decisión que la hace útil en vez de molesta: si las líneas citadas
13
+ * **cambiaron**, la afirmación queda obsoleta; pero si solo se **movieron** —el
14
+ * mismo texto está más arriba o más abajo— la cita se reubica y la afirmación
15
+ * sigue viva. Sin eso, insertar un import al principio de un fichero invalidaría
16
+ * cada cita del fichero entero, la wiki daría cientos de falsos positivos y en
17
+ * dos días nadie volvería a mirarla.
18
+ */
19
+ import { createHash } from "node:crypto";
20
+ /**
21
+ * Huella del texto citado.
22
+ *
23
+ * Se normaliza el final de línea y los espacios al final de cada línea: un
24
+ * formateador que quita un espacio sobrante no cambia lo que el código dice, y
25
+ * marcar eso como obsoleto entrenaría a todo el mundo a ignorar los avisos.
26
+ * La indentación de la izquierda SÍ cuenta: en un lenguaje con bloques, mover
27
+ * algo de nivel sí cambia lo que hace.
28
+ */
29
+ export function huellaDeTexto(lineas) {
30
+ const normalizado = lineas.map((l) => l.replace(/\s+$/, "")).join("\n");
31
+ return createHash("sha256").update(normalizado).digest("hex").slice(0, 16);
32
+ }
33
+ function extraer(lineas, desde, hasta) {
34
+ if (desde < 1 || hasta < desde || hasta > lineas.length)
35
+ return null;
36
+ return lineas.slice(desde - 1, hasta);
37
+ }
38
+ /**
39
+ * Busca el texto citado en otro sitio del fichero.
40
+ *
41
+ * Devuelve la primera línea (1-indexada) donde encaja el bloque entero, o
42
+ * `null`. Es una búsqueda literal por bloques, no difusa: reubicar una cita
43
+ * sobre un parecido sería peor que declararla obsoleta, porque la afirmación
44
+ * pasaría a apuntar a un código que no es el suyo.
45
+ */
46
+ export function buscarBloque(lineas, huella, alto) {
47
+ if (alto <= 0 || alto > lineas.length)
48
+ return null;
49
+ for (let inicio = 0; inicio + alto <= lineas.length; inicio++) {
50
+ if (huellaDeTexto(lineas.slice(inicio, inicio + alto)) === huella)
51
+ return inicio + 1;
52
+ }
53
+ return null;
54
+ }
55
+ /**
56
+ * Comprueba una cita contra el contenido actual del fichero.
57
+ *
58
+ * `contenido` es `null` si el fichero ya no existe.
59
+ */
60
+ export function verificarCita(cita, contenido) {
61
+ if (contenido === null) {
62
+ return { estado: "obsoleta", cita, motivo: `el fichero ${cita.fichero} ya no existe` };
63
+ }
64
+ const lineas = contenido.split("\n");
65
+ const alto = cita.hasta - cita.desde + 1;
66
+ const enSuSitio = extraer(lineas, cita.desde, cita.hasta);
67
+ if (enSuSitio && huellaDeTexto(enSuSitio) === cita.huella) {
68
+ return { estado: "vigente", cita };
69
+ }
70
+ // Puede que solo se haya movido. Ver la cabecera: sin esto, un import nuevo
71
+ // al principio invalidaría todas las citas del fichero.
72
+ const nuevoInicio = buscarBloque(lineas, cita.huella, alto);
73
+ if (nuevoInicio !== null) {
74
+ return { estado: "movida", cita, desde: nuevoInicio, hasta: nuevoInicio + alto - 1 };
75
+ }
76
+ return {
77
+ estado: "obsoleta",
78
+ cita,
79
+ motivo: enSuSitio === null
80
+ ? `${cita.fichero} ya no llega a la línea ${cita.hasta}`
81
+ : `las líneas ${cita.desde}-${cita.hasta} de ${cita.fichero} han cambiado`,
82
+ };
83
+ }
84
+ /**
85
+ * Comprueba una afirmación entera.
86
+ *
87
+ * Basta una cita obsoleta para marcarla: una afirmación apoyada en tres trozos
88
+ * de código de los que uno ya no dice lo que decía es, como mínimo,
89
+ * sospechosa. Exigir que fallen todas dejaría pasar justo el caso peligroso —
90
+ * la media verdad.
91
+ */
92
+ export function verificarAfirmacion(afirmacion, leer) {
93
+ const citas = afirmacion.citas.map((c) => verificarCita(c, leer(c.fichero)));
94
+ return { afirmacion, citas, obsoleta: citas.some((c) => c.estado === "obsoleta") };
95
+ }
96
+ export function verificarWiki(afirmaciones, leer) {
97
+ const detalles = afirmaciones.map((a) => verificarAfirmacion(a, leer));
98
+ return {
99
+ total: detalles.length,
100
+ // Exige al menos una cita: `[].every()` es true, así que sin este filtro
101
+ // una afirmación sin respaldo se contaba como verificada — que es
102
+ // exactamente la mentira que esta wiki existe para evitar.
103
+ vigentes: detalles.filter((d) => d.afirmacion.citas.length > 0 && !d.obsoleta && d.citas.every((c) => c.estado === "vigente")).length,
104
+ movidas: detalles.filter((d) => !d.obsoleta && d.citas.some((c) => c.estado === "movida")).length,
105
+ obsoletas: detalles.filter((d) => d.obsoleta).length,
106
+ // Una afirmación sin cita no es documentación, es una opinión. Se cuenta
107
+ // aparte para que se vea cuánta wiki no está respaldada por nada.
108
+ sinCitas: detalles.filter((d) => d.afirmacion.citas.length === 0).length,
109
+ detalles,
110
+ };
111
+ }
112
+ /**
113
+ * Reescribe las citas que solo se movieron.
114
+ *
115
+ * Devuelve las afirmaciones con las líneas actualizadas; las obsoletas se
116
+ * dejan intactas a propósito: arreglarlas requiere leer el código nuevo y
117
+ * decidir si la frase sigue siendo cierta, y eso no lo hace un `replace`.
118
+ */
119
+ export function reubicarCitas(resumen) {
120
+ return resumen.detalles.map(({ afirmacion, citas }) => ({
121
+ ...afirmacion,
122
+ citas: citas.map((estado) => estado.estado === "movida" ? { ...estado.cita, desde: estado.desde, hasta: estado.hasta } : estado.cita),
123
+ }));
124
+ }
125
+ /** `fichero:12-30` o `fichero:12`. Es lo que la gente escribe a mano. */
126
+ export function formatearCita(cita) {
127
+ return cita.desde === cita.hasta ? `${cita.fichero}:${cita.desde}` : `${cita.fichero}:${cita.desde}-${cita.hasta}`;
128
+ }
129
+ const PATRON_CITA = /([\w./@-]+\.\w+):(\d+)(?:-(\d+))?/g;
130
+ /**
131
+ * Saca las citas de un texto en Markdown.
132
+ *
133
+ * Sin huella: quien escribe a mano no la conoce. La calcula quien indexa, que
134
+ * es el que tiene el fichero delante.
135
+ */
136
+ export function extraerCitas(markdown) {
137
+ const encontradas = [];
138
+ for (const m of markdown.matchAll(PATRON_CITA)) {
139
+ const desde = Number(m[2]);
140
+ const hasta = m[3] ? Number(m[3]) : desde;
141
+ if (desde >= 1 && hasta >= desde)
142
+ encontradas.push({ fichero: m[1], desde, hasta });
143
+ }
144
+ return encontradas;
145
+ }
146
+ //# sourceMappingURL=citas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"citas.js","sourceRoot":"","sources":["../../../src/core/wiki/citas.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Citas verificables para la wiki del repositorio.\n *\n * Una wiki generada por un modelo envejece mal: describe un código que ya no\n * existe y nadie se entera hasta que alguien la sigue y pierde una tarde. La\n * diferencia que buscamos no es generar mejor prosa, es que **cada afirmación\n * lleve su cita a `fichero:línea` y se sepa cuándo deja de ser cierta**.\n *\n * Aquí vive esa parte. Es pura: recibe texto y contenidos de fichero, no toca\n * disco ni llama a ningún modelo.\n *\n * La decisión que la hace útil en vez de molesta: si las líneas citadas\n * **cambiaron**, la afirmación queda obsoleta; pero si solo se **movieron** —el\n * mismo texto está más arriba o más abajo— la cita se reubica y la afirmación\n * sigue viva. Sin eso, insertar un import al principio de un fichero invalidaría\n * cada cita del fichero entero, la wiki daría cientos de falsos positivos y en\n * dos días nadie volvería a mirarla.\n */\n\nimport { createHash } from \"node:crypto\";\n\nexport interface Cita {\n\tfichero: string;\n\t/** 1-indexado e inclusivo, como lo escribe la gente. */\n\tdesde: number;\n\thasta: number;\n\t/** Huella del texto citado cuando se escribió la afirmación. */\n\thuella: string;\n}\n\nexport interface Afirmacion {\n\tid: string;\n\ttexto: string;\n\tcitas: Cita[];\n}\n\nexport type EstadoCita =\n\t| { estado: \"vigente\"; cita: Cita }\n\t| { estado: \"movida\"; cita: Cita; desde: number; hasta: number }\n\t| { estado: \"obsoleta\"; cita: Cita; motivo: string };\n\n/**\n * Huella del texto citado.\n *\n * Se normaliza el final de línea y los espacios al final de cada línea: un\n * formateador que quita un espacio sobrante no cambia lo que el código dice, y\n * marcar eso como obsoleto entrenaría a todo el mundo a ignorar los avisos.\n * La indentación de la izquierda SÍ cuenta: en un lenguaje con bloques, mover\n * algo de nivel sí cambia lo que hace.\n */\nexport function huellaDeTexto(lineas: string[]): string {\n\tconst normalizado = lineas.map((l) => l.replace(/\\s+$/, \"\")).join(\"\\n\");\n\treturn createHash(\"sha256\").update(normalizado).digest(\"hex\").slice(0, 16);\n}\n\nfunction extraer(lineas: string[], desde: number, hasta: number): string[] | null {\n\tif (desde < 1 || hasta < desde || hasta > lineas.length) return null;\n\treturn lineas.slice(desde - 1, hasta);\n}\n\n/**\n * Busca el texto citado en otro sitio del fichero.\n *\n * Devuelve la primera línea (1-indexada) donde encaja el bloque entero, o\n * `null`. Es una búsqueda literal por bloques, no difusa: reubicar una cita\n * sobre un parecido sería peor que declararla obsoleta, porque la afirmación\n * pasaría a apuntar a un código que no es el suyo.\n */\nexport function buscarBloque(lineas: string[], huella: string, alto: number): number | null {\n\tif (alto <= 0 || alto > lineas.length) return null;\n\tfor (let inicio = 0; inicio + alto <= lineas.length; inicio++) {\n\t\tif (huellaDeTexto(lineas.slice(inicio, inicio + alto)) === huella) return inicio + 1;\n\t}\n\treturn null;\n}\n\n/**\n * Comprueba una cita contra el contenido actual del fichero.\n *\n * `contenido` es `null` si el fichero ya no existe.\n */\nexport function verificarCita(cita: Cita, contenido: string | null): EstadoCita {\n\tif (contenido === null) {\n\t\treturn { estado: \"obsoleta\", cita, motivo: `el fichero ${cita.fichero} ya no existe` };\n\t}\n\tconst lineas = contenido.split(\"\\n\");\n\tconst alto = cita.hasta - cita.desde + 1;\n\n\tconst enSuSitio = extraer(lineas, cita.desde, cita.hasta);\n\tif (enSuSitio && huellaDeTexto(enSuSitio) === cita.huella) {\n\t\treturn { estado: \"vigente\", cita };\n\t}\n\n\t// Puede que solo se haya movido. Ver la cabecera: sin esto, un import nuevo\n\t// al principio invalidaría todas las citas del fichero.\n\tconst nuevoInicio = buscarBloque(lineas, cita.huella, alto);\n\tif (nuevoInicio !== null) {\n\t\treturn { estado: \"movida\", cita, desde: nuevoInicio, hasta: nuevoInicio + alto - 1 };\n\t}\n\n\treturn {\n\t\testado: \"obsoleta\",\n\t\tcita,\n\t\tmotivo:\n\t\t\tenSuSitio === null\n\t\t\t\t? `${cita.fichero} ya no llega a la línea ${cita.hasta}`\n\t\t\t\t: `las líneas ${cita.desde}-${cita.hasta} de ${cita.fichero} han cambiado`,\n\t};\n}\n\nexport interface EstadoAfirmacion {\n\tafirmacion: Afirmacion;\n\tcitas: EstadoCita[];\n\t/** Obsoleta si CUALQUIERA de sus citas lo está. Ver más abajo. */\n\tobsoleta: boolean;\n}\n\n/**\n * Comprueba una afirmación entera.\n *\n * Basta una cita obsoleta para marcarla: una afirmación apoyada en tres trozos\n * de código de los que uno ya no dice lo que decía es, como mínimo,\n * sospechosa. Exigir que fallen todas dejaría pasar justo el caso peligroso —\n * la media verdad.\n */\nexport function verificarAfirmacion(\n\tafirmacion: Afirmacion,\n\tleer: (fichero: string) => string | null,\n): EstadoAfirmacion {\n\tconst citas = afirmacion.citas.map((c) => verificarCita(c, leer(c.fichero)));\n\treturn { afirmacion, citas, obsoleta: citas.some((c) => c.estado === \"obsoleta\") };\n}\n\nexport interface ResumenWiki {\n\ttotal: number;\n\tvigentes: number;\n\tmovidas: number;\n\tobsoletas: number;\n\tsinCitas: number;\n\tdetalles: EstadoAfirmacion[];\n}\n\nexport function verificarWiki(afirmaciones: Afirmacion[], leer: (fichero: string) => string | null): ResumenWiki {\n\tconst detalles = afirmaciones.map((a) => verificarAfirmacion(a, leer));\n\treturn {\n\t\ttotal: detalles.length,\n\t\t// Exige al menos una cita: `[].every()` es true, así que sin este filtro\n\t\t// una afirmación sin respaldo se contaba como verificada — que es\n\t\t// exactamente la mentira que esta wiki existe para evitar.\n\t\tvigentes: detalles.filter(\n\t\t\t(d) => d.afirmacion.citas.length > 0 && !d.obsoleta && d.citas.every((c) => c.estado === \"vigente\"),\n\t\t).length,\n\t\tmovidas: detalles.filter((d) => !d.obsoleta && d.citas.some((c) => c.estado === \"movida\")).length,\n\t\tobsoletas: detalles.filter((d) => d.obsoleta).length,\n\t\t// Una afirmación sin cita no es documentación, es una opinión. Se cuenta\n\t\t// aparte para que se vea cuánta wiki no está respaldada por nada.\n\t\tsinCitas: detalles.filter((d) => d.afirmacion.citas.length === 0).length,\n\t\tdetalles,\n\t};\n}\n\n/**\n * Reescribe las citas que solo se movieron.\n *\n * Devuelve las afirmaciones con las líneas actualizadas; las obsoletas se\n * dejan intactas a propósito: arreglarlas requiere leer el código nuevo y\n * decidir si la frase sigue siendo cierta, y eso no lo hace un `replace`.\n */\nexport function reubicarCitas(resumen: ResumenWiki): Afirmacion[] {\n\treturn resumen.detalles.map(({ afirmacion, citas }) => ({\n\t\t...afirmacion,\n\t\tcitas: citas.map((estado) =>\n\t\t\testado.estado === \"movida\" ? { ...estado.cita, desde: estado.desde, hasta: estado.hasta } : estado.cita,\n\t\t),\n\t}));\n}\n\n/** `fichero:12-30` o `fichero:12`. Es lo que la gente escribe a mano. */\nexport function formatearCita(cita: Cita): string {\n\treturn cita.desde === cita.hasta ? `${cita.fichero}:${cita.desde}` : `${cita.fichero}:${cita.desde}-${cita.hasta}`;\n}\n\nconst PATRON_CITA = /([\\w./@-]+\\.\\w+):(\\d+)(?:-(\\d+))?/g;\n\n/**\n * Saca las citas de un texto en Markdown.\n *\n * Sin huella: quien escribe a mano no la conoce. La calcula quien indexa, que\n * es el que tiene el fichero delante.\n */\nexport function extraerCitas(markdown: string): Array<Omit<Cita, \"huella\">> {\n\tconst encontradas: Array<Omit<Cita, \"huella\">> = [];\n\tfor (const m of markdown.matchAll(PATRON_CITA)) {\n\t\tconst desde = Number(m[2]);\n\t\tconst hasta = m[3] ? Number(m[3]) : desde;\n\t\tif (desde >= 1 && hasta >= desde) encontradas.push({ fichero: m[1], desde, hasta });\n\t}\n\treturn encontradas;\n}\n"]}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * AgentRunner — subagente del Ada Intelligence Engine.
3
+ *
4
+ * Un subagente es una sesión del SDK (AgentSessionRuntime via createAgentSession)
5
+ * con: modelo resuelto (spec/tier/fallback), tools configuradas, cwd (base o
6
+ * worktree), instructions opcionales y límites (timeout, retries). El runner
7
+ * captura la respuesta final, el structured output (schema typebox con fallback
8
+ * a extracción de prosa) y el usage real (tokens/coste).
9
+ *
10
+ * La creación de la sesión es inyectable (createSession) para tests con fakes.
11
+ */
12
+ import type { TSchema } from "typebox";
13
+ import type { AgentSession } from "../agent-session.ts";
14
+ import type { ToolDefinition } from "../extensions/types.ts";
15
+ import type { AgentRunOptions, AgentRunResult, AgentUsage, WorkflowErrorCode } from "./types.ts";
16
+ export interface SubagentSession {
17
+ session: AgentSession;
18
+ dispose(): void;
19
+ getUsage(): AgentUsage;
20
+ }
21
+ export type CreateSubagentSession = (options: {
22
+ cwd: string;
23
+ agentDir: string;
24
+ modelSpec?: string;
25
+ tools?: string[];
26
+ customTools?: ToolDefinition[];
27
+ sessionName?: string;
28
+ instructions?: string;
29
+ }) => Promise<SubagentSession>;
30
+ export interface AgentRunnerOptions {
31
+ agentDir: string;
32
+ createSession: CreateSubagentSession;
33
+ /** Limiter compartido del run (concurrency). */
34
+ limiter: <T>(fn: () => Promise<T>) => Promise<T>;
35
+ /** Contador global de agentes del run (maxAgents). */
36
+ agentCounter: {
37
+ count: number;
38
+ };
39
+ /** Techo de agentes por run (`workflows.maxAgentsPerRun`). */
40
+ maxAgents: number;
41
+ retries?: number;
42
+ agentTimeoutMs?: number | null;
43
+ }
44
+ /** Hash de identidad del agente para el journal (prompt+model+phase+schema+stableKey). */
45
+ export declare function agentIdentityHash(options: {
46
+ prompt: string;
47
+ model?: string;
48
+ tier?: string;
49
+ phase?: string;
50
+ stableKey?: string;
51
+ schema?: TSchema | undefined;
52
+ }): string;
53
+ /** Extraer el texto de una respuesta (string o content array). */
54
+ export declare function messageText(content: unknown): string;
55
+ /** Extraer JSON del texto (para structured output fallback). */
56
+ export declare function extractJson(text: string): unknown | undefined;
57
+ /**
58
+ * Allowlist de tools del subagente.
59
+ *
60
+ * Desenreda un bug latente: `options.tools` son tools EXTRA (web_search…) y se
61
+ * pasaban a la vez como `customTools` y como allowlist, de modo que pedir una
62
+ * tool extra ESTRECHABA el permiso en silencio a solo esa — un agente que pedía
63
+ * `web_search` perdía `read`/`bash`/`edit`/`write` sin que nadie lo notara.
64
+ * Ahora las extra se SUMAN a la base, que es lo que el nombre siempre prometió.
65
+ */
66
+ export declare function resolveAllowedTools(options: {
67
+ readOnly?: boolean;
68
+ web?: boolean;
69
+ browser?: boolean;
70
+ tools?: Array<{
71
+ name: string;
72
+ }>;
73
+ }): string[];
74
+ export declare class AgentRunner {
75
+ private agentDir;
76
+ private createSession;
77
+ private limiter;
78
+ private agentCounter;
79
+ private maxAgents;
80
+ private retries;
81
+ private agentTimeoutMs;
82
+ constructor(options: AgentRunnerOptions);
83
+ run<T = unknown>(options: AgentRunOptions): Promise<AgentRunResult<T> | null>;
84
+ private runOnce;
85
+ }
86
+ /** Tipos re-exportados para el index. */
87
+ export type { WorkflowErrorCode };
88
+ //# sourceMappingURL=agent-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-runner.d.ts","sourceRoot":"","sources":["../../../src/core/workflows/agent-runner.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * AgentRunner — subagente del Ada Intelligence Engine.\n *\n * Un subagente es una sesión del SDK (AgentSessionRuntime via createAgentSession)\n * con: modelo resuelto (spec/tier/fallback), tools configuradas, cwd (base o\n * worktree), instructions opcionales y límites (timeout, retries). El runner\n * captura la respuesta final, el structured output (schema typebox con fallback\n * a extracción de prosa) y el usage real (tokens/coste).\n *\n * La creación de la sesión es inyectable (createSession) para tests con fakes.\n */\n\nimport { createHash } from \"node:crypto\";\nimport type { TextContent } from \"@earendil-works/pi-ai\";\nimport type { TSchema } from \"typebox\";\nimport type { AgentSession, AgentSessionEvent } from \"../agent-session.ts\";\nimport type { ToolDefinition } from \"../extensions/types.ts\";\nimport { validarConReintentos } from \"./contrato/validador.ts\";\nimport { BufferDeHallazgos, crearHerramientaYield, ensamblarResultadoIncremental } from \"./contrato/yield.ts\";\nimport type { AgentRunOptions, AgentRunResult, AgentUsage, WorkflowErrorCode } from \"./types.ts\";\nimport { WorkflowError } from \"./types.ts\";\nimport { createWorktree, finalizeWorktree, type Worktree } from \"./worktree.ts\";\n\nexport interface SubagentSession {\n\tsession: AgentSession;\n\tdispose(): void;\n\tgetUsage(): AgentUsage;\n}\n\nexport type CreateSubagentSession = (options: {\n\tcwd: string;\n\tagentDir: string;\n\tmodelSpec?: string;\n\ttools?: string[];\n\tcustomTools?: ToolDefinition[];\n\tsessionName?: string;\n\tinstructions?: string;\n}) => Promise<SubagentSession>;\n\nexport interface AgentRunnerOptions {\n\tagentDir: string;\n\tcreateSession: CreateSubagentSession;\n\t/** Limiter compartido del run (concurrency). */\n\tlimiter: <T>(fn: () => Promise<T>) => Promise<T>;\n\t/** Contador global de agentes del run (maxAgents). */\n\tagentCounter: { count: number };\n\t/** Techo de agentes por run (`workflows.maxAgentsPerRun`). */\n\tmaxAgents: number;\n\tretries?: number;\n\tagentTimeoutMs?: number | null;\n}\n\n/** Hash de identidad del agente para el journal (prompt+model+phase+schema+stableKey). */\nexport function agentIdentityHash(options: {\n\tprompt: string;\n\tmodel?: string;\n\ttier?: string;\n\tphase?: string;\n\tstableKey?: string;\n\tschema?: TSchema | undefined;\n}): string {\n\tconst canonical = JSON.stringify({\n\t\tprompt: options.prompt,\n\t\tmodel: options.model ?? null,\n\t\ttier: options.tier ?? null,\n\t\tphase: options.phase ?? null,\n\t\tstableKey: options.stableKey ?? null,\n\t\tschema: options.schema ? JSON.stringify(options.schema) : null,\n\t});\n\treturn createHash(\"sha256\").update(canonical).digest(\"hex\");\n}\n\n/** Extraer el texto de una respuesta (string o content array). */\nexport function messageText(content: unknown): string {\n\tif (typeof content === \"string\") return content;\n\tif (!Array.isArray(content)) return \"\";\n\treturn content\n\t\t.filter((b): b is TextContent => typeof b === \"object\" && b !== null && (b as { type?: string }).type === \"text\")\n\t\t.map((b) => b.text ?? \"\")\n\t\t.join(\"\\n\")\n\t\t.trim();\n}\n\n/** Extraer JSON del texto (para structured output fallback). */\nexport function extractJson(text: string): unknown | undefined {\n\tconst cleaned = text\n\t\t.replace(/```json\\s*/g, \"\")\n\t\t.replace(/```/g, \"\")\n\t\t.trim();\n\tconst start = cleaned.indexOf(\"{\");\n\tconst end = cleaned.lastIndexOf(\"}\");\n\tif (start === -1 || end === -1) return undefined;\n\ttry {\n\t\treturn JSON.parse(cleaned.slice(start, end + 1));\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\n/**\n * Tools por defecto de un subagente (espejo de sdk.ts:263), MÁS `yield`\n * siempre — es la tool de entrega incremental (ver contrato/yield.ts) y no es\n * un permiso adicional: reportar un hallazgo no lee ni escribe nada que las\n * tools base ya no autoricen. Un subagente que nunca la llama se comporta\n * exactamente como antes.\n */\nconst SUBAGENT_DEFAULT_TOOLS = [\"read\", \"bash\", \"edit\", \"write\", \"yield\"];\n/**\n * Mínimo privilegio: leer y buscar, nada de escribir ni ejecutar. `yield`\n * también aquí — un agente de solo lectura cuyo trabajo ES encontrar cosas\n * necesita poder reportarlas.\n */\nconst SUBAGENT_READONLY_TOOLS = [\"read\", \"grep\", \"find\", \"ls\", \"yield\"];\n/** Red: nunca implícitas, ni siquiera bajo `readOnly`. Ver resolveAllowedTools. */\nconst WEB_TOOL_NAMES = [\"web_search\", \"web_fetch\"];\n/** Navegador: opt-in aparte de `web`. Conducir un navegador no es leer una URL. */\nconst BROWSER_TOOL_NAMES = [\n\t\"browser_open\",\n\t\"browser_navigate\",\n\t\"browser_read\",\n\t\"browser_click\",\n\t\"browser_type\",\n\t\"browser_screenshot\",\n\t\"browser_viewport\",\n\t\"browser_close\",\n];\n\n/**\n * Allowlist de tools del subagente.\n *\n * Desenreda un bug latente: `options.tools` son tools EXTRA (web_search…) y se\n * pasaban a la vez como `customTools` y como allowlist, de modo que pedir una\n * tool extra ESTRECHABA el permiso en silencio a solo esa — un agente que pedía\n * `web_search` perdía `read`/`bash`/`edit`/`write` sin que nadie lo notara.\n * Ahora las extra se SUMAN a la base, que es lo que el nombre siempre prometió.\n */\nexport function resolveAllowedTools(options: {\n\treadOnly?: boolean;\n\tweb?: boolean;\n\tbrowser?: boolean;\n\ttools?: Array<{ name: string }>;\n}): string[] {\n\tconst base = options.readOnly ? SUBAGENT_READONLY_TOOLS : SUBAGENT_DEFAULT_TOOLS;\n\tconst extras = (options.tools ?? []).map((t) => t.name);\n\t// El acceso a red es opt-in aunque `web_fetch` sea \"de lectura\": leer la web\n\t// no es leer el disco. Un subagente con red es una vía de salida para lo que\n\t// haya leído, así que el script tiene que pedirlo por su nombre.\n\tconst web = options.web ? WEB_TOOL_NAMES : [];\n\t// `browser` no se hereda de `web`: descargar una URL y conducir un navegador\n\t// con sesión, formularios y capturas no son el mismo permiso.\n\tconst navegador = options.browser ? BROWSER_TOOL_NAMES : [];\n\treturn [...new Set([...base, ...web, ...navegador, ...extras])];\n}\n\nexport class AgentRunner {\n\tprivate agentDir: string;\n\tprivate createSession: CreateSubagentSession;\n\tprivate limiter: AgentRunnerOptions[\"limiter\"];\n\tprivate agentCounter: AgentRunnerOptions[\"agentCounter\"];\n\tprivate maxAgents: number;\n\tprivate retries: number;\n\tprivate agentTimeoutMs: number | null;\n\n\tconstructor(options: AgentRunnerOptions) {\n\t\tthis.agentDir = options.agentDir;\n\t\tthis.createSession = options.createSession;\n\t\tthis.limiter = options.limiter;\n\t\tthis.agentCounter = options.agentCounter;\n\t\tthis.maxAgents = options.maxAgents;\n\t\tthis.retries = options.retries ?? 3;\n\t\tthis.agentTimeoutMs = options.agentTimeoutMs ?? null;\n\t}\n\n\tasync run<T = unknown>(options: AgentRunOptions): Promise<AgentRunResult<T> | null> {\n\t\treturn this.limiter(async () => {\n\t\t\tif (this.agentCounter.count >= this.maxAgents) {\n\t\t\t\tthrow new WorkflowError(\n\t\t\t\t\t\"WORKFLOW_MAX_AGENTS\",\n\t\t\t\t\t`Límite de agentes del run alcanzado (${this.maxAgents}). Súbelo con el ajuste workflows.maxAgentsPerRun.`,\n\t\t\t\t\t{ recoverable: false },\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis.agentCounter.count++;\n\n\t\t\tlet attempt = 0;\n\t\t\tlet lastError: Error | undefined;\n\t\t\tfor (; attempt <= this.retries; attempt++) {\n\t\t\t\tconst signal = options.signal;\n\t\t\t\tif (signal?.aborted) return null;\n\t\t\t\ttry {\n\t\t\t\t\treturn await this.runOnce<T>(options, signal);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (signal?.aborted) return null;\n\t\t\t\t\tif (isAbortError(error) || isTimeoutError(error)) throw error;\n\t\t\t\t\tlastError = error instanceof Error ? error : new Error(String(error));\n\t\t\t\t\tif (attempt >= this.retries) break;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (lastError) throw lastError;\n\t\t\treturn null;\n\t\t});\n\t}\n\n\tprivate async runOnce<T>(options: AgentRunOptions, signal?: AbortSignal): Promise<AgentRunResult<T> | null> {\n\t\t// Timeout combinado: el del agente + el del run.\n\t\tconst timeoutMs = options.timeoutMs ?? this.agentTimeoutMs;\n\t\tlet timeoutTimer: ReturnType<typeof setTimeout> | undefined;\n\t\tconst timeout = new Promise<never>((_resolve, reject) => {\n\t\t\tif (timeoutMs === null) return;\n\t\t\ttimeoutTimer = setTimeout(() => {\n\t\t\t\treject(\n\t\t\t\t\tnew WorkflowError(\"WORKFLOW_AGENT_TIMEOUT\", `Agent timed out after ${timeoutMs}ms`, {\n\t\t\t\t\t\trecoverable: false,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}, timeoutMs);\n\t\t});\n\n\t\tconst baseCwd = options.cwd ?? process.cwd();\n\t\t// Aislamiento git: los agentes con escritura que corren en paralelo\n\t\t// editaban el MISMO checkout y se pisaban en silencio. El nombre es\n\t\t// determinista (isolationKey = runId:callIndex) para que un resume\n\t\t// reencuentre el mismo worktree. Fuera de un repo git hace no-op.\n\t\tlet worktree: Worktree | null = null;\n\t\tlet finalized: { branch?: string; kept: boolean } | undefined;\n\t\tconst worktreeMessage = `ada: ${options.label ?? options.isolationKey ?? \"agent\"}`;\n\t\tif (options.isolation === \"worktree\") {\n\t\t\tworktree = await createWorktree(baseCwd, options.isolationKey ?? options.label ?? \"agent\");\n\t\t}\n\n\t\tlet subagent: SubagentSession | null = null;\n\t\t// Hallazgos entregados por `yield` durante ESTE intento. Sobreviven aunque\n\t\t// el subagente se descarrile más abajo — ese es el motivo de que exista.\n\t\tconst buffer = new BufferDeHallazgos();\n\t\ttry {\n\t\t\tsubagent = await this.createSession({\n\t\t\t\tcwd: worktree?.cwd ?? baseCwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\tmodelSpec: options.model ?? (options.tier ? `tier:${options.tier}` : undefined),\n\t\t\t\ttools: resolveAllowedTools(options),\n\t\t\t\tcustomTools: [...(options.tools ?? []), crearHerramientaYield({ buffer, onEntrega: options.onYield })],\n\t\t\t\tsessionName: options.label ? `workflow:${options.label}` : undefined,\n\t\t\t\tinstructions: options.instructions,\n\t\t\t});\n\t\t\tconst session = subagent.session;\n\n\t\t\tconst lastAssistantText: string[] = [];\n\t\t\tconst unsubscribe = session.subscribe((event: AgentSessionEvent) => {\n\t\t\t\tif (event.type === \"message_end\" && event.message.role === \"assistant\") {\n\t\t\t\t\tconst text = messageText(event.message.content);\n\t\t\t\t\tif (text) lastAssistantText.push(text);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tconst sessionId = () =>\n\t\t\t\t(session as { sessionManager?: { getSessionId?: () => string } }).sessionManager?.getSessionId?.();\n\t\t\tlet textoFinal = \"\";\n\t\t\ttry {\n\t\t\t\ttry {\n\t\t\t\t\tawait Promise.race([session.sendUserMessage(options.prompt), timeout]);\n\t\t\t\t\tawait Promise.race([session.waitForIdle(), timeout]);\n\t\t\t\t\tif (signal?.aborted) return null;\n\n\t\t\t\t\ttextoFinal = lastAssistantText.length > 0 ? lastAssistantText[lastAssistantText.length - 1] : \"\";\n\t\t\t\t\tlet result: T | null = null;\n\t\t\t\t\tlet validacion: AgentRunResult<T>[\"validacion\"];\n\n\t\t\t\t\tif (options.schema) {\n\t\t\t\t\t\tconst resultado = await validarConReintentos<T>({\n\t\t\t\t\t\t\tesquema: options.schema,\n\t\t\t\t\t\t\ttextoInicial: textoFinal,\n\t\t\t\t\t\t\tmaxReintentos: options.maxReintentosValidacion ?? 2,\n\t\t\t\t\t\t\textraer: extractJson,\n\t\t\t\t\t\t\tpedirCorreccion: async (mensaje) => {\n\t\t\t\t\t\t\t\tawait Promise.race([session.sendUserMessage(mensaje), timeout]);\n\t\t\t\t\t\t\t\tawait Promise.race([session.waitForIdle(), timeout]);\n\t\t\t\t\t\t\t\tif (lastAssistantText.length > 0) textoFinal = lastAssistantText[lastAssistantText.length - 1];\n\t\t\t\t\t\t\t\treturn textoFinal;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t\tresult = resultado.datos;\n\t\t\t\t\t\tvalidacion = {\n\t\t\t\t\t\t\tvalido: resultado.valido,\n\t\t\t\t\t\t\tintentos: resultado.intentos,\n\t\t\t\t\t\t\treparado: resultado.reparado,\n\t\t\t\t\t\t\terrores: resultado.errores,\n\t\t\t\t\t\t};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = (textoFinal.length > 0 ? textoFinal : null) as unknown as T;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Consolidar el worktree ANTES de devolver: si solo lo retirásemos, los\n\t\t\t\t\t// cambios sin commitear del agente se perderían y el aislamiento no\n\t\t\t\t\t// habría servido de nada. La rama sobrevive para que un humano la\n\t\t\t\t\t// mergee; no hay auto-merge a propósito.\n\t\t\t\t\tif (worktree && !finalized) {\n\t\t\t\t\t\tfinalized = await finalizeWorktree(worktree, worktreeMessage);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tresult,\n\t\t\t\t\t\ttext: textoFinal,\n\t\t\t\t\t\tusage: subagent.getUsage(),\n\t\t\t\t\t\tsessionId: sessionId(),\n\t\t\t\t\t\tworktreeBranch: finalized?.branch,\n\t\t\t\t\t\t...(validacion ? { validacion } : {}),\n\t\t\t\t\t\t...(buffer.longitud > 0 ? { hallazgos: buffer.todos() } : {}),\n\t\t\t\t\t} as AgentRunResult<T>;\n\t\t\t\t} catch (error) {\n\t\t\t\t\t// YIELD FINAL FORZADO. El subagente se descarriló (timeout, error del\n\t\t\t\t\t// SDK, lo que sea) EN CUALQUIER PUNTO del intercambio — incluida la\n\t\t\t\t\t// ronda de corrección de esquema. Si ya había entregado hallazgos con\n\t\t\t\t\t// `yield`, eso NO se pierde: es justo lo que este contrato existe para\n\t\t\t\t\t// evitar (\"lo más importante\", según la tarea).\n\t\t\t\t\t//\n\t\t\t\t\t// Sin hallazgos que salvar esto es un fallo real (\"no pude\", no \"no\n\t\t\t\t\t// hay\") y se propaga tal cual — mismo comportamiento que antes de este\n\t\t\t\t\t// cambio, para no enmascarar errores genuinos con un resultado vacío.\n\t\t\t\t\t//\n\t\t\t\t\t// Un abort (`signal.aborted`) NUNCA entra en el yield final forzado,\n\t\t\t\t\t// aunque haya hallazgos: cancelar significa \"para del todo\", igual que\n\t\t\t\t\t// ya hacía el camino de éxito (línea de arriba, `if (signal?.aborted)\n\t\t\t\t\t// return null`) con un resultado completo y válido. Si esto cambiara,\n\t\t\t\t\t// el workflow trataría una cancelación como un resultado parcial\n\t\t\t\t\t// utilizable y seguiría a la siguiente fase con datos a medias.\n\t\t\t\t\tif (signal?.aborted || buffer.longitud === 0) throw error;\n\t\t\t\t\tconst motivo = error instanceof Error ? error.message : String(error);\n\t\t\t\t\tif (worktree && !finalized) {\n\t\t\t\t\t\tfinalized = await finalizeWorktree(worktree, worktreeMessage);\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tresult: ensamblarResultadoIncremental(buffer) as unknown as T,\n\t\t\t\t\t\ttext: textoFinal,\n\t\t\t\t\t\tusage: subagent.getUsage(),\n\t\t\t\t\t\tsessionId: sessionId(),\n\t\t\t\t\t\tworktreeBranch: finalized?.branch,\n\t\t\t\t\t\tdescarrilado: true,\n\t\t\t\t\t\tmotivoDescarrile: motivo,\n\t\t\t\t\t\thallazgos: buffer.todos(),\n\t\t\t\t\t} as AgentRunResult<T>;\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tunsubscribe();\n\t\t\t}\n\t\t} finally {\n\t\t\tif (timeoutTimer) clearTimeout(timeoutTimer);\n\t\t\tsubagent?.dispose();\n\t\t\t// Camino de error/abort sin hallazgos que salvar: el return no llegó a\n\t\t\t// consolidar, pero el trabajo parcial del agente también merece\n\t\t\t// sobrevivir para poder inspeccionarlo — y hay que soltar el worktree\n\t\t\t// igualmente.\n\t\t\tif (worktree && !finalized) {\n\t\t\t\tfinalized = await finalizeWorktree(worktree, worktreeMessage);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction isAbortError(error: unknown): boolean {\n\treturn error instanceof Error && error.name === \"AbortError\";\n}\n\nfunction isTimeoutError(error: unknown): boolean {\n\treturn error instanceof WorkflowError && error.code === \"WORKFLOW_AGENT_TIMEOUT\";\n}\n\n/** Tipos re-exportados para el index. */\nexport type { WorkflowErrorCode };\n"]}