@hoilab/ada-cli 0.85.0 → 0.85.3

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 (1682) hide show
  1. package/dist/ada-publico.d.ts.map +1 -1
  2. package/dist/ada-publico.js.map +1 -1
  3. package/dist/bun/cli.d.ts.map +1 -1
  4. package/dist/bun/cli.js.map +1 -1
  5. package/dist/bun/register-bedrock.d.ts.map +1 -1
  6. package/dist/bun/register-bedrock.js.map +1 -1
  7. package/dist/bun/restore-sandbox-env.d.ts.map +1 -1
  8. package/dist/bun/restore-sandbox-env.js.map +1 -1
  9. package/dist/cli/args.d.ts.map +1 -1
  10. package/dist/cli/args.js.map +1 -1
  11. package/dist/cli/audit-command.d.ts.map +1 -1
  12. package/dist/cli/audit-command.js.map +1 -1
  13. package/dist/cli/auth-check.d.ts.map +1 -1
  14. package/dist/cli/auth-check.js.map +1 -1
  15. package/dist/cli/auth-command.d.ts.map +1 -1
  16. package/dist/cli/auth-command.js.map +1 -1
  17. package/dist/cli/banco-command.d.ts.map +1 -1
  18. package/dist/cli/banco-command.js.map +1 -1
  19. package/dist/cli/cleanse-command.d.ts.map +1 -1
  20. package/dist/cli/cleanse-command.js +5 -2
  21. package/dist/cli/cleanse-command.js.map +1 -1
  22. package/dist/cli/commit-command.d.ts +8 -6
  23. package/dist/cli/commit-command.d.ts.map +1 -1
  24. package/dist/cli/commit-command.js +124 -92
  25. package/dist/cli/commit-command.js.map +1 -1
  26. package/dist/cli/completion.d.ts +20 -0
  27. package/dist/cli/completion.d.ts.map +1 -0
  28. package/dist/cli/completion.js +75 -0
  29. package/dist/cli/completion.js.map +1 -0
  30. package/dist/cli/computer-command.d.ts.map +1 -1
  31. package/dist/cli/computer-command.js.map +1 -1
  32. package/dist/cli/config-selector.d.ts.map +1 -1
  33. package/dist/cli/config-selector.js.map +1 -1
  34. package/dist/cli/credential-print.d.ts.map +1 -1
  35. package/dist/cli/credential-print.js.map +1 -1
  36. package/dist/cli/discover-command.d.ts.map +1 -1
  37. package/dist/cli/discover-command.js +5 -1
  38. package/dist/cli/discover-command.js.map +1 -1
  39. package/dist/cli/experimental/auth.d.ts.map +1 -1
  40. package/dist/cli/experimental/auth.js.map +1 -1
  41. package/dist/cli/experimental/cli.d.ts +1 -1
  42. package/dist/cli/experimental/cli.d.ts.map +1 -1
  43. package/dist/cli/experimental/cli.js.map +1 -1
  44. package/dist/cli/experimental/command-options.d.ts.map +1 -1
  45. package/dist/cli/experimental/command-options.js.map +1 -1
  46. package/dist/cli/experimental/command.d.ts.map +1 -1
  47. package/dist/cli/experimental/command.js.map +1 -1
  48. package/dist/cli/experimental/commands/client.d.ts.map +1 -1
  49. package/dist/cli/experimental/commands/client.js.map +1 -1
  50. package/dist/cli/experimental/commands/pi.d.ts.map +1 -1
  51. package/dist/cli/experimental/commands/pi.js.map +1 -1
  52. package/dist/cli/experimental/commands/server.d.ts.map +1 -1
  53. package/dist/cli/experimental/commands/server.js.map +1 -1
  54. package/dist/cli/experimental/transport-address.d.ts.map +1 -1
  55. package/dist/cli/experimental/transport-address.js.map +1 -1
  56. package/dist/cli/file-processor.d.ts.map +1 -1
  57. package/dist/cli/file-processor.js.map +1 -1
  58. package/dist/cli/guardrails.d.ts +14 -0
  59. package/dist/cli/guardrails.d.ts.map +1 -0
  60. package/dist/cli/guardrails.js +47 -0
  61. package/dist/cli/guardrails.js.map +1 -0
  62. package/dist/cli/hashline-command.d.ts.map +1 -1
  63. package/dist/cli/hashline-command.js.map +1 -1
  64. package/dist/cli/home-screen.d.ts.map +1 -1
  65. package/dist/cli/home-screen.js +1 -0
  66. package/dist/cli/home-screen.js.map +1 -1
  67. package/dist/cli/import-command.d.ts.map +1 -1
  68. package/dist/cli/import-command.js.map +1 -1
  69. package/dist/cli/initial-message.d.ts +1 -1
  70. package/dist/cli/initial-message.d.ts.map +1 -1
  71. package/dist/cli/initial-message.js.map +1 -1
  72. package/dist/cli/list-models.d.ts.map +1 -1
  73. package/dist/cli/list-models.js.map +1 -1
  74. package/dist/cli/politica-command.d.ts.map +1 -1
  75. package/dist/cli/politica-command.js.map +1 -1
  76. package/dist/cli/project-trust.d.ts.map +1 -1
  77. package/dist/cli/project-trust.js.map +1 -1
  78. package/dist/cli/refine-command.d.ts.map +1 -1
  79. package/dist/cli/refine-command.js.map +1 -1
  80. package/dist/cli/review-command.d.ts.map +1 -1
  81. package/dist/cli/review-command.js +77 -13
  82. package/dist/cli/review-command.js.map +1 -1
  83. package/dist/cli/schedule-command.d.ts.map +1 -1
  84. package/dist/cli/schedule-command.js.map +1 -1
  85. package/dist/cli/serve-command.d.ts +0 -1
  86. package/dist/cli/serve-command.d.ts.map +1 -1
  87. package/dist/cli/serve-command.js +12 -6
  88. package/dist/cli/serve-command.js.map +1 -1
  89. package/dist/cli/session-picker.d.ts.map +1 -1
  90. package/dist/cli/session-picker.js.map +1 -1
  91. package/dist/cli/startup-ui.d.ts.map +1 -1
  92. package/dist/cli/startup-ui.js.map +1 -1
  93. package/dist/cli/telegram-command.d.ts.map +1 -1
  94. package/dist/cli/telegram-command.js.map +1 -1
  95. package/dist/cli/telemetria-command.d.ts.map +1 -1
  96. package/dist/cli/telemetria-command.js.map +1 -1
  97. package/dist/cli/undo-command.d.ts.map +1 -1
  98. package/dist/cli/undo-command.js.map +1 -1
  99. package/dist/cli/update-cli.d.ts +82 -0
  100. package/dist/cli/update-cli.d.ts.map +1 -0
  101. package/dist/cli/update-cli.js +372 -0
  102. package/dist/cli/update-cli.js.map +1 -0
  103. package/dist/cli/usage-command.d.ts.map +1 -1
  104. package/dist/cli/usage-command.js +75 -6
  105. package/dist/cli/usage-command.js.map +1 -1
  106. package/dist/cli/wiki-command.d.ts.map +1 -1
  107. package/dist/cli/wiki-command.js.map +1 -1
  108. package/dist/cli.d.ts +0 -6
  109. package/dist/cli.d.ts.map +1 -1
  110. package/dist/cli.js +0 -0
  111. package/dist/cli.js.map +1 -1
  112. package/dist/client/index.d.ts.map +1 -1
  113. package/dist/client/index.js.map +1 -1
  114. package/dist/client/remote-session.d.ts.map +1 -1
  115. package/dist/client/remote-session.js.map +1 -1
  116. package/dist/client/transcript.d.ts.map +1 -1
  117. package/dist/client/transcript.js.map +1 -1
  118. package/dist/config.d.ts.map +1 -1
  119. package/dist/config.js.map +1 -1
  120. package/dist/core/ada.d.ts +5 -0
  121. package/dist/core/ada.d.ts.map +1 -1
  122. package/dist/core/ada.js +5 -0
  123. package/dist/core/ada.js.map +1 -1
  124. package/dist/core/advisor/guarda.d.ts.map +1 -1
  125. package/dist/core/advisor/guarda.js.map +1 -1
  126. package/dist/core/advisor/runtime.d.ts.map +1 -1
  127. package/dist/core/advisor/runtime.js.map +1 -1
  128. package/dist/core/advisor/sesion.d.ts.map +1 -1
  129. package/dist/core/advisor/sesion.js.map +1 -1
  130. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  131. package/dist/core/agent-session-runtime.js.map +1 -1
  132. package/dist/core/agent-session-services.d.ts.map +1 -1
  133. package/dist/core/agent-session-services.js +33 -0
  134. package/dist/core/agent-session-services.js.map +1 -1
  135. package/dist/core/agent-session.d.ts +67 -0
  136. package/dist/core/agent-session.d.ts.map +1 -1
  137. package/dist/core/agent-session.js +43 -2
  138. package/dist/core/agent-session.js.map +1 -1
  139. package/dist/core/agents/loader.d.ts.map +1 -1
  140. package/dist/core/agents/loader.js.map +1 -1
  141. package/dist/core/appendonly/append-only-context.d.ts +118 -0
  142. package/dist/core/appendonly/append-only-context.d.ts.map +1 -0
  143. package/dist/core/appendonly/append-only-context.js +256 -0
  144. package/dist/core/appendonly/append-only-context.js.map +1 -0
  145. package/dist/core/appendonly/auto.d.ts +30 -0
  146. package/dist/core/appendonly/auto.d.ts.map +1 -0
  147. package/dist/core/appendonly/auto.js +68 -0
  148. package/dist/core/appendonly/auto.js.map +1 -0
  149. package/dist/core/appendonly/extension.d.ts +29 -0
  150. package/dist/core/appendonly/extension.d.ts.map +1 -0
  151. package/dist/core/appendonly/extension.js +51 -0
  152. package/dist/core/appendonly/extension.js.map +1 -0
  153. package/dist/core/appendonly/index.d.ts +41 -0
  154. package/dist/core/appendonly/index.d.ts.map +1 -0
  155. package/dist/core/appendonly/index.js +42 -0
  156. package/dist/core/appendonly/index.js.map +1 -0
  157. package/dist/core/aprobacion/generados.d.ts.map +1 -1
  158. package/dist/core/aprobacion/generados.js.map +1 -1
  159. package/dist/core/aprobacion/politica-de-maquina.d.ts.map +1 -1
  160. package/dist/core/aprobacion/politica-de-maquina.js.map +1 -1
  161. package/dist/core/aprobacion/politica.d.ts +1 -1
  162. package/dist/core/aprobacion/politica.d.ts.map +1 -1
  163. package/dist/core/aprobacion/politica.js.map +1 -1
  164. package/dist/core/arranque/atajos.d.ts.map +1 -1
  165. package/dist/core/arranque/atajos.js +20 -0
  166. package/dist/core/arranque/atajos.js.map +1 -1
  167. package/dist/core/audit/exportacion.d.ts.map +1 -1
  168. package/dist/core/audit/exportacion.js +5 -3
  169. package/dist/core/audit/exportacion.js.map +1 -1
  170. package/dist/core/audit/libro.d.ts +7 -0
  171. package/dist/core/audit/libro.d.ts.map +1 -1
  172. package/dist/core/audit/libro.js.map +1 -1
  173. package/dist/core/audit/registro-sesion.d.ts.map +1 -1
  174. package/dist/core/audit/registro-sesion.js.map +1 -1
  175. package/dist/core/audit/retencion.d.ts.map +1 -1
  176. package/dist/core/audit/retencion.js.map +1 -1
  177. package/dist/core/audit/rutas.d.ts.map +1 -1
  178. package/dist/core/audit/rutas.js.map +1 -1
  179. package/dist/core/auth-guidance.d.ts.map +1 -1
  180. package/dist/core/auth-guidance.js.map +1 -1
  181. package/dist/core/auth-storage.d.ts.map +1 -1
  182. package/dist/core/auth-storage.js.map +1 -1
  183. package/dist/core/banco/almacenamiento.d.ts.map +1 -1
  184. package/dist/core/banco/almacenamiento.js.map +1 -1
  185. package/dist/core/banco/analisis.d.ts.map +1 -1
  186. package/dist/core/banco/analisis.js.map +1 -1
  187. package/dist/core/banco/asides.d.ts +64 -0
  188. package/dist/core/banco/asides.d.ts.map +1 -0
  189. package/dist/core/banco/asides.js +113 -0
  190. package/dist/core/banco/asides.js.map +1 -0
  191. package/dist/core/banco/bloques.d.ts.map +1 -1
  192. package/dist/core/banco/bloques.js.map +1 -1
  193. package/dist/core/banco/cargas.d.ts.map +1 -1
  194. package/dist/core/banco/cargas.js.map +1 -1
  195. package/dist/core/banco/comparar.d.ts.map +1 -1
  196. package/dist/core/banco/comparar.js.map +1 -1
  197. package/dist/core/banco/cow-isolation.d.ts +74 -0
  198. package/dist/core/banco/cow-isolation.d.ts.map +1 -0
  199. package/dist/core/banco/cow-isolation.js +259 -0
  200. package/dist/core/banco/cow-isolation.js.map +1 -0
  201. package/dist/core/banco/ejecutar.d.ts.map +1 -1
  202. package/dist/core/banco/ejecutar.js.map +1 -1
  203. package/dist/core/banco/generar.d.ts.map +1 -1
  204. package/dist/core/banco/generar.js.map +1 -1
  205. package/dist/core/banco/mutaciones.d.ts.map +1 -1
  206. package/dist/core/banco/mutaciones.js.map +1 -1
  207. package/dist/core/banco/park-revive.d.ts +67 -0
  208. package/dist/core/banco/park-revive.d.ts.map +1 -0
  209. package/dist/core/banco/park-revive.js +130 -0
  210. package/dist/core/banco/park-revive.js.map +1 -0
  211. package/dist/core/banco/pruning.d.ts +48 -0
  212. package/dist/core/banco/pruning.d.ts.map +1 -0
  213. package/dist/core/banco/pruning.js +146 -0
  214. package/dist/core/banco/pruning.js.map +1 -0
  215. package/dist/core/banco/steering.d.ts +81 -0
  216. package/dist/core/banco/steering.d.ts.map +1 -0
  217. package/dist/core/banco/steering.js +96 -0
  218. package/dist/core/banco/steering.js.map +1 -0
  219. package/dist/core/banco/tipos.d.ts.map +1 -1
  220. package/dist/core/banco/tipos.js.map +1 -1
  221. package/dist/core/bash-executor.d.ts.map +1 -1
  222. package/dist/core/bash-executor.js.map +1 -1
  223. package/dist/core/blobs/almacen.d.ts.map +1 -1
  224. package/dist/core/blobs/almacen.js.map +1 -1
  225. package/dist/core/blobs/broker.d.ts +1 -0
  226. package/dist/core/blobs/broker.d.ts.map +1 -1
  227. package/dist/core/blobs/broker.js +1 -1
  228. package/dist/core/blobs/broker.js.map +1 -1
  229. package/dist/core/blobs/index.d.ts +1 -0
  230. package/dist/core/blobs/index.d.ts.map +1 -1
  231. package/dist/core/blobs/index.js +1 -0
  232. package/dist/core/blobs/index.js.map +1 -1
  233. package/dist/core/blobs/payload.d.ts.map +1 -1
  234. package/dist/core/blobs/payload.js.map +1 -1
  235. package/dist/core/blobs/proveedor.d.ts.map +1 -1
  236. package/dist/core/blobs/proveedor.js.map +1 -1
  237. package/dist/core/blobs/uploaders.d.ts +105 -0
  238. package/dist/core/blobs/uploaders.d.ts.map +1 -0
  239. package/dist/core/blobs/uploaders.js +224 -0
  240. package/dist/core/blobs/uploaders.js.map +1 -0
  241. package/dist/core/broker/broker.d.ts +54 -0
  242. package/dist/core/broker/broker.d.ts.map +1 -0
  243. package/dist/core/broker/broker.js +216 -0
  244. package/dist/core/broker/broker.js.map +1 -0
  245. package/dist/core/broker/index.d.ts +21 -0
  246. package/dist/core/broker/index.d.ts.map +1 -0
  247. package/dist/core/broker/index.js +33 -0
  248. package/dist/core/broker/index.js.map +1 -0
  249. package/dist/core/broker/ps.d.ts +20 -0
  250. package/dist/core/broker/ps.d.ts.map +1 -0
  251. package/dist/core/broker/ps.js +55 -0
  252. package/dist/core/broker/ps.js.map +1 -0
  253. package/dist/core/broker/types.d.ts +45 -0
  254. package/dist/core/broker/types.d.ts.map +1 -0
  255. package/dist/core/broker/types.js +19 -0
  256. package/dist/core/broker/types.js.map +1 -0
  257. package/dist/core/browser/cdp.d.ts.map +1 -1
  258. package/dist/core/browser/cdp.js.map +1 -1
  259. package/dist/core/browser/politica.d.ts.map +1 -1
  260. package/dist/core/browser/politica.js.map +1 -1
  261. package/dist/core/browser/sesion.d.ts.map +1 -1
  262. package/dist/core/browser/sesion.js.map +1 -1
  263. package/dist/core/browser/tools.d.ts.map +1 -1
  264. package/dist/core/browser/tools.js.map +1 -1
  265. package/dist/core/cache-stats.d.ts.map +1 -1
  266. package/dist/core/cache-stats.js.map +1 -1
  267. package/dist/core/capability/capability.test.d.ts +12 -0
  268. package/dist/core/capability/capability.test.d.ts.map +1 -0
  269. package/dist/core/capability/capability.test.js +258 -0
  270. package/dist/core/capability/capability.test.js.map +1 -0
  271. package/dist/core/capability/fs.d.ts +32 -0
  272. package/dist/core/capability/fs.d.ts.map +1 -0
  273. package/dist/core/capability/fs.js +106 -0
  274. package/dist/core/capability/fs.js.map +1 -0
  275. package/dist/core/capability/index.d.ts +68 -0
  276. package/dist/core/capability/index.d.ts.map +1 -0
  277. package/dist/core/capability/index.js +258 -0
  278. package/dist/core/capability/index.js.map +1 -0
  279. package/dist/core/capability/types.d.ts +168 -0
  280. package/dist/core/capability/types.d.ts.map +1 -0
  281. package/dist/core/capability/types.js +16 -0
  282. package/dist/core/capability/types.js.map +1 -0
  283. package/dist/core/carga-plugins/index.d.ts +49 -0
  284. package/dist/core/carga-plugins/index.d.ts.map +1 -0
  285. package/dist/core/carga-plugins/index.js +85 -0
  286. package/dist/core/carga-plugins/index.js.map +1 -0
  287. package/dist/core/carga-plugins/invalidacion.d.ts +60 -0
  288. package/dist/core/carga-plugins/invalidacion.d.ts.map +1 -0
  289. package/dist/core/carga-plugins/invalidacion.js +94 -0
  290. package/dist/core/carga-plugins/invalidacion.js.map +1 -0
  291. package/dist/core/carga-plugins/paralelo.d.ts +48 -0
  292. package/dist/core/carga-plugins/paralelo.d.ts.map +1 -0
  293. package/dist/core/carga-plugins/paralelo.js +47 -0
  294. package/dist/core/carga-plugins/paralelo.js.map +1 -0
  295. package/dist/core/colaboracion/autoresearch.d.ts +56 -0
  296. package/dist/core/colaboracion/autoresearch.d.ts.map +1 -0
  297. package/dist/core/colaboracion/autoresearch.js +95 -0
  298. package/dist/core/colaboracion/autoresearch.js.map +1 -0
  299. package/dist/core/colaboracion/index.d.ts +10 -0
  300. package/dist/core/colaboracion/index.d.ts.map +1 -0
  301. package/dist/core/colaboracion/index.js +7 -0
  302. package/dist/core/colaboracion/index.js.map +1 -0
  303. package/dist/core/colaboracion/kernels.d.ts +63 -0
  304. package/dist/core/colaboracion/kernels.d.ts.map +1 -0
  305. package/dist/core/colaboracion/kernels.js +99 -0
  306. package/dist/core/colaboracion/kernels.js.map +1 -0
  307. package/dist/core/colaboracion/rele/index.d.ts +8 -0
  308. package/dist/core/colaboracion/rele/index.d.ts.map +1 -0
  309. package/dist/core/colaboracion/rele/index.js +6 -0
  310. package/dist/core/colaboracion/rele/index.js.map +1 -0
  311. package/dist/core/colaboracion/rele/rele-servidor.d.ts +69 -0
  312. package/dist/core/colaboracion/rele/rele-servidor.d.ts.map +1 -0
  313. package/dist/core/colaboracion/rele/rele-servidor.js +197 -0
  314. package/dist/core/colaboracion/rele/rele-servidor.js.map +1 -0
  315. package/dist/core/colaboracion/rele/suscriptor.d.ts +31 -0
  316. package/dist/core/colaboracion/rele/suscriptor.d.ts.map +1 -0
  317. package/dist/core/colaboracion/rele/suscriptor.js +173 -0
  318. package/dist/core/colaboracion/rele/suscriptor.js.map +1 -0
  319. package/dist/core/colaboracion/sesion-colaborativa.d.ts +61 -0
  320. package/dist/core/colaboracion/sesion-colaborativa.d.ts.map +1 -0
  321. package/dist/core/colaboracion/sesion-colaborativa.js +127 -0
  322. package/dist/core/colaboracion/sesion-colaborativa.js.map +1 -0
  323. package/dist/core/commits/agentic.d.ts +101 -0
  324. package/dist/core/commits/agentic.d.ts.map +1 -0
  325. package/dist/core/commits/agentic.js +268 -0
  326. package/dist/core/commits/agentic.js.map +1 -0
  327. package/dist/core/commits/changelog.d.ts +37 -0
  328. package/dist/core/commits/changelog.d.ts.map +1 -0
  329. package/dist/core/commits/changelog.js +155 -0
  330. package/dist/core/commits/changelog.js.map +1 -0
  331. package/dist/core/commits/diff.d.ts.map +1 -0
  332. package/dist/core/commits/diff.js.map +1 -0
  333. package/dist/core/commits/git.d.ts +43 -0
  334. package/dist/core/commits/git.d.ts.map +1 -0
  335. package/dist/core/commits/git.js +61 -0
  336. package/dist/core/commits/git.js.map +1 -0
  337. package/dist/core/commits/split.d.ts +45 -0
  338. package/dist/core/commits/split.d.ts.map +1 -0
  339. package/dist/core/commits/split.js +128 -0
  340. package/dist/core/commits/split.js.map +1 -0
  341. package/dist/core/compactacion/comandos.d.ts +53 -0
  342. package/dist/core/compactacion/comandos.d.ts.map +1 -0
  343. package/dist/core/compactacion/comandos.js +155 -0
  344. package/dist/core/compactacion/comandos.js.map +1 -0
  345. package/dist/core/compactacion/extension.d.ts +28 -0
  346. package/dist/core/compactacion/extension.d.ts.map +1 -0
  347. package/dist/core/compactacion/extension.js +159 -0
  348. package/dist/core/compactacion/extension.js.map +1 -0
  349. package/dist/core/compactacion/handoff.d.ts +61 -0
  350. package/dist/core/compactacion/handoff.d.ts.map +1 -0
  351. package/dist/core/compactacion/handoff.js +139 -0
  352. package/dist/core/compactacion/handoff.js.map +1 -0
  353. package/dist/core/compactacion/index.d.ts +15 -0
  354. package/dist/core/compactacion/index.d.ts.map +1 -0
  355. package/dist/core/compactacion/index.js +15 -0
  356. package/dist/core/compactacion/index.js.map +1 -0
  357. package/dist/core/compactacion/prune.d.ts +38 -0
  358. package/dist/core/compactacion/prune.d.ts.map +1 -0
  359. package/dist/core/compactacion/prune.js +81 -0
  360. package/dist/core/compactacion/prune.js.map +1 -0
  361. package/dist/core/compactacion/shake.d.ts +40 -0
  362. package/dist/core/compactacion/shake.d.ts.map +1 -0
  363. package/dist/core/compactacion/shake.js +106 -0
  364. package/dist/core/compactacion/shake.js.map +1 -0
  365. package/dist/core/compactacion/tipos.d.ts +54 -0
  366. package/dist/core/compactacion/tipos.d.ts.map +1 -0
  367. package/dist/core/compactacion/tipos.js +44 -0
  368. package/dist/core/compactacion/tipos.js.map +1 -0
  369. package/dist/core/compactar/index.d.ts.map +1 -1
  370. package/dist/core/compactar/index.js.map +1 -1
  371. package/dist/core/compactar/registro-denso.d.ts.map +1 -1
  372. package/dist/core/compactar/registro-denso.js.map +1 -1
  373. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  374. package/dist/core/compaction/branch-summarization.js.map +1 -1
  375. package/dist/core/compaction/compaction.d.ts.map +1 -1
  376. package/dist/core/compaction/compaction.js.map +1 -1
  377. package/dist/core/compaction/index.d.ts.map +1 -1
  378. package/dist/core/compaction/index.js.map +1 -1
  379. package/dist/core/compaction/utils.d.ts.map +1 -1
  380. package/dist/core/compaction/utils.js.map +1 -1
  381. package/dist/core/computer/captura.d.ts.map +1 -1
  382. package/dist/core/computer/captura.js.map +1 -1
  383. package/dist/core/computer/driver.d.ts.map +1 -1
  384. package/dist/core/computer/driver.js.map +1 -1
  385. package/dist/core/computer/motor/actions.d.ts.map +1 -1
  386. package/dist/core/computer/motor/actions.js.map +1 -1
  387. package/dist/core/computer/motor/bridge.d.ts +2 -2
  388. package/dist/core/computer/motor/bridge.d.ts.map +1 -1
  389. package/dist/core/computer/motor/bridge.js.map +1 -1
  390. package/dist/core/computer/motor/cdp.d.ts.map +1 -1
  391. package/dist/core/computer/motor/cdp.js.map +1 -1
  392. package/dist/core/computer/motor/config.d.ts.map +1 -1
  393. package/dist/core/computer/motor/config.js.map +1 -1
  394. package/dist/core/computer/motor/contract.d.ts.map +1 -1
  395. package/dist/core/computer/motor/contract.js.map +1 -1
  396. package/dist/core/computer/motor/note.d.ts.map +1 -1
  397. package/dist/core/computer/motor/note.js.map +1 -1
  398. package/dist/core/computer/motor/outline.d.ts.map +1 -1
  399. package/dist/core/computer/motor/outline.js.map +1 -1
  400. package/dist/core/computer/motor/output.d.ts.map +1 -1
  401. package/dist/core/computer/motor/output.js.map +1 -1
  402. package/dist/core/computer/motor/permissions.d.ts.map +1 -1
  403. package/dist/core/computer/motor/permissions.js.map +1 -1
  404. package/dist/core/computer/motor/platform/architecture.d.ts.map +1 -1
  405. package/dist/core/computer/motor/platform/architecture.js.map +1 -1
  406. package/dist/core/computer/motor/platform/coerce.d.ts.map +1 -1
  407. package/dist/core/computer/motor/platform/coerce.js.map +1 -1
  408. package/dist/core/computer/motor/platform/index.d.ts.map +1 -1
  409. package/dist/core/computer/motor/platform/index.js.map +1 -1
  410. package/dist/core/computer/motor/platform/linux/backend.d.ts.map +1 -1
  411. package/dist/core/computer/motor/platform/linux/backend.js.map +1 -1
  412. package/dist/core/computer/motor/platform/linux/helper.d.ts.map +1 -1
  413. package/dist/core/computer/motor/platform/linux/helper.js.map +1 -1
  414. package/dist/core/computer/motor/platform/macos/backend.d.ts.map +1 -1
  415. package/dist/core/computer/motor/platform/macos/backend.js.map +1 -1
  416. package/dist/core/computer/motor/platform/macos/browser.d.ts.map +1 -1
  417. package/dist/core/computer/motor/platform/macos/browser.js.map +1 -1
  418. package/dist/core/computer/motor/platform/macos/helper.d.ts.map +1 -1
  419. package/dist/core/computer/motor/platform/macos/helper.js.map +1 -1
  420. package/dist/core/computer/motor/platform/macos/permissions.d.ts.map +1 -1
  421. package/dist/core/computer/motor/platform/macos/permissions.js.map +1 -1
  422. package/dist/core/computer/motor/platform/types.d.ts.map +1 -1
  423. package/dist/core/computer/motor/platform/types.js.map +1 -1
  424. package/dist/core/computer/motor/platform/windows/backend.d.ts.map +1 -1
  425. package/dist/core/computer/motor/platform/windows/backend.js.map +1 -1
  426. package/dist/core/computer/motor/platform/windows/helper.d.ts.map +1 -1
  427. package/dist/core/computer/motor/platform/windows/helper.js.map +1 -1
  428. package/dist/core/computer/motor/root-selection.d.ts.map +1 -1
  429. package/dist/core/computer/motor/root-selection.js.map +1 -1
  430. package/dist/core/computer/motor/runtime.d.ts.map +1 -1
  431. package/dist/core/computer/motor/runtime.js.map +1 -1
  432. package/dist/core/computer/motor/state.d.ts.map +1 -1
  433. package/dist/core/computer/motor/state.js.map +1 -1
  434. package/dist/core/computer/motor/view.d.ts.map +1 -1
  435. package/dist/core/computer/motor/view.js.map +1 -1
  436. package/dist/core/computer/motor-ada.d.ts.map +1 -1
  437. package/dist/core/computer/motor-ada.js.map +1 -1
  438. package/dist/core/computer/politica.d.ts.map +1 -1
  439. package/dist/core/computer/politica.js.map +1 -1
  440. package/dist/core/computer/tools.d.ts.map +1 -1
  441. package/dist/core/computer/tools.js.map +1 -1
  442. package/dist/core/config/quarantine.d.ts +57 -0
  443. package/dist/core/config/quarantine.d.ts.map +1 -0
  444. package/dist/core/config/quarantine.js +161 -0
  445. package/dist/core/config/quarantine.js.map +1 -0
  446. package/dist/core/config-viva/ambito.d.ts +46 -0
  447. package/dist/core/config-viva/ambito.d.ts.map +1 -0
  448. package/dist/core/config-viva/ambito.js +62 -0
  449. package/dist/core/config-viva/ambito.js.map +1 -0
  450. package/dist/core/config-viva/cache-negativa.d.ts +50 -0
  451. package/dist/core/config-viva/cache-negativa.d.ts.map +1 -0
  452. package/dist/core/config-viva/cache-negativa.js +78 -0
  453. package/dist/core/config-viva/cache-negativa.js.map +1 -0
  454. package/dist/core/config-viva/headers-vivos.d.ts +41 -0
  455. package/dist/core/config-viva/headers-vivos.d.ts.map +1 -0
  456. package/dist/core/config-viva/headers-vivos.js +43 -0
  457. package/dist/core/config-viva/headers-vivos.js.map +1 -0
  458. package/dist/core/config-viva/index.d.ts +16 -0
  459. package/dist/core/config-viva/index.d.ts.map +1 -0
  460. package/dist/core/config-viva/index.js +16 -0
  461. package/dist/core/config-viva/index.js.map +1 -0
  462. package/dist/core/config-viva/proveedor.d.ts +48 -0
  463. package/dist/core/config-viva/proveedor.d.ts.map +1 -0
  464. package/dist/core/config-viva/proveedor.js +78 -0
  465. package/dist/core/config-viva/proveedor.js.map +1 -0
  466. package/dist/core/context-breakdown.d.ts.map +1 -1
  467. package/dist/core/context-breakdown.js.map +1 -1
  468. package/dist/core/credenciales/cliente.d.ts.map +1 -1
  469. package/dist/core/credenciales/cliente.js.map +1 -1
  470. package/dist/core/credenciales/pool.d.ts +36 -1
  471. package/dist/core/credenciales/pool.d.ts.map +1 -1
  472. package/dist/core/credenciales/pool.js +56 -7
  473. package/dist/core/credenciales/pool.js.map +1 -1
  474. package/dist/core/credenciales/ranking.d.ts +56 -0
  475. package/dist/core/credenciales/ranking.d.ts.map +1 -0
  476. package/dist/core/credenciales/ranking.js +94 -0
  477. package/dist/core/credenciales/ranking.js.map +1 -0
  478. package/dist/core/credenciales/ratelimit.d.ts +54 -0
  479. package/dist/core/credenciales/ratelimit.d.ts.map +1 -0
  480. package/dist/core/credenciales/ratelimit.js +116 -0
  481. package/dist/core/credenciales/ratelimit.js.map +1 -0
  482. package/dist/core/credenciales/reposo.d.ts.map +1 -1
  483. package/dist/core/credenciales/reposo.js.map +1 -1
  484. package/dist/core/credenciales/servidor.d.ts +8 -0
  485. package/dist/core/credenciales/servidor.d.ts.map +1 -1
  486. package/dist/core/credenciales/servidor.js +9 -1
  487. package/dist/core/credenciales/servidor.js.map +1 -1
  488. package/dist/core/defaults.d.ts.map +1 -1
  489. package/dist/core/defaults.js.map +1 -1
  490. package/dist/core/descubrimiento/comandos.d.ts.map +1 -1
  491. package/dist/core/descubrimiento/comandos.js.map +1 -1
  492. package/dist/core/descubrimiento/mcp.d.ts +12 -0
  493. package/dist/core/descubrimiento/mcp.d.ts.map +1 -1
  494. package/dist/core/descubrimiento/mcp.js +32 -0
  495. package/dist/core/descubrimiento/mcp.js.map +1 -1
  496. package/dist/core/descubrimiento/reglas.d.ts.map +1 -1
  497. package/dist/core/descubrimiento/reglas.js.map +1 -1
  498. package/dist/core/descubrimiento/runtimes/index.d.ts +24 -0
  499. package/dist/core/descubrimiento/runtimes/index.d.ts.map +1 -0
  500. package/dist/core/descubrimiento/runtimes/index.js +109 -0
  501. package/dist/core/descubrimiento/runtimes/index.js.map +1 -0
  502. package/dist/core/descubrimiento/runtimes/litellm.d.ts +12 -0
  503. package/dist/core/descubrimiento/runtimes/litellm.d.ts.map +1 -0
  504. package/dist/core/descubrimiento/runtimes/litellm.js +185 -0
  505. package/dist/core/descubrimiento/runtimes/litellm.js.map +1 -0
  506. package/dist/core/descubrimiento/runtimes/lm-studio.d.ts +13 -0
  507. package/dist/core/descubrimiento/runtimes/lm-studio.d.ts.map +1 -0
  508. package/dist/core/descubrimiento/runtimes/lm-studio.js +142 -0
  509. package/dist/core/descubrimiento/runtimes/lm-studio.js.map +1 -0
  510. package/dist/core/descubrimiento/runtimes/ollama.d.ts +8 -0
  511. package/dist/core/descubrimiento/runtimes/ollama.d.ts.map +1 -0
  512. package/dist/core/descubrimiento/runtimes/ollama.js +96 -0
  513. package/dist/core/descubrimiento/runtimes/ollama.js.map +1 -0
  514. package/dist/core/descubrimiento/runtimes/tipos.d.ts +47 -0
  515. package/dist/core/descubrimiento/runtimes/tipos.d.ts.map +1 -0
  516. package/dist/core/descubrimiento/runtimes/tipos.js +10 -0
  517. package/dist/core/descubrimiento/runtimes/tipos.js.map +1 -0
  518. package/dist/core/descubrimiento/skills.d.ts.map +1 -1
  519. package/dist/core/descubrimiento/skills.js.map +1 -1
  520. package/dist/core/diagnostics.d.ts.map +1 -1
  521. package/dist/core/diagnostics.js.map +1 -1
  522. package/dist/core/dificultad/clasificador.d.ts.map +1 -1
  523. package/dist/core/dificultad/clasificador.js.map +1 -1
  524. package/dist/core/edicion/diario.d.ts.map +1 -1
  525. package/dist/core/edicion/diario.js.map +1 -1
  526. package/dist/core/edicion/hashline.d.ts.map +1 -1
  527. package/dist/core/edicion/hashline.js.map +1 -1
  528. package/dist/core/edicion/hueco.d.ts.map +1 -1
  529. package/dist/core/edicion/hueco.js.map +1 -1
  530. package/dist/core/edicion/ipynb.d.ts +51 -0
  531. package/dist/core/edicion/ipynb.d.ts.map +1 -0
  532. package/dist/core/edicion/ipynb.js +110 -0
  533. package/dist/core/edicion/ipynb.js.map +1 -0
  534. package/dist/core/edicion/limpiar-carga.d.ts.map +1 -1
  535. package/dist/core/edicion/limpiar-carga.js.map +1 -1
  536. package/dist/core/edicion/observador.d.ts.map +1 -1
  537. package/dist/core/edicion/observador.js.map +1 -1
  538. package/dist/core/edicion/parecido.d.ts.map +1 -1
  539. package/dist/core/edicion/parecido.js.map +1 -1
  540. package/dist/core/edicion/parseo.d.ts.map +1 -1
  541. package/dist/core/edicion/parseo.js.map +1 -1
  542. package/dist/core/edicion/portapapeles.d.ts +28 -0
  543. package/dist/core/edicion/portapapeles.d.ts.map +1 -0
  544. package/dist/core/edicion/portapapeles.js +49 -0
  545. package/dist/core/edicion/portapapeles.js.map +1 -0
  546. package/dist/core/edicion/reparacion.d.ts.map +1 -1
  547. package/dist/core/edicion/reparacion.js.map +1 -1
  548. package/dist/core/edicion/rutas-difusas.d.ts +44 -0
  549. package/dist/core/edicion/rutas-difusas.d.ts.map +1 -0
  550. package/dist/core/edicion/rutas-difusas.js +93 -0
  551. package/dist/core/edicion/rutas-difusas.js.map +1 -0
  552. package/dist/core/edicion/sangria.d.ts.map +1 -1
  553. package/dist/core/edicion/sangria.js.map +1 -1
  554. package/dist/core/edicion/tipos.d.ts.map +1 -1
  555. package/dist/core/edicion/tipos.js.map +1 -1
  556. package/dist/core/engine-personality.d.ts.map +1 -1
  557. package/dist/core/engine-personality.js.map +1 -1
  558. package/dist/core/errores/proveedor.d.ts.map +1 -1
  559. package/dist/core/errores/proveedor.js.map +1 -1
  560. package/dist/core/estructural/buscar.d.ts.map +1 -1
  561. package/dist/core/estructural/buscar.js.map +1 -1
  562. package/dist/core/estructural/editar.d.ts.map +1 -1
  563. package/dist/core/estructural/editar.js.map +1 -1
  564. package/dist/core/estructural/tools.d.ts.map +1 -1
  565. package/dist/core/estructural/tools.js.map +1 -1
  566. package/dist/core/event-bus.d.ts.map +1 -1
  567. package/dist/core/event-bus.js.map +1 -1
  568. package/dist/core/exec.d.ts.map +1 -1
  569. package/dist/core/exec.js.map +1 -1
  570. package/dist/core/experimental.d.ts.map +1 -1
  571. package/dist/core/experimental.js.map +1 -1
  572. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  573. package/dist/core/export-html/ansi-to-html.js.map +1 -1
  574. package/dist/core/export-html/index.d.ts.map +1 -1
  575. package/dist/core/export-html/index.js +183 -13
  576. package/dist/core/export-html/index.js.map +1 -1
  577. package/dist/core/export-html/template.css +88 -4
  578. package/dist/core/export-html/template.html +3 -1
  579. package/dist/core/export-html/template.js +84 -0
  580. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  581. package/dist/core/export-html/tool-renderer.js.map +1 -1
  582. package/dist/core/extensiones/suplantacion.d.ts.map +1 -1
  583. package/dist/core/extensiones/suplantacion.js.map +1 -1
  584. package/dist/core/extensiones/vigilancia.d.ts.map +1 -1
  585. package/dist/core/extensiones/vigilancia.js.map +1 -1
  586. package/dist/core/extensions/index.d.ts.map +1 -1
  587. package/dist/core/extensions/index.js.map +1 -1
  588. package/dist/core/extensions/loader.d.ts.map +1 -1
  589. package/dist/core/extensions/loader.js.map +1 -1
  590. package/dist/core/extensions/runner.d.ts.map +1 -1
  591. package/dist/core/extensions/runner.js.map +1 -1
  592. package/dist/core/extensions/types.d.ts.map +1 -1
  593. package/dist/core/extensions/types.js.map +1 -1
  594. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  595. package/dist/core/extensions/wrapper.js.map +1 -1
  596. package/dist/core/footer-data-provider.d.ts.map +1 -1
  597. package/dist/core/footer-data-provider.js.map +1 -1
  598. package/dist/core/gc/archivo-frio.d.ts +33 -0
  599. package/dist/core/gc/archivo-frio.d.ts.map +1 -0
  600. package/dist/core/gc/archivo-frio.js +152 -0
  601. package/dist/core/gc/archivo-frio.js.map +1 -0
  602. package/dist/core/gc/blobs-gc.d.ts +25 -0
  603. package/dist/core/gc/blobs-gc.d.ts.map +1 -0
  604. package/dist/core/gc/blobs-gc.js +143 -0
  605. package/dist/core/gc/blobs-gc.js.map +1 -0
  606. package/dist/core/gc/index.d.ts +42 -0
  607. package/dist/core/gc/index.d.ts.map +1 -0
  608. package/dist/core/gc/index.js +50 -0
  609. package/dist/core/gc/index.js.map +1 -0
  610. package/dist/core/gc/lock.d.ts +19 -0
  611. package/dist/core/gc/lock.d.ts.map +1 -0
  612. package/dist/core/gc/lock.js +48 -0
  613. package/dist/core/gc/lock.js.map +1 -0
  614. package/dist/core/gc/reconciliacion.d.ts +19 -0
  615. package/dist/core/gc/reconciliacion.d.ts.map +1 -0
  616. package/dist/core/gc/reconciliacion.js +102 -0
  617. package/dist/core/gc/reconciliacion.js.map +1 -0
  618. package/dist/core/gc/wal.d.ts +15 -0
  619. package/dist/core/gc/wal.d.ts.map +1 -0
  620. package/dist/core/gc/wal.js +44 -0
  621. package/dist/core/gc/wal.js.map +1 -0
  622. package/dist/core/harness/fuentes-de-contexto.d.ts.map +1 -1
  623. package/dist/core/harness/fuentes-de-contexto.js.map +1 -1
  624. package/dist/core/harness/refine.d.ts.map +1 -1
  625. package/dist/core/harness/refine.js.map +1 -1
  626. package/dist/core/harness/store.d.ts.map +1 -1
  627. package/dist/core/harness/store.js.map +1 -1
  628. package/dist/core/higiene/index.d.ts +8 -0
  629. package/dist/core/higiene/index.d.ts.map +1 -0
  630. package/dist/core/higiene/index.js +8 -0
  631. package/dist/core/higiene/index.js.map +1 -0
  632. package/dist/core/higiene/managed-timers.d.ts +19 -0
  633. package/dist/core/higiene/managed-timers.d.ts.map +1 -0
  634. package/dist/core/higiene/managed-timers.js +68 -0
  635. package/dist/core/higiene/managed-timers.js.map +1 -0
  636. package/dist/core/higiene/race-handler.d.ts +7 -0
  637. package/dist/core/higiene/race-handler.d.ts.map +1 -0
  638. package/dist/core/higiene/race-handler.js +32 -0
  639. package/dist/core/higiene/race-handler.js.map +1 -0
  640. package/dist/core/higiene/withHostGuard.d.ts +27 -0
  641. package/dist/core/higiene/withHostGuard.d.ts.map +1 -0
  642. package/dist/core/higiene/withHostGuard.js +79 -0
  643. package/dist/core/higiene/withHostGuard.js.map +1 -0
  644. package/dist/core/hooks/contract.d.ts.map +1 -1
  645. package/dist/core/hooks/contract.js.map +1 -1
  646. package/dist/core/hooks/runner.d.ts.map +1 -1
  647. package/dist/core/hooks/runner.js.map +1 -1
  648. package/dist/core/hooks/session-hooks.d.ts.map +1 -1
  649. package/dist/core/hooks/session-hooks.js.map +1 -1
  650. package/dist/core/hooks-ts/cargador.d.ts +29 -0
  651. package/dist/core/hooks-ts/cargador.d.ts.map +1 -0
  652. package/dist/core/hooks-ts/cargador.js +51 -0
  653. package/dist/core/hooks-ts/cargador.js.map +1 -0
  654. package/dist/core/hooks-ts/index.d.ts +25 -0
  655. package/dist/core/hooks-ts/index.d.ts.map +1 -0
  656. package/dist/core/hooks-ts/index.js +25 -0
  657. package/dist/core/hooks-ts/index.js.map +1 -0
  658. package/dist/core/hooks-ts/runner.d.ts +40 -0
  659. package/dist/core/hooks-ts/runner.d.ts.map +1 -0
  660. package/dist/core/hooks-ts/runner.js +95 -0
  661. package/dist/core/hooks-ts/runner.js.map +1 -0
  662. package/dist/core/hooks-ts/tipos.d.ts +69 -0
  663. package/dist/core/hooks-ts/tipos.d.ts.map +1 -0
  664. package/dist/core/hooks-ts/tipos.js +90 -0
  665. package/dist/core/hooks-ts/tipos.js.map +1 -0
  666. package/dist/core/http-dispatcher.d.ts.map +1 -1
  667. package/dist/core/http-dispatcher.js.map +1 -1
  668. package/dist/core/importar/formatos.d.ts.map +1 -1
  669. package/dist/core/importar/formatos.js.map +1 -1
  670. package/dist/core/index.d.ts.map +1 -1
  671. package/dist/core/index.js.map +1 -1
  672. package/dist/core/interactivo/deteccion.d.ts.map +1 -1
  673. package/dist/core/interactivo/deteccion.js.map +1 -1
  674. package/dist/core/interactivo/sesion.d.ts.map +1 -1
  675. package/dist/core/interactivo/sesion.js.map +1 -1
  676. package/dist/core/interactivo/tools.d.ts.map +1 -1
  677. package/dist/core/interactivo/tools.js.map +1 -1
  678. package/dist/core/keybindings.d.ts +170 -170
  679. package/dist/core/keybindings.d.ts.map +1 -1
  680. package/dist/core/keybindings.js.map +1 -1
  681. package/dist/core/lectura/mapa.d.ts.map +1 -1
  682. package/dist/core/lectura/mapa.js.map +1 -1
  683. package/dist/core/lectura/pdf.d.ts.map +1 -1
  684. package/dist/core/lectura/pdf.js.map +1 -1
  685. package/dist/core/lectura/sniffer.d.ts +54 -0
  686. package/dist/core/lectura/sniffer.d.ts.map +1 -0
  687. package/dist/core/lectura/sniffer.js +106 -0
  688. package/dist/core/lectura/sniffer.js.map +1 -0
  689. package/dist/core/limpieza/comprobadores.d.ts +16 -2
  690. package/dist/core/limpieza/comprobadores.d.ts.map +1 -1
  691. package/dist/core/limpieza/comprobadores.js +200 -6
  692. package/dist/core/limpieza/comprobadores.js.map +1 -1
  693. package/dist/core/limpieza/flujo.d.ts +36 -0
  694. package/dist/core/limpieza/flujo.d.ts.map +1 -0
  695. package/dist/core/limpieza/flujo.js +89 -0
  696. package/dist/core/limpieza/flujo.js.map +1 -0
  697. package/dist/core/limpieza/parseo.d.ts.map +1 -1
  698. package/dist/core/limpieza/parseo.js.map +1 -1
  699. package/dist/core/limpieza/peso.d.ts +17 -0
  700. package/dist/core/limpieza/peso.d.ts.map +1 -0
  701. package/dist/core/limpieza/peso.js +52 -0
  702. package/dist/core/limpieza/peso.js.map +1 -0
  703. package/dist/core/limpieza/pool.d.ts +44 -0
  704. package/dist/core/limpieza/pool.d.ts.map +1 -0
  705. package/dist/core/limpieza/pool.js +123 -0
  706. package/dist/core/limpieza/pool.js.map +1 -0
  707. package/dist/core/limpieza/reparacion.d.ts +19 -2
  708. package/dist/core/limpieza/reparacion.d.ts.map +1 -1
  709. package/dist/core/limpieza/reparacion.js +95 -8
  710. package/dist/core/limpieza/reparacion.js.map +1 -1
  711. package/dist/core/limpieza/tablero.d.ts +47 -0
  712. package/dist/core/limpieza/tablero.d.ts.map +1 -0
  713. package/dist/core/limpieza/tablero.js +78 -0
  714. package/dist/core/limpieza/tablero.js.map +1 -0
  715. package/dist/core/limpieza/tipos.d.ts +25 -0
  716. package/dist/core/limpieza/tipos.d.ts.map +1 -1
  717. package/dist/core/limpieza/tipos.js.map +1 -1
  718. package/dist/core/lsp/cliente.d.ts +7 -0
  719. package/dist/core/lsp/cliente.d.ts.map +1 -1
  720. package/dist/core/lsp/cliente.js +4 -2
  721. package/dist/core/lsp/cliente.js.map +1 -1
  722. package/dist/core/lsp/descubrimiento.d.ts.map +1 -1
  723. package/dist/core/lsp/descubrimiento.js.map +1 -1
  724. package/dist/core/lsp/ediciones.d.ts.map +1 -1
  725. package/dist/core/lsp/ediciones.js.map +1 -1
  726. package/dist/core/lsp/extension.d.ts +9 -0
  727. package/dist/core/lsp/extension.d.ts.map +1 -1
  728. package/dist/core/lsp/extension.js +60 -4
  729. package/dist/core/lsp/extension.js.map +1 -1
  730. package/dist/core/lsp/formato.d.ts +72 -0
  731. package/dist/core/lsp/formato.d.ts.map +1 -0
  732. package/dist/core/lsp/formato.js +117 -0
  733. package/dist/core/lsp/formato.js.map +1 -0
  734. package/dist/core/lsp/tools.d.ts +3 -3
  735. package/dist/core/lsp/tools.d.ts.map +1 -1
  736. package/dist/core/lsp/tools.js.map +1 -1
  737. package/dist/core/lsp/writethrough.d.ts +165 -0
  738. package/dist/core/lsp/writethrough.d.ts.map +1 -0
  739. package/dist/core/lsp/writethrough.js +282 -0
  740. package/dist/core/lsp/writethrough.js.map +1 -0
  741. package/dist/core/marketplace/catalogo.d.ts +32 -0
  742. package/dist/core/marketplace/catalogo.d.ts.map +1 -0
  743. package/dist/core/marketplace/catalogo.js +122 -0
  744. package/dist/core/marketplace/catalogo.js.map +1 -0
  745. package/dist/core/marketplace/doctor.d.ts +47 -0
  746. package/dist/core/marketplace/doctor.d.ts.map +1 -0
  747. package/dist/core/marketplace/doctor.js +155 -0
  748. package/dist/core/marketplace/doctor.js.map +1 -0
  749. package/dist/core/marketplace/features.d.ts +22 -0
  750. package/dist/core/marketplace/features.d.ts.map +1 -0
  751. package/dist/core/marketplace/features.js +70 -0
  752. package/dist/core/marketplace/features.js.map +1 -0
  753. package/dist/core/marketplace/index.d.ts +33 -0
  754. package/dist/core/marketplace/index.d.ts.map +1 -0
  755. package/dist/core/marketplace/index.js +33 -0
  756. package/dist/core/marketplace/index.js.map +1 -0
  757. package/dist/core/marketplace/instalar.d.ts +27 -0
  758. package/dist/core/marketplace/instalar.d.ts.map +1 -0
  759. package/dist/core/marketplace/instalar.js +50 -0
  760. package/dist/core/marketplace/instalar.js.map +1 -0
  761. package/dist/core/mcp/client.d.ts.map +1 -1
  762. package/dist/core/mcp/client.js.map +1 -1
  763. package/dist/core/mcp/manager.d.ts.map +1 -1
  764. package/dist/core/mcp/manager.js.map +1 -1
  765. package/dist/core/mcp/oauth.d.ts +138 -0
  766. package/dist/core/mcp/oauth.d.ts.map +1 -0
  767. package/dist/core/mcp/oauth.js +348 -0
  768. package/dist/core/mcp/oauth.js.map +1 -0
  769. package/dist/core/mcp/tools.d.ts.map +1 -1
  770. package/dist/core/mcp/tools.js.map +1 -1
  771. package/dist/core/memoria/almacen.d.ts +56 -0
  772. package/dist/core/memoria/almacen.d.ts.map +1 -0
  773. package/dist/core/memoria/almacen.js +214 -0
  774. package/dist/core/memoria/almacen.js.map +1 -0
  775. package/dist/core/memoria/dr/respaldo.d.ts +34 -0
  776. package/dist/core/memoria/dr/respaldo.d.ts.map +1 -0
  777. package/dist/core/memoria/dr/respaldo.js +133 -0
  778. package/dist/core/memoria/dr/respaldo.js.map +1 -0
  779. package/dist/core/memoria/embeddings.d.ts +21 -0
  780. package/dist/core/memoria/embeddings.d.ts.map +1 -0
  781. package/dist/core/memoria/embeddings.js +87 -0
  782. package/dist/core/memoria/embeddings.js.map +1 -0
  783. package/dist/core/memoria/grafo.d.ts +56 -0
  784. package/dist/core/memoria/grafo.d.ts.map +1 -0
  785. package/dist/core/memoria/grafo.js +143 -0
  786. package/dist/core/memoria/grafo.js.map +1 -0
  787. package/dist/core/memoria/redaccion.d.ts +32 -0
  788. package/dist/core/memoria/redaccion.d.ts.map +1 -0
  789. package/dist/core/memoria/redaccion.js +76 -0
  790. package/dist/core/memoria/redaccion.js.map +1 -0
  791. package/dist/core/memoria/servidor/almacen-json.d.ts +26 -0
  792. package/dist/core/memoria/servidor/almacen-json.d.ts.map +1 -0
  793. package/dist/core/memoria/servidor/almacen-json.js +90 -0
  794. package/dist/core/memoria/servidor/almacen-json.js.map +1 -0
  795. package/dist/core/memoria/servidor/servidor.d.ts +43 -0
  796. package/dist/core/memoria/servidor/servidor.d.ts.map +1 -0
  797. package/dist/core/memoria/servidor/servidor.js +195 -0
  798. package/dist/core/memoria/servidor/servidor.js.map +1 -0
  799. package/dist/core/memoria/servidor/tipos.d.ts +44 -0
  800. package/dist/core/memoria/servidor/tipos.d.ts.map +1 -0
  801. package/dist/core/memoria/servidor/tipos.js +12 -0
  802. package/dist/core/memoria/servidor/tipos.js.map +1 -0
  803. package/dist/core/memoria/tipos.d.ts +63 -0
  804. package/dist/core/memoria/tipos.d.ts.map +1 -0
  805. package/dist/core/memoria/tipos.js +14 -0
  806. package/dist/core/memoria/tipos.js.map +1 -0
  807. package/dist/core/memory-engine/audit-export.d.ts.map +1 -1
  808. package/dist/core/memory-engine/audit-export.js.map +1 -1
  809. package/dist/core/memory-engine/audit-indice.d.ts.map +1 -1
  810. package/dist/core/memory-engine/audit-indice.js.map +1 -1
  811. package/dist/core/memory-engine/audit.d.ts.map +1 -1
  812. package/dist/core/memory-engine/audit.js.map +1 -1
  813. package/dist/core/memory-engine/engine.d.ts +7 -0
  814. package/dist/core/memory-engine/engine.d.ts.map +1 -1
  815. package/dist/core/memory-engine/engine.js.map +1 -1
  816. package/dist/core/memory-engine/inverted-index.d.ts.map +1 -1
  817. package/dist/core/memory-engine/inverted-index.js.map +1 -1
  818. package/dist/core/memory-engine/keychain.d.ts.map +1 -1
  819. package/dist/core/memory-engine/keychain.js.map +1 -1
  820. package/dist/core/memory-engine/observation-store.d.ts +1 -0
  821. package/dist/core/memory-engine/observation-store.d.ts.map +1 -1
  822. package/dist/core/memory-engine/observation-store.js.map +1 -1
  823. package/dist/core/memory-engine/refinements.d.ts.map +1 -1
  824. package/dist/core/memory-engine/refinements.js.map +1 -1
  825. package/dist/core/memory-engine/scanner.d.ts.map +1 -1
  826. package/dist/core/memory-engine/scanner.js.map +1 -1
  827. package/dist/core/memory-engine/security.d.ts.map +1 -1
  828. package/dist/core/memory-engine/security.js.map +1 -1
  829. package/dist/core/memory-engine/session-indexer.d.ts.map +1 -1
  830. package/dist/core/memory-engine/session-indexer.js.map +1 -1
  831. package/dist/core/memory-engine/tools.d.ts.map +1 -1
  832. package/dist/core/memory-engine/tools.js.map +1 -1
  833. package/dist/core/memory-engine/types.d.ts.map +1 -1
  834. package/dist/core/memory-engine/types.js.map +1 -1
  835. package/dist/core/memory-engine/vault.d.ts.map +1 -1
  836. package/dist/core/memory-engine/vault.js.map +1 -1
  837. package/dist/core/messages.d.ts.map +1 -1
  838. package/dist/core/messages.js.map +1 -1
  839. package/dist/core/metaharness/cli.d.ts +19 -0
  840. package/dist/core/metaharness/cli.d.ts.map +1 -0
  841. package/dist/core/metaharness/cli.js +171 -0
  842. package/dist/core/metaharness/cli.js.map +1 -0
  843. package/dist/core/metaharness/comparar.d.ts +21 -0
  844. package/dist/core/metaharness/comparar.d.ts.map +1 -0
  845. package/dist/core/metaharness/comparar.js +64 -0
  846. package/dist/core/metaharness/comparar.js.map +1 -0
  847. package/dist/core/metaharness/ejecutar.d.ts +70 -0
  848. package/dist/core/metaharness/ejecutar.d.ts.map +1 -0
  849. package/dist/core/metaharness/ejecutar.js +249 -0
  850. package/dist/core/metaharness/ejecutar.js.map +1 -0
  851. package/dist/core/metaharness/tipos.d.ts +142 -0
  852. package/dist/core/metaharness/tipos.d.ts.map +1 -0
  853. package/dist/core/metaharness/tipos.js +17 -0
  854. package/dist/core/metaharness/tipos.js.map +1 -0
  855. package/dist/core/model-config.d.ts +8 -8
  856. package/dist/core/model-config.d.ts.map +1 -1
  857. package/dist/core/model-config.js.map +1 -1
  858. package/dist/core/model-registry.d.ts.map +1 -1
  859. package/dist/core/model-registry.js.map +1 -1
  860. package/dist/core/model-resolver.d.ts.map +1 -1
  861. package/dist/core/model-resolver.js.map +1 -1
  862. package/dist/core/model-runtime.d.ts.map +1 -1
  863. package/dist/core/model-runtime.js.map +1 -1
  864. package/dist/core/models-store.d.ts.map +1 -1
  865. package/dist/core/models-store.js.map +1 -1
  866. package/dist/core/muestreo-restringido.d.ts.map +1 -1
  867. package/dist/core/muestreo-restringido.js.map +1 -1
  868. package/dist/core/orphan-process-journal.d.ts.map +1 -1
  869. package/dist/core/orphan-process-journal.js.map +1 -1
  870. package/dist/core/output-guard.d.ts.map +1 -1
  871. package/dist/core/output-guard.js.map +1 -1
  872. package/dist/core/package-manager.d.ts.map +1 -1
  873. package/dist/core/package-manager.js.map +1 -1
  874. package/dist/core/parche/aplicar.d.ts +19 -0
  875. package/dist/core/parche/aplicar.d.ts.map +1 -0
  876. package/dist/core/parche/aplicar.js +243 -0
  877. package/dist/core/parche/aplicar.js.map +1 -0
  878. package/dist/core/parche/parser.d.ts +38 -0
  879. package/dist/core/parche/parser.d.ts.map +1 -0
  880. package/dist/core/parche/parser.js +217 -0
  881. package/dist/core/parche/parser.js.map +1 -0
  882. package/dist/core/parche/registro.d.ts +12 -0
  883. package/dist/core/parche/registro.d.ts.map +1 -0
  884. package/dist/core/parche/registro.js +58 -0
  885. package/dist/core/parche/registro.js.map +1 -0
  886. package/dist/core/perfiles/index.d.ts +22 -0
  887. package/dist/core/perfiles/index.d.ts.map +1 -0
  888. package/dist/core/perfiles/index.js +21 -0
  889. package/dist/core/perfiles/index.js.map +1 -0
  890. package/dist/core/perfiles/resolver.d.ts +51 -0
  891. package/dist/core/perfiles/resolver.d.ts.map +1 -0
  892. package/dist/core/perfiles/resolver.js +329 -0
  893. package/dist/core/perfiles/resolver.js.map +1 -0
  894. package/dist/core/perfiles/tipos.d.ts +69 -0
  895. package/dist/core/perfiles/tipos.d.ts.map +1 -0
  896. package/dist/core/perfiles/tipos.js +98 -0
  897. package/dist/core/perfiles/tipos.js.map +1 -0
  898. package/dist/core/pi-manifest.d.ts.map +1 -1
  899. package/dist/core/pi-manifest.js.map +1 -1
  900. package/dist/core/privacidad/categorias-especiales.d.ts.map +1 -1
  901. package/dist/core/privacidad/categorias-especiales.js +4 -0
  902. package/dist/core/privacidad/categorias-especiales.js.map +1 -1
  903. package/dist/core/privacidad/tapar.d.ts.map +1 -1
  904. package/dist/core/privacidad/tapar.js.map +1 -1
  905. package/dist/core/project-memory.d.ts.map +1 -1
  906. package/dist/core/project-memory.js.map +1 -1
  907. package/dist/core/project-trust.d.ts.map +1 -1
  908. package/dist/core/project-trust.js.map +1 -1
  909. package/dist/core/prompt-cache/diagnostics.d.ts.map +1 -1
  910. package/dist/core/prompt-cache/diagnostics.js.map +1 -1
  911. package/dist/core/prompt-cache/index.d.ts.map +1 -1
  912. package/dist/core/prompt-cache/index.js.map +1 -1
  913. package/dist/core/prompt-cache/payload.d.ts.map +1 -1
  914. package/dist/core/prompt-cache/payload.js.map +1 -1
  915. package/dist/core/prompt-cache/stabilize.d.ts.map +1 -1
  916. package/dist/core/prompt-cache/stabilize.js.map +1 -1
  917. package/dist/core/prompt-cache/stats.d.ts.map +1 -1
  918. package/dist/core/prompt-cache/stats.js.map +1 -1
  919. package/dist/core/prompt-eleccion.d.ts.map +1 -1
  920. package/dist/core/prompt-eleccion.js.map +1 -1
  921. package/dist/core/prompt-optimizer.d.ts.map +1 -1
  922. package/dist/core/prompt-optimizer.js.map +1 -1
  923. package/dist/core/prompt-templates.d.ts.map +1 -1
  924. package/dist/core/prompt-templates.js.map +1 -1
  925. package/dist/core/prompts/montar.d.ts.map +1 -1
  926. package/dist/core/prompts/montar.js.map +1 -1
  927. package/dist/core/prompts/plantilla.d.ts.map +1 -1
  928. package/dist/core/prompts/plantilla.js.map +1 -1
  929. package/dist/core/proveedores-registry/definiciones.d.ts +15 -0
  930. package/dist/core/proveedores-registry/definiciones.d.ts.map +1 -0
  931. package/dist/core/proveedores-registry/definiciones.js +22 -0
  932. package/dist/core/proveedores-registry/definiciones.js.map +1 -0
  933. package/dist/core/proveedores-registry/index.d.ts +14 -0
  934. package/dist/core/proveedores-registry/index.d.ts.map +1 -0
  935. package/dist/core/proveedores-registry/index.js +13 -0
  936. package/dist/core/proveedores-registry/index.js.map +1 -0
  937. package/dist/core/proveedores-registry/resolver.d.ts +25 -0
  938. package/dist/core/proveedores-registry/resolver.d.ts.map +1 -0
  939. package/dist/core/proveedores-registry/resolver.js +69 -0
  940. package/dist/core/proveedores-registry/resolver.js.map +1 -0
  941. package/dist/core/proveedores-registry/tipos.d.ts +47 -0
  942. package/dist/core/proveedores-registry/tipos.d.ts.map +1 -0
  943. package/dist/core/proveedores-registry/tipos.js +15 -0
  944. package/dist/core/proveedores-registry/tipos.js.map +1 -0
  945. package/dist/core/provider-attribution.d.ts.map +1 -1
  946. package/dist/core/provider-attribution.js.map +1 -1
  947. package/dist/core/provider-composer.d.ts.map +1 -1
  948. package/dist/core/provider-composer.js.map +1 -1
  949. package/dist/core/radius.d.ts.map +1 -1
  950. package/dist/core/radius.js.map +1 -1
  951. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  952. package/dist/core/remote-catalog-provider.js.map +1 -1
  953. package/dist/core/remoto/destino.d.ts.map +1 -1
  954. package/dist/core/remoto/destino.js.map +1 -1
  955. package/dist/core/remoto/ejecutor.d.ts.map +1 -1
  956. package/dist/core/remoto/ejecutor.js.map +1 -1
  957. package/dist/core/remoto/ficheros.d.ts.map +1 -1
  958. package/dist/core/remoto/ficheros.js.map +1 -1
  959. package/dist/core/remoto/registro-extension.d.ts.map +1 -1
  960. package/dist/core/remoto/registro-extension.js.map +1 -1
  961. package/dist/core/remoto/tools.d.ts.map +1 -1
  962. package/dist/core/remoto/tools.js.map +1 -1
  963. package/dist/core/reparacion/index.d.ts +2 -0
  964. package/dist/core/reparacion/index.d.ts.map +1 -0
  965. package/dist/core/reparacion/index.js +2 -0
  966. package/dist/core/reparacion/index.js.map +1 -0
  967. package/dist/core/reparacion/reparar-hunk.d.ts +27 -0
  968. package/dist/core/reparacion/reparar-hunk.d.ts.map +1 -0
  969. package/dist/core/reparacion/reparar-hunk.js +139 -0
  970. package/dist/core/reparacion/reparar-hunk.js.map +1 -0
  971. package/dist/core/resolve-config-value.d.ts.map +1 -1
  972. package/dist/core/resolve-config-value.js.map +1 -1
  973. package/dist/core/resource-loader.d.ts +13 -0
  974. package/dist/core/resource-loader.d.ts.map +1 -1
  975. package/dist/core/resource-loader.js +7 -4
  976. package/dist/core/resource-loader.js.map +1 -1
  977. package/dist/core/revision/dispositions.d.ts +86 -0
  978. package/dist/core/revision/dispositions.d.ts.map +1 -0
  979. package/dist/core/revision/dispositions.js +137 -0
  980. package/dist/core/revision/dispositions.js.map +1 -0
  981. package/dist/core/revision/hallazgo.d.ts.map +1 -1
  982. package/dist/core/revision/hallazgo.js.map +1 -1
  983. package/dist/core/revision/procedencia.d.ts +63 -0
  984. package/dist/core/revision/procedencia.d.ts.map +1 -0
  985. package/dist/core/revision/procedencia.js +72 -0
  986. package/dist/core/revision/procedencia.js.map +1 -0
  987. package/dist/core/revision/publicar.d.ts +26 -0
  988. package/dist/core/revision/publicar.d.ts.map +1 -0
  989. package/dist/core/revision/publicar.js +34 -0
  990. package/dist/core/revision/publicar.js.map +1 -0
  991. package/dist/core/revision/revisor.d.ts.map +1 -1
  992. package/dist/core/revision/revisor.js.map +1 -1
  993. package/dist/core/revision/sarif.d.ts.map +1 -1
  994. package/dist/core/revision/sarif.js.map +1 -1
  995. package/dist/core/router-uris/index.d.ts +12 -0
  996. package/dist/core/router-uris/index.d.ts.map +1 -0
  997. package/dist/core/router-uris/index.js +12 -0
  998. package/dist/core/router-uris/index.js.map +1 -0
  999. package/dist/core/router-uris/router.d.ts +2 -0
  1000. package/dist/core/router-uris/router.d.ts.map +1 -0
  1001. package/dist/core/router-uris/router.js +2 -0
  1002. package/dist/core/router-uris/router.js.map +1 -0
  1003. package/dist/core/runtime-credentials.d.ts.map +1 -1
  1004. package/dist/core/runtime-credentials.js.map +1 -1
  1005. package/dist/core/rutas/envoltorio.d.ts +20 -0
  1006. package/dist/core/rutas/envoltorio.d.ts.map +1 -0
  1007. package/dist/core/rutas/envoltorio.js +48 -0
  1008. package/dist/core/rutas/envoltorio.js.map +1 -0
  1009. package/dist/core/rutas/index.d.ts +11 -0
  1010. package/dist/core/rutas/index.d.ts.map +1 -0
  1011. package/dist/core/rutas/index.js +11 -0
  1012. package/dist/core/rutas/index.js.map +1 -0
  1013. package/dist/core/rutas/router.d.ts +82 -0
  1014. package/dist/core/rutas/router.d.ts.map +1 -0
  1015. package/dist/core/rutas/router.js +161 -0
  1016. package/dist/core/rutas/router.js.map +1 -0
  1017. package/dist/core/scheduler/scheduler.d.ts.map +1 -1
  1018. package/dist/core/scheduler/scheduler.js.map +1 -1
  1019. package/dist/core/sdk.d.ts.map +1 -1
  1020. package/dist/core/sdk.js.map +1 -1
  1021. package/dist/core/secretos/extension.d.ts +31 -0
  1022. package/dist/core/secretos/extension.d.ts.map +1 -0
  1023. package/dist/core/secretos/extension.js +64 -0
  1024. package/dist/core/secretos/extension.js.map +1 -0
  1025. package/dist/core/secretos/index.d.ts +75 -0
  1026. package/dist/core/secretos/index.d.ts.map +1 -0
  1027. package/dist/core/secretos/index.js +385 -0
  1028. package/dist/core/secretos/index.js.map +1 -0
  1029. package/dist/core/secretos/message-transform.d.ts +44 -0
  1030. package/dist/core/secretos/message-transform.d.ts.map +1 -0
  1031. package/dist/core/secretos/message-transform.js +246 -0
  1032. package/dist/core/secretos/message-transform.js.map +1 -0
  1033. package/dist/core/secretos/obfuscator.d.ts +30 -0
  1034. package/dist/core/secretos/obfuscator.d.ts.map +1 -0
  1035. package/dist/core/secretos/obfuscator.js +1182 -0
  1036. package/dist/core/secretos/obfuscator.js.map +1 -0
  1037. package/dist/core/secretos/placeholder-scan.d.ts +96 -0
  1038. package/dist/core/secretos/placeholder-scan.d.ts.map +1 -0
  1039. package/dist/core/secretos/placeholder-scan.js +433 -0
  1040. package/dist/core/secretos/placeholder-scan.js.map +1 -0
  1041. package/dist/core/secretos/placeholder.d.ts +95 -0
  1042. package/dist/core/secretos/placeholder.d.ts.map +1 -0
  1043. package/dist/core/secretos/placeholder.js +283 -0
  1044. package/dist/core/secretos/placeholder.js.map +1 -0
  1045. package/dist/core/secretos/regex.d.ts +3 -0
  1046. package/dist/core/secretos/regex.d.ts.map +1 -0
  1047. package/dist/core/secretos/regex.js +19 -0
  1048. package/dist/core/secretos/regex.js.map +1 -0
  1049. package/dist/core/secretos/replacement.d.ts +83 -0
  1050. package/dist/core/secretos/replacement.d.ts.map +1 -0
  1051. package/dist/core/secretos/replacement.js +211 -0
  1052. package/dist/core/secretos/replacement.js.map +1 -0
  1053. package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts.map +1 -1
  1054. package/dist/core/sesion/cerrar-llamadas-abiertas.js.map +1 -1
  1055. package/dist/core/sesion/journal-tree.d.ts +73 -0
  1056. package/dist/core/sesion/journal-tree.d.ts.map +1 -0
  1057. package/dist/core/sesion/journal-tree.js +241 -0
  1058. package/dist/core/sesion/journal-tree.js.map +1 -0
  1059. package/dist/core/sesion/turn-recovery.d.ts +48 -0
  1060. package/dist/core/sesion/turn-recovery.d.ts.map +1 -0
  1061. package/dist/core/sesion/turn-recovery.js +182 -0
  1062. package/dist/core/sesion/turn-recovery.js.map +1 -0
  1063. package/dist/core/session-cwd.d.ts.map +1 -1
  1064. package/dist/core/session-cwd.js.map +1 -1
  1065. package/dist/core/session-manager.d.ts.map +1 -1
  1066. package/dist/core/session-manager.js.map +1 -1
  1067. package/dist/core/settings-diagnostics.d.ts.map +1 -1
  1068. package/dist/core/settings-diagnostics.js.map +1 -1
  1069. package/dist/core/settings-manager.d.ts +2 -2
  1070. package/dist/core/settings-manager.d.ts.map +1 -1
  1071. package/dist/core/settings-manager.js.map +1 -1
  1072. package/dist/core/share/cifrado.d.ts +39 -0
  1073. package/dist/core/share/cifrado.d.ts.map +1 -0
  1074. package/dist/core/share/cifrado.js +81 -0
  1075. package/dist/core/share/cifrado.js.map +1 -0
  1076. package/dist/core/share/exportar.d.ts +69 -0
  1077. package/dist/core/share/exportar.d.ts.map +1 -0
  1078. package/dist/core/share/exportar.js +247 -0
  1079. package/dist/core/share/exportar.js.map +1 -0
  1080. package/dist/core/skills.d.ts.map +1 -1
  1081. package/dist/core/skills.js.map +1 -1
  1082. package/dist/core/slash-commands.d.ts.map +1 -1
  1083. package/dist/core/slash-commands.js.map +1 -1
  1084. package/dist/core/source-info.d.ts.map +1 -1
  1085. package/dist/core/source-info.js.map +1 -1
  1086. package/dist/core/stream-guard/guardia.d.ts +45 -0
  1087. package/dist/core/stream-guard/guardia.d.ts.map +1 -0
  1088. package/dist/core/stream-guard/guardia.js +100 -0
  1089. package/dist/core/stream-guard/guardia.js.map +1 -0
  1090. package/dist/core/stream-guard/index.d.ts +9 -0
  1091. package/dist/core/stream-guard/index.d.ts.map +1 -0
  1092. package/dist/core/stream-guard/index.js +7 -0
  1093. package/dist/core/stream-guard/index.js.map +1 -0
  1094. package/dist/core/stream-guard/replay.d.ts +39 -0
  1095. package/dist/core/stream-guard/replay.d.ts.map +1 -0
  1096. package/dist/core/stream-guard/replay.js +68 -0
  1097. package/dist/core/stream-guard/replay.js.map +1 -0
  1098. package/dist/core/system-prompt.d.ts.map +1 -1
  1099. package/dist/core/system-prompt.js.map +1 -1
  1100. package/dist/core/telemetria/otlp.d.ts.map +1 -1
  1101. package/dist/core/telemetria/otlp.js.map +1 -1
  1102. package/dist/core/telemetry/otel-genai.d.ts +44 -0
  1103. package/dist/core/telemetry/otel-genai.d.ts.map +1 -0
  1104. package/dist/core/telemetry/otel-genai.js +124 -0
  1105. package/dist/core/telemetry/otel-genai.js.map +1 -0
  1106. package/dist/core/telemetry.d.ts.map +1 -1
  1107. package/dist/core/telemetry.js.map +1 -1
  1108. package/dist/core/terminal/backlog-guard.d.ts +53 -0
  1109. package/dist/core/terminal/backlog-guard.d.ts.map +1 -0
  1110. package/dist/core/terminal/backlog-guard.js +122 -0
  1111. package/dist/core/terminal/backlog-guard.js.map +1 -0
  1112. package/dist/core/terminal/conpty.d.ts +29 -0
  1113. package/dist/core/terminal/conpty.d.ts.map +1 -0
  1114. package/dist/core/terminal/conpty.js +67 -0
  1115. package/dist/core/terminal/conpty.js.map +1 -0
  1116. package/dist/core/terminal/conptyChunking.d.ts +2 -0
  1117. package/dist/core/terminal/conptyChunking.d.ts.map +1 -0
  1118. package/dist/core/terminal/conptyChunking.js +2 -0
  1119. package/dist/core/terminal/conptyChunking.js.map +1 -0
  1120. package/dist/core/terminal/index.d.ts +5 -0
  1121. package/dist/core/terminal/index.d.ts.map +1 -0
  1122. package/dist/core/terminal/index.js +5 -0
  1123. package/dist/core/terminal/index.js.map +1 -0
  1124. package/dist/core/terminal/loop-watchdog.d.ts +43 -0
  1125. package/dist/core/terminal/loop-watchdog.d.ts.map +1 -0
  1126. package/dist/core/terminal/loop-watchdog.js +117 -0
  1127. package/dist/core/terminal/loop-watchdog.js.map +1 -0
  1128. package/dist/core/terminal/runner.d.ts +55 -0
  1129. package/dist/core/terminal/runner.d.ts.map +1 -0
  1130. package/dist/core/terminal/runner.js +102 -0
  1131. package/dist/core/terminal/runner.js.map +1 -0
  1132. package/dist/core/timings.d.ts.map +1 -1
  1133. package/dist/core/timings.js.map +1 -1
  1134. package/dist/core/tools/apply_patch.d.ts +29 -0
  1135. package/dist/core/tools/apply_patch.d.ts.map +1 -0
  1136. package/dist/core/tools/apply_patch.js +54 -0
  1137. package/dist/core/tools/apply_patch.js.map +1 -0
  1138. package/dist/core/tools/bash.d.ts.map +1 -1
  1139. package/dist/core/tools/bash.js.map +1 -1
  1140. package/dist/core/tools/coercion-argumentos.d.ts.map +1 -1
  1141. package/dist/core/tools/coercion-argumentos.js.map +1 -1
  1142. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  1143. package/dist/core/tools/edit-diff.js.map +1 -1
  1144. package/dist/core/tools/edit.d.ts.map +1 -1
  1145. package/dist/core/tools/edit.js +43 -1
  1146. package/dist/core/tools/edit.js.map +1 -1
  1147. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  1148. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  1149. package/dist/core/tools/find.d.ts.map +1 -1
  1150. package/dist/core/tools/find.js.map +1 -1
  1151. package/dist/core/tools/grep.d.ts.map +1 -1
  1152. package/dist/core/tools/grep.js.map +1 -1
  1153. package/dist/core/tools/index.d.ts.map +1 -1
  1154. package/dist/core/tools/index.js.map +1 -1
  1155. package/dist/core/tools/json-tolerante.d.ts.map +1 -1
  1156. package/dist/core/tools/json-tolerante.js.map +1 -1
  1157. package/dist/core/tools/ls.d.ts.map +1 -1
  1158. package/dist/core/tools/ls.js.map +1 -1
  1159. package/dist/core/tools/noop-loop-guard.d.ts +46 -0
  1160. package/dist/core/tools/noop-loop-guard.d.ts.map +1 -0
  1161. package/dist/core/tools/noop-loop-guard.js +57 -0
  1162. package/dist/core/tools/noop-loop-guard.js.map +1 -0
  1163. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  1164. package/dist/core/tools/output-accumulator.js.map +1 -1
  1165. package/dist/core/tools/path-utils.d.ts.map +1 -1
  1166. package/dist/core/tools/path-utils.js.map +1 -1
  1167. package/dist/core/tools/project-memory-tool.d.ts.map +1 -1
  1168. package/dist/core/tools/project-memory-tool.js.map +1 -1
  1169. package/dist/core/tools/read.d.ts.map +1 -1
  1170. package/dist/core/tools/read.js.map +1 -1
  1171. package/dist/core/tools/render-utils.d.ts.map +1 -1
  1172. package/dist/core/tools/render-utils.js.map +1 -1
  1173. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  1174. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  1175. package/dist/core/tools/truncate.d.ts.map +1 -1
  1176. package/dist/core/tools/truncate.js.map +1 -1
  1177. package/dist/core/tools/write.d.ts.map +1 -1
  1178. package/dist/core/tools/write.js.map +1 -1
  1179. package/dist/core/trust-manager.d.ts.map +1 -1
  1180. package/dist/core/trust-manager.js.map +1 -1
  1181. package/dist/core/ttsr/captura.d.ts +72 -0
  1182. package/dist/core/ttsr/captura.d.ts.map +1 -0
  1183. package/dist/core/ttsr/captura.js +183 -0
  1184. package/dist/core/ttsr/captura.js.map +1 -0
  1185. package/dist/core/ttsr/index.d.ts +24 -0
  1186. package/dist/core/ttsr/index.d.ts.map +1 -0
  1187. package/dist/core/ttsr/index.js +57 -0
  1188. package/dist/core/ttsr/index.js.map +1 -0
  1189. package/dist/core/ttsr/preview.d.ts +48 -0
  1190. package/dist/core/ttsr/preview.d.ts.map +1 -0
  1191. package/dist/core/ttsr/preview.js +83 -0
  1192. package/dist/core/ttsr/preview.js.map +1 -0
  1193. package/dist/core/turno-vacio/detectar.d.ts.map +1 -1
  1194. package/dist/core/turno-vacio/detectar.js.map +1 -1
  1195. package/dist/core/undo/journal.d.ts.map +1 -1
  1196. package/dist/core/undo/journal.js.map +1 -1
  1197. package/dist/core/urls-internas/auditoria.d.ts.map +1 -1
  1198. package/dist/core/urls-internas/auditoria.js.map +1 -1
  1199. package/dist/core/urls-internas/boveda.d.ts.map +1 -1
  1200. package/dist/core/urls-internas/boveda.js.map +1 -1
  1201. package/dist/core/urls-internas/lector.d.ts +14 -10
  1202. package/dist/core/urls-internas/lector.d.ts.map +1 -1
  1203. package/dist/core/urls-internas/lector.js +50 -36
  1204. package/dist/core/urls-internas/lector.js.map +1 -1
  1205. package/dist/core/urls-internas/memoria.d.ts.map +1 -1
  1206. package/dist/core/urls-internas/memoria.js.map +1 -1
  1207. package/dist/core/urls-internas/parse.d.ts +6 -13
  1208. package/dist/core/urls-internas/parse.d.ts.map +1 -1
  1209. package/dist/core/urls-internas/parse.js +6 -17
  1210. package/dist/core/urls-internas/parse.js.map +1 -1
  1211. package/dist/core/urls-internas/reglas.d.ts.map +1 -1
  1212. package/dist/core/urls-internas/reglas.js.map +1 -1
  1213. package/dist/core/usage/aggregate.d.ts +1 -0
  1214. package/dist/core/usage/aggregate.d.ts.map +1 -1
  1215. package/dist/core/usage/aggregate.js +1 -1
  1216. package/dist/core/usage/aggregate.js.map +1 -1
  1217. package/dist/core/usage/cuota/anthropic.d.ts.map +1 -1
  1218. package/dist/core/usage/cuota/anthropic.js.map +1 -1
  1219. package/dist/core/usage/cuota/cache.d.ts.map +1 -1
  1220. package/dist/core/usage/cuota/cache.js.map +1 -1
  1221. package/dist/core/usage/cuota/github-copilot.d.ts.map +1 -1
  1222. package/dist/core/usage/cuota/github-copilot.js.map +1 -1
  1223. package/dist/core/usage/cuota/google-gemini.d.ts.map +1 -1
  1224. package/dist/core/usage/cuota/google-gemini.js.map +1 -1
  1225. package/dist/core/usage/cuota/index.d.ts.map +1 -1
  1226. package/dist/core/usage/cuota/index.js.map +1 -1
  1227. package/dist/core/usage/cuota/openai-codex.d.ts.map +1 -1
  1228. package/dist/core/usage/cuota/openai-codex.js.map +1 -1
  1229. package/dist/core/usage/cuota/openrouter.d.ts.map +1 -1
  1230. package/dist/core/usage/cuota/openrouter.js.map +1 -1
  1231. package/dist/core/usage/cuota/tipos.d.ts.map +1 -1
  1232. package/dist/core/usage/cuota/tipos.js.map +1 -1
  1233. package/dist/core/usage/index.d.ts +11 -0
  1234. package/dist/core/usage/index.d.ts.map +1 -0
  1235. package/dist/core/usage/index.js +11 -0
  1236. package/dist/core/usage/index.js.map +1 -0
  1237. package/dist/core/usage/multi.d.ts +62 -0
  1238. package/dist/core/usage/multi.d.ts.map +1 -0
  1239. package/dist/core/usage/multi.js +122 -0
  1240. package/dist/core/usage/multi.js.map +1 -0
  1241. package/dist/core/usage/redaccion.d.ts +48 -0
  1242. package/dist/core/usage/redaccion.d.ts.map +1 -0
  1243. package/dist/core/usage/redaccion.js +72 -0
  1244. package/dist/core/usage/redaccion.js.map +1 -0
  1245. package/dist/core/usage-totals.d.ts.map +1 -1
  1246. package/dist/core/usage-totals.js.map +1 -1
  1247. package/dist/core/utils/atomic-write.d.ts +55 -0
  1248. package/dist/core/utils/atomic-write.d.ts.map +1 -0
  1249. package/dist/core/utils/atomic-write.js +293 -0
  1250. package/dist/core/utils/atomic-write.js.map +1 -0
  1251. package/dist/core/utils/git.d.ts +24 -0
  1252. package/dist/core/utils/git.d.ts.map +1 -0
  1253. package/dist/core/utils/git.js +107 -0
  1254. package/dist/core/utils/git.js.map +1 -0
  1255. package/dist/core/utils/logger.d.ts +26 -0
  1256. package/dist/core/utils/logger.d.ts.map +1 -0
  1257. package/dist/core/utils/logger.js +104 -0
  1258. package/dist/core/utils/logger.js.map +1 -0
  1259. package/dist/core/utils/shell-snapshot.d.ts +21 -0
  1260. package/dist/core/utils/shell-snapshot.d.ts.map +1 -0
  1261. package/dist/core/utils/shell-snapshot.js +32 -0
  1262. package/dist/core/utils/shell-snapshot.js.map +1 -0
  1263. package/dist/core/utils/startup-watchdog.d.ts +11 -0
  1264. package/dist/core/utils/startup-watchdog.d.ts.map +1 -0
  1265. package/dist/core/utils/startup-watchdog.js +34 -0
  1266. package/dist/core/utils/startup-watchdog.js.map +1 -0
  1267. package/dist/core/utils/tls-ca-shim.d.ts +17 -0
  1268. package/dist/core/utils/tls-ca-shim.d.ts.map +1 -0
  1269. package/dist/core/utils/tls-ca-shim.js +33 -0
  1270. package/dist/core/utils/tls-ca-shim.js.map +1 -0
  1271. package/dist/core/web/agregador.d.ts +67 -0
  1272. package/dist/core/web/agregador.d.ts.map +1 -0
  1273. package/dist/core/web/agregador.js +182 -0
  1274. package/dist/core/web/agregador.js.map +1 -0
  1275. package/dist/core/web/busqueda-nativa.d.ts.map +1 -1
  1276. package/dist/core/web/busqueda-nativa.js.map +1 -1
  1277. package/dist/core/web/consulta.d.ts +53 -0
  1278. package/dist/core/web/consulta.d.ts.map +1 -0
  1279. package/dist/core/web/consulta.js +213 -0
  1280. package/dist/core/web/consulta.js.map +1 -0
  1281. package/dist/core/web/destino.d.ts +11 -0
  1282. package/dist/core/web/destino.d.ts.map +1 -1
  1283. package/dist/core/web/destino.js +35 -0
  1284. package/dist/core/web/destino.js.map +1 -1
  1285. package/dist/core/web/load-page.d.ts +52 -0
  1286. package/dist/core/web/load-page.d.ts.map +1 -0
  1287. package/dist/core/web/load-page.js +221 -0
  1288. package/dist/core/web/load-page.js.map +1 -0
  1289. package/dist/core/web/proveedores/brave.d.ts.map +1 -1
  1290. package/dist/core/web/proveedores/brave.js.map +1 -1
  1291. package/dist/core/web/proveedores/claves.d.ts.map +1 -1
  1292. package/dist/core/web/proveedores/claves.js.map +1 -1
  1293. package/dist/core/web/proveedores/duckduckgo.d.ts.map +1 -1
  1294. package/dist/core/web/proveedores/duckduckgo.js.map +1 -1
  1295. package/dist/core/web/proveedores/ecosia.d.ts.map +1 -1
  1296. package/dist/core/web/proveedores/ecosia.js.map +1 -1
  1297. package/dist/core/web/proveedores/exa.d.ts.map +1 -1
  1298. package/dist/core/web/proveedores/exa.js.map +1 -1
  1299. package/dist/core/web/proveedores/mojeek.d.ts.map +1 -1
  1300. package/dist/core/web/proveedores/mojeek.js.map +1 -1
  1301. package/dist/core/web/proveedores/navegador.d.ts.map +1 -1
  1302. package/dist/core/web/proveedores/navegador.js.map +1 -1
  1303. package/dist/core/web/proveedores/registro.d.ts.map +1 -1
  1304. package/dist/core/web/proveedores/registro.js.map +1 -1
  1305. package/dist/core/web/proveedores/searxng.d.ts.map +1 -1
  1306. package/dist/core/web/proveedores/searxng.js.map +1 -1
  1307. package/dist/core/web/proveedores/serper.d.ts.map +1 -1
  1308. package/dist/core/web/proveedores/serper.js.map +1 -1
  1309. package/dist/core/web/proveedores/tavily.d.ts.map +1 -1
  1310. package/dist/core/web/proveedores/tavily.js.map +1 -1
  1311. package/dist/core/web/proveedores/tipos.d.ts.map +1 -1
  1312. package/dist/core/web/proveedores/tipos.js.map +1 -1
  1313. package/dist/core/web/registro-red.d.ts.map +1 -1
  1314. package/dist/core/web/registro-red.js.map +1 -1
  1315. package/dist/core/web/scrapers/cisa-kev.d.ts.map +1 -1
  1316. package/dist/core/web/scrapers/cisa-kev.js.map +1 -1
  1317. package/dist/core/web/scrapers/crates-io.d.ts.map +1 -1
  1318. package/dist/core/web/scrapers/crates-io.js.map +1 -1
  1319. package/dist/core/web/scrapers/docs-rs.d.ts.map +1 -1
  1320. package/dist/core/web/scrapers/docs-rs.js.map +1 -1
  1321. package/dist/core/web/scrapers/github.d.ts.map +1 -1
  1322. package/dist/core/web/scrapers/github.js.map +1 -1
  1323. package/dist/core/web/scrapers/go-pkg.d.ts.map +1 -1
  1324. package/dist/core/web/scrapers/go-pkg.js.map +1 -1
  1325. package/dist/core/web/scrapers/hex.d.ts.map +1 -1
  1326. package/dist/core/web/scrapers/hex.js.map +1 -1
  1327. package/dist/core/web/scrapers/maven.d.ts.map +1 -1
  1328. package/dist/core/web/scrapers/maven.js.map +1 -1
  1329. package/dist/core/web/scrapers/mdn.d.ts.map +1 -1
  1330. package/dist/core/web/scrapers/mdn.js.map +1 -1
  1331. package/dist/core/web/scrapers/npm.d.ts.map +1 -1
  1332. package/dist/core/web/scrapers/npm.js.map +1 -1
  1333. package/dist/core/web/scrapers/nuget.d.ts.map +1 -1
  1334. package/dist/core/web/scrapers/nuget.js.map +1 -1
  1335. package/dist/core/web/scrapers/nvd.d.ts.map +1 -1
  1336. package/dist/core/web/scrapers/nvd.js.map +1 -1
  1337. package/dist/core/web/scrapers/pypi.d.ts.map +1 -1
  1338. package/dist/core/web/scrapers/pypi.js.map +1 -1
  1339. package/dist/core/web/scrapers/registro.d.ts.map +1 -1
  1340. package/dist/core/web/scrapers/registro.js.map +1 -1
  1341. package/dist/core/web/scrapers/rubygems.d.ts.map +1 -1
  1342. package/dist/core/web/scrapers/rubygems.js.map +1 -1
  1343. package/dist/core/web/scrapers/stackoverflow.d.ts.map +1 -1
  1344. package/dist/core/web/scrapers/stackoverflow.js.map +1 -1
  1345. package/dist/core/web/scrapers/tipos.d.ts.map +1 -1
  1346. package/dist/core/web/scrapers/tipos.js.map +1 -1
  1347. package/dist/core/web/texto.d.ts.map +1 -1
  1348. package/dist/core/web/texto.js.map +1 -1
  1349. package/dist/core/web/tools.d.ts +1 -8
  1350. package/dist/core/web/tools.d.ts.map +1 -1
  1351. package/dist/core/web/tools.js +2 -33
  1352. package/dist/core/web/tools.js.map +1 -1
  1353. package/dist/core/wiki/almacen.d.ts.map +1 -1
  1354. package/dist/core/wiki/almacen.js.map +1 -1
  1355. package/dist/core/wiki/citas.d.ts.map +1 -1
  1356. package/dist/core/wiki/citas.js.map +1 -1
  1357. package/dist/core/workflows/agent-runner.d.ts.map +1 -1
  1358. package/dist/core/workflows/agent-runner.js.map +1 -1
  1359. package/dist/core/workflows/builtins.d.ts.map +1 -1
  1360. package/dist/core/workflows/builtins.js.map +1 -1
  1361. package/dist/core/workflows/contrato/esquema.d.ts.map +1 -1
  1362. package/dist/core/workflows/contrato/esquema.js.map +1 -1
  1363. package/dist/core/workflows/contrato/reparar-argumentos.d.ts.map +1 -1
  1364. package/dist/core/workflows/contrato/reparar-argumentos.js.map +1 -1
  1365. package/dist/core/workflows/contrato/validador.d.ts.map +1 -1
  1366. package/dist/core/workflows/contrato/validador.js.map +1 -1
  1367. package/dist/core/workflows/contrato/yield.d.ts.map +1 -1
  1368. package/dist/core/workflows/contrato/yield.js.map +1 -1
  1369. package/dist/core/workflows/goal-engine/engine.d.ts +5 -0
  1370. package/dist/core/workflows/goal-engine/engine.d.ts.map +1 -1
  1371. package/dist/core/workflows/goal-engine/engine.js.map +1 -1
  1372. package/dist/core/workflows/goal-engine/errors.d.ts.map +1 -1
  1373. package/dist/core/workflows/goal-engine/errors.js.map +1 -1
  1374. package/dist/core/workflows/goal-engine/index.d.ts.map +1 -1
  1375. package/dist/core/workflows/goal-engine/index.js.map +1 -1
  1376. package/dist/core/workflows/goal-engine/persistence.d.ts.map +1 -1
  1377. package/dist/core/workflows/goal-engine/persistence.js.map +1 -1
  1378. package/dist/core/workflows/goal-engine/prompts.d.ts.map +1 -1
  1379. package/dist/core/workflows/goal-engine/prompts.js.map +1 -1
  1380. package/dist/core/workflows/goal-engine/state.d.ts.map +1 -1
  1381. package/dist/core/workflows/goal-engine/state.js.map +1 -1
  1382. package/dist/core/workflows/goal-engine/tools.d.ts.map +1 -1
  1383. package/dist/core/workflows/goal-engine/tools.js.map +1 -1
  1384. package/dist/core/workflows/goal-engine/types.d.ts.map +1 -1
  1385. package/dist/core/workflows/goal-engine/types.js.map +1 -1
  1386. package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts.map +1 -1
  1387. package/dist/core/workflows/goal-engine/worktree-fingerprint.js.map +1 -1
  1388. package/dist/core/workflows/graph-sync.d.ts.map +1 -1
  1389. package/dist/core/workflows/graph-sync.js.map +1 -1
  1390. package/dist/core/workflows/graph.d.ts.map +1 -1
  1391. package/dist/core/workflows/graph.js.map +1 -1
  1392. package/dist/core/workflows/index.d.ts +6 -0
  1393. package/dist/core/workflows/index.d.ts.map +1 -1
  1394. package/dist/core/workflows/index.js +3 -0
  1395. package/dist/core/workflows/index.js.map +1 -1
  1396. package/dist/core/workflows/journal.d.ts.map +1 -1
  1397. package/dist/core/workflows/journal.js.map +1 -1
  1398. package/dist/core/workflows/manager.d.ts.map +1 -1
  1399. package/dist/core/workflows/manager.js.map +1 -1
  1400. package/dist/core/workflows/provider-caps.d.ts +103 -0
  1401. package/dist/core/workflows/provider-caps.d.ts.map +1 -0
  1402. package/dist/core/workflows/provider-caps.js +235 -0
  1403. package/dist/core/workflows/provider-caps.js.map +1 -0
  1404. package/dist/core/workflows/resolve-script.d.ts.map +1 -1
  1405. package/dist/core/workflows/resolve-script.js.map +1 -1
  1406. package/dist/core/workflows/runtime.d.ts.map +1 -1
  1407. package/dist/core/workflows/runtime.js.map +1 -1
  1408. package/dist/core/workflows/save-as-skill.d.ts.map +1 -1
  1409. package/dist/core/workflows/save-as-skill.js.map +1 -1
  1410. package/dist/core/workflows/shared-store.d.ts.map +1 -1
  1411. package/dist/core/workflows/shared-store.js.map +1 -1
  1412. package/dist/core/workflows/soft-budget.d.ts +27 -0
  1413. package/dist/core/workflows/soft-budget.d.ts.map +1 -0
  1414. package/dist/core/workflows/soft-budget.js +47 -0
  1415. package/dist/core/workflows/soft-budget.js.map +1 -0
  1416. package/dist/core/workflows/subagent-host.d.ts.map +1 -1
  1417. package/dist/core/workflows/subagent-host.js.map +1 -1
  1418. package/dist/core/workflows/tool-scheduling.d.ts +47 -0
  1419. package/dist/core/workflows/tool-scheduling.d.ts.map +1 -0
  1420. package/dist/core/workflows/tool-scheduling.js +102 -0
  1421. package/dist/core/workflows/tool-scheduling.js.map +1 -0
  1422. package/dist/core/workflows/tool-workflow.d.ts.map +1 -1
  1423. package/dist/core/workflows/tool-workflow.js.map +1 -1
  1424. package/dist/core/workflows/types.d.ts.map +1 -1
  1425. package/dist/core/workflows/types.js.map +1 -1
  1426. package/dist/core/workflows/worktree.d.ts.map +1 -1
  1427. package/dist/core/workflows/worktree.js.map +1 -1
  1428. package/dist/extensions/index.d.ts.map +1 -1
  1429. package/dist/extensions/index.js.map +1 -1
  1430. package/dist/extensions/llama/client.d.ts.map +1 -1
  1431. package/dist/extensions/llama/client.js.map +1 -1
  1432. package/dist/extensions/llama/huggingface.d.ts.map +1 -1
  1433. package/dist/extensions/llama/huggingface.js.map +1 -1
  1434. package/dist/extensions/llama/index.d.ts.map +1 -1
  1435. package/dist/extensions/llama/index.js.map +1 -1
  1436. package/dist/extensions/llama/provider.d.ts.map +1 -1
  1437. package/dist/extensions/llama/provider.js.map +1 -1
  1438. package/dist/extensions/llama/ui.d.ts.map +1 -1
  1439. package/dist/extensions/llama/ui.js.map +1 -1
  1440. package/dist/extensions/remoto/index.d.ts.map +1 -1
  1441. package/dist/extensions/remoto/index.js.map +1 -1
  1442. package/dist/index.d.ts.map +1 -1
  1443. package/dist/index.js.map +1 -1
  1444. package/dist/main.d.ts.map +1 -1
  1445. package/dist/main.js +71 -3
  1446. package/dist/main.js.map +1 -1
  1447. package/dist/migrations.d.ts.map +1 -1
  1448. package/dist/migrations.js.map +1 -1
  1449. package/dist/modes/acp/acp-mode.d.ts.map +1 -1
  1450. package/dist/modes/acp/acp-mode.js.map +1 -1
  1451. package/dist/modes/acp/events.d.ts.map +1 -1
  1452. package/dist/modes/acp/events.js.map +1 -1
  1453. package/dist/modes/index.d.ts.map +1 -1
  1454. package/dist/modes/index.js.map +1 -1
  1455. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  1456. package/dist/modes/interactive/components/armin.js.map +1 -1
  1457. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  1458. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  1459. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  1460. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  1461. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  1462. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  1463. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  1464. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  1465. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  1466. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  1467. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  1468. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  1469. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  1470. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  1471. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  1472. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  1473. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
  1474. package/dist/modes/interactive/components/custom-entry.js.map +1 -1
  1475. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  1476. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  1477. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  1478. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  1479. package/dist/modes/interactive/components/diff.d.ts.map +1 -1
  1480. package/dist/modes/interactive/components/diff.js.map +1 -1
  1481. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  1482. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  1483. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  1484. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
  1485. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  1486. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  1487. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  1488. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  1489. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  1490. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  1491. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
  1492. package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
  1493. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  1494. package/dist/modes/interactive/components/footer.js.map +1 -1
  1495. package/dist/modes/interactive/components/home-screen.d.ts +2 -0
  1496. package/dist/modes/interactive/components/home-screen.d.ts.map +1 -1
  1497. package/dist/modes/interactive/components/home-screen.js +5 -6
  1498. package/dist/modes/interactive/components/home-screen.js.map +1 -1
  1499. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  1500. package/dist/modes/interactive/components/index.js.map +1 -1
  1501. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  1502. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  1503. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  1504. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  1505. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -1
  1506. package/dist/modes/interactive/components/markdown-transform.js.map +1 -1
  1507. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -1
  1508. package/dist/modes/interactive/components/mermaid.js.map +1 -1
  1509. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  1510. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  1511. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  1512. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  1513. package/dist/modes/interactive/components/prompt-optimization.d.ts.map +1 -1
  1514. package/dist/modes/interactive/components/prompt-optimization.js.map +1 -1
  1515. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  1516. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  1517. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  1518. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  1519. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  1520. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  1521. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  1522. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  1523. package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -1
  1524. package/dist/modes/interactive/components/settings-submenu.js.map +1 -1
  1525. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  1526. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  1527. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  1528. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  1529. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  1530. package/dist/modes/interactive/components/status-indicator.js.map +1 -1
  1531. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  1532. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  1533. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  1534. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  1535. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  1536. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  1537. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  1538. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  1539. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
  1540. package/dist/modes/interactive/components/trust-selector.js.map +1 -1
  1541. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  1542. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  1543. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  1544. package/dist/modes/interactive/components/user-message.js.map +1 -1
  1545. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  1546. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  1547. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  1548. package/dist/modes/interactive/external-editor.js.map +1 -1
  1549. package/dist/modes/interactive/interactive-mode.d.ts +19 -0
  1550. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  1551. package/dist/modes/interactive/interactive-mode.js +29 -0
  1552. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  1553. package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -1
  1554. package/dist/modes/interactive/model-catalog-refresh.js.map +1 -1
  1555. package/dist/modes/interactive/model-search.d.ts.map +1 -1
  1556. package/dist/modes/interactive/model-search.js.map +1 -1
  1557. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  1558. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  1559. package/dist/modes/interactive/theme/theme.d.ts +2 -2
  1560. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  1561. package/dist/modes/interactive/theme/theme.js.map +1 -1
  1562. package/dist/modes/json-event.d.ts.map +1 -1
  1563. package/dist/modes/json-event.js.map +1 -1
  1564. package/dist/modes/print-mode.d.ts.map +1 -1
  1565. package/dist/modes/print-mode.js.map +1 -1
  1566. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  1567. package/dist/modes/rpc/jsonl.js.map +1 -1
  1568. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  1569. package/dist/modes/rpc/rpc-client.js.map +1 -1
  1570. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  1571. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  1572. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  1573. package/dist/modes/rpc/rpc-types.js.map +1 -1
  1574. package/dist/package-manager-cli.d.ts.map +1 -1
  1575. package/dist/package-manager-cli.js.map +1 -1
  1576. package/dist/rpc-entry.d.ts.map +1 -1
  1577. package/dist/rpc-entry.js +0 -0
  1578. package/dist/rpc-entry.js.map +1 -1
  1579. package/dist/server/attach.d.ts.map +1 -1
  1580. package/dist/server/attach.js.map +1 -1
  1581. package/dist/server/create-harness.d.ts.map +1 -1
  1582. package/dist/server/create-harness.js.map +1 -1
  1583. package/dist/server/extension-ops.d.ts.map +1 -1
  1584. package/dist/server/extension-ops.js.map +1 -1
  1585. package/dist/server/pi-server-service.d.ts.map +1 -1
  1586. package/dist/server/pi-server-service.js.map +1 -1
  1587. package/dist/server/scheduler-tick.d.ts.map +1 -1
  1588. package/dist/server/scheduler-tick.js.map +1 -1
  1589. package/dist/server/serve.d.ts.map +1 -1
  1590. package/dist/server/serve.js.map +1 -1
  1591. package/dist/server/transcript.d.ts.map +1 -1
  1592. package/dist/server/transcript.js.map +1 -1
  1593. package/dist/telegram/api.d.ts +6 -0
  1594. package/dist/telegram/api.d.ts.map +1 -1
  1595. package/dist/telegram/api.js.map +1 -1
  1596. package/dist/telegram/bridge.d.ts.map +1 -1
  1597. package/dist/telegram/bridge.js.map +1 -1
  1598. package/dist/telegram/journal.d.ts.map +1 -1
  1599. package/dist/telegram/journal.js.map +1 -1
  1600. package/dist/telegram/servidor.d.ts.map +1 -1
  1601. package/dist/telegram/servidor.js.map +1 -1
  1602. package/dist/utils/abort.d.ts.map +1 -1
  1603. package/dist/utils/abort.js.map +1 -1
  1604. package/dist/utils/ansi.d.ts.map +1 -1
  1605. package/dist/utils/ansi.js.map +1 -1
  1606. package/dist/utils/changelog.d.ts.map +1 -1
  1607. package/dist/utils/changelog.js.map +1 -1
  1608. package/dist/utils/child-process.d.ts.map +1 -1
  1609. package/dist/utils/child-process.js.map +1 -1
  1610. package/dist/utils/clipboard-image.d.ts.map +1 -1
  1611. package/dist/utils/clipboard-image.js.map +1 -1
  1612. package/dist/utils/clipboard-native.d.ts.map +1 -1
  1613. package/dist/utils/clipboard-native.js.map +1 -1
  1614. package/dist/utils/clipboard.d.ts.map +1 -1
  1615. package/dist/utils/clipboard.js.map +1 -1
  1616. package/dist/utils/deprecation.d.ts.map +1 -1
  1617. package/dist/utils/deprecation.js.map +1 -1
  1618. package/dist/utils/exif-orientation.d.ts.map +1 -1
  1619. package/dist/utils/exif-orientation.js.map +1 -1
  1620. package/dist/utils/frontmatter.d.ts.map +1 -1
  1621. package/dist/utils/frontmatter.js.map +1 -1
  1622. package/dist/utils/fs-watch.d.ts.map +1 -1
  1623. package/dist/utils/fs-watch.js.map +1 -1
  1624. package/dist/utils/git.d.ts.map +1 -1
  1625. package/dist/utils/git.js.map +1 -1
  1626. package/dist/utils/html.d.ts.map +1 -1
  1627. package/dist/utils/html.js.map +1 -1
  1628. package/dist/utils/image-convert.d.ts.map +1 -1
  1629. package/dist/utils/image-convert.js.map +1 -1
  1630. package/dist/utils/image-process.d.ts.map +1 -1
  1631. package/dist/utils/image-process.js.map +1 -1
  1632. package/dist/utils/image-resize-core.d.ts.map +1 -1
  1633. package/dist/utils/image-resize-core.js.map +1 -1
  1634. package/dist/utils/image-resize-worker.d.ts.map +1 -1
  1635. package/dist/utils/image-resize-worker.js.map +1 -1
  1636. package/dist/utils/image-resize.d.ts.map +1 -1
  1637. package/dist/utils/image-resize.js.map +1 -1
  1638. package/dist/utils/json.d.ts.map +1 -1
  1639. package/dist/utils/json.js.map +1 -1
  1640. package/dist/utils/management-http.d.ts.map +1 -1
  1641. package/dist/utils/management-http.js.map +1 -1
  1642. package/dist/utils/mime.d.ts.map +1 -1
  1643. package/dist/utils/mime.js.map +1 -1
  1644. package/dist/utils/open-browser.d.ts.map +1 -1
  1645. package/dist/utils/open-browser.js.map +1 -1
  1646. package/dist/utils/paths.d.ts.map +1 -1
  1647. package/dist/utils/paths.js.map +1 -1
  1648. package/dist/utils/photon.d.ts.map +1 -1
  1649. package/dist/utils/photon.js.map +1 -1
  1650. package/dist/utils/pi-user-agent.d.ts.map +1 -1
  1651. package/dist/utils/pi-user-agent.js.map +1 -1
  1652. package/dist/utils/shell.d.ts.map +1 -1
  1653. package/dist/utils/shell.js.map +1 -1
  1654. package/dist/utils/sleep.d.ts.map +1 -1
  1655. package/dist/utils/sleep.js.map +1 -1
  1656. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  1657. package/dist/utils/syntax-highlight.js.map +1 -1
  1658. package/dist/utils/text.d.ts.map +1 -1
  1659. package/dist/utils/text.js.map +1 -1
  1660. package/dist/utils/tool-result-images.d.ts.map +1 -1
  1661. package/dist/utils/tool-result-images.js.map +1 -1
  1662. package/dist/utils/tools-manager.d.ts.map +1 -1
  1663. package/dist/utils/tools-manager.js.map +1 -1
  1664. package/dist/utils/version-check.d.ts.map +1 -1
  1665. package/dist/utils/version-check.js.map +1 -1
  1666. package/dist/utils/windows-self-update.d.ts.map +1 -1
  1667. package/dist/utils/windows-self-update.js.map +1 -1
  1668. package/docs/development-fork.md +170 -0
  1669. package/docs/docs.json +25 -0
  1670. package/docs/modules-infraestructura.md +115 -0
  1671. package/docs/modules-motor.md +160 -0
  1672. package/docs/modules-producto.md +179 -0
  1673. package/docs/modules-seguridad.md +158 -0
  1674. package/package.json +113 -113
  1675. package/dist/core/commit/diff.d.ts.map +0 -1
  1676. package/dist/core/commit/diff.js.map +0 -1
  1677. package/dist/core/commit/mensaje.d.ts +0 -80
  1678. package/dist/core/commit/mensaje.d.ts.map +0 -1
  1679. package/dist/core/commit/mensaje.js +0 -207
  1680. package/dist/core/commit/mensaje.js.map +0 -1
  1681. /package/dist/core/{commit → commits}/diff.d.ts +0 -0
  1682. /package/dist/core/{commit → commits}/diff.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../../src/core/compaction/compaction.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Context compaction for long sessions.\n *\n * Pure functions for compaction logic. The session manager handles I/O,\n * and after compaction the session is reloaded.\n */\n\nimport type { AgentMessage, StreamFn, ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport { contentText, type RetryCallbacks, type RetryPolicy, retryAssistantCall, uuidv7 } from \"@earendil-works/pi-ai\";\nimport type { AssistantMessage, Context, Model, SimpleStreamOptions, Usage } from \"@earendil-works/pi-ai/compat\";\nimport { completeSimple } from \"@earendil-works/pi-ai/compat\";\nimport { convertToLlm } from \"../messages.ts\";\nimport {\n\tbuildSessionContext,\n\ttype CompactionEntry,\n\ttype SessionEntry,\n\tsessionEntryToContextMessages,\n} from \"../session-manager.ts\";\nimport {\n\tcomputeFileLists,\n\tcreateFileOps,\n\textractFileOpsFromMessage,\n\ttype FileOperations,\n\tformatFileOperations,\n\tSUMMARIZATION_SYSTEM_PROMPT,\n\tserializeConversation,\n} from \"./utils.ts\";\n\n// ============================================================================\n// File Operation Tracking\n// ============================================================================\n\n/** Details stored in CompactionEntry.details for file tracking */\nexport interface CompactionDetails {\n\treadFiles: string[];\n\tmodifiedFiles: string[];\n}\n\n/**\n * Extract file operations from messages and previous compaction entries.\n */\nfunction extractFileOperations(\n\tmessages: AgentMessage[],\n\tentries: SessionEntry[],\n\tprevCompactionIndex: number,\n): FileOperations {\n\tconst fileOps = createFileOps();\n\n\t// Collect from previous compaction's details (if pi-generated)\n\tif (prevCompactionIndex >= 0) {\n\t\tconst prevCompaction = entries[prevCompactionIndex] as CompactionEntry;\n\t\tif (!prevCompaction.fromHook && prevCompaction.details) {\n\t\t\t// fromHook field kept for session file compatibility\n\t\t\tconst details = prevCompaction.details as CompactionDetails;\n\t\t\tif (Array.isArray(details.readFiles)) {\n\t\t\t\tfor (const f of details.readFiles) fileOps.read.add(f);\n\t\t\t}\n\t\t\tif (Array.isArray(details.modifiedFiles)) {\n\t\t\t\tfor (const f of details.modifiedFiles) fileOps.edited.add(f);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Extract from tool calls in messages\n\tfor (const msg of messages) {\n\t\textractFileOpsFromMessage(msg, fileOps);\n\t}\n\n\treturn fileOps;\n}\n\n// ============================================================================\n// Message Extraction\n// ============================================================================\n\n/**\n * Extract AgentMessage from an entry if it produces one.\n * Returns undefined for entries that don't contribute to LLM context.\n */\nfunction getMessageFromEntryForCompaction(entry: SessionEntry): AgentMessage | undefined {\n\tif (entry.type === \"compaction\") {\n\t\treturn undefined;\n\t}\n\treturn sessionEntryToContextMessages(entry)[0];\n}\n\n/** Result from compact() - SessionManager adds uuid/parentUuid when saving */\nexport interface CompactionResult<T = unknown> {\n\tsummary: string;\n\tfirstKeptEntryId: string;\n\ttokensBefore: number;\n\testimatedTokensAfter?: number;\n\t/** Usage from the LLM call(s) that generated this summary, if available */\n\tusage?: Usage;\n\t/** Extension-specific data (e.g., ArtifactIndex, version markers for structured compaction) */\n\tdetails?: T;\n}\n\nfunction combineUsage(first: Usage, second: Usage): Usage {\n\treturn {\n\t\tinput: first.input + second.input,\n\t\toutput: first.output + second.output,\n\t\tcacheRead: first.cacheRead + second.cacheRead,\n\t\tcacheWrite: first.cacheWrite + second.cacheWrite,\n\t\t...(first.cacheWrite1h !== undefined || second.cacheWrite1h !== undefined\n\t\t\t? { cacheWrite1h: (first.cacheWrite1h ?? 0) + (second.cacheWrite1h ?? 0) }\n\t\t\t: {}),\n\t\t...(first.reasoning !== undefined || second.reasoning !== undefined\n\t\t\t? { reasoning: (first.reasoning ?? 0) + (second.reasoning ?? 0) }\n\t\t\t: {}),\n\t\ttotalTokens: first.totalTokens + second.totalTokens,\n\t\tcost: {\n\t\t\tinput: first.cost.input + second.cost.input,\n\t\t\toutput: first.cost.output + second.cost.output,\n\t\t\tcacheRead: first.cost.cacheRead + second.cost.cacheRead,\n\t\t\tcacheWrite: first.cost.cacheWrite + second.cost.cacheWrite,\n\t\t\ttotal: first.cost.total + second.cost.total,\n\t\t},\n\t};\n}\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface CompactionSettings {\n\tenabled: boolean;\n\treserveTokens: number;\n\tkeepRecentTokens: number;\n}\n\nexport const DEFAULT_COMPACTION_SETTINGS: CompactionSettings = {\n\tenabled: true,\n\treserveTokens: 16384,\n\tkeepRecentTokens: 20000,\n};\n\n// ============================================================================\n// Token calculation\n// ============================================================================\n\n/**\n * Calculate total context tokens from usage.\n * Uses the native totalTokens field when available, falls back to computing from components.\n */\nexport function calculateContextTokens(usage: Usage): number {\n\treturn usage.totalTokens || usage.input + usage.output + usage.cacheRead + usage.cacheWrite;\n}\n\n/**\n * Get usage from an assistant message if available.\n * Skips aborted, error, and all-zero usage messages as they don't have valid usage data.\n */\nfunction getAssistantUsage(msg: AgentMessage): Usage | undefined {\n\tif (msg.role === \"assistant\" && \"usage\" in msg) {\n\t\tconst assistantMsg = msg as AssistantMessage;\n\t\tif (\n\t\t\tassistantMsg.stopReason !== \"aborted\" &&\n\t\t\tassistantMsg.stopReason !== \"error\" &&\n\t\t\tassistantMsg.usage &&\n\t\t\tcalculateContextTokens(assistantMsg.usage) > 0\n\t\t) {\n\t\t\treturn assistantMsg.usage;\n\t\t}\n\t}\n\treturn undefined;\n}\n\n/**\n * Find the last valid assistant message usage from session entries.\n */\nexport function getLastAssistantUsage(entries: SessionEntry[]): Usage | undefined {\n\tfor (let i = entries.length - 1; i >= 0; i--) {\n\t\tconst entry = entries[i];\n\t\tif (entry.type === \"message\") {\n\t\t\tconst usage = getAssistantUsage(entry.message);\n\t\t\tif (usage) return usage;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport interface ContextUsageEstimate {\n\ttokens: number;\n\tusageTokens: number;\n\ttrailingTokens: number;\n\tlastUsageIndex: number | null;\n}\n\nfunction getLastAssistantUsageInfo(messages: AgentMessage[]): { usage: Usage; index: number } | undefined {\n\tfor (let i = messages.length - 1; i >= 0; i--) {\n\t\tconst usage = getAssistantUsage(messages[i]);\n\t\tif (usage) return { usage, index: i };\n\t}\n\treturn undefined;\n}\n\n/**\n * Estimate context tokens from messages, using the last assistant usage when available.\n * If there are messages after the last usage, estimate their tokens with estimateTokens.\n */\nexport function estimateContextTokens(messages: AgentMessage[]): ContextUsageEstimate {\n\tconst usageInfo = getLastAssistantUsageInfo(messages);\n\n\tif (!usageInfo) {\n\t\tlet estimated = 0;\n\t\tfor (const message of messages) {\n\t\t\testimated += estimateTokens(message);\n\t\t}\n\t\treturn {\n\t\t\ttokens: estimated,\n\t\t\tusageTokens: 0,\n\t\t\ttrailingTokens: estimated,\n\t\t\tlastUsageIndex: null,\n\t\t};\n\t}\n\n\tconst usageTokens = calculateContextTokens(usageInfo.usage);\n\tlet trailingTokens = 0;\n\tfor (let i = usageInfo.index + 1; i < messages.length; i++) {\n\t\ttrailingTokens += estimateTokens(messages[i]);\n\t}\n\n\treturn {\n\t\ttokens: usageTokens + trailingTokens,\n\t\tusageTokens,\n\t\ttrailingTokens,\n\t\tlastUsageIndex: usageInfo.index,\n\t};\n}\n\n/**\n * Check if compaction should trigger based on context usage.\n */\nexport function shouldCompact(contextTokens: number, contextWindow: number, settings: CompactionSettings): boolean {\n\tif (!settings.enabled) return false;\n\treturn contextTokens > contextWindow - settings.reserveTokens;\n}\n\n// ============================================================================\n// Cut point detection\n// ============================================================================\n\nconst ESTIMATED_IMAGE_CHARS = 4800;\n\nfunction estimateTextAndImageContentChars(content: string | Array<{ type: string; text?: string }>): number {\n\tif (typeof content === \"string\") {\n\t\treturn content.length;\n\t}\n\n\tlet chars = 0;\n\tfor (const block of content) {\n\t\tif (block.type === \"text\" && block.text) {\n\t\t\tchars += block.text.length;\n\t\t} else if (block.type === \"image\") {\n\t\t\tchars += ESTIMATED_IMAGE_CHARS;\n\t\t}\n\t}\n\treturn chars;\n}\n\n/**\n * Estimate token count for a message using chars/4 heuristic.\n * This is conservative (overestimates tokens).\n */\nexport function estimateTokens(message: AgentMessage): number {\n\tlet chars = 0;\n\n\tswitch (message.role) {\n\t\tcase \"user\": {\n\t\t\tchars = estimateTextAndImageContentChars(\n\t\t\t\t(message as { content: string | Array<{ type: string; text?: string }> }).content,\n\t\t\t);\n\t\t\treturn Math.ceil(chars / 4);\n\t\t}\n\t\tcase \"assistant\": {\n\t\t\tconst assistant = message as AssistantMessage;\n\t\t\tfor (const block of assistant.content) {\n\t\t\t\tif (block.type === \"text\") {\n\t\t\t\t\tchars += block.text.length;\n\t\t\t\t} else if (block.type === \"thinking\") {\n\t\t\t\t\tchars += block.thinking.length;\n\t\t\t\t} else if (block.type === \"toolCall\") {\n\t\t\t\t\tchars += block.name.length + JSON.stringify(block.arguments).length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn Math.ceil(chars / 4);\n\t\t}\n\t\tcase \"custom\":\n\t\tcase \"toolResult\": {\n\t\t\tchars = estimateTextAndImageContentChars(message.content);\n\t\t\treturn Math.ceil(chars / 4);\n\t\t}\n\t\tcase \"bashExecution\": {\n\t\t\tchars = message.command.length + message.output.length;\n\t\t\treturn Math.ceil(chars / 4);\n\t\t}\n\t\tcase \"branchSummary\":\n\t\tcase \"compactionSummary\": {\n\t\t\tchars = message.summary.length;\n\t\t\treturn Math.ceil(chars / 4);\n\t\t}\n\t}\n\n\treturn 0;\n}\n\nfunction isCutPointMessage(message: AgentMessage): boolean {\n\tswitch (message.role) {\n\t\tcase \"user\":\n\t\tcase \"assistant\":\n\t\tcase \"bashExecution\":\n\t\tcase \"custom\":\n\t\tcase \"branchSummary\":\n\t\tcase \"compactionSummary\":\n\t\t\treturn true;\n\t\tcase \"toolResult\":\n\t\t\treturn false;\n\t}\n\treturn false;\n}\n\nfunction isTurnStartMessage(message: AgentMessage): boolean {\n\tswitch (message.role) {\n\t\tcase \"user\":\n\t\tcase \"bashExecution\":\n\t\tcase \"custom\":\n\t\tcase \"branchSummary\":\n\t\tcase \"compactionSummary\":\n\t\t\treturn true;\n\t\tcase \"assistant\":\n\t\tcase \"toolResult\":\n\t\t\treturn false;\n\t}\n\treturn false;\n}\n\nfunction isTurnStartEntry(entry: SessionEntry): boolean {\n\tif (entry.type === \"compaction\") {\n\t\treturn false;\n\t}\n\treturn sessionEntryToContextMessages(entry).some(isTurnStartMessage);\n}\n\n/**\n * Find valid cut points: indices of context-visible user-like or assistant messages.\n * Never cut at tool results (they must follow their tool call).\n * When we cut at an assistant message with tool calls, its tool results follow it\n * and will be kept.\n */\nfunction findValidCutPoints(entries: SessionEntry[], startIndex: number, endIndex: number): number[] {\n\tconst cutPoints: number[] = [];\n\tfor (let i = startIndex; i < endIndex; i++) {\n\t\tconst entry = entries[i];\n\t\tif (entry.type === \"compaction\") {\n\t\t\tcontinue;\n\t\t}\n\t\tif (sessionEntryToContextMessages(entry).some(isCutPointMessage)) {\n\t\t\tcutPoints.push(i);\n\t\t}\n\t}\n\treturn cutPoints;\n}\n\n/**\n * Find the context-visible user-role message that starts the turn containing the given entry index.\n * Returns -1 if no turn start found before the index.\n */\nexport function findTurnStartIndex(entries: SessionEntry[], entryIndex: number, startIndex: number): number {\n\tfor (let i = entryIndex; i >= startIndex; i--) {\n\t\tif (isTurnStartEntry(entries[i])) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\nexport interface CutPointResult {\n\t/** Index of first entry to keep */\n\tfirstKeptEntryIndex: number;\n\t/** Index of user message that starts the turn being split, or -1 if not splitting */\n\tturnStartIndex: number;\n\t/** Whether this cut splits a turn (cut point is not a user message) */\n\tisSplitTurn: boolean;\n}\n\n/**\n * Find the cut point in session entries that keeps approximately `keepRecentTokens`.\n *\n * Algorithm: Walk backwards from newest, accumulating estimated message sizes.\n * Stop when we've accumulated >= keepRecentTokens. Cut at that point.\n *\n * Can cut at user OR assistant messages (never tool results). When cutting at an\n * assistant message with tool calls, its tool results come after and will be kept.\n *\n * Returns CutPointResult with:\n * - firstKeptEntryIndex: the entry index to start keeping from\n * - turnStartIndex: if cutting mid-turn, the user message that started that turn\n * - isSplitTurn: whether we're cutting in the middle of a turn\n *\n * Only considers entries between `startIndex` and `endIndex` (exclusive).\n */\nexport function findCutPoint(\n\tentries: SessionEntry[],\n\tstartIndex: number,\n\tendIndex: number,\n\tkeepRecentTokens: number,\n): CutPointResult {\n\tconst cutPoints = findValidCutPoints(entries, startIndex, endIndex);\n\n\tif (cutPoints.length === 0) {\n\t\treturn { firstKeptEntryIndex: startIndex, turnStartIndex: -1, isSplitTurn: false };\n\t}\n\n\t// Walk backwards from newest, accumulating estimated message sizes\n\tlet accumulatedTokens = 0;\n\tlet cutIndex = cutPoints[0]; // Default: keep from first message (not header)\n\n\tfor (let i = endIndex - 1; i >= startIndex; i--) {\n\t\tconst entry = entries[i];\n\t\tconst messageTokens = sessionEntryToContextMessages(entry).reduce(\n\t\t\t(sum, message) => sum + estimateTokens(message),\n\t\t\t0,\n\t\t);\n\t\tif (messageTokens === 0) continue;\n\t\taccumulatedTokens += messageTokens;\n\n\t\t// Check if we've exceeded the budget\n\t\tif (accumulatedTokens >= keepRecentTokens) {\n\t\t\t// Find the closest valid cut point at or after this entry\n\t\t\tfor (let c = 0; c < cutPoints.length; c++) {\n\t\t\t\tif (cutPoints[c] >= i) {\n\t\t\t\t\tcutIndex = cutPoints[c];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Scan backwards from cutIndex to include adjacent metadata entries that do not affect context.\n\twhile (cutIndex > startIndex) {\n\t\tconst prevEntry = entries[cutIndex - 1];\n\t\t// Stop at compaction boundaries or context-visible entries.\n\t\tif (prevEntry.type === \"compaction\" || sessionEntryToContextMessages(prevEntry).length > 0) {\n\t\t\tbreak;\n\t\t}\n\t\tcutIndex--;\n\t}\n\n\t// Determine if this is a split turn\n\tconst cutEntry = entries[cutIndex];\n\tconst startsTurn = isTurnStartEntry(cutEntry);\n\tconst turnStartIndex = startsTurn ? -1 : findTurnStartIndex(entries, cutIndex, startIndex);\n\n\treturn {\n\t\tfirstKeptEntryIndex: cutIndex,\n\t\tturnStartIndex,\n\t\tisSplitTurn: !startsTurn && turnStartIndex !== -1,\n\t};\n}\n\n// ============================================================================\n// Summarization\n// ============================================================================\n\nconst SUMMARIZATION_PROMPT = `The messages above are a conversation to summarize. Create a structured context checkpoint summary that another LLM will use to continue the work.\n\nUse this EXACT format:\n\n## Goal\n[What is the user trying to accomplish? Can be multiple items if the session covers different tasks.]\n\n## Constraints & Preferences\n- [Any constraints, preferences, or requirements mentioned by user]\n- [Or \"(none)\" if none were mentioned]\n\n## Progress\n### Done\n- [x] [Completed tasks/changes]\n\n### In Progress\n- [ ] [Current work]\n\n### Blocked\n- [Issues preventing progress, if any]\n\n## Key Decisions\n- **[Decision]**: [Brief rationale]\n\n## Next Steps\n1. [Ordered list of what should happen next]\n\n## Critical Context\n- [Any data, examples, or references needed to continue]\n- [Or \"(none)\" if not applicable]\n\nKeep each section concise. Preserve exact file paths, function names, and error messages.`;\n\nconst UPDATE_SUMMARIZATION_INSTRUCTIONS = `Update the existing structured summary with new information. RULES:\n- PRESERVE all existing information from the previous summary\n- ADD new progress, decisions, and context from the new messages\n- UPDATE the Progress section: move items from \"In Progress\" to \"Done\" when completed\n- UPDATE \"Next Steps\" based on what was accomplished\n- PRESERVE exact file paths, function names, and error messages\n- If something is no longer relevant, you may remove it\n\nUse this EXACT format:\n\n## Goal\n[Preserve existing goals, add new ones if the task expanded]\n\n## Constraints & Preferences\n- [Preserve existing, add new ones discovered]\n\n## Progress\n### Done\n- [x] [Include previously done items AND newly completed items]\n\n### In Progress\n- [ ] [Current work - update based on progress]\n\n### Blocked\n- [Current blockers - remove if resolved]\n\n## Key Decisions\n- **[Decision]**: [Brief rationale] (preserve all previous, add new)\n\n## Next Steps\n1. [Update based on current state]\n\n## Critical Context\n- [Preserve important context, add new if needed]\n\nKeep each section concise. Preserve exact file paths, function names, and error messages.`;\n\nconst UPDATE_SUMMARIZATION_PROMPT = `The messages above are NEW conversation messages to incorporate into the existing summary provided in <previous-summary> tags.\n\n${UPDATE_SUMMARIZATION_INSTRUCTIONS}`;\n\nfunction createSummarizationOptions(\n\tmodel: Model<any>,\n\tmaxTokens: number,\n\tapiKey: string | undefined,\n\theaders: Record<string, string> | undefined,\n\tenv: Record<string, string> | undefined,\n\tsignal: AbortSignal | undefined,\n\tthinkingLevel: ThinkingLevel | undefined,\n\tsessionId: string | undefined,\n): SimpleStreamOptions {\n\tconst options: SimpleStreamOptions = { maxTokens, signal, apiKey, headers, env, sessionId };\n\tif (model.reasoning && thinkingLevel && thinkingLevel !== \"off\") {\n\t\toptions.reasoning = thinkingLevel;\n\t}\n\treturn options;\n}\n\n/**\n * Shared choke point for every compaction/branch-summary summarization call. Wraps the\n * single LLM call in {@link retryAssistantCall} so transient stream drops (e.g.\n * `terminated`, socket close) honor the configured retry policy instead of failing\n * the whole compaction on the first attempt. Deterministic errors and aborts return\n * immediately (see {@link retryAssistantCall}).\n */\nexport async function completeSummarization(\n\tmodel: Model<any>,\n\tcontext: Context,\n\toptions: SimpleStreamOptions,\n\tstreamFn?: StreamFn,\n\tretry?: RetryPolicy,\n\tcallbacks?: RetryCallbacks,\n): Promise<AssistantMessage> {\n\t// Avoid cache writes for one-off summaries. Reuse caller-supplied routing when available;\n\t// callers without a session ID, including branch summaries, receive a fresh routing ID.\n\tconst requestOptions: SimpleStreamOptions = {\n\t\t...options,\n\t\tcacheRetention: \"none\",\n\t\tsessionId: options.sessionId ?? uuidv7(),\n\t\ttoolChoice: \"none\",\n\t};\n\tconst produce = async (): Promise<AssistantMessage> =>\n\t\tstreamFn\n\t\t\t? (await streamFn(model, context, requestOptions)).result()\n\t\t\t: completeSimple(model, context, requestOptions);\n\treturn retryAssistantCall(produce, retry, requestOptions.signal, callbacks);\n}\n\n/**\n * Generate a summary of the conversation using the LLM.\n * If previousSummary is provided, uses the update prompt to merge.\n */\nexport async function generateSummary(\n\tcurrentMessages: AgentMessage[],\n\tmodel: Model<any>,\n\treserveTokens: number,\n\tapiKey: string | undefined,\n\theaders?: Record<string, string>,\n\tsignal?: AbortSignal,\n\tcustomInstructions?: string,\n\tpreviousSummary?: string,\n\tthinkingLevel?: ThinkingLevel,\n\tstreamFn?: StreamFn,\n\tenv?: Record<string, string>,\n\tretry?: RetryPolicy,\n\tcallbacks?: RetryCallbacks,\n\tsessionId?: string,\n): Promise<string> {\n\treturn (\n\t\tawait generateSummaryWithUsage(\n\t\t\tcurrentMessages,\n\t\t\tmodel,\n\t\t\treserveTokens,\n\t\t\tapiKey,\n\t\t\theaders,\n\t\t\tsignal,\n\t\t\tcustomInstructions,\n\t\t\tpreviousSummary,\n\t\t\tthinkingLevel,\n\t\t\tstreamFn,\n\t\t\tenv,\n\t\t\tretry,\n\t\t\tcallbacks,\n\t\t\tsessionId,\n\t\t)\n\t).text;\n}\n\n/** Build the provider context for a standalone summary request. */\nfunction buildSummarizationContext(promptText: string): Context {\n\treturn {\n\t\tsystemPrompt: SUMMARIZATION_SYSTEM_PROMPT,\n\t\tmessages: [\n\t\t\t{\n\t\t\t\trole: \"user\",\n\t\t\t\tcontent: [{ type: \"text\", text: promptText }],\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t},\n\t\t],\n\t};\n}\n\n/** Generate or update a conversation summary and return its provider usage. */\nexport async function generateSummaryWithUsage(\n\tcurrentMessages: AgentMessage[],\n\tmodel: Model<any>,\n\treserveTokens: number,\n\tapiKey: string | undefined,\n\theaders?: Record<string, string>,\n\tsignal?: AbortSignal,\n\tcustomInstructions?: string,\n\tpreviousSummary?: string,\n\tthinkingLevel?: ThinkingLevel,\n\tstreamFn?: StreamFn,\n\tenv?: Record<string, string>,\n\tretry?: RetryPolicy,\n\tcallbacks?: RetryCallbacks,\n\tsessionId?: string,\n): Promise<{ text: string; usage: Usage }> {\n\tconst maxTokens = Math.min(\n\t\tMath.floor(0.8 * reserveTokens),\n\t\tmodel.maxTokens > 0 ? model.maxTokens : Number.POSITIVE_INFINITY,\n\t);\n\n\t// Use update prompt if we have a previous summary, otherwise initial prompt\n\tlet basePrompt = previousSummary ? UPDATE_SUMMARIZATION_PROMPT : SUMMARIZATION_PROMPT;\n\tif (customInstructions) {\n\t\tbasePrompt = `${basePrompt}\\n\\nAdditional focus: ${customInstructions}`;\n\t}\n\n\t// Serialize conversation to text so model doesn't try to continue it\n\t// Convert to LLM messages first (handles custom types like bashExecution, custom, etc.)\n\tconst llmMessages = convertToLlm(currentMessages);\n\tconst conversationText = serializeConversation(llmMessages);\n\n\t// Build the prompt with conversation wrapped in tags\n\tlet promptText = `<conversation>\\n${conversationText}\\n</conversation>\\n\\n`;\n\tif (previousSummary) {\n\t\tpromptText += `<previous-summary>\\n${previousSummary}\\n</previous-summary>\\n\\n`;\n\t}\n\tpromptText += basePrompt;\n\n\tconst completionOptions = createSummarizationOptions(\n\t\tmodel,\n\t\tmaxTokens,\n\t\tapiKey,\n\t\theaders,\n\t\tenv,\n\t\tsignal,\n\t\tthinkingLevel,\n\t\tsessionId,\n\t);\n\n\tconst response = await completeSummarization(\n\t\tmodel,\n\t\tbuildSummarizationContext(promptText),\n\t\tcompletionOptions,\n\t\tstreamFn,\n\t\tretry,\n\t\tcallbacks,\n\t);\n\n\tif (response.stopReason === \"error\") {\n\t\tthrow new Error(`Summarization failed: ${response.errorMessage || \"Unknown error\"}`);\n\t}\n\tif (response.content.some((block) => block.type === \"toolCall\")) {\n\t\tthrow new Error(\"Summarization attempted to call a tool\");\n\t}\n\n\tconst textContent = contentText(response.content);\n\n\treturn { text: textContent, usage: response.usage };\n}\n\n// ============================================================================\n// Compaction Preparation (for extensions)\n// ============================================================================\n\nexport interface CompactionPreparation {\n\t/** UUID of first entry to keep */\n\tfirstKeptEntryId: string;\n\t/** Messages that will be summarized and discarded */\n\tmessagesToSummarize: AgentMessage[];\n\t/** Messages that will be turned into turn prefix summary (if splitting) */\n\tturnPrefixMessages: AgentMessage[];\n\t/** Whether this is a split turn (cut point in middle of turn) */\n\tisSplitTurn: boolean;\n\ttokensBefore: number;\n\t/** Summary from previous compaction, for iterative update */\n\tpreviousSummary?: string;\n\t/** File operations extracted from messagesToSummarize */\n\tfileOps: FileOperations;\n\t/** Compaction settions from settings.jsonl\t*/\n\tsettings: CompactionSettings;\n}\n\nexport function prepareCompaction(\n\tpathEntries: SessionEntry[],\n\tsettings: CompactionSettings,\n): CompactionPreparation | undefined {\n\tif (pathEntries.length > 0 && pathEntries[pathEntries.length - 1].type === \"compaction\") {\n\t\treturn undefined;\n\t}\n\n\tlet prevCompactionIndex = -1;\n\tfor (let i = pathEntries.length - 1; i >= 0; i--) {\n\t\tif (pathEntries[i].type === \"compaction\") {\n\t\t\tprevCompactionIndex = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tlet previousSummary: string | undefined;\n\tlet boundaryStart = 0;\n\tif (prevCompactionIndex >= 0) {\n\t\tconst prevCompaction = pathEntries[prevCompactionIndex] as CompactionEntry;\n\t\tpreviousSummary = prevCompaction.summary;\n\t\tconst firstKeptEntryIndex = pathEntries.findIndex((entry) => entry.id === prevCompaction.firstKeptEntryId);\n\t\tboundaryStart = firstKeptEntryIndex >= 0 ? firstKeptEntryIndex : prevCompactionIndex + 1;\n\t}\n\tconst boundaryEnd = pathEntries.length;\n\n\tconst tokensBefore = estimateContextTokens(buildSessionContext(pathEntries).messages).tokens;\n\n\tconst cutPoint = findCutPoint(pathEntries, boundaryStart, boundaryEnd, settings.keepRecentTokens);\n\n\t// Get UUID of first kept entry\n\tconst firstKeptEntry = pathEntries[cutPoint.firstKeptEntryIndex];\n\tif (!firstKeptEntry?.id) {\n\t\treturn undefined; // Session needs migration\n\t}\n\tconst firstKeptEntryId = firstKeptEntry.id;\n\n\tconst historyEnd = cutPoint.isSplitTurn ? cutPoint.turnStartIndex : cutPoint.firstKeptEntryIndex;\n\n\t// Messages to summarize (will be discarded after summary)\n\tconst messagesToSummarize: AgentMessage[] = [];\n\tfor (let i = boundaryStart; i < historyEnd; i++) {\n\t\tconst msg = getMessageFromEntryForCompaction(pathEntries[i]);\n\t\tif (msg) messagesToSummarize.push(msg);\n\t}\n\n\t// Messages for turn prefix summary (if splitting a turn)\n\tconst turnPrefixMessages: AgentMessage[] = [];\n\tif (cutPoint.isSplitTurn) {\n\t\tfor (let i = cutPoint.turnStartIndex; i < cutPoint.firstKeptEntryIndex; i++) {\n\t\t\tconst msg = getMessageFromEntryForCompaction(pathEntries[i]);\n\t\t\tif (msg) turnPrefixMessages.push(msg);\n\t\t}\n\t}\n\n\tif (messagesToSummarize.length === 0 && turnPrefixMessages.length === 0) {\n\t\treturn undefined;\n\t}\n\n\t// Extract file operations from messages and previous compaction\n\tconst fileOps = extractFileOperations(messagesToSummarize, pathEntries, prevCompactionIndex);\n\n\t// Also extract file ops from turn prefix if splitting\n\tif (cutPoint.isSplitTurn) {\n\t\tfor (const msg of turnPrefixMessages) {\n\t\t\textractFileOpsFromMessage(msg, fileOps);\n\t\t}\n\t}\n\n\treturn {\n\t\tfirstKeptEntryId,\n\t\tmessagesToSummarize,\n\t\tturnPrefixMessages,\n\t\tisSplitTurn: cutPoint.isSplitTurn,\n\t\ttokensBefore,\n\t\tpreviousSummary,\n\t\tfileOps,\n\t\tsettings,\n\t};\n}\n\n// ============================================================================\n// Main compaction function\n// ============================================================================\n\nconst TURN_PREFIX_SUMMARIZATION_PROMPT = `This is the PREFIX of a turn that was too large to keep. The SUFFIX (recent work) is retained.\n\nSummarize the prefix to provide context for the retained suffix:\n\n## Original Request\n[What did the user ask for in this turn?]\n\n## Early Progress\n- [Key decisions and work done in the prefix]\n\n## Context for Suffix\n- [Information needed to understand the retained recent work]\n\nBe concise. Focus on what's needed to understand the kept suffix.`;\n\n/**\n * Generate summaries for compaction using prepared data.\n * Returns CompactionResult - SessionManager adds uuid/parentUuid when saving.\n *\n * @param preparation - Pre-calculated preparation from prepareCompaction()\n * @param customInstructions - Optional custom focus for the summary\n * @param sessionId - Optional routing session ID forwarded without enabling prompt caching\n */\nexport async function compact(\n\tpreparation: CompactionPreparation,\n\tmodel: Model<any>,\n\tapiKey: string | undefined,\n\theaders?: Record<string, string>,\n\tcustomInstructions?: string,\n\tsignal?: AbortSignal,\n\tthinkingLevel?: ThinkingLevel,\n\tstreamFn?: StreamFn,\n\tenv?: Record<string, string>,\n\tretry?: RetryPolicy,\n\tcallbacks?: RetryCallbacks,\n\tsessionId?: string,\n): Promise<CompactionResult> {\n\tconst {\n\t\tfirstKeptEntryId,\n\t\tmessagesToSummarize,\n\t\tturnPrefixMessages,\n\t\tisSplitTurn,\n\t\ttokensBefore,\n\t\tpreviousSummary,\n\t\tfileOps,\n\t\tsettings,\n\t} = preparation;\n\n\t// Generate summaries and merge into one\n\tlet summary: string;\n\tlet summaryUsage: Usage;\n\n\tif (isSplitTurn && turnPrefixMessages.length > 0) {\n\t\tlet historyText = \"No prior history.\";\n\t\tlet historyUsage: Usage | undefined;\n\t\tif (messagesToSummarize.length > 0) {\n\t\t\tconst historyResult = await generateSummaryWithUsage(\n\t\t\t\tmessagesToSummarize,\n\t\t\t\tmodel,\n\t\t\t\tsettings.reserveTokens,\n\t\t\t\tapiKey,\n\t\t\t\theaders,\n\t\t\t\tsignal,\n\t\t\t\tcustomInstructions,\n\t\t\t\tpreviousSummary,\n\t\t\t\tthinkingLevel,\n\t\t\t\tstreamFn,\n\t\t\t\tenv,\n\t\t\t\tretry,\n\t\t\t\tcallbacks,\n\t\t\t\tsessionId,\n\t\t\t);\n\t\t\thistoryText = historyResult.text;\n\t\t\thistoryUsage = historyResult.usage;\n\t\t}\n\t\tconst turnPrefixResult = await generateTurnPrefixSummary(\n\t\t\tturnPrefixMessages,\n\t\t\tmodel,\n\t\t\tsettings.reserveTokens,\n\t\t\tapiKey,\n\t\t\theaders,\n\t\t\tenv,\n\t\t\tsignal,\n\t\t\tthinkingLevel,\n\t\t\tstreamFn,\n\t\t\tretry,\n\t\t\tcallbacks,\n\t\t\tsessionId,\n\t\t);\n\t\t// Merge into single summary\n\t\tsummary = `${historyText}\\n\\n---\\n\\n**Turn Context (split turn):**\\n\\n${turnPrefixResult.text}`;\n\t\tsummaryUsage = historyUsage ? combineUsage(historyUsage, turnPrefixResult.usage) : turnPrefixResult.usage;\n\t} else {\n\t\t// Just generate history summary\n\t\tconst result = await generateSummaryWithUsage(\n\t\t\tmessagesToSummarize,\n\t\t\tmodel,\n\t\t\tsettings.reserveTokens,\n\t\t\tapiKey,\n\t\t\theaders,\n\t\t\tsignal,\n\t\t\tcustomInstructions,\n\t\t\tpreviousSummary,\n\t\t\tthinkingLevel,\n\t\t\tstreamFn,\n\t\t\tenv,\n\t\t\tretry,\n\t\t\tcallbacks,\n\t\t\tsessionId,\n\t\t);\n\t\tsummary = result.text;\n\t\tsummaryUsage = result.usage;\n\t}\n\n\t// Compute file lists and append to summary\n\tconst { readFiles, modifiedFiles } = computeFileLists(fileOps);\n\tsummary += formatFileOperations(readFiles, modifiedFiles);\n\n\tif (!firstKeptEntryId) {\n\t\tthrow new Error(\"First kept entry has no UUID - session may need migration\");\n\t}\n\n\treturn {\n\t\tsummary,\n\t\tfirstKeptEntryId,\n\t\ttokensBefore,\n\t\tusage: summaryUsage,\n\t\tdetails: { readFiles, modifiedFiles } as CompactionDetails,\n\t};\n}\n\n/**\n * Generate a summary for a turn prefix (when splitting a turn).\n */\nasync function generateTurnPrefixSummary(\n\tmessages: AgentMessage[],\n\tmodel: Model<any>,\n\treserveTokens: number,\n\tapiKey: string | undefined,\n\theaders?: Record<string, string>,\n\tenv?: Record<string, string>,\n\tsignal?: AbortSignal,\n\tthinkingLevel?: ThinkingLevel,\n\tstreamFn?: StreamFn,\n\tretry?: RetryPolicy,\n\tcallbacks?: RetryCallbacks,\n\tsessionId?: string,\n): Promise<{ text: string; usage: Usage }> {\n\tconst maxTokens = Math.min(\n\t\tMath.floor(0.5 * reserveTokens),\n\t\tmodel.maxTokens > 0 ? model.maxTokens : Number.POSITIVE_INFINITY,\n\t); // Smaller budget for turn prefix\n\tconst llmMessages = convertToLlm(messages);\n\tconst conversationText = serializeConversation(llmMessages);\n\tconst promptText = `<conversation>\\n${conversationText}\\n</conversation>\\n\\n${TURN_PREFIX_SUMMARIZATION_PROMPT}`;\n\n\tconst response = await completeSummarization(\n\t\tmodel,\n\t\tbuildSummarizationContext(promptText),\n\t\tcreateSummarizationOptions(model, maxTokens, apiKey, headers, env, signal, thinkingLevel, sessionId),\n\t\tstreamFn,\n\t\tretry,\n\t\tcallbacks,\n\t);\n\n\tif (response.stopReason === \"error\") {\n\t\tthrow new Error(`Turn prefix summarization failed: ${response.errorMessage || \"Unknown error\"}`);\n\t}\n\tif (response.content.some((block) => block.type === \"toolCall\")) {\n\t\tthrow new Error(\"Turn prefix summarization attempted to call a tool\");\n\t}\n\n\treturn {\n\t\ttext: contentText(response.content),\n\t\tusage: response.usage,\n\t};\n}\n"]}
