@hoilab/ada-cli 0.84.21 → 0.85.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1337) hide show
  1. package/CHANGELOG.md +49 -2
  2. package/README.es.md +174 -0
  3. package/README.md +203 -658
  4. package/dist/ada-publico.d.ts +35 -0
  5. package/dist/ada-publico.d.ts.map +1 -0
  6. package/dist/ada-publico.js +40 -0
  7. package/dist/ada-publico.js.map +1 -0
  8. package/dist/cli/args.d.ts +3 -0
  9. package/dist/cli/args.d.ts.map +1 -1
  10. package/dist/cli/args.js +11 -0
  11. package/dist/cli/args.js.map +1 -1
  12. package/dist/cli/audit-command.d.ts +15 -0
  13. package/dist/cli/audit-command.d.ts.map +1 -0
  14. package/dist/cli/audit-command.js +280 -0
  15. package/dist/cli/audit-command.js.map +1 -0
  16. package/dist/cli/banco-command.d.ts +15 -0
  17. package/dist/cli/banco-command.d.ts.map +1 -0
  18. package/dist/cli/banco-command.js +213 -0
  19. package/dist/cli/banco-command.js.map +1 -0
  20. package/dist/cli/cleanse-command.d.ts +11 -0
  21. package/dist/cli/cleanse-command.d.ts.map +1 -0
  22. package/dist/cli/cleanse-command.js +101 -0
  23. package/dist/cli/cleanse-command.js.map +1 -0
  24. package/dist/cli/commit-command.d.ts +31 -0
  25. package/dist/cli/commit-command.d.ts.map +1 -0
  26. package/dist/cli/commit-command.js +158 -0
  27. package/dist/cli/commit-command.js.map +1 -0
  28. package/dist/cli/computer-command.d.ts +12 -0
  29. package/dist/cli/computer-command.d.ts.map +1 -0
  30. package/dist/cli/computer-command.js +141 -0
  31. package/dist/cli/computer-command.js.map +1 -0
  32. package/dist/cli/discover-command.d.ts +18 -0
  33. package/dist/cli/discover-command.d.ts.map +1 -0
  34. package/dist/cli/discover-command.js +108 -0
  35. package/dist/cli/discover-command.js.map +1 -0
  36. package/dist/cli/file-processor.d.ts.map +1 -1
  37. package/dist/cli/file-processor.js +2 -1
  38. package/dist/cli/file-processor.js.map +1 -1
  39. package/dist/cli/hashline-command.d.ts +11 -0
  40. package/dist/cli/hashline-command.d.ts.map +1 -0
  41. package/dist/cli/hashline-command.js +106 -0
  42. package/dist/cli/hashline-command.js.map +1 -0
  43. package/dist/cli/home-screen.d.ts.map +1 -1
  44. package/dist/cli/home-screen.js +2 -2
  45. package/dist/cli/home-screen.js.map +1 -1
  46. package/dist/cli/import-command.d.ts +35 -0
  47. package/dist/cli/import-command.d.ts.map +1 -0
  48. package/dist/cli/import-command.js +164 -0
  49. package/dist/cli/import-command.js.map +1 -0
  50. package/dist/cli/politica-command.d.ts +20 -0
  51. package/dist/cli/politica-command.d.ts.map +1 -0
  52. package/dist/cli/politica-command.js +93 -0
  53. package/dist/cli/politica-command.js.map +1 -0
  54. package/dist/cli/refine-command.d.ts +18 -0
  55. package/dist/cli/refine-command.d.ts.map +1 -0
  56. package/dist/cli/refine-command.js +101 -0
  57. package/dist/cli/refine-command.js.map +1 -0
  58. package/dist/cli/review-command.d.ts +24 -0
  59. package/dist/cli/review-command.d.ts.map +1 -0
  60. package/dist/cli/review-command.js +168 -0
  61. package/dist/cli/review-command.js.map +1 -0
  62. package/dist/cli/schedule-command.d.ts +17 -0
  63. package/dist/cli/schedule-command.d.ts.map +1 -0
  64. package/dist/cli/schedule-command.js +117 -0
  65. package/dist/cli/schedule-command.js.map +1 -0
  66. package/dist/cli/serve-command.d.ts +72 -0
  67. package/dist/cli/serve-command.d.ts.map +1 -0
  68. package/dist/cli/serve-command.js +568 -0
  69. package/dist/cli/serve-command.js.map +1 -0
  70. package/dist/cli/startup-ui.d.ts.map +1 -1
  71. package/dist/cli/startup-ui.js +9 -3
  72. package/dist/cli/startup-ui.js.map +1 -1
  73. package/dist/cli/telegram-command.d.ts +18 -0
  74. package/dist/cli/telegram-command.d.ts.map +1 -0
  75. package/dist/cli/telegram-command.js +137 -0
  76. package/dist/cli/telegram-command.js.map +1 -0
  77. package/dist/cli/telemetria-command.d.ts +22 -0
  78. package/dist/cli/telemetria-command.d.ts.map +1 -0
  79. package/dist/cli/telemetria-command.js +127 -0
  80. package/dist/cli/telemetria-command.js.map +1 -0
  81. package/dist/cli/undo-command.d.ts +9 -0
  82. package/dist/cli/undo-command.d.ts.map +1 -0
  83. package/dist/cli/undo-command.js +56 -0
  84. package/dist/cli/undo-command.js.map +1 -0
  85. package/dist/cli/usage-command.d.ts +10 -0
  86. package/dist/cli/usage-command.d.ts.map +1 -0
  87. package/dist/cli/usage-command.js +209 -0
  88. package/dist/cli/usage-command.js.map +1 -0
  89. package/dist/cli/wiki-command.d.ts +9 -0
  90. package/dist/cli/wiki-command.d.ts.map +1 -0
  91. package/dist/cli/wiki-command.js +76 -0
  92. package/dist/cli/wiki-command.js.map +1 -0
  93. package/dist/cli.d.ts +6 -0
  94. package/dist/cli.d.ts.map +1 -1
  95. package/dist/cli.js +10 -11
  96. package/dist/cli.js.map +1 -1
  97. package/dist/config.d.ts +1 -1
  98. package/dist/config.d.ts.map +1 -1
  99. package/dist/config.js +3 -2
  100. package/dist/config.js.map +1 -1
  101. package/dist/core/ada.d.ts +58 -0
  102. package/dist/core/ada.d.ts.map +1 -0
  103. package/dist/core/ada.js +61 -0
  104. package/dist/core/ada.js.map +1 -0
  105. package/dist/core/advisor/guarda.d.ts +66 -0
  106. package/dist/core/advisor/guarda.d.ts.map +1 -0
  107. package/dist/core/advisor/guarda.js +191 -0
  108. package/dist/core/advisor/guarda.js.map +1 -0
  109. package/dist/core/advisor/runtime.d.ts +66 -0
  110. package/dist/core/advisor/runtime.d.ts.map +1 -0
  111. package/dist/core/advisor/runtime.js +121 -0
  112. package/dist/core/advisor/runtime.js.map +1 -0
  113. package/dist/core/advisor/sesion.d.ts +109 -0
  114. package/dist/core/advisor/sesion.d.ts.map +1 -0
  115. package/dist/core/advisor/sesion.js +139 -0
  116. package/dist/core/advisor/sesion.js.map +1 -0
  117. package/dist/core/agent-session.d.ts +85 -7
  118. package/dist/core/agent-session.d.ts.map +1 -1
  119. package/dist/core/agent-session.js +862 -78
  120. package/dist/core/agent-session.js.map +1 -1
  121. package/dist/core/agents/loader.d.ts +77 -0
  122. package/dist/core/agents/loader.d.ts.map +1 -0
  123. package/dist/core/agents/loader.js +154 -0
  124. package/dist/core/agents/loader.js.map +1 -0
  125. package/dist/core/aprobacion/generados.d.ts +37 -0
  126. package/dist/core/aprobacion/generados.d.ts.map +1 -0
  127. package/dist/core/aprobacion/generados.js +85 -0
  128. package/dist/core/aprobacion/generados.js.map +1 -0
  129. package/dist/core/aprobacion/politica-de-maquina.d.ts +90 -0
  130. package/dist/core/aprobacion/politica-de-maquina.d.ts.map +1 -0
  131. package/dist/core/aprobacion/politica-de-maquina.js +212 -0
  132. package/dist/core/aprobacion/politica-de-maquina.js.map +1 -0
  133. package/dist/core/aprobacion/politica.d.ts +90 -0
  134. package/dist/core/aprobacion/politica.d.ts.map +1 -0
  135. package/dist/core/aprobacion/politica.js +375 -0
  136. package/dist/core/aprobacion/politica.js.map +1 -0
  137. package/dist/core/arranque/atajos.d.ts +46 -0
  138. package/dist/core/arranque/atajos.d.ts.map +1 -0
  139. package/dist/core/arranque/atajos.js +113 -0
  140. package/dist/core/arranque/atajos.js.map +1 -0
  141. package/dist/core/audit/exportacion.d.ts +54 -0
  142. package/dist/core/audit/exportacion.d.ts.map +1 -0
  143. package/dist/core/audit/exportacion.js +265 -0
  144. package/dist/core/audit/exportacion.js.map +1 -0
  145. package/dist/core/audit/libro.d.ts +318 -0
  146. package/dist/core/audit/libro.d.ts.map +1 -0
  147. package/dist/core/audit/libro.js +508 -0
  148. package/dist/core/audit/libro.js.map +1 -0
  149. package/dist/core/audit/registro-sesion.d.ts +78 -0
  150. package/dist/core/audit/registro-sesion.d.ts.map +1 -0
  151. package/dist/core/audit/registro-sesion.js +202 -0
  152. package/dist/core/audit/registro-sesion.js.map +1 -0
  153. package/dist/core/audit/retencion.d.ts +82 -0
  154. package/dist/core/audit/retencion.d.ts.map +1 -0
  155. package/dist/core/audit/retencion.js +152 -0
  156. package/dist/core/audit/retencion.js.map +1 -0
  157. package/dist/core/audit/rutas.d.ts +23 -0
  158. package/dist/core/audit/rutas.d.ts.map +1 -0
  159. package/dist/core/audit/rutas.js +23 -0
  160. package/dist/core/audit/rutas.js.map +1 -0
  161. package/dist/core/auth-storage.d.ts +0 -3
  162. package/dist/core/auth-storage.d.ts.map +1 -1
  163. package/dist/core/auth-storage.js +21 -8
  164. package/dist/core/auth-storage.js.map +1 -1
  165. package/dist/core/banco/almacenamiento.d.ts +18 -0
  166. package/dist/core/banco/almacenamiento.d.ts.map +1 -0
  167. package/dist/core/banco/almacenamiento.js +50 -0
  168. package/dist/core/banco/almacenamiento.js.map +1 -0
  169. package/dist/core/banco/analisis.d.ts +37 -0
  170. package/dist/core/banco/analisis.d.ts.map +1 -0
  171. package/dist/core/banco/analisis.js +164 -0
  172. package/dist/core/banco/analisis.js.map +1 -0
  173. package/dist/core/banco/bloques.d.ts +39 -0
  174. package/dist/core/banco/bloques.d.ts.map +1 -0
  175. package/dist/core/banco/bloques.js +84 -0
  176. package/dist/core/banco/bloques.js.map +1 -0
  177. package/dist/core/banco/cargas.d.ts +84 -0
  178. package/dist/core/banco/cargas.d.ts.map +1 -0
  179. package/dist/core/banco/cargas.js +520 -0
  180. package/dist/core/banco/cargas.js.map +1 -0
  181. package/dist/core/banco/comparar.d.ts +29 -0
  182. package/dist/core/banco/comparar.d.ts.map +1 -0
  183. package/dist/core/banco/comparar.js +28 -0
  184. package/dist/core/banco/comparar.js.map +1 -0
  185. package/dist/core/banco/ejecutar.d.ts +44 -0
  186. package/dist/core/banco/ejecutar.d.ts.map +1 -0
  187. package/dist/core/banco/ejecutar.js +183 -0
  188. package/dist/core/banco/ejecutar.js.map +1 -0
  189. package/dist/core/banco/generar.d.ts +24 -0
  190. package/dist/core/banco/generar.d.ts.map +1 -0
  191. package/dist/core/banco/generar.js +159 -0
  192. package/dist/core/banco/generar.js.map +1 -0
  193. package/dist/core/banco/mutaciones.d.ts +25 -0
  194. package/dist/core/banco/mutaciones.d.ts.map +1 -0
  195. package/dist/core/banco/mutaciones.js +215 -0
  196. package/dist/core/banco/mutaciones.js.map +1 -0
  197. package/dist/core/banco/tipos.d.ts +121 -0
  198. package/dist/core/banco/tipos.d.ts.map +1 -0
  199. package/dist/core/banco/tipos.js +16 -0
  200. package/dist/core/banco/tipos.js.map +1 -0
  201. package/dist/core/blobs/almacen.d.ts +81 -0
  202. package/dist/core/blobs/almacen.d.ts.map +1 -0
  203. package/dist/core/blobs/almacen.js +198 -0
  204. package/dist/core/blobs/almacen.js.map +1 -0
  205. package/dist/core/blobs/broker.d.ts +103 -0
  206. package/dist/core/blobs/broker.d.ts.map +1 -0
  207. package/dist/core/blobs/broker.js +204 -0
  208. package/dist/core/blobs/broker.js.map +1 -0
  209. package/dist/core/blobs/index.d.ts +70 -0
  210. package/dist/core/blobs/index.d.ts.map +1 -0
  211. package/dist/core/blobs/index.js +232 -0
  212. package/dist/core/blobs/index.js.map +1 -0
  213. package/dist/core/blobs/payload.d.ts +55 -0
  214. package/dist/core/blobs/payload.d.ts.map +1 -0
  215. package/dist/core/blobs/payload.js +255 -0
  216. package/dist/core/blobs/payload.js.map +1 -0
  217. package/dist/core/blobs/proveedor.d.ts +85 -0
  218. package/dist/core/blobs/proveedor.d.ts.map +1 -0
  219. package/dist/core/blobs/proveedor.js +196 -0
  220. package/dist/core/blobs/proveedor.js.map +1 -0
  221. package/dist/core/browser/cdp.d.ts +41 -0
  222. package/dist/core/browser/cdp.d.ts.map +1 -0
  223. package/dist/core/browser/cdp.js +119 -0
  224. package/dist/core/browser/cdp.js.map +1 -0
  225. package/dist/core/browser/politica.d.ts +51 -0
  226. package/dist/core/browser/politica.d.ts.map +1 -0
  227. package/dist/core/browser/politica.js +123 -0
  228. package/dist/core/browser/politica.js.map +1 -0
  229. package/dist/core/browser/sesion.d.ts +52 -0
  230. package/dist/core/browser/sesion.d.ts.map +1 -0
  231. package/dist/core/browser/sesion.js +176 -0
  232. package/dist/core/browser/sesion.js.map +1 -0
  233. package/dist/core/browser/tools.d.ts +16 -0
  234. package/dist/core/browser/tools.d.ts.map +1 -0
  235. package/dist/core/browser/tools.js +279 -0
  236. package/dist/core/browser/tools.js.map +1 -0
  237. package/dist/core/commit/diff.d.ts +56 -0
  238. package/dist/core/commit/diff.d.ts.map +1 -0
  239. package/dist/core/commit/diff.js +145 -0
  240. package/dist/core/commit/diff.js.map +1 -0
  241. package/dist/core/commit/mensaje.d.ts +80 -0
  242. package/dist/core/commit/mensaje.d.ts.map +1 -0
  243. package/dist/core/commit/mensaje.js +207 -0
  244. package/dist/core/commit/mensaje.js.map +1 -0
  245. package/dist/core/compactar/index.d.ts +52 -0
  246. package/dist/core/compactar/index.d.ts.map +1 -0
  247. package/dist/core/compactar/index.js +91 -0
  248. package/dist/core/compactar/index.js.map +1 -0
  249. package/dist/core/compactar/registro-denso.d.ts +160 -0
  250. package/dist/core/compactar/registro-denso.d.ts.map +1 -0
  251. package/dist/core/compactar/registro-denso.js +620 -0
  252. package/dist/core/compactar/registro-denso.js.map +1 -0
  253. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  254. package/dist/core/compaction/branch-summarization.js +3 -0
  255. package/dist/core/compaction/branch-summarization.js.map +1 -1
  256. package/dist/core/compaction/compaction.d.ts +4 -3
  257. package/dist/core/compaction/compaction.d.ts.map +1 -1
  258. package/dist/core/compaction/compaction.js +41 -32
  259. package/dist/core/compaction/compaction.js.map +1 -1
  260. package/dist/core/computer/captura.d.ts +35 -0
  261. package/dist/core/computer/captura.d.ts.map +1 -0
  262. package/dist/core/computer/captura.js +140 -0
  263. package/dist/core/computer/captura.js.map +1 -0
  264. package/dist/core/computer/driver.d.ts +130 -0
  265. package/dist/core/computer/driver.d.ts.map +1 -0
  266. package/dist/core/computer/driver.js +206 -0
  267. package/dist/core/computer/driver.js.map +1 -0
  268. package/dist/core/computer/motor/actions.d.ts +109 -0
  269. package/dist/core/computer/motor/actions.d.ts.map +1 -0
  270. package/dist/core/computer/motor/actions.js +157 -0
  271. package/dist/core/computer/motor/actions.js.map +1 -0
  272. package/dist/core/computer/motor/bridge.d.ts +232 -0
  273. package/dist/core/computer/motor/bridge.d.ts.map +1 -0
  274. package/dist/core/computer/motor/bridge.js +2335 -0
  275. package/dist/core/computer/motor/bridge.js.map +1 -0
  276. package/dist/core/computer/motor/cdp.d.ts +107 -0
  277. package/dist/core/computer/motor/cdp.d.ts.map +1 -0
  278. package/dist/core/computer/motor/cdp.js +659 -0
  279. package/dist/core/computer/motor/cdp.js.map +1 -0
  280. package/dist/core/computer/motor/config.d.ts +23 -0
  281. package/dist/core/computer/motor/config.d.ts.map +1 -0
  282. package/dist/core/computer/motor/config.js +100 -0
  283. package/dist/core/computer/motor/config.js.map +1 -0
  284. package/dist/core/computer/motor/contract.d.ts +81 -0
  285. package/dist/core/computer/motor/contract.d.ts.map +1 -0
  286. package/dist/core/computer/motor/contract.js +14 -0
  287. package/dist/core/computer/motor/contract.js.map +1 -0
  288. package/dist/core/computer/motor/note.d.ts +37 -0
  289. package/dist/core/computer/motor/note.d.ts.map +1 -0
  290. package/dist/core/computer/motor/note.js +162 -0
  291. package/dist/core/computer/motor/note.js.map +1 -0
  292. package/dist/core/computer/motor/outline.d.ts +155 -0
  293. package/dist/core/computer/motor/outline.d.ts.map +1 -0
  294. package/dist/core/computer/motor/outline.js +590 -0
  295. package/dist/core/computer/motor/outline.js.map +1 -0
  296. package/dist/core/computer/motor/output.d.ts +18 -0
  297. package/dist/core/computer/motor/output.d.ts.map +1 -0
  298. package/dist/core/computer/motor/output.js +148 -0
  299. package/dist/core/computer/motor/output.js.map +1 -0
  300. package/dist/core/computer/motor/permissions.d.ts +41 -0
  301. package/dist/core/computer/motor/permissions.d.ts.map +1 -0
  302. package/dist/core/computer/motor/permissions.js +51 -0
  303. package/dist/core/computer/motor/permissions.js.map +1 -0
  304. package/dist/core/computer/motor/platform/architecture.d.ts +5 -0
  305. package/dist/core/computer/motor/platform/architecture.d.ts.map +1 -0
  306. package/dist/core/computer/motor/platform/architecture.js +21 -0
  307. package/dist/core/computer/motor/platform/architecture.js.map +1 -0
  308. package/dist/core/computer/motor/platform/coerce.d.ts +4 -0
  309. package/dist/core/computer/motor/platform/coerce.d.ts.map +1 -0
  310. package/dist/core/computer/motor/platform/coerce.js +17 -0
  311. package/dist/core/computer/motor/platform/coerce.js.map +1 -0
  312. package/dist/core/computer/motor/platform/index.d.ts +4 -0
  313. package/dist/core/computer/motor/platform/index.d.ts.map +1 -0
  314. package/dist/core/computer/motor/platform/index.js +79 -0
  315. package/dist/core/computer/motor/platform/index.js.map +1 -0
  316. package/dist/core/computer/motor/platform/linux/backend.d.ts +3 -0
  317. package/dist/core/computer/motor/platform/linux/backend.d.ts.map +1 -0
  318. package/dist/core/computer/motor/platform/linux/backend.js +173 -0
  319. package/dist/core/computer/motor/platform/linux/backend.js.map +1 -0
  320. package/dist/core/computer/motor/platform/linux/helper.d.ts +29 -0
  321. package/dist/core/computer/motor/platform/linux/helper.d.ts.map +1 -0
  322. package/dist/core/computer/motor/platform/linux/helper.js +261 -0
  323. package/dist/core/computer/motor/platform/linux/helper.js.map +1 -0
  324. package/dist/core/computer/motor/platform/macos/backend.d.ts +3 -0
  325. package/dist/core/computer/motor/platform/macos/backend.d.ts.map +1 -0
  326. package/dist/core/computer/motor/platform/macos/backend.js +124 -0
  327. package/dist/core/computer/motor/platform/macos/backend.js.map +1 -0
  328. package/dist/core/computer/motor/platform/macos/browser.d.ts +7 -0
  329. package/dist/core/computer/motor/platform/macos/browser.d.ts.map +1 -0
  330. package/dist/core/computer/motor/platform/macos/browser.js +101 -0
  331. package/dist/core/computer/motor/platform/macos/browser.js.map +1 -0
  332. package/dist/core/computer/motor/platform/macos/helper-path.mjs +34 -0
  333. package/dist/core/computer/motor/platform/macos/helper.d.ts +32 -0
  334. package/dist/core/computer/motor/platform/macos/helper.d.ts.map +1 -0
  335. package/dist/core/computer/motor/platform/macos/helper.js +277 -0
  336. package/dist/core/computer/motor/platform/macos/helper.js.map +1 -0
  337. package/dist/core/computer/motor/platform/macos/permissions.d.ts +4 -0
  338. package/dist/core/computer/motor/platform/macos/permissions.d.ts.map +1 -0
  339. package/dist/core/computer/motor/platform/macos/permissions.js +118 -0
  340. package/dist/core/computer/motor/platform/macos/permissions.js.map +1 -0
  341. package/dist/core/computer/motor/platform/types.d.ts +263 -0
  342. package/dist/core/computer/motor/platform/types.d.ts.map +1 -0
  343. package/dist/core/computer/motor/platform/types.js +2 -0
  344. package/dist/core/computer/motor/platform/types.js.map +1 -0
  345. package/dist/core/computer/motor/platform/windows/backend.d.ts +3 -0
  346. package/dist/core/computer/motor/platform/windows/backend.d.ts.map +1 -0
  347. package/dist/core/computer/motor/platform/windows/backend.js +163 -0
  348. package/dist/core/computer/motor/platform/windows/backend.js.map +1 -0
  349. package/dist/core/computer/motor/platform/windows/helper.d.ts +18 -0
  350. package/dist/core/computer/motor/platform/windows/helper.d.ts.map +1 -0
  351. package/dist/core/computer/motor/platform/windows/helper.js +174 -0
  352. package/dist/core/computer/motor/platform/windows/helper.js.map +1 -0
  353. package/dist/core/computer/motor/root-selection.d.ts +6 -0
  354. package/dist/core/computer/motor/root-selection.d.ts.map +1 -0
  355. package/dist/core/computer/motor/root-selection.js +28 -0
  356. package/dist/core/computer/motor/root-selection.js.map +1 -0
  357. package/dist/core/computer/motor/runtime.d.ts +50 -0
  358. package/dist/core/computer/motor/runtime.d.ts.map +1 -0
  359. package/dist/core/computer/motor/runtime.js +119 -0
  360. package/dist/core/computer/motor/runtime.js.map +1 -0
  361. package/dist/core/computer/motor/state.d.ts +68 -0
  362. package/dist/core/computer/motor/state.d.ts.map +1 -0
  363. package/dist/core/computer/motor/state.js +100 -0
  364. package/dist/core/computer/motor/state.js.map +1 -0
  365. package/dist/core/computer/motor/view.d.ts +6 -0
  366. package/dist/core/computer/motor/view.d.ts.map +1 -0
  367. package/dist/core/computer/motor/view.js +185 -0
  368. package/dist/core/computer/motor/view.js.map +1 -0
  369. package/dist/core/computer/motor-ada.d.ts +159 -0
  370. package/dist/core/computer/motor-ada.d.ts.map +1 -0
  371. package/dist/core/computer/motor-ada.js +412 -0
  372. package/dist/core/computer/motor-ada.js.map +1 -0
  373. package/dist/core/computer/politica.d.ts +56 -0
  374. package/dist/core/computer/politica.d.ts.map +1 -0
  375. package/dist/core/computer/politica.js +163 -0
  376. package/dist/core/computer/politica.js.map +1 -0
  377. package/dist/core/computer/tools.d.ts +26 -0
  378. package/dist/core/computer/tools.d.ts.map +1 -0
  379. package/dist/core/computer/tools.js +399 -0
  380. package/dist/core/computer/tools.js.map +1 -0
  381. package/dist/core/context-breakdown.d.ts +80 -0
  382. package/dist/core/context-breakdown.d.ts.map +1 -0
  383. package/dist/core/context-breakdown.js +87 -0
  384. package/dist/core/context-breakdown.js.map +1 -0
  385. package/dist/core/credenciales/cliente.d.ts +60 -0
  386. package/dist/core/credenciales/cliente.d.ts.map +1 -0
  387. package/dist/core/credenciales/cliente.js +81 -0
  388. package/dist/core/credenciales/cliente.js.map +1 -0
  389. package/dist/core/credenciales/pool.d.ts +96 -0
  390. package/dist/core/credenciales/pool.d.ts.map +1 -0
  391. package/dist/core/credenciales/pool.js +128 -0
  392. package/dist/core/credenciales/pool.js.map +1 -0
  393. package/dist/core/credenciales/reposo.d.ts +93 -0
  394. package/dist/core/credenciales/reposo.d.ts.map +1 -0
  395. package/dist/core/credenciales/reposo.js +489 -0
  396. package/dist/core/credenciales/reposo.js.map +1 -0
  397. package/dist/core/credenciales/servidor.d.ts +55 -0
  398. package/dist/core/credenciales/servidor.d.ts.map +1 -0
  399. package/dist/core/credenciales/servidor.js +205 -0
  400. package/dist/core/credenciales/servidor.js.map +1 -0
  401. package/dist/core/defaults.d.ts +1 -0
  402. package/dist/core/defaults.d.ts.map +1 -1
  403. package/dist/core/defaults.js +9 -0
  404. package/dist/core/defaults.js.map +1 -1
  405. package/dist/core/descubrimiento/comandos.d.ts +30 -0
  406. package/dist/core/descubrimiento/comandos.d.ts.map +1 -0
  407. package/dist/core/descubrimiento/comandos.js +76 -0
  408. package/dist/core/descubrimiento/comandos.js.map +1 -0
  409. package/dist/core/descubrimiento/mcp.d.ts +42 -0
  410. package/dist/core/descubrimiento/mcp.d.ts.map +1 -0
  411. package/dist/core/descubrimiento/mcp.js +130 -0
  412. package/dist/core/descubrimiento/mcp.js.map +1 -0
  413. package/dist/core/descubrimiento/reglas.d.ts +61 -0
  414. package/dist/core/descubrimiento/reglas.d.ts.map +1 -0
  415. package/dist/core/descubrimiento/reglas.js +134 -0
  416. package/dist/core/descubrimiento/reglas.js.map +1 -0
  417. package/dist/core/descubrimiento/skills.d.ts +57 -0
  418. package/dist/core/descubrimiento/skills.d.ts.map +1 -0
  419. package/dist/core/descubrimiento/skills.js +113 -0
  420. package/dist/core/descubrimiento/skills.js.map +1 -0
  421. package/dist/core/dificultad/clasificador.d.ts +133 -0
  422. package/dist/core/dificultad/clasificador.d.ts.map +1 -0
  423. package/dist/core/dificultad/clasificador.js +288 -0
  424. package/dist/core/dificultad/clasificador.js.map +1 -0
  425. package/dist/core/edicion/diario.d.ts +37 -0
  426. package/dist/core/edicion/diario.d.ts.map +1 -0
  427. package/dist/core/edicion/diario.js +51 -0
  428. package/dist/core/edicion/diario.js.map +1 -0
  429. package/dist/core/edicion/hashline.d.ts +71 -0
  430. package/dist/core/edicion/hashline.d.ts.map +1 -0
  431. package/dist/core/edicion/hashline.js +111 -0
  432. package/dist/core/edicion/hashline.js.map +1 -0
  433. package/dist/core/edicion/hueco.d.ts +64 -0
  434. package/dist/core/edicion/hueco.d.ts.map +1 -0
  435. package/dist/core/edicion/hueco.js +162 -0
  436. package/dist/core/edicion/hueco.js.map +1 -0
  437. package/dist/core/edicion/limpiar-carga.d.ts +39 -0
  438. package/dist/core/edicion/limpiar-carga.d.ts.map +1 -0
  439. package/dist/core/edicion/limpiar-carga.js +121 -0
  440. package/dist/core/edicion/limpiar-carga.js.map +1 -0
  441. package/dist/core/edicion/observador.d.ts +80 -0
  442. package/dist/core/edicion/observador.d.ts.map +1 -0
  443. package/dist/core/edicion/observador.js +183 -0
  444. package/dist/core/edicion/observador.js.map +1 -0
  445. package/dist/core/edicion/parecido.d.ts +53 -0
  446. package/dist/core/edicion/parecido.d.ts.map +1 -0
  447. package/dist/core/edicion/parecido.js +145 -0
  448. package/dist/core/edicion/parecido.js.map +1 -0
  449. package/dist/core/edicion/parseo.d.ts +58 -0
  450. package/dist/core/edicion/parseo.d.ts.map +1 -0
  451. package/dist/core/edicion/parseo.js +124 -0
  452. package/dist/core/edicion/parseo.js.map +1 -0
  453. package/dist/core/edicion/reparacion.d.ts +67 -0
  454. package/dist/core/edicion/reparacion.d.ts.map +1 -0
  455. package/dist/core/edicion/reparacion.js +202 -0
  456. package/dist/core/edicion/reparacion.js.map +1 -0
  457. package/dist/core/edicion/sangria.d.ts +121 -0
  458. package/dist/core/edicion/sangria.d.ts.map +1 -0
  459. package/dist/core/edicion/sangria.js +341 -0
  460. package/dist/core/edicion/sangria.js.map +1 -0
  461. package/dist/core/edicion/tipos.d.ts +58 -0
  462. package/dist/core/edicion/tipos.d.ts.map +1 -0
  463. package/dist/core/edicion/tipos.js +160 -0
  464. package/dist/core/edicion/tipos.js.map +1 -0
  465. package/dist/core/engine-personality.d.ts +12 -0
  466. package/dist/core/engine-personality.d.ts.map +1 -0
  467. package/dist/core/engine-personality.js +53 -0
  468. package/dist/core/engine-personality.js.map +1 -0
  469. package/dist/core/errores/proveedor.d.ts +53 -0
  470. package/dist/core/errores/proveedor.d.ts.map +1 -0
  471. package/dist/core/errores/proveedor.js +191 -0
  472. package/dist/core/errores/proveedor.js.map +1 -0
  473. package/dist/core/estructural/buscar.d.ts +61 -0
  474. package/dist/core/estructural/buscar.d.ts.map +1 -0
  475. package/dist/core/estructural/buscar.js +261 -0
  476. package/dist/core/estructural/buscar.js.map +1 -0
  477. package/dist/core/estructural/editar.d.ts +36 -0
  478. package/dist/core/estructural/editar.d.ts.map +1 -0
  479. package/dist/core/estructural/editar.js +123 -0
  480. package/dist/core/estructural/editar.js.map +1 -0
  481. package/dist/core/estructural/tools.d.ts +11 -0
  482. package/dist/core/estructural/tools.d.ts.map +1 -0
  483. package/dist/core/estructural/tools.js +100 -0
  484. package/dist/core/estructural/tools.js.map +1 -0
  485. package/dist/core/experimental.d.ts.map +1 -1
  486. package/dist/core/experimental.js +10 -1
  487. package/dist/core/experimental.js.map +1 -1
  488. package/dist/core/extensiones/suplantacion.d.ts +49 -0
  489. package/dist/core/extensiones/suplantacion.d.ts.map +1 -0
  490. package/dist/core/extensiones/suplantacion.js +61 -0
  491. package/dist/core/extensiones/suplantacion.js.map +1 -0
  492. package/dist/core/extensiones/vigilancia.d.ts +54 -0
  493. package/dist/core/extensiones/vigilancia.d.ts.map +1 -0
  494. package/dist/core/extensiones/vigilancia.js +217 -0
  495. package/dist/core/extensiones/vigilancia.js.map +1 -0
  496. package/dist/core/extensions/index.d.ts +1 -1
  497. package/dist/core/extensions/index.d.ts.map +1 -1
  498. package/dist/core/extensions/index.js.map +1 -1
  499. package/dist/core/extensions/loader.d.ts.map +1 -1
  500. package/dist/core/extensions/loader.js +21 -6
  501. package/dist/core/extensions/loader.js.map +1 -1
  502. package/dist/core/extensions/types.d.ts +23 -4
  503. package/dist/core/extensions/types.d.ts.map +1 -1
  504. package/dist/core/extensions/types.js.map +1 -1
  505. package/dist/core/harness/fuentes-de-contexto.d.ts +29 -0
  506. package/dist/core/harness/fuentes-de-contexto.d.ts.map +1 -0
  507. package/dist/core/harness/fuentes-de-contexto.js +44 -0
  508. package/dist/core/harness/fuentes-de-contexto.js.map +1 -0
  509. package/dist/core/harness/refine.d.ts +40 -0
  510. package/dist/core/harness/refine.d.ts.map +1 -0
  511. package/dist/core/harness/refine.js +109 -0
  512. package/dist/core/harness/refine.js.map +1 -0
  513. package/dist/core/harness/store.d.ts +75 -0
  514. package/dist/core/harness/store.d.ts.map +1 -0
  515. package/dist/core/harness/store.js +149 -0
  516. package/dist/core/harness/store.js.map +1 -0
  517. package/dist/core/hooks/contract.d.ts +85 -0
  518. package/dist/core/hooks/contract.d.ts.map +1 -0
  519. package/dist/core/hooks/contract.js +140 -0
  520. package/dist/core/hooks/contract.js.map +1 -0
  521. package/dist/core/hooks/runner.d.ts +42 -0
  522. package/dist/core/hooks/runner.d.ts.map +1 -0
  523. package/dist/core/hooks/runner.js +85 -0
  524. package/dist/core/hooks/runner.js.map +1 -0
  525. package/dist/core/hooks/session-hooks.d.ts +62 -0
  526. package/dist/core/hooks/session-hooks.d.ts.map +1 -0
  527. package/dist/core/hooks/session-hooks.js +84 -0
  528. package/dist/core/hooks/session-hooks.js.map +1 -0
  529. package/dist/core/importar/formatos.d.ts +69 -0
  530. package/dist/core/importar/formatos.d.ts.map +1 -0
  531. package/dist/core/importar/formatos.js +235 -0
  532. package/dist/core/importar/formatos.js.map +1 -0
  533. package/dist/core/interactivo/deteccion.d.ts +44 -0
  534. package/dist/core/interactivo/deteccion.d.ts.map +1 -0
  535. package/dist/core/interactivo/deteccion.js +82 -0
  536. package/dist/core/interactivo/deteccion.js.map +1 -0
  537. package/dist/core/interactivo/sesion.d.ts +50 -0
  538. package/dist/core/interactivo/sesion.d.ts.map +1 -0
  539. package/dist/core/interactivo/sesion.js +156 -0
  540. package/dist/core/interactivo/sesion.js.map +1 -0
  541. package/dist/core/interactivo/tools.d.ts +21 -0
  542. package/dist/core/interactivo/tools.d.ts.map +1 -0
  543. package/dist/core/interactivo/tools.js +122 -0
  544. package/dist/core/interactivo/tools.js.map +1 -0
  545. package/dist/core/keybindings.d.ts.map +1 -1
  546. package/dist/core/keybindings.js +2 -1
  547. package/dist/core/keybindings.js.map +1 -1
  548. package/dist/core/lectura/mapa.d.ts +70 -0
  549. package/dist/core/lectura/mapa.d.ts.map +1 -0
  550. package/dist/core/lectura/mapa.js +177 -0
  551. package/dist/core/lectura/mapa.js.map +1 -0
  552. package/dist/core/lectura/pdf.d.ts +49 -0
  553. package/dist/core/lectura/pdf.d.ts.map +1 -0
  554. package/dist/core/lectura/pdf.js +337 -0
  555. package/dist/core/lectura/pdf.js.map +1 -0
  556. package/dist/core/limpieza/comprobadores.d.ts +28 -0
  557. package/dist/core/limpieza/comprobadores.d.ts.map +1 -0
  558. package/dist/core/limpieza/comprobadores.js +311 -0
  559. package/dist/core/limpieza/comprobadores.js.map +1 -0
  560. package/dist/core/limpieza/parseo.d.ts +19 -0
  561. package/dist/core/limpieza/parseo.d.ts.map +1 -0
  562. package/dist/core/limpieza/parseo.js +124 -0
  563. package/dist/core/limpieza/parseo.js.map +1 -0
  564. package/dist/core/limpieza/reparacion.d.ts +77 -0
  565. package/dist/core/limpieza/reparacion.d.ts.map +1 -0
  566. package/dist/core/limpieza/reparacion.js +254 -0
  567. package/dist/core/limpieza/reparacion.js.map +1 -0
  568. package/dist/core/limpieza/tipos.d.ts +56 -0
  569. package/dist/core/limpieza/tipos.d.ts.map +1 -0
  570. package/dist/core/limpieza/tipos.js +9 -0
  571. package/dist/core/limpieza/tipos.js.map +1 -0
  572. package/dist/core/lsp/cliente.d.ts +52 -0
  573. package/dist/core/lsp/cliente.d.ts.map +1 -0
  574. package/dist/core/lsp/cliente.js +232 -0
  575. package/dist/core/lsp/cliente.js.map +1 -0
  576. package/dist/core/lsp/descubrimiento.d.ts +62 -0
  577. package/dist/core/lsp/descubrimiento.d.ts.map +1 -0
  578. package/dist/core/lsp/descubrimiento.js +152 -0
  579. package/dist/core/lsp/descubrimiento.js.map +1 -0
  580. package/dist/core/lsp/ediciones.d.ts +59 -0
  581. package/dist/core/lsp/ediciones.d.ts.map +1 -0
  582. package/dist/core/lsp/ediciones.js +89 -0
  583. package/dist/core/lsp/ediciones.js.map +1 -0
  584. package/dist/core/lsp/extension.d.ts +28 -0
  585. package/dist/core/lsp/extension.d.ts.map +1 -0
  586. package/dist/core/lsp/extension.js +34 -0
  587. package/dist/core/lsp/extension.js.map +1 -0
  588. package/dist/core/lsp/tools.d.ts +45 -0
  589. package/dist/core/lsp/tools.d.ts.map +1 -0
  590. package/dist/core/lsp/tools.js +265 -0
  591. package/dist/core/lsp/tools.js.map +1 -0
  592. package/dist/core/mcp/client.d.ts +60 -0
  593. package/dist/core/mcp/client.d.ts.map +1 -0
  594. package/dist/core/mcp/client.js +139 -0
  595. package/dist/core/mcp/client.js.map +1 -0
  596. package/dist/core/mcp/manager.d.ts +86 -0
  597. package/dist/core/mcp/manager.d.ts.map +1 -0
  598. package/dist/core/mcp/manager.js +124 -0
  599. package/dist/core/mcp/manager.js.map +1 -0
  600. package/dist/core/mcp/tools.d.ts +15 -0
  601. package/dist/core/mcp/tools.d.ts.map +1 -0
  602. package/dist/core/mcp/tools.js +84 -0
  603. package/dist/core/mcp/tools.js.map +1 -0
  604. package/dist/core/memory-engine/audit-export.d.ts +56 -0
  605. package/dist/core/memory-engine/audit-export.d.ts.map +1 -0
  606. package/dist/core/memory-engine/audit-export.js +100 -0
  607. package/dist/core/memory-engine/audit-export.js.map +1 -0
  608. package/dist/core/memory-engine/audit-indice.d.ts +153 -0
  609. package/dist/core/memory-engine/audit-indice.d.ts.map +1 -0
  610. package/dist/core/memory-engine/audit-indice.js +271 -0
  611. package/dist/core/memory-engine/audit-indice.js.map +1 -0
  612. package/dist/core/memory-engine/audit.d.ts +18 -6
  613. package/dist/core/memory-engine/audit.d.ts.map +1 -1
  614. package/dist/core/memory-engine/audit.js +32 -50
  615. package/dist/core/memory-engine/audit.js.map +1 -1
  616. package/dist/core/memory-engine/engine.d.ts +21 -4
  617. package/dist/core/memory-engine/engine.d.ts.map +1 -1
  618. package/dist/core/memory-engine/engine.js +219 -55
  619. package/dist/core/memory-engine/engine.js.map +1 -1
  620. package/dist/core/memory-engine/inverted-index.d.ts.map +1 -1
  621. package/dist/core/memory-engine/inverted-index.js +67 -10
  622. package/dist/core/memory-engine/inverted-index.js.map +1 -1
  623. package/dist/core/memory-engine/keychain.d.ts.map +1 -1
  624. package/dist/core/memory-engine/keychain.js +1 -6
  625. package/dist/core/memory-engine/keychain.js.map +1 -1
  626. package/dist/core/memory-engine/observation-store.d.ts +0 -1
  627. package/dist/core/memory-engine/observation-store.d.ts.map +1 -1
  628. package/dist/core/memory-engine/observation-store.js +40 -12
  629. package/dist/core/memory-engine/observation-store.js.map +1 -1
  630. package/dist/core/memory-engine/refinements.d.ts +51 -0
  631. package/dist/core/memory-engine/refinements.d.ts.map +1 -0
  632. package/dist/core/memory-engine/refinements.js +99 -0
  633. package/dist/core/memory-engine/refinements.js.map +1 -0
  634. package/dist/core/memory-engine/scanner.d.ts.map +1 -1
  635. package/dist/core/memory-engine/scanner.js +25 -5
  636. package/dist/core/memory-engine/scanner.js.map +1 -1
  637. package/dist/core/memory-engine/security.d.ts.map +1 -1
  638. package/dist/core/memory-engine/security.js +131 -23
  639. package/dist/core/memory-engine/security.js.map +1 -1
  640. package/dist/core/memory-engine/session-indexer.d.ts.map +1 -1
  641. package/dist/core/memory-engine/session-indexer.js +8 -2
  642. package/dist/core/memory-engine/session-indexer.js.map +1 -1
  643. package/dist/core/memory-engine/tools.d.ts +2 -2
  644. package/dist/core/memory-engine/tools.d.ts.map +1 -1
  645. package/dist/core/memory-engine/tools.js +41 -8
  646. package/dist/core/memory-engine/tools.js.map +1 -1
  647. package/dist/core/memory-engine/types.d.ts +2 -0
  648. package/dist/core/memory-engine/types.d.ts.map +1 -1
  649. package/dist/core/memory-engine/types.js.map +1 -1
  650. package/dist/core/memory-engine/vault.d.ts.map +1 -1
  651. package/dist/core/memory-engine/vault.js +2 -2
  652. package/dist/core/memory-engine/vault.js.map +1 -1
  653. package/dist/core/model-config.d.ts.map +1 -1
  654. package/dist/core/model-config.js +2 -1
  655. package/dist/core/model-config.js.map +1 -1
  656. package/dist/core/model-resolver.d.ts +1 -0
  657. package/dist/core/model-resolver.d.ts.map +1 -1
  658. package/dist/core/model-resolver.js +19 -7
  659. package/dist/core/model-resolver.js.map +1 -1
  660. package/dist/core/models-store.d.ts.map +1 -1
  661. package/dist/core/models-store.js +2 -1
  662. package/dist/core/models-store.js.map +1 -1
  663. package/dist/core/muestreo-restringido.d.ts +49 -0
  664. package/dist/core/muestreo-restringido.d.ts.map +1 -0
  665. package/dist/core/muestreo-restringido.js +65 -0
  666. package/dist/core/muestreo-restringido.js.map +1 -0
  667. package/dist/core/orphan-process-journal.d.ts +48 -0
  668. package/dist/core/orphan-process-journal.d.ts.map +1 -0
  669. package/dist/core/orphan-process-journal.js +116 -0
  670. package/dist/core/orphan-process-journal.js.map +1 -0
  671. package/dist/core/package-manager.d.ts.map +1 -1
  672. package/dist/core/package-manager.js +11 -6
  673. package/dist/core/package-manager.js.map +1 -1
  674. package/dist/core/pi-manifest.d.ts.map +1 -1
  675. package/dist/core/pi-manifest.js +2 -1
  676. package/dist/core/pi-manifest.js.map +1 -1
  677. package/dist/core/privacidad/categorias-especiales.d.ts +186 -0
  678. package/dist/core/privacidad/categorias-especiales.d.ts.map +1 -0
  679. package/dist/core/privacidad/categorias-especiales.js +745 -0
  680. package/dist/core/privacidad/categorias-especiales.js.map +1 -0
  681. package/dist/core/privacidad/tapar.d.ts +48 -0
  682. package/dist/core/privacidad/tapar.d.ts.map +1 -0
  683. package/dist/core/privacidad/tapar.js +66 -0
  684. package/dist/core/privacidad/tapar.js.map +1 -0
  685. package/dist/core/prompt-cache/diagnostics.d.ts +33 -0
  686. package/dist/core/prompt-cache/diagnostics.d.ts.map +1 -0
  687. package/dist/core/prompt-cache/diagnostics.js +100 -0
  688. package/dist/core/prompt-cache/diagnostics.js.map +1 -0
  689. package/dist/core/prompt-cache/index.d.ts +33 -0
  690. package/dist/core/prompt-cache/index.d.ts.map +1 -0
  691. package/dist/core/prompt-cache/index.js +189 -0
  692. package/dist/core/prompt-cache/index.js.map +1 -0
  693. package/dist/core/prompt-cache/payload.d.ts +58 -0
  694. package/dist/core/prompt-cache/payload.d.ts.map +1 -0
  695. package/dist/core/prompt-cache/payload.js +122 -0
  696. package/dist/core/prompt-cache/payload.js.map +1 -0
  697. package/dist/core/prompt-cache/stabilize.d.ts +65 -0
  698. package/dist/core/prompt-cache/stabilize.d.ts.map +1 -0
  699. package/dist/core/prompt-cache/stabilize.js +137 -0
  700. package/dist/core/prompt-cache/stabilize.js.map +1 -0
  701. package/dist/core/prompt-cache/stats.d.ts +55 -0
  702. package/dist/core/prompt-cache/stats.d.ts.map +1 -0
  703. package/dist/core/prompt-cache/stats.js +158 -0
  704. package/dist/core/prompt-cache/stats.js.map +1 -0
  705. package/dist/core/prompt-eleccion.d.ts +38 -0
  706. package/dist/core/prompt-eleccion.d.ts.map +1 -0
  707. package/dist/core/prompt-eleccion.js +46 -0
  708. package/dist/core/prompt-eleccion.js.map +1 -0
  709. package/dist/core/prompt-optimizer.d.ts +53 -0
  710. package/dist/core/prompt-optimizer.d.ts.map +1 -0
  711. package/dist/core/prompt-optimizer.js +138 -0
  712. package/dist/core/prompt-optimizer.js.map +1 -0
  713. package/dist/core/prompts/montar.d.ts +75 -0
  714. package/dist/core/prompts/montar.d.ts.map +1 -0
  715. package/dist/core/prompts/montar.js +146 -0
  716. package/dist/core/prompts/montar.js.map +1 -0
  717. package/dist/core/prompts/plantilla.d.ts +54 -0
  718. package/dist/core/prompts/plantilla.d.ts.map +1 -0
  719. package/dist/core/prompts/plantilla.js +153 -0
  720. package/dist/core/prompts/plantilla.js.map +1 -0
  721. package/dist/core/prompts/sistema.md +134 -0
  722. package/dist/core/provider-attribution.d.ts +24 -2
  723. package/dist/core/provider-attribution.d.ts.map +1 -1
  724. package/dist/core/provider-attribution.js +24 -42
  725. package/dist/core/provider-attribution.js.map +1 -1
  726. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  727. package/dist/core/remote-catalog-provider.js +2 -1
  728. package/dist/core/remote-catalog-provider.js.map +1 -1
  729. package/dist/core/remoto/destino.d.ts +38 -0
  730. package/dist/core/remoto/destino.d.ts.map +1 -0
  731. package/dist/core/remoto/destino.js +105 -0
  732. package/dist/core/remoto/destino.js.map +1 -0
  733. package/dist/core/remoto/ejecutor.d.ts +59 -0
  734. package/dist/core/remoto/ejecutor.d.ts.map +1 -0
  735. package/dist/core/remoto/ejecutor.js +225 -0
  736. package/dist/core/remoto/ejecutor.js.map +1 -0
  737. package/dist/core/remoto/ficheros.d.ts +29 -0
  738. package/dist/core/remoto/ficheros.d.ts.map +1 -0
  739. package/dist/core/remoto/ficheros.js +90 -0
  740. package/dist/core/remoto/ficheros.js.map +1 -0
  741. package/dist/core/remoto/registro-extension.d.ts +15 -0
  742. package/dist/core/remoto/registro-extension.d.ts.map +1 -0
  743. package/dist/core/remoto/registro-extension.js +17 -0
  744. package/dist/core/remoto/registro-extension.js.map +1 -0
  745. package/dist/core/remoto/tools.d.ts +28 -0
  746. package/dist/core/remoto/tools.d.ts.map +1 -0
  747. package/dist/core/remoto/tools.js +31 -0
  748. package/dist/core/remoto/tools.js.map +1 -0
  749. package/dist/core/resource-loader.d.ts +58 -0
  750. package/dist/core/resource-loader.d.ts.map +1 -1
  751. package/dist/core/resource-loader.js +326 -8
  752. package/dist/core/resource-loader.js.map +1 -1
  753. package/dist/core/revision/hallazgo.d.ts +51 -0
  754. package/dist/core/revision/hallazgo.d.ts.map +1 -0
  755. package/dist/core/revision/hallazgo.js +73 -0
  756. package/dist/core/revision/hallazgo.js.map +1 -0
  757. package/dist/core/revision/revisor.d.ts +81 -0
  758. package/dist/core/revision/revisor.d.ts.map +1 -0
  759. package/dist/core/revision/revisor.js +132 -0
  760. package/dist/core/revision/revisor.js.map +1 -0
  761. package/dist/core/revision/sarif.d.ts +30 -0
  762. package/dist/core/revision/sarif.d.ts.map +1 -0
  763. package/dist/core/revision/sarif.js +83 -0
  764. package/dist/core/revision/sarif.js.map +1 -0
  765. package/dist/core/scheduler/scheduler.d.ts +87 -0
  766. package/dist/core/scheduler/scheduler.d.ts.map +1 -0
  767. package/dist/core/scheduler/scheduler.js +178 -0
  768. package/dist/core/scheduler/scheduler.js.map +1 -0
  769. package/dist/core/sdk.d.ts +8 -0
  770. package/dist/core/sdk.d.ts.map +1 -1
  771. package/dist/core/sdk.js +11 -1
  772. package/dist/core/sdk.js.map +1 -1
  773. package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts +49 -0
  774. package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts.map +1 -0
  775. package/dist/core/sesion/cerrar-llamadas-abiertas.js +77 -0
  776. package/dist/core/sesion/cerrar-llamadas-abiertas.js.map +1 -0
  777. package/dist/core/session-manager.d.ts.map +1 -1
  778. package/dist/core/session-manager.js +2 -1
  779. package/dist/core/session-manager.js.map +1 -1
  780. package/dist/core/settings-diagnostics.d.ts +9 -0
  781. package/dist/core/settings-diagnostics.d.ts.map +1 -0
  782. package/dist/core/settings-diagnostics.js +21 -0
  783. package/dist/core/settings-diagnostics.js.map +1 -0
  784. package/dist/core/settings-manager.d.ts +156 -0
  785. package/dist/core/settings-manager.d.ts.map +1 -1
  786. package/dist/core/settings-manager.js +255 -10
  787. package/dist/core/settings-manager.js.map +1 -1
  788. package/dist/core/skills.d.ts.map +1 -1
  789. package/dist/core/skills.js +51 -33
  790. package/dist/core/skills.js.map +1 -1
  791. package/dist/core/slash-commands.d.ts.map +1 -1
  792. package/dist/core/slash-commands.js +2 -1
  793. package/dist/core/slash-commands.js.map +1 -1
  794. package/dist/core/system-prompt.d.ts +17 -0
  795. package/dist/core/system-prompt.d.ts.map +1 -1
  796. package/dist/core/system-prompt.js +13 -5
  797. package/dist/core/system-prompt.js.map +1 -1
  798. package/dist/core/telemetria/otlp.d.ts +122 -0
  799. package/dist/core/telemetria/otlp.d.ts.map +1 -0
  800. package/dist/core/telemetria/otlp.js +373 -0
  801. package/dist/core/telemetria/otlp.js.map +1 -0
  802. package/dist/core/tools/coercion-argumentos.d.ts +48 -0
  803. package/dist/core/tools/coercion-argumentos.d.ts.map +1 -0
  804. package/dist/core/tools/coercion-argumentos.js +99 -0
  805. package/dist/core/tools/coercion-argumentos.js.map +1 -0
  806. package/dist/core/tools/edit-diff.d.ts +0 -12
  807. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  808. package/dist/core/tools/edit-diff.js +234 -12
  809. package/dist/core/tools/edit-diff.js.map +1 -1
  810. package/dist/core/tools/edit.d.ts.map +1 -1
  811. package/dist/core/tools/edit.js +28 -5
  812. package/dist/core/tools/edit.js.map +1 -1
  813. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  814. package/dist/core/tools/file-mutation-queue.js +5 -0
  815. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  816. package/dist/core/tools/index.d.ts.map +1 -1
  817. package/dist/core/tools/index.js +2 -2
  818. package/dist/core/tools/index.js.map +1 -1
  819. package/dist/core/tools/json-tolerante.d.ts +30 -0
  820. package/dist/core/tools/json-tolerante.d.ts.map +1 -0
  821. package/dist/core/tools/json-tolerante.js +70 -0
  822. package/dist/core/tools/json-tolerante.js.map +1 -0
  823. package/dist/core/tools/project-memory-tool.d.ts.map +1 -1
  824. package/dist/core/tools/project-memory-tool.js +4 -1
  825. package/dist/core/tools/project-memory-tool.js.map +1 -1
  826. package/dist/core/tools/read.d.ts.map +1 -1
  827. package/dist/core/tools/read.js +17 -0
  828. package/dist/core/tools/read.js.map +1 -1
  829. package/dist/core/tools/tool-definition-wrapper.d.ts +14 -1
  830. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  831. package/dist/core/tools/tool-definition-wrapper.js +17 -1
  832. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  833. package/dist/core/trust-manager.d.ts.map +1 -1
  834. package/dist/core/trust-manager.js +2 -1
  835. package/dist/core/trust-manager.js.map +1 -1
  836. package/dist/core/turno-vacio/detectar.d.ts +38 -0
  837. package/dist/core/turno-vacio/detectar.d.ts.map +1 -0
  838. package/dist/core/turno-vacio/detectar.js +66 -0
  839. package/dist/core/turno-vacio/detectar.js.map +1 -0
  840. package/dist/core/undo/journal.d.ts +57 -0
  841. package/dist/core/undo/journal.d.ts.map +1 -0
  842. package/dist/core/undo/journal.js +178 -0
  843. package/dist/core/undo/journal.js.map +1 -0
  844. package/dist/core/urls-internas/auditoria.d.ts +10 -0
  845. package/dist/core/urls-internas/auditoria.d.ts.map +1 -0
  846. package/dist/core/urls-internas/auditoria.js +42 -0
  847. package/dist/core/urls-internas/auditoria.js.map +1 -0
  848. package/dist/core/urls-internas/boveda.d.ts +13 -0
  849. package/dist/core/urls-internas/boveda.d.ts.map +1 -0
  850. package/dist/core/urls-internas/boveda.js +40 -0
  851. package/dist/core/urls-internas/boveda.js.map +1 -0
  852. package/dist/core/urls-internas/lector.d.ts +30 -0
  853. package/dist/core/urls-internas/lector.d.ts.map +1 -0
  854. package/dist/core/urls-internas/lector.js +56 -0
  855. package/dist/core/urls-internas/lector.js.map +1 -0
  856. package/dist/core/urls-internas/memoria.d.ts +11 -0
  857. package/dist/core/urls-internas/memoria.d.ts.map +1 -0
  858. package/dist/core/urls-internas/memoria.js +25 -0
  859. package/dist/core/urls-internas/memoria.js.map +1 -0
  860. package/dist/core/urls-internas/parse.d.ts +28 -0
  861. package/dist/core/urls-internas/parse.d.ts.map +1 -0
  862. package/dist/core/urls-internas/parse.js +32 -0
  863. package/dist/core/urls-internas/parse.js.map +1 -0
  864. package/dist/core/urls-internas/reglas.d.ts +10 -0
  865. package/dist/core/urls-internas/reglas.d.ts.map +1 -0
  866. package/dist/core/urls-internas/reglas.js +31 -0
  867. package/dist/core/urls-internas/reglas.js.map +1 -0
  868. package/dist/core/usage/aggregate.d.ts +68 -0
  869. package/dist/core/usage/aggregate.d.ts.map +1 -0
  870. package/dist/core/usage/aggregate.js +93 -0
  871. package/dist/core/usage/aggregate.js.map +1 -0
  872. package/dist/core/usage/cuota/anthropic.d.ts +10 -0
  873. package/dist/core/usage/cuota/anthropic.d.ts.map +1 -0
  874. package/dist/core/usage/cuota/anthropic.js +63 -0
  875. package/dist/core/usage/cuota/anthropic.js.map +1 -0
  876. package/dist/core/usage/cuota/cache.d.ts +20 -0
  877. package/dist/core/usage/cuota/cache.d.ts.map +1 -0
  878. package/dist/core/usage/cuota/cache.js +36 -0
  879. package/dist/core/usage/cuota/cache.js.map +1 -0
  880. package/dist/core/usage/cuota/github-copilot.d.ts +9 -0
  881. package/dist/core/usage/cuota/github-copilot.d.ts.map +1 -0
  882. package/dist/core/usage/cuota/github-copilot.js +67 -0
  883. package/dist/core/usage/cuota/github-copilot.js.map +1 -0
  884. package/dist/core/usage/cuota/google-gemini.d.ts +9 -0
  885. package/dist/core/usage/cuota/google-gemini.d.ts.map +1 -0
  886. package/dist/core/usage/cuota/google-gemini.js +72 -0
  887. package/dist/core/usage/cuota/google-gemini.js.map +1 -0
  888. package/dist/core/usage/cuota/index.d.ts +25 -0
  889. package/dist/core/usage/cuota/index.d.ts.map +1 -0
  890. package/dist/core/usage/cuota/index.js +50 -0
  891. package/dist/core/usage/cuota/index.js.map +1 -0
  892. package/dist/core/usage/cuota/openai-codex.d.ts +9 -0
  893. package/dist/core/usage/cuota/openai-codex.d.ts.map +1 -0
  894. package/dist/core/usage/cuota/openai-codex.js +59 -0
  895. package/dist/core/usage/cuota/openai-codex.js.map +1 -0
  896. package/dist/core/usage/cuota/openrouter.d.ts +10 -0
  897. package/dist/core/usage/cuota/openrouter.d.ts.map +1 -0
  898. package/dist/core/usage/cuota/openrouter.js +47 -0
  899. package/dist/core/usage/cuota/openrouter.js.map +1 -0
  900. package/dist/core/usage/cuota/tipos.d.ts +50 -0
  901. package/dist/core/usage/cuota/tipos.d.ts.map +1 -0
  902. package/dist/core/usage/cuota/tipos.js +25 -0
  903. package/dist/core/usage/cuota/tipos.js.map +1 -0
  904. package/dist/core/web/busqueda-nativa.d.ts +82 -0
  905. package/dist/core/web/busqueda-nativa.d.ts.map +1 -0
  906. package/dist/core/web/busqueda-nativa.js +163 -0
  907. package/dist/core/web/busqueda-nativa.js.map +1 -0
  908. package/dist/core/web/destino.d.ts +58 -0
  909. package/dist/core/web/destino.d.ts.map +1 -0
  910. package/dist/core/web/destino.js +127 -0
  911. package/dist/core/web/destino.js.map +1 -0
  912. package/dist/core/web/proveedores/brave.d.ts +6 -0
  913. package/dist/core/web/proveedores/brave.d.ts.map +1 -0
  914. package/dist/core/web/proveedores/brave.js +20 -0
  915. package/dist/core/web/proveedores/brave.js.map +1 -0
  916. package/dist/core/web/proveedores/claves.d.ts +19 -0
  917. package/dist/core/web/proveedores/claves.d.ts.map +1 -0
  918. package/dist/core/web/proveedores/claves.js +36 -0
  919. package/dist/core/web/proveedores/claves.js.map +1 -0
  920. package/dist/core/web/proveedores/duckduckgo.d.ts +3 -0
  921. package/dist/core/web/proveedores/duckduckgo.d.ts.map +1 -0
  922. package/dist/core/web/proveedores/duckduckgo.js +109 -0
  923. package/dist/core/web/proveedores/duckduckgo.js.map +1 -0
  924. package/dist/core/web/proveedores/ecosia.d.ts +3 -0
  925. package/dist/core/web/proveedores/ecosia.d.ts.map +1 -0
  926. package/dist/core/web/proveedores/ecosia.js +72 -0
  927. package/dist/core/web/proveedores/ecosia.js.map +1 -0
  928. package/dist/core/web/proveedores/exa.d.ts +6 -0
  929. package/dist/core/web/proveedores/exa.d.ts.map +1 -0
  930. package/dist/core/web/proveedores/exa.js +24 -0
  931. package/dist/core/web/proveedores/exa.js.map +1 -0
  932. package/dist/core/web/proveedores/mojeek.d.ts +3 -0
  933. package/dist/core/web/proveedores/mojeek.d.ts.map +1 -0
  934. package/dist/core/web/proveedores/mojeek.js +65 -0
  935. package/dist/core/web/proveedores/mojeek.js.map +1 -0
  936. package/dist/core/web/proveedores/navegador.d.ts +10 -0
  937. package/dist/core/web/proveedores/navegador.d.ts.map +1 -0
  938. package/dist/core/web/proveedores/navegador.js +13 -0
  939. package/dist/core/web/proveedores/navegador.js.map +1 -0
  940. package/dist/core/web/proveedores/registro.d.ts +43 -0
  941. package/dist/core/web/proveedores/registro.d.ts.map +1 -0
  942. package/dist/core/web/proveedores/registro.js +49 -0
  943. package/dist/core/web/proveedores/registro.js.map +1 -0
  944. package/dist/core/web/proveedores/searxng.d.ts +9 -0
  945. package/dist/core/web/proveedores/searxng.d.ts.map +1 -0
  946. package/dist/core/web/proveedores/searxng.js +17 -0
  947. package/dist/core/web/proveedores/searxng.js.map +1 -0
  948. package/dist/core/web/proveedores/serper.d.ts +9 -0
  949. package/dist/core/web/proveedores/serper.d.ts.map +1 -0
  950. package/dist/core/web/proveedores/serper.js +19 -0
  951. package/dist/core/web/proveedores/serper.js.map +1 -0
  952. package/dist/core/web/proveedores/tavily.d.ts +6 -0
  953. package/dist/core/web/proveedores/tavily.d.ts.map +1 -0
  954. package/dist/core/web/proveedores/tavily.js +19 -0
  955. package/dist/core/web/proveedores/tavily.js.map +1 -0
  956. package/dist/core/web/proveedores/tipos.d.ts +36 -0
  957. package/dist/core/web/proveedores/tipos.d.ts.map +1 -0
  958. package/dist/core/web/proveedores/tipos.js +10 -0
  959. package/dist/core/web/proveedores/tipos.js.map +1 -0
  960. package/dist/core/web/registro-red.d.ts +43 -0
  961. package/dist/core/web/registro-red.d.ts.map +1 -0
  962. package/dist/core/web/registro-red.js +86 -0
  963. package/dist/core/web/registro-red.js.map +1 -0
  964. package/dist/core/web/scrapers/cisa-kev.d.ts +10 -0
  965. package/dist/core/web/scrapers/cisa-kev.d.ts.map +1 -0
  966. package/dist/core/web/scrapers/cisa-kev.js +38 -0
  967. package/dist/core/web/scrapers/cisa-kev.js.map +1 -0
  968. package/dist/core/web/scrapers/crates-io.d.ts +11 -0
  969. package/dist/core/web/scrapers/crates-io.d.ts.map +1 -0
  970. package/dist/core/web/scrapers/crates-io.js +29 -0
  971. package/dist/core/web/scrapers/crates-io.js.map +1 -0
  972. package/dist/core/web/scrapers/docs-rs.d.ts +10 -0
  973. package/dist/core/web/scrapers/docs-rs.d.ts.map +1 -0
  974. package/dist/core/web/scrapers/docs-rs.js +35 -0
  975. package/dist/core/web/scrapers/docs-rs.js.map +1 -0
  976. package/dist/core/web/scrapers/github.d.ts +3 -0
  977. package/dist/core/web/scrapers/github.d.ts.map +1 -0
  978. package/dist/core/web/scrapers/github.js +72 -0
  979. package/dist/core/web/scrapers/github.js.map +1 -0
  980. package/dist/core/web/scrapers/go-pkg.d.ts +7 -0
  981. package/dist/core/web/scrapers/go-pkg.d.ts.map +1 -0
  982. package/dist/core/web/scrapers/go-pkg.js +30 -0
  983. package/dist/core/web/scrapers/go-pkg.js.map +1 -0
  984. package/dist/core/web/scrapers/hex.d.ts +6 -0
  985. package/dist/core/web/scrapers/hex.d.ts.map +1 -0
  986. package/dist/core/web/scrapers/hex.js +27 -0
  987. package/dist/core/web/scrapers/hex.js.map +1 -0
  988. package/dist/core/web/scrapers/maven.d.ts +8 -0
  989. package/dist/core/web/scrapers/maven.d.ts.map +1 -0
  990. package/dist/core/web/scrapers/maven.js +41 -0
  991. package/dist/core/web/scrapers/maven.js.map +1 -0
  992. package/dist/core/web/scrapers/mdn.d.ts +6 -0
  993. package/dist/core/web/scrapers/mdn.d.ts.map +1 -0
  994. package/dist/core/web/scrapers/mdn.js +28 -0
  995. package/dist/core/web/scrapers/mdn.js.map +1 -0
  996. package/dist/core/web/scrapers/npm.d.ts +11 -0
  997. package/dist/core/web/scrapers/npm.d.ts.map +1 -0
  998. package/dist/core/web/scrapers/npm.js +57 -0
  999. package/dist/core/web/scrapers/npm.js.map +1 -0
  1000. package/dist/core/web/scrapers/nuget.d.ts +8 -0
  1001. package/dist/core/web/scrapers/nuget.d.ts.map +1 -0
  1002. package/dist/core/web/scrapers/nuget.js +22 -0
  1003. package/dist/core/web/scrapers/nuget.js.map +1 -0
  1004. package/dist/core/web/scrapers/nvd.d.ts +7 -0
  1005. package/dist/core/web/scrapers/nvd.d.ts.map +1 -0
  1006. package/dist/core/web/scrapers/nvd.js +37 -0
  1007. package/dist/core/web/scrapers/nvd.js.map +1 -0
  1008. package/dist/core/web/scrapers/pypi.d.ts +6 -0
  1009. package/dist/core/web/scrapers/pypi.d.ts.map +1 -0
  1010. package/dist/core/web/scrapers/pypi.js +31 -0
  1011. package/dist/core/web/scrapers/pypi.js.map +1 -0
  1012. package/dist/core/web/scrapers/registro.d.ts +13 -0
  1013. package/dist/core/web/scrapers/registro.d.ts.map +1 -0
  1014. package/dist/core/web/scrapers/registro.js +65 -0
  1015. package/dist/core/web/scrapers/registro.js.map +1 -0
  1016. package/dist/core/web/scrapers/rubygems.d.ts +6 -0
  1017. package/dist/core/web/scrapers/rubygems.d.ts.map +1 -0
  1018. package/dist/core/web/scrapers/rubygems.js +23 -0
  1019. package/dist/core/web/scrapers/rubygems.js.map +1 -0
  1020. package/dist/core/web/scrapers/stackoverflow.d.ts +3 -0
  1021. package/dist/core/web/scrapers/stackoverflow.d.ts.map +1 -0
  1022. package/dist/core/web/scrapers/stackoverflow.js +46 -0
  1023. package/dist/core/web/scrapers/stackoverflow.js.map +1 -0
  1024. package/dist/core/web/scrapers/tipos.d.ts +42 -0
  1025. package/dist/core/web/scrapers/tipos.d.ts.map +1 -0
  1026. package/dist/core/web/scrapers/tipos.js +23 -0
  1027. package/dist/core/web/scrapers/tipos.js.map +1 -0
  1028. package/dist/core/web/texto.d.ts +10 -0
  1029. package/dist/core/web/texto.d.ts.map +1 -0
  1030. package/dist/core/web/texto.js +26 -0
  1031. package/dist/core/web/texto.js.map +1 -0
  1032. package/dist/core/web/tools.d.ts +91 -0
  1033. package/dist/core/web/tools.d.ts.map +1 -0
  1034. package/dist/core/web/tools.js +304 -0
  1035. package/dist/core/web/tools.js.map +1 -0
  1036. package/dist/core/wiki/almacen.d.ts +33 -0
  1037. package/dist/core/wiki/almacen.d.ts.map +1 -0
  1038. package/dist/core/wiki/almacen.js +93 -0
  1039. package/dist/core/wiki/almacen.js.map +1 -0
  1040. package/dist/core/wiki/citas.d.ts +111 -0
  1041. package/dist/core/wiki/citas.d.ts.map +1 -0
  1042. package/dist/core/wiki/citas.js +146 -0
  1043. package/dist/core/wiki/citas.js.map +1 -0
  1044. package/dist/core/workflows/agent-runner.d.ts +88 -0
  1045. package/dist/core/workflows/agent-runner.d.ts.map +1 -0
  1046. package/dist/core/workflows/agent-runner.js +312 -0
  1047. package/dist/core/workflows/agent-runner.js.map +1 -0
  1048. package/dist/core/workflows/builtins.d.ts +41 -0
  1049. package/dist/core/workflows/builtins.d.ts.map +1 -0
  1050. package/dist/core/workflows/builtins.js +283 -0
  1051. package/dist/core/workflows/builtins.js.map +1 -0
  1052. package/dist/core/workflows/contrato/esquema.d.ts +32 -0
  1053. package/dist/core/workflows/contrato/esquema.d.ts.map +1 -0
  1054. package/dist/core/workflows/contrato/esquema.js +25 -0
  1055. package/dist/core/workflows/contrato/esquema.js.map +1 -0
  1056. package/dist/core/workflows/contrato/reparar-argumentos.d.ts +69 -0
  1057. package/dist/core/workflows/contrato/reparar-argumentos.d.ts.map +1 -0
  1058. package/dist/core/workflows/contrato/reparar-argumentos.js +117 -0
  1059. package/dist/core/workflows/contrato/reparar-argumentos.js.map +1 -0
  1060. package/dist/core/workflows/contrato/validador.d.ts +30 -0
  1061. package/dist/core/workflows/contrato/validador.d.ts.map +1 -0
  1062. package/dist/core/workflows/contrato/validador.js +56 -0
  1063. package/dist/core/workflows/contrato/validador.js.map +1 -0
  1064. package/dist/core/workflows/contrato/yield.d.ts +65 -0
  1065. package/dist/core/workflows/contrato/yield.d.ts.map +1 -0
  1066. package/dist/core/workflows/contrato/yield.js +80 -0
  1067. package/dist/core/workflows/contrato/yield.js.map +1 -0
  1068. package/dist/core/workflows/goal-engine/engine.d.ts +151 -0
  1069. package/dist/core/workflows/goal-engine/engine.d.ts.map +1 -0
  1070. package/dist/core/workflows/goal-engine/engine.js +503 -0
  1071. package/dist/core/workflows/goal-engine/engine.js.map +1 -0
  1072. package/dist/core/workflows/goal-engine/errors.d.ts +7 -0
  1073. package/dist/core/workflows/goal-engine/errors.d.ts.map +1 -0
  1074. package/dist/core/workflows/goal-engine/errors.js +9 -0
  1075. package/dist/core/workflows/goal-engine/errors.js.map +1 -0
  1076. package/dist/core/workflows/goal-engine/index.d.ts +13 -0
  1077. package/dist/core/workflows/goal-engine/index.d.ts.map +1 -0
  1078. package/dist/core/workflows/goal-engine/index.js +8 -0
  1079. package/dist/core/workflows/goal-engine/index.js.map +1 -0
  1080. package/dist/core/workflows/goal-engine/persistence.d.ts +31 -0
  1081. package/dist/core/workflows/goal-engine/persistence.d.ts.map +1 -0
  1082. package/dist/core/workflows/goal-engine/persistence.js +145 -0
  1083. package/dist/core/workflows/goal-engine/persistence.js.map +1 -0
  1084. package/dist/core/workflows/goal-engine/prompts.d.ts +37 -0
  1085. package/dist/core/workflows/goal-engine/prompts.d.ts.map +1 -0
  1086. package/dist/core/workflows/goal-engine/prompts.js +131 -0
  1087. package/dist/core/workflows/goal-engine/prompts.js.map +1 -0
  1088. package/dist/core/workflows/goal-engine/state.d.ts +41 -0
  1089. package/dist/core/workflows/goal-engine/state.d.ts.map +1 -0
  1090. package/dist/core/workflows/goal-engine/state.js +397 -0
  1091. package/dist/core/workflows/goal-engine/state.js.map +1 -0
  1092. package/dist/core/workflows/goal-engine/tools.d.ts +31 -0
  1093. package/dist/core/workflows/goal-engine/tools.d.ts.map +1 -0
  1094. package/dist/core/workflows/goal-engine/tools.js +211 -0
  1095. package/dist/core/workflows/goal-engine/tools.js.map +1 -0
  1096. package/dist/core/workflows/goal-engine/types.d.ts +286 -0
  1097. package/dist/core/workflows/goal-engine/types.d.ts.map +1 -0
  1098. package/dist/core/workflows/goal-engine/types.js +17 -0
  1099. package/dist/core/workflows/goal-engine/types.js.map +1 -0
  1100. package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts +23 -0
  1101. package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts.map +1 -0
  1102. package/dist/core/workflows/goal-engine/worktree-fingerprint.js +72 -0
  1103. package/dist/core/workflows/goal-engine/worktree-fingerprint.js.map +1 -0
  1104. package/dist/core/workflows/graph-sync.d.ts +67 -0
  1105. package/dist/core/workflows/graph-sync.d.ts.map +1 -0
  1106. package/dist/core/workflows/graph-sync.js +188 -0
  1107. package/dist/core/workflows/graph-sync.js.map +1 -0
  1108. package/dist/core/workflows/graph.d.ts +143 -0
  1109. package/dist/core/workflows/graph.d.ts.map +1 -0
  1110. package/dist/core/workflows/graph.js +319 -0
  1111. package/dist/core/workflows/graph.js.map +1 -0
  1112. package/dist/core/workflows/index.d.ts +26 -0
  1113. package/dist/core/workflows/index.d.ts.map +1 -0
  1114. package/dist/core/workflows/index.js +18 -0
  1115. package/dist/core/workflows/index.js.map +1 -0
  1116. package/dist/core/workflows/journal.d.ts +68 -0
  1117. package/dist/core/workflows/journal.d.ts.map +1 -0
  1118. package/dist/core/workflows/journal.js +83 -0
  1119. package/dist/core/workflows/journal.js.map +1 -0
  1120. package/dist/core/workflows/manager.d.ts +122 -0
  1121. package/dist/core/workflows/manager.d.ts.map +1 -0
  1122. package/dist/core/workflows/manager.js +351 -0
  1123. package/dist/core/workflows/manager.js.map +1 -0
  1124. package/dist/core/workflows/resolve-script.d.ts +35 -0
  1125. package/dist/core/workflows/resolve-script.d.ts.map +1 -0
  1126. package/dist/core/workflows/resolve-script.js +66 -0
  1127. package/dist/core/workflows/resolve-script.js.map +1 -0
  1128. package/dist/core/workflows/runtime.d.ts +62 -0
  1129. package/dist/core/workflows/runtime.d.ts.map +1 -0
  1130. package/dist/core/workflows/runtime.js +380 -0
  1131. package/dist/core/workflows/runtime.js.map +1 -0
  1132. package/dist/core/workflows/save-as-skill.d.ts +27 -0
  1133. package/dist/core/workflows/save-as-skill.d.ts.map +1 -0
  1134. package/dist/core/workflows/save-as-skill.js +54 -0
  1135. package/dist/core/workflows/save-as-skill.js.map +1 -0
  1136. package/dist/core/workflows/shared-store.d.ts +31 -0
  1137. package/dist/core/workflows/shared-store.d.ts.map +1 -0
  1138. package/dist/core/workflows/shared-store.js +80 -0
  1139. package/dist/core/workflows/shared-store.js.map +1 -0
  1140. package/dist/core/workflows/subagent-host.d.ts +50 -0
  1141. package/dist/core/workflows/subagent-host.d.ts.map +1 -0
  1142. package/dist/core/workflows/subagent-host.js +225 -0
  1143. package/dist/core/workflows/subagent-host.js.map +1 -0
  1144. package/dist/core/workflows/tool-workflow.d.ts +22 -0
  1145. package/dist/core/workflows/tool-workflow.d.ts.map +1 -0
  1146. package/dist/core/workflows/tool-workflow.js +120 -0
  1147. package/dist/core/workflows/tool-workflow.js.map +1 -0
  1148. package/dist/core/workflows/types.d.ts +191 -0
  1149. package/dist/core/workflows/types.d.ts.map +1 -0
  1150. package/dist/core/workflows/types.js +26 -0
  1151. package/dist/core/workflows/types.js.map +1 -0
  1152. package/dist/core/workflows/worktree.d.ts +42 -0
  1153. package/dist/core/workflows/worktree.d.ts.map +1 -0
  1154. package/dist/core/workflows/worktree.js +107 -0
  1155. package/dist/core/workflows/worktree.js.map +1 -0
  1156. package/dist/extensions/llama/index.d.ts.map +1 -1
  1157. package/dist/extensions/llama/index.js +2 -0
  1158. package/dist/extensions/llama/index.js.map +1 -1
  1159. package/dist/extensions/llama/provider.d.ts.map +1 -1
  1160. package/dist/extensions/llama/provider.js +6 -2
  1161. package/dist/extensions/llama/provider.js.map +1 -1
  1162. package/dist/extensions/remoto/index.d.ts +22 -0
  1163. package/dist/extensions/remoto/index.d.ts.map +1 -0
  1164. package/dist/extensions/remoto/index.js +54 -0
  1165. package/dist/extensions/remoto/index.js.map +1 -0
  1166. package/dist/index.d.ts +1 -13
  1167. package/dist/index.d.ts.map +1 -1
  1168. package/dist/index.js +7 -13
  1169. package/dist/index.js.map +1 -1
  1170. package/dist/main.d.ts +4 -0
  1171. package/dist/main.d.ts.map +1 -1
  1172. package/dist/main.js +26 -15
  1173. package/dist/main.js.map +1 -1
  1174. package/dist/migrations.d.ts.map +1 -1
  1175. package/dist/migrations.js +4 -3
  1176. package/dist/migrations.js.map +1 -1
  1177. package/dist/modes/acp/acp-mode.d.ts +42 -0
  1178. package/dist/modes/acp/acp-mode.d.ts.map +1 -0
  1179. package/dist/modes/acp/acp-mode.js +190 -0
  1180. package/dist/modes/acp/acp-mode.js.map +1 -0
  1181. package/dist/modes/acp/events.d.ts +74 -0
  1182. package/dist/modes/acp/events.d.ts.map +1 -0
  1183. package/dist/modes/acp/events.js +116 -0
  1184. package/dist/modes/acp/events.js.map +1 -0
  1185. package/dist/modes/interactive/components/home-screen.d.ts.map +1 -1
  1186. package/dist/modes/interactive/components/home-screen.js +2 -2
  1187. package/dist/modes/interactive/components/home-screen.js.map +1 -1
  1188. package/dist/modes/interactive/components/model-selector.d.ts +9 -3
  1189. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  1190. package/dist/modes/interactive/components/model-selector.js +56 -12
  1191. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  1192. package/dist/modes/interactive/components/prompt-optimization.d.ts +16 -0
  1193. package/dist/modes/interactive/components/prompt-optimization.d.ts.map +1 -0
  1194. package/dist/modes/interactive/components/prompt-optimization.js +46 -0
  1195. package/dist/modes/interactive/components/prompt-optimization.js.map +1 -0
  1196. package/dist/modes/interactive/components/settings-selector.d.ts +19 -2
  1197. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  1198. package/dist/modes/interactive/components/settings-selector.js +180 -56
  1199. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  1200. package/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
  1201. package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
  1202. package/dist/modes/interactive/components/settings-submenu.js +165 -0
  1203. package/dist/modes/interactive/components/settings-submenu.js.map +1 -0
  1204. package/dist/modes/interactive/components/thinking-selector.d.ts +15 -3
  1205. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  1206. package/dist/modes/interactive/components/thinking-selector.js +74 -17
  1207. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  1208. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  1209. package/dist/modes/interactive/external-editor.js +2 -1
  1210. package/dist/modes/interactive/external-editor.js.map +1 -1
  1211. package/dist/modes/interactive/interactive-mode.d.ts +21 -1
  1212. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  1213. package/dist/modes/interactive/interactive-mode.js +709 -75
  1214. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  1215. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  1216. package/dist/modes/interactive/theme/theme.js +4 -3
  1217. package/dist/modes/interactive/theme/theme.js.map +1 -1
  1218. package/dist/modes/json-event.d.ts +16 -13
  1219. package/dist/modes/json-event.d.ts.map +1 -1
  1220. package/dist/modes/json-event.js +20 -6
  1221. package/dist/modes/json-event.js.map +1 -1
  1222. package/dist/modes/print-mode.d.ts.map +1 -1
  1223. package/dist/modes/print-mode.js +11 -0
  1224. package/dist/modes/print-mode.js.map +1 -1
  1225. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  1226. package/dist/modes/rpc/rpc-mode.js +173 -0
  1227. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  1228. package/dist/modes/rpc/rpc-types.d.ts +29 -0
  1229. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  1230. package/dist/modes/rpc/rpc-types.js.map +1 -1
  1231. package/dist/package-manager-cli.d.ts.map +1 -1
  1232. package/dist/package-manager-cli.js +27 -5
  1233. package/dist/package-manager-cli.js.map +1 -1
  1234. package/dist/server/attach.d.ts +56 -0
  1235. package/dist/server/attach.d.ts.map +1 -0
  1236. package/dist/server/attach.js +130 -0
  1237. package/dist/server/attach.js.map +1 -0
  1238. package/dist/server/extension-ops.d.ts +40 -0
  1239. package/dist/server/extension-ops.d.ts.map +1 -0
  1240. package/dist/server/extension-ops.js +146 -0
  1241. package/dist/server/extension-ops.js.map +1 -0
  1242. package/dist/server/pi-server-service.d.ts +85 -0
  1243. package/dist/server/pi-server-service.d.ts.map +1 -0
  1244. package/dist/server/pi-server-service.js +213 -0
  1245. package/dist/server/pi-server-service.js.map +1 -0
  1246. package/dist/server/scheduler-tick.d.ts +32 -0
  1247. package/dist/server/scheduler-tick.d.ts.map +1 -0
  1248. package/dist/server/scheduler-tick.js +47 -0
  1249. package/dist/server/scheduler-tick.js.map +1 -0
  1250. package/dist/server/serve.d.ts +25 -0
  1251. package/dist/server/serve.d.ts.map +1 -0
  1252. package/dist/server/serve.js +83 -0
  1253. package/dist/server/serve.js.map +1 -0
  1254. package/dist/server/transcript.d.ts +38 -0
  1255. package/dist/server/transcript.d.ts.map +1 -0
  1256. package/dist/server/transcript.js +176 -0
  1257. package/dist/server/transcript.js.map +1 -0
  1258. package/dist/skills/ada-engine/SKILL.md +153 -0
  1259. package/dist/skills/skill-creator/SKILL.md +90 -0
  1260. package/dist/telegram/api.d.ts +75 -0
  1261. package/dist/telegram/api.d.ts.map +1 -0
  1262. package/dist/telegram/api.js +104 -0
  1263. package/dist/telegram/api.js.map +1 -0
  1264. package/dist/telegram/bridge.d.ts +85 -0
  1265. package/dist/telegram/bridge.d.ts.map +1 -0
  1266. package/dist/telegram/bridge.js +182 -0
  1267. package/dist/telegram/bridge.js.map +1 -0
  1268. package/dist/telegram/journal.d.ts +67 -0
  1269. package/dist/telegram/journal.d.ts.map +1 -0
  1270. package/dist/telegram/journal.js +119 -0
  1271. package/dist/telegram/journal.js.map +1 -0
  1272. package/dist/telegram/servidor.d.ts +15 -0
  1273. package/dist/telegram/servidor.d.ts.map +1 -0
  1274. package/dist/telegram/servidor.js +74 -0
  1275. package/dist/telegram/servidor.js.map +1 -0
  1276. package/dist/utils/frontmatter.d.ts.map +1 -1
  1277. package/dist/utils/frontmatter.js +2 -1
  1278. package/dist/utils/frontmatter.js.map +1 -1
  1279. package/dist/utils/management-http.d.ts +5 -3
  1280. package/dist/utils/management-http.d.ts.map +1 -1
  1281. package/dist/utils/management-http.js +14 -10
  1282. package/dist/utils/management-http.js.map +1 -1
  1283. package/dist/utils/shell.d.ts +11 -0
  1284. package/dist/utils/shell.d.ts.map +1 -1
  1285. package/dist/utils/shell.js +11 -0
  1286. package/dist/utils/shell.js.map +1 -1
  1287. package/dist/utils/text.d.ts +8 -0
  1288. package/dist/utils/text.d.ts.map +1 -0
  1289. package/dist/utils/text.js +9 -0
  1290. package/dist/utils/text.js.map +1 -0
  1291. package/dist/utils/version-check.d.ts.map +1 -1
  1292. package/dist/utils/version-check.js +29 -1
  1293. package/dist/utils/version-check.js.map +1 -1
  1294. package/docs/compaction.md +25 -10
  1295. package/docs/compliance.md +241 -0
  1296. package/docs/containerization.md +24 -24
  1297. package/docs/custom-provider.md +15 -12
  1298. package/docs/development.md +47 -10
  1299. package/docs/docs.json +14 -2
  1300. package/docs/environment-variables.md +20 -17
  1301. package/docs/extensions.md +62 -51
  1302. package/docs/index.md +15 -21
  1303. package/docs/json.md +10 -5
  1304. package/docs/keybindings.md +5 -5
  1305. package/docs/llama-cpp.md +9 -7
  1306. package/docs/models.md +18 -12
  1307. package/docs/packages.md +45 -45
  1308. package/docs/prompt-templates.md +5 -5
  1309. package/docs/providers.md +12 -12
  1310. package/docs/quickstart.md +39 -39
  1311. package/docs/rpc.md +21 -15
  1312. package/docs/sdk.md +38 -38
  1313. package/docs/security.md +26 -21
  1314. package/docs/session-format.md +7 -7
  1315. package/docs/sessions.md +14 -14
  1316. package/docs/settings.md +47 -22
  1317. package/docs/shell-aliases.md +2 -2
  1318. package/docs/skills.md +14 -13
  1319. package/docs/terminal-setup.md +14 -14
  1320. package/docs/termux.md +7 -7
  1321. package/docs/themes.md +11 -11
  1322. package/docs/tmux.md +4 -4
  1323. package/docs/tui.md +3 -3
  1324. package/docs/usage.md +54 -54
  1325. package/docs/windows.md +2 -2
  1326. package/examples/extensions/border-status-editor.ts +1 -1
  1327. package/examples/extensions/git-checkpoint.ts +2 -2
  1328. package/examples/extensions/notify.ts +3 -1
  1329. package/examples/extensions/subagent/README.md +1 -1
  1330. package/examples/extensions/subagent/index.ts +6 -1
  1331. package/examples/extensions/titlebar-spinner.ts +1 -1
  1332. package/examples/rpc-extension-ui.ts +1 -1
  1333. package/examples/sdk/06-extensions.ts +1 -1
  1334. package/examples/sdk/12-full-control.ts +9 -0
  1335. package/examples/sdk/README.md +1 -1
  1336. package/npm-shrinkwrap.json +35 -261
  1337. package/package.json +9 -3
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Cliente de `ada attach` — reconecta a una sesión residente.
3
+ *
4
+ * Renderiza el transcript existente y luego sigue en vivo. Salir del attach NO
5
+ * mata la sesión: el dueño de la ejecución es el proceso que sirve.
6
+ *
7
+ * Acepta entrada: lo que escribas se envía como prompt a la sesión remota. No
8
+ * pretende sustituir al TUI completo (sin editor multilínea, sin @-menciones,
9
+ * sin atajos) — es un terminal de trabajo sobre una sesión que vive en otro
10
+ * proceso.
11
+ *
12
+ * Se usa `attachSession` (lease compartido) a propósito, no `acquireSession`
13
+ * exclusivo: reconectar para mirar no debería expulsar a nadie.
14
+ */
15
+ /** Lector de líneas por defecto sobre stdin. */
16
+ function stdinLines(onLine) {
17
+ const readline = require("node:readline");
18
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout, prompt: "› " });
19
+ rl.on("line", (line) => {
20
+ const text = line.trim();
21
+ if (text)
22
+ onLine(text);
23
+ rl.prompt();
24
+ });
25
+ rl.prompt();
26
+ return { close: () => rl.close() };
27
+ }
28
+ /** Una línea legible por item del transcript. */
29
+ export function renderItem(item) {
30
+ if (item.role === "user") {
31
+ const text = item.content
32
+ .map((block) => (block.type === "text" ? block.text : "[imagen]"))
33
+ .join(" ")
34
+ .trim();
35
+ return `\n› ${text}`;
36
+ }
37
+ if (item.role === "assistant") {
38
+ const text = item.content
39
+ .map((block) => {
40
+ if (block.type === "text")
41
+ return block.text;
42
+ if (block.type === "toolCall")
43
+ return ` ⚙ ${block.toolName}`;
44
+ return ""; // el thinking no se vuelca en un attach
45
+ })
46
+ .filter(Boolean)
47
+ .join("\n")
48
+ .trim();
49
+ const suffix = item.status === "streaming" ? " …" : item.status === "error" ? " [error]" : "";
50
+ return text ? `${text}${suffix}` : "";
51
+ }
52
+ const status = item.status === "error" ? "✗" : "✓";
53
+ return ` ${status} ${item.toolName}`;
54
+ }
55
+ /** Solo lo NUEVO respecto a lo ya pintado: un attach no repite el transcript. */
56
+ export function renderIncremental(snapshot, alreadyRendered) {
57
+ const fresh = snapshot.transcript.slice(alreadyRendered);
58
+ const text = fresh.map(renderItem).filter(Boolean).join("\n");
59
+ return { text, rendered: snapshot.transcript.length };
60
+ }
61
+ /**
62
+ * Bucle de attach sobre un lease ya adquirido.
63
+ *
64
+ * Separado de la conexión a propósito: así se puede probar el comportamiento
65
+ * (render, envío, fallos, limpieza) sin levantar un socket.
66
+ */
67
+ export async function attachWithLease(options) {
68
+ const { lease, write } = options;
69
+ let rendered = 0;
70
+ const paint = (snapshot) => {
71
+ const { text, rendered: next } = renderIncremental(snapshot, rendered);
72
+ rendered = next;
73
+ if (text)
74
+ write(`${text}\n`);
75
+ };
76
+ if (lease.snapshot)
77
+ paint(lease.snapshot);
78
+ const unsubscribe = lease.subscribe(paint);
79
+ write(options.readOnly
80
+ ? `\n[observando ${options.sessionId}. Ctrl-C se desconecta; la sesión sigue viva]\n`
81
+ : `\n[adjunto a ${options.sessionId}. Escribe para enviar; Ctrl-C se desconecta y la sesión sigue viva]\n`);
82
+ let input;
83
+ await new Promise((resolve) => {
84
+ // Una señal ya abortada debe resolver de inmediato, no esperar un evento
85
+ // que nunca llegará.
86
+ if (options.signal?.aborted) {
87
+ resolve();
88
+ return;
89
+ }
90
+ const stop = () => resolve();
91
+ options.signal?.addEventListener("abort", stop, { once: true });
92
+ process.once("SIGINT", stop);
93
+ if (!options.readOnly) {
94
+ const reader = options.readLines ?? stdinLines;
95
+ input = reader((line) => {
96
+ // Un fallo al enviar no debe tirar el attach: la sesión sigue viva en
97
+ // el otro proceso y el usuario puede reintentar.
98
+ void lease.prompt(line).catch((error) => {
99
+ write(`[no se pudo enviar: ${error instanceof Error ? error.message : String(error)}]\n`);
100
+ });
101
+ });
102
+ }
103
+ });
104
+ input?.close();
105
+ unsubscribe();
106
+ }
107
+ export async function attach(options) {
108
+ const write = options.write ?? ((text) => process.stdout.write(text));
109
+ const { PiClient } = await import("@earendil-works/pi-client");
110
+ const { createUnixTransportFactory } = await import("@earendil-works/pi-client/unix");
111
+ const client = new PiClient({ transportFactory: createUnixTransportFactory({ path: options.socketPath }) });
112
+ let lease;
113
+ try {
114
+ lease = await client.attachSession(options.sessionId);
115
+ await attachWithLease({
116
+ lease,
117
+ sessionId: options.sessionId,
118
+ write,
119
+ signal: options.signal,
120
+ readLines: options.readLines,
121
+ readOnly: options.readOnly,
122
+ });
123
+ }
124
+ finally {
125
+ // detach, NO dispose de la sesión: desengancharse no debe matar el trabajo.
126
+ await lease?.detach().catch(() => { });
127
+ await client.dispose().catch(() => { });
128
+ }
129
+ }
130
+ //# sourceMappingURL=attach.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../src/server/attach.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Cliente de `ada attach` — reconecta a una sesión residente.\n *\n * Renderiza el transcript existente y luego sigue en vivo. Salir del attach NO\n * mata la sesión: el dueño de la ejecución es el proceso que sirve.\n *\n * Acepta entrada: lo que escribas se envía como prompt a la sesión remota. No\n * pretende sustituir al TUI completo (sin editor multilínea, sin @-menciones,\n * sin atajos) — es un terminal de trabajo sobre una sesión que vive en otro\n * proceso.\n *\n * Se usa `attachSession` (lease compartido) a propósito, no `acquireSession`\n * exclusivo: reconectar para mirar no debería expulsar a nadie.\n */\n\nimport type { PiSessionHandle } from \"@earendil-works/pi-client\";\nimport type { SessionSnapshot, TranscriptItem } from \"@earendil-works/pi-protocol\";\n\nexport interface AttachOptions {\n\tsocketPath: string;\n\tsessionId: string;\n\t/** Salida (inyectable para tests). */\n\twrite?: (text: string) => void;\n\t/** Corta el bucle en vivo (tests). */\n\tsignal?: AbortSignal;\n\t/** Entrada de línea (inyectable para tests). Por defecto, stdin. */\n\treadLines?: (onLine: (line: string) => void) => { close(): void };\n\t/** Solo observar, sin aceptar entrada. */\n\treadOnly?: boolean;\n}\n\n/** Lector de líneas por defecto sobre stdin. */\nfunction stdinLines(onLine: (line: string) => void): { close(): void } {\n\tconst readline = require(\"node:readline\") as typeof import(\"node:readline\");\n\tconst rl = readline.createInterface({ input: process.stdin, output: process.stdout, prompt: \"› \" });\n\trl.on(\"line\", (line) => {\n\t\tconst text = line.trim();\n\t\tif (text) onLine(text);\n\t\trl.prompt();\n\t});\n\trl.prompt();\n\treturn { close: () => rl.close() };\n}\n\n/** Una línea legible por item del transcript. */\nexport function renderItem(item: TranscriptItem): string {\n\tif (item.role === \"user\") {\n\t\tconst text = item.content\n\t\t\t.map((block) => (block.type === \"text\" ? block.text : \"[imagen]\"))\n\t\t\t.join(\" \")\n\t\t\t.trim();\n\t\treturn `\\n› ${text}`;\n\t}\n\tif (item.role === \"assistant\") {\n\t\tconst text = item.content\n\t\t\t.map((block) => {\n\t\t\t\tif (block.type === \"text\") return block.text;\n\t\t\t\tif (block.type === \"toolCall\") return ` ⚙ ${block.toolName}`;\n\t\t\t\treturn \"\"; // el thinking no se vuelca en un attach\n\t\t\t})\n\t\t\t.filter(Boolean)\n\t\t\t.join(\"\\n\")\n\t\t\t.trim();\n\t\tconst suffix = item.status === \"streaming\" ? \" …\" : item.status === \"error\" ? \" [error]\" : \"\";\n\t\treturn text ? `${text}${suffix}` : \"\";\n\t}\n\tconst status = item.status === \"error\" ? \"✗\" : \"✓\";\n\treturn ` ${status} ${item.toolName}`;\n}\n\n/** Solo lo NUEVO respecto a lo ya pintado: un attach no repite el transcript. */\nexport function renderIncremental(\n\tsnapshot: SessionSnapshot,\n\talreadyRendered: number,\n): { text: string; rendered: number } {\n\tconst fresh = snapshot.transcript.slice(alreadyRendered);\n\tconst text = fresh.map(renderItem).filter(Boolean).join(\"\\n\");\n\treturn { text, rendered: snapshot.transcript.length };\n}\n\nexport interface AttachLoopOptions {\n\tlease: PiSessionHandle;\n\tsessionId: string;\n\twrite: (text: string) => void;\n\tsignal?: AbortSignal;\n\treadLines?: (onLine: (line: string) => void) => { close(): void };\n\treadOnly?: boolean;\n}\n\n/**\n * Bucle de attach sobre un lease ya adquirido.\n *\n * Separado de la conexión a propósito: así se puede probar el comportamiento\n * (render, envío, fallos, limpieza) sin levantar un socket.\n */\nexport async function attachWithLease(options: AttachLoopOptions): Promise<void> {\n\tconst { lease, write } = options;\n\tlet rendered = 0;\n\tconst paint = (snapshot: SessionSnapshot) => {\n\t\tconst { text, rendered: next } = renderIncremental(snapshot, rendered);\n\t\trendered = next;\n\t\tif (text) write(`${text}\\n`);\n\t};\n\n\tif (lease.snapshot) paint(lease.snapshot);\n\tconst unsubscribe = lease.subscribe(paint);\n\n\twrite(\n\t\toptions.readOnly\n\t\t\t? `\\n[observando ${options.sessionId}. Ctrl-C se desconecta; la sesión sigue viva]\\n`\n\t\t\t: `\\n[adjunto a ${options.sessionId}. Escribe para enviar; Ctrl-C se desconecta y la sesión sigue viva]\\n`,\n\t);\n\n\tlet input: { close(): void } | undefined;\n\tawait new Promise<void>((resolve) => {\n\t\t// Una señal ya abortada debe resolver de inmediato, no esperar un evento\n\t\t// que nunca llegará.\n\t\tif (options.signal?.aborted) {\n\t\t\tresolve();\n\t\t\treturn;\n\t\t}\n\t\tconst stop = () => resolve();\n\t\toptions.signal?.addEventListener(\"abort\", stop, { once: true });\n\t\tprocess.once(\"SIGINT\", stop);\n\n\t\tif (!options.readOnly) {\n\t\t\tconst reader = options.readLines ?? stdinLines;\n\t\t\tinput = reader((line) => {\n\t\t\t\t// Un fallo al enviar no debe tirar el attach: la sesión sigue viva en\n\t\t\t\t// el otro proceso y el usuario puede reintentar.\n\t\t\t\tvoid lease.prompt(line).catch((error: unknown) => {\n\t\t\t\t\twrite(`[no se pudo enviar: ${error instanceof Error ? error.message : String(error)}]\\n`);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t});\n\tinput?.close();\n\tunsubscribe();\n}\n\nexport async function attach(options: AttachOptions): Promise<void> {\n\tconst write = options.write ?? ((text: string) => process.stdout.write(text));\n\tconst { PiClient } = await import(\"@earendil-works/pi-client\");\n\tconst { createUnixTransportFactory } = await import(\"@earendil-works/pi-client/unix\");\n\n\tconst client = new PiClient({ transportFactory: createUnixTransportFactory({ path: options.socketPath }) });\n\tlet lease: PiSessionHandle | undefined;\n\ttry {\n\t\tlease = await client.attachSession(options.sessionId);\n\t\tawait attachWithLease({\n\t\t\tlease,\n\t\t\tsessionId: options.sessionId,\n\t\t\twrite,\n\t\t\tsignal: options.signal,\n\t\t\treadLines: options.readLines,\n\t\t\treadOnly: options.readOnly,\n\t\t});\n\t} finally {\n\t\t// detach, NO dispose de la sesión: desengancharse no debe matar el trabajo.\n\t\tawait lease?.detach().catch(() => {});\n\t\tawait client.dispose().catch(() => {});\n\t}\n}\n"]}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Operaciones de Ada sobre sesiones residentes: `compact`, `rename`, `fork` y
3
+ * `kill`.
4
+ *
5
+ * Viajan por el comando genérico `extension` del protocolo en vez de tener cada
6
+ * una su propio comando tipado. La razón es de coste, no de pereza:
7
+ * `packages/protocol` y `packages/server` son de upstream, y cada línea que
8
+ * añadimos ahí se reaplica en cada sync y se rompe cuando upstream refactoriza
9
+ * esos ficheros. Un comando genérico se paga una vez; estas cuatro operaciones
10
+ * y todas las futuras viven aquí, a coste cero.
11
+ *
12
+ * Lo que el cable pierde en tipado se recupera AQUÍ: cada op valida su payload
13
+ * con su propio schema antes de tocar nada. La validación no desaparece, se
14
+ * mueve a donde no cuesta presupuesto.
15
+ */
16
+ import type { ExtensionRequest } from "@earendil-works/pi-server";
17
+ export interface ExtensionOpsContext {
18
+ /** Retira una sesión del servidor tras un `kill`. */
19
+ forget: (sessionId: string) => void;
20
+ }
21
+ /** Nombres soportados, para que `mcp_list`-style clients puedan descubrirlos. */
22
+ export declare const EXTENSION_OPS: readonly ["ops", "compact", "rename", "fork", "kill"];
23
+ export declare function createExtensionHandler(context: ExtensionOpsContext): (request: ExtensionRequest) => Promise<unknown>;
24
+ /**
25
+ * Cliente de las operaciones desde el CLI.
26
+ *
27
+ * Vive aquí, junto a la definición de las ops, para que añadir una no obligue a
28
+ * tocar dos sitios distantes ni a recordar que existe un cliente aparte.
29
+ */
30
+ export declare function runExtensionOp(options: {
31
+ socketPath: string;
32
+ op: string;
33
+ sessionId?: string;
34
+ payload?: unknown;
35
+ }): Promise<{
36
+ ok: boolean;
37
+ data?: unknown;
38
+ error?: string;
39
+ }>;
40
+ //# sourceMappingURL=extension-ops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-ops.d.ts","sourceRoot":"","sources":["../../src/server/extension-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AA8BlE,MAAM,WAAW,mBAAmB;IACnC,sDAAqD;IACrD,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,iFAAiF;AACjF,eAAO,MAAM,aAAa,uDAAwD,CAAC;AAEnF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,mDAyDlE;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAwC3D","sourcesContent":["/**\n * Operaciones de Ada sobre sesiones residentes: `compact`, `rename`, `fork` y\n * `kill`.\n *\n * Viajan por el comando genérico `extension` del protocolo en vez de tener cada\n * una su propio comando tipado. La razón es de coste, no de pereza:\n * `packages/protocol` y `packages/server` son de upstream, y cada línea que\n * añadimos ahí se reaplica en cada sync y se rompe cuando upstream refactoriza\n * esos ficheros. Un comando genérico se paga una vez; estas cuatro operaciones\n * y todas las futuras viven aquí, a coste cero.\n *\n * Lo que el cable pierde en tipado se recupera AQUÍ: cada op valida su payload\n * con su propio schema antes de tocar nada. La validación no desaparece, se\n * mueve a donde no cuesta presupuesto.\n */\n\nimport type { ExtensionRequest } from \"@earendil-works/pi-server\";\nimport { type Static, type TSchema, Type } from \"typebox\";\nimport { Value } from \"typebox/value\";\nimport type { AdaSessionRuntime } from \"./pi-server-service.ts\";\n\nconst NoPayload = Type.Object({});\nconst RenamePayload = Type.Object({ name: Type.String({ minLength: 1 }) });\nconst CompactPayload = Type.Object({ customInstructions: Type.Optional(Type.String()) });\n\n/**\n * Valida el payload opaco contra el schema de la operación.\n *\n * Se lanza con el error de validación real, no un \"argumentos inválidos\"\n * genérico: quien llama por un socket no tiene forma de inspeccionar qué\n * esperaba el otro lado.\n */\nfunction parse<T extends TSchema>(schema: T, payload: unknown): Static<T> {\n\tconst value = payload ?? {};\n\tif (Value.Check(schema, value)) return value as Static<T>;\n\tconst [first] = [...Value.Errors(schema, value)];\n\tthrow new Error(`payload inválido: ${first ? first.message : \"no coincide con el schema\"}`);\n}\n\n/** Exige una sesión viva. Las cuatro ops operan sobre una sesión concreta. */\nfunction requireRuntime(request: ExtensionRequest): AdaSessionRuntime {\n\tif (!request.sessionId) throw new Error(\"falta sessionId\");\n\tif (!request.runtime) throw new Error(`la sesión ${request.sessionId} no está abierta en este servidor`);\n\treturn request.runtime as AdaSessionRuntime;\n}\n\nexport interface ExtensionOpsContext {\n\t/** Retira una sesión del servidor tras un `kill`. */\n\tforget: (sessionId: string) => void;\n}\n\n/** Nombres soportados, para que `mcp_list`-style clients puedan descubrirlos. */\nexport const EXTENSION_OPS = [\"ops\", \"compact\", \"rename\", \"fork\", \"kill\"] as const;\n\nexport function createExtensionHandler(context: ExtensionOpsContext) {\n\treturn async (request: ExtensionRequest): Promise<unknown> => {\n\t\tswitch (request.op) {\n\t\t\t// Descubrimiento: un cliente nuevo contra un servidor viejo necesita\n\t\t\t// poder preguntar qué existe en vez de adivinar.\n\t\t\tcase \"ops\":\n\t\t\t\treturn { ops: [...EXTENSION_OPS] };\n\n\t\t\tcase \"compact\": {\n\t\t\t\tconst { customInstructions } = parse(CompactPayload, request.payload);\n\t\t\t\tconst runtime = requireRuntime(request);\n\t\t\t\tconst result = await runtime.session.compact(customInstructions);\n\t\t\t\treturn { compacted: true, result };\n\t\t\t}\n\n\t\t\tcase \"rename\": {\n\t\t\t\tconst { name } = parse(RenamePayload, request.payload);\n\t\t\t\tconst runtime = requireRuntime(request);\n\t\t\t\t// El nombre se persiste como una entrada más del JSONL, que es como\n\t\t\t\t// lo hace el resto del producto: sin estado paralelo que se\n\t\t\t\t// desincronice del fichero de sesión.\n\t\t\t\truntime.sessionManager.appendSessionInfo(name);\n\t\t\t\treturn { renamed: true, name };\n\t\t\t}\n\n\t\t\tcase \"fork\": {\n\t\t\t\tparse(NoPayload, request.payload);\n\t\t\t\tconst runtime = requireRuntime(request);\n\t\t\t\tconst sourceFile = runtime.sessionManager.getSessionFile();\n\t\t\t\tif (!sourceFile) throw new Error(\"la sesión aún no se ha persistido; no hay nada que bifurcar\");\n\t\t\t\t// Copia del JSONL a una sesión nueva. NO se abre aquí: bifurcar es\n\t\t\t\t// una operación sobre el historial, y decidir cuándo cargarla es del\n\t\t\t\t// cliente. Abrirla sola dejaría un runtime que nadie pidió.\n\t\t\t\tconst { copyFile } = await import(\"node:fs/promises\");\n\t\t\t\tconst { SessionManager } = await import(\"../core/session-manager.ts\");\n\t\t\t\tconst target = SessionManager.create(runtime.sessionManager.getCwd());\n\t\t\t\tconst targetFile = target.getSessionFile() ?? target.newSession();\n\t\t\t\tif (!targetFile) throw new Error(\"no se pudo crear la sesión destino\");\n\t\t\t\tawait copyFile(sourceFile, targetFile);\n\t\t\t\treturn { forked: true, sessionId: target.getSessionId(), path: targetFile };\n\t\t\t}\n\n\t\t\tcase \"kill\": {\n\t\t\t\tparse(NoPayload, request.payload);\n\t\t\t\tconst runtime = requireRuntime(request);\n\t\t\t\t// El historial en disco NO se borra. \"kill\" retira la sesión de la\n\t\t\t\t// memoria del servidor; destruir el JSONL sería irreversible y no es\n\t\t\t\t// lo que nadie espera de un kill.\n\t\t\t\tawait runtime.dispose();\n\t\t\t\tcontext.forget(request.sessionId as string);\n\t\t\t\treturn { killed: true, historyKept: true };\n\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`operación desconocida: ${request.op}. Disponibles: ${EXTENSION_OPS.join(\", \")}`);\n\t\t}\n\t};\n}\n\n/**\n * Cliente de las operaciones desde el CLI.\n *\n * Vive aquí, junto a la definición de las ops, para que añadir una no obligue a\n * tocar dos sitios distantes ni a recordar que existe un cliente aparte.\n */\nexport async function runExtensionOp(options: {\n\tsocketPath: string;\n\top: string;\n\tsessionId?: string;\n\tpayload?: unknown;\n}): Promise<{ ok: boolean; data?: unknown; error?: string }> {\n\tconst { PiClient } = await import(\"@earendil-works/pi-client\");\n\tconst { createUnixTransportFactory } = await import(\"@earendil-works/pi-client/unix\");\n\tconst client = new PiClient({ transportFactory: createUnixTransportFactory({ path: options.socketPath }) });\n\ttry {\n\t\tawait client.connect();\n\t\t// `attachSession` antes de operar: el servidor solo entrega el runtime vivo\n\t\t// de una sesión abierta, y sin esto un `compact` sobre una sesión existente\n\t\t// pero cerrada fallaría con \"no está abierta\" sin explicar que basta con\n\t\t// engancharse.\n\t\tif (options.sessionId) await client.attachSession(options.sessionId).catch(() => undefined);\n\n\t\t// El punto de extensión del protocolo lo añadimos nosotros a\n\t\t// `packages/{client,protocol,server}`, y esos paquetes NO viajan en el\n\t\t// tarball: `@hoilab/ada-cli` los resuelve del registro de npm, así que\n\t\t// quien instala recibe los de upstream, sin este comando.\n\t\t//\n\t\t// Sin esta comprobación, `ada-cli session <id> compact` reventaba con\n\t\t// «client.extension is not a function» —un error que no dice nada de la\n\t\t// causa— en vez de explicar qué falta. Es la diferencia entre «está roto» y\n\t\t// «esto necesita una compilación desde fuentes».\n\t\tif (typeof (client as { extension?: unknown }).extension !== \"function\") {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\terror:\n\t\t\t\t\t\"Esta operación necesita el punto de extensión del protocolo, que solo está en una \" +\n\t\t\t\t\t\"compilación desde fuentes: el paquete publicado depende de `@earendil-works/pi-client` \" +\n\t\t\t\t\t\"del registro, que no lo trae. Compila desde el repositorio (ver la sección «Building \" +\n\t\t\t\t\t\"from source» del README) o usa el resto de subcomandos, que no lo necesitan.\",\n\t\t\t};\n\t\t}\n\n\t\tconst result = await client.extension(options.op, {\n\t\t\tsessionId: options.sessionId,\n\t\t\tpayload: options.payload,\n\t\t});\n\t\treturn { ok: result.ok, data: result.data, error: result.error };\n\t} finally {\n\t\tawait client.dispose().catch(() => {});\n\t}\n}\n"]}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Operaciones de Ada sobre sesiones residentes: `compact`, `rename`, `fork` y
3
+ * `kill`.
4
+ *
5
+ * Viajan por el comando genérico `extension` del protocolo en vez de tener cada
6
+ * una su propio comando tipado. La razón es de coste, no de pereza:
7
+ * `packages/protocol` y `packages/server` son de upstream, y cada línea que
8
+ * añadimos ahí se reaplica en cada sync y se rompe cuando upstream refactoriza
9
+ * esos ficheros. Un comando genérico se paga una vez; estas cuatro operaciones
10
+ * y todas las futuras viven aquí, a coste cero.
11
+ *
12
+ * Lo que el cable pierde en tipado se recupera AQUÍ: cada op valida su payload
13
+ * con su propio schema antes de tocar nada. La validación no desaparece, se
14
+ * mueve a donde no cuesta presupuesto.
15
+ */
16
+ import { Type } from "typebox";
17
+ import { Value } from "typebox/value";
18
+ const NoPayload = Type.Object({});
19
+ const RenamePayload = Type.Object({ name: Type.String({ minLength: 1 }) });
20
+ const CompactPayload = Type.Object({ customInstructions: Type.Optional(Type.String()) });
21
+ /**
22
+ * Valida el payload opaco contra el schema de la operación.
23
+ *
24
+ * Se lanza con el error de validación real, no un "argumentos inválidos"
25
+ * genérico: quien llama por un socket no tiene forma de inspeccionar qué
26
+ * esperaba el otro lado.
27
+ */
28
+ function parse(schema, payload) {
29
+ const value = payload ?? {};
30
+ if (Value.Check(schema, value))
31
+ return value;
32
+ const [first] = [...Value.Errors(schema, value)];
33
+ throw new Error(`payload inválido: ${first ? first.message : "no coincide con el schema"}`);
34
+ }
35
+ /** Exige una sesión viva. Las cuatro ops operan sobre una sesión concreta. */
36
+ function requireRuntime(request) {
37
+ if (!request.sessionId)
38
+ throw new Error("falta sessionId");
39
+ if (!request.runtime)
40
+ throw new Error(`la sesión ${request.sessionId} no está abierta en este servidor`);
41
+ return request.runtime;
42
+ }
43
+ /** Nombres soportados, para que `mcp_list`-style clients puedan descubrirlos. */
44
+ export const EXTENSION_OPS = ["ops", "compact", "rename", "fork", "kill"];
45
+ export function createExtensionHandler(context) {
46
+ return async (request) => {
47
+ switch (request.op) {
48
+ // Descubrimiento: un cliente nuevo contra un servidor viejo necesita
49
+ // poder preguntar qué existe en vez de adivinar.
50
+ case "ops":
51
+ return { ops: [...EXTENSION_OPS] };
52
+ case "compact": {
53
+ const { customInstructions } = parse(CompactPayload, request.payload);
54
+ const runtime = requireRuntime(request);
55
+ const result = await runtime.session.compact(customInstructions);
56
+ return { compacted: true, result };
57
+ }
58
+ case "rename": {
59
+ const { name } = parse(RenamePayload, request.payload);
60
+ const runtime = requireRuntime(request);
61
+ // El nombre se persiste como una entrada más del JSONL, que es como
62
+ // lo hace el resto del producto: sin estado paralelo que se
63
+ // desincronice del fichero de sesión.
64
+ runtime.sessionManager.appendSessionInfo(name);
65
+ return { renamed: true, name };
66
+ }
67
+ case "fork": {
68
+ parse(NoPayload, request.payload);
69
+ const runtime = requireRuntime(request);
70
+ const sourceFile = runtime.sessionManager.getSessionFile();
71
+ if (!sourceFile)
72
+ throw new Error("la sesión aún no se ha persistido; no hay nada que bifurcar");
73
+ // Copia del JSONL a una sesión nueva. NO se abre aquí: bifurcar es
74
+ // una operación sobre el historial, y decidir cuándo cargarla es del
75
+ // cliente. Abrirla sola dejaría un runtime que nadie pidió.
76
+ const { copyFile } = await import("node:fs/promises");
77
+ const { SessionManager } = await import("../core/session-manager.js");
78
+ const target = SessionManager.create(runtime.sessionManager.getCwd());
79
+ const targetFile = target.getSessionFile() ?? target.newSession();
80
+ if (!targetFile)
81
+ throw new Error("no se pudo crear la sesión destino");
82
+ await copyFile(sourceFile, targetFile);
83
+ return { forked: true, sessionId: target.getSessionId(), path: targetFile };
84
+ }
85
+ case "kill": {
86
+ parse(NoPayload, request.payload);
87
+ const runtime = requireRuntime(request);
88
+ // El historial en disco NO se borra. "kill" retira la sesión de la
89
+ // memoria del servidor; destruir el JSONL sería irreversible y no es
90
+ // lo que nadie espera de un kill.
91
+ await runtime.dispose();
92
+ context.forget(request.sessionId);
93
+ return { killed: true, historyKept: true };
94
+ }
95
+ default:
96
+ throw new Error(`operación desconocida: ${request.op}. Disponibles: ${EXTENSION_OPS.join(", ")}`);
97
+ }
98
+ };
99
+ }
100
+ /**
101
+ * Cliente de las operaciones desde el CLI.
102
+ *
103
+ * Vive aquí, junto a la definición de las ops, para que añadir una no obligue a
104
+ * tocar dos sitios distantes ni a recordar que existe un cliente aparte.
105
+ */
106
+ export async function runExtensionOp(options) {
107
+ const { PiClient } = await import("@earendil-works/pi-client");
108
+ const { createUnixTransportFactory } = await import("@earendil-works/pi-client/unix");
109
+ const client = new PiClient({ transportFactory: createUnixTransportFactory({ path: options.socketPath }) });
110
+ try {
111
+ await client.connect();
112
+ // `attachSession` antes de operar: el servidor solo entrega el runtime vivo
113
+ // de una sesión abierta, y sin esto un `compact` sobre una sesión existente
114
+ // pero cerrada fallaría con "no está abierta" sin explicar que basta con
115
+ // engancharse.
116
+ if (options.sessionId)
117
+ await client.attachSession(options.sessionId).catch(() => undefined);
118
+ // El punto de extensión del protocolo lo añadimos nosotros a
119
+ // `packages/{client,protocol,server}`, y esos paquetes NO viajan en el
120
+ // tarball: `@hoilab/ada-cli` los resuelve del registro de npm, así que
121
+ // quien instala recibe los de upstream, sin este comando.
122
+ //
123
+ // Sin esta comprobación, `ada-cli session <id> compact` reventaba con
124
+ // «client.extension is not a function» —un error que no dice nada de la
125
+ // causa— en vez de explicar qué falta. Es la diferencia entre «está roto» y
126
+ // «esto necesita una compilación desde fuentes».
127
+ if (typeof client.extension !== "function") {
128
+ return {
129
+ ok: false,
130
+ error: "Esta operación necesita el punto de extensión del protocolo, que solo está en una " +
131
+ "compilación desde fuentes: el paquete publicado depende de `@earendil-works/pi-client` " +
132
+ "del registro, que no lo trae. Compila desde el repositorio (ver la sección «Building " +
133
+ "from source» del README) o usa el resto de subcomandos, que no lo necesitan.",
134
+ };
135
+ }
136
+ const result = await client.extension(options.op, {
137
+ sessionId: options.sessionId,
138
+ payload: options.payload,
139
+ });
140
+ return { ok: result.ok, data: result.data, error: result.error };
141
+ }
142
+ finally {
143
+ await client.dispose().catch(() => { });
144
+ }
145
+ }
146
+ //# sourceMappingURL=extension-ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-ops.js","sourceRoot":"","sources":["../../src/server/extension-ops.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Operaciones de Ada sobre sesiones residentes: `compact`, `rename`, `fork` y\n * `kill`.\n *\n * Viajan por el comando genérico `extension` del protocolo en vez de tener cada\n * una su propio comando tipado. La razón es de coste, no de pereza:\n * `packages/protocol` y `packages/server` son de upstream, y cada línea que\n * añadimos ahí se reaplica en cada sync y se rompe cuando upstream refactoriza\n * esos ficheros. Un comando genérico se paga una vez; estas cuatro operaciones\n * y todas las futuras viven aquí, a coste cero.\n *\n * Lo que el cable pierde en tipado se recupera AQUÍ: cada op valida su payload\n * con su propio schema antes de tocar nada. La validación no desaparece, se\n * mueve a donde no cuesta presupuesto.\n */\n\nimport type { ExtensionRequest } from \"@earendil-works/pi-server\";\nimport { type Static, type TSchema, Type } from \"typebox\";\nimport { Value } from \"typebox/value\";\nimport type { AdaSessionRuntime } from \"./pi-server-service.ts\";\n\nconst NoPayload = Type.Object({});\nconst RenamePayload = Type.Object({ name: Type.String({ minLength: 1 }) });\nconst CompactPayload = Type.Object({ customInstructions: Type.Optional(Type.String()) });\n\n/**\n * Valida el payload opaco contra el schema de la operación.\n *\n * Se lanza con el error de validación real, no un \"argumentos inválidos\"\n * genérico: quien llama por un socket no tiene forma de inspeccionar qué\n * esperaba el otro lado.\n */\nfunction parse<T extends TSchema>(schema: T, payload: unknown): Static<T> {\n\tconst value = payload ?? {};\n\tif (Value.Check(schema, value)) return value as Static<T>;\n\tconst [first] = [...Value.Errors(schema, value)];\n\tthrow new Error(`payload inválido: ${first ? first.message : \"no coincide con el schema\"}`);\n}\n\n/** Exige una sesión viva. Las cuatro ops operan sobre una sesión concreta. */\nfunction requireRuntime(request: ExtensionRequest): AdaSessionRuntime {\n\tif (!request.sessionId) throw new Error(\"falta sessionId\");\n\tif (!request.runtime) throw new Error(`la sesión ${request.sessionId} no está abierta en este servidor`);\n\treturn request.runtime as AdaSessionRuntime;\n}\n\nexport interface ExtensionOpsContext {\n\t/** Retira una sesión del servidor tras un `kill`. */\n\tforget: (sessionId: string) => void;\n}\n\n/** Nombres soportados, para que `mcp_list`-style clients puedan descubrirlos. */\nexport const EXTENSION_OPS = [\"ops\", \"compact\", \"rename\", \"fork\", \"kill\"] as const;\n\nexport function createExtensionHandler(context: ExtensionOpsContext) {\n\treturn async (request: ExtensionRequest): Promise<unknown> => {\n\t\tswitch (request.op) {\n\t\t\t// Descubrimiento: un cliente nuevo contra un servidor viejo necesita\n\t\t\t// poder preguntar qué existe en vez de adivinar.\n\t\t\tcase \"ops\":\n\t\t\t\treturn { ops: [...EXTENSION_OPS] };\n\n\t\t\tcase \"compact\": {\n\t\t\t\tconst { customInstructions } = parse(CompactPayload, request.payload);\n\t\t\t\tconst runtime = requireRuntime(request);\n\t\t\t\tconst result = await runtime.session.compact(customInstructions);\n\t\t\t\treturn { compacted: true, result };\n\t\t\t}\n\n\t\t\tcase \"rename\": {\n\t\t\t\tconst { name } = parse(RenamePayload, request.payload);\n\t\t\t\tconst runtime = requireRuntime(request);\n\t\t\t\t// El nombre se persiste como una entrada más del JSONL, que es como\n\t\t\t\t// lo hace el resto del producto: sin estado paralelo que se\n\t\t\t\t// desincronice del fichero de sesión.\n\t\t\t\truntime.sessionManager.appendSessionInfo(name);\n\t\t\t\treturn { renamed: true, name };\n\t\t\t}\n\n\t\t\tcase \"fork\": {\n\t\t\t\tparse(NoPayload, request.payload);\n\t\t\t\tconst runtime = requireRuntime(request);\n\t\t\t\tconst sourceFile = runtime.sessionManager.getSessionFile();\n\t\t\t\tif (!sourceFile) throw new Error(\"la sesión aún no se ha persistido; no hay nada que bifurcar\");\n\t\t\t\t// Copia del JSONL a una sesión nueva. NO se abre aquí: bifurcar es\n\t\t\t\t// una operación sobre el historial, y decidir cuándo cargarla es del\n\t\t\t\t// cliente. Abrirla sola dejaría un runtime que nadie pidió.\n\t\t\t\tconst { copyFile } = await import(\"node:fs/promises\");\n\t\t\t\tconst { SessionManager } = await import(\"../core/session-manager.ts\");\n\t\t\t\tconst target = SessionManager.create(runtime.sessionManager.getCwd());\n\t\t\t\tconst targetFile = target.getSessionFile() ?? target.newSession();\n\t\t\t\tif (!targetFile) throw new Error(\"no se pudo crear la sesión destino\");\n\t\t\t\tawait copyFile(sourceFile, targetFile);\n\t\t\t\treturn { forked: true, sessionId: target.getSessionId(), path: targetFile };\n\t\t\t}\n\n\t\t\tcase \"kill\": {\n\t\t\t\tparse(NoPayload, request.payload);\n\t\t\t\tconst runtime = requireRuntime(request);\n\t\t\t\t// El historial en disco NO se borra. \"kill\" retira la sesión de la\n\t\t\t\t// memoria del servidor; destruir el JSONL sería irreversible y no es\n\t\t\t\t// lo que nadie espera de un kill.\n\t\t\t\tawait runtime.dispose();\n\t\t\t\tcontext.forget(request.sessionId as string);\n\t\t\t\treturn { killed: true, historyKept: true };\n\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`operación desconocida: ${request.op}. Disponibles: ${EXTENSION_OPS.join(\", \")}`);\n\t\t}\n\t};\n}\n\n/**\n * Cliente de las operaciones desde el CLI.\n *\n * Vive aquí, junto a la definición de las ops, para que añadir una no obligue a\n * tocar dos sitios distantes ni a recordar que existe un cliente aparte.\n */\nexport async function runExtensionOp(options: {\n\tsocketPath: string;\n\top: string;\n\tsessionId?: string;\n\tpayload?: unknown;\n}): Promise<{ ok: boolean; data?: unknown; error?: string }> {\n\tconst { PiClient } = await import(\"@earendil-works/pi-client\");\n\tconst { createUnixTransportFactory } = await import(\"@earendil-works/pi-client/unix\");\n\tconst client = new PiClient({ transportFactory: createUnixTransportFactory({ path: options.socketPath }) });\n\ttry {\n\t\tawait client.connect();\n\t\t// `attachSession` antes de operar: el servidor solo entrega el runtime vivo\n\t\t// de una sesión abierta, y sin esto un `compact` sobre una sesión existente\n\t\t// pero cerrada fallaría con \"no está abierta\" sin explicar que basta con\n\t\t// engancharse.\n\t\tif (options.sessionId) await client.attachSession(options.sessionId).catch(() => undefined);\n\n\t\t// El punto de extensión del protocolo lo añadimos nosotros a\n\t\t// `packages/{client,protocol,server}`, y esos paquetes NO viajan en el\n\t\t// tarball: `@hoilab/ada-cli` los resuelve del registro de npm, así que\n\t\t// quien instala recibe los de upstream, sin este comando.\n\t\t//\n\t\t// Sin esta comprobación, `ada-cli session <id> compact` reventaba con\n\t\t// «client.extension is not a function» —un error que no dice nada de la\n\t\t// causa— en vez de explicar qué falta. Es la diferencia entre «está roto» y\n\t\t// «esto necesita una compilación desde fuentes».\n\t\tif (typeof (client as { extension?: unknown }).extension !== \"function\") {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\terror:\n\t\t\t\t\t\"Esta operación necesita el punto de extensión del protocolo, que solo está en una \" +\n\t\t\t\t\t\"compilación desde fuentes: el paquete publicado depende de `@earendil-works/pi-client` \" +\n\t\t\t\t\t\"del registro, que no lo trae. Compila desde el repositorio (ver la sección «Building \" +\n\t\t\t\t\t\"from source» del README) o usa el resto de subcomandos, que no lo necesitan.\",\n\t\t\t};\n\t\t}\n\n\t\tconst result = await client.extension(options.op, {\n\t\t\tsessionId: options.sessionId,\n\t\t\tpayload: options.payload,\n\t\t});\n\t\treturn { ok: result.ok, data: result.data, error: result.error };\n\t} finally {\n\t\tawait client.dispose().catch(() => {});\n\t}\n}\n"]}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Implementación de `PiServerService` — sesiones residentes de Ada.
3
+ *
4
+ * Ada distribuye `packages/server` y `packages/client` de upstream desde hace
5
+ * versiones y NADIE los implementaba: `PiServerService` es una interfaz de 4
6
+ * métodos que estaba a cero. Ese era todo el hueco frente a un competidor que,
7
+ * tras BORRAR esos paquetes de su fork, construyó ~20k líneas de demonio a mano.
8
+ *
9
+ * Aquí solo se adapta lo que ya tenemos (SessionManager, AgentSession) a esa
10
+ * interfaz. El acoplamiento a un esquema que upstream marca como experimental
11
+ * queda contenido en este fichero y en `serve.ts`: si cambia una firma, se
12
+ * arregla aquí y en ningún otro sitio.
13
+ */
14
+ import type { ModelMetadata, ModelRef, SessionMetadata, SessionPhase, SessionSnapshot, ThinkingLevel } from "@earendil-works/pi-protocol";
15
+ import type { CreateSessionOptions, PiServerService, PiSessionRuntime, PiSessionRuntimeEvent, PromptInput, SteerInput } from "@earendil-works/pi-server";
16
+ import type { AgentSession } from "../core/agent-session.ts";
17
+ import { SessionManager } from "../core/session-manager.ts";
18
+ /** Crea la AgentSession subyacente. Inyectable para tests. */
19
+ export type CreateServedSession = (options: {
20
+ cwd: string;
21
+ sessionManager: SessionManager;
22
+ model?: ModelRef;
23
+ thinkingLevel?: ThinkingLevel;
24
+ }) => Promise<AgentSession>;
25
+ export interface AdaServerServiceOptions {
26
+ agentDir: string;
27
+ defaultCwd: string;
28
+ createSession: CreateServedSession;
29
+ listModels?: () => Promise<ModelMetadata[]>;
30
+ }
31
+ /**
32
+ * Un runtime adquirido sobre una AgentSession viva.
33
+ *
34
+ * `revision` es monótona y sube en cada evento: es lo que permite a un cliente
35
+ * saber que su copia está obsoleta sin comparar transcripts enteros.
36
+ */
37
+ export declare class AdaSessionRuntime implements PiSessionRuntime {
38
+ private listeners;
39
+ private revision;
40
+ private phase;
41
+ private unsubscribe;
42
+ private disposed;
43
+ readonly session: AgentSession;
44
+ readonly sessionManager: SessionManager;
45
+ private createdAt;
46
+ constructor(session: AgentSession, sessionManager: SessionManager, createdAt: number);
47
+ private emit;
48
+ snapshot(): SessionSnapshot;
49
+ getPhase(): SessionPhase;
50
+ prompt(input: PromptInput): Promise<void>;
51
+ steer(input: SteerInput): Promise<void>;
52
+ abort(): Promise<void>;
53
+ setModel(model: ModelRef): Promise<void>;
54
+ setThinking(thinkingLevel: ThinkingLevel): Promise<void>;
55
+ subscribe(listener: (event: PiSessionRuntimeEvent) => void): () => void;
56
+ dispose(): Promise<void>;
57
+ }
58
+ /**
59
+ * Servicio de sesiones residentes.
60
+ *
61
+ * Exclusividad: una sesión abierta dos veces devuelve el MISMO runtime en vez de
62
+ * crear un segundo dueño de ejecución. Dos procesos escribiendo el mismo JSONL
63
+ * es corrupción silenciosa, y con residencia deja de ser hipotético.
64
+ */
65
+ export declare class AdaServerService implements PiServerService {
66
+ private open;
67
+ private extensionHandler;
68
+ private options;
69
+ constructor(options: AdaServerServiceOptions);
70
+ listSessions(): Promise<SessionMetadata[]>;
71
+ listModels(): Promise<ModelMetadata[]>;
72
+ createSession(options: CreateSessionOptions): Promise<PiSessionRuntime>;
73
+ openSession(sessionId: string): Promise<PiSessionRuntime>;
74
+ /**
75
+ * Operaciones propias de Ada (compact/rename/fork/kill).
76
+ *
77
+ * Se delega en `extension-ops.ts` en vez de crecer aquí: el servicio es la
78
+ * frontera con el protocolo, no el sitio donde acumular una op por cada cosa
79
+ * que se le ocurra a un cliente.
80
+ */
81
+ extension(request: import("@earendil-works/pi-server").ExtensionRequest): Promise<unknown>;
82
+ /** Cierra todos los runtimes vivos (apagado del servidor). */
83
+ disposeAll(): Promise<void>;
84
+ }
85
+ //# sourceMappingURL=pi-server-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-server-service.d.ts","sourceRoot":"","sources":["../../src/server/pi-server-service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Implementación de `PiServerService` — sesiones residentes de Ada.\n *\n * Ada distribuye `packages/server` y `packages/client` de upstream desde hace\n * versiones y NADIE los implementaba: `PiServerService` es una interfaz de 4\n * métodos que estaba a cero. Ese era todo el hueco frente a un competidor que,\n * tras BORRAR esos paquetes de su fork, construyó ~20k líneas de demonio a mano.\n *\n * Aquí solo se adapta lo que ya tenemos (SessionManager, AgentSession) a esa\n * interfaz. El acoplamiento a un esquema que upstream marca como experimental\n * queda contenido en este fichero y en `serve.ts`: si cambia una firma, se\n * arregla aquí y en ningún otro sitio.\n */\n\nimport type {\n\tModelMetadata,\n\tModelRef,\n\tSessionMetadata,\n\tSessionPhase,\n\tSessionSnapshot,\n\tThinkingLevel,\n} from \"@earendil-works/pi-protocol\";\nimport type {\n\tCreateSessionOptions,\n\tPiServerService,\n\tPiSessionRuntime,\n\tPiSessionRuntimeEvent,\n\tPromptInput,\n\tSteerInput,\n} from \"@earendil-works/pi-server\";\nimport type { AgentSession } from \"../core/agent-session.ts\";\nimport { SessionManager } from \"../core/session-manager.ts\";\nimport { createExtensionHandler } from \"./extension-ops.ts\";\nimport { projectTranscript } from \"./transcript.ts\";\n\n/** Crea la AgentSession subyacente. Inyectable para tests. */\nexport type CreateServedSession = (options: {\n\tcwd: string;\n\tsessionManager: SessionManager;\n\tmodel?: ModelRef;\n\tthinkingLevel?: ThinkingLevel;\n}) => Promise<AgentSession>;\n\nexport interface AdaServerServiceOptions {\n\tagentDir: string;\n\tdefaultCwd: string;\n\tcreateSession: CreateServedSession;\n\tlistModels?: () => Promise<ModelMetadata[]>;\n}\n\n/**\n * Un runtime adquirido sobre una AgentSession viva.\n *\n * `revision` es monótona y sube en cada evento: es lo que permite a un cliente\n * saber que su copia está obsoleta sin comparar transcripts enteros.\n */\nexport class AdaSessionRuntime implements PiSessionRuntime {\n\tprivate listeners = new Set<(event: PiSessionRuntimeEvent) => void>();\n\tprivate revision = 0;\n\tprivate phase: SessionPhase = \"idle\";\n\tprivate unsubscribe: (() => void) | null = null;\n\tprivate disposed = false;\n\n\t// Accesibles para las operaciones de extensión (extension-ops.ts), que\n\t// necesitan la sesión y su manager y viven fuera de esta clase para no\n\t// engordarla con una op por cada cosa que se le ocurra a un cliente.\n\treadonly session: AgentSession;\n\treadonly sessionManager: SessionManager;\n\tprivate createdAt: number;\n\n\tconstructor(session: AgentSession, sessionManager: SessionManager, createdAt: number) {\n\t\tthis.session = session;\n\t\tthis.sessionManager = sessionManager;\n\t\tthis.createdAt = createdAt;\n\t\tthis.unsubscribe = this.session.subscribe((event: { type?: string }) => {\n\t\t\t// Fase derivada de los eventos de la sesión: el cliente la pinta.\n\t\t\tif (event.type === \"agent_start\") this.phase = \"turn\";\n\t\t\telse if (event.type === \"agent_end\" || event.type === \"agent_settled\") this.phase = \"idle\";\n\t\t\tthis.revision++;\n\t\t\tthis.emit({ type: \"snapshot\" });\n\t\t});\n\t}\n\n\tprivate emit(event: PiSessionRuntimeEvent): void {\n\t\tfor (const listener of this.listeners) {\n\t\t\ttry {\n\t\t\t\tlistener(event);\n\t\t\t} catch {\n\t\t\t\t// Un cliente que revienta no debe tumbar la sesión.\n\t\t\t}\n\t\t}\n\t}\n\n\tsnapshot(): SessionSnapshot {\n\t\tconst messages = this.session.messages ?? [];\n\t\tconst model = this.session.model;\n\t\treturn {\n\t\t\tid: this.sessionManager.getSessionId(),\n\t\t\t...(this.sessionManager.getSessionName() ? { name: this.sessionManager.getSessionName() as string } : {}),\n\t\t\tcwd: this.sessionManager.getCwd() || process.cwd(),\n\t\t\tcreatedAt: this.createdAt,\n\t\t\tupdatedAt: Date.now(),\n\t\t\tphase: this.phase,\n\t\t\tmodel: { provider: model?.provider ?? \"unknown\", id: model?.id ?? \"unknown\" },\n\t\t\tthinkingLevel: (this.session.thinkingLevel ?? \"off\") as ThinkingLevel,\n\t\t\tattached: this.listeners.size > 0,\n\t\t\tlocked: false,\n\t\t\trevision: this.revision,\n\t\t\ttranscript: projectTranscript(messages as never),\n\t\t\t// El encolado de steering vive en la AgentSession y no se expone; se\n\t\t\t// declara vacío en vez de inventarlo.\n\t\t\tqueuedSteer: [],\n\t\t\tqueuedSteerCount: 0,\n\t\t};\n\t}\n\n\tgetPhase(): SessionPhase {\n\t\treturn this.phase;\n\t}\n\n\tasync prompt(input: PromptInput): Promise<void> {\n\t\tawait this.session.sendUserMessage(input.text);\n\t}\n\n\tasync steer(input: SteerInput): Promise<void> {\n\t\t// `steer` entra en el turno en curso; `prompt` abre uno nuevo.\n\t\tawait this.session.sendUserMessage(input.text, { streamingBehavior: \"steer\" } as never);\n\t}\n\n\tasync abort(): Promise<void> {\n\t\tawait this.session.abort();\n\t}\n\n\tasync setModel(model: ModelRef): Promise<void> {\n\t\t// setModel espera un Model resuelto; el protocolo manda una referencia.\n\t\tconst resolved = this.session.modelRuntime.getModel(model.provider, model.id);\n\t\tif (!resolved) throw new Error(`Modelo desconocido: ${model.provider}/${model.id}`);\n\t\tawait this.session.setModel(resolved);\n\t}\n\n\tasync setThinking(thinkingLevel: ThinkingLevel): Promise<void> {\n\t\tthis.session.setThinkingLevel(thinkingLevel as never);\n\t}\n\n\tsubscribe(listener: (event: PiSessionRuntimeEvent) => void): () => void {\n\t\tthis.listeners.add(listener);\n\t\treturn () => {\n\t\t\tthis.listeners.delete(listener);\n\t\t};\n\t}\n\n\tasync dispose(): Promise<void> {\n\t\tif (this.disposed) return;\n\t\tthis.disposed = true;\n\t\tthis.unsubscribe?.();\n\t\tthis.unsubscribe = null;\n\t\tthis.listeners.clear();\n\t}\n}\n\n/**\n * Servicio de sesiones residentes.\n *\n * Exclusividad: una sesión abierta dos veces devuelve el MISMO runtime en vez de\n * crear un segundo dueño de ejecución. Dos procesos escribiendo el mismo JSONL\n * es corrupción silenciosa, y con residencia deja de ser hipotético.\n */\nexport class AdaServerService implements PiServerService {\n\tprivate open = new Map<string, AdaSessionRuntime>();\n\tprivate extensionHandler: ReturnType<typeof createExtensionHandler> | undefined;\n\n\tprivate options: AdaServerServiceOptions;\n\n\tconstructor(options: AdaServerServiceOptions) {\n\t\tthis.options = options;\n\t}\n\n\tasync listSessions(): Promise<SessionMetadata[]> {\n\t\tconst sessions = await SessionManager.list(this.options.defaultCwd);\n\t\treturn sessions.map((s) => ({\n\t\t\tid: s.id,\n\t\t\tcreatedAt: s.created instanceof Date ? s.created.getTime() : 0,\n\t\t\t...(s.modified instanceof Date ? { updatedAt: s.modified.getTime() } : {}),\n\t\t\t...(s.name ? { sessionName: s.name } : {}),\n\t\t\t...(s.cwd ? { cwd: s.cwd } : {}),\n\t\t}));\n\t}\n\n\tasync listModels(): Promise<ModelMetadata[]> {\n\t\treturn (await this.options.listModels?.()) ?? [];\n\t}\n\n\tasync createSession(options: CreateSessionOptions): Promise<PiSessionRuntime> {\n\t\tconst cwd = options.cwd ?? this.options.defaultCwd;\n\t\tconst sessionManager = SessionManager.create(cwd);\n\t\tconst session = await this.options.createSession({\n\t\t\tcwd,\n\t\t\tsessionManager,\n\t\t\tmodel: options.model,\n\t\t\tthinkingLevel: options.thinkingLevel,\n\t\t});\n\t\tif (options.name) sessionManager.appendSessionInfo(options.name);\n\t\tconst runtime = new AdaSessionRuntime(session, sessionManager, Date.now());\n\t\t// PiServer asigna el id; se persiste ese exacto para poder reabrir.\n\t\tthis.open.set(options.id, runtime);\n\t\tthis.open.set(sessionManager.getSessionId(), runtime);\n\t\treturn runtime;\n\t}\n\n\tasync openSession(sessionId: string): Promise<PiSessionRuntime> {\n\t\tconst existing = this.open.get(sessionId);\n\t\tif (existing) return existing;\n\t\tconst sessions = await SessionManager.list(this.options.defaultCwd);\n\t\tconst found = sessions.find((s) => s.id === sessionId || s.id.startsWith(sessionId));\n\t\tif (!found) throw new Error(`Sesión no encontrada: ${sessionId}`);\n\t\tconst sessionManager = SessionManager.open(found.path, undefined, found.cwd || this.options.defaultCwd);\n\t\tconst session = await this.options.createSession({ cwd: found.cwd || this.options.defaultCwd, sessionManager });\n\t\tconst runtime = new AdaSessionRuntime(session, sessionManager, found.created?.getTime?.() ?? Date.now());\n\t\tthis.open.set(sessionId, runtime);\n\t\treturn runtime;\n\t}\n\n\t/**\n\t * Operaciones propias de Ada (compact/rename/fork/kill).\n\t *\n\t * Se delega en `extension-ops.ts` en vez de crecer aquí: el servicio es la\n\t * frontera con el protocolo, no el sitio donde acumular una op por cada cosa\n\t * que se le ocurra a un cliente.\n\t */\n\tasync extension(request: import(\"@earendil-works/pi-server\").ExtensionRequest): Promise<unknown> {\n\t\tthis.extensionHandler ??= createExtensionHandler({\n\t\t\tforget: (sessionId) => {\n\t\t\t\t// Se retiran TODOS los alias del runtime: `createSession` registra el\n\t\t\t\t// id del servidor y el del SessionManager, y dejar uno colgando haría\n\t\t\t\t// que un `open` posterior devolviera un runtime ya cerrado.\n\t\t\t\tconst runtime = this.open.get(sessionId);\n\t\t\t\tif (!runtime) return;\n\t\t\t\tfor (const [key, value] of [...this.open]) {\n\t\t\t\t\tif (value === runtime) this.open.delete(key);\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t\treturn this.extensionHandler(request);\n\t}\n\n\t/** Cierra todos los runtimes vivos (apagado del servidor). */\n\tasync disposeAll(): Promise<void> {\n\t\tconst seen = new Set<AdaSessionRuntime>();\n\t\tfor (const runtime of this.open.values()) {\n\t\t\tif (seen.has(runtime)) continue;\n\t\t\tseen.add(runtime);\n\t\t\tawait runtime.dispose();\n\t\t}\n\t\tthis.open.clear();\n\t}\n}\n"]}