@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,213 @@
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 { SessionManager } from "../core/session-manager.js";
15
+ import { createExtensionHandler } from "./extension-ops.js";
16
+ import { projectTranscript } from "./transcript.js";
17
+ /**
18
+ * Un runtime adquirido sobre una AgentSession viva.
19
+ *
20
+ * `revision` es monótona y sube en cada evento: es lo que permite a un cliente
21
+ * saber que su copia está obsoleta sin comparar transcripts enteros.
22
+ */
23
+ export class AdaSessionRuntime {
24
+ listeners = new Set();
25
+ revision = 0;
26
+ phase = "idle";
27
+ unsubscribe = null;
28
+ disposed = false;
29
+ // Accesibles para las operaciones de extensión (extension-ops.ts), que
30
+ // necesitan la sesión y su manager y viven fuera de esta clase para no
31
+ // engordarla con una op por cada cosa que se le ocurra a un cliente.
32
+ session;
33
+ sessionManager;
34
+ createdAt;
35
+ constructor(session, sessionManager, createdAt) {
36
+ this.session = session;
37
+ this.sessionManager = sessionManager;
38
+ this.createdAt = createdAt;
39
+ this.unsubscribe = this.session.subscribe((event) => {
40
+ // Fase derivada de los eventos de la sesión: el cliente la pinta.
41
+ if (event.type === "agent_start")
42
+ this.phase = "turn";
43
+ else if (event.type === "agent_end" || event.type === "agent_settled")
44
+ this.phase = "idle";
45
+ this.revision++;
46
+ this.emit({ type: "snapshot" });
47
+ });
48
+ }
49
+ emit(event) {
50
+ for (const listener of this.listeners) {
51
+ try {
52
+ listener(event);
53
+ }
54
+ catch {
55
+ // Un cliente que revienta no debe tumbar la sesión.
56
+ }
57
+ }
58
+ }
59
+ snapshot() {
60
+ const messages = this.session.messages ?? [];
61
+ const model = this.session.model;
62
+ return {
63
+ id: this.sessionManager.getSessionId(),
64
+ ...(this.sessionManager.getSessionName() ? { name: this.sessionManager.getSessionName() } : {}),
65
+ cwd: this.sessionManager.getCwd() || process.cwd(),
66
+ createdAt: this.createdAt,
67
+ updatedAt: Date.now(),
68
+ phase: this.phase,
69
+ model: { provider: model?.provider ?? "unknown", id: model?.id ?? "unknown" },
70
+ thinkingLevel: (this.session.thinkingLevel ?? "off"),
71
+ attached: this.listeners.size > 0,
72
+ locked: false,
73
+ revision: this.revision,
74
+ transcript: projectTranscript(messages),
75
+ // El encolado de steering vive en la AgentSession y no se expone; se
76
+ // declara vacío en vez de inventarlo.
77
+ queuedSteer: [],
78
+ queuedSteerCount: 0,
79
+ };
80
+ }
81
+ getPhase() {
82
+ return this.phase;
83
+ }
84
+ async prompt(input) {
85
+ await this.session.sendUserMessage(input.text);
86
+ }
87
+ async steer(input) {
88
+ // `steer` entra en el turno en curso; `prompt` abre uno nuevo.
89
+ await this.session.sendUserMessage(input.text, { streamingBehavior: "steer" });
90
+ }
91
+ async abort() {
92
+ await this.session.abort();
93
+ }
94
+ async setModel(model) {
95
+ // setModel espera un Model resuelto; el protocolo manda una referencia.
96
+ const resolved = this.session.modelRuntime.getModel(model.provider, model.id);
97
+ if (!resolved)
98
+ throw new Error(`Modelo desconocido: ${model.provider}/${model.id}`);
99
+ await this.session.setModel(resolved);
100
+ }
101
+ async setThinking(thinkingLevel) {
102
+ this.session.setThinkingLevel(thinkingLevel);
103
+ }
104
+ subscribe(listener) {
105
+ this.listeners.add(listener);
106
+ return () => {
107
+ this.listeners.delete(listener);
108
+ };
109
+ }
110
+ async dispose() {
111
+ if (this.disposed)
112
+ return;
113
+ this.disposed = true;
114
+ this.unsubscribe?.();
115
+ this.unsubscribe = null;
116
+ this.listeners.clear();
117
+ }
118
+ }
119
+ /**
120
+ * Servicio de sesiones residentes.
121
+ *
122
+ * Exclusividad: una sesión abierta dos veces devuelve el MISMO runtime en vez de
123
+ * crear un segundo dueño de ejecución. Dos procesos escribiendo el mismo JSONL
124
+ * es corrupción silenciosa, y con residencia deja de ser hipotético.
125
+ */
126
+ export class AdaServerService {
127
+ open = new Map();
128
+ extensionHandler;
129
+ options;
130
+ constructor(options) {
131
+ this.options = options;
132
+ }
133
+ async listSessions() {
134
+ const sessions = await SessionManager.list(this.options.defaultCwd);
135
+ return sessions.map((s) => ({
136
+ id: s.id,
137
+ createdAt: s.created instanceof Date ? s.created.getTime() : 0,
138
+ ...(s.modified instanceof Date ? { updatedAt: s.modified.getTime() } : {}),
139
+ ...(s.name ? { sessionName: s.name } : {}),
140
+ ...(s.cwd ? { cwd: s.cwd } : {}),
141
+ }));
142
+ }
143
+ async listModels() {
144
+ return (await this.options.listModels?.()) ?? [];
145
+ }
146
+ async createSession(options) {
147
+ const cwd = options.cwd ?? this.options.defaultCwd;
148
+ const sessionManager = SessionManager.create(cwd);
149
+ const session = await this.options.createSession({
150
+ cwd,
151
+ sessionManager,
152
+ model: options.model,
153
+ thinkingLevel: options.thinkingLevel,
154
+ });
155
+ if (options.name)
156
+ sessionManager.appendSessionInfo(options.name);
157
+ const runtime = new AdaSessionRuntime(session, sessionManager, Date.now());
158
+ // PiServer asigna el id; se persiste ese exacto para poder reabrir.
159
+ this.open.set(options.id, runtime);
160
+ this.open.set(sessionManager.getSessionId(), runtime);
161
+ return runtime;
162
+ }
163
+ async openSession(sessionId) {
164
+ const existing = this.open.get(sessionId);
165
+ if (existing)
166
+ return existing;
167
+ const sessions = await SessionManager.list(this.options.defaultCwd);
168
+ const found = sessions.find((s) => s.id === sessionId || s.id.startsWith(sessionId));
169
+ if (!found)
170
+ throw new Error(`Sesión no encontrada: ${sessionId}`);
171
+ const sessionManager = SessionManager.open(found.path, undefined, found.cwd || this.options.defaultCwd);
172
+ const session = await this.options.createSession({ cwd: found.cwd || this.options.defaultCwd, sessionManager });
173
+ const runtime = new AdaSessionRuntime(session, sessionManager, found.created?.getTime?.() ?? Date.now());
174
+ this.open.set(sessionId, runtime);
175
+ return runtime;
176
+ }
177
+ /**
178
+ * Operaciones propias de Ada (compact/rename/fork/kill).
179
+ *
180
+ * Se delega en `extension-ops.ts` en vez de crecer aquí: el servicio es la
181
+ * frontera con el protocolo, no el sitio donde acumular una op por cada cosa
182
+ * que se le ocurra a un cliente.
183
+ */
184
+ async extension(request) {
185
+ this.extensionHandler ??= createExtensionHandler({
186
+ forget: (sessionId) => {
187
+ // Se retiran TODOS los alias del runtime: `createSession` registra el
188
+ // id del servidor y el del SessionManager, y dejar uno colgando haría
189
+ // que un `open` posterior devolviera un runtime ya cerrado.
190
+ const runtime = this.open.get(sessionId);
191
+ if (!runtime)
192
+ return;
193
+ for (const [key, value] of [...this.open]) {
194
+ if (value === runtime)
195
+ this.open.delete(key);
196
+ }
197
+ },
198
+ });
199
+ return this.extensionHandler(request);
200
+ }
201
+ /** Cierra todos los runtimes vivos (apagado del servidor). */
202
+ async disposeAll() {
203
+ const seen = new Set();
204
+ for (const runtime of this.open.values()) {
205
+ if (seen.has(runtime))
206
+ continue;
207
+ seen.add(runtime);
208
+ await runtime.dispose();
209
+ }
210
+ this.open.clear();
211
+ }
212
+ }
213
+ //# sourceMappingURL=pi-server-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-server-service.js","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"]}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Reloj del scheduler dentro de `ada-cli serve`.
3
+ *
4
+ * El `Scheduler` sabe qué toca ejecutar (`claimDue`) y cómo cerrar una ejecución
5
+ * (`complete`), pero no ejecuta nada: necesita un proceso vivo que le pregunte.
6
+ * Ese proceso es el servidor, que es justamente el que ya mantiene sesiones
7
+ * residentes.
8
+ *
9
+ * Cada job entrega su prompt a una sesión propia. No se reutiliza una sesión
10
+ * compartida a propósito: dos jobs recurrentes escribiendo en el mismo historial
11
+ * se contaminarían el contexto mutuamente.
12
+ */
13
+ import type { Scheduler } from "../core/scheduler/scheduler.ts";
14
+ export interface SchedulerTickOptions {
15
+ scheduler: Scheduler;
16
+ /** Entrega el prompt de un job. Devuelve false si falló. */
17
+ dispatch: (job: {
18
+ id: string;
19
+ prompt: string;
20
+ }) => Promise<boolean>;
21
+ intervalMs?: number;
22
+ /** Reloj inyectable para los tests. */
23
+ now?: () => string;
24
+ onError?: (error: Error) => void;
25
+ }
26
+ export interface SchedulerTickHandle {
27
+ stop: () => void;
28
+ /** Ejecuta un ciclo ahora mismo. Para tests y para el arranque. */
29
+ tick: () => Promise<number>;
30
+ }
31
+ export declare function startSchedulerTick(options: SchedulerTickOptions): SchedulerTickHandle;
32
+ //# sourceMappingURL=scheduler-tick.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler-tick.d.ts","sourceRoot":"","sources":["../../src/server/scheduler-tick.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAEhE,MAAM,WAAW,oBAAoB;IACpC,SAAS,EAAE,SAAS,CAAC;IACrB,6DAA4D;IAC5D,QAAQ,EAAE,CAAC,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,mEAAmE;IACnE,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,mBAAmB,CAmCrF","sourcesContent":["/**\n * Reloj del scheduler dentro de `ada-cli serve`.\n *\n * El `Scheduler` sabe qué toca ejecutar (`claimDue`) y cómo cerrar una ejecución\n * (`complete`), pero no ejecuta nada: necesita un proceso vivo que le pregunte.\n * Ese proceso es el servidor, que es justamente el que ya mantiene sesiones\n * residentes.\n *\n * Cada job entrega su prompt a una sesión propia. No se reutiliza una sesión\n * compartida a propósito: dos jobs recurrentes escribiendo en el mismo historial\n * se contaminarían el contexto mutuamente.\n */\n\nimport type { Scheduler } from \"../core/scheduler/scheduler.ts\";\n\nexport interface SchedulerTickOptions {\n\tscheduler: Scheduler;\n\t/** Entrega el prompt de un job. Devuelve false si falló. */\n\tdispatch: (job: { id: string; prompt: string }) => Promise<boolean>;\n\tintervalMs?: number;\n\t/** Reloj inyectable para los tests. */\n\tnow?: () => string;\n\tonError?: (error: Error) => void;\n}\n\nexport interface SchedulerTickHandle {\n\tstop: () => void;\n\t/** Ejecuta un ciclo ahora mismo. Para tests y para el arranque. */\n\ttick: () => Promise<number>;\n}\n\nexport function startSchedulerTick(options: SchedulerTickOptions): SchedulerTickHandle {\n\tconst now = options.now ?? (() => new Date().toISOString());\n\tconst intervalMs = options.intervalMs ?? 30_000;\n\n\t// Al arrancar se liberan las ejecuciones que murieron con el proceso\n\t// anterior: sin esto un crash deja el job marcado \"en vuelo\" para siempre y\n\t// no se vuelve a entregar nunca.\n\toptions.scheduler.reconcile(now());\n\n\tconst tick = async (): Promise<number> => {\n\t\tlet dispatched = 0;\n\t\tfor (const { dispatchId, job } of options.scheduler.claimDue(now())) {\n\t\t\ttry {\n\t\t\t\tconst ok = await options.dispatch({ id: job.id, prompt: job.prompt });\n\t\t\t\toptions.scheduler.complete(dispatchId, ok);\n\t\t\t\tif (ok) dispatched++;\n\t\t\t} catch (error) {\n\t\t\t\t// Un job que revienta se cierra como fallo y NO tumba el reloj: el\n\t\t\t\t// resto de trabajos programados no tienen la culpa.\n\t\t\t\toptions.scheduler.complete(dispatchId, false);\n\t\t\t\toptions.onError?.(error instanceof Error ? error : new Error(String(error)));\n\t\t\t}\n\t\t}\n\t\treturn dispatched;\n\t};\n\n\tconst timer = setInterval(() => {\n\t\tvoid tick().catch((error: unknown) => {\n\t\t\toptions.onError?.(error instanceof Error ? error : new Error(String(error)));\n\t\t});\n\t}, intervalMs);\n\t// El reloj no debe impedir que el proceso termine si todo lo demás acabó.\n\ttimer.unref?.();\n\n\treturn { stop: () => clearInterval(timer), tick };\n}\n"]}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Reloj del scheduler dentro de `ada-cli serve`.
3
+ *
4
+ * El `Scheduler` sabe qué toca ejecutar (`claimDue`) y cómo cerrar una ejecución
5
+ * (`complete`), pero no ejecuta nada: necesita un proceso vivo que le pregunte.
6
+ * Ese proceso es el servidor, que es justamente el que ya mantiene sesiones
7
+ * residentes.
8
+ *
9
+ * Cada job entrega su prompt a una sesión propia. No se reutiliza una sesión
10
+ * compartida a propósito: dos jobs recurrentes escribiendo en el mismo historial
11
+ * se contaminarían el contexto mutuamente.
12
+ */
13
+ export function startSchedulerTick(options) {
14
+ const now = options.now ?? (() => new Date().toISOString());
15
+ const intervalMs = options.intervalMs ?? 30_000;
16
+ // Al arrancar se liberan las ejecuciones que murieron con el proceso
17
+ // anterior: sin esto un crash deja el job marcado "en vuelo" para siempre y
18
+ // no se vuelve a entregar nunca.
19
+ options.scheduler.reconcile(now());
20
+ const tick = async () => {
21
+ let dispatched = 0;
22
+ for (const { dispatchId, job } of options.scheduler.claimDue(now())) {
23
+ try {
24
+ const ok = await options.dispatch({ id: job.id, prompt: job.prompt });
25
+ options.scheduler.complete(dispatchId, ok);
26
+ if (ok)
27
+ dispatched++;
28
+ }
29
+ catch (error) {
30
+ // Un job que revienta se cierra como fallo y NO tumba el reloj: el
31
+ // resto de trabajos programados no tienen la culpa.
32
+ options.scheduler.complete(dispatchId, false);
33
+ options.onError?.(error instanceof Error ? error : new Error(String(error)));
34
+ }
35
+ }
36
+ return dispatched;
37
+ };
38
+ const timer = setInterval(() => {
39
+ void tick().catch((error) => {
40
+ options.onError?.(error instanceof Error ? error : new Error(String(error)));
41
+ });
42
+ }, intervalMs);
43
+ // El reloj no debe impedir que el proceso termine si todo lo demás acabó.
44
+ timer.unref?.();
45
+ return { stop: () => clearInterval(timer), tick };
46
+ }
47
+ //# sourceMappingURL=scheduler-tick.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler-tick.js","sourceRoot":"","sources":["../../src/server/scheduler-tick.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAoBH,MAAM,UAAU,kBAAkB,CAAC,OAA6B,EAAuB;IACtF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC;IAEhD,qEAAqE;IACrE,4EAA4E;IAC5E,iCAAiC;IACjC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;IAEnC,MAAM,IAAI,GAAG,KAAK,IAAqB,EAAE,CAAC;QACzC,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,KAAK,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YACrE,IAAI,CAAC;gBACJ,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBACtE,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBAC3C,IAAI,EAAE;oBAAE,UAAU,EAAE,CAAC;YACtB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,mEAAmE;gBACnE,oDAAoD;gBACpD,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBAC9C,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9E,CAAC;QACF,CAAC;QACD,OAAO,UAAU,CAAC;IAAA,CAClB,CAAC;IAEF,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC/B,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC;YACrC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAAA,CAC7E,CAAC,CAAC;IAAA,CACH,EAAE,UAAU,CAAC,CAAC;IACf,4EAA0E;IAC1E,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IAEhB,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;AAAA,CAClD","sourcesContent":["/**\n * Reloj del scheduler dentro de `ada-cli serve`.\n *\n * El `Scheduler` sabe qué toca ejecutar (`claimDue`) y cómo cerrar una ejecución\n * (`complete`), pero no ejecuta nada: necesita un proceso vivo que le pregunte.\n * Ese proceso es el servidor, que es justamente el que ya mantiene sesiones\n * residentes.\n *\n * Cada job entrega su prompt a una sesión propia. No se reutiliza una sesión\n * compartida a propósito: dos jobs recurrentes escribiendo en el mismo historial\n * se contaminarían el contexto mutuamente.\n */\n\nimport type { Scheduler } from \"../core/scheduler/scheduler.ts\";\n\nexport interface SchedulerTickOptions {\n\tscheduler: Scheduler;\n\t/** Entrega el prompt de un job. Devuelve false si falló. */\n\tdispatch: (job: { id: string; prompt: string }) => Promise<boolean>;\n\tintervalMs?: number;\n\t/** Reloj inyectable para los tests. */\n\tnow?: () => string;\n\tonError?: (error: Error) => void;\n}\n\nexport interface SchedulerTickHandle {\n\tstop: () => void;\n\t/** Ejecuta un ciclo ahora mismo. Para tests y para el arranque. */\n\ttick: () => Promise<number>;\n}\n\nexport function startSchedulerTick(options: SchedulerTickOptions): SchedulerTickHandle {\n\tconst now = options.now ?? (() => new Date().toISOString());\n\tconst intervalMs = options.intervalMs ?? 30_000;\n\n\t// Al arrancar se liberan las ejecuciones que murieron con el proceso\n\t// anterior: sin esto un crash deja el job marcado \"en vuelo\" para siempre y\n\t// no se vuelve a entregar nunca.\n\toptions.scheduler.reconcile(now());\n\n\tconst tick = async (): Promise<number> => {\n\t\tlet dispatched = 0;\n\t\tfor (const { dispatchId, job } of options.scheduler.claimDue(now())) {\n\t\t\ttry {\n\t\t\t\tconst ok = await options.dispatch({ id: job.id, prompt: job.prompt });\n\t\t\t\toptions.scheduler.complete(dispatchId, ok);\n\t\t\t\tif (ok) dispatched++;\n\t\t\t} catch (error) {\n\t\t\t\t// Un job que revienta se cierra como fallo y NO tumba el reloj: el\n\t\t\t\t// resto de trabajos programados no tienen la culpa.\n\t\t\t\toptions.scheduler.complete(dispatchId, false);\n\t\t\t\toptions.onError?.(error instanceof Error ? error : new Error(String(error)));\n\t\t\t}\n\t\t}\n\t\treturn dispatched;\n\t};\n\n\tconst timer = setInterval(() => {\n\t\tvoid tick().catch((error: unknown) => {\n\t\t\toptions.onError?.(error instanceof Error ? error : new Error(String(error)));\n\t\t});\n\t}, intervalMs);\n\t// El reloj no debe impedir que el proceso termine si todo lo demás acabó.\n\ttimer.unref?.();\n\n\treturn { stop: () => clearInterval(timer), tick };\n}\n"]}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * `ada serve` — hospeda sesiones residentes sobre un socket unix.
3
+ *
4
+ * El trabajo sobrevive al cierre del terminal: el proceso que sirve es el dueño
5
+ * de la ejecución, y los clientes se enganchan y desenganchan por encima.
6
+ *
7
+ * Todo el acoplamiento a `packages/server` (que upstream marca como
8
+ * experimental) vive aquí y en `pi-server-service.ts`. Si cambia una firma, se
9
+ * arregla en dos ficheros nuestros y en ningún otro sitio — que es exactamente
10
+ * la razón de adaptarse a esa interfaz en vez de construir un demonio propio.
11
+ */
12
+ import type { AdaServerService } from "./pi-server-service.ts";
13
+ /** Socket por defecto, dentro del agentDir para respetar ADA_CLI_CODING_AGENT_DIR. */
14
+ export declare function defaultSocketPath(agentDir: string): string;
15
+ export interface ServeOptions {
16
+ service: AdaServerService;
17
+ socketPath: string;
18
+ onError?: (error: Error) => void;
19
+ }
20
+ export interface ServeHandle {
21
+ socketPath: string;
22
+ close(): Promise<void>;
23
+ }
24
+ export declare function serve(options: ServeOptions): Promise<ServeHandle>;
25
+ //# sourceMappingURL=serve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/server/serve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,sFAAsF;AACtF,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,WAAW;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AA8BD,wBAAsB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAqCvE","sourcesContent":["/**\n * `ada serve` — hospeda sesiones residentes sobre un socket unix.\n *\n * El trabajo sobrevive al cierre del terminal: el proceso que sirve es el dueño\n * de la ejecución, y los clientes se enganchan y desenganchan por encima.\n *\n * Todo el acoplamiento a `packages/server` (que upstream marca como\n * experimental) vive aquí y en `pi-server-service.ts`. Si cambia una firma, se\n * arregla en dos ficheros nuestros y en ningún otro sitio — que es exactamente\n * la razón de adaptarse a esa interfaz en vez de construir un demonio propio.\n */\n\nimport { mkdir, rm, stat } from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\nimport { createUnixServer } from \"@earendil-works/pi-server/unix\";\nimport { killTrackedDetachedChildren } from \"../utils/shell.ts\";\nimport type { AdaServerService } from \"./pi-server-service.ts\";\n\n/** Socket por defecto, dentro del agentDir para respetar ADA_CLI_CODING_AGENT_DIR. */\nexport function defaultSocketPath(agentDir: string): string {\n\treturn join(agentDir, \"server.sock\");\n}\n\nexport interface ServeOptions {\n\tservice: AdaServerService;\n\tsocketPath: string;\n\tonError?: (error: Error) => void;\n}\n\nexport interface ServeHandle {\n\tsocketPath: string;\n\tclose(): Promise<void>;\n}\n\n/**\n * Un socket huérfano de un proceso muerto impide escuchar en la misma ruta.\n * Solo se borra si NADIE responde: si hay un servidor vivo detrás, se respeta y\n * se falla claro, porque borrarlo dejaría al otro servidor inalcanzable.\n */\nasync function clearStaleSocket(socketPath: string): Promise<void> {\n\ttry {\n\t\tawait stat(socketPath);\n\t} catch {\n\t\treturn; // no existe: nada que limpiar\n\t}\n\tconst { createConnection } = await import(\"node:net\");\n\tconst alive = await new Promise<boolean>((resolve) => {\n\t\tconst socket = createConnection(socketPath);\n\t\tconst done = (value: boolean) => {\n\t\t\tsocket.destroy();\n\t\t\tresolve(value);\n\t\t};\n\t\tsocket.once(\"connect\", () => done(true));\n\t\tsocket.once(\"error\", () => done(false));\n\t\tsetTimeout(() => done(false), 500).unref?.();\n\t});\n\tif (alive) {\n\t\tthrow new Error(`Ya hay un servidor de Ada escuchando en ${socketPath}. Usa 'ada-cli attach' o párale primero.`);\n\t}\n\tawait rm(socketPath, { force: true });\n}\n\nexport async function serve(options: ServeOptions): Promise<ServeHandle> {\n\tawait mkdir(dirname(options.socketPath), { recursive: true });\n\tawait clearStaleSocket(options.socketPath);\n\n\tconst server = createUnixServer(options.service, {\n\t\tpath: options.socketPath,\n\t\t// Solo el usuario: el socket da control total sobre las sesiones.\n\t\tmode: 0o600,\n\t\tonError: options.onError,\n\t});\n\tawait server.start();\n\n\tlet closed = false;\n\tconst close = async (): Promise<void> => {\n\t\tif (closed) return;\n\t\tclosed = true;\n\t\t// Los otros tres modos (print/interactive/rpc) matan los detached\n\t\t// children —incluidas las sesiones de bash_interactivo, que se lanzan\n\t\t// `detached: true` a propósito para sobrevivir a un Ctrl-C dentro de la\n\t\t// conversación— en su handler de apagado. `disposeAll()` solo limpia los\n\t\t// runtimes en memoria; sin esto, una sesión interactiva viva sobrevive al\n\t\t// cierre de `ada-cli serve` (SIGINT/SIGTERM/SIGHUP) como huérfano real.\n\t\tkillTrackedDetachedChildren();\n\t\tawait server.close().catch(() => {});\n\t\tawait options.service.disposeAll().catch(() => {});\n\t\tawait rm(options.socketPath, { force: true }).catch(() => {});\n\t};\n\n\t// El socket debe desaparecer aunque el proceso muera por señal; si no, el\n\t// siguiente arranque se encuentra una ruta ocupada por nadie.\n\tfor (const signal of [\"SIGINT\", \"SIGTERM\", \"SIGHUP\"] as const) {\n\t\tprocess.once(signal, () => {\n\t\t\tvoid close().then(() => process.exit(0));\n\t\t});\n\t}\n\n\treturn { socketPath: options.socketPath, close };\n}\n"]}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * `ada serve` — hospeda sesiones residentes sobre un socket unix.
3
+ *
4
+ * El trabajo sobrevive al cierre del terminal: el proceso que sirve es el dueño
5
+ * de la ejecución, y los clientes se enganchan y desenganchan por encima.
6
+ *
7
+ * Todo el acoplamiento a `packages/server` (que upstream marca como
8
+ * experimental) vive aquí y en `pi-server-service.ts`. Si cambia una firma, se
9
+ * arregla en dos ficheros nuestros y en ningún otro sitio — que es exactamente
10
+ * la razón de adaptarse a esa interfaz en vez de construir un demonio propio.
11
+ */
12
+ import { mkdir, rm, stat } from "node:fs/promises";
13
+ import { dirname, join } from "node:path";
14
+ import { createUnixServer } from "@earendil-works/pi-server/unix";
15
+ import { killTrackedDetachedChildren } from "../utils/shell.js";
16
+ /** Socket por defecto, dentro del agentDir para respetar ADA_CLI_CODING_AGENT_DIR. */
17
+ export function defaultSocketPath(agentDir) {
18
+ return join(agentDir, "server.sock");
19
+ }
20
+ /**
21
+ * Un socket huérfano de un proceso muerto impide escuchar en la misma ruta.
22
+ * Solo se borra si NADIE responde: si hay un servidor vivo detrás, se respeta y
23
+ * se falla claro, porque borrarlo dejaría al otro servidor inalcanzable.
24
+ */
25
+ async function clearStaleSocket(socketPath) {
26
+ try {
27
+ await stat(socketPath);
28
+ }
29
+ catch {
30
+ return; // no existe: nada que limpiar
31
+ }
32
+ const { createConnection } = await import("node:net");
33
+ const alive = await new Promise((resolve) => {
34
+ const socket = createConnection(socketPath);
35
+ const done = (value) => {
36
+ socket.destroy();
37
+ resolve(value);
38
+ };
39
+ socket.once("connect", () => done(true));
40
+ socket.once("error", () => done(false));
41
+ setTimeout(() => done(false), 500).unref?.();
42
+ });
43
+ if (alive) {
44
+ throw new Error(`Ya hay un servidor de Ada escuchando en ${socketPath}. Usa 'ada-cli attach' o párale primero.`);
45
+ }
46
+ await rm(socketPath, { force: true });
47
+ }
48
+ export async function serve(options) {
49
+ await mkdir(dirname(options.socketPath), { recursive: true });
50
+ await clearStaleSocket(options.socketPath);
51
+ const server = createUnixServer(options.service, {
52
+ path: options.socketPath,
53
+ // Solo el usuario: el socket da control total sobre las sesiones.
54
+ mode: 0o600,
55
+ onError: options.onError,
56
+ });
57
+ await server.start();
58
+ let closed = false;
59
+ const close = async () => {
60
+ if (closed)
61
+ return;
62
+ closed = true;
63
+ // Los otros tres modos (print/interactive/rpc) matan los detached
64
+ // children —incluidas las sesiones de bash_interactivo, que se lanzan
65
+ // `detached: true` a propósito para sobrevivir a un Ctrl-C dentro de la
66
+ // conversación— en su handler de apagado. `disposeAll()` solo limpia los
67
+ // runtimes en memoria; sin esto, una sesión interactiva viva sobrevive al
68
+ // cierre de `ada-cli serve` (SIGINT/SIGTERM/SIGHUP) como huérfano real.
69
+ killTrackedDetachedChildren();
70
+ await server.close().catch(() => { });
71
+ await options.service.disposeAll().catch(() => { });
72
+ await rm(options.socketPath, { force: true }).catch(() => { });
73
+ };
74
+ // El socket debe desaparecer aunque el proceso muera por señal; si no, el
75
+ // siguiente arranque se encuentra una ruta ocupada por nadie.
76
+ for (const signal of ["SIGINT", "SIGTERM", "SIGHUP"]) {
77
+ process.once(signal, () => {
78
+ void close().then(() => process.exit(0));
79
+ });
80
+ }
81
+ return { socketPath: options.socketPath, close };
82
+ }
83
+ //# sourceMappingURL=serve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/server/serve.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `ada serve` — hospeda sesiones residentes sobre un socket unix.\n *\n * El trabajo sobrevive al cierre del terminal: el proceso que sirve es el dueño\n * de la ejecución, y los clientes se enganchan y desenganchan por encima.\n *\n * Todo el acoplamiento a `packages/server` (que upstream marca como\n * experimental) vive aquí y en `pi-server-service.ts`. Si cambia una firma, se\n * arregla en dos ficheros nuestros y en ningún otro sitio — que es exactamente\n * la razón de adaptarse a esa interfaz en vez de construir un demonio propio.\n */\n\nimport { mkdir, rm, stat } from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\nimport { createUnixServer } from \"@earendil-works/pi-server/unix\";\nimport { killTrackedDetachedChildren } from \"../utils/shell.ts\";\nimport type { AdaServerService } from \"./pi-server-service.ts\";\n\n/** Socket por defecto, dentro del agentDir para respetar ADA_CLI_CODING_AGENT_DIR. */\nexport function defaultSocketPath(agentDir: string): string {\n\treturn join(agentDir, \"server.sock\");\n}\n\nexport interface ServeOptions {\n\tservice: AdaServerService;\n\tsocketPath: string;\n\tonError?: (error: Error) => void;\n}\n\nexport interface ServeHandle {\n\tsocketPath: string;\n\tclose(): Promise<void>;\n}\n\n/**\n * Un socket huérfano de un proceso muerto impide escuchar en la misma ruta.\n * Solo se borra si NADIE responde: si hay un servidor vivo detrás, se respeta y\n * se falla claro, porque borrarlo dejaría al otro servidor inalcanzable.\n */\nasync function clearStaleSocket(socketPath: string): Promise<void> {\n\ttry {\n\t\tawait stat(socketPath);\n\t} catch {\n\t\treturn; // no existe: nada que limpiar\n\t}\n\tconst { createConnection } = await import(\"node:net\");\n\tconst alive = await new Promise<boolean>((resolve) => {\n\t\tconst socket = createConnection(socketPath);\n\t\tconst done = (value: boolean) => {\n\t\t\tsocket.destroy();\n\t\t\tresolve(value);\n\t\t};\n\t\tsocket.once(\"connect\", () => done(true));\n\t\tsocket.once(\"error\", () => done(false));\n\t\tsetTimeout(() => done(false), 500).unref?.();\n\t});\n\tif (alive) {\n\t\tthrow new Error(`Ya hay un servidor de Ada escuchando en ${socketPath}. Usa 'ada-cli attach' o párale primero.`);\n\t}\n\tawait rm(socketPath, { force: true });\n}\n\nexport async function serve(options: ServeOptions): Promise<ServeHandle> {\n\tawait mkdir(dirname(options.socketPath), { recursive: true });\n\tawait clearStaleSocket(options.socketPath);\n\n\tconst server = createUnixServer(options.service, {\n\t\tpath: options.socketPath,\n\t\t// Solo el usuario: el socket da control total sobre las sesiones.\n\t\tmode: 0o600,\n\t\tonError: options.onError,\n\t});\n\tawait server.start();\n\n\tlet closed = false;\n\tconst close = async (): Promise<void> => {\n\t\tif (closed) return;\n\t\tclosed = true;\n\t\t// Los otros tres modos (print/interactive/rpc) matan los detached\n\t\t// children —incluidas las sesiones de bash_interactivo, que se lanzan\n\t\t// `detached: true` a propósito para sobrevivir a un Ctrl-C dentro de la\n\t\t// conversación— en su handler de apagado. `disposeAll()` solo limpia los\n\t\t// runtimes en memoria; sin esto, una sesión interactiva viva sobrevive al\n\t\t// cierre de `ada-cli serve` (SIGINT/SIGTERM/SIGHUP) como huérfano real.\n\t\tkillTrackedDetachedChildren();\n\t\tawait server.close().catch(() => {});\n\t\tawait options.service.disposeAll().catch(() => {});\n\t\tawait rm(options.socketPath, { force: true }).catch(() => {});\n\t};\n\n\t// El socket debe desaparecer aunque el proceso muera por señal; si no, el\n\t// siguiente arranque se encuentra una ruta ocupada por nadie.\n\tfor (const signal of [\"SIGINT\", \"SIGTERM\", \"SIGHUP\"] as const) {\n\t\tprocess.once(signal, () => {\n\t\t\tvoid close().then(() => process.exit(0));\n\t\t});\n\t}\n\n\treturn { socketPath: options.socketPath, close };\n}\n"]}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Proyección de mensajes de sesión al transcript del protocolo.
3
+ *
4
+ * Es la pieza delicada de `ada serve`: los tipos NO casan uno a uno, y donde no
5
+ * casan es exactamente donde un turno puede desaparecer del transcript sin que
6
+ * nadie se entere. Un `attach` que pierde turnos en silencio es peor que no
7
+ * tener `attach`, así que aquí todo se mapea explícitamente y nada se descarta.
8
+ *
9
+ * Los tres desajustes reales:
10
+ *
11
+ * 1. `StopReason` de origen tiene 7 valores; el item `complete` del protocolo
12
+ * solo admite `stop|length|toolUse`. `error` y `aborted` son variantes
13
+ * propias, `pending` es streaming, y `deferred` — que no existe en el
14
+ * protocolo — se trata como streaming, porque semánticamente el turno
15
+ * todavía no ha terminado.
16
+ *
17
+ * 2. `ToolResultMessage` NO lleva los argumentos de la llamada, pero el
18
+ * protocolo exige `input` en cada item de tool. Hay que correlacionar con el
19
+ * `ToolCall` del mensaje de asistente anterior por `toolCallId`. Es una
20
+ * dependencia entre mensajes, no una conversión local.
21
+ *
22
+ * 3. Los mensajes de origen no tienen `id`; el protocolo lo exige. Se deriva de
23
+ * forma estable a partir de la posición para que dos snapshots consecutivos
24
+ * del mismo transcript den los mismos ids.
25
+ */
26
+ import type { Message } from "@earendil-works/pi-ai";
27
+ import type { TranscriptItem } from "@earendil-works/pi-protocol";
28
+ /** Id estable por posición: el mismo transcript da siempre los mismos ids. */
29
+ export declare function itemId(index: number): string;
30
+ /**
31
+ * Proyecta el transcript completo.
32
+ *
33
+ * INVARIANTE: devuelve exactamente un item por mensaje de entrada, en el mismo
34
+ * orden. Nada se filtra ni se colapsa — si un mensaje no encaja en ninguna
35
+ * variante, se degrada a algo válido antes que desaparecer.
36
+ */
37
+ export declare function projectTranscript(messages: readonly Message[]): TranscriptItem[];
38
+ //# sourceMappingURL=transcript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../../src/server/transcript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAEX,OAAO,EAIP,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAGX,cAAc,EAGd,MAAM,6BAA6B,CAAC;AAErC,+EAA8E;AAC9E,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5C;AAsHD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,cAAc,EAAE,CA6BhF","sourcesContent":["/**\n * Proyección de mensajes de sesión al transcript del protocolo.\n *\n * Es la pieza delicada de `ada serve`: los tipos NO casan uno a uno, y donde no\n * casan es exactamente donde un turno puede desaparecer del transcript sin que\n * nadie se entere. Un `attach` que pierde turnos en silencio es peor que no\n * tener `attach`, así que aquí todo se mapea explícitamente y nada se descarta.\n *\n * Los tres desajustes reales:\n *\n * 1. `StopReason` de origen tiene 7 valores; el item `complete` del protocolo\n * solo admite `stop|length|toolUse`. `error` y `aborted` son variantes\n * propias, `pending` es streaming, y `deferred` — que no existe en el\n * protocolo — se trata como streaming, porque semánticamente el turno\n * todavía no ha terminado.\n *\n * 2. `ToolResultMessage` NO lleva los argumentos de la llamada, pero el\n * protocolo exige `input` en cada item de tool. Hay que correlacionar con el\n * `ToolCall` del mensaje de asistente anterior por `toolCallId`. Es una\n * dependencia entre mensajes, no una conversión local.\n *\n * 3. Los mensajes de origen no tienen `id`; el protocolo lo exige. Se deriva de\n * forma estable a partir de la posición para que dos snapshots consecutivos\n * del mismo transcript den los mismos ids.\n */\n\nimport type {\n\tAssistantMessage,\n\tMessage,\n\tUsage as SourceUsage,\n\tToolResultMessage,\n\tUserMessage,\n} from \"@earendil-works/pi-ai\";\nimport type {\n\tAssistantTranscriptItem,\n\tToolTranscriptItem,\n\tTranscriptItem,\n\tUsage,\n\tUserTranscriptItem,\n} from \"@earendil-works/pi-protocol\";\n\n/** Id estable por posición: el mismo transcript da siempre los mismos ids. */\nexport function itemId(index: number): string {\n\treturn `item-${index}`;\n}\n\nfunction toUsage(usage: SourceUsage | undefined): Usage | undefined {\n\tif (!usage) return undefined;\n\treturn {\n\t\tinput: Math.max(0, Math.trunc(usage.input ?? 0)),\n\t\toutput: Math.max(0, Math.trunc(usage.output ?? 0)),\n\t\tcacheRead: Math.max(0, Math.trunc(usage.cacheRead ?? 0)),\n\t\tcacheWrite: Math.max(0, Math.trunc(usage.cacheWrite ?? 0)),\n\t\t...(usage.reasoning !== undefined ? { reasoning: Math.max(0, Math.trunc(usage.reasoning)) } : {}),\n\t\ttotalTokens: Math.max(0, Math.trunc(usage.totalTokens ?? 0)),\n\t\tcost: {\n\t\t\tinput: usage.cost?.input ?? 0,\n\t\t\toutput: usage.cost?.output ?? 0,\n\t\t\tcacheRead: usage.cost?.cacheRead ?? 0,\n\t\t\tcacheWrite: usage.cost?.cacheWrite ?? 0,\n\t\t\ttotal: usage.cost?.total ?? 0,\n\t\t},\n\t};\n}\n\nfunction timestampOf(value: unknown): number {\n\treturn typeof value === \"number\" && Number.isFinite(value) && value >= 0 ? Math.trunc(value) : 0;\n}\n\nfunction projectUser(message: UserMessage, index: number): UserTranscriptItem {\n\tconst content =\n\t\ttypeof message.content === \"string\"\n\t\t\t? [{ type: \"text\" as const, text: message.content }]\n\t\t\t: message.content.map((block) =>\n\t\t\t\t\tblock.type === \"image\"\n\t\t\t\t\t\t? { type: \"image\" as const, data: block.data, mimeType: block.mimeType }\n\t\t\t\t\t\t: { type: \"text\" as const, text: block.text ?? \"\" },\n\t\t\t\t);\n\treturn { id: itemId(index), role: \"user\", content, timestamp: timestampOf(message.timestamp) };\n}\n\nfunction projectAssistant(message: AssistantMessage, index: number): AssistantTranscriptItem {\n\tconst content = message.content.map((block) => {\n\t\tif (block.type === \"toolCall\") {\n\t\t\t// Renombrado real: id/name/arguments → toolCallId/toolName/input.\n\t\t\treturn {\n\t\t\t\ttype: \"toolCall\" as const,\n\t\t\t\ttoolCallId: block.id,\n\t\t\t\ttoolName: block.name,\n\t\t\t\tinput: (block.arguments ?? {}) as never,\n\t\t\t};\n\t\t}\n\t\tif (block.type === \"thinking\") {\n\t\t\treturn {\n\t\t\t\ttype: \"thinking\" as const,\n\t\t\t\tthinking: block.thinking ?? \"\",\n\t\t\t\t...(block.redacted !== undefined ? { redacted: Boolean(block.redacted) } : {}),\n\t\t\t};\n\t\t}\n\t\treturn { type: \"text\" as const, text: block.text ?? \"\" };\n\t});\n\n\tconst base = {\n\t\tid: itemId(index),\n\t\trole: \"assistant\" as const,\n\t\tcontent,\n\t\tmodel: { provider: message.provider ?? \"unknown\", id: message.model ?? \"unknown\" },\n\t\t...(message.responseModel ? { responseModel: message.responseModel } : {}),\n\t\t...(toUsage(message.usage) ? { usage: toUsage(message.usage) as Usage } : {}),\n\t\ttimestamp: timestampOf(message.timestamp),\n\t};\n\n\tswitch (message.stopReason) {\n\t\tcase \"stop\":\n\t\tcase \"length\":\n\t\tcase \"toolUse\":\n\t\t\treturn { ...base, status: \"complete\", stopReason: message.stopReason };\n\t\tcase \"error\":\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\tstatus: \"error\",\n\t\t\t\tstopReason: \"error\",\n\t\t\t\t...(message.errorMessage ? { errorMessage: message.errorMessage } : {}),\n\t\t\t};\n\t\tcase \"aborted\":\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\tstatus: \"aborted\",\n\t\t\t\tstopReason: \"aborted\",\n\t\t\t\t...(message.errorMessage ? { errorMessage: message.errorMessage } : {}),\n\t\t\t};\n\t\tdefault:\n\t\t\t// `pending` y `deferred`: el turno aún no ha cerrado. `deferred` no\n\t\t\t// existe en el protocolo — tratarlo como streaming es lo único que no\n\t\t\t// pierde el mensaje ni miente sobre su estado.\n\t\t\treturn { ...base, status: \"streaming\" };\n\t}\n}\n\nfunction projectTool(message: ToolResultMessage, index: number, input: unknown): ToolTranscriptItem {\n\tconst content = message.content.map((block) =>\n\t\tblock.type === \"image\"\n\t\t\t? { type: \"image\" as const, data: block.data, mimeType: block.mimeType }\n\t\t\t: { type: \"text\" as const, text: block.text ?? \"\" },\n\t);\n\tconst base = {\n\t\tid: itemId(index),\n\t\trole: \"tool\" as const,\n\t\ttoolCallId: message.toolCallId,\n\t\ttoolName: message.toolName,\n\t\t// El resultado NO trae los argumentos: vienen del ToolCall correlacionado.\n\t\tinput: (input ?? {}) as never,\n\t\tcontent,\n\t\t...(message.details !== undefined ? { details: message.details as never } : {}),\n\t\t...(toUsage(message.usage) ? { usage: toUsage(message.usage) as Usage } : {}),\n\t\ttimestamp: timestampOf(message.timestamp),\n\t};\n\treturn message.isError\n\t\t? { ...base, status: \"error\", isError: true }\n\t\t: { ...base, status: \"complete\", isError: false };\n}\n\n/**\n * Proyecta el transcript completo.\n *\n * INVARIANTE: devuelve exactamente un item por mensaje de entrada, en el mismo\n * orden. Nada se filtra ni se colapsa — si un mensaje no encaja en ninguna\n * variante, se degrada a algo válido antes que desaparecer.\n */\nexport function projectTranscript(messages: readonly Message[]): TranscriptItem[] {\n\t// Primera pasada: índice de argumentos por toolCallId, para el punto 2.\n\tconst inputs = new Map<string, unknown>();\n\tfor (const message of messages) {\n\t\tif (message.role !== \"assistant\") continue;\n\t\tfor (const block of message.content) {\n\t\t\tif (block.type === \"toolCall\") inputs.set(block.id, block.arguments ?? {});\n\t\t}\n\t}\n\n\tconst items: TranscriptItem[] = [];\n\tmessages.forEach((message, index) => {\n\t\tif (message.role === \"user\") items.push(projectUser(message, index));\n\t\telse if (message.role === \"assistant\") items.push(projectAssistant(message, index));\n\t\telse if (message.role === \"toolResult\") items.push(projectTool(message, index, inputs.get(message.toolCallId)));\n\t\t// Sin `else`: cualquier rol desconocido se ignoraría en silencio. Se\n\t\t// gestiona abajo para que el invariante siga siendo comprobable.\n\t\telse {\n\t\t\titems.push({\n\t\t\t\tid: itemId(index),\n\t\t\t\trole: \"user\",\n\t\t\t\tcontent: [\n\t\t\t\t\t{ type: \"text\", text: `[mensaje no reconocido: ${String((message as { role?: unknown }).role)}]` },\n\t\t\t\t],\n\t\t\t\ttimestamp: timestampOf((message as { timestamp?: unknown }).timestamp),\n\t\t\t});\n\t\t}\n\t});\n\treturn items;\n}\n"]}