1
+ {"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../../src/core/compaction/compaction.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/compaction/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC","sourcesContent":["/**\n * Compaction and summarization utilities.\n */\n\nexport * from \"./branch-summarization.ts\";\nexport * from \"./compaction.ts\";\nexport * from \"./utils.ts\";\n"]}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/compaction/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/compaction/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC","sourcesContent":["/**\n * Compaction and summarization utilities.\n */\n\nexport * from \"./branch-summarization.ts\";\nexport * from \"./compaction.ts\";\nexport * from \"./utils.ts\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/compaction/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/core/compaction/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAe,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAMlE,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACpB;AAED,wBAAgB,aAAa,IAAI,cAAc,CAM9C;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CA2B9F;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAA;CAAE,CAK1G;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,CAUzF;AAmBD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAyCjE;AAMD,eAAO,MAAM,2BAA2B,6TAEmF,CAAC","sourcesContent":["/**\n * Shared utilities for compaction and branch summarization.\n */\n\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport { contentText, type Message } from \"@earendil-works/pi-ai\";\n\n// ============================================================================\n// File Operation Tracking\n// ============================================================================\n\nexport interface FileOperations {\n\tread: Set<string>;\n\twritten: Set<string>;\n\tedited: Set<string>;\n}\n\nexport function createFileOps(): FileOperations {\n\treturn {\n\t\tread: new Set(),\n\t\twritten: new Set(),\n\t\tedited: new Set(),\n\t};\n}\n\n/**\n * Extract file operations from tool calls in an assistant message.\n */\nexport function extractFileOpsFromMessage(message: AgentMessage, fileOps: FileOperations): void {\n\tif (message.role !== \"assistant\") return;\n\tif (!(\"content\" in message) || !Array.isArray(message.content)) return;\n\n\tfor (const block of message.content) {\n\t\tif (typeof block !== \"object\" || block === null) continue;\n\t\tif (!(\"type\" in block) || block.type !== \"toolCall\") continue;\n\t\tif (!(\"arguments\" in block) || !(\"name\" in block)) continue;\n\n\t\tconst args = block.arguments as Record<string, unknown> | undefined;\n\t\tif (!args) continue;\n\n\t\tconst path = typeof args.path === \"string\" ? args.path : undefined;\n\t\tif (!path) continue;\n\n\t\tswitch (block.name) {\n\t\t\tcase \"read\":\n\t\t\t\tfileOps.read.add(path);\n\t\t\t\tbreak;\n\t\t\tcase \"write\":\n\t\t\t\tfileOps.written.add(path);\n\t\t\t\tbreak;\n\t\t\tcase \"edit\":\n\t\t\t\tfileOps.edited.add(path);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\n/**\n * Compute final file lists from file operations.\n * Returns readFiles (files only read, not modified) and modifiedFiles.\n */\nexport function computeFileLists(fileOps: FileOperations): { readFiles: string[]; modifiedFiles: string[] } {\n\tconst modified = new Set([...fileOps.edited, ...fileOps.written]);\n\tconst readOnly = [...fileOps.read].filter((f) => !modified.has(f)).sort();\n\tconst modifiedFiles = [...modified].sort();\n\treturn { readFiles: readOnly, modifiedFiles };\n}\n\n/**\n * Format file operations as XML tags for summary.\n */\nexport function formatFileOperations(readFiles: string[], modifiedFiles: string[]): string {\n\tconst sections: string[] = [];\n\tif (readFiles.length > 0) {\n\t\tsections.push(`<read-files>\\n${readFiles.join(\"\\n\")}\\n</read-files>`);\n\t}\n\tif (modifiedFiles.length > 0) {\n\t\tsections.push(`<modified-files>\\n${modifiedFiles.join(\"\\n\")}\\n</modified-files>`);\n\t}\n\tif (sections.length === 0) return \"\";\n\treturn `\\n\\n${sections.join(\"\\n\\n\")}`;\n}\n\n// ============================================================================\n// Message Serialization\n// ============================================================================\n\n/** Maximum characters for a tool result in serialized summaries. */\nconst TOOL_RESULT_MAX_CHARS = 2000;\n\n/**\n * Truncate text to a maximum character length for summarization.\n * Keeps the beginning and appends a truncation marker.\n */\nfunction truncateForSummary(text: string, maxChars: number): string {\n\tif (text.length <= maxChars) return text;\n\tconst truncatedChars = text.length - maxChars;\n\treturn `${text.slice(0, maxChars)}\\n\\n[... ${truncatedChars} more characters truncated]`;\n}\n\n/**\n * Serialize LLM messages to text for summarization.\n * This prevents the model from treating it as a conversation to continue.\n * Call convertToLlm() first to handle custom message types.\n *\n * Tool results are truncated to keep the summarization request within\n * reasonable token budgets. Full content is not needed for summarization.\n */\nexport function serializeConversation(messages: Message[]): string {\n\tconst parts: string[] = [];\n\n\tfor (const msg of messages) {\n\t\tif (msg.role === \"user\") {\n\t\t\tconst content = contentText(msg.content, \"\");\n\t\t\tif (content) parts.push(`[User]: ${content}`);\n\t\t} else if (msg.role === \"assistant\") {\n\t\t\tconst thinkingParts: string[] = [];\n\t\t\tconst toolCalls: string[] = [];\n\n\t\t\tfor (const block of msg.content) {\n\t\t\t\tif (block.type === \"thinking\") {\n\t\t\t\t\tthinkingParts.push(block.thinking);\n\t\t\t\t} else if (block.type === \"toolCall\") {\n\t\t\t\t\tconst args = block.arguments as Record<string, unknown>;\n\t\t\t\t\tconst argsStr = Object.entries(args)\n\t\t\t\t\t\t.map(([k, v]) => `${k}=${JSON.stringify(v)}`)\n\t\t\t\t\t\t.join(\", \");\n\t\t\t\t\ttoolCalls.push(`${block.name}(${argsStr})`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (thinkingParts.length > 0) {\n\t\t\t\tparts.push(`[Assistant thinking]: ${thinkingParts.join(\"\\n\")}`);\n\t\t\t}\n\t\t\tif (msg.content.some((block) => block.type === \"text\")) {\n\t\t\t\tparts.push(`[Assistant]: ${contentText(msg.content)}`);\n\t\t\t}\n\t\t\tif (toolCalls.length > 0) {\n\t\t\t\tparts.push(`[Assistant tool calls]: ${toolCalls.join(\"; \")}`);\n\t\t\t}\n\t\t} else if (msg.role === \"toolResult\") {\n\t\t\tconst content = contentText(msg.content, \"\");\n\t\t\tif (content) {\n\t\t\t\tparts.push(`[Tool result]: ${truncateForSummary(content, TOOL_RESULT_MAX_CHARS)}`);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn parts.join(\"\\n\\n\");\n}\n\n// ============================================================================\n// Summarization System Prompt\n// ============================================================================\n\nexport const SUMMARIZATION_SYSTEM_PROMPT = `You are a context summarization assistant. Your task is to read a conversation between a user and an AI assistant, then produce a structured summary following the exact format specified.\n\nDo NOT continue the conversation. Do NOT respond to any questions in the conversation. ONLY output the structured summary.`;\n"]}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/core/compaction/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAe,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAMlE,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACpB;AAED,wBAAgB,aAAa,IAAI,cAAc,CAM9C;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CA2B9F;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAA;CAAE,CAK1G;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,CAUzF;AAmBD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAyCjE;AAMD,eAAO,MAAM,2BAA2B,6TAEmF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/core/compaction/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Shared utilities for compaction and branch summarization.\n */\n\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport { contentText, type Message } from \"@earendil-works/pi-ai\";\n\n// ============================================================================\n// File Operation Tracking\n// ============================================================================\n\nexport interface FileOperations {\n\tread: Set<string>;\n\twritten: Set<string>;\n\tedited: Set<string>;\n}\n\nexport function createFileOps(): FileOperations {\n\treturn {\n\t\tread: new Set(),\n\t\twritten: new Set(),\n\t\tedited: new Set(),\n\t};\n}\n\n/**\n * Extract file operations from tool calls in an assistant message.\n */\nexport function extractFileOpsFromMessage(message: AgentMessage, fileOps: FileOperations): void {\n\tif (message.role !== \"assistant\") return;\n\tif (!(\"content\" in message) || !Array.isArray(message.content)) return;\n\n\tfor (const block of message.content) {\n\t\tif (typeof block !== \"object\" || block === null) continue;\n\t\tif (!(\"type\" in block) || block.type !== \"toolCall\") continue;\n\t\tif (!(\"arguments\" in block) || !(\"name\" in block)) continue;\n\n\t\tconst args = block.arguments as Record<string, unknown> | undefined;\n\t\tif (!args) continue;\n\n\t\tconst path = typeof args.path === \"string\" ? args.path : undefined;\n\t\tif (!path) continue;\n\n\t\tswitch (block.name) {\n\t\t\tcase \"read\":\n\t\t\t\tfileOps.read.add(path);\n\t\t\t\tbreak;\n\t\t\tcase \"write\":\n\t\t\t\tfileOps.written.add(path);\n\t\t\t\tbreak;\n\t\t\tcase \"edit\":\n\t\t\t\tfileOps.edited.add(path);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\n/**\n * Compute final file lists from file operations.\n * Returns readFiles (files only read, not modified) and modifiedFiles.\n */\nexport function computeFileLists(fileOps: FileOperations): { readFiles: string[]; modifiedFiles: string[] } {\n\tconst modified = new Set([...fileOps.edited, ...fileOps.written]);\n\tconst readOnly = [...fileOps.read].filter((f) => !modified.has(f)).sort();\n\tconst modifiedFiles = [...modified].sort();\n\treturn { readFiles: readOnly, modifiedFiles };\n}\n\n/**\n * Format file operations as XML tags for summary.\n */\nexport function formatFileOperations(readFiles: string[], modifiedFiles: string[]): string {\n\tconst sections: string[] = [];\n\tif (readFiles.length > 0) {\n\t\tsections.push(`<read-files>\\n${readFiles.join(\"\\n\")}\\n</read-files>`);\n\t}\n\tif (modifiedFiles.length > 0) {\n\t\tsections.push(`<modified-files>\\n${modifiedFiles.join(\"\\n\")}\\n</modified-files>`);\n\t}\n\tif (sections.length === 0) return \"\";\n\treturn `\\n\\n${sections.join(\"\\n\\n\")}`;\n}\n\n// ============================================================================\n// Message Serialization\n// ============================================================================\n\n/** Maximum characters for a tool result in serialized summaries. */\nconst TOOL_RESULT_MAX_CHARS = 2000;\n\n/**\n * Truncate text to a maximum character length for summarization.\n * Keeps the beginning and appends a truncation marker.\n */\nfunction truncateForSummary(text: string, maxChars: number): string {\n\tif (text.length <= maxChars) return text;\n\tconst truncatedChars = text.length - maxChars;\n\treturn `${text.slice(0, maxChars)}\\n\\n[... ${truncatedChars} more characters truncated]`;\n}\n\n/**\n * Serialize LLM messages to text for summarization.\n * This prevents the model from treating it as a conversation to continue.\n * Call convertToLlm() first to handle custom message types.\n *\n * Tool results are truncated to keep the summarization request within\n * reasonable token budgets. Full content is not needed for summarization.\n */\nexport function serializeConversation(messages: Message[]): string {\n\tconst parts: string[] = [];\n\n\tfor (const msg of messages) {\n\t\tif (msg.role === \"user\") {\n\t\t\tconst content = contentText(msg.content, \"\");\n\t\t\tif (content) parts.push(`[User]: ${content}`);\n\t\t} else if (msg.role === \"assistant\") {\n\t\t\tconst thinkingParts: string[] = [];\n\t\t\tconst toolCalls: string[] = [];\n\n\t\t\tfor (const block of msg.content) {\n\t\t\t\tif (block.type === \"thinking\") {\n\t\t\t\t\tthinkingParts.push(block.thinking);\n\t\t\t\t} else if (block.type === \"toolCall\") {\n\t\t\t\t\tconst args = block.arguments as Record<string, unknown>;\n\t\t\t\t\tconst argsStr = Object.entries(args)\n\t\t\t\t\t\t.map(([k, v]) => `${k}=${JSON.stringify(v)}`)\n\t\t\t\t\t\t.join(\", \");\n\t\t\t\t\ttoolCalls.push(`${block.name}(${argsStr})`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (thinkingParts.length > 0) {\n\t\t\t\tparts.push(`[Assistant thinking]: ${thinkingParts.join(\"\\n\")}`);\n\t\t\t}\n\t\t\tif (msg.content.some((block) => block.type === \"text\")) {\n\t\t\t\tparts.push(`[Assistant]: ${contentText(msg.content)}`);\n\t\t\t}\n\t\t\tif (toolCalls.length > 0) {\n\t\t\t\tparts.push(`[Assistant tool calls]: ${toolCalls.join(\"; \")}`);\n\t\t\t}\n\t\t} else if (msg.role === \"toolResult\") {\n\t\t\tconst content = contentText(msg.content, \"\");\n\t\t\tif (content) {\n\t\t\t\tparts.push(`[Tool result]: ${truncateForSummary(content, TOOL_RESULT_MAX_CHARS)}`);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn parts.join(\"\\n\\n\");\n}\n\n// ============================================================================\n// Summarization System Prompt\n// ============================================================================\n\nexport const SUMMARIZATION_SYSTEM_PROMPT = `You are a context summarization assistant. Your task is to read a conversation between a user and an AI assistant, then produce a structured summary following the exact format specified.\n\nDo NOT continue the conversation. Do NOT respond to any questions in the conversation. ONLY output the structured summary.`;\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/core/compaction/utils.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"captura.d.ts","sourceRoot":"","sources":["../../../src/core/computer/captura.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAkEH,MAAM,WAAW,gBAAgB;IAChC,6CAA6C;IAC7C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACrC,QAAQ,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACxD,OAAO,CAAC,gBAAgB,CAAC,CAsD3B","sourcesContent":["/**\n * Capturas de pantalla con las herramientas del sistema operativo.\n *\n * Es el CAMINO DE RESERVA. `computer_screenshot` captura primero por el motor,\n * y no por gusto: en macOS la Grabación de pantalla se concede a una\n * aplicación, y el helper del motor ya la tiene. Lo de aquí lo lanzaría nuestro\n * proceso —node, dentro de la Terminal o del escritorio—, que es otra identidad\n * y necesitaría su propio permiso, uno por cada sitio desde el que se use Ada.\n * Comprobado: con el helper autorizado, `screencapture -x` desde node seguía\n * devolviendo \"could not create image from display\".\n *\n * Sigue existiendo porque el motor captura una VENTANA, y a veces hace falta la\n * pantalla entera — y porque en Linux y Windows no hay ese lío de identidades.\n *\n * (El motor ANTERIOR no tenía captura en absoluto: se publicó una tool que\n * invocaba una acción inexistente y devolvía `unsupportedTool(\"screenshot\")`.\n * De ahí viene este fichero.)\n */\n\nimport { spawn } from \"node:child_process\";\nimport { mkdtempSync, readFileSync, rmSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\n\n/** Qué comando captura la pantalla en cada sistema. */\nfunction comandoDeCaptura(plataforma: string, destino: string): Array<{ cmd: string; args: string[] }> {\n\tif (plataforma === \"darwin\") {\n\t\t// `-x` = sin sonido de obturador. Molestar al usuario con un clic cada\n\t\t// vez que el agente mira la pantalla sería insufrible.\n\t\treturn [{ cmd: \"screencapture\", args: [\"-x\", destino] }];\n\t}\n\tif (plataforma === \"win32\") {\n\t\treturn [\n\t\t\t{\n\t\t\t\tcmd: \"powershell\",\n\t\t\t\targs: [\n\t\t\t\t\t\"-NoProfile\",\n\t\t\t\t\t\"-Command\",\n\t\t\t\t\t`Add-Type -AssemblyName System.Windows.Forms,System.Drawing; ` +\n\t\t\t\t\t\t`$b=[System.Windows.Forms.SystemInformation]::VirtualScreen; ` +\n\t\t\t\t\t\t`$i=New-Object System.Drawing.Bitmap $b.Width,$b.Height; ` +\n\t\t\t\t\t\t`$g=[System.Drawing.Graphics]::FromImage($i); ` +\n\t\t\t\t\t\t`$g.CopyFromScreen($b.Location,[System.Drawing.Point]::Empty,$b.Size); ` +\n\t\t\t\t\t\t`$i.Save('${destino.replace(/\\\\/g, \"\\\\\\\\\")}',[System.Drawing.Imaging.ImageFormat]::Png)`,\n\t\t\t\t],\n\t\t\t},\n\t\t];\n\t}\n\t// Linux: se prueban en orden. Wayland primero, porque en una sesión Wayland\n\t// las herramientas de X11 fallan de forma confusa en vez de no existir.\n\treturn [\n\t\t{ cmd: \"grim\", args: [destino] },\n\t\t{ cmd: \"gnome-screenshot\", args: [\"-f\", destino] },\n\t\t{ cmd: \"spectacle\", args: [\"-b\", \"-n\", \"-o\", destino] },\n\t\t{ cmd: \"scrot\", args: [destino] },\n\t\t{ cmd: \"import\", args: [\"-window\", \"root\", destino] },\n\t];\n}\n\nfunction ejecutar(cmd: string, args: string[], timeoutMs: number): Promise<number> {\n\treturn new Promise((resolve) => {\n\t\tlet hijo: ReturnType<typeof spawn>;\n\t\ttry {\n\t\t\thijo = spawn(cmd, args, { stdio: \"ignore\" });\n\t\t} catch {\n\t\t\tresolve(-1);\n\t\t\treturn;\n\t\t}\n\t\tconst reloj = setTimeout(() => {\n\t\t\thijo.kill(\"SIGKILL\");\n\t\t\tresolve(124);\n\t\t}, timeoutMs);\n\t\thijo.on(\"error\", () => {\n\t\t\tclearTimeout(reloj);\n\t\t\tresolve(-1);\n\t\t});\n\t\thijo.on(\"close\", (c) => {\n\t\t\tclearTimeout(reloj);\n\t\t\tresolve(c ?? 0);\n\t\t});\n\t});\n}\n\nexport interface ResultadoCaptura {\n\t/** PNG en base64, o `null` si no se pudo. */\n\timagen: string | null;\n\tmotivo?: string;\n}\n\n/**\n * Captura la pantalla.\n *\n * Devuelve `null` con un motivo legible en vez de lanzar: que no haya una\n * herramienta de captura instalada es un problema del entorno, no un fallo del\n * agente, y merece un mensaje que diga qué instalar.\n */\nexport async function capturarPantalla(\n\topciones: { plataforma?: string; timeoutMs?: number } = {},\n): Promise<ResultadoCaptura> {\n\tconst plataforma = opciones.plataforma ?? process.platform;\n\tconst dir = mkdtempSync(join(tmpdir(), \"ada-captura-\"));\n\tconst destino = join(dir, \"pantalla.png\");\n\tconst intentos = comandoDeCaptura(plataforma, destino);\n\tconst fallidos: string[] = [];\n\n\ttry {\n\t\tfor (const { cmd, args } of intentos) {\n\t\t\tconst code = await ejecutar(cmd, args, opciones.timeoutMs ?? 20_000);\n\t\t\tif (code !== 0) {\n\t\t\t\tfallidos.push(cmd);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst datos = readFileSync(destino);\n\t\t\t\t// Un fichero vacío es un fallo silencioso: algunas herramientas\n\t\t\t\t// salen con 0 sin haber escrito nada cuando no hay display.\n\t\t\t\tif (datos.length === 0) {\n\t\t\t\t\tfallidos.push(`${cmd} (fichero vacío)`);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\treturn { imagen: datos.toString(\"base64\") };\n\t\t\t} catch {\n\t\t\t\tfallidos.push(`${cmd} (sin fichero)`);\n\t\t\t}\n\t\t}\n\t\t// El motivo tiene que decir qué HACER. \"No se pudo capturar (probado:\n\t\t// screencapture)\" es cierto y no sirve de nada: en macOS la causa casi\n\t\t// siempre es el permiso de Grabación de pantalla, y sin nombrarlo el\n\t\t// agente se queda mirando. No se afirma como hecho —no lo hemos\n\t\t// comprobado desde aquí, y este fichero no habla con el motor a\n\t\t// propósito— pero sí se nombra lo primero que hay que mirar.\n\t\tconst queHacer =\n\t\t\tplataforma === \"linux\"\n\t\t\t\t? \"Instala una de estas: grim (Wayland), gnome-screenshot, spectacle, scrot o ImageMagick.\"\n\t\t\t\t: plataforma === \"darwin\"\n\t\t\t\t\t? // OJO: NO mandar aquí a 'ada-cli computer status'. Ese comando informa\n\t\t\t\t\t\t// del permiso del HELPER, que es otra aplicación y suele tenerlo. Diría\n\t\t\t\t\t\t// \"concedida\" contradiciendo este error, que es lo peor que puede hacer\n\t\t\t\t\t\t// un mensaje de ayuda. Quien necesita el permiso aquí es el proceso que\n\t\t\t\t\t\t// ejecuta Ada — la Terminal, o la app de escritorio.\n\t\t\t\t\t\t\"macOS le está negando la Grabación de pantalla al programa desde el que corre Ada (la Terminal, o la app de escritorio); el permiso del motor es aparte y no vale para esto. Concédeselo en Ajustes del Sistema → Privacidad y seguridad → Grabación de pantalla. Normalmente no hace falta: computer_screenshot captura por el motor, que sí lo tiene.\"\n\t\t\t\t\t: \"\";\n\t\treturn {\n\t\t\timagen: null,\n\t\t\tmotivo: `No se pudo capturar la pantalla. ${queHacer} Probado: ${fallidos.join(\", \") || \"nada\"}`.replace(\n\t\t\t\t\" \",\n\t\t\t\t\" \",\n\t\t\t),\n\t\t};\n\t} finally {\n\t\trmSync(dir, { recursive: true, force: true });\n\t}\n}\n"]}
1
+ {"version":3,"file":"captura.d.ts","sourceRoot":"","sources":["../../../src/core/computer/captura.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAkEH,MAAM,WAAW,gBAAgB;IAChC,6CAA6C;IAC7C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACrC,QAAQ,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACxD,OAAO,CAAC,gBAAgB,CAAC,CAsD3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"captura.js","sourceRoot":"","sources":["../../../src/core/computer/captura.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Capturas de pantalla con las herramientas del sistema operativo.\n *\n * Es el CAMINO DE RESERVA. `computer_screenshot` captura primero por el motor,\n * y no por gusto: en macOS la Grabación de pantalla se concede a una\n * aplicación, y el helper del motor ya la tiene. Lo de aquí lo lanzaría nuestro\n * proceso —node, dentro de la Terminal o del escritorio—, que es otra identidad\n * y necesitaría su propio permiso, uno por cada sitio desde el que se use Ada.\n * Comprobado: con el helper autorizado, `screencapture -x` desde node seguía\n * devolviendo \"could not create image from display\".\n *\n * Sigue existiendo porque el motor captura una VENTANA, y a veces hace falta la\n * pantalla entera — y porque en Linux y Windows no hay ese lío de identidades.\n *\n * (El motor ANTERIOR no tenía captura en absoluto: se publicó una tool que\n * invocaba una acción inexistente y devolvía `unsupportedTool(\"screenshot\")`.\n * De ahí viene este fichero.)\n */\n\nimport { spawn } from \"node:child_process\";\nimport { mkdtempSync, readFileSync, rmSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\n\n/** Qué comando captura la pantalla en cada sistema. */\nfunction comandoDeCaptura(plataforma: string, destino: string): Array<{ cmd: string; args: string[] }> {\n\tif (plataforma === \"darwin\") {\n\t\t// `-x` = sin sonido de obturador. Molestar al usuario con un clic cada\n\t\t// vez que el agente mira la pantalla sería insufrible.\n\t\treturn [{ cmd: \"screencapture\", args: [\"-x\", destino] }];\n\t}\n\tif (plataforma === \"win32\") {\n\t\treturn [\n\t\t\t{\n\t\t\t\tcmd: \"powershell\",\n\t\t\t\targs: [\n\t\t\t\t\t\"-NoProfile\",\n\t\t\t\t\t\"-Command\",\n\t\t\t\t\t`Add-Type -AssemblyName System.Windows.Forms,System.Drawing; ` +\n\t\t\t\t\t\t`$b=[System.Windows.Forms.SystemInformation]::VirtualScreen; ` +\n\t\t\t\t\t\t`$i=New-Object System.Drawing.Bitmap $b.Width,$b.Height; ` +\n\t\t\t\t\t\t`$g=[System.Drawing.Graphics]::FromImage($i); ` +\n\t\t\t\t\t\t`$g.CopyFromScreen($b.Location,[System.Drawing.Point]::Empty,$b.Size); ` +\n\t\t\t\t\t\t`$i.Save('${destino.replace(/\\\\/g, \"\\\\\\\\\")}',[System.Drawing.Imaging.ImageFormat]::Png)`,\n\t\t\t\t],\n\t\t\t},\n\t\t];\n\t}\n\t// Linux: se prueban en orden. Wayland primero, porque en una sesión Wayland\n\t// las herramientas de X11 fallan de forma confusa en vez de no existir.\n\treturn [\n\t\t{ cmd: \"grim\", args: [destino] },\n\t\t{ cmd: \"gnome-screenshot\", args: [\"-f\", destino] },\n\t\t{ cmd: \"spectacle\", args: [\"-b\", \"-n\", \"-o\", destino] },\n\t\t{ cmd: \"scrot\", args: [destino] },\n\t\t{ cmd: \"import\", args: [\"-window\", \"root\", destino] },\n\t];\n}\n\nfunction ejecutar(cmd: string, args: string[], timeoutMs: number): Promise<number> {\n\treturn new Promise((resolve) => {\n\t\tlet hijo: ReturnType<typeof spawn>;\n\t\ttry {\n\t\t\thijo = spawn(cmd, args, { stdio: \"ignore\" });\n\t\t} catch {\n\t\t\tresolve(-1);\n\t\t\treturn;\n\t\t}\n\t\tconst reloj = setTimeout(() => {\n\t\t\thijo.kill(\"SIGKILL\");\n\t\t\tresolve(124);\n\t\t}, timeoutMs);\n\t\thijo.on(\"error\", () => {\n\t\t\tclearTimeout(reloj);\n\t\t\tresolve(-1);\n\t\t});\n\t\thijo.on(\"close\", (c) => {\n\t\t\tclearTimeout(reloj);\n\t\t\tresolve(c ?? 0);\n\t\t});\n\t});\n}\n\nexport interface ResultadoCaptura {\n\t/** PNG en base64, o `null` si no se pudo. */\n\timagen: string | null;\n\tmotivo?: string;\n}\n\n/**\n * Captura la pantalla.\n *\n * Devuelve `null` con un motivo legible en vez de lanzar: que no haya una\n * herramienta de captura instalada es un problema del entorno, no un fallo del\n * agente, y merece un mensaje que diga qué instalar.\n */\nexport async function capturarPantalla(\n\topciones: { plataforma?: string; timeoutMs?: number } = {},\n): Promise<ResultadoCaptura> {\n\tconst plataforma = opciones.plataforma ?? process.platform;\n\tconst dir = mkdtempSync(join(tmpdir(), \"ada-captura-\"));\n\tconst destino = join(dir, \"pantalla.png\");\n\tconst intentos = comandoDeCaptura(plataforma, destino);\n\tconst fallidos: string[] = [];\n\n\ttry {\n\t\tfor (const { cmd, args } of intentos) {\n\t\t\tconst code = await ejecutar(cmd, args, opciones.timeoutMs ?? 20_000);\n\t\t\tif (code !== 0) {\n\t\t\t\tfallidos.push(cmd);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst datos = readFileSync(destino);\n\t\t\t\t// Un fichero vacío es un fallo silencioso: algunas herramientas\n\t\t\t\t// salen con 0 sin haber escrito nada cuando no hay display.\n\t\t\t\tif (datos.length === 0) {\n\t\t\t\t\tfallidos.push(`${cmd} (fichero vacío)`);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\treturn { imagen: datos.toString(\"base64\") };\n\t\t\t} catch {\n\t\t\t\tfallidos.push(`${cmd} (sin fichero)`);\n\t\t\t}\n\t\t}\n\t\t// El motivo tiene que decir qué HACER. \"No se pudo capturar (probado:\n\t\t// screencapture)\" es cierto y no sirve de nada: en macOS la causa casi\n\t\t// siempre es el permiso de Grabación de pantalla, y sin nombrarlo el\n\t\t// agente se queda mirando. No se afirma como hecho —no lo hemos\n\t\t// comprobado desde aquí, y este fichero no habla con el motor a\n\t\t// propósito— pero sí se nombra lo primero que hay que mirar.\n\t\tconst queHacer =\n\t\t\tplataforma === \"linux\"\n\t\t\t\t? \"Instala una de estas: grim (Wayland), gnome-screenshot, spectacle, scrot o ImageMagick.\"\n\t\t\t\t: plataforma === \"darwin\"\n\t\t\t\t\t? // OJO: NO mandar aquí a 'ada-cli computer status'. Ese comando informa\n\t\t\t\t\t\t// del permiso del HELPER, que es otra aplicación y suele tenerlo. Diría\n\t\t\t\t\t\t// \"concedida\" contradiciendo este error, que es lo peor que puede hacer\n\t\t\t\t\t\t// un mensaje de ayuda. Quien necesita el permiso aquí es el proceso que\n\t\t\t\t\t\t// ejecuta Ada — la Terminal, o la app de escritorio.\n\t\t\t\t\t\t\"macOS le está negando la Grabación de pantalla al programa desde el que corre Ada (la Terminal, o la app de escritorio); el permiso del motor es aparte y no vale para esto. Concédeselo en Ajustes del Sistema → Privacidad y seguridad → Grabación de pantalla. Normalmente no hace falta: computer_screenshot captura por el motor, que sí lo tiene.\"\n\t\t\t\t\t: \"\";\n\t\treturn {\n\t\t\timagen: null,\n\t\t\tmotivo: `No se pudo capturar la pantalla. ${queHacer} Probado: ${fallidos.join(\", \") || \"nada\"}`.replace(\n\t\t\t\t\" \",\n\t\t\t\t\" \",\n\t\t\t),\n\t\t};\n\t} finally {\n\t\trmSync(dir, { recursive: true, force: true });\n\t}\n}\n"]}
1
+ {"version":3,"file":"captura.js","sourceRoot":"","sources":["../../../src/core/computer/captura.ts"],"names":[],"mappings":"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"}
@@ -1 +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"]}
1
+ {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../../src/core/computer/driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,uEAAuE;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"}
@@ -1 +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"]}
1
+ {"version":3,"file":"driver.js","sourceRoot":"","sources":["../../../src/core/computer/driver.ts"],"names":[],"mappings":"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"}
@@ -1 +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"]}
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../../src/core/computer/motor/actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,MAAM,YAAY,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAE5G,MAAM,MAAM,cAAc,GACvB;IACA,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;IAC1B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,eAAe,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,KAAK,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;CACxB,GACD;IACA,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzB,gBAAgB,EAAE,KAAK,CAAC;IACxB,gBAAgB,EAAE,KAAK,CAAC;IACxB,eAAe,EAAE,KAAK,CAAC;CACtB,GACD;IACA,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzB,gBAAgB,EAAE,KAAK,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,KAAK,CAAC;CACtB,GACD;IACA,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC3B,gBAAgB,EAAE,KAAK,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,KAAK,CAAC;CACtB,GACD;IACA,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,gBAAgB,EAAE,KAAK,CAAC;IACxB,gBAAgB,EAAE,KAAK,CAAC;IACxB,eAAe,EAAE,KAAK,CAAC;CACtB,GACD;IACA,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE;QAAE,IAAI,EAAE,KAAK,CAAC;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IAClD,gBAAgB,EAAE,KAAK,CAAC;IACxB,gBAAgB,EAAE,KAAK,CAAC;IACxB,eAAe,EAAE,KAAK,CAAC;CACtB,GACD;IACA,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9B,gBAAgB,EAAE,KAAK,CAAC;IACxB,gBAAgB,EAAE,KAAK,CAAC;IACxB,eAAe,EAAE,KAAK,CAAC;CACtB,GACD;IACA,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACvB,gBAAgB,EAAE,KAAK,CAAC;IACxB,gBAAgB,EAAE,KAAK,CAAC;IACxB,eAAe,EAAE,KAAK,CAAC;CACtB,CAAC;AAEL,MAAM,WAAW,WAAW;IAC3B,YAAY,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;IAC/B,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1D;AAwED,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,iBAAiB,GAAG,cAAc,CA8E1G;AAED,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,EACvC,QAAQ,EAAE,OAAO,GACf,OAAO,CAET;AAED,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,EACvC,KAAK,EAAE,UAAU,GAAG,aAAa,GAAG,QAAQ,GAC1C,QAAQ,GAAG,OAAO,GAAG,SAAS,CAIhC;AAED,wBAAgB,0BAA0B,CACzC,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,EACvC,OAAO,EAAE,QAAQ,EAAE,EACnB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAC9C,QAAQ,GAAG,OAAO,GAAG,SAAS,CAIhC"}
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../../src/core/computer/motor/actions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAiFtD,SAAS,WAAW,CAAC,KAAc,EAAmB;IACrD,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;AAAA,CAChE;AAED,SAAS,UAAU,CAAC,KAAc,EAAE,QAAQ,GAAG,CAAC,EAAU;IACzD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,CAC7E;AAED,SAAS,WAAW,CAAC,KAAc,EAAU;IAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,CACjF;AAED,SAAS,IAAI,CAAC,KAAc,EAAY;IACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACjH,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,CACvC;AAED,SAAS,IAAI,CAAC,KAAuB,EAAE,GAAsB,EAAmC;IAC/F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC9G,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/F,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/F,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;QACnD,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAAA,CAChB,CAAC,CAAC;AAAA,CACH;AAED,SAAS,YAAY,CAAC,MAAgB,EAAE,SAAmC,EAAE,GAAsB,EAAgB;IAClH,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,OAAO,CAAC;QACrE,IAAI,aAAa,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC/B,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YACpC,OAAO,KAAK,CAAC;QACd,CAAC;QACD,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAC/C,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,YAAY,IAAI,SAAS,KAAK,mBAAmB,CAC9E,CAAC;QACF,IACC,IAAI,CAAC,OAAO;YACZ,CAAC,IAAI,CAAC,WAAW;YACjB,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,qBAAqB,CAAC,EAC/F,CAAC;YACF,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC;QACD,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxB,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACjB,CAAC;IACD,IAAI,SAAS,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,uCAAuC,CAAC,CAAC;AAAA,CACrE;AAED,SAAS,aAAa,CAAC,GAAsB,EAAgB;IAC5D,IAAI,CAAC,GAAG,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC3F,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AAAA,CAC9F;AAED,SAAS,gBAAgB,CAAC,IAAiB,EAAW;IACrD,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9E,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAAA,CAC5C;AAED,MAAM,UAAU,aAAa,CAAC,MAAgB,EAAE,KAAkB,EAAE,GAAsB,EAAkB;IAC3G,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;IAChC,MAAM,gBAAgB,GACrB,CAAC,GAAG,CAAC,QAAQ,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,KAAK,UAAU,IAAI,SAAS,KAAK,UAAU,CAAC,CAAC;IAC9G,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IAC5F,MAAM,gBAAgB,GACrB,CAAC,GAAG,CAAC,QAAQ;QACb,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;QACnB,CAAC,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,OAAO,CAAC;QAChD,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,CAAC,CAAC;IACzC,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC;IAE3G,QAAQ,SAAS,EAAE,CAAC;QACnB,KAAK,OAAO,CAAC;QACb,KAAK,OAAO;YACX,OAAO;gBACN,MAAM,EAAE,SAAS;gBACjB,MAAM;gBACN,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;gBACzF,gBAAgB;gBAChB,gBAAgB,EAAE,KAAK;gBACvB,eAAe;aACf,CAAC;QACH,KAAK,SAAS;YACb,OAAO;gBACN,MAAM,EAAE,SAAS;gBACjB,MAAM;gBACN,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE;gBACnC,gBAAgB,EAAE,KAAK;gBACvB,gBAAgB,EAAE,KAAK;gBACvB,eAAe,EAAE,KAAK;aACtB,CAAC;QACH,KAAK,UAAU;YACd,OAAO;gBACN,MAAM,EAAE,SAAS;gBACjB,MAAM;gBACN,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE;gBACnC,gBAAgB,EAAE,KAAK;gBACvB,gBAAgB;gBAChB,eAAe,EAAE,KAAK;aACtB,CAAC;QACH,KAAK,UAAU;YACd,OAAO;gBACN,MAAM,EAAE,SAAS;gBACjB,MAAM;gBACN,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACnC,gBAAgB,EAAE,KAAK;gBACvB,gBAAgB;gBAChB,eAAe,EAAE,KAAK;aACtB,CAAC;QACH,KAAK,QAAQ;YACZ,OAAO;gBACN,MAAM,EAAE,SAAS;gBACjB,MAAM;gBACN,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBACtF,gBAAgB,EAAE,KAAK;gBACvB,gBAAgB,EAAE,KAAK;gBACvB,eAAe,EAAE,KAAK;aACtB,CAAC;QACH,KAAK,MAAM;YACV,OAAO;gBACN,MAAM,EAAE,SAAS;gBACjB,MAAM;gBACN,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;gBACxC,gBAAgB,EAAE,KAAK;gBACvB,gBAAgB,EAAE,KAAK;gBACvB,eAAe,EAAE,KAAK;aACtB,CAAC;QACH,KAAK,WAAW;YACf,OAAO;gBACN,MAAM,EAAE,SAAS;gBACjB,MAAM;gBACN,MAAM,EAAE,EAAE;gBACV,gBAAgB,EAAE,KAAK;gBACvB,gBAAgB,EAAE,KAAK;gBACvB,eAAe,EAAE,KAAK;aACtB,CAAC;IACJ,CAAC;AAAA,CACD;AAED,MAAM,UAAU,oBAAoB,CACnC,MAAsB,EACtB,OAAuC,EACvC,QAAiB,EACP;IACV,OAAO,CAAC,QAAQ,IAAI,OAAO,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;AAAA,CAC1G;AAED,MAAM,UAAU,iBAAiB,CAChC,OAAuC,EACvC,KAA4C,EACX;IACjC,IAAI,KAAK,KAAK,UAAU;QAAE,OAAO,QAAQ,CAAC;IAC1C,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IACvC,OAAO,OAAO,CAAC;AAAA,CACf;AAED,MAAM,UAAU,0BAA0B,CACzC,OAAuC,EACvC,OAAmB,EACnB,WAAgD,EACf;IACjC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IACjH,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,GAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5F,OAAO,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;AAAA,CACpC","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"]}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../../src/core/computer/motor/actions.ts"],"names":[],"mappings":"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"}
@@ -220,11 +220,11 @@ export declare function ensureComputerUseSetup(ctx: ExtensionContext, signal?: A
220
220
  export declare const executeFind: (_toolCallId: string, params: FindParams, signal: AbortSignal | undefined, _onUpdate: AgentToolUpdateCallback<ListWindowsDetails> | undefined, ctx: ExtensionContext) => Promise<AgentToolResult<ListWindowsDetails>>;
221
221
  export declare const executeReadText: (_toolCallId: string, params: ReadTextParams, signal: AbortSignal | undefined, _onUpdate: AgentToolUpdateCallback<ReadTextDetails> | undefined, ctx: ExtensionContext) => Promise<AgentToolResult<ReadTextDetails>>;
222
222
  export declare const executeWaitFor: (_toolCallId: string, params: WaitForParams, signal: AbortSignal | undefined, _onUpdate: AgentToolUpdateCallback<WaitForDetails> | undefined, ctx: ExtensionContext) => Promise<AgentToolResult<WaitForDetails>>;
223
- export declare const executeObserve: (_toolCallId: string, params: ObserveParams, signal: AbortSignal | undefined, _onUpdate: AgentToolUpdateCallback<BrowserObservationDetails | ComputerUseDetails> | undefined, ctx: ExtensionContext) => Promise<AgentToolResult<BrowserObservationDetails | ComputerUseDetails>>;
223
+ export declare const executeObserve: (_toolCallId: string, params: ObserveParams, signal: AbortSignal | undefined, _onUpdate: AgentToolUpdateCallback<ComputerUseDetails | BrowserObservationDetails> | undefined, ctx: ExtensionContext) => Promise<AgentToolResult<ComputerUseDetails | BrowserObservationDetails>>;
224
224
  export declare const executeSearchUi: (_toolCallId: string, params: SearchUiParams, signal: AbortSignal | undefined, _onUpdate: AgentToolUpdateCallback<OutlineToolDetails> | undefined, ctx: ExtensionContext) => Promise<AgentToolResult<OutlineToolDetails>>;
225
225
  export declare const executeExpandUi: (_toolCallId: string, params: ExpandUiParams, signal: AbortSignal | undefined, _onUpdate: AgentToolUpdateCallback<OutlineToolDetails> | undefined, ctx: ExtensionContext) => Promise<AgentToolResult<OutlineToolDetails>>;
226
226
  export declare const executeInspectUi: (_toolCallId: string, params: InspectUiParams, signal: AbortSignal | undefined, _onUpdate: AgentToolUpdateCallback<OutlineToolDetails> | undefined, ctx: ExtensionContext) => Promise<AgentToolResult<OutlineToolDetails>>;
227
- export declare const executeAct: (_toolCallId: string, params: ActParams, signal: AbortSignal | undefined, _onUpdate: AgentToolUpdateCallback<BrowserObservationDetails | ComputerUseDetails | TerminalDesktopActionDetails> | undefined, ctx: ExtensionContext) => Promise<AgentToolResult<BrowserObservationDetails | ComputerUseDetails | TerminalDesktopActionDetails>>;
227
+ export declare const executeAct: (_toolCallId: string, params: ActParams, signal: AbortSignal | undefined, _onUpdate: AgentToolUpdateCallback<ComputerUseDetails | TerminalDesktopActionDetails | BrowserObservationDetails> | undefined, ctx: ExtensionContext) => Promise<AgentToolResult<ComputerUseDetails | TerminalDesktopActionDetails | BrowserObservationDetails>>;
228
228
  export declare const executeNavigateBrowser: (_toolCallId: string, params: NavigateBrowserParams, signal: AbortSignal | undefined, _onUpdate: AgentToolUpdateCallback<BrowserObservationDetails> | undefined, ctx: ExtensionContext) => Promise<AgentToolResult<BrowserObservationDetails>>;
229
229
  export declare const executeEvaluateBrowser: (_toolCallId: string, params: EvaluateBrowserParams, signal: AbortSignal | undefined, _onUpdate: AgentToolUpdateCallback<EvaluateBrowserDetails> | undefined, ctx: ExtensionContext) => Promise<AgentToolResult<EvaluateBrowserDetails>>;
230
230
  export declare const executeLaunchBrowser: (_toolCallId: string, params: LaunchBrowserParams, signal: AbortSignal | undefined, _onUpdate: AgentToolUpdateCallback<BrowserObservationDetails> | undefined, ctx: ExtensionContext) => Promise<AgentToolResult<BrowserObservationDetails>>;