@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,130 @@
1
+ /**
2
+ * Instalación, estado y permisos del motor de control del ordenador.
3
+ *
4
+ * El motor es nuestro fork de pi-computer-use, que vive en `motor/`. Este
5
+ * fichero es lo que usan el comando `ada-cli computer`, la ruta de API del
6
+ * escritorio y el panel de Ajustes — las tres superficies comparten esto para
7
+ * que el control del ordenador no sea una función solo del escritorio.
8
+ *
9
+ * Antes esto hablaba por CLI con `open-computer-use`. Aquel motor tenía seis
10
+ * acciones y le faltaban las dos que importan: esperar y buscar. El detalle del
11
+ * cambio está en `vendor/computer-use/PROCEDENCIA.md`.
12
+ */
13
+ /** Versión del fork. Sube cuando traigamos cambios de aguas arriba. */
14
+ export declare const VERSION_MOTOR = "0.5.0-ada.1";
15
+ /**
16
+ * Los dos permisos de macOS, por separado.
17
+ *
18
+ * Van separados porque son DOS paneles distintos de Ajustes del Sistema y hay
19
+ * que conceder los dos. Un único botón "conceder permisos" solo puede abrir uno
20
+ * de ellos, y deja al usuario creyendo que ya está.
21
+ */
22
+ export type PermisoMac = "accesibilidad" | "pantalla";
23
+ export interface EstadoMotor {
24
+ instalado: boolean;
25
+ version?: string;
26
+ /**
27
+ * `true` solo donde el sistema exige permisos explícitos — hoy, macOS.
28
+ *
29
+ * En Linux y Windows el motor funciona sin conceder nada. Sin esta
30
+ * distinción, la ausencia de las líneas de permisos se leería como
31
+ * "denegado" y la interfaz avisaría de un problema inventado en dos de las
32
+ * tres plataformas.
33
+ */
34
+ permisosRelevantes: boolean;
35
+ accesibilidad?: boolean;
36
+ grabacionPantalla?: boolean;
37
+ /**
38
+ * macOS dice que la Grabación de pantalla está concedida, pero al intentar
39
+ * capturar de verdad falla.
40
+ *
41
+ * Significa casi siempre que el permiso pertenece a OTRA identidad de
42
+ * aplicación — el caso típico al cambiar el identificador de paquete, o al
43
+ * venir de una versión anterior firmada distinto. Sin distinguirlo, la
44
+ * interfaz enseñaría "falta permiso" mientras el usuario ve el interruptor
45
+ * encendido en Ajustes, y no hay forma de salir de ahí.
46
+ */
47
+ pantallaDeOtraApp?: boolean;
48
+ /**
49
+ * No se pudo PREGUNTAR por los permisos (el demonio no contestó).
50
+ *
51
+ * Es distinto de "denegados", y confundirlos se ve en pantalla: sin esto, un
52
+ * timeout del demonio hacía que el panel dijera "macOS sigue negando
53
+ * permisos" y ofreciera los dos pasos para concederlos. El usuario iba a
54
+ * Ajustes del Sistema, veía los interruptores YA encendidos, y se quedaba sin
55
+ * saber qué hacer. El remedio de verdad es reintentar o reiniciar el motor.
56
+ */
57
+ consultaFallida?: boolean;
58
+ /**
59
+ * Qué panel de Ajustes se acaba de abrir, si se abrió alguno.
60
+ *
61
+ * Lo pone solo `pedirPermisos`. Sirve para dos cosas: que la interfaz pueda
62
+ * decir a cuál ha mandado al usuario, y que se pueda COMPROBAR que no se
63
+ * abre ninguno cuando no toca. Sin este campo, "no abrir el panel" y
64
+ * "abrirlo y que falle" se ven exactamente igual desde fuera — y una prueba
65
+ * que no distingue esos dos casos no prueba nada.
66
+ */
67
+ panelAbierto?: PermisoMac;
68
+ detalle?: string;
69
+ }
70
+ /**
71
+ * ¿Está el motor listo?
72
+ *
73
+ * Se comprueban el helper y los permisos por separado porque fallan por
74
+ * separado: el helper puede estar instalado y macOS seguir negando la
75
+ * Accesibilidad. Decir solo "no funciona" dejaría al usuario sin saber qué
76
+ * arreglar, y en macOS lo que falla casi siempre son los permisos.
77
+ */
78
+ export declare function estadoDelMotor(opciones?: OpcionesEstado): Promise<EstadoMotor>;
79
+ export interface OpcionesEstado {
80
+ plataforma?: string;
81
+ /**
82
+ * Dónde buscar el helper. Solo lo cambian las pruebas: la rama "no está
83
+ * instalado" decide qué botón enseña Ajustes, y en una máquina donde SÍ está
84
+ * instalado no habría forma de recorrerla.
85
+ */
86
+ rutaHelper?: string;
87
+ }
88
+ export interface ResultadoInstalacion {
89
+ ok: boolean;
90
+ salida: string;
91
+ }
92
+ /**
93
+ * Instala el helper nativo.
94
+ *
95
+ * En macOS lo instala como aplicación FIRMADA en `~/Applications`, porque los
96
+ * permisos de Accesibilidad se conceden a una aplicación, no a un binario
97
+ * suelto. La firma es local (ad-hoc): vale para uso propio, pero distribuir
98
+ * Ada a terceros pediría un certificado de Apple.
99
+ */
100
+ export declare function instalarMotor(opciones?: {
101
+ timeoutMs?: number;
102
+ }): Promise<ResultadoInstalacion>;
103
+ /**
104
+ * Pide los permisos del sistema.
105
+ *
106
+ * Abre el panel de Accesibilidad de macOS y relee el estado DESPUÉS: el usuario
107
+ * tarda en conceder, y dar por buenos unos permisos sin comprobarlos sería
108
+ * enseñar un punto verde falso.
109
+ *
110
+ * Ojo con una consecuencia del fork: al cambiar el identificador de paquete a
111
+ * `com.hoilab.ada-computer-use`, macOS lo trata como una aplicación NUEVA y
112
+ * pedirá permisos aunque el original los tuviera. Es lo correcto — es otra
113
+ * aplicación — pero conviene decírselo al usuario en vez de que parezca un
114
+ * fallo.
115
+ */
116
+ export declare function pedirPermisos(opciones?: OpcionesEstado & {
117
+ permiso?: PermisoMac;
118
+ }): Promise<EstadoMotor>;
119
+ /**
120
+ * Reléelo todo después de que el usuario haya concedido algo.
121
+ *
122
+ * Reinicia el helper ANTES de mirar, y esa es toda la gracia: macOS cachea los
123
+ * permisos POR PROCESO. Un helper que arrancó sin Accesibilidad sigue creyendo
124
+ * que no la tiene aunque acabes de concederla. Sin este reinicio, el usuario
125
+ * concede, pulsa "volver a comprobar", sigue en rojo, y concluye que está roto
126
+ * — cuando lo único que pasa es que nadie se lo ha preguntado de nuevo al
127
+ * sistema.
128
+ */
129
+ export declare function recomprobarPermisos(opciones?: OpcionesEstado): Promise<EstadoMotor>;
130
+ //# sourceMappingURL=driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../../src/core/computer/driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,wEAAuE;AACvE,eAAO,MAAM,aAAa,gBAAgB,CAAC;AAI3C;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,UAAU,CAAC;AAQtD,MAAM,WAAW,WAAW;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;OAOG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAmDD;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,QAAQ,GAAE,cAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,CAiDxF;AAED,MAAM,WAAW,cAAc;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACpC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,QAAQ,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAOxG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CAAC,QAAQ,GAAE,cAAc,GAAG;IAAE,OAAO,CAAC,EAAE,UAAU,CAAA;CAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAqClH;AAED;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,GAAE,cAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,CAS7F","sourcesContent":["/**\n * Instalación, estado y permisos del motor de control del ordenador.\n *\n * El motor es nuestro fork de pi-computer-use, que vive en `motor/`. Este\n * fichero es lo que usan el comando `ada-cli computer`, la ruta de API del\n * escritorio y el panel de Ajustes — las tres superficies comparten esto para\n * que el control del ordenador no sea una función solo del escritorio.\n *\n * Antes esto hablaba por CLI con `open-computer-use`. Aquel motor tenía seis\n * acciones y le faltaban las dos que importan: esperar y buscar. El detalle del\n * cambio está en `vendor/computer-use/PROCEDENCIA.md`.\n */\n\nimport { spawn } from \"node:child_process\";\nimport { existsSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { HELPER_APP_PATH, macosHelper } from \"./motor/platform/macos/helper.ts\";\n\n/** Versión del fork. Sube cuando traigamos cambios de aguas arriba. */\nexport const VERSION_MOTOR = \"0.5.0-ada.1\";\n\nconst MAX_SALIDA = 4 * 1024 * 1024;\n\n/**\n * Los dos permisos de macOS, por separado.\n *\n * Van separados porque son DOS paneles distintos de Ajustes del Sistema y hay\n * que conceder los dos. Un único botón \"conceder permisos\" solo puede abrir uno\n * de ellos, y deja al usuario creyendo que ya está.\n */\nexport type PermisoMac = \"accesibilidad\" | \"pantalla\";\n\n/** El nombre que entiende el helper para cada panel. */\nconst PANEL: Record<PermisoMac, string> = {\n\taccesibilidad: \"accessibility\",\n\tpantalla: \"screenRecording\",\n};\n\nexport interface EstadoMotor {\n\tinstalado: boolean;\n\tversion?: string;\n\t/**\n\t * `true` solo donde el sistema exige permisos explícitos — hoy, macOS.\n\t *\n\t * En Linux y Windows el motor funciona sin conceder nada. Sin esta\n\t * distinción, la ausencia de las líneas de permisos se leería como\n\t * \"denegado\" y la interfaz avisaría de un problema inventado en dos de las\n\t * tres plataformas.\n\t */\n\tpermisosRelevantes: boolean;\n\taccesibilidad?: boolean;\n\tgrabacionPantalla?: boolean;\n\t/**\n\t * macOS dice que la Grabación de pantalla está concedida, pero al intentar\n\t * capturar de verdad falla.\n\t *\n\t * Significa casi siempre que el permiso pertenece a OTRA identidad de\n\t * aplicación — el caso típico al cambiar el identificador de paquete, o al\n\t * venir de una versión anterior firmada distinto. Sin distinguirlo, la\n\t * interfaz enseñaría \"falta permiso\" mientras el usuario ve el interruptor\n\t * encendido en Ajustes, y no hay forma de salir de ahí.\n\t */\n\tpantallaDeOtraApp?: boolean;\n\t/**\n\t * No se pudo PREGUNTAR por los permisos (el demonio no contestó).\n\t *\n\t * Es distinto de \"denegados\", y confundirlos se ve en pantalla: sin esto, un\n\t * timeout del demonio hacía que el panel dijera \"macOS sigue negando\n\t * permisos\" y ofreciera los dos pasos para concederlos. El usuario iba a\n\t * Ajustes del Sistema, veía los interruptores YA encendidos, y se quedaba sin\n\t * saber qué hacer. El remedio de verdad es reintentar o reiniciar el motor.\n\t */\n\tconsultaFallida?: boolean;\n\t/**\n\t * Qué panel de Ajustes se acaba de abrir, si se abrió alguno.\n\t *\n\t * Lo pone solo `pedirPermisos`. Sirve para dos cosas: que la interfaz pueda\n\t * decir a cuál ha mandado al usuario, y que se pueda COMPROBAR que no se\n\t * abre ninguno cuando no toca. Sin este campo, \"no abrir el panel\" y\n\t * \"abrirlo y que falle\" se ven exactamente igual desde fuera — y una prueba\n\t * que no distingue esos dos casos no prueba nada.\n\t */\n\tpanelAbierto?: PermisoMac;\n\tdetalle?: string;\n}\n\nfunction ejecutar(cmd: string, args: string[], timeoutMs: number): Promise<{ code: number; salida: string }> {\n\treturn new Promise((resolve) => {\n\t\tlet hijo: ReturnType<typeof spawn>;\n\t\ttry {\n\t\t\thijo = spawn(cmd, args, { stdio: [\"ignore\", \"pipe\", \"pipe\"] });\n\t\t} catch (error) {\n\t\t\tresolve({ code: -1, salida: error instanceof Error ? error.message : String(error) });\n\t\t\treturn;\n\t\t}\n\t\tlet salida = \"\";\n\t\tlet resuelto = false;\n\t\tconst fin = (code: number) => {\n\t\t\tif (resuelto) return;\n\t\t\tresuelto = true;\n\t\t\tclearTimeout(reloj);\n\t\t\tresolve({ code, salida });\n\t\t};\n\t\tconst reloj = setTimeout(() => {\n\t\t\thijo.kill(\"SIGKILL\");\n\t\t\tfin(124);\n\t\t}, timeoutMs);\n\t\tconst recoger = (t: Buffer) => {\n\t\t\tif (salida.length < MAX_SALIDA) salida += t.toString(\"utf8\");\n\t\t};\n\t\thijo.stdout?.on(\"data\", recoger);\n\t\thijo.stderr?.on(\"data\", recoger);\n\t\thijo.on(\"error\", (e) => {\n\t\t\tsalida += e.message;\n\t\t\tfin(-1);\n\t\t});\n\t\thijo.on(\"close\", (c) => fin(c ?? 0));\n\t});\n}\n\n/** El script que instala y firma el helper nativo. */\nfunction rutaDelInstalador(): string {\n\t// `vendor/computer-use/scripts/` desde `src/core/computer/`.\n\treturn join(\n\t\tdirname(fileURLToPath(import.meta.url)),\n\t\t\"..\",\n\t\t\"..\",\n\t\t\"..\",\n\t\t\"vendor\",\n\t\t\"computer-use\",\n\t\t\"scripts\",\n\t\t\"setup-helper.mjs\",\n\t);\n}\n\n/**\n * ¿Está el motor listo?\n *\n * Se comprueban el helper y los permisos por separado porque fallan por\n * separado: el helper puede estar instalado y macOS seguir negando la\n * Accesibilidad. Decir solo \"no funciona\" dejaría al usuario sin saber qué\n * arreglar, y en macOS lo que falla casi siempre son los permisos.\n */\nexport async function estadoDelMotor(opciones: OpcionesEstado = {}): Promise<EstadoMotor> {\n\tconst plataforma = opciones.plataforma ?? process.platform;\n\tconst permisosRelevantes = plataforma === \"darwin\";\n\n\tif (!permisosRelevantes) {\n\t\t// Fuera de macOS no hay .app que comprobar; el helper es un binario suelto\n\t\t// y su ausencia se descubre al usarlo.\n\t\treturn { instalado: true, permisosRelevantes, version: VERSION_MOTOR };\n\t}\n\n\tconst rutaHelper = opciones.rutaHelper ?? HELPER_APP_PATH;\n\tif (!existsSync(rutaHelper)) {\n\t\treturn {\n\t\t\tinstalado: false,\n\t\t\tpermisosRelevantes,\n\t\t\tdetalle: `No está instalado el helper en ${rutaHelper}`,\n\t\t};\n\t}\n\n\ttry {\n\t\tawait macosHelper.ensureDaemon();\n\t\t// `checkPermissions`, no `diagnostics`: el primero hace una sonda VIVA de\n\t\t// ScreenCaptureKit; el segundo lee lo que dice la base de datos TCC. No es\n\t\t// lo mismo, y justo cuando difieren es cuando el usuario está atascado.\n\t\tconst p = await macosHelper.command<{\n\t\t\taccessibility?: boolean;\n\t\t\tscreenRecordingCapturable?: boolean;\n\t\t\tscreenRecordingPreflight?: boolean;\n\t\t}>(\"checkPermissions\", {});\n\t\tconst captura = p.screenRecordingCapturable === true;\n\t\tconst enTcc = p.screenRecordingPreflight === true;\n\t\treturn {\n\t\t\tinstalado: true,\n\t\t\tpermisosRelevantes,\n\t\t\tversion: VERSION_MOTOR,\n\t\t\taccesibilidad: p.accessibility === true,\n\t\t\tgrabacionPantalla: captura,\n\t\t\tpantallaDeOtraApp: enTcc && !captura,\n\t\t\tdetalle: `accesibilidad=${p.accessibility === true}, pantalla=${captura}${enTcc && !captura ? \" (concedida a otra app)\" : \"\"}`,\n\t\t};\n\t} catch (error) {\n\t\treturn {\n\t\t\tinstalado: true,\n\t\t\tpermisosRelevantes,\n\t\t\tversion: VERSION_MOTOR,\n\t\t\tconsultaFallida: true,\n\t\t\tdetalle: error instanceof Error ? error.message : String(error),\n\t\t};\n\t}\n}\n\nexport interface OpcionesEstado {\n\tplataforma?: string;\n\t/**\n\t * Dónde buscar el helper. Solo lo cambian las pruebas: la rama \"no está\n\t * instalado\" decide qué botón enseña Ajustes, y en una máquina donde SÍ está\n\t * instalado no habría forma de recorrerla.\n\t */\n\trutaHelper?: string;\n}\n\nexport interface ResultadoInstalacion {\n\tok: boolean;\n\tsalida: string;\n}\n\n/**\n * Instala el helper nativo.\n *\n * En macOS lo instala como aplicación FIRMADA en `~/Applications`, porque los\n * permisos de Accesibilidad se conceden a una aplicación, no a un binario\n * suelto. La firma es local (ad-hoc): vale para uso propio, pero distribuir\n * Ada a terceros pediría un certificado de Apple.\n */\nexport async function instalarMotor(opciones: { timeoutMs?: number } = {}): Promise<ResultadoInstalacion> {\n\tconst instalador = rutaDelInstalador();\n\tif (!existsSync(instalador)) {\n\t\treturn { ok: false, salida: `No encuentro el instalador en ${instalador}` };\n\t}\n\tconst r = await ejecutar(\"node\", [instalador, \"--postinstall\"], opciones.timeoutMs ?? 300_000);\n\treturn { ok: r.code === 0, salida: r.salida.trim() };\n}\n\n/**\n * Pide los permisos del sistema.\n *\n * Abre el panel de Accesibilidad de macOS y relee el estado DESPUÉS: el usuario\n * tarda en conceder, y dar por buenos unos permisos sin comprobarlos sería\n * enseñar un punto verde falso.\n *\n * Ojo con una consecuencia del fork: al cambiar el identificador de paquete a\n * `com.hoilab.ada-computer-use`, macOS lo trata como una aplicación NUEVA y\n * pedirá permisos aunque el original los tuviera. Es lo correcto — es otra\n * aplicación — pero conviene decírselo al usuario en vez de que parezca un\n * fallo.\n */\nexport async function pedirPermisos(opciones: OpcionesEstado & { permiso?: PermisoMac } = {}): Promise<EstadoMotor> {\n\tconst plataforma = opciones.plataforma ?? process.platform;\n\tif (plataforma !== \"darwin\") return estadoDelMotor(opciones);\n\n\tconst antes = await estadoDelMotor(opciones);\n\tif (!antes.instalado) return antes;\n\n\t// Sin permiso explícito, el primero que falte. Así el CLI sigue siendo un\n\t// comando y la interfaz puede pedir uno concreto.\n\tconst permiso: PermisoMac = opciones.permiso ?? (antes.accesibilidad ? \"pantalla\" : \"accesibilidad\");\n\n\ttry {\n\t\t// PRIMERO registrar. Esto provoca la petición de Accesibilidad y un\n\t\t// intento real de captura, y el efecto que importa es que\n\t\t// `ada-computer-use.app` queda LISTADA en los dos paneles. Sin esto, el\n\t\t// usuario abre Ajustes y tiene que añadir la aplicación con el \"+\",\n\t\t// buscándola por la ruta. Con esto solo tiene que dar al interruptor.\n\t\tawait macosHelper.command(\"registerPermissions\", {}, { timeoutMs: 15_000 });\n\t} catch {\n\t\t// Que no se pueda registrar no impide abrir el panel; el usuario lo\n\t\t// tendrá más incómodo, no imposible.\n\t}\n\n\tlet abierto = true;\n\ttry {\n\t\tawait macosHelper.command(\"openPermissionPane\", { kind: PANEL[permiso] });\n\t} catch {\n\t\t// Si el helper no puede abrirlo, se abre por URL. Es lo que hacíamos\n\t\t// antes y funciona; solo que no deja la app listada.\n\t\tconst url =\n\t\t\tpermiso === \"accesibilidad\"\n\t\t\t\t? \"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility\"\n\t\t\t\t: \"x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture\";\n\t\tabierto = (await ejecutar(\"open\", [url], 15_000)).code === 0;\n\t}\n\n\treturn { ...(await estadoDelMotor(opciones)), panelAbierto: abierto ? permiso : undefined };\n}\n\n/**\n * Reléelo todo después de que el usuario haya concedido algo.\n *\n * Reinicia el helper ANTES de mirar, y esa es toda la gracia: macOS cachea los\n * permisos POR PROCESO. Un helper que arrancó sin Accesibilidad sigue creyendo\n * que no la tiene aunque acabes de concederla. Sin este reinicio, el usuario\n * concede, pulsa \"volver a comprobar\", sigue en rojo, y concluye que está roto\n * — cuando lo único que pasa es que nadie se lo ha preguntado de nuevo al\n * sistema.\n */\nexport async function recomprobarPermisos(opciones: OpcionesEstado = {}): Promise<EstadoMotor> {\n\tconst plataforma = opciones.plataforma ?? process.platform;\n\tif (plataforma !== \"darwin\") return estadoDelMotor(opciones);\n\ttry {\n\t\tawait macosHelper.restart();\n\t} catch {\n\t\t// Si no reinicia, se mira igual: un dato viejo es mejor que un error.\n\t}\n\treturn estadoDelMotor(opciones);\n}\n"]}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * Instalación, estado y permisos del motor de control del ordenador.
3
+ *
4
+ * El motor es nuestro fork de pi-computer-use, que vive en `motor/`. Este
5
+ * fichero es lo que usan el comando `ada-cli computer`, la ruta de API del
6
+ * escritorio y el panel de Ajustes — las tres superficies comparten esto para
7
+ * que el control del ordenador no sea una función solo del escritorio.
8
+ *
9
+ * Antes esto hablaba por CLI con `open-computer-use`. Aquel motor tenía seis
10
+ * acciones y le faltaban las dos que importan: esperar y buscar. El detalle del
11
+ * cambio está en `vendor/computer-use/PROCEDENCIA.md`.
12
+ */
13
+ import { spawn } from "node:child_process";
14
+ import { existsSync } from "node:fs";
15
+ import { dirname, join } from "node:path";
16
+ import { fileURLToPath } from "node:url";
17
+ import { HELPER_APP_PATH, macosHelper } from "./motor/platform/macos/helper.js";
18
+ /** Versión del fork. Sube cuando traigamos cambios de aguas arriba. */
19
+ export const VERSION_MOTOR = "0.5.0-ada.1";
20
+ const MAX_SALIDA = 4 * 1024 * 1024;
21
+ /** El nombre que entiende el helper para cada panel. */
22
+ const PANEL = {
23
+ accesibilidad: "accessibility",
24
+ pantalla: "screenRecording",
25
+ };
26
+ function ejecutar(cmd, args, timeoutMs) {
27
+ return new Promise((resolve) => {
28
+ let hijo;
29
+ try {
30
+ hijo = spawn(cmd, args, { stdio: ["ignore", "pipe", "pipe"] });
31
+ }
32
+ catch (error) {
33
+ resolve({ code: -1, salida: error instanceof Error ? error.message : String(error) });
34
+ return;
35
+ }
36
+ let salida = "";
37
+ let resuelto = false;
38
+ const fin = (code) => {
39
+ if (resuelto)
40
+ return;
41
+ resuelto = true;
42
+ clearTimeout(reloj);
43
+ resolve({ code, salida });
44
+ };
45
+ const reloj = setTimeout(() => {
46
+ hijo.kill("SIGKILL");
47
+ fin(124);
48
+ }, timeoutMs);
49
+ const recoger = (t) => {
50
+ if (salida.length < MAX_SALIDA)
51
+ salida += t.toString("utf8");
52
+ };
53
+ hijo.stdout?.on("data", recoger);
54
+ hijo.stderr?.on("data", recoger);
55
+ hijo.on("error", (e) => {
56
+ salida += e.message;
57
+ fin(-1);
58
+ });
59
+ hijo.on("close", (c) => fin(c ?? 0));
60
+ });
61
+ }
62
+ /** El script que instala y firma el helper nativo. */
63
+ function rutaDelInstalador() {
64
+ // `vendor/computer-use/scripts/` desde `src/core/computer/`.
65
+ return join(dirname(fileURLToPath(import.meta.url)), "..", "..", "..", "vendor", "computer-use", "scripts", "setup-helper.mjs");
66
+ }
67
+ /**
68
+ * ¿Está el motor listo?
69
+ *
70
+ * Se comprueban el helper y los permisos por separado porque fallan por
71
+ * separado: el helper puede estar instalado y macOS seguir negando la
72
+ * Accesibilidad. Decir solo "no funciona" dejaría al usuario sin saber qué
73
+ * arreglar, y en macOS lo que falla casi siempre son los permisos.
74
+ */
75
+ export async function estadoDelMotor(opciones = {}) {
76
+ const plataforma = opciones.plataforma ?? process.platform;
77
+ const permisosRelevantes = plataforma === "darwin";
78
+ if (!permisosRelevantes) {
79
+ // Fuera de macOS no hay .app que comprobar; el helper es un binario suelto
80
+ // y su ausencia se descubre al usarlo.
81
+ return { instalado: true, permisosRelevantes, version: VERSION_MOTOR };
82
+ }
83
+ const rutaHelper = opciones.rutaHelper ?? HELPER_APP_PATH;
84
+ if (!existsSync(rutaHelper)) {
85
+ return {
86
+ instalado: false,
87
+ permisosRelevantes,
88
+ detalle: `No está instalado el helper en ${rutaHelper}`,
89
+ };
90
+ }
91
+ try {
92
+ await macosHelper.ensureDaemon();
93
+ // `checkPermissions`, no `diagnostics`: el primero hace una sonda VIVA de
94
+ // ScreenCaptureKit; el segundo lee lo que dice la base de datos TCC. No es
95
+ // lo mismo, y justo cuando difieren es cuando el usuario está atascado.
96
+ const p = await macosHelper.command("checkPermissions", {});
97
+ const captura = p.screenRecordingCapturable === true;
98
+ const enTcc = p.screenRecordingPreflight === true;
99
+ return {
100
+ instalado: true,
101
+ permisosRelevantes,
102
+ version: VERSION_MOTOR,
103
+ accesibilidad: p.accessibility === true,
104
+ grabacionPantalla: captura,
105
+ pantallaDeOtraApp: enTcc && !captura,
106
+ detalle: `accesibilidad=${p.accessibility === true}, pantalla=${captura}${enTcc && !captura ? " (concedida a otra app)" : ""}`,
107
+ };
108
+ }
109
+ catch (error) {
110
+ return {
111
+ instalado: true,
112
+ permisosRelevantes,
113
+ version: VERSION_MOTOR,
114
+ consultaFallida: true,
115
+ detalle: error instanceof Error ? error.message : String(error),
116
+ };
117
+ }
118
+ }
119
+ /**
120
+ * Instala el helper nativo.
121
+ *
122
+ * En macOS lo instala como aplicación FIRMADA en `~/Applications`, porque los
123
+ * permisos de Accesibilidad se conceden a una aplicación, no a un binario
124
+ * suelto. La firma es local (ad-hoc): vale para uso propio, pero distribuir
125
+ * Ada a terceros pediría un certificado de Apple.
126
+ */
127
+ export async function instalarMotor(opciones = {}) {
128
+ const instalador = rutaDelInstalador();
129
+ if (!existsSync(instalador)) {
130
+ return { ok: false, salida: `No encuentro el instalador en ${instalador}` };
131
+ }
132
+ const r = await ejecutar("node", [instalador, "--postinstall"], opciones.timeoutMs ?? 300_000);
133
+ return { ok: r.code === 0, salida: r.salida.trim() };
134
+ }
135
+ /**
136
+ * Pide los permisos del sistema.
137
+ *
138
+ * Abre el panel de Accesibilidad de macOS y relee el estado DESPUÉS: el usuario
139
+ * tarda en conceder, y dar por buenos unos permisos sin comprobarlos sería
140
+ * enseñar un punto verde falso.
141
+ *
142
+ * Ojo con una consecuencia del fork: al cambiar el identificador de paquete a
143
+ * `com.hoilab.ada-computer-use`, macOS lo trata como una aplicación NUEVA y
144
+ * pedirá permisos aunque el original los tuviera. Es lo correcto — es otra
145
+ * aplicación — pero conviene decírselo al usuario en vez de que parezca un
146
+ * fallo.
147
+ */
148
+ export async function pedirPermisos(opciones = {}) {
149
+ const plataforma = opciones.plataforma ?? process.platform;
150
+ if (plataforma !== "darwin")
151
+ return estadoDelMotor(opciones);
152
+ const antes = await estadoDelMotor(opciones);
153
+ if (!antes.instalado)
154
+ return antes;
155
+ // Sin permiso explícito, el primero que falte. Así el CLI sigue siendo un
156
+ // comando y la interfaz puede pedir uno concreto.
157
+ const permiso = opciones.permiso ?? (antes.accesibilidad ? "pantalla" : "accesibilidad");
158
+ try {
159
+ // PRIMERO registrar. Esto provoca la petición de Accesibilidad y un
160
+ // intento real de captura, y el efecto que importa es que
161
+ // `ada-computer-use.app` queda LISTADA en los dos paneles. Sin esto, el
162
+ // usuario abre Ajustes y tiene que añadir la aplicación con el "+",
163
+ // buscándola por la ruta. Con esto solo tiene que dar al interruptor.
164
+ await macosHelper.command("registerPermissions", {}, { timeoutMs: 15_000 });
165
+ }
166
+ catch {
167
+ // Que no se pueda registrar no impide abrir el panel; el usuario lo
168
+ // tendrá más incómodo, no imposible.
169
+ }
170
+ let abierto = true;
171
+ try {
172
+ await macosHelper.command("openPermissionPane", { kind: PANEL[permiso] });
173
+ }
174
+ catch {
175
+ // Si el helper no puede abrirlo, se abre por URL. Es lo que hacíamos
176
+ // antes y funciona; solo que no deja la app listada.
177
+ const url = permiso === "accesibilidad"
178
+ ? "x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"
179
+ : "x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture";
180
+ abierto = (await ejecutar("open", [url], 15_000)).code === 0;
181
+ }
182
+ return { ...(await estadoDelMotor(opciones)), panelAbierto: abierto ? permiso : undefined };
183
+ }
184
+ /**
185
+ * Reléelo todo después de que el usuario haya concedido algo.
186
+ *
187
+ * Reinicia el helper ANTES de mirar, y esa es toda la gracia: macOS cachea los
188
+ * permisos POR PROCESO. Un helper que arrancó sin Accesibilidad sigue creyendo
189
+ * que no la tiene aunque acabes de concederla. Sin este reinicio, el usuario
190
+ * concede, pulsa "volver a comprobar", sigue en rojo, y concluye que está roto
191
+ * — cuando lo único que pasa es que nadie se lo ha preguntado de nuevo al
192
+ * sistema.
193
+ */
194
+ export async function recomprobarPermisos(opciones = {}) {
195
+ const plataforma = opciones.plataforma ?? process.platform;
196
+ if (plataforma !== "darwin")
197
+ return estadoDelMotor(opciones);
198
+ try {
199
+ await macosHelper.restart();
200
+ }
201
+ catch {
202
+ // Si no reinicia, se mira igual: un dato viejo es mejor que un error.
203
+ }
204
+ return estadoDelMotor(opciones);
205
+ }
206
+ //# sourceMappingURL=driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.js","sourceRoot":"","sources":["../../../src/core/computer/driver.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Instalación, estado y permisos del motor de control del ordenador.\n *\n * El motor es nuestro fork de pi-computer-use, que vive en `motor/`. Este\n * fichero es lo que usan el comando `ada-cli computer`, la ruta de API del\n * escritorio y el panel de Ajustes — las tres superficies comparten esto para\n * que el control del ordenador no sea una función solo del escritorio.\n *\n * Antes esto hablaba por CLI con `open-computer-use`. Aquel motor tenía seis\n * acciones y le faltaban las dos que importan: esperar y buscar. El detalle del\n * cambio está en `vendor/computer-use/PROCEDENCIA.md`.\n */\n\nimport { spawn } from \"node:child_process\";\nimport { existsSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { HELPER_APP_PATH, macosHelper } from \"./motor/platform/macos/helper.ts\";\n\n/** Versión del fork. Sube cuando traigamos cambios de aguas arriba. */\nexport const VERSION_MOTOR = \"0.5.0-ada.1\";\n\nconst MAX_SALIDA = 4 * 1024 * 1024;\n\n/**\n * Los dos permisos de macOS, por separado.\n *\n * Van separados porque son DOS paneles distintos de Ajustes del Sistema y hay\n * que conceder los dos. Un único botón \"conceder permisos\" solo puede abrir uno\n * de ellos, y deja al usuario creyendo que ya está.\n */\nexport type PermisoMac = \"accesibilidad\" | \"pantalla\";\n\n/** El nombre que entiende el helper para cada panel. */\nconst PANEL: Record<PermisoMac, string> = {\n\taccesibilidad: \"accessibility\",\n\tpantalla: \"screenRecording\",\n};\n\nexport interface EstadoMotor {\n\tinstalado: boolean;\n\tversion?: string;\n\t/**\n\t * `true` solo donde el sistema exige permisos explícitos — hoy, macOS.\n\t *\n\t * En Linux y Windows el motor funciona sin conceder nada. Sin esta\n\t * distinción, la ausencia de las líneas de permisos se leería como\n\t * \"denegado\" y la interfaz avisaría de un problema inventado en dos de las\n\t * tres plataformas.\n\t */\n\tpermisosRelevantes: boolean;\n\taccesibilidad?: boolean;\n\tgrabacionPantalla?: boolean;\n\t/**\n\t * macOS dice que la Grabación de pantalla está concedida, pero al intentar\n\t * capturar de verdad falla.\n\t *\n\t * Significa casi siempre que el permiso pertenece a OTRA identidad de\n\t * aplicación — el caso típico al cambiar el identificador de paquete, o al\n\t * venir de una versión anterior firmada distinto. Sin distinguirlo, la\n\t * interfaz enseñaría \"falta permiso\" mientras el usuario ve el interruptor\n\t * encendido en Ajustes, y no hay forma de salir de ahí.\n\t */\n\tpantallaDeOtraApp?: boolean;\n\t/**\n\t * No se pudo PREGUNTAR por los permisos (el demonio no contestó).\n\t *\n\t * Es distinto de \"denegados\", y confundirlos se ve en pantalla: sin esto, un\n\t * timeout del demonio hacía que el panel dijera \"macOS sigue negando\n\t * permisos\" y ofreciera los dos pasos para concederlos. El usuario iba a\n\t * Ajustes del Sistema, veía los interruptores YA encendidos, y se quedaba sin\n\t * saber qué hacer. El remedio de verdad es reintentar o reiniciar el motor.\n\t */\n\tconsultaFallida?: boolean;\n\t/**\n\t * Qué panel de Ajustes se acaba de abrir, si se abrió alguno.\n\t *\n\t * Lo pone solo `pedirPermisos`. Sirve para dos cosas: que la interfaz pueda\n\t * decir a cuál ha mandado al usuario, y que se pueda COMPROBAR que no se\n\t * abre ninguno cuando no toca. Sin este campo, \"no abrir el panel\" y\n\t * \"abrirlo y que falle\" se ven exactamente igual desde fuera — y una prueba\n\t * que no distingue esos dos casos no prueba nada.\n\t */\n\tpanelAbierto?: PermisoMac;\n\tdetalle?: string;\n}\n\nfunction ejecutar(cmd: string, args: string[], timeoutMs: number): Promise<{ code: number; salida: string }> {\n\treturn new Promise((resolve) => {\n\t\tlet hijo: ReturnType<typeof spawn>;\n\t\ttry {\n\t\t\thijo = spawn(cmd, args, { stdio: [\"ignore\", \"pipe\", \"pipe\"] });\n\t\t} catch (error) {\n\t\t\tresolve({ code: -1, salida: error instanceof Error ? error.message : String(error) });\n\t\t\treturn;\n\t\t}\n\t\tlet salida = \"\";\n\t\tlet resuelto = false;\n\t\tconst fin = (code: number) => {\n\t\t\tif (resuelto) return;\n\t\t\tresuelto = true;\n\t\t\tclearTimeout(reloj);\n\t\t\tresolve({ code, salida });\n\t\t};\n\t\tconst reloj = setTimeout(() => {\n\t\t\thijo.kill(\"SIGKILL\");\n\t\t\tfin(124);\n\t\t}, timeoutMs);\n\t\tconst recoger = (t: Buffer) => {\n\t\t\tif (salida.length < MAX_SALIDA) salida += t.toString(\"utf8\");\n\t\t};\n\t\thijo.stdout?.on(\"data\", recoger);\n\t\thijo.stderr?.on(\"data\", recoger);\n\t\thijo.on(\"error\", (e) => {\n\t\t\tsalida += e.message;\n\t\t\tfin(-1);\n\t\t});\n\t\thijo.on(\"close\", (c) => fin(c ?? 0));\n\t});\n}\n\n/** El script que instala y firma el helper nativo. */\nfunction rutaDelInstalador(): string {\n\t// `vendor/computer-use/scripts/` desde `src/core/computer/`.\n\treturn join(\n\t\tdirname(fileURLToPath(import.meta.url)),\n\t\t\"..\",\n\t\t\"..\",\n\t\t\"..\",\n\t\t\"vendor\",\n\t\t\"computer-use\",\n\t\t\"scripts\",\n\t\t\"setup-helper.mjs\",\n\t);\n}\n\n/**\n * ¿Está el motor listo?\n *\n * Se comprueban el helper y los permisos por separado porque fallan por\n * separado: el helper puede estar instalado y macOS seguir negando la\n * Accesibilidad. Decir solo \"no funciona\" dejaría al usuario sin saber qué\n * arreglar, y en macOS lo que falla casi siempre son los permisos.\n */\nexport async function estadoDelMotor(opciones: OpcionesEstado = {}): Promise<EstadoMotor> {\n\tconst plataforma = opciones.plataforma ?? process.platform;\n\tconst permisosRelevantes = plataforma === \"darwin\";\n\n\tif (!permisosRelevantes) {\n\t\t// Fuera de macOS no hay .app que comprobar; el helper es un binario suelto\n\t\t// y su ausencia se descubre al usarlo.\n\t\treturn { instalado: true, permisosRelevantes, version: VERSION_MOTOR };\n\t}\n\n\tconst rutaHelper = opciones.rutaHelper ?? HELPER_APP_PATH;\n\tif (!existsSync(rutaHelper)) {\n\t\treturn {\n\t\t\tinstalado: false,\n\t\t\tpermisosRelevantes,\n\t\t\tdetalle: `No está instalado el helper en ${rutaHelper}`,\n\t\t};\n\t}\n\n\ttry {\n\t\tawait macosHelper.ensureDaemon();\n\t\t// `checkPermissions`, no `diagnostics`: el primero hace una sonda VIVA de\n\t\t// ScreenCaptureKit; el segundo lee lo que dice la base de datos TCC. No es\n\t\t// lo mismo, y justo cuando difieren es cuando el usuario está atascado.\n\t\tconst p = await macosHelper.command<{\n\t\t\taccessibility?: boolean;\n\t\t\tscreenRecordingCapturable?: boolean;\n\t\t\tscreenRecordingPreflight?: boolean;\n\t\t}>(\"checkPermissions\", {});\n\t\tconst captura = p.screenRecordingCapturable === true;\n\t\tconst enTcc = p.screenRecordingPreflight === true;\n\t\treturn {\n\t\t\tinstalado: true,\n\t\t\tpermisosRelevantes,\n\t\t\tversion: VERSION_MOTOR,\n\t\t\taccesibilidad: p.accessibility === true,\n\t\t\tgrabacionPantalla: captura,\n\t\t\tpantallaDeOtraApp: enTcc && !captura,\n\t\t\tdetalle: `accesibilidad=${p.accessibility === true}, pantalla=${captura}${enTcc && !captura ? \" (concedida a otra app)\" : \"\"}`,\n\t\t};\n\t} catch (error) {\n\t\treturn {\n\t\t\tinstalado: true,\n\t\t\tpermisosRelevantes,\n\t\t\tversion: VERSION_MOTOR,\n\t\t\tconsultaFallida: true,\n\t\t\tdetalle: error instanceof Error ? error.message : String(error),\n\t\t};\n\t}\n}\n\nexport interface OpcionesEstado {\n\tplataforma?: string;\n\t/**\n\t * Dónde buscar el helper. Solo lo cambian las pruebas: la rama \"no está\n\t * instalado\" decide qué botón enseña Ajustes, y en una máquina donde SÍ está\n\t * instalado no habría forma de recorrerla.\n\t */\n\trutaHelper?: string;\n}\n\nexport interface ResultadoInstalacion {\n\tok: boolean;\n\tsalida: string;\n}\n\n/**\n * Instala el helper nativo.\n *\n * En macOS lo instala como aplicación FIRMADA en `~/Applications`, porque los\n * permisos de Accesibilidad se conceden a una aplicación, no a un binario\n * suelto. La firma es local (ad-hoc): vale para uso propio, pero distribuir\n * Ada a terceros pediría un certificado de Apple.\n */\nexport async function instalarMotor(opciones: { timeoutMs?: number } = {}): Promise<ResultadoInstalacion> {\n\tconst instalador = rutaDelInstalador();\n\tif (!existsSync(instalador)) {\n\t\treturn { ok: false, salida: `No encuentro el instalador en ${instalador}` };\n\t}\n\tconst r = await ejecutar(\"node\", [instalador, \"--postinstall\"], opciones.timeoutMs ?? 300_000);\n\treturn { ok: r.code === 0, salida: r.salida.trim() };\n}\n\n/**\n * Pide los permisos del sistema.\n *\n * Abre el panel de Accesibilidad de macOS y relee el estado DESPUÉS: el usuario\n * tarda en conceder, y dar por buenos unos permisos sin comprobarlos sería\n * enseñar un punto verde falso.\n *\n * Ojo con una consecuencia del fork: al cambiar el identificador de paquete a\n * `com.hoilab.ada-computer-use`, macOS lo trata como una aplicación NUEVA y\n * pedirá permisos aunque el original los tuviera. Es lo correcto — es otra\n * aplicación — pero conviene decírselo al usuario en vez de que parezca un\n * fallo.\n */\nexport async function pedirPermisos(opciones: OpcionesEstado & { permiso?: PermisoMac } = {}): Promise<EstadoMotor> {\n\tconst plataforma = opciones.plataforma ?? process.platform;\n\tif (plataforma !== \"darwin\") return estadoDelMotor(opciones);\n\n\tconst antes = await estadoDelMotor(opciones);\n\tif (!antes.instalado) return antes;\n\n\t// Sin permiso explícito, el primero que falte. Así el CLI sigue siendo un\n\t// comando y la interfaz puede pedir uno concreto.\n\tconst permiso: PermisoMac = opciones.permiso ?? (antes.accesibilidad ? \"pantalla\" : \"accesibilidad\");\n\n\ttry {\n\t\t// PRIMERO registrar. Esto provoca la petición de Accesibilidad y un\n\t\t// intento real de captura, y el efecto que importa es que\n\t\t// `ada-computer-use.app` queda LISTADA en los dos paneles. Sin esto, el\n\t\t// usuario abre Ajustes y tiene que añadir la aplicación con el \"+\",\n\t\t// buscándola por la ruta. Con esto solo tiene que dar al interruptor.\n\t\tawait macosHelper.command(\"registerPermissions\", {}, { timeoutMs: 15_000 });\n\t} catch {\n\t\t// Que no se pueda registrar no impide abrir el panel; el usuario lo\n\t\t// tendrá más incómodo, no imposible.\n\t}\n\n\tlet abierto = true;\n\ttry {\n\t\tawait macosHelper.command(\"openPermissionPane\", { kind: PANEL[permiso] });\n\t} catch {\n\t\t// Si el helper no puede abrirlo, se abre por URL. Es lo que hacíamos\n\t\t// antes y funciona; solo que no deja la app listada.\n\t\tconst url =\n\t\t\tpermiso === \"accesibilidad\"\n\t\t\t\t? \"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility\"\n\t\t\t\t: \"x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture\";\n\t\tabierto = (await ejecutar(\"open\", [url], 15_000)).code === 0;\n\t}\n\n\treturn { ...(await estadoDelMotor(opciones)), panelAbierto: abierto ? permiso : undefined };\n}\n\n/**\n * Reléelo todo después de que el usuario haya concedido algo.\n *\n * Reinicia el helper ANTES de mirar, y esa es toda la gracia: macOS cachea los\n * permisos POR PROCESO. Un helper que arrancó sin Accesibilidad sigue creyendo\n * que no la tiene aunque acabes de concederla. Sin este reinicio, el usuario\n * concede, pulsa \"volver a comprobar\", sigue en rojo, y concluye que está roto\n * — cuando lo único que pasa es que nadie se lo ha preguntado de nuevo al\n * sistema.\n */\nexport async function recomprobarPermisos(opciones: OpcionesEstado = {}): Promise<EstadoMotor> {\n\tconst plataforma = opciones.plataforma ?? process.platform;\n\tif (plataforma !== \"darwin\") return estadoDelMotor(opciones);\n\ttry {\n\t\tawait macosHelper.restart();\n\t} catch {\n\t\t// Si no reinicia, se mira igual: un dato viejo es mejor que un error.\n\t}\n\treturn estadoDelMotor(opciones);\n}\n"]}
@@ -0,0 +1,109 @@
1
+ import type { MouseButtonName, UiAction } from "./contract.ts";
2
+ import type { OutlineNode } from "./outline.ts";
3
+ export type ActionTarget = {
4
+ ref: string;
5
+ } | {
6
+ x: number;
7
+ y: number;
8
+ } | {
9
+ focus: {
10
+ x: number;
11
+ y: number;
12
+ };
13
+ };
14
+ export type PreparedAction = {
15
+ action: "press" | "click";
16
+ target: ActionTarget;
17
+ params: {
18
+ button?: MouseButtonName;
19
+ clickCount?: number;
20
+ };
21
+ establishesFocus: boolean;
22
+ usesCurrentFocus: false;
23
+ needsForeground: boolean;
24
+ } | {
25
+ action: "setText";
26
+ target: ActionTarget;
27
+ params: {
28
+ text: string;
29
+ };
30
+ establishesFocus: false;
31
+ usesCurrentFocus: false;
32
+ needsForeground: false;
33
+ } | {
34
+ action: "typeText";
35
+ target: ActionTarget;
36
+ params: {
37
+ text: string;
38
+ };
39
+ establishesFocus: false;
40
+ usesCurrentFocus: boolean;
41
+ needsForeground: false;
42
+ } | {
43
+ action: "keypress";
44
+ target: ActionTarget;
45
+ params: {
46
+ keys: string[];
47
+ };
48
+ establishesFocus: false;
49
+ usesCurrentFocus: boolean;
50
+ needsForeground: false;
51
+ } | {
52
+ action: "scroll";
53
+ target: ActionTarget;
54
+ params: {
55
+ scrollX: number;
56
+ scrollY: number;
57
+ };
58
+ establishesFocus: false;
59
+ usesCurrentFocus: false;
60
+ needsForeground: false;
61
+ } | {
62
+ action: "drag";
63
+ target: ActionTarget;
64
+ params: {
65
+ path: Array<{
66
+ x: number;
67
+ y: number;
68
+ }>;
69
+ };
70
+ establishesFocus: false;
71
+ usesCurrentFocus: false;
72
+ needsForeground: false;
73
+ } | {
74
+ action: "moveMouse";
75
+ target: ActionTarget;
76
+ params: Record<string, never>;
77
+ establishesFocus: false;
78
+ usesCurrentFocus: false;
79
+ needsForeground: false;
80
+ } | {
81
+ action: "wait";
82
+ params: {
83
+ ms: number;
84
+ };
85
+ establishesFocus: false;
86
+ usesCurrentFocus: false;
87
+ needsForeground: false;
88
+ };
89
+ export interface ActionState {
90
+ currentFocus: boolean;
91
+ }
92
+ export interface ActionEnvironment {
93
+ headless: boolean;
94
+ image?: {
95
+ width: number;
96
+ height: number;
97
+ };
98
+ node(ref: string): OutlineNode;
99
+ center(node: OutlineNode): {
100
+ x: number;
101
+ y: number;
102
+ };
103
+ validatePoint(x: number, y: number, label?: string): void;
104
+ }
105
+ export declare function prepareAction(action: UiAction, state: ActionState, env: ActionEnvironment): PreparedAction;
106
+ export declare function canRetryInForeground(action: PreparedAction, outcome: "worked" | "didnt" | "unknown", headless: boolean): boolean;
107
+ export declare function outcomeAfterCheck(current: "worked" | "didnt" | "unknown", check: "verified" | "preexisting" | "failed"): "worked" | "didnt" | "unknown";
108
+ export declare function outcomeAfterObservedValues(current: "worked" | "didnt" | "unknown", actions: UiAction[], valueForRef: (ref: string) => string | undefined): "worked" | "didnt" | "unknown";
109
+ //# sourceMappingURL=actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../../src/core/computer/motor/actions.ts"],"names":[],"mappings":"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","sourcesContent":["import type { MouseButtonName, UiAction } from \"./contract.ts\";\nimport type { OutlineNode } from \"./outline.ts\";\nimport { toFiniteNumber } from \"./platform/coerce.ts\";\n\nexport type ActionTarget = { ref: string } | { x: number; y: number } | { focus: { x: number; y: number } };\n\nexport type PreparedAction =\n\t| {\n\t\t\taction: \"press\" | \"click\";\n\t\t\ttarget: ActionTarget;\n\t\t\tparams: { button?: MouseButtonName; clickCount?: number };\n\t\t\testablishesFocus: boolean;\n\t\t\tusesCurrentFocus: false;\n\t\t\tneedsForeground: boolean;\n\t }\n\t| {\n\t\t\taction: \"setText\";\n\t\t\ttarget: ActionTarget;\n\t\t\tparams: { text: string };\n\t\t\testablishesFocus: false;\n\t\t\tusesCurrentFocus: false;\n\t\t\tneedsForeground: false;\n\t }\n\t| {\n\t\t\taction: \"typeText\";\n\t\t\ttarget: ActionTarget;\n\t\t\tparams: { text: string };\n\t\t\testablishesFocus: false;\n\t\t\tusesCurrentFocus: boolean;\n\t\t\tneedsForeground: false;\n\t }\n\t| {\n\t\t\taction: \"keypress\";\n\t\t\ttarget: ActionTarget;\n\t\t\tparams: { keys: string[] };\n\t\t\testablishesFocus: false;\n\t\t\tusesCurrentFocus: boolean;\n\t\t\tneedsForeground: false;\n\t }\n\t| {\n\t\t\taction: \"scroll\";\n\t\t\ttarget: ActionTarget;\n\t\t\tparams: { scrollX: number; scrollY: number };\n\t\t\testablishesFocus: false;\n\t\t\tusesCurrentFocus: false;\n\t\t\tneedsForeground: false;\n\t }\n\t| {\n\t\t\taction: \"drag\";\n\t\t\ttarget: ActionTarget;\n\t\t\tparams: { path: Array<{ x: number; y: number }> };\n\t\t\testablishesFocus: false;\n\t\t\tusesCurrentFocus: false;\n\t\t\tneedsForeground: false;\n\t }\n\t| {\n\t\t\taction: \"moveMouse\";\n\t\t\ttarget: ActionTarget;\n\t\t\tparams: Record<string, never>;\n\t\t\testablishesFocus: false;\n\t\t\tusesCurrentFocus: false;\n\t\t\tneedsForeground: false;\n\t }\n\t| {\n\t\t\taction: \"wait\";\n\t\t\tparams: { ms: number };\n\t\t\testablishesFocus: false;\n\t\t\tusesCurrentFocus: false;\n\t\t\tneedsForeground: false;\n\t };\n\nexport interface ActionState {\n\tcurrentFocus: boolean;\n}\n\nexport interface ActionEnvironment {\n\theadless: boolean;\n\timage?: { width: number; height: number };\n\tnode(ref: string): OutlineNode;\n\tcenter(node: OutlineNode): { x: number; y: number };\n\tvalidatePoint(x: number, y: number, label?: string): void;\n}\n\nfunction mouseButton(value: unknown): MouseButtonName {\n\treturn value === \"right\" || value === \"middle\" ? value : \"left\";\n}\n\nfunction clickCount(value: unknown, fallback = 1): number {\n\treturn Math.max(1, Math.min(3, Math.round(toFiniteNumber(value, fallback))));\n}\n\nfunction scrollDelta(value: unknown): number {\n\treturn Math.max(-10_000, Math.min(10_000, Math.round(toFiniteNumber(value, 0))));\n}\n\nfunction keys(value: unknown): string[] {\n\tif (!Array.isArray(value) || value.length === 0) throw new Error(\"keypress.keys must contain at least one key.\");\n\treturn value.map((key) => String(key));\n}\n\nfunction path(value: UiAction[\"path\"], env: ActionEnvironment): Array<{ x: number; y: number }> {\n\tif (!Array.isArray(value) || value.length < 2) throw new Error(\"drag.path must contain at least two points.\");\n\treturn value.map((point, index) => {\n\t\tconst x = Array.isArray(point) ? toFiniteNumber(point[0], NaN) : toFiniteNumber(point?.x, NaN);\n\t\tconst y = Array.isArray(point) ? toFiniteNumber(point[1], NaN) : toFiniteNumber(point?.y, NaN);\n\t\tenv.validatePoint(x, y, `Drag point ${index + 1}`);\n\t\treturn { x, y };\n\t});\n}\n\nfunction nativeTarget(action: UiAction, operation: PreparedAction[\"action\"], env: ActionEnvironment): ActionTarget {\n\tif (action.ref?.trim()) {\n\t\tconst node = env.node(action.ref.trim());\n\t\tconst semanticClick = operation === \"click\" || operation === \"press\";\n\t\tif (semanticClick && node.isTextInput) {\n\t\t\tconst point = env.center(node);\n\t\t\tenv.validatePoint(point.x, point.y);\n\t\t\treturn point;\n\t\t}\n\t\tconst onlyIncidentalActions = node.actions.every(\n\t\t\t(candidate) => candidate === \"AXShowMenu\" || candidate === \"AXScrollToVisible\",\n\t\t);\n\t\tif (\n\t\t\tnode.wireRef &&\n\t\t\t!node.pictureOnly &&\n\t\t\t(!semanticClick || node.canPress || node.canFocus || node.canSetValue || !onlyIncidentalActions)\n\t\t) {\n\t\t\treturn { ref: node.wireRef };\n\t\t}\n\t\tconst point = env.center(node);\n\t\tenv.validatePoint(point.x, point.y);\n\t\treturn point;\n\t}\n\tconst x = toFiniteNumber(action.x, NaN);\n\tconst y = toFiniteNumber(action.y, NaN);\n\tif (Number.isFinite(x) && Number.isFinite(y)) {\n\t\tenv.validatePoint(x, y);\n\t\treturn { x, y };\n\t}\n\tif (operation === \"drag\" && action.path?.length) return path(action.path, env)[0];\n\tthrow new Error(`${operation} requires either ref or both x and y.`);\n}\n\nfunction focusedTarget(env: ActionEnvironment): ActionTarget {\n\tif (!env.image) throw new Error(\"Focused keyboard input requires an image-bearing state.\");\n\treturn { focus: { x: Math.floor(env.image.width / 2), y: Math.floor(env.image.height / 2) } };\n}\n\nfunction containsEditable(node: OutlineNode): boolean {\n\tif (node.canSetValue || node.role.toLowerCase().includes(\"text\")) return true;\n\treturn node.children.some(containsEditable);\n}\n\nexport function prepareAction(action: UiAction, state: ActionState, env: ActionEnvironment): PreparedAction {\n\tconst operation = action.action;\n\tconst usesCurrentFocus =\n\t\t!env.headless && state.currentFocus && !action.ref && (operation === \"typeText\" || operation === \"keypress\");\n\tconst target = usesCurrentFocus ? focusedTarget(env) : nativeTarget(action, operation, env);\n\tconst establishesFocus =\n\t\t!env.headless &&\n\t\tBoolean(action.ref) &&\n\t\t(operation === \"click\" || operation === \"press\") &&\n\t\tcontainsEditable(env.node(action.ref!));\n\tconst needsForeground = !env.headless && (operation === \"click\" || operation === \"press\") && \"x\" in target;\n\n\tswitch (operation) {\n\t\tcase \"press\":\n\t\tcase \"click\":\n\t\t\treturn {\n\t\t\t\taction: operation,\n\t\t\t\ttarget,\n\t\t\t\tparams: { button: mouseButton(action.button), clickCount: clickCount(action.clickCount) },\n\t\t\t\testablishesFocus,\n\t\t\t\tusesCurrentFocus: false,\n\t\t\t\tneedsForeground,\n\t\t\t};\n\t\tcase \"setText\":\n\t\t\treturn {\n\t\t\t\taction: operation,\n\t\t\t\ttarget,\n\t\t\t\tparams: { text: action.text ?? \"\" },\n\t\t\t\testablishesFocus: false,\n\t\t\t\tusesCurrentFocus: false,\n\t\t\t\tneedsForeground: false,\n\t\t\t};\n\t\tcase \"typeText\":\n\t\t\treturn {\n\t\t\t\taction: operation,\n\t\t\t\ttarget,\n\t\t\t\tparams: { text: action.text ?? \"\" },\n\t\t\t\testablishesFocus: false,\n\t\t\t\tusesCurrentFocus,\n\t\t\t\tneedsForeground: false,\n\t\t\t};\n\t\tcase \"keypress\":\n\t\t\treturn {\n\t\t\t\taction: operation,\n\t\t\t\ttarget,\n\t\t\t\tparams: { keys: keys(action.keys) },\n\t\t\t\testablishesFocus: false,\n\t\t\t\tusesCurrentFocus,\n\t\t\t\tneedsForeground: false,\n\t\t\t};\n\t\tcase \"scroll\":\n\t\t\treturn {\n\t\t\t\taction: operation,\n\t\t\t\ttarget,\n\t\t\t\tparams: { scrollX: scrollDelta(action.scrollX), scrollY: scrollDelta(action.scrollY) },\n\t\t\t\testablishesFocus: false,\n\t\t\t\tusesCurrentFocus: false,\n\t\t\t\tneedsForeground: false,\n\t\t\t};\n\t\tcase \"drag\":\n\t\t\treturn {\n\t\t\t\taction: operation,\n\t\t\t\ttarget,\n\t\t\t\tparams: { path: path(action.path, env) },\n\t\t\t\testablishesFocus: false,\n\t\t\t\tusesCurrentFocus: false,\n\t\t\t\tneedsForeground: false,\n\t\t\t};\n\t\tcase \"moveMouse\":\n\t\t\treturn {\n\t\t\t\taction: operation,\n\t\t\t\ttarget,\n\t\t\t\tparams: {},\n\t\t\t\testablishesFocus: false,\n\t\t\t\tusesCurrentFocus: false,\n\t\t\t\tneedsForeground: false,\n\t\t\t};\n\t}\n}\n\nexport function canRetryInForeground(\n\taction: PreparedAction,\n\toutcome: \"worked\" | \"didnt\" | \"unknown\",\n\theadless: boolean,\n): boolean {\n\treturn !headless && outcome === \"didnt\" && (action.action === \"typeText\" || action.action === \"keypress\");\n}\n\nexport function outcomeAfterCheck(\n\tcurrent: \"worked\" | \"didnt\" | \"unknown\",\n\tcheck: \"verified\" | \"preexisting\" | \"failed\",\n): \"worked\" | \"didnt\" | \"unknown\" {\n\tif (check === \"verified\") return \"worked\";\n\tif (check === \"failed\") return \"didnt\";\n\treturn current;\n}\n\nexport function outcomeAfterObservedValues(\n\tcurrent: \"worked\" | \"didnt\" | \"unknown\",\n\tactions: UiAction[],\n\tvalueForRef: (ref: string) => string | undefined,\n): \"worked\" | \"didnt\" | \"unknown\" {\n\tif (actions.length === 0 || actions.some((action) => action.action !== \"setText\" || !action.ref)) return current;\n\tconst matches = actions.every((action) => valueForRef(action.ref!) === (action.text ?? \"\"));\n\treturn matches ? \"worked\" : current;\n}\n"]}