@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,27 @@
1
+ /**
2
+ * `workflow save-as-skill` — empaqueta un run YA EJECUTADO como algo
3
+ * re-ejecutable por nombre.
4
+ *
5
+ * Todo el sustrato existía y nadie escribía en él: `PersistedRunState` guarda el
6
+ * script del run, sus args, fases y journal; `resolveWorkflowScriptByName` ya
7
+ * resuelve `<agentDir>/workflows/<name>.js` como script de usuario de primera
8
+ * clase. Solo faltaba el comando que uniera las dos cosas.
9
+ *
10
+ * Es estrictamente mejor que las "skills" auto-generadas de otros harnesses,
11
+ * que son descripciones que el modelo *cree* haber seguido: aquí el script
12
+ * guardado se ejecutó de verdad, y su procedencia (runId, args, resultado) queda
13
+ * en la cabecera.
14
+ */
15
+ import type { PersistedRunState } from "./journal.ts";
16
+ export interface SaveAsSkillResult {
17
+ ok: boolean;
18
+ error?: string;
19
+ filePath?: string;
20
+ name?: string;
21
+ }
22
+ export declare function saveRunAsSkill(options: {
23
+ agentDir: string;
24
+ name: string;
25
+ run: PersistedRunState;
26
+ }): Promise<SaveAsSkillResult>;
27
+ //# sourceMappingURL=save-as-skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"save-as-skill.d.ts","sourceRoot":"","sources":["../../../src/core/workflows/save-as-skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGtD,MAAM,WAAW,iBAAiB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAKD,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,iBAAiB,CAAC;CACvB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAsC7B","sourcesContent":["/**\n * `workflow save-as-skill` — empaqueta un run YA EJECUTADO como algo\n * re-ejecutable por nombre.\n *\n * Todo el sustrato existía y nadie escribía en él: `PersistedRunState` guarda el\n * script del run, sus args, fases y journal; `resolveWorkflowScriptByName` ya\n * resuelve `<agentDir>/workflows/<name>.js` como script de usuario de primera\n * clase. Solo faltaba el comando que uniera las dos cosas.\n *\n * Es estrictamente mejor que las \"skills\" auto-generadas de otros harnesses,\n * que son descripciones que el modelo *cree* haber seguido: aquí el script\n * guardado se ejecutó de verdad, y su procedencia (runId, args, resultado) queda\n * en la cabecera.\n */\n\nimport { mkdir, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport type { PersistedRunState } from \"./journal.ts\";\nimport { resolveBuiltinWorkflowScript } from \"./resolve-script.ts\";\n\nexport interface SaveAsSkillResult {\n\tok: boolean;\n\terror?: string;\n\tfilePath?: string;\n\tname?: string;\n}\n\n/** Nombres válidos de fichero: sin rutas ni sorpresas. */\nconst VALID_NAME = /^[a-z0-9][a-z0-9_-]{0,63}$/i;\n\nexport async function saveRunAsSkill(options: {\n\tagentDir: string;\n\tname: string;\n\trun: PersistedRunState;\n}): Promise<SaveAsSkillResult> {\n\tconst { agentDir, name, run } = options;\n\n\tif (!VALID_NAME.test(name)) {\n\t\treturn { ok: false, error: `Nombre inválido '${name}': usa letras, números, guion y guion bajo.` };\n\t}\n\n\t// Evidence gate: no se empaqueta un run que no llegó a terminar bien. Un\n\t// script \"reutilizable\" que nunca funcionó es peor que no tenerlo.\n\tif (run.status !== \"completed\") {\n\t\treturn {\n\t\t\tok: false,\n\t\t\terror: `El run ${run.runId} está en estado '${run.status}'. Solo se empaquetan runs completados (evidence gate).`,\n\t\t};\n\t}\n\n\t// Los builtins se resuelven ANTES que los scripts de usuario, así que\n\t// guardar con un nombre reservado crearía un fichero inalcanzable en\n\t// silencio. Mejor rechazarlo en el momento de guardar.\n\tif (resolveBuiltinWorkflowScript(name)) {\n\t\treturn { ok: false, error: `'${name}' es un workflow builtin. Elige otro nombre.` };\n\t}\n\n\t// Solo se guarda `run.script`: vino de un builtin o de un script de usuario\n\t// ya confiado. Nunca JS escrito por el modelo en caliente.\n\tconst header = [\n\t\t\"// Guardado por `workflow save-as-skill`.\",\n\t\t`// Procedencia: run ${run.runId} (${run.name}), completado ${run.updatedAt}.`,\n\t\t`// Args de aquella ejecución: ${JSON.stringify(run.args ?? {})}`,\n\t\trun.resultPath ? `// Resultado: ${run.resultPath}` : \"// Resultado: (no persistido)\",\n\t\t\"\",\n\t].join(\"\\n\");\n\n\tconst dir = join(agentDir, \"workflows\");\n\tawait mkdir(dir, { recursive: true });\n\tconst filePath = join(dir, `${name}.js`);\n\tawait writeFile(filePath, header + run.script, \"utf-8\");\n\treturn { ok: true, filePath, name };\n}\n"]}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * `workflow save-as-skill` — empaqueta un run YA EJECUTADO como algo
3
+ * re-ejecutable por nombre.
4
+ *
5
+ * Todo el sustrato existía y nadie escribía en él: `PersistedRunState` guarda el
6
+ * script del run, sus args, fases y journal; `resolveWorkflowScriptByName` ya
7
+ * resuelve `<agentDir>/workflows/<name>.js` como script de usuario de primera
8
+ * clase. Solo faltaba el comando que uniera las dos cosas.
9
+ *
10
+ * Es estrictamente mejor que las "skills" auto-generadas de otros harnesses,
11
+ * que son descripciones que el modelo *cree* haber seguido: aquí el script
12
+ * guardado se ejecutó de verdad, y su procedencia (runId, args, resultado) queda
13
+ * en la cabecera.
14
+ */
15
+ import { mkdir, writeFile } from "node:fs/promises";
16
+ import { join } from "node:path";
17
+ import { resolveBuiltinWorkflowScript } from "./resolve-script.js";
18
+ /** Nombres válidos de fichero: sin rutas ni sorpresas. */
19
+ const VALID_NAME = /^[a-z0-9][a-z0-9_-]{0,63}$/i;
20
+ export async function saveRunAsSkill(options) {
21
+ const { agentDir, name, run } = options;
22
+ if (!VALID_NAME.test(name)) {
23
+ return { ok: false, error: `Nombre inválido '${name}': usa letras, números, guion y guion bajo.` };
24
+ }
25
+ // Evidence gate: no se empaqueta un run que no llegó a terminar bien. Un
26
+ // script "reutilizable" que nunca funcionó es peor que no tenerlo.
27
+ if (run.status !== "completed") {
28
+ return {
29
+ ok: false,
30
+ error: `El run ${run.runId} está en estado '${run.status}'. Solo se empaquetan runs completados (evidence gate).`,
31
+ };
32
+ }
33
+ // Los builtins se resuelven ANTES que los scripts de usuario, así que
34
+ // guardar con un nombre reservado crearía un fichero inalcanzable en
35
+ // silencio. Mejor rechazarlo en el momento de guardar.
36
+ if (resolveBuiltinWorkflowScript(name)) {
37
+ return { ok: false, error: `'${name}' es un workflow builtin. Elige otro nombre.` };
38
+ }
39
+ // Solo se guarda `run.script`: vino de un builtin o de un script de usuario
40
+ // ya confiado. Nunca JS escrito por el modelo en caliente.
41
+ const header = [
42
+ "// Guardado por `workflow save-as-skill`.",
43
+ `// Procedencia: run ${run.runId} (${run.name}), completado ${run.updatedAt}.`,
44
+ `// Args de aquella ejecución: ${JSON.stringify(run.args ?? {})}`,
45
+ run.resultPath ? `// Resultado: ${run.resultPath}` : "// Resultado: (no persistido)",
46
+ "",
47
+ ].join("\n");
48
+ const dir = join(agentDir, "workflows");
49
+ await mkdir(dir, { recursive: true });
50
+ const filePath = join(dir, `${name}.js`);
51
+ await writeFile(filePath, header + run.script, "utf-8");
52
+ return { ok: true, filePath, name };
53
+ }
54
+ //# sourceMappingURL=save-as-skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"save-as-skill.js","sourceRoot":"","sources":["../../../src/core/workflows/save-as-skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AASnE,2DAA0D;AAC1D,MAAM,UAAU,GAAG,6BAA6B,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAIpC,EAA8B;IAC9B,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAExC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAoB,IAAI,8CAA6C,EAAE,CAAC;IACpG,CAAC;IAED,0EAAyE;IACzE,oEAAmE;IACnE,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO;YACN,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,UAAU,GAAG,CAAC,KAAK,qBAAoB,GAAG,CAAC,MAAM,yDAAyD;SACjH,CAAC;IACH,CAAC;IAED,uEAAsE;IACtE,sEAAqE;IACrE,uDAAuD;IACvD,IAAI,4BAA4B,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,IAAI,8CAA8C,EAAE,CAAC;IACrF,CAAC;IAED,4EAA4E;IAC5E,2DAA2D;IAC3D,MAAM,MAAM,GAAG;QACd,2CAA2C;QAC3C,uBAAuB,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,IAAI,iBAAiB,GAAG,CAAC,SAAS,GAAG;QAC9E,kCAAiC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE;QACjE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,+BAA+B;QACpF,EAAE;KACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACxC,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;IACzC,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAAA,CACpC","sourcesContent":["/**\n * `workflow save-as-skill` — empaqueta un run YA EJECUTADO como algo\n * re-ejecutable por nombre.\n *\n * Todo el sustrato existía y nadie escribía en él: `PersistedRunState` guarda el\n * script del run, sus args, fases y journal; `resolveWorkflowScriptByName` ya\n * resuelve `<agentDir>/workflows/<name>.js` como script de usuario de primera\n * clase. Solo faltaba el comando que uniera las dos cosas.\n *\n * Es estrictamente mejor que las \"skills\" auto-generadas de otros harnesses,\n * que son descripciones que el modelo *cree* haber seguido: aquí el script\n * guardado se ejecutó de verdad, y su procedencia (runId, args, resultado) queda\n * en la cabecera.\n */\n\nimport { mkdir, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport type { PersistedRunState } from \"./journal.ts\";\nimport { resolveBuiltinWorkflowScript } from \"./resolve-script.ts\";\n\nexport interface SaveAsSkillResult {\n\tok: boolean;\n\terror?: string;\n\tfilePath?: string;\n\tname?: string;\n}\n\n/** Nombres válidos de fichero: sin rutas ni sorpresas. */\nconst VALID_NAME = /^[a-z0-9][a-z0-9_-]{0,63}$/i;\n\nexport async function saveRunAsSkill(options: {\n\tagentDir: string;\n\tname: string;\n\trun: PersistedRunState;\n}): Promise<SaveAsSkillResult> {\n\tconst { agentDir, name, run } = options;\n\n\tif (!VALID_NAME.test(name)) {\n\t\treturn { ok: false, error: `Nombre inválido '${name}': usa letras, números, guion y guion bajo.` };\n\t}\n\n\t// Evidence gate: no se empaqueta un run que no llegó a terminar bien. Un\n\t// script \"reutilizable\" que nunca funcionó es peor que no tenerlo.\n\tif (run.status !== \"completed\") {\n\t\treturn {\n\t\t\tok: false,\n\t\t\terror: `El run ${run.runId} está en estado '${run.status}'. Solo se empaquetan runs completados (evidence gate).`,\n\t\t};\n\t}\n\n\t// Los builtins se resuelven ANTES que los scripts de usuario, así que\n\t// guardar con un nombre reservado crearía un fichero inalcanzable en\n\t// silencio. Mejor rechazarlo en el momento de guardar.\n\tif (resolveBuiltinWorkflowScript(name)) {\n\t\treturn { ok: false, error: `'${name}' es un workflow builtin. Elige otro nombre.` };\n\t}\n\n\t// Solo se guarda `run.script`: vino de un builtin o de un script de usuario\n\t// ya confiado. Nunca JS escrito por el modelo en caliente.\n\tconst header = [\n\t\t\"// Guardado por `workflow save-as-skill`.\",\n\t\t`// Procedencia: run ${run.runId} (${run.name}), completado ${run.updatedAt}.`,\n\t\t`// Args de aquella ejecución: ${JSON.stringify(run.args ?? {})}`,\n\t\trun.resultPath ? `// Resultado: ${run.resultPath}` : \"// Resultado: (no persistido)\",\n\t\t\"\",\n\t].join(\"\\n\");\n\n\tconst dir = join(agentDir, \"workflows\");\n\tawait mkdir(dir, { recursive: true });\n\tconst filePath = join(dir, `${name}.js`);\n\tawait writeFile(filePath, header + run.script, \"utf-8\");\n\treturn { ok: true, filePath, name };\n}\n"]}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * SharedStore — KV en memoria compartido entre los subagentes de un run.
3
+ *
4
+ * Cada agente escribe deltas (`trackPut` con deltaKey `${runId}:${callIndex}`)
5
+ * que se journalizan; en resume se re-aplican en orden callSeq. Los valores
6
+ * previos se shadowean para rollback de retries fallidos (patrón
7
+ * pi-dynamic-workflows).
8
+ */
9
+ export declare class SharedStore {
10
+ private readonly map;
11
+ private readonly agentDeltas;
12
+ private readonly priorValues;
13
+ put(key: string, value: unknown): void;
14
+ get<T = unknown>(key: string): T | undefined;
15
+ has(key: string): boolean;
16
+ delete(key: string): boolean;
17
+ entries(): Array<[string, unknown]>;
18
+ /**
19
+ * Escribe y registra el delta para `deltaKey` (run-unique).
20
+ * Shadowea el valor previo solo la primera vez dentro de la ventana.
21
+ */
22
+ trackPut(key: string, value: unknown, deltaKey: string): void;
23
+ /** Delta consolidado para journalizar (el agente terminó). */
24
+ commitDelta(deltaKey: string): Record<string, unknown>;
25
+ /** Rollback de las escrituras de un retry fallido. */
26
+ discardDelta(deltaKey: string): void;
27
+ /** Replay aditivo de deltas en orden callSeq (resume). */
28
+ applyDelta(delta: Record<string, unknown>): void;
29
+ get size(): number;
30
+ }
31
+ //# sourceMappingURL=shared-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-store.d.ts","sourceRoot":"","sources":["../../../src/core/workflows/shared-store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,qBAAa,WAAW;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA8B;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8C;IAC1E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwE;IAEpG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAErC;IAED,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAE3C;IAED,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAExB;IAED,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE3B;IAED,OAAO,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAElC;IAED;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAmB5D;IAED,+DAA8D;IAC9D,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKrD;IAED,sDAAsD;IACtD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAUnC;IAED,0DAA0D;IAC1D,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAI/C;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;CACD","sourcesContent":["/**\n * SharedStore — KV en memoria compartido entre los subagentes de un run.\n *\n * Cada agente escribe deltas (`trackPut` con deltaKey `${runId}:${callIndex}`)\n * que se journalizan; en resume se re-aplican en orden callSeq. Los valores\n * previos se shadowean para rollback de retries fallidos (patrón\n * pi-dynamic-workflows).\n */\n\nexport class SharedStore {\n\tprivate readonly map = new Map<string, unknown>();\n\tprivate readonly agentDeltas = new Map<string, Record<string, unknown>>();\n\tprivate readonly priorValues = new Map<string, Map<string, { existed: boolean; value: unknown }>>();\n\n\tput(key: string, value: unknown): void {\n\t\tthis.map.set(key, value);\n\t}\n\n\tget<T = unknown>(key: string): T | undefined {\n\t\treturn this.map.get(key) as T | undefined;\n\t}\n\n\thas(key: string): boolean {\n\t\treturn this.map.has(key);\n\t}\n\n\tdelete(key: string): boolean {\n\t\treturn this.map.delete(key);\n\t}\n\n\tentries(): Array<[string, unknown]> {\n\t\treturn [...this.map.entries()];\n\t}\n\n\t/**\n\t * Escribe y registra el delta para `deltaKey` (run-unique).\n\t * Shadowea el valor previo solo la primera vez dentro de la ventana.\n\t */\n\ttrackPut(key: string, value: unknown, deltaKey: string): void {\n\t\tlet priors = this.priorValues.get(deltaKey);\n\t\tif (!priors) {\n\t\t\tpriors = new Map();\n\t\t\tthis.priorValues.set(deltaKey, priors);\n\t\t}\n\t\tif (!priors.has(key)) {\n\t\t\tpriors.set(\n\t\t\t\tkey,\n\t\t\t\tthis.map.has(key) ? { existed: true, value: this.map.get(key) } : { existed: false, value: undefined },\n\t\t\t);\n\t\t}\n\t\tthis.map.set(key, value);\n\t\tlet delta = this.agentDeltas.get(deltaKey);\n\t\tif (!delta) {\n\t\t\tdelta = {};\n\t\t\tthis.agentDeltas.set(deltaKey, delta);\n\t\t}\n\t\tdelta[key] = value;\n\t}\n\n\t/** Delta consolidado para journalizar (el agente terminó). */\n\tcommitDelta(deltaKey: string): Record<string, unknown> {\n\t\tconst delta = this.agentDeltas.get(deltaKey) ?? {};\n\t\tthis.agentDeltas.delete(deltaKey);\n\t\tthis.priorValues.delete(deltaKey);\n\t\treturn delta;\n\t}\n\n\t/** Rollback de las escrituras de un retry fallido. */\n\tdiscardDelta(deltaKey: string): void {\n\t\tconst priors = this.priorValues.get(deltaKey);\n\t\tif (priors) {\n\t\t\tfor (const [key, prior] of priors) {\n\t\t\t\tif (prior.existed) this.map.set(key, prior.value);\n\t\t\t\telse this.map.delete(key);\n\t\t\t}\n\t\t}\n\t\tthis.agentDeltas.delete(deltaKey);\n\t\tthis.priorValues.delete(deltaKey);\n\t}\n\n\t/** Replay aditivo de deltas en orden callSeq (resume). */\n\tapplyDelta(delta: Record<string, unknown>): void {\n\t\tfor (const [key, value] of Object.entries(delta)) {\n\t\t\tthis.map.set(key, value);\n\t\t}\n\t}\n\n\tget size(): number {\n\t\treturn this.map.size;\n\t}\n}\n"]}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * SharedStore — KV en memoria compartido entre los subagentes de un run.
3
+ *
4
+ * Cada agente escribe deltas (`trackPut` con deltaKey `${runId}:${callIndex}`)
5
+ * que se journalizan; en resume se re-aplican en orden callSeq. Los valores
6
+ * previos se shadowean para rollback de retries fallidos (patrón
7
+ * pi-dynamic-workflows).
8
+ */
9
+ export class SharedStore {
10
+ map = new Map();
11
+ agentDeltas = new Map();
12
+ priorValues = new Map();
13
+ put(key, value) {
14
+ this.map.set(key, value);
15
+ }
16
+ get(key) {
17
+ return this.map.get(key);
18
+ }
19
+ has(key) {
20
+ return this.map.has(key);
21
+ }
22
+ delete(key) {
23
+ return this.map.delete(key);
24
+ }
25
+ entries() {
26
+ return [...this.map.entries()];
27
+ }
28
+ /**
29
+ * Escribe y registra el delta para `deltaKey` (run-unique).
30
+ * Shadowea el valor previo solo la primera vez dentro de la ventana.
31
+ */
32
+ trackPut(key, value, deltaKey) {
33
+ let priors = this.priorValues.get(deltaKey);
34
+ if (!priors) {
35
+ priors = new Map();
36
+ this.priorValues.set(deltaKey, priors);
37
+ }
38
+ if (!priors.has(key)) {
39
+ priors.set(key, this.map.has(key) ? { existed: true, value: this.map.get(key) } : { existed: false, value: undefined });
40
+ }
41
+ this.map.set(key, value);
42
+ let delta = this.agentDeltas.get(deltaKey);
43
+ if (!delta) {
44
+ delta = {};
45
+ this.agentDeltas.set(deltaKey, delta);
46
+ }
47
+ delta[key] = value;
48
+ }
49
+ /** Delta consolidado para journalizar (el agente terminó). */
50
+ commitDelta(deltaKey) {
51
+ const delta = this.agentDeltas.get(deltaKey) ?? {};
52
+ this.agentDeltas.delete(deltaKey);
53
+ this.priorValues.delete(deltaKey);
54
+ return delta;
55
+ }
56
+ /** Rollback de las escrituras de un retry fallido. */
57
+ discardDelta(deltaKey) {
58
+ const priors = this.priorValues.get(deltaKey);
59
+ if (priors) {
60
+ for (const [key, prior] of priors) {
61
+ if (prior.existed)
62
+ this.map.set(key, prior.value);
63
+ else
64
+ this.map.delete(key);
65
+ }
66
+ }
67
+ this.agentDeltas.delete(deltaKey);
68
+ this.priorValues.delete(deltaKey);
69
+ }
70
+ /** Replay aditivo de deltas en orden callSeq (resume). */
71
+ applyDelta(delta) {
72
+ for (const [key, value] of Object.entries(delta)) {
73
+ this.map.set(key, value);
74
+ }
75
+ }
76
+ get size() {
77
+ return this.map.size;
78
+ }
79
+ }
80
+ //# sourceMappingURL=shared-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-store.js","sourceRoot":"","sources":["../../../src/core/workflows/shared-store.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * SharedStore — KV en memoria compartido entre los subagentes de un run.\n *\n * Cada agente escribe deltas (`trackPut` con deltaKey `${runId}:${callIndex}`)\n * que se journalizan; en resume se re-aplican en orden callSeq. Los valores\n * previos se shadowean para rollback de retries fallidos (patrón\n * pi-dynamic-workflows).\n */\n\nexport class SharedStore {\n\tprivate readonly map = new Map<string, unknown>();\n\tprivate readonly agentDeltas = new Map<string, Record<string, unknown>>();\n\tprivate readonly priorValues = new Map<string, Map<string, { existed: boolean; value: unknown }>>();\n\n\tput(key: string, value: unknown): void {\n\t\tthis.map.set(key, value);\n\t}\n\n\tget<T = unknown>(key: string): T | undefined {\n\t\treturn this.map.get(key) as T | undefined;\n\t}\n\n\thas(key: string): boolean {\n\t\treturn this.map.has(key);\n\t}\n\n\tdelete(key: string): boolean {\n\t\treturn this.map.delete(key);\n\t}\n\n\tentries(): Array<[string, unknown]> {\n\t\treturn [...this.map.entries()];\n\t}\n\n\t/**\n\t * Escribe y registra el delta para `deltaKey` (run-unique).\n\t * Shadowea el valor previo solo la primera vez dentro de la ventana.\n\t */\n\ttrackPut(key: string, value: unknown, deltaKey: string): void {\n\t\tlet priors = this.priorValues.get(deltaKey);\n\t\tif (!priors) {\n\t\t\tpriors = new Map();\n\t\t\tthis.priorValues.set(deltaKey, priors);\n\t\t}\n\t\tif (!priors.has(key)) {\n\t\t\tpriors.set(\n\t\t\t\tkey,\n\t\t\t\tthis.map.has(key) ? { existed: true, value: this.map.get(key) } : { existed: false, value: undefined },\n\t\t\t);\n\t\t}\n\t\tthis.map.set(key, value);\n\t\tlet delta = this.agentDeltas.get(deltaKey);\n\t\tif (!delta) {\n\t\t\tdelta = {};\n\t\t\tthis.agentDeltas.set(deltaKey, delta);\n\t\t}\n\t\tdelta[key] = value;\n\t}\n\n\t/** Delta consolidado para journalizar (el agente terminó). */\n\tcommitDelta(deltaKey: string): Record<string, unknown> {\n\t\tconst delta = this.agentDeltas.get(deltaKey) ?? {};\n\t\tthis.agentDeltas.delete(deltaKey);\n\t\tthis.priorValues.delete(deltaKey);\n\t\treturn delta;\n\t}\n\n\t/** Rollback de las escrituras de un retry fallido. */\n\tdiscardDelta(deltaKey: string): void {\n\t\tconst priors = this.priorValues.get(deltaKey);\n\t\tif (priors) {\n\t\t\tfor (const [key, prior] of priors) {\n\t\t\t\tif (prior.existed) this.map.set(key, prior.value);\n\t\t\t\telse this.map.delete(key);\n\t\t\t}\n\t\t}\n\t\tthis.agentDeltas.delete(deltaKey);\n\t\tthis.priorValues.delete(deltaKey);\n\t}\n\n\t/** Replay aditivo de deltas en orden callSeq (resume). */\n\tapplyDelta(delta: Record<string, unknown>): void {\n\t\tfor (const [key, value] of Object.entries(delta)) {\n\t\t\tthis.map.set(key, value);\n\t\t}\n\t}\n\n\tget size(): number {\n\t\treturn this.map.size;\n\t}\n}\n"]}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * SubagentHost — subagente de producción: crea una sesión real del SDK
3
+ * (createAgentSession) con el modelo resuelto, tools configuradas y límites.
4
+ *
5
+ * El subagente comparte el mismo runtime (memoria/vault/redacción) porque
6
+ * createAgentSession construye un DefaultResourceLoader con el mismo agentDir
7
+ * y el SettingsManager compartido → los subagentes heredan la memoria, el
8
+ * vault (@vault:) y la censura de secretos (adversarial §17).
9
+ *
10
+ * NOTA (seguridad, fairy-tales): los subagentes usan un agentDir PROPIO
11
+ * efímero cuando se pide aislamiento (nada de extensiones/paquetes dentro);
12
+ * las guardas del engine se re-inyectan explícitamente.
13
+ */
14
+ import type { Model } from "@earendil-works/pi-ai";
15
+ import type { ToolDefinition } from "../extensions/types.ts";
16
+ import type { SubagentSession } from "./agent-runner.ts";
17
+ export interface CreateSubagentSessionOptions {
18
+ cwd: string;
19
+ agentDir: string;
20
+ modelSpec?: string;
21
+ tools?: string[];
22
+ customTools?: ToolDefinition[];
23
+ sessionName?: string;
24
+ instructions?: string;
25
+ /** Modelo de la sesión principal: los subagentes lo HEREDAN por defecto. */
26
+ hostModel?: {
27
+ provider: string;
28
+ modelId: string;
29
+ };
30
+ }
31
+ /**
32
+ * Crea un subagente real. Devuelve la sesión con su disposición y el usage.
33
+ */
34
+ export declare function createSubagentSession(options: CreateSubagentSessionOptions): Promise<SubagentSession>;
35
+ /** Thinking level del tier (workflows.models.<tier>Thinking); undefined = default. */
36
+ export declare function thinkingForTier(agentDir: string, tier: "cheap" | "main" | "judge"): string | undefined;
37
+ /**
38
+ * Resuelve el modelSpec de un subagente a un Model concreto.
39
+ * - "tier:cheap" → cascada:
40
+ * 1. workflows.models.cheap ("provider/model" directo)
41
+ * 2. workflows.models.cheapCandidates (lista del usuario, en orden)
42
+ * 3. DISCOVERY DINÁMICO: el modelo más barato con coste declarado de los
43
+ * proveedores CONECTADOS (refleja siempre el catálogo real del SDK)
44
+ * 4. fallback estático curado (solo si el discovery no encontró nada)
45
+ * - "tier:main"/"tier:judge" → workflows.models.main/judge, si no default.
46
+ * - "provider/model" → directo si está autenticado.
47
+ * Devuelve undefined → createAgentSession usa su resolución por defecto.
48
+ */
49
+ export declare function resolveSubagentModel(agentDir: string, spec: string | undefined): Promise<Model<any> | undefined>;
50
+ //# sourceMappingURL=subagent-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-host.d.ts","sourceRoot":"","sources":["../../../src/core/workflows/subagent-host.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,MAAM,WAAW,4BAA4B;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6EAA4E;IAC5E,SAAS,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAClD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,eAAe,CAAC,CAyC3G;AAsDD,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAItG;AA2CD;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CACzC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GAAG,SAAS,GACtB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAwDjC","sourcesContent":["/**\n * SubagentHost — subagente de producción: crea una sesión real del SDK\n * (createAgentSession) con el modelo resuelto, tools configuradas y límites.\n *\n * El subagente comparte el mismo runtime (memoria/vault/redacción) porque\n * createAgentSession construye un DefaultResourceLoader con el mismo agentDir\n * y el SettingsManager compartido → los subagentes heredan la memoria, el\n * vault (@vault:) y la censura de secretos (adversarial §17).\n *\n * NOTA (seguridad, fairy-tales): los subagentes usan un agentDir PROPIO\n * efímero cuando se pide aislamiento (nada de extensiones/paquetes dentro);\n * las guardas del engine se re-inyectan explícitamente.\n */\n\nimport { readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport type { Model } from \"@earendil-works/pi-ai\";\nimport type { AgentSession } from \"../agent-session.ts\";\nimport type { ToolDefinition } from \"../extensions/types.ts\";\nimport { ModelRuntime } from \"../model-runtime.ts\";\nimport { createAgentSession } from \"../sdk.ts\";\nimport type { SubagentSession } from \"./agent-runner.ts\";\nimport type { AgentUsage } from \"./types.ts\";\n\nexport interface CreateSubagentSessionOptions {\n\tcwd: string;\n\tagentDir: string;\n\tmodelSpec?: string;\n\ttools?: string[];\n\tcustomTools?: ToolDefinition[];\n\tsessionName?: string;\n\tinstructions?: string;\n\t/** Modelo de la sesión principal: los subagentes lo HEREDAN por defecto. */\n\thostModel?: { provider: string; modelId: string };\n}\n\n/**\n * Crea un subagente real. Devuelve la sesión con su disposición y el usage.\n */\nexport async function createSubagentSession(options: CreateSubagentSessionOptions): Promise<SubagentSession> {\n\t// Routing por spec/tier (§16.2 budget): \"tier:cheap\" resuelve el modelo\n\t// barato, \"provider/model\" el explícito, y cualquier fallo cae al default.\n\tlet model = await resolveSubagentModel(options.agentDir, options.modelSpec);\n\t// Los subagentes HEREDAN el modelo de la sesión principal: si no hay spec/tier\n\t// explícito y el host tiene un modelo en uso, ese es el que se usa (misma\n\t// auth → misma API key del chat).\n\tif (!model && options.hostModel?.provider && options.hostModel.modelId) {\n\t\tmodel =\n\t\t\t(await resolveSubagentModel(options.agentDir, `${options.hostModel.provider}/${options.hostModel.modelId}`)) ??\n\t\t\tundefined;\n\t}\n\t// Thinking por tier: solo cuando el spec es tier:X y hay override en settings.\n\tconst tierMatch = options.modelSpec?.startsWith(\"tier:\")\n\t\t? (options.modelSpec.slice(5) as \"cheap\" | \"main\" | \"judge\")\n\t\t: undefined;\n\tconst thinkingLevel = tierMatch ? thinkingForTier(options.agentDir, tierMatch) : undefined;\n\n\tconst { session } = await createAgentSession({\n\t\tcwd: options.cwd,\n\t\tagentDir: options.agentDir,\n\t\ttools: options.tools,\n\t\tcustomTools: options.customTools,\n\t\t...(model ? { model } : {}),\n\t\t...(thinkingLevel ? { thinkingLevel: thinkingLevel as never } : {}),\n\t\tisSubagent: true, // anti-recursión: el HOST es el único dueño del bucle del goal\n\t});\n\n\t// Nombre de sesión + instrucciones: no hay opción directa en\n\t// createAgentSession para ambos; la instrucción va en el prompt.\n\treturn {\n\t\tsession,\n\t\tdispose: () => {\n\t\t\ttry {\n\t\t\t\tsession.dispose();\n\t\t\t} catch {\n\t\t\t\t// best-effort\n\t\t\t}\n\t\t},\n\t\tgetUsage: () => usageFromSession(session),\n\t};\n}\n\n/** Extraer el usage real de la sesión del subagente. */\nfunction usageFromSession(session: AgentSession): AgentUsage {\n\ttry {\n\t\tconst stats = session.getSessionStats();\n\t\tconst tokens = stats.tokens;\n\t\treturn {\n\t\t\tinput: tokens.input,\n\t\t\toutput: tokens.output,\n\t\t\ttotal: tokens.total,\n\t\t\tcost: stats.cost ?? 0,\n\t\t\tcacheRead: tokens.cacheRead,\n\t\t\tcacheWrite: tokens.cacheWrite,\n\t\t};\n\t} catch {\n\t\treturn { input: 0, output: 0, total: 0, cost: 0, cacheRead: 0, cacheWrite: 0 };\n\t}\n}\n\n/**\n * Fallback de emergencia: solo se usa si el discovery dinámico no encuentra\n * NINGÚN modelo con coste entre los proveedores conectados. Cada entrada se\n * valida con hasConfiguredAuth — sin credenciales se cae al default (fail-safe).\n */\nconst CHEAP_MODEL_CANDIDATES: Array<[provider: string, modelId: string]> = [\n\t[\"anthropic\", \"claude-haiku-4-5\"],\n\t[\"google\", \"gemini-2.5-flash\"],\n\t[\"google\", \"gemini-2.0-flash\"],\n\t[\"openai\", \"gpt-4o-mini\"],\n\t[\"openai\", \"gpt-5-mini\"],\n];\n\ninterface ModelsConfig {\n\tcheap?: string;\n\tmain?: string;\n\tjudge?: string;\n\tcheapCandidates?: string[];\n\tcheapThinking?: string;\n\tmainThinking?: string;\n\tjudgeThinking?: string;\n}\n\n/** Lee workflows.models del settings.json del agentDir (sin SettingsManager — función pura). */\nfunction readModelsConfig(agentDir: string): ModelsConfig {\n\ttry {\n\t\tconst raw = readFileSync(join(agentDir, \"settings.json\"), \"utf-8\");\n\t\tconst parsed = JSON.parse(raw) as { workflows?: { models?: ModelsConfig } };\n\t\treturn parsed?.workflows?.models ?? {};\n\t} catch {\n\t\treturn {};\n\t}\n}\n\n/** Thinking level del tier (workflows.models.<tier>Thinking); undefined = default. */\nexport function thinkingForTier(agentDir: string, tier: \"cheap\" | \"main\" | \"judge\"): string | undefined {\n\tconst cfg = readModelsConfig(agentDir);\n\tconst value = tier === \"cheap\" ? cfg.cheapThinking : tier === \"judge\" ? cfg.judgeThinking : cfg.mainThinking;\n\treturn typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n\n/** Parsea \"provider/model\" → [provider, model]; null si malformado. */\nfunction parseSpec(spec: string): [string, string] | null {\n\tconst slash = spec.indexOf(\"/\");\n\tif (slash <= 0 || slash === spec.length - 1) return null;\n\treturn [spec.slice(0, slash), spec.slice(slash + 1)];\n}\n\n/**\n * Discovery DINÁMICO de modelos baratos: recorre los proveedores CONECTADOS\n * (hasConfiguredAuth) del runtime, toma sus modelos con coste declarado y los\n * ordena por precio (input+output) ascendente. La lista siempre refleja lo\n * que el usuario tiene disponible de verdad — nunca modelos inexistentes.\n */\nfunction discoverCheapModels(runtime: ModelRuntime, max = 6): Array<[string, string]> {\n\tconst scored: Array<{ provider: string; model: string; cost: number }> = [];\n\tfor (const provider of runtime.getProviders()) {\n\t\tif (!runtime.hasConfiguredAuth(provider.id)) continue;\n\t\tfor (const model of runtime.getModels(provider.id)) {\n\t\t\tconst m = model as { modelId?: string; id?: string; cost?: { input?: number; output?: number } };\n\t\t\tconst modelId = m.modelId ?? m.id;\n\t\t\tconst cost = m.cost;\n\t\t\tif (!modelId || !cost || typeof cost.input !== \"number\" || typeof cost.output !== \"number\") continue;\n\t\t\tscored.push({ provider: provider.id, model: modelId, cost: cost.input + cost.output });\n\t\t}\n\t}\n\treturn scored\n\t\t.sort((a, b) => a.cost - b.cost)\n\t\t.slice(0, max)\n\t\t.map((x) => [x.provider, x.model]);\n}\n\n/** Lista del usuario (workflows.models.cheapCandidates). [] si no está configurada. */\nfunction userCheapCandidates(agentDir: string): Array<[string, string]> {\n\tconst configured = readModelsConfig(agentDir).cheapCandidates;\n\tif (!Array.isArray(configured) || configured.length === 0) return [];\n\t// Solo entradas válidas \"provider/model\" (las malas se saltan).\n\treturn configured\n\t\t.map((c) => (typeof c === \"string\" ? parseSpec(c) : null))\n\t\t.filter((c): c is [string, string] => c !== null);\n}\n\n/**\n * Resuelve el modelSpec de un subagente a un Model concreto.\n * - \"tier:cheap\" → cascada:\n * 1. workflows.models.cheap (\"provider/model\" directo)\n * 2. workflows.models.cheapCandidates (lista del usuario, en orden)\n * 3. DISCOVERY DINÁMICO: el modelo más barato con coste declarado de los\n * proveedores CONECTADOS (refleja siempre el catálogo real del SDK)\n * 4. fallback estático curado (solo si el discovery no encontró nada)\n * - \"tier:main\"/\"tier:judge\" → workflows.models.main/judge, si no default.\n * - \"provider/model\" → directo si está autenticado.\n * Devuelve undefined → createAgentSession usa su resolución por defecto.\n */\nexport async function resolveSubagentModel(\n\tagentDir: string,\n\tspec: string | undefined,\n): Promise<Model<any> | undefined> {\n\tif (!spec) return undefined;\n\tlet runtime: ModelRuntime;\n\ttry {\n\t\truntime = await ModelRuntime.create({\n\t\t\tauthPath: join(agentDir, \"auth.json\"),\n\t\t\tmodelsPath: join(agentDir, \"models.json\"),\n\t\t});\n\t} catch {\n\t\treturn undefined; // fail-safe: default\n\t}\n\tconst tryGet = (provider: string, modelId: string): Model<any> | undefined => {\n\t\tconst m = runtime.getModel(provider, modelId);\n\t\treturn m && runtime.hasConfiguredAuth(provider) ? m : undefined;\n\t};\n\n\tif (spec.startsWith(\"tier:\")) {\n\t\tconst tier = spec.slice(5);\n\t\t// Settings override PRIMERO: workflows.models.<tier> = \"provider/model\"\n\t\tconst models = readModelsConfig(agentDir);\n\t\tconst override = tier === \"cheap\" ? models.cheap : tier === \"judge\" ? models.judge : models.main;\n\t\tconst overrideSpec = override ? parseSpec(override) : null;\n\t\tif (overrideSpec) {\n\t\t\tconst m = tryGet(overrideSpec[0], overrideSpec[1]);\n\t\t\tif (m) return m;\n\t\t}\n\t\tif (tier === \"cheap\") {\n\t\t\t// 1. Lista explícita del usuario (workflows.models.cheapCandidates).\n\t\t\tfor (const candidate of userCheapCandidates(agentDir)) {\n\t\t\t\tconst m = tryGet(candidate[0], candidate[1]);\n\t\t\t\tif (m) return m;\n\t\t\t}\n\t\t\t// 2. DISCOVERY DINÁMICO: el más barato con coste declarado entre los\n\t\t\t// proveedores CONECTADOS — refleja siempre el catálogo real del SDK.\n\t\t\tfor (const [providerId, modelId] of discoverCheapModels(runtime)) {\n\t\t\t\tconst m = tryGet(providerId, modelId);\n\t\t\t\tif (m) return m;\n\t\t\t}\n\t\t\t// 3. Fallback estático de emergencia (solo si el discovery no encontró\n\t\t\t// nada — p.ej. catálogos sin costes declarados).\n\t\t\tfor (const candidate of CHEAP_MODEL_CANDIDATES) {\n\t\t\t\tconst m = tryGet(candidate[0], candidate[1]);\n\t\t\t\tif (m) return m;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\t\t// tier:main / tier:judge sin override → default del host (fail-safe)\n\t\treturn undefined;\n\t}\n\n\t// \"provider/model\" explícito\n\tconst slash = spec.indexOf(\"/\");\n\tif (slash <= 0 || slash === spec.length - 1) return undefined;\n\tconst provider = spec.slice(0, slash);\n\tconst modelId = spec.slice(slash + 1);\n\treturn tryGet(provider, modelId) ?? undefined;\n}\n"]}
@@ -0,0 +1,225 @@
1
+ /**
2
+ * SubagentHost — subagente de producción: crea una sesión real del SDK
3
+ * (createAgentSession) con el modelo resuelto, tools configuradas y límites.
4
+ *
5
+ * El subagente comparte el mismo runtime (memoria/vault/redacción) porque
6
+ * createAgentSession construye un DefaultResourceLoader con el mismo agentDir
7
+ * y el SettingsManager compartido → los subagentes heredan la memoria, el
8
+ * vault (@vault:) y la censura de secretos (adversarial §17).
9
+ *
10
+ * NOTA (seguridad, fairy-tales): los subagentes usan un agentDir PROPIO
11
+ * efímero cuando se pide aislamiento (nada de extensiones/paquetes dentro);
12
+ * las guardas del engine se re-inyectan explícitamente.
13
+ */
14
+ import { readFileSync } from "node:fs";
15
+ import { join } from "node:path";
16
+ import { ModelRuntime } from "../model-runtime.js";
17
+ import { createAgentSession } from "../sdk.js";
18
+ /**
19
+ * Crea un subagente real. Devuelve la sesión con su disposición y el usage.
20
+ */
21
+ export async function createSubagentSession(options) {
22
+ // Routing por spec/tier (§16.2 budget): "tier:cheap" resuelve el modelo
23
+ // barato, "provider/model" el explícito, y cualquier fallo cae al default.
24
+ let model = await resolveSubagentModel(options.agentDir, options.modelSpec);
25
+ // Los subagentes HEREDAN el modelo de la sesión principal: si no hay spec/tier
26
+ // explícito y el host tiene un modelo en uso, ese es el que se usa (misma
27
+ // auth → misma API key del chat).
28
+ if (!model && options.hostModel?.provider && options.hostModel.modelId) {
29
+ model =
30
+ (await resolveSubagentModel(options.agentDir, `${options.hostModel.provider}/${options.hostModel.modelId}`)) ??
31
+ undefined;
32
+ }
33
+ // Thinking por tier: solo cuando el spec es tier:X y hay override en settings.
34
+ const tierMatch = options.modelSpec?.startsWith("tier:")
35
+ ? options.modelSpec.slice(5)
36
+ : undefined;
37
+ const thinkingLevel = tierMatch ? thinkingForTier(options.agentDir, tierMatch) : undefined;
38
+ const { session } = await createAgentSession({
39
+ cwd: options.cwd,
40
+ agentDir: options.agentDir,
41
+ tools: options.tools,
42
+ customTools: options.customTools,
43
+ ...(model ? { model } : {}),
44
+ ...(thinkingLevel ? { thinkingLevel: thinkingLevel } : {}),
45
+ isSubagent: true, // anti-recursión: el HOST es el único dueño del bucle del goal
46
+ });
47
+ // Nombre de sesión + instrucciones: no hay opción directa en
48
+ // createAgentSession para ambos; la instrucción va en el prompt.
49
+ return {
50
+ session,
51
+ dispose: () => {
52
+ try {
53
+ session.dispose();
54
+ }
55
+ catch {
56
+ // best-effort
57
+ }
58
+ },
59
+ getUsage: () => usageFromSession(session),
60
+ };
61
+ }
62
+ /** Extraer el usage real de la sesión del subagente. */
63
+ function usageFromSession(session) {
64
+ try {
65
+ const stats = session.getSessionStats();
66
+ const tokens = stats.tokens;
67
+ return {
68
+ input: tokens.input,
69
+ output: tokens.output,
70
+ total: tokens.total,
71
+ cost: stats.cost ?? 0,
72
+ cacheRead: tokens.cacheRead,
73
+ cacheWrite: tokens.cacheWrite,
74
+ };
75
+ }
76
+ catch {
77
+ return { input: 0, output: 0, total: 0, cost: 0, cacheRead: 0, cacheWrite: 0 };
78
+ }
79
+ }
80
+ /**
81
+ * Fallback de emergencia: solo se usa si el discovery dinámico no encuentra
82
+ * NINGÚN modelo con coste entre los proveedores conectados. Cada entrada se
83
+ * valida con hasConfiguredAuth — sin credenciales se cae al default (fail-safe).
84
+ */
85
+ const CHEAP_MODEL_CANDIDATES = [
86
+ ["anthropic", "claude-haiku-4-5"],
87
+ ["google", "gemini-2.5-flash"],
88
+ ["google", "gemini-2.0-flash"],
89
+ ["openai", "gpt-4o-mini"],
90
+ ["openai", "gpt-5-mini"],
91
+ ];
92
+ /** Lee workflows.models del settings.json del agentDir (sin SettingsManager — función pura). */
93
+ function readModelsConfig(agentDir) {
94
+ try {
95
+ const raw = readFileSync(join(agentDir, "settings.json"), "utf-8");
96
+ const parsed = JSON.parse(raw);
97
+ return parsed?.workflows?.models ?? {};
98
+ }
99
+ catch {
100
+ return {};
101
+ }
102
+ }
103
+ /** Thinking level del tier (workflows.models.<tier>Thinking); undefined = default. */
104
+ export function thinkingForTier(agentDir, tier) {
105
+ const cfg = readModelsConfig(agentDir);
106
+ const value = tier === "cheap" ? cfg.cheapThinking : tier === "judge" ? cfg.judgeThinking : cfg.mainThinking;
107
+ return typeof value === "string" && value.length > 0 ? value : undefined;
108
+ }
109
+ /** Parsea "provider/model" → [provider, model]; null si malformado. */
110
+ function parseSpec(spec) {
111
+ const slash = spec.indexOf("/");
112
+ if (slash <= 0 || slash === spec.length - 1)
113
+ return null;
114
+ return [spec.slice(0, slash), spec.slice(slash + 1)];
115
+ }
116
+ /**
117
+ * Discovery DINÁMICO de modelos baratos: recorre los proveedores CONECTADOS
118
+ * (hasConfiguredAuth) del runtime, toma sus modelos con coste declarado y los
119
+ * ordena por precio (input+output) ascendente. La lista siempre refleja lo
120
+ * que el usuario tiene disponible de verdad — nunca modelos inexistentes.
121
+ */
122
+ function discoverCheapModels(runtime, max = 6) {
123
+ const scored = [];
124
+ for (const provider of runtime.getProviders()) {
125
+ if (!runtime.hasConfiguredAuth(provider.id))
126
+ continue;
127
+ for (const model of runtime.getModels(provider.id)) {
128
+ const m = model;
129
+ const modelId = m.modelId ?? m.id;
130
+ const cost = m.cost;
131
+ if (!modelId || !cost || typeof cost.input !== "number" || typeof cost.output !== "number")
132
+ continue;
133
+ scored.push({ provider: provider.id, model: modelId, cost: cost.input + cost.output });
134
+ }
135
+ }
136
+ return scored
137
+ .sort((a, b) => a.cost - b.cost)
138
+ .slice(0, max)
139
+ .map((x) => [x.provider, x.model]);
140
+ }
141
+ /** Lista del usuario (workflows.models.cheapCandidates). [] si no está configurada. */
142
+ function userCheapCandidates(agentDir) {
143
+ const configured = readModelsConfig(agentDir).cheapCandidates;
144
+ if (!Array.isArray(configured) || configured.length === 0)
145
+ return [];
146
+ // Solo entradas válidas "provider/model" (las malas se saltan).
147
+ return configured
148
+ .map((c) => (typeof c === "string" ? parseSpec(c) : null))
149
+ .filter((c) => c !== null);
150
+ }
151
+ /**
152
+ * Resuelve el modelSpec de un subagente a un Model concreto.
153
+ * - "tier:cheap" → cascada:
154
+ * 1. workflows.models.cheap ("provider/model" directo)
155
+ * 2. workflows.models.cheapCandidates (lista del usuario, en orden)
156
+ * 3. DISCOVERY DINÁMICO: el modelo más barato con coste declarado de los
157
+ * proveedores CONECTADOS (refleja siempre el catálogo real del SDK)
158
+ * 4. fallback estático curado (solo si el discovery no encontró nada)
159
+ * - "tier:main"/"tier:judge" → workflows.models.main/judge, si no default.
160
+ * - "provider/model" → directo si está autenticado.
161
+ * Devuelve undefined → createAgentSession usa su resolución por defecto.
162
+ */
163
+ export async function resolveSubagentModel(agentDir, spec) {
164
+ if (!spec)
165
+ return undefined;
166
+ let runtime;
167
+ try {
168
+ runtime = await ModelRuntime.create({
169
+ authPath: join(agentDir, "auth.json"),
170
+ modelsPath: join(agentDir, "models.json"),
171
+ });
172
+ }
173
+ catch {
174
+ return undefined; // fail-safe: default
175
+ }
176
+ const tryGet = (provider, modelId) => {
177
+ const m = runtime.getModel(provider, modelId);
178
+ return m && runtime.hasConfiguredAuth(provider) ? m : undefined;
179
+ };
180
+ if (spec.startsWith("tier:")) {
181
+ const tier = spec.slice(5);
182
+ // Settings override PRIMERO: workflows.models.<tier> = "provider/model"
183
+ const models = readModelsConfig(agentDir);
184
+ const override = tier === "cheap" ? models.cheap : tier === "judge" ? models.judge : models.main;
185
+ const overrideSpec = override ? parseSpec(override) : null;
186
+ if (overrideSpec) {
187
+ const m = tryGet(overrideSpec[0], overrideSpec[1]);
188
+ if (m)
189
+ return m;
190
+ }
191
+ if (tier === "cheap") {
192
+ // 1. Lista explícita del usuario (workflows.models.cheapCandidates).
193
+ for (const candidate of userCheapCandidates(agentDir)) {
194
+ const m = tryGet(candidate[0], candidate[1]);
195
+ if (m)
196
+ return m;
197
+ }
198
+ // 2. DISCOVERY DINÁMICO: el más barato con coste declarado entre los
199
+ // proveedores CONECTADOS — refleja siempre el catálogo real del SDK.
200
+ for (const [providerId, modelId] of discoverCheapModels(runtime)) {
201
+ const m = tryGet(providerId, modelId);
202
+ if (m)
203
+ return m;
204
+ }
205
+ // 3. Fallback estático de emergencia (solo si el discovery no encontró
206
+ // nada — p.ej. catálogos sin costes declarados).
207
+ for (const candidate of CHEAP_MODEL_CANDIDATES) {
208
+ const m = tryGet(candidate[0], candidate[1]);
209
+ if (m)
210
+ return m;
211
+ }
212
+ return undefined;
213
+ }
214
+ // tier:main / tier:judge sin override → default del host (fail-safe)
215
+ return undefined;
216
+ }
217
+ // "provider/model" explícito
218
+ const slash = spec.indexOf("/");
219
+ if (slash <= 0 || slash === spec.length - 1)
220
+ return undefined;
221
+ const provider = spec.slice(0, slash);
222
+ const modelId = spec.slice(slash + 1);
223
+ return tryGet(provider, modelId) ?? undefined;
224
+ }
225
+ //# sourceMappingURL=subagent-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-host.js","sourceRoot":"","sources":["../../../src/core/workflows/subagent-host.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * SubagentHost — subagente de producción: crea una sesión real del SDK\n * (createAgentSession) con el modelo resuelto, tools configuradas y límites.\n *\n * El subagente comparte el mismo runtime (memoria/vault/redacción) porque\n * createAgentSession construye un DefaultResourceLoader con el mismo agentDir\n * y el SettingsManager compartido → los subagentes heredan la memoria, el\n * vault (@vault:) y la censura de secretos (adversarial §17).\n *\n * NOTA (seguridad, fairy-tales): los subagentes usan un agentDir PROPIO\n * efímero cuando se pide aislamiento (nada de extensiones/paquetes dentro);\n * las guardas del engine se re-inyectan explícitamente.\n */\n\nimport { readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport type { Model } from \"@earendil-works/pi-ai\";\nimport type { AgentSession } from \"../agent-session.ts\";\nimport type { ToolDefinition } from \"../extensions/types.ts\";\nimport { ModelRuntime } from \"../model-runtime.ts\";\nimport { createAgentSession } from \"../sdk.ts\";\nimport type { SubagentSession } from \"./agent-runner.ts\";\nimport type { AgentUsage } from \"./types.ts\";\n\nexport interface CreateSubagentSessionOptions {\n\tcwd: string;\n\tagentDir: string;\n\tmodelSpec?: string;\n\ttools?: string[];\n\tcustomTools?: ToolDefinition[];\n\tsessionName?: string;\n\tinstructions?: string;\n\t/** Modelo de la sesión principal: los subagentes lo HEREDAN por defecto. */\n\thostModel?: { provider: string; modelId: string };\n}\n\n/**\n * Crea un subagente real. Devuelve la sesión con su disposición y el usage.\n */\nexport async function createSubagentSession(options: CreateSubagentSessionOptions): Promise<SubagentSession> {\n\t// Routing por spec/tier (§16.2 budget): \"tier:cheap\" resuelve el modelo\n\t// barato, \"provider/model\" el explícito, y cualquier fallo cae al default.\n\tlet model = await resolveSubagentModel(options.agentDir, options.modelSpec);\n\t// Los subagentes HEREDAN el modelo de la sesión principal: si no hay spec/tier\n\t// explícito y el host tiene un modelo en uso, ese es el que se usa (misma\n\t// auth → misma API key del chat).\n\tif (!model && options.hostModel?.provider && options.hostModel.modelId) {\n\t\tmodel =\n\t\t\t(await resolveSubagentModel(options.agentDir, `${options.hostModel.provider}/${options.hostModel.modelId}`)) ??\n\t\t\tundefined;\n\t}\n\t// Thinking por tier: solo cuando el spec es tier:X y hay override en settings.\n\tconst tierMatch = options.modelSpec?.startsWith(\"tier:\")\n\t\t? (options.modelSpec.slice(5) as \"cheap\" | \"main\" | \"judge\")\n\t\t: undefined;\n\tconst thinkingLevel = tierMatch ? thinkingForTier(options.agentDir, tierMatch) : undefined;\n\n\tconst { session } = await createAgentSession({\n\t\tcwd: options.cwd,\n\t\tagentDir: options.agentDir,\n\t\ttools: options.tools,\n\t\tcustomTools: options.customTools,\n\t\t...(model ? { model } : {}),\n\t\t...(thinkingLevel ? { thinkingLevel: thinkingLevel as never } : {}),\n\t\tisSubagent: true, // anti-recursión: el HOST es el único dueño del bucle del goal\n\t});\n\n\t// Nombre de sesión + instrucciones: no hay opción directa en\n\t// createAgentSession para ambos; la instrucción va en el prompt.\n\treturn {\n\t\tsession,\n\t\tdispose: () => {\n\t\t\ttry {\n\t\t\t\tsession.dispose();\n\t\t\t} catch {\n\t\t\t\t// best-effort\n\t\t\t}\n\t\t},\n\t\tgetUsage: () => usageFromSession(session),\n\t};\n}\n\n/** Extraer el usage real de la sesión del subagente. */\nfunction usageFromSession(session: AgentSession): AgentUsage {\n\ttry {\n\t\tconst stats = session.getSessionStats();\n\t\tconst tokens = stats.tokens;\n\t\treturn {\n\t\t\tinput: tokens.input,\n\t\t\toutput: tokens.output,\n\t\t\ttotal: tokens.total,\n\t\t\tcost: stats.cost ?? 0,\n\t\t\tcacheRead: tokens.cacheRead,\n\t\t\tcacheWrite: tokens.cacheWrite,\n\t\t};\n\t} catch {\n\t\treturn { input: 0, output: 0, total: 0, cost: 0, cacheRead: 0, cacheWrite: 0 };\n\t}\n}\n\n/**\n * Fallback de emergencia: solo se usa si el discovery dinámico no encuentra\n * NINGÚN modelo con coste entre los proveedores conectados. Cada entrada se\n * valida con hasConfiguredAuth — sin credenciales se cae al default (fail-safe).\n */\nconst CHEAP_MODEL_CANDIDATES: Array<[provider: string, modelId: string]> = [\n\t[\"anthropic\", \"claude-haiku-4-5\"],\n\t[\"google\", \"gemini-2.5-flash\"],\n\t[\"google\", \"gemini-2.0-flash\"],\n\t[\"openai\", \"gpt-4o-mini\"],\n\t[\"openai\", \"gpt-5-mini\"],\n];\n\ninterface ModelsConfig {\n\tcheap?: string;\n\tmain?: string;\n\tjudge?: string;\n\tcheapCandidates?: string[];\n\tcheapThinking?: string;\n\tmainThinking?: string;\n\tjudgeThinking?: string;\n}\n\n/** Lee workflows.models del settings.json del agentDir (sin SettingsManager — función pura). */\nfunction readModelsConfig(agentDir: string): ModelsConfig {\n\ttry {\n\t\tconst raw = readFileSync(join(agentDir, \"settings.json\"), \"utf-8\");\n\t\tconst parsed = JSON.parse(raw) as { workflows?: { models?: ModelsConfig } };\n\t\treturn parsed?.workflows?.models ?? {};\n\t} catch {\n\t\treturn {};\n\t}\n}\n\n/** Thinking level del tier (workflows.models.<tier>Thinking); undefined = default. */\nexport function thinkingForTier(agentDir: string, tier: \"cheap\" | \"main\" | \"judge\"): string | undefined {\n\tconst cfg = readModelsConfig(agentDir);\n\tconst value = tier === \"cheap\" ? cfg.cheapThinking : tier === \"judge\" ? cfg.judgeThinking : cfg.mainThinking;\n\treturn typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n\n/** Parsea \"provider/model\" → [provider, model]; null si malformado. */\nfunction parseSpec(spec: string): [string, string] | null {\n\tconst slash = spec.indexOf(\"/\");\n\tif (slash <= 0 || slash === spec.length - 1) return null;\n\treturn [spec.slice(0, slash), spec.slice(slash + 1)];\n}\n\n/**\n * Discovery DINÁMICO de modelos baratos: recorre los proveedores CONECTADOS\n * (hasConfiguredAuth) del runtime, toma sus modelos con coste declarado y los\n * ordena por precio (input+output) ascendente. La lista siempre refleja lo\n * que el usuario tiene disponible de verdad — nunca modelos inexistentes.\n */\nfunction discoverCheapModels(runtime: ModelRuntime, max = 6): Array<[string, string]> {\n\tconst scored: Array<{ provider: string; model: string; cost: number }> = [];\n\tfor (const provider of runtime.getProviders()) {\n\t\tif (!runtime.hasConfiguredAuth(provider.id)) continue;\n\t\tfor (const model of runtime.getModels(provider.id)) {\n\t\t\tconst m = model as { modelId?: string; id?: string; cost?: { input?: number; output?: number } };\n\t\t\tconst modelId = m.modelId ?? m.id;\n\t\t\tconst cost = m.cost;\n\t\t\tif (!modelId || !cost || typeof cost.input !== \"number\" || typeof cost.output !== \"number\") continue;\n\t\t\tscored.push({ provider: provider.id, model: modelId, cost: cost.input + cost.output });\n\t\t}\n\t}\n\treturn scored\n\t\t.sort((a, b) => a.cost - b.cost)\n\t\t.slice(0, max)\n\t\t.map((x) => [x.provider, x.model]);\n}\n\n/** Lista del usuario (workflows.models.cheapCandidates). [] si no está configurada. */\nfunction userCheapCandidates(agentDir: string): Array<[string, string]> {\n\tconst configured = readModelsConfig(agentDir).cheapCandidates;\n\tif (!Array.isArray(configured) || configured.length === 0) return [];\n\t// Solo entradas válidas \"provider/model\" (las malas se saltan).\n\treturn configured\n\t\t.map((c) => (typeof c === \"string\" ? parseSpec(c) : null))\n\t\t.filter((c): c is [string, string] => c !== null);\n}\n\n/**\n * Resuelve el modelSpec de un subagente a un Model concreto.\n * - \"tier:cheap\" → cascada:\n * 1. workflows.models.cheap (\"provider/model\" directo)\n * 2. workflows.models.cheapCandidates (lista del usuario, en orden)\n * 3. DISCOVERY DINÁMICO: el modelo más barato con coste declarado de los\n * proveedores CONECTADOS (refleja siempre el catálogo real del SDK)\n * 4. fallback estático curado (solo si el discovery no encontró nada)\n * - \"tier:main\"/\"tier:judge\" → workflows.models.main/judge, si no default.\n * - \"provider/model\" → directo si está autenticado.\n * Devuelve undefined → createAgentSession usa su resolución por defecto.\n */\nexport async function resolveSubagentModel(\n\tagentDir: string,\n\tspec: string | undefined,\n): Promise<Model<any> | undefined> {\n\tif (!spec) return undefined;\n\tlet runtime: ModelRuntime;\n\ttry {\n\t\truntime = await ModelRuntime.create({\n\t\t\tauthPath: join(agentDir, \"auth.json\"),\n\t\t\tmodelsPath: join(agentDir, \"models.json\"),\n\t\t});\n\t} catch {\n\t\treturn undefined; // fail-safe: default\n\t}\n\tconst tryGet = (provider: string, modelId: string): Model<any> | undefined => {\n\t\tconst m = runtime.getModel(provider, modelId);\n\t\treturn m && runtime.hasConfiguredAuth(provider) ? m : undefined;\n\t};\n\n\tif (spec.startsWith(\"tier:\")) {\n\t\tconst tier = spec.slice(5);\n\t\t// Settings override PRIMERO: workflows.models.<tier> = \"provider/model\"\n\t\tconst models = readModelsConfig(agentDir);\n\t\tconst override = tier === \"cheap\" ? models.cheap : tier === \"judge\" ? models.judge : models.main;\n\t\tconst overrideSpec = override ? parseSpec(override) : null;\n\t\tif (overrideSpec) {\n\t\t\tconst m = tryGet(overrideSpec[0], overrideSpec[1]);\n\t\t\tif (m) return m;\n\t\t}\n\t\tif (tier === \"cheap\") {\n\t\t\t// 1. Lista explícita del usuario (workflows.models.cheapCandidates).\n\t\t\tfor (const candidate of userCheapCandidates(agentDir)) {\n\t\t\t\tconst m = tryGet(candidate[0], candidate[1]);\n\t\t\t\tif (m) return m;\n\t\t\t}\n\t\t\t// 2. DISCOVERY DINÁMICO: el más barato con coste declarado entre los\n\t\t\t// proveedores CONECTADOS — refleja siempre el catálogo real del SDK.\n\t\t\tfor (const [providerId, modelId] of discoverCheapModels(runtime)) {\n\t\t\t\tconst m = tryGet(providerId, modelId);\n\t\t\t\tif (m) return m;\n\t\t\t}\n\t\t\t// 3. Fallback estático de emergencia (solo si el discovery no encontró\n\t\t\t// nada — p.ej. catálogos sin costes declarados).\n\t\t\tfor (const candidate of CHEAP_MODEL_CANDIDATES) {\n\t\t\t\tconst m = tryGet(candidate[0], candidate[1]);\n\t\t\t\tif (m) return m;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\t\t// tier:main / tier:judge sin override → default del host (fail-safe)\n\t\treturn undefined;\n\t}\n\n\t// \"provider/model\" explícito\n\tconst slash = spec.indexOf(\"/\");\n\tif (slash <= 0 || slash === spec.length - 1) return undefined;\n\tconst provider = spec.slice(0, slash);\n\tconst modelId = spec.slice(slash + 1);\n\treturn tryGet(provider, modelId) ?? undefined;\n}\n"]}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Ada Intelligence Engine — tool `workflow` para el agente principal (§16.1).
3
+ *
4
+ * Permite al agente lanzar/consultar/abortar workflows con CONFIRMACIÓN de
5
+ * coste estimado (nunca ejecuta un run costoso a ciegas). Resuelve el
6
+ * WorkflowManager por llamada vía getter inyectado.
7
+ */
8
+ import type { ToolDefinition } from "../extensions/types.ts";
9
+ import type { WorkflowManager } from "./manager.ts";
10
+ export interface WorkflowToolContext {
11
+ /** getter que devuelve el mangager (lazy). */
12
+ getManager: () => WorkflowManager | null;
13
+ /** Confirmación humana inyectable (para tests). Devuelve true si ok. */
14
+ confirm?: (prompt: string) => Promise<boolean>;
15
+ /** agentDir para resolver scripts guardados del usuario. */
16
+ agentDir?: string;
17
+ /** SessionId de la sesión que lanza (el panel filtra los runs por esto). */
18
+ sessionId?: () => string | undefined;
19
+ }
20
+ /** Crea la tool workflow para la sesión principal. */
21
+ export declare function createWorkflowTool(ctx: WorkflowToolContext): ToolDefinition;
22
+ //# sourceMappingURL=tool-workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-workflow.d.ts","sourceRoot":"","sources":["../../../src/core/workflows/tool-workflow.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAqC,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAChG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpD,MAAM,WAAW,mBAAmB;IACnC,8CAA8C;IAC9C,UAAU,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC;IACzC,yEAAwE;IACxE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CACrC;AAaD,uDAAsD;AACtD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,mBAAmB,GAAG,cAAc,CAsG3E","sourcesContent":["/**\n * Ada Intelligence Engine — tool `workflow` para el agente principal (§16.1).\n *\n * Permite al agente lanzar/consultar/abortar workflows con CONFIRMACIÓN de\n * coste estimado (nunca ejecuta un run costoso a ciegas). Resuelve el\n * WorkflowManager por llamada vía getter inyectado.\n */\n\nimport { Type } from \"typebox\";\nimport type { AgentToolResult, ExtensionContext, ToolDefinition } from \"../extensions/types.ts\";\nimport type { WorkflowManager } from \"./manager.ts\";\nimport { resolveBuiltinWorkflowScript, resolveWorkflowScriptByName } from \"./resolve-script.ts\";\n\nexport interface WorkflowToolContext {\n\t/** getter que devuelve el mangager (lazy). */\n\tgetManager: () => WorkflowManager | null;\n\t/** Confirmación humana inyectable (para tests). Devuelve true si ok. */\n\tconfirm?: (prompt: string) => Promise<boolean>;\n\t/** agentDir para resolver scripts guardados del usuario. */\n\tagentDir?: string;\n\t/** SessionId de la sesión que lanza (el panel filtra los runs por esto). */\n\tsessionId?: () => string | undefined;\n}\n\ntype OkResult = AgentToolResult<undefined>;\n\nfunction reply(ok: boolean, text: unknown): OkResult {\n\treturn {\n\t\tdetails: undefined,\n\t\tcontent: [\n\t\t\t{ type: \"text\", text: JSON.stringify({ ok, ...(typeof text === \"object\" ? text : { message: text }) }) },\n\t\t],\n\t};\n}\n\n/** Crea la tool workflow para la sesión principal. */\nexport function createWorkflowTool(ctx: WorkflowToolContext): ToolDefinition {\n\tconst confirm = ctx.confirm ?? (async () => true);\n\treturn {\n\t\tname: \"workflow\",\n\t\tlabel: \"Workflow\",\n\t\tdescription:\n\t\t\t\"Lanza o gestiona un workflow del Ada Intelligence Engine (deep-research, code-review, product-build, multi-perspective, o un script guardado). SIEMPRE pide confirmación del coste estimado antes de lanzar un run costoso. Subcomandos: run | list | status | abort.\",\n\t\tpromptSnippet: \"Lanza/gestiona workflows con confirmación de coste (workflow run|list|status|abort)\",\n\t\tpromptGuidelines: [\n\t\t\t\"Usa workflow run para lanzar deep-research o code-review; pide siempre confirmación de coste.\",\n\t\t\t\"Usa workflow status para consultar el estado de un run en curso.\",\n\t\t\t\"Usa workflow abort para cancelar un run.\",\n\t\t],\n\t\tparameters: Type.Object({\n\t\t\tcommand: Type.Union([\n\t\t\t\tType.Literal(\"run\"),\n\t\t\t\tType.Literal(\"list\"),\n\t\t\t\tType.Literal(\"status\"),\n\t\t\t\tType.Literal(\"abort\"),\n\t\t\t]),\n\t\t\tname: Type.Optional(\n\t\t\t\tType.String({\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"Nombre del workflow / del run (deep_research, code_review, product_build, multi_perspective o script guardado)\",\n\t\t\t\t}),\n\t\t\t),\n\t\t\tquestion: Type.Optional(Type.String({ description: \"Pregunta o brief (para deep-research)\" })),\n\t\t\trunId: Type.Optional(Type.String({ description: \"id del run (para status/abort)\" })),\n\t\t\tawait: Type.Optional(Type.Boolean({ description: \"Esperar a que termine (default true)\" })),\n\t\t}),\n\t\tasync execute(\n\t\t\t_toolCallId: string,\n\t\t\tinput: {\n\t\t\t\tcommand: \"run\" | \"list\" | \"status\" | \"abort\";\n\t\t\t\tname?: string;\n\t\t\t\tquestion?: string;\n\t\t\t\trunId?: string;\n\t\t\t\tawait?: boolean;\n\t\t\t},\n\t\t\t_signal: AbortSignal | undefined,\n\t\t\t_onUpdate: unknown,\n\t\t\t_ctx: ExtensionContext,\n\t\t): Promise<OkResult> {\n\t\t\tconst manager = ctx.getManager();\n\n\t\t\tswitch (input.command) {\n\t\t\t\tcase \"list\": {\n\t\t\t\t\tif (!manager) return reply(false, \"workflow manager no disponible\");\n\t\t\t\t\tconst runs = await manager.list().catch(() => []);\n\t\t\t\t\treturn reply(true, { runs: runs.slice(0, 20), count: runs.length });\n\t\t\t\t}\n\t\t\t\tcase \"status\": {\n\t\t\t\t\tif (!manager) return reply(false, \"workflow manager no disponible\");\n\t\t\t\t\tif (!input.runId) return reply(false, \"workflow status exige runId\");\n\t\t\t\t\tconst state = await manager.state(input.runId).catch(() => null);\n\t\t\t\t\treturn state\n\t\t\t\t\t\t? reply(true, {\n\t\t\t\t\t\t\t\trunId: state.runId,\n\t\t\t\t\t\t\t\tname: state.name,\n\t\t\t\t\t\t\t\tstatus: state.status,\n\t\t\t\t\t\t\t\tagentCount: state.agentCount,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t: reply(false, \"run no encontrado\");\n\t\t\t\t}\n\t\t\t\tcase \"abort\": {\n\t\t\t\t\tif (!manager) return reply(false, \"workflow manager no disponible\");\n\t\t\t\t\tif (!input.runId) return reply(false, \"workflow abort exige runId\");\n\t\t\t\t\tconst aborted = manager.abort(input.runId);\n\t\t\t\t\treturn reply(true, { aborted, runId: input.runId });\n\t\t\t\t}\n\t\t\t\tcase \"run\": {\n\t\t\t\t\tif (!manager) return reply(false, \"workflow manager no disponible\");\n\t\t\t\t\tconst name = input.name ?? \"\";\n\t\t\t\t\tif (!name) return reply(false, \"workflow run exige name\");\n\t\t\t\t\t// Confirmación de coste estimado (nunca a ciegas).\n\t\t\t\t\tconst estimated = estimateCost(name);\n\t\t\t\t\tconst ok = await confirm(\n\t\t\t\t\t\t`Lanzar workflow \"${name}\"${input.question ? ` (${input.question})` : \"\"}.\\n` +\n\t\t\t\t\t\t\t`Coste estimado: ~${estimated.usd} USD / ${estimated.tokens} tokens. ¿Continuar?`,\n\t\t\t\t\t);\n\t\t\t\t\tif (!ok) return reply(false, \"lanzamiento cancelado por el usuario\");\n\t\t\t\t\tconst script = resolveWorkflowScript(ctx.agentDir, name);\n\t\t\t\t\tif (!script)\n\t\t\t\t\t\treturn reply(\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t`script de workflow no encontrado: ${name} (builtin o <agentDir>/workflows/${name}.js)`,\n\t\t\t\t\t\t);\n\t\t\t\t\tconst toolSid = ctx.sessionId?.();\n\t\t\t\t\tconst result = await manager\n\t\t\t\t\t\t.execute(script, {\n\t\t\t\t\t\t\targs: { question: input.question, name },\n\t\t\t\t\t\t\tawait: input.await ?? true,\n\t\t\t\t\t\t\tdisplayName: name,\n\t\t\t\t\t\t\t...(toolSid ? { sessionId: toolSid } : {}),\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch((e) => ({ error: e instanceof Error ? e.message : String(e) }));\n\t\t\t\t\tif (\"error\" in result && result.error) return reply(false, result.error);\n\t\t\t\t\treturn reply(true, result);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t};\n}\n\n/** Coste estimado por tipo de workflow (heurística simple). */\nfunction estimateCost(name: string): { usd: number; tokens: number } {\n\tconst tokens = name.includes(\"deep\") || name.includes(\"product\") ? 60000 : 25000;\n\treturn { usd: Math.round(tokens * 0.00001 * 100) / 100, tokens };\n}\n\n/** Resuelve el script del workflow: builtin o guardado en <agentDir>/workflows/. */\nfunction resolveWorkflowScript(agentDir: string | undefined, name: string): string | null {\n\tif (!agentDir) return resolveBuiltinWorkflowScript(name);\n\treturn resolveWorkflowScriptByName(agentDir, name)?.script ?? null;\n}\n"]}