@hoilab/ada-cli 0.84.22 → 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 (1114) hide show
  1. package/CHANGELOG.md +29 -2
  2. package/README.es.md +17 -6
  3. package/README.md +109 -11
  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/audit-command.d.ts +15 -0
  9. package/dist/cli/audit-command.d.ts.map +1 -0
  10. package/dist/cli/audit-command.js +280 -0
  11. package/dist/cli/audit-command.js.map +1 -0
  12. package/dist/cli/banco-command.d.ts +15 -0
  13. package/dist/cli/banco-command.d.ts.map +1 -0
  14. package/dist/cli/banco-command.js +213 -0
  15. package/dist/cli/banco-command.js.map +1 -0
  16. package/dist/cli/cleanse-command.d.ts +11 -0
  17. package/dist/cli/cleanse-command.d.ts.map +1 -0
  18. package/dist/cli/cleanse-command.js +101 -0
  19. package/dist/cli/cleanse-command.js.map +1 -0
  20. package/dist/cli/commit-command.d.ts +31 -0
  21. package/dist/cli/commit-command.d.ts.map +1 -0
  22. package/dist/cli/commit-command.js +158 -0
  23. package/dist/cli/commit-command.js.map +1 -0
  24. package/dist/cli/computer-command.d.ts +12 -0
  25. package/dist/cli/computer-command.d.ts.map +1 -0
  26. package/dist/cli/computer-command.js +141 -0
  27. package/dist/cli/computer-command.js.map +1 -0
  28. package/dist/cli/discover-command.d.ts +18 -0
  29. package/dist/cli/discover-command.d.ts.map +1 -0
  30. package/dist/cli/discover-command.js +108 -0
  31. package/dist/cli/discover-command.js.map +1 -0
  32. package/dist/cli/hashline-command.d.ts +11 -0
  33. package/dist/cli/hashline-command.d.ts.map +1 -0
  34. package/dist/cli/hashline-command.js +106 -0
  35. package/dist/cli/hashline-command.js.map +1 -0
  36. package/dist/cli/import-command.d.ts +35 -0
  37. package/dist/cli/import-command.d.ts.map +1 -0
  38. package/dist/cli/import-command.js +164 -0
  39. package/dist/cli/import-command.js.map +1 -0
  40. package/dist/cli/politica-command.d.ts +20 -0
  41. package/dist/cli/politica-command.d.ts.map +1 -0
  42. package/dist/cli/politica-command.js +93 -0
  43. package/dist/cli/politica-command.js.map +1 -0
  44. package/dist/cli/refine-command.d.ts +18 -0
  45. package/dist/cli/refine-command.d.ts.map +1 -0
  46. package/dist/cli/refine-command.js +101 -0
  47. package/dist/cli/refine-command.js.map +1 -0
  48. package/dist/cli/review-command.d.ts +24 -0
  49. package/dist/cli/review-command.d.ts.map +1 -0
  50. package/dist/cli/review-command.js +168 -0
  51. package/dist/cli/review-command.js.map +1 -0
  52. package/dist/cli/schedule-command.d.ts +17 -0
  53. package/dist/cli/schedule-command.d.ts.map +1 -0
  54. package/dist/cli/schedule-command.js +117 -0
  55. package/dist/cli/schedule-command.js.map +1 -0
  56. package/dist/cli/serve-command.d.ts +72 -0
  57. package/dist/cli/serve-command.d.ts.map +1 -0
  58. package/dist/cli/serve-command.js +568 -0
  59. package/dist/cli/serve-command.js.map +1 -0
  60. package/dist/cli/telegram-command.d.ts +18 -0
  61. package/dist/cli/telegram-command.d.ts.map +1 -0
  62. package/dist/cli/telegram-command.js +137 -0
  63. package/dist/cli/telegram-command.js.map +1 -0
  64. package/dist/cli/telemetria-command.d.ts +22 -0
  65. package/dist/cli/telemetria-command.d.ts.map +1 -0
  66. package/dist/cli/telemetria-command.js +127 -0
  67. package/dist/cli/telemetria-command.js.map +1 -0
  68. package/dist/cli/undo-command.d.ts +9 -0
  69. package/dist/cli/undo-command.d.ts.map +1 -0
  70. package/dist/cli/undo-command.js +56 -0
  71. package/dist/cli/undo-command.js.map +1 -0
  72. package/dist/cli/usage-command.d.ts +10 -0
  73. package/dist/cli/usage-command.d.ts.map +1 -0
  74. package/dist/cli/usage-command.js +209 -0
  75. package/dist/cli/usage-command.js.map +1 -0
  76. package/dist/cli/wiki-command.d.ts +9 -0
  77. package/dist/cli/wiki-command.d.ts.map +1 -0
  78. package/dist/cli/wiki-command.js +76 -0
  79. package/dist/cli/wiki-command.js.map +1 -0
  80. package/dist/cli.d.ts +6 -0
  81. package/dist/cli.d.ts.map +1 -1
  82. package/dist/cli.js +10 -11
  83. package/dist/cli.js.map +1 -1
  84. package/dist/config.d.ts +1 -1
  85. package/dist/config.d.ts.map +1 -1
  86. package/dist/config.js +1 -1
  87. package/dist/config.js.map +1 -1
  88. package/dist/core/ada.d.ts +58 -0
  89. package/dist/core/ada.d.ts.map +1 -0
  90. package/dist/core/ada.js +61 -0
  91. package/dist/core/ada.js.map +1 -0
  92. package/dist/core/advisor/guarda.d.ts +66 -0
  93. package/dist/core/advisor/guarda.d.ts.map +1 -0
  94. package/dist/core/advisor/guarda.js +191 -0
  95. package/dist/core/advisor/guarda.js.map +1 -0
  96. package/dist/core/advisor/runtime.d.ts +66 -0
  97. package/dist/core/advisor/runtime.d.ts.map +1 -0
  98. package/dist/core/advisor/runtime.js +121 -0
  99. package/dist/core/advisor/runtime.js.map +1 -0
  100. package/dist/core/advisor/sesion.d.ts +109 -0
  101. package/dist/core/advisor/sesion.d.ts.map +1 -0
  102. package/dist/core/advisor/sesion.js +139 -0
  103. package/dist/core/advisor/sesion.js.map +1 -0
  104. package/dist/core/agent-session.d.ts +30 -2
  105. package/dist/core/agent-session.d.ts.map +1 -1
  106. package/dist/core/agent-session.js +430 -22
  107. package/dist/core/agent-session.js.map +1 -1
  108. package/dist/core/agents/loader.d.ts +77 -0
  109. package/dist/core/agents/loader.d.ts.map +1 -0
  110. package/dist/core/agents/loader.js +154 -0
  111. package/dist/core/agents/loader.js.map +1 -0
  112. package/dist/core/aprobacion/generados.d.ts +37 -0
  113. package/dist/core/aprobacion/generados.d.ts.map +1 -0
  114. package/dist/core/aprobacion/generados.js +85 -0
  115. package/dist/core/aprobacion/generados.js.map +1 -0
  116. package/dist/core/aprobacion/politica-de-maquina.d.ts +90 -0
  117. package/dist/core/aprobacion/politica-de-maquina.d.ts.map +1 -0
  118. package/dist/core/aprobacion/politica-de-maquina.js +212 -0
  119. package/dist/core/aprobacion/politica-de-maquina.js.map +1 -0
  120. package/dist/core/aprobacion/politica.d.ts +90 -0
  121. package/dist/core/aprobacion/politica.d.ts.map +1 -0
  122. package/dist/core/aprobacion/politica.js +375 -0
  123. package/dist/core/aprobacion/politica.js.map +1 -0
  124. package/dist/core/arranque/atajos.d.ts +46 -0
  125. package/dist/core/arranque/atajos.d.ts.map +1 -0
  126. package/dist/core/arranque/atajos.js +113 -0
  127. package/dist/core/arranque/atajos.js.map +1 -0
  128. package/dist/core/audit/exportacion.d.ts +54 -0
  129. package/dist/core/audit/exportacion.d.ts.map +1 -0
  130. package/dist/core/audit/exportacion.js +265 -0
  131. package/dist/core/audit/exportacion.js.map +1 -0
  132. package/dist/core/audit/libro.d.ts +318 -0
  133. package/dist/core/audit/libro.d.ts.map +1 -0
  134. package/dist/core/audit/libro.js +508 -0
  135. package/dist/core/audit/libro.js.map +1 -0
  136. package/dist/core/audit/registro-sesion.d.ts +78 -0
  137. package/dist/core/audit/registro-sesion.d.ts.map +1 -0
  138. package/dist/core/audit/registro-sesion.js +202 -0
  139. package/dist/core/audit/registro-sesion.js.map +1 -0
  140. package/dist/core/audit/retencion.d.ts +82 -0
  141. package/dist/core/audit/retencion.d.ts.map +1 -0
  142. package/dist/core/audit/retencion.js +152 -0
  143. package/dist/core/audit/retencion.js.map +1 -0
  144. package/dist/core/audit/rutas.d.ts +23 -0
  145. package/dist/core/audit/rutas.d.ts.map +1 -0
  146. package/dist/core/audit/rutas.js +23 -0
  147. package/dist/core/audit/rutas.js.map +1 -0
  148. package/dist/core/auth-storage.d.ts +0 -3
  149. package/dist/core/auth-storage.d.ts.map +1 -1
  150. package/dist/core/auth-storage.js +17 -5
  151. package/dist/core/auth-storage.js.map +1 -1
  152. package/dist/core/banco/almacenamiento.d.ts +18 -0
  153. package/dist/core/banco/almacenamiento.d.ts.map +1 -0
  154. package/dist/core/banco/almacenamiento.js +50 -0
  155. package/dist/core/banco/almacenamiento.js.map +1 -0
  156. package/dist/core/banco/analisis.d.ts +37 -0
  157. package/dist/core/banco/analisis.d.ts.map +1 -0
  158. package/dist/core/banco/analisis.js +164 -0
  159. package/dist/core/banco/analisis.js.map +1 -0
  160. package/dist/core/banco/bloques.d.ts +39 -0
  161. package/dist/core/banco/bloques.d.ts.map +1 -0
  162. package/dist/core/banco/bloques.js +84 -0
  163. package/dist/core/banco/bloques.js.map +1 -0
  164. package/dist/core/banco/cargas.d.ts +84 -0
  165. package/dist/core/banco/cargas.d.ts.map +1 -0
  166. package/dist/core/banco/cargas.js +520 -0
  167. package/dist/core/banco/cargas.js.map +1 -0
  168. package/dist/core/banco/comparar.d.ts +29 -0
  169. package/dist/core/banco/comparar.d.ts.map +1 -0
  170. package/dist/core/banco/comparar.js +28 -0
  171. package/dist/core/banco/comparar.js.map +1 -0
  172. package/dist/core/banco/ejecutar.d.ts +44 -0
  173. package/dist/core/banco/ejecutar.d.ts.map +1 -0
  174. package/dist/core/banco/ejecutar.js +183 -0
  175. package/dist/core/banco/ejecutar.js.map +1 -0
  176. package/dist/core/banco/generar.d.ts +24 -0
  177. package/dist/core/banco/generar.d.ts.map +1 -0
  178. package/dist/core/banco/generar.js +159 -0
  179. package/dist/core/banco/generar.js.map +1 -0
  180. package/dist/core/banco/mutaciones.d.ts +25 -0
  181. package/dist/core/banco/mutaciones.d.ts.map +1 -0
  182. package/dist/core/banco/mutaciones.js +215 -0
  183. package/dist/core/banco/mutaciones.js.map +1 -0
  184. package/dist/core/banco/tipos.d.ts +121 -0
  185. package/dist/core/banco/tipos.d.ts.map +1 -0
  186. package/dist/core/banco/tipos.js +16 -0
  187. package/dist/core/banco/tipos.js.map +1 -0
  188. package/dist/core/blobs/almacen.d.ts +81 -0
  189. package/dist/core/blobs/almacen.d.ts.map +1 -0
  190. package/dist/core/blobs/almacen.js +198 -0
  191. package/dist/core/blobs/almacen.js.map +1 -0
  192. package/dist/core/blobs/broker.d.ts +103 -0
  193. package/dist/core/blobs/broker.d.ts.map +1 -0
  194. package/dist/core/blobs/broker.js +204 -0
  195. package/dist/core/blobs/broker.js.map +1 -0
  196. package/dist/core/blobs/index.d.ts +70 -0
  197. package/dist/core/blobs/index.d.ts.map +1 -0
  198. package/dist/core/blobs/index.js +232 -0
  199. package/dist/core/blobs/index.js.map +1 -0
  200. package/dist/core/blobs/payload.d.ts +55 -0
  201. package/dist/core/blobs/payload.d.ts.map +1 -0
  202. package/dist/core/blobs/payload.js +255 -0
  203. package/dist/core/blobs/payload.js.map +1 -0
  204. package/dist/core/blobs/proveedor.d.ts +85 -0
  205. package/dist/core/blobs/proveedor.d.ts.map +1 -0
  206. package/dist/core/blobs/proveedor.js +196 -0
  207. package/dist/core/blobs/proveedor.js.map +1 -0
  208. package/dist/core/browser/cdp.d.ts +41 -0
  209. package/dist/core/browser/cdp.d.ts.map +1 -0
  210. package/dist/core/browser/cdp.js +119 -0
  211. package/dist/core/browser/cdp.js.map +1 -0
  212. package/dist/core/browser/politica.d.ts +51 -0
  213. package/dist/core/browser/politica.d.ts.map +1 -0
  214. package/dist/core/browser/politica.js +123 -0
  215. package/dist/core/browser/politica.js.map +1 -0
  216. package/dist/core/browser/sesion.d.ts +52 -0
  217. package/dist/core/browser/sesion.d.ts.map +1 -0
  218. package/dist/core/browser/sesion.js +176 -0
  219. package/dist/core/browser/sesion.js.map +1 -0
  220. package/dist/core/browser/tools.d.ts +16 -0
  221. package/dist/core/browser/tools.d.ts.map +1 -0
  222. package/dist/core/browser/tools.js +279 -0
  223. package/dist/core/browser/tools.js.map +1 -0
  224. package/dist/core/commit/diff.d.ts +56 -0
  225. package/dist/core/commit/diff.d.ts.map +1 -0
  226. package/dist/core/commit/diff.js +145 -0
  227. package/dist/core/commit/diff.js.map +1 -0
  228. package/dist/core/commit/mensaje.d.ts +80 -0
  229. package/dist/core/commit/mensaje.d.ts.map +1 -0
  230. package/dist/core/commit/mensaje.js +207 -0
  231. package/dist/core/commit/mensaje.js.map +1 -0
  232. package/dist/core/compactar/index.d.ts +52 -0
  233. package/dist/core/compactar/index.d.ts.map +1 -0
  234. package/dist/core/compactar/index.js +91 -0
  235. package/dist/core/compactar/index.js.map +1 -0
  236. package/dist/core/compactar/registro-denso.d.ts +160 -0
  237. package/dist/core/compactar/registro-denso.d.ts.map +1 -0
  238. package/dist/core/compactar/registro-denso.js +620 -0
  239. package/dist/core/compactar/registro-denso.js.map +1 -0
  240. package/dist/core/computer/captura.d.ts +35 -0
  241. package/dist/core/computer/captura.d.ts.map +1 -0
  242. package/dist/core/computer/captura.js +140 -0
  243. package/dist/core/computer/captura.js.map +1 -0
  244. package/dist/core/computer/driver.d.ts +130 -0
  245. package/dist/core/computer/driver.d.ts.map +1 -0
  246. package/dist/core/computer/driver.js +206 -0
  247. package/dist/core/computer/driver.js.map +1 -0
  248. package/dist/core/computer/motor/actions.d.ts +109 -0
  249. package/dist/core/computer/motor/actions.d.ts.map +1 -0
  250. package/dist/core/computer/motor/actions.js +157 -0
  251. package/dist/core/computer/motor/actions.js.map +1 -0
  252. package/dist/core/computer/motor/bridge.d.ts +232 -0
  253. package/dist/core/computer/motor/bridge.d.ts.map +1 -0
  254. package/dist/core/computer/motor/bridge.js +2335 -0
  255. package/dist/core/computer/motor/bridge.js.map +1 -0
  256. package/dist/core/computer/motor/cdp.d.ts +107 -0
  257. package/dist/core/computer/motor/cdp.d.ts.map +1 -0
  258. package/dist/core/computer/motor/cdp.js +659 -0
  259. package/dist/core/computer/motor/cdp.js.map +1 -0
  260. package/dist/core/computer/motor/config.d.ts +23 -0
  261. package/dist/core/computer/motor/config.d.ts.map +1 -0
  262. package/dist/core/computer/motor/config.js +100 -0
  263. package/dist/core/computer/motor/config.js.map +1 -0
  264. package/dist/core/computer/motor/contract.d.ts +81 -0
  265. package/dist/core/computer/motor/contract.d.ts.map +1 -0
  266. package/dist/core/computer/motor/contract.js +14 -0
  267. package/dist/core/computer/motor/contract.js.map +1 -0
  268. package/dist/core/computer/motor/note.d.ts +37 -0
  269. package/dist/core/computer/motor/note.d.ts.map +1 -0
  270. package/dist/core/computer/motor/note.js +162 -0
  271. package/dist/core/computer/motor/note.js.map +1 -0
  272. package/dist/core/computer/motor/outline.d.ts +155 -0
  273. package/dist/core/computer/motor/outline.d.ts.map +1 -0
  274. package/dist/core/computer/motor/outline.js +590 -0
  275. package/dist/core/computer/motor/outline.js.map +1 -0
  276. package/dist/core/computer/motor/output.d.ts +18 -0
  277. package/dist/core/computer/motor/output.d.ts.map +1 -0
  278. package/dist/core/computer/motor/output.js +148 -0
  279. package/dist/core/computer/motor/output.js.map +1 -0
  280. package/dist/core/computer/motor/permissions.d.ts +41 -0
  281. package/dist/core/computer/motor/permissions.d.ts.map +1 -0
  282. package/dist/core/computer/motor/permissions.js +51 -0
  283. package/dist/core/computer/motor/permissions.js.map +1 -0
  284. package/dist/core/computer/motor/platform/architecture.d.ts +5 -0
  285. package/dist/core/computer/motor/platform/architecture.d.ts.map +1 -0
  286. package/dist/core/computer/motor/platform/architecture.js +21 -0
  287. package/dist/core/computer/motor/platform/architecture.js.map +1 -0
  288. package/dist/core/computer/motor/platform/coerce.d.ts +4 -0
  289. package/dist/core/computer/motor/platform/coerce.d.ts.map +1 -0
  290. package/dist/core/computer/motor/platform/coerce.js +17 -0
  291. package/dist/core/computer/motor/platform/coerce.js.map +1 -0
  292. package/dist/core/computer/motor/platform/index.d.ts +4 -0
  293. package/dist/core/computer/motor/platform/index.d.ts.map +1 -0
  294. package/dist/core/computer/motor/platform/index.js +79 -0
  295. package/dist/core/computer/motor/platform/index.js.map +1 -0
  296. package/dist/core/computer/motor/platform/linux/backend.d.ts +3 -0
  297. package/dist/core/computer/motor/platform/linux/backend.d.ts.map +1 -0
  298. package/dist/core/computer/motor/platform/linux/backend.js +173 -0
  299. package/dist/core/computer/motor/platform/linux/backend.js.map +1 -0
  300. package/dist/core/computer/motor/platform/linux/helper.d.ts +29 -0
  301. package/dist/core/computer/motor/platform/linux/helper.d.ts.map +1 -0
  302. package/dist/core/computer/motor/platform/linux/helper.js +261 -0
  303. package/dist/core/computer/motor/platform/linux/helper.js.map +1 -0
  304. package/dist/core/computer/motor/platform/macos/backend.d.ts +3 -0
  305. package/dist/core/computer/motor/platform/macos/backend.d.ts.map +1 -0
  306. package/dist/core/computer/motor/platform/macos/backend.js +124 -0
  307. package/dist/core/computer/motor/platform/macos/backend.js.map +1 -0
  308. package/dist/core/computer/motor/platform/macos/browser.d.ts +7 -0
  309. package/dist/core/computer/motor/platform/macos/browser.d.ts.map +1 -0
  310. package/dist/core/computer/motor/platform/macos/browser.js +101 -0
  311. package/dist/core/computer/motor/platform/macos/browser.js.map +1 -0
  312. package/dist/core/computer/motor/platform/macos/helper-path.mjs +34 -0
  313. package/dist/core/computer/motor/platform/macos/helper.d.ts +32 -0
  314. package/dist/core/computer/motor/platform/macos/helper.d.ts.map +1 -0
  315. package/dist/core/computer/motor/platform/macos/helper.js +277 -0
  316. package/dist/core/computer/motor/platform/macos/helper.js.map +1 -0
  317. package/dist/core/computer/motor/platform/macos/permissions.d.ts +4 -0
  318. package/dist/core/computer/motor/platform/macos/permissions.d.ts.map +1 -0
  319. package/dist/core/computer/motor/platform/macos/permissions.js +118 -0
  320. package/dist/core/computer/motor/platform/macos/permissions.js.map +1 -0
  321. package/dist/core/computer/motor/platform/types.d.ts +263 -0
  322. package/dist/core/computer/motor/platform/types.d.ts.map +1 -0
  323. package/dist/core/computer/motor/platform/types.js +2 -0
  324. package/dist/core/computer/motor/platform/types.js.map +1 -0
  325. package/dist/core/computer/motor/platform/windows/backend.d.ts +3 -0
  326. package/dist/core/computer/motor/platform/windows/backend.d.ts.map +1 -0
  327. package/dist/core/computer/motor/platform/windows/backend.js +163 -0
  328. package/dist/core/computer/motor/platform/windows/backend.js.map +1 -0
  329. package/dist/core/computer/motor/platform/windows/helper.d.ts +18 -0
  330. package/dist/core/computer/motor/platform/windows/helper.d.ts.map +1 -0
  331. package/dist/core/computer/motor/platform/windows/helper.js +174 -0
  332. package/dist/core/computer/motor/platform/windows/helper.js.map +1 -0
  333. package/dist/core/computer/motor/root-selection.d.ts +6 -0
  334. package/dist/core/computer/motor/root-selection.d.ts.map +1 -0
  335. package/dist/core/computer/motor/root-selection.js +28 -0
  336. package/dist/core/computer/motor/root-selection.js.map +1 -0
  337. package/dist/core/computer/motor/runtime.d.ts +50 -0
  338. package/dist/core/computer/motor/runtime.d.ts.map +1 -0
  339. package/dist/core/computer/motor/runtime.js +119 -0
  340. package/dist/core/computer/motor/runtime.js.map +1 -0
  341. package/dist/core/computer/motor/state.d.ts +68 -0
  342. package/dist/core/computer/motor/state.d.ts.map +1 -0
  343. package/dist/core/computer/motor/state.js +100 -0
  344. package/dist/core/computer/motor/state.js.map +1 -0
  345. package/dist/core/computer/motor/view.d.ts +6 -0
  346. package/dist/core/computer/motor/view.d.ts.map +1 -0
  347. package/dist/core/computer/motor/view.js +185 -0
  348. package/dist/core/computer/motor/view.js.map +1 -0
  349. package/dist/core/computer/motor-ada.d.ts +159 -0
  350. package/dist/core/computer/motor-ada.d.ts.map +1 -0
  351. package/dist/core/computer/motor-ada.js +412 -0
  352. package/dist/core/computer/motor-ada.js.map +1 -0
  353. package/dist/core/computer/politica.d.ts +56 -0
  354. package/dist/core/computer/politica.d.ts.map +1 -0
  355. package/dist/core/computer/politica.js +163 -0
  356. package/dist/core/computer/politica.js.map +1 -0
  357. package/dist/core/computer/tools.d.ts +26 -0
  358. package/dist/core/computer/tools.d.ts.map +1 -0
  359. package/dist/core/computer/tools.js +399 -0
  360. package/dist/core/computer/tools.js.map +1 -0
  361. package/dist/core/context-breakdown.d.ts +80 -0
  362. package/dist/core/context-breakdown.d.ts.map +1 -0
  363. package/dist/core/context-breakdown.js +87 -0
  364. package/dist/core/context-breakdown.js.map +1 -0
  365. package/dist/core/credenciales/cliente.d.ts +60 -0
  366. package/dist/core/credenciales/cliente.d.ts.map +1 -0
  367. package/dist/core/credenciales/cliente.js +81 -0
  368. package/dist/core/credenciales/cliente.js.map +1 -0
  369. package/dist/core/credenciales/pool.d.ts +96 -0
  370. package/dist/core/credenciales/pool.d.ts.map +1 -0
  371. package/dist/core/credenciales/pool.js +128 -0
  372. package/dist/core/credenciales/pool.js.map +1 -0
  373. package/dist/core/credenciales/reposo.d.ts +93 -0
  374. package/dist/core/credenciales/reposo.d.ts.map +1 -0
  375. package/dist/core/credenciales/reposo.js +489 -0
  376. package/dist/core/credenciales/reposo.js.map +1 -0
  377. package/dist/core/credenciales/servidor.d.ts +55 -0
  378. package/dist/core/credenciales/servidor.d.ts.map +1 -0
  379. package/dist/core/credenciales/servidor.js +205 -0
  380. package/dist/core/credenciales/servidor.js.map +1 -0
  381. package/dist/core/descubrimiento/comandos.d.ts +30 -0
  382. package/dist/core/descubrimiento/comandos.d.ts.map +1 -0
  383. package/dist/core/descubrimiento/comandos.js +76 -0
  384. package/dist/core/descubrimiento/comandos.js.map +1 -0
  385. package/dist/core/descubrimiento/mcp.d.ts +42 -0
  386. package/dist/core/descubrimiento/mcp.d.ts.map +1 -0
  387. package/dist/core/descubrimiento/mcp.js +130 -0
  388. package/dist/core/descubrimiento/mcp.js.map +1 -0
  389. package/dist/core/descubrimiento/reglas.d.ts +61 -0
  390. package/dist/core/descubrimiento/reglas.d.ts.map +1 -0
  391. package/dist/core/descubrimiento/reglas.js +134 -0
  392. package/dist/core/descubrimiento/reglas.js.map +1 -0
  393. package/dist/core/descubrimiento/skills.d.ts +57 -0
  394. package/dist/core/descubrimiento/skills.d.ts.map +1 -0
  395. package/dist/core/descubrimiento/skills.js +113 -0
  396. package/dist/core/descubrimiento/skills.js.map +1 -0
  397. package/dist/core/dificultad/clasificador.d.ts +133 -0
  398. package/dist/core/dificultad/clasificador.d.ts.map +1 -0
  399. package/dist/core/dificultad/clasificador.js +288 -0
  400. package/dist/core/dificultad/clasificador.js.map +1 -0
  401. package/dist/core/edicion/diario.d.ts +37 -0
  402. package/dist/core/edicion/diario.d.ts.map +1 -0
  403. package/dist/core/edicion/diario.js +51 -0
  404. package/dist/core/edicion/diario.js.map +1 -0
  405. package/dist/core/edicion/hashline.d.ts +71 -0
  406. package/dist/core/edicion/hashline.d.ts.map +1 -0
  407. package/dist/core/edicion/hashline.js +111 -0
  408. package/dist/core/edicion/hashline.js.map +1 -0
  409. package/dist/core/edicion/hueco.d.ts +64 -0
  410. package/dist/core/edicion/hueco.d.ts.map +1 -0
  411. package/dist/core/edicion/hueco.js +162 -0
  412. package/dist/core/edicion/hueco.js.map +1 -0
  413. package/dist/core/edicion/limpiar-carga.d.ts +39 -0
  414. package/dist/core/edicion/limpiar-carga.d.ts.map +1 -0
  415. package/dist/core/edicion/limpiar-carga.js +121 -0
  416. package/dist/core/edicion/limpiar-carga.js.map +1 -0
  417. package/dist/core/edicion/observador.d.ts +80 -0
  418. package/dist/core/edicion/observador.d.ts.map +1 -0
  419. package/dist/core/edicion/observador.js +183 -0
  420. package/dist/core/edicion/observador.js.map +1 -0
  421. package/dist/core/edicion/parecido.d.ts +53 -0
  422. package/dist/core/edicion/parecido.d.ts.map +1 -0
  423. package/dist/core/edicion/parecido.js +145 -0
  424. package/dist/core/edicion/parecido.js.map +1 -0
  425. package/dist/core/edicion/parseo.d.ts +58 -0
  426. package/dist/core/edicion/parseo.d.ts.map +1 -0
  427. package/dist/core/edicion/parseo.js +124 -0
  428. package/dist/core/edicion/parseo.js.map +1 -0
  429. package/dist/core/edicion/reparacion.d.ts +67 -0
  430. package/dist/core/edicion/reparacion.d.ts.map +1 -0
  431. package/dist/core/edicion/reparacion.js +202 -0
  432. package/dist/core/edicion/reparacion.js.map +1 -0
  433. package/dist/core/edicion/sangria.d.ts +121 -0
  434. package/dist/core/edicion/sangria.d.ts.map +1 -0
  435. package/dist/core/edicion/sangria.js +341 -0
  436. package/dist/core/edicion/sangria.js.map +1 -0
  437. package/dist/core/edicion/tipos.d.ts +58 -0
  438. package/dist/core/edicion/tipos.d.ts.map +1 -0
  439. package/dist/core/edicion/tipos.js +160 -0
  440. package/dist/core/edicion/tipos.js.map +1 -0
  441. package/dist/core/errores/proveedor.d.ts +53 -0
  442. package/dist/core/errores/proveedor.d.ts.map +1 -0
  443. package/dist/core/errores/proveedor.js +191 -0
  444. package/dist/core/errores/proveedor.js.map +1 -0
  445. package/dist/core/estructural/buscar.d.ts +61 -0
  446. package/dist/core/estructural/buscar.d.ts.map +1 -0
  447. package/dist/core/estructural/buscar.js +261 -0
  448. package/dist/core/estructural/buscar.js.map +1 -0
  449. package/dist/core/estructural/editar.d.ts +36 -0
  450. package/dist/core/estructural/editar.d.ts.map +1 -0
  451. package/dist/core/estructural/editar.js +123 -0
  452. package/dist/core/estructural/editar.js.map +1 -0
  453. package/dist/core/estructural/tools.d.ts +11 -0
  454. package/dist/core/estructural/tools.d.ts.map +1 -0
  455. package/dist/core/estructural/tools.js +100 -0
  456. package/dist/core/estructural/tools.js.map +1 -0
  457. package/dist/core/experimental.d.ts.map +1 -1
  458. package/dist/core/experimental.js +10 -1
  459. package/dist/core/experimental.js.map +1 -1
  460. package/dist/core/extensiones/suplantacion.d.ts +49 -0
  461. package/dist/core/extensiones/suplantacion.d.ts.map +1 -0
  462. package/dist/core/extensiones/suplantacion.js +61 -0
  463. package/dist/core/extensiones/suplantacion.js.map +1 -0
  464. package/dist/core/extensiones/vigilancia.d.ts +54 -0
  465. package/dist/core/extensiones/vigilancia.d.ts.map +1 -0
  466. package/dist/core/extensiones/vigilancia.js +217 -0
  467. package/dist/core/extensiones/vigilancia.js.map +1 -0
  468. package/dist/core/extensions/loader.d.ts.map +1 -1
  469. package/dist/core/extensions/loader.js +11 -1
  470. package/dist/core/extensions/loader.js.map +1 -1
  471. package/dist/core/harness/fuentes-de-contexto.d.ts +29 -0
  472. package/dist/core/harness/fuentes-de-contexto.d.ts.map +1 -0
  473. package/dist/core/harness/fuentes-de-contexto.js +44 -0
  474. package/dist/core/harness/fuentes-de-contexto.js.map +1 -0
  475. package/dist/core/harness/refine.d.ts +40 -0
  476. package/dist/core/harness/refine.d.ts.map +1 -0
  477. package/dist/core/harness/refine.js +109 -0
  478. package/dist/core/harness/refine.js.map +1 -0
  479. package/dist/core/harness/store.d.ts +75 -0
  480. package/dist/core/harness/store.d.ts.map +1 -0
  481. package/dist/core/harness/store.js +149 -0
  482. package/dist/core/harness/store.js.map +1 -0
  483. package/dist/core/hooks/contract.d.ts +85 -0
  484. package/dist/core/hooks/contract.d.ts.map +1 -0
  485. package/dist/core/hooks/contract.js +140 -0
  486. package/dist/core/hooks/contract.js.map +1 -0
  487. package/dist/core/hooks/runner.d.ts +42 -0
  488. package/dist/core/hooks/runner.d.ts.map +1 -0
  489. package/dist/core/hooks/runner.js +85 -0
  490. package/dist/core/hooks/runner.js.map +1 -0
  491. package/dist/core/hooks/session-hooks.d.ts +62 -0
  492. package/dist/core/hooks/session-hooks.d.ts.map +1 -0
  493. package/dist/core/hooks/session-hooks.js +84 -0
  494. package/dist/core/hooks/session-hooks.js.map +1 -0
  495. package/dist/core/importar/formatos.d.ts +69 -0
  496. package/dist/core/importar/formatos.d.ts.map +1 -0
  497. package/dist/core/importar/formatos.js +235 -0
  498. package/dist/core/importar/formatos.js.map +1 -0
  499. package/dist/core/interactivo/deteccion.d.ts +44 -0
  500. package/dist/core/interactivo/deteccion.d.ts.map +1 -0
  501. package/dist/core/interactivo/deteccion.js +82 -0
  502. package/dist/core/interactivo/deteccion.js.map +1 -0
  503. package/dist/core/interactivo/sesion.d.ts +50 -0
  504. package/dist/core/interactivo/sesion.d.ts.map +1 -0
  505. package/dist/core/interactivo/sesion.js +156 -0
  506. package/dist/core/interactivo/sesion.js.map +1 -0
  507. package/dist/core/interactivo/tools.d.ts +21 -0
  508. package/dist/core/interactivo/tools.d.ts.map +1 -0
  509. package/dist/core/interactivo/tools.js +122 -0
  510. package/dist/core/interactivo/tools.js.map +1 -0
  511. package/dist/core/lectura/mapa.d.ts +70 -0
  512. package/dist/core/lectura/mapa.d.ts.map +1 -0
  513. package/dist/core/lectura/mapa.js +177 -0
  514. package/dist/core/lectura/mapa.js.map +1 -0
  515. package/dist/core/lectura/pdf.d.ts +49 -0
  516. package/dist/core/lectura/pdf.d.ts.map +1 -0
  517. package/dist/core/lectura/pdf.js +337 -0
  518. package/dist/core/lectura/pdf.js.map +1 -0
  519. package/dist/core/limpieza/comprobadores.d.ts +28 -0
  520. package/dist/core/limpieza/comprobadores.d.ts.map +1 -0
  521. package/dist/core/limpieza/comprobadores.js +311 -0
  522. package/dist/core/limpieza/comprobadores.js.map +1 -0
  523. package/dist/core/limpieza/parseo.d.ts +19 -0
  524. package/dist/core/limpieza/parseo.d.ts.map +1 -0
  525. package/dist/core/limpieza/parseo.js +124 -0
  526. package/dist/core/limpieza/parseo.js.map +1 -0
  527. package/dist/core/limpieza/reparacion.d.ts +77 -0
  528. package/dist/core/limpieza/reparacion.d.ts.map +1 -0
  529. package/dist/core/limpieza/reparacion.js +254 -0
  530. package/dist/core/limpieza/reparacion.js.map +1 -0
  531. package/dist/core/limpieza/tipos.d.ts +56 -0
  532. package/dist/core/limpieza/tipos.d.ts.map +1 -0
  533. package/dist/core/limpieza/tipos.js +9 -0
  534. package/dist/core/limpieza/tipos.js.map +1 -0
  535. package/dist/core/lsp/cliente.d.ts +52 -0
  536. package/dist/core/lsp/cliente.d.ts.map +1 -0
  537. package/dist/core/lsp/cliente.js +232 -0
  538. package/dist/core/lsp/cliente.js.map +1 -0
  539. package/dist/core/lsp/descubrimiento.d.ts +62 -0
  540. package/dist/core/lsp/descubrimiento.d.ts.map +1 -0
  541. package/dist/core/lsp/descubrimiento.js +152 -0
  542. package/dist/core/lsp/descubrimiento.js.map +1 -0
  543. package/dist/core/lsp/ediciones.d.ts +59 -0
  544. package/dist/core/lsp/ediciones.d.ts.map +1 -0
  545. package/dist/core/lsp/ediciones.js +89 -0
  546. package/dist/core/lsp/ediciones.js.map +1 -0
  547. package/dist/core/lsp/extension.d.ts +28 -0
  548. package/dist/core/lsp/extension.d.ts.map +1 -0
  549. package/dist/core/lsp/extension.js +34 -0
  550. package/dist/core/lsp/extension.js.map +1 -0
  551. package/dist/core/lsp/tools.d.ts +45 -0
  552. package/dist/core/lsp/tools.d.ts.map +1 -0
  553. package/dist/core/lsp/tools.js +265 -0
  554. package/dist/core/lsp/tools.js.map +1 -0
  555. package/dist/core/mcp/client.d.ts +60 -0
  556. package/dist/core/mcp/client.d.ts.map +1 -0
  557. package/dist/core/mcp/client.js +139 -0
  558. package/dist/core/mcp/client.js.map +1 -0
  559. package/dist/core/mcp/manager.d.ts +86 -0
  560. package/dist/core/mcp/manager.d.ts.map +1 -0
  561. package/dist/core/mcp/manager.js +124 -0
  562. package/dist/core/mcp/manager.js.map +1 -0
  563. package/dist/core/mcp/tools.d.ts +15 -0
  564. package/dist/core/mcp/tools.d.ts.map +1 -0
  565. package/dist/core/mcp/tools.js +84 -0
  566. package/dist/core/mcp/tools.js.map +1 -0
  567. package/dist/core/memory-engine/audit-export.d.ts +12 -10
  568. package/dist/core/memory-engine/audit-export.d.ts.map +1 -1
  569. package/dist/core/memory-engine/audit-export.js +15 -0
  570. package/dist/core/memory-engine/audit-export.js.map +1 -1
  571. package/dist/core/memory-engine/audit-indice.d.ts +153 -0
  572. package/dist/core/memory-engine/audit-indice.d.ts.map +1 -0
  573. package/dist/core/memory-engine/audit-indice.js +271 -0
  574. package/dist/core/memory-engine/audit-indice.js.map +1 -0
  575. package/dist/core/memory-engine/audit.d.ts +18 -6
  576. package/dist/core/memory-engine/audit.d.ts.map +1 -1
  577. package/dist/core/memory-engine/audit.js +25 -42
  578. package/dist/core/memory-engine/audit.js.map +1 -1
  579. package/dist/core/memory-engine/engine.d.ts +19 -1
  580. package/dist/core/memory-engine/engine.d.ts.map +1 -1
  581. package/dist/core/memory-engine/engine.js +71 -5
  582. package/dist/core/memory-engine/engine.js.map +1 -1
  583. package/dist/core/memory-engine/observation-store.d.ts +0 -2
  584. package/dist/core/memory-engine/observation-store.d.ts.map +1 -1
  585. package/dist/core/memory-engine/observation-store.js +4 -5
  586. package/dist/core/memory-engine/observation-store.js.map +1 -1
  587. package/dist/core/memory-engine/refinements.d.ts +51 -0
  588. package/dist/core/memory-engine/refinements.d.ts.map +1 -0
  589. package/dist/core/memory-engine/refinements.js +99 -0
  590. package/dist/core/memory-engine/refinements.js.map +1 -0
  591. package/dist/core/memory-engine/tools.d.ts.map +1 -1
  592. package/dist/core/memory-engine/tools.js +27 -1
  593. package/dist/core/memory-engine/tools.js.map +1 -1
  594. package/dist/core/memory-engine/types.d.ts +2 -0
  595. package/dist/core/memory-engine/types.d.ts.map +1 -1
  596. package/dist/core/memory-engine/types.js.map +1 -1
  597. package/dist/core/model-resolver.d.ts.map +1 -1
  598. package/dist/core/model-resolver.js +7 -1
  599. package/dist/core/model-resolver.js.map +1 -1
  600. package/dist/core/muestreo-restringido.d.ts +49 -0
  601. package/dist/core/muestreo-restringido.d.ts.map +1 -0
  602. package/dist/core/muestreo-restringido.js +65 -0
  603. package/dist/core/muestreo-restringido.js.map +1 -0
  604. package/dist/core/orphan-process-journal.d.ts +48 -0
  605. package/dist/core/orphan-process-journal.d.ts.map +1 -0
  606. package/dist/core/orphan-process-journal.js +116 -0
  607. package/dist/core/orphan-process-journal.js.map +1 -0
  608. package/dist/core/privacidad/categorias-especiales.d.ts +186 -0
  609. package/dist/core/privacidad/categorias-especiales.d.ts.map +1 -0
  610. package/dist/core/privacidad/categorias-especiales.js +745 -0
  611. package/dist/core/privacidad/categorias-especiales.js.map +1 -0
  612. package/dist/core/privacidad/tapar.d.ts +48 -0
  613. package/dist/core/privacidad/tapar.d.ts.map +1 -0
  614. package/dist/core/privacidad/tapar.js +66 -0
  615. package/dist/core/privacidad/tapar.js.map +1 -0
  616. package/dist/core/prompt-cache/diagnostics.d.ts +33 -0
  617. package/dist/core/prompt-cache/diagnostics.d.ts.map +1 -0
  618. package/dist/core/prompt-cache/diagnostics.js +100 -0
  619. package/dist/core/prompt-cache/diagnostics.js.map +1 -0
  620. package/dist/core/prompt-cache/index.d.ts +33 -0
  621. package/dist/core/prompt-cache/index.d.ts.map +1 -0
  622. package/dist/core/prompt-cache/index.js +189 -0
  623. package/dist/core/prompt-cache/index.js.map +1 -0
  624. package/dist/core/prompt-cache/payload.d.ts +58 -0
  625. package/dist/core/prompt-cache/payload.d.ts.map +1 -0
  626. package/dist/core/prompt-cache/payload.js +122 -0
  627. package/dist/core/prompt-cache/payload.js.map +1 -0
  628. package/dist/core/prompt-cache/stabilize.d.ts +65 -0
  629. package/dist/core/prompt-cache/stabilize.d.ts.map +1 -0
  630. package/dist/core/prompt-cache/stabilize.js +137 -0
  631. package/dist/core/prompt-cache/stabilize.js.map +1 -0
  632. package/dist/core/prompt-cache/stats.d.ts +55 -0
  633. package/dist/core/prompt-cache/stats.d.ts.map +1 -0
  634. package/dist/core/prompt-cache/stats.js +158 -0
  635. package/dist/core/prompt-cache/stats.js.map +1 -0
  636. package/dist/core/prompt-eleccion.d.ts +38 -0
  637. package/dist/core/prompt-eleccion.d.ts.map +1 -0
  638. package/dist/core/prompt-eleccion.js +46 -0
  639. package/dist/core/prompt-eleccion.js.map +1 -0
  640. package/dist/core/prompts/montar.d.ts +75 -0
  641. package/dist/core/prompts/montar.d.ts.map +1 -0
  642. package/dist/core/prompts/montar.js +146 -0
  643. package/dist/core/prompts/montar.js.map +1 -0
  644. package/dist/core/prompts/plantilla.d.ts +54 -0
  645. package/dist/core/prompts/plantilla.d.ts.map +1 -0
  646. package/dist/core/prompts/plantilla.js +153 -0
  647. package/dist/core/prompts/plantilla.js.map +1 -0
  648. package/dist/core/prompts/sistema.md +134 -0
  649. package/dist/core/provider-attribution.d.ts +24 -2
  650. package/dist/core/provider-attribution.d.ts.map +1 -1
  651. package/dist/core/provider-attribution.js +24 -42
  652. package/dist/core/provider-attribution.js.map +1 -1
  653. package/dist/core/remoto/destino.d.ts +38 -0
  654. package/dist/core/remoto/destino.d.ts.map +1 -0
  655. package/dist/core/remoto/destino.js +105 -0
  656. package/dist/core/remoto/destino.js.map +1 -0
  657. package/dist/core/remoto/ejecutor.d.ts +59 -0
  658. package/dist/core/remoto/ejecutor.d.ts.map +1 -0
  659. package/dist/core/remoto/ejecutor.js +225 -0
  660. package/dist/core/remoto/ejecutor.js.map +1 -0
  661. package/dist/core/remoto/ficheros.d.ts +29 -0
  662. package/dist/core/remoto/ficheros.d.ts.map +1 -0
  663. package/dist/core/remoto/ficheros.js +90 -0
  664. package/dist/core/remoto/ficheros.js.map +1 -0
  665. package/dist/core/remoto/registro-extension.d.ts +15 -0
  666. package/dist/core/remoto/registro-extension.d.ts.map +1 -0
  667. package/dist/core/remoto/registro-extension.js +17 -0
  668. package/dist/core/remoto/registro-extension.js.map +1 -0
  669. package/dist/core/remoto/tools.d.ts +28 -0
  670. package/dist/core/remoto/tools.d.ts.map +1 -0
  671. package/dist/core/remoto/tools.js +31 -0
  672. package/dist/core/remoto/tools.js.map +1 -0
  673. package/dist/core/resource-loader.d.ts +8 -0
  674. package/dist/core/resource-loader.d.ts.map +1 -1
  675. package/dist/core/resource-loader.js +93 -1
  676. package/dist/core/resource-loader.js.map +1 -1
  677. package/dist/core/revision/hallazgo.d.ts +51 -0
  678. package/dist/core/revision/hallazgo.d.ts.map +1 -0
  679. package/dist/core/revision/hallazgo.js +73 -0
  680. package/dist/core/revision/hallazgo.js.map +1 -0
  681. package/dist/core/revision/revisor.d.ts +81 -0
  682. package/dist/core/revision/revisor.d.ts.map +1 -0
  683. package/dist/core/revision/revisor.js +132 -0
  684. package/dist/core/revision/revisor.js.map +1 -0
  685. package/dist/core/revision/sarif.d.ts +30 -0
  686. package/dist/core/revision/sarif.d.ts.map +1 -0
  687. package/dist/core/revision/sarif.js +83 -0
  688. package/dist/core/revision/sarif.js.map +1 -0
  689. package/dist/core/scheduler/scheduler.d.ts +87 -0
  690. package/dist/core/scheduler/scheduler.d.ts.map +1 -0
  691. package/dist/core/scheduler/scheduler.js +178 -0
  692. package/dist/core/scheduler/scheduler.js.map +1 -0
  693. package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts +49 -0
  694. package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts.map +1 -0
  695. package/dist/core/sesion/cerrar-llamadas-abiertas.js +77 -0
  696. package/dist/core/sesion/cerrar-llamadas-abiertas.js.map +1 -0
  697. package/dist/core/settings-manager.d.ts +110 -6
  698. package/dist/core/settings-manager.d.ts.map +1 -1
  699. package/dist/core/settings-manager.js +53 -2
  700. package/dist/core/settings-manager.js.map +1 -1
  701. package/dist/core/slash-commands.d.ts.map +1 -1
  702. package/dist/core/slash-commands.js +3 -3
  703. package/dist/core/slash-commands.js.map +1 -1
  704. package/dist/core/system-prompt.d.ts +17 -0
  705. package/dist/core/system-prompt.d.ts.map +1 -1
  706. package/dist/core/system-prompt.js +13 -5
  707. package/dist/core/system-prompt.js.map +1 -1
  708. package/dist/core/telemetria/otlp.d.ts +122 -0
  709. package/dist/core/telemetria/otlp.d.ts.map +1 -0
  710. package/dist/core/telemetria/otlp.js +373 -0
  711. package/dist/core/telemetria/otlp.js.map +1 -0
  712. package/dist/core/tools/coercion-argumentos.d.ts +48 -0
  713. package/dist/core/tools/coercion-argumentos.d.ts.map +1 -0
  714. package/dist/core/tools/coercion-argumentos.js +99 -0
  715. package/dist/core/tools/coercion-argumentos.js.map +1 -0
  716. package/dist/core/tools/edit-diff.d.ts +0 -7
  717. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  718. package/dist/core/tools/edit-diff.js +232 -7
  719. package/dist/core/tools/edit-diff.js.map +1 -1
  720. package/dist/core/tools/edit.d.ts.map +1 -1
  721. package/dist/core/tools/edit.js +8 -1
  722. package/dist/core/tools/edit.js.map +1 -1
  723. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  724. package/dist/core/tools/file-mutation-queue.js +5 -0
  725. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  726. package/dist/core/tools/json-tolerante.d.ts +30 -0
  727. package/dist/core/tools/json-tolerante.d.ts.map +1 -0
  728. package/dist/core/tools/json-tolerante.js +70 -0
  729. package/dist/core/tools/json-tolerante.js.map +1 -0
  730. package/dist/core/tools/read.d.ts.map +1 -1
  731. package/dist/core/tools/read.js +17 -0
  732. package/dist/core/tools/read.js.map +1 -1
  733. package/dist/core/tools/tool-definition-wrapper.d.ts +14 -1
  734. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  735. package/dist/core/tools/tool-definition-wrapper.js +17 -1
  736. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  737. package/dist/core/turno-vacio/detectar.d.ts +38 -0
  738. package/dist/core/turno-vacio/detectar.d.ts.map +1 -0
  739. package/dist/core/turno-vacio/detectar.js +66 -0
  740. package/dist/core/turno-vacio/detectar.js.map +1 -0
  741. package/dist/core/undo/journal.d.ts +57 -0
  742. package/dist/core/undo/journal.d.ts.map +1 -0
  743. package/dist/core/undo/journal.js +178 -0
  744. package/dist/core/undo/journal.js.map +1 -0
  745. package/dist/core/urls-internas/auditoria.d.ts +10 -0
  746. package/dist/core/urls-internas/auditoria.d.ts.map +1 -0
  747. package/dist/core/urls-internas/auditoria.js +42 -0
  748. package/dist/core/urls-internas/auditoria.js.map +1 -0
  749. package/dist/core/urls-internas/boveda.d.ts +13 -0
  750. package/dist/core/urls-internas/boveda.d.ts.map +1 -0
  751. package/dist/core/urls-internas/boveda.js +40 -0
  752. package/dist/core/urls-internas/boveda.js.map +1 -0
  753. package/dist/core/urls-internas/lector.d.ts +30 -0
  754. package/dist/core/urls-internas/lector.d.ts.map +1 -0
  755. package/dist/core/urls-internas/lector.js +56 -0
  756. package/dist/core/urls-internas/lector.js.map +1 -0
  757. package/dist/core/urls-internas/memoria.d.ts +11 -0
  758. package/dist/core/urls-internas/memoria.d.ts.map +1 -0
  759. package/dist/core/urls-internas/memoria.js +25 -0
  760. package/dist/core/urls-internas/memoria.js.map +1 -0
  761. package/dist/core/urls-internas/parse.d.ts +28 -0
  762. package/dist/core/urls-internas/parse.d.ts.map +1 -0
  763. package/dist/core/urls-internas/parse.js +32 -0
  764. package/dist/core/urls-internas/parse.js.map +1 -0
  765. package/dist/core/urls-internas/reglas.d.ts +10 -0
  766. package/dist/core/urls-internas/reglas.d.ts.map +1 -0
  767. package/dist/core/urls-internas/reglas.js +31 -0
  768. package/dist/core/urls-internas/reglas.js.map +1 -0
  769. package/dist/core/usage/aggregate.d.ts +68 -0
  770. package/dist/core/usage/aggregate.d.ts.map +1 -0
  771. package/dist/core/usage/aggregate.js +93 -0
  772. package/dist/core/usage/aggregate.js.map +1 -0
  773. package/dist/core/usage/cuota/anthropic.d.ts +10 -0
  774. package/dist/core/usage/cuota/anthropic.d.ts.map +1 -0
  775. package/dist/core/usage/cuota/anthropic.js +63 -0
  776. package/dist/core/usage/cuota/anthropic.js.map +1 -0
  777. package/dist/core/usage/cuota/cache.d.ts +20 -0
  778. package/dist/core/usage/cuota/cache.d.ts.map +1 -0
  779. package/dist/core/usage/cuota/cache.js +36 -0
  780. package/dist/core/usage/cuota/cache.js.map +1 -0
  781. package/dist/core/usage/cuota/github-copilot.d.ts +9 -0
  782. package/dist/core/usage/cuota/github-copilot.d.ts.map +1 -0
  783. package/dist/core/usage/cuota/github-copilot.js +67 -0
  784. package/dist/core/usage/cuota/github-copilot.js.map +1 -0
  785. package/dist/core/usage/cuota/google-gemini.d.ts +9 -0
  786. package/dist/core/usage/cuota/google-gemini.d.ts.map +1 -0
  787. package/dist/core/usage/cuota/google-gemini.js +72 -0
  788. package/dist/core/usage/cuota/google-gemini.js.map +1 -0
  789. package/dist/core/usage/cuota/index.d.ts +25 -0
  790. package/dist/core/usage/cuota/index.d.ts.map +1 -0
  791. package/dist/core/usage/cuota/index.js +50 -0
  792. package/dist/core/usage/cuota/index.js.map +1 -0
  793. package/dist/core/usage/cuota/openai-codex.d.ts +9 -0
  794. package/dist/core/usage/cuota/openai-codex.d.ts.map +1 -0
  795. package/dist/core/usage/cuota/openai-codex.js +59 -0
  796. package/dist/core/usage/cuota/openai-codex.js.map +1 -0
  797. package/dist/core/usage/cuota/openrouter.d.ts +10 -0
  798. package/dist/core/usage/cuota/openrouter.d.ts.map +1 -0
  799. package/dist/core/usage/cuota/openrouter.js +47 -0
  800. package/dist/core/usage/cuota/openrouter.js.map +1 -0
  801. package/dist/core/usage/cuota/tipos.d.ts +50 -0
  802. package/dist/core/usage/cuota/tipos.d.ts.map +1 -0
  803. package/dist/core/usage/cuota/tipos.js +25 -0
  804. package/dist/core/usage/cuota/tipos.js.map +1 -0
  805. package/dist/core/web/busqueda-nativa.d.ts +82 -0
  806. package/dist/core/web/busqueda-nativa.d.ts.map +1 -0
  807. package/dist/core/web/busqueda-nativa.js +163 -0
  808. package/dist/core/web/busqueda-nativa.js.map +1 -0
  809. package/dist/core/web/destino.d.ts +58 -0
  810. package/dist/core/web/destino.d.ts.map +1 -0
  811. package/dist/core/web/destino.js +127 -0
  812. package/dist/core/web/destino.js.map +1 -0
  813. package/dist/core/web/proveedores/brave.d.ts +6 -0
  814. package/dist/core/web/proveedores/brave.d.ts.map +1 -0
  815. package/dist/core/web/proveedores/brave.js +20 -0
  816. package/dist/core/web/proveedores/brave.js.map +1 -0
  817. package/dist/core/web/proveedores/claves.d.ts +19 -0
  818. package/dist/core/web/proveedores/claves.d.ts.map +1 -0
  819. package/dist/core/web/proveedores/claves.js +36 -0
  820. package/dist/core/web/proveedores/claves.js.map +1 -0
  821. package/dist/core/web/proveedores/duckduckgo.d.ts +3 -0
  822. package/dist/core/web/proveedores/duckduckgo.d.ts.map +1 -0
  823. package/dist/core/web/proveedores/duckduckgo.js +109 -0
  824. package/dist/core/web/proveedores/duckduckgo.js.map +1 -0
  825. package/dist/core/web/proveedores/ecosia.d.ts +3 -0
  826. package/dist/core/web/proveedores/ecosia.d.ts.map +1 -0
  827. package/dist/core/web/proveedores/ecosia.js +72 -0
  828. package/dist/core/web/proveedores/ecosia.js.map +1 -0
  829. package/dist/core/web/proveedores/exa.d.ts +6 -0
  830. package/dist/core/web/proveedores/exa.d.ts.map +1 -0
  831. package/dist/core/web/proveedores/exa.js +24 -0
  832. package/dist/core/web/proveedores/exa.js.map +1 -0
  833. package/dist/core/web/proveedores/mojeek.d.ts +3 -0
  834. package/dist/core/web/proveedores/mojeek.d.ts.map +1 -0
  835. package/dist/core/web/proveedores/mojeek.js +65 -0
  836. package/dist/core/web/proveedores/mojeek.js.map +1 -0
  837. package/dist/core/web/proveedores/navegador.d.ts +10 -0
  838. package/dist/core/web/proveedores/navegador.d.ts.map +1 -0
  839. package/dist/core/web/proveedores/navegador.js +13 -0
  840. package/dist/core/web/proveedores/navegador.js.map +1 -0
  841. package/dist/core/web/proveedores/registro.d.ts +43 -0
  842. package/dist/core/web/proveedores/registro.d.ts.map +1 -0
  843. package/dist/core/web/proveedores/registro.js +49 -0
  844. package/dist/core/web/proveedores/registro.js.map +1 -0
  845. package/dist/core/web/proveedores/searxng.d.ts +9 -0
  846. package/dist/core/web/proveedores/searxng.d.ts.map +1 -0
  847. package/dist/core/web/proveedores/searxng.js +17 -0
  848. package/dist/core/web/proveedores/searxng.js.map +1 -0
  849. package/dist/core/web/proveedores/serper.d.ts +9 -0
  850. package/dist/core/web/proveedores/serper.d.ts.map +1 -0
  851. package/dist/core/web/proveedores/serper.js +19 -0
  852. package/dist/core/web/proveedores/serper.js.map +1 -0
  853. package/dist/core/web/proveedores/tavily.d.ts +6 -0
  854. package/dist/core/web/proveedores/tavily.d.ts.map +1 -0
  855. package/dist/core/web/proveedores/tavily.js +19 -0
  856. package/dist/core/web/proveedores/tavily.js.map +1 -0
  857. package/dist/core/web/proveedores/tipos.d.ts +36 -0
  858. package/dist/core/web/proveedores/tipos.d.ts.map +1 -0
  859. package/dist/core/web/proveedores/tipos.js +10 -0
  860. package/dist/core/web/proveedores/tipos.js.map +1 -0
  861. package/dist/core/web/registro-red.d.ts +43 -0
  862. package/dist/core/web/registro-red.d.ts.map +1 -0
  863. package/dist/core/web/registro-red.js +86 -0
  864. package/dist/core/web/registro-red.js.map +1 -0
  865. package/dist/core/web/scrapers/cisa-kev.d.ts +10 -0
  866. package/dist/core/web/scrapers/cisa-kev.d.ts.map +1 -0
  867. package/dist/core/web/scrapers/cisa-kev.js +38 -0
  868. package/dist/core/web/scrapers/cisa-kev.js.map +1 -0
  869. package/dist/core/web/scrapers/crates-io.d.ts +11 -0
  870. package/dist/core/web/scrapers/crates-io.d.ts.map +1 -0
  871. package/dist/core/web/scrapers/crates-io.js +29 -0
  872. package/dist/core/web/scrapers/crates-io.js.map +1 -0
  873. package/dist/core/web/scrapers/docs-rs.d.ts +10 -0
  874. package/dist/core/web/scrapers/docs-rs.d.ts.map +1 -0
  875. package/dist/core/web/scrapers/docs-rs.js +35 -0
  876. package/dist/core/web/scrapers/docs-rs.js.map +1 -0
  877. package/dist/core/web/scrapers/github.d.ts +3 -0
  878. package/dist/core/web/scrapers/github.d.ts.map +1 -0
  879. package/dist/core/web/scrapers/github.js +72 -0
  880. package/dist/core/web/scrapers/github.js.map +1 -0
  881. package/dist/core/web/scrapers/go-pkg.d.ts +7 -0
  882. package/dist/core/web/scrapers/go-pkg.d.ts.map +1 -0
  883. package/dist/core/web/scrapers/go-pkg.js +30 -0
  884. package/dist/core/web/scrapers/go-pkg.js.map +1 -0
  885. package/dist/core/web/scrapers/hex.d.ts +6 -0
  886. package/dist/core/web/scrapers/hex.d.ts.map +1 -0
  887. package/dist/core/web/scrapers/hex.js +27 -0
  888. package/dist/core/web/scrapers/hex.js.map +1 -0
  889. package/dist/core/web/scrapers/maven.d.ts +8 -0
  890. package/dist/core/web/scrapers/maven.d.ts.map +1 -0
  891. package/dist/core/web/scrapers/maven.js +41 -0
  892. package/dist/core/web/scrapers/maven.js.map +1 -0
  893. package/dist/core/web/scrapers/mdn.d.ts +6 -0
  894. package/dist/core/web/scrapers/mdn.d.ts.map +1 -0
  895. package/dist/core/web/scrapers/mdn.js +28 -0
  896. package/dist/core/web/scrapers/mdn.js.map +1 -0
  897. package/dist/core/web/scrapers/npm.d.ts +11 -0
  898. package/dist/core/web/scrapers/npm.d.ts.map +1 -0
  899. package/dist/core/web/scrapers/npm.js +57 -0
  900. package/dist/core/web/scrapers/npm.js.map +1 -0
  901. package/dist/core/web/scrapers/nuget.d.ts +8 -0
  902. package/dist/core/web/scrapers/nuget.d.ts.map +1 -0
  903. package/dist/core/web/scrapers/nuget.js +22 -0
  904. package/dist/core/web/scrapers/nuget.js.map +1 -0
  905. package/dist/core/web/scrapers/nvd.d.ts +7 -0
  906. package/dist/core/web/scrapers/nvd.d.ts.map +1 -0
  907. package/dist/core/web/scrapers/nvd.js +37 -0
  908. package/dist/core/web/scrapers/nvd.js.map +1 -0
  909. package/dist/core/web/scrapers/pypi.d.ts +6 -0
  910. package/dist/core/web/scrapers/pypi.d.ts.map +1 -0
  911. package/dist/core/web/scrapers/pypi.js +31 -0
  912. package/dist/core/web/scrapers/pypi.js.map +1 -0
  913. package/dist/core/web/scrapers/registro.d.ts +13 -0
  914. package/dist/core/web/scrapers/registro.d.ts.map +1 -0
  915. package/dist/core/web/scrapers/registro.js +65 -0
  916. package/dist/core/web/scrapers/registro.js.map +1 -0
  917. package/dist/core/web/scrapers/rubygems.d.ts +6 -0
  918. package/dist/core/web/scrapers/rubygems.d.ts.map +1 -0
  919. package/dist/core/web/scrapers/rubygems.js +23 -0
  920. package/dist/core/web/scrapers/rubygems.js.map +1 -0
  921. package/dist/core/web/scrapers/stackoverflow.d.ts +3 -0
  922. package/dist/core/web/scrapers/stackoverflow.d.ts.map +1 -0
  923. package/dist/core/web/scrapers/stackoverflow.js +46 -0
  924. package/dist/core/web/scrapers/stackoverflow.js.map +1 -0
  925. package/dist/core/web/scrapers/tipos.d.ts +42 -0
  926. package/dist/core/web/scrapers/tipos.d.ts.map +1 -0
  927. package/dist/core/web/scrapers/tipos.js +23 -0
  928. package/dist/core/web/scrapers/tipos.js.map +1 -0
  929. package/dist/core/web/texto.d.ts +10 -0
  930. package/dist/core/web/texto.d.ts.map +1 -0
  931. package/dist/core/web/texto.js +26 -0
  932. package/dist/core/web/texto.js.map +1 -0
  933. package/dist/core/web/tools.d.ts +91 -0
  934. package/dist/core/web/tools.d.ts.map +1 -0
  935. package/dist/core/web/tools.js +304 -0
  936. package/dist/core/web/tools.js.map +1 -0
  937. package/dist/core/wiki/almacen.d.ts +33 -0
  938. package/dist/core/wiki/almacen.d.ts.map +1 -0
  939. package/dist/core/wiki/almacen.js +93 -0
  940. package/dist/core/wiki/almacen.js.map +1 -0
  941. package/dist/core/wiki/citas.d.ts +111 -0
  942. package/dist/core/wiki/citas.d.ts.map +1 -0
  943. package/dist/core/wiki/citas.js +146 -0
  944. package/dist/core/wiki/citas.js.map +1 -0
  945. package/dist/core/workflows/agent-runner.d.ts +2 -0
  946. package/dist/core/workflows/agent-runner.d.ts.map +1 -1
  947. package/dist/core/workflows/agent-runner.js +131 -44
  948. package/dist/core/workflows/agent-runner.js.map +1 -1
  949. package/dist/core/workflows/builtins.d.ts.map +1 -1
  950. package/dist/core/workflows/builtins.js +1 -0
  951. package/dist/core/workflows/builtins.js.map +1 -1
  952. package/dist/core/workflows/contrato/esquema.d.ts +32 -0
  953. package/dist/core/workflows/contrato/esquema.d.ts.map +1 -0
  954. package/dist/core/workflows/contrato/esquema.js +25 -0
  955. package/dist/core/workflows/contrato/esquema.js.map +1 -0
  956. package/dist/core/workflows/contrato/reparar-argumentos.d.ts +69 -0
  957. package/dist/core/workflows/contrato/reparar-argumentos.d.ts.map +1 -0
  958. package/dist/core/workflows/contrato/reparar-argumentos.js +117 -0
  959. package/dist/core/workflows/contrato/reparar-argumentos.js.map +1 -0
  960. package/dist/core/workflows/contrato/validador.d.ts +30 -0
  961. package/dist/core/workflows/contrato/validador.d.ts.map +1 -0
  962. package/dist/core/workflows/contrato/validador.js +56 -0
  963. package/dist/core/workflows/contrato/validador.js.map +1 -0
  964. package/dist/core/workflows/contrato/yield.d.ts +65 -0
  965. package/dist/core/workflows/contrato/yield.d.ts.map +1 -0
  966. package/dist/core/workflows/contrato/yield.js +80 -0
  967. package/dist/core/workflows/contrato/yield.js.map +1 -0
  968. package/dist/core/workflows/goal-engine/engine.d.ts +17 -0
  969. package/dist/core/workflows/goal-engine/engine.d.ts.map +1 -1
  970. package/dist/core/workflows/goal-engine/engine.js +41 -0
  971. package/dist/core/workflows/goal-engine/engine.js.map +1 -1
  972. package/dist/core/workflows/index.d.ts +8 -0
  973. package/dist/core/workflows/index.d.ts.map +1 -1
  974. package/dist/core/workflows/index.js +4 -0
  975. package/dist/core/workflows/index.js.map +1 -1
  976. package/dist/core/workflows/manager.d.ts +10 -0
  977. package/dist/core/workflows/manager.d.ts.map +1 -1
  978. package/dist/core/workflows/manager.js +35 -11
  979. package/dist/core/workflows/manager.js.map +1 -1
  980. package/dist/core/workflows/runtime.d.ts +13 -0
  981. package/dist/core/workflows/runtime.d.ts.map +1 -1
  982. package/dist/core/workflows/runtime.js +80 -1
  983. package/dist/core/workflows/runtime.js.map +1 -1
  984. package/dist/core/workflows/save-as-skill.d.ts +27 -0
  985. package/dist/core/workflows/save-as-skill.d.ts.map +1 -0
  986. package/dist/core/workflows/save-as-skill.js +54 -0
  987. package/dist/core/workflows/save-as-skill.js.map +1 -0
  988. package/dist/core/workflows/types.d.ts +49 -0
  989. package/dist/core/workflows/types.d.ts.map +1 -1
  990. package/dist/core/workflows/types.js.map +1 -1
  991. package/dist/extensions/remoto/index.d.ts +22 -0
  992. package/dist/extensions/remoto/index.d.ts.map +1 -0
  993. package/dist/extensions/remoto/index.js +54 -0
  994. package/dist/extensions/remoto/index.js.map +1 -0
  995. package/dist/index.d.ts +1 -17
  996. package/dist/index.d.ts.map +1 -1
  997. package/dist/index.js +7 -16
  998. package/dist/index.js.map +1 -1
  999. package/dist/main.d.ts.map +1 -1
  1000. package/dist/main.js +6 -0
  1001. package/dist/main.js.map +1 -1
  1002. package/dist/modes/acp/acp-mode.d.ts +42 -0
  1003. package/dist/modes/acp/acp-mode.d.ts.map +1 -0
  1004. package/dist/modes/acp/acp-mode.js +190 -0
  1005. package/dist/modes/acp/acp-mode.js.map +1 -0
  1006. package/dist/modes/acp/events.d.ts +74 -0
  1007. package/dist/modes/acp/events.d.ts.map +1 -0
  1008. package/dist/modes/acp/events.js +116 -0
  1009. package/dist/modes/acp/events.js.map +1 -0
  1010. package/dist/modes/interactive/components/model-selector.d.ts +8 -1
  1011. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  1012. package/dist/modes/interactive/components/model-selector.js +41 -7
  1013. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  1014. package/dist/modes/interactive/components/settings-selector.d.ts +1 -2
  1015. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  1016. package/dist/modes/interactive/components/settings-selector.js +9 -86
  1017. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  1018. package/dist/modes/interactive/components/thinking-selector.d.ts +8 -1
  1019. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  1020. package/dist/modes/interactive/components/thinking-selector.js +48 -17
  1021. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  1022. package/dist/modes/interactive/interactive-mode.d.ts +3 -7
  1023. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  1024. package/dist/modes/interactive/interactive-mode.js +137 -146
  1025. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  1026. package/dist/modes/print-mode.d.ts.map +1 -1
  1027. package/dist/modes/print-mode.js +11 -0
  1028. package/dist/modes/print-mode.js.map +1 -1
  1029. package/dist/package-manager-cli.d.ts.map +1 -1
  1030. package/dist/package-manager-cli.js +27 -5
  1031. package/dist/package-manager-cli.js.map +1 -1
  1032. package/dist/server/attach.d.ts +56 -0
  1033. package/dist/server/attach.d.ts.map +1 -0
  1034. package/dist/server/attach.js +130 -0
  1035. package/dist/server/attach.js.map +1 -0
  1036. package/dist/server/extension-ops.d.ts +40 -0
  1037. package/dist/server/extension-ops.d.ts.map +1 -0
  1038. package/dist/server/extension-ops.js +146 -0
  1039. package/dist/server/extension-ops.js.map +1 -0
  1040. package/dist/server/pi-server-service.d.ts +85 -0
  1041. package/dist/server/pi-server-service.d.ts.map +1 -0
  1042. package/dist/server/pi-server-service.js +213 -0
  1043. package/dist/server/pi-server-service.js.map +1 -0
  1044. package/dist/server/scheduler-tick.d.ts +32 -0
  1045. package/dist/server/scheduler-tick.d.ts.map +1 -0
  1046. package/dist/server/scheduler-tick.js +47 -0
  1047. package/dist/server/scheduler-tick.js.map +1 -0
  1048. package/dist/server/serve.d.ts +25 -0
  1049. package/dist/server/serve.d.ts.map +1 -0
  1050. package/dist/server/serve.js +83 -0
  1051. package/dist/server/serve.js.map +1 -0
  1052. package/dist/server/transcript.d.ts +38 -0
  1053. package/dist/server/transcript.d.ts.map +1 -0
  1054. package/dist/server/transcript.js +176 -0
  1055. package/dist/server/transcript.js.map +1 -0
  1056. package/dist/skills/skill-creator/SKILL.md +90 -0
  1057. package/dist/telegram/api.d.ts +75 -0
  1058. package/dist/telegram/api.d.ts.map +1 -0
  1059. package/dist/telegram/api.js +104 -0
  1060. package/dist/telegram/api.js.map +1 -0
  1061. package/dist/telegram/bridge.d.ts +85 -0
  1062. package/dist/telegram/bridge.d.ts.map +1 -0
  1063. package/dist/telegram/bridge.js +182 -0
  1064. package/dist/telegram/bridge.js.map +1 -0
  1065. package/dist/telegram/journal.d.ts +67 -0
  1066. package/dist/telegram/journal.d.ts.map +1 -0
  1067. package/dist/telegram/journal.js +119 -0
  1068. package/dist/telegram/journal.js.map +1 -0
  1069. package/dist/telegram/servidor.d.ts +15 -0
  1070. package/dist/telegram/servidor.d.ts.map +1 -0
  1071. package/dist/telegram/servidor.js +74 -0
  1072. package/dist/telegram/servidor.js.map +1 -0
  1073. package/dist/utils/shell.d.ts +11 -0
  1074. package/dist/utils/shell.d.ts.map +1 -1
  1075. package/dist/utils/shell.js +11 -0
  1076. package/dist/utils/shell.js.map +1 -1
  1077. package/dist/utils/version-check.d.ts.map +1 -1
  1078. package/dist/utils/version-check.js +29 -1
  1079. package/dist/utils/version-check.js.map +1 -1
  1080. package/docs/compaction.md +10 -10
  1081. package/docs/compliance.md +241 -0
  1082. package/docs/containerization.md +24 -24
  1083. package/docs/custom-provider.md +10 -10
  1084. package/docs/development.md +47 -10
  1085. package/docs/docs.json +14 -2
  1086. package/docs/environment-variables.md +20 -17
  1087. package/docs/extensions.md +51 -49
  1088. package/docs/index.md +15 -21
  1089. package/docs/json.md +3 -3
  1090. package/docs/keybindings.md +5 -5
  1091. package/docs/llama-cpp.md +7 -7
  1092. package/docs/models.md +12 -12
  1093. package/docs/packages.md +45 -45
  1094. package/docs/prompt-templates.md +5 -5
  1095. package/docs/providers.md +12 -12
  1096. package/docs/quickstart.md +39 -39
  1097. package/docs/rpc.md +12 -12
  1098. package/docs/sdk.md +38 -38
  1099. package/docs/security.md +26 -21
  1100. package/docs/session-format.md +7 -7
  1101. package/docs/sessions.md +14 -14
  1102. package/docs/settings.md +45 -20
  1103. package/docs/shell-aliases.md +2 -2
  1104. package/docs/skills.md +11 -11
  1105. package/docs/terminal-setup.md +14 -14
  1106. package/docs/termux.md +7 -7
  1107. package/docs/themes.md +11 -11
  1108. package/docs/tmux.md +4 -4
  1109. package/docs/tui.md +3 -3
  1110. package/docs/usage.md +54 -54
  1111. package/docs/windows.md +2 -2
  1112. package/examples/sdk/12-full-control.ts +9 -0
  1113. package/npm-shrinkwrap.json +35 -251
  1114. package/package.json +10 -4
@@ -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"]}
@@ -0,0 +1,176 @@
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
+ /** Id estable por posición: el mismo transcript da siempre los mismos ids. */
27
+ export function itemId(index) {
28
+ return `item-${index}`;
29
+ }
30
+ function toUsage(usage) {
31
+ if (!usage)
32
+ return undefined;
33
+ return {
34
+ input: Math.max(0, Math.trunc(usage.input ?? 0)),
35
+ output: Math.max(0, Math.trunc(usage.output ?? 0)),
36
+ cacheRead: Math.max(0, Math.trunc(usage.cacheRead ?? 0)),
37
+ cacheWrite: Math.max(0, Math.trunc(usage.cacheWrite ?? 0)),
38
+ ...(usage.reasoning !== undefined ? { reasoning: Math.max(0, Math.trunc(usage.reasoning)) } : {}),
39
+ totalTokens: Math.max(0, Math.trunc(usage.totalTokens ?? 0)),
40
+ cost: {
41
+ input: usage.cost?.input ?? 0,
42
+ output: usage.cost?.output ?? 0,
43
+ cacheRead: usage.cost?.cacheRead ?? 0,
44
+ cacheWrite: usage.cost?.cacheWrite ?? 0,
45
+ total: usage.cost?.total ?? 0,
46
+ },
47
+ };
48
+ }
49
+ function timestampOf(value) {
50
+ return typeof value === "number" && Number.isFinite(value) && value >= 0 ? Math.trunc(value) : 0;
51
+ }
52
+ function projectUser(message, index) {
53
+ const content = typeof message.content === "string"
54
+ ? [{ type: "text", text: message.content }]
55
+ : message.content.map((block) => block.type === "image"
56
+ ? { type: "image", data: block.data, mimeType: block.mimeType }
57
+ : { type: "text", text: block.text ?? "" });
58
+ return { id: itemId(index), role: "user", content, timestamp: timestampOf(message.timestamp) };
59
+ }
60
+ function projectAssistant(message, index) {
61
+ const content = message.content.map((block) => {
62
+ if (block.type === "toolCall") {
63
+ // Renombrado real: id/name/arguments → toolCallId/toolName/input.
64
+ return {
65
+ type: "toolCall",
66
+ toolCallId: block.id,
67
+ toolName: block.name,
68
+ input: (block.arguments ?? {}),
69
+ };
70
+ }
71
+ if (block.type === "thinking") {
72
+ return {
73
+ type: "thinking",
74
+ thinking: block.thinking ?? "",
75
+ ...(block.redacted !== undefined ? { redacted: Boolean(block.redacted) } : {}),
76
+ };
77
+ }
78
+ return { type: "text", text: block.text ?? "" };
79
+ });
80
+ const base = {
81
+ id: itemId(index),
82
+ role: "assistant",
83
+ content,
84
+ model: { provider: message.provider ?? "unknown", id: message.model ?? "unknown" },
85
+ ...(message.responseModel ? { responseModel: message.responseModel } : {}),
86
+ ...(toUsage(message.usage) ? { usage: toUsage(message.usage) } : {}),
87
+ timestamp: timestampOf(message.timestamp),
88
+ };
89
+ switch (message.stopReason) {
90
+ case "stop":
91
+ case "length":
92
+ case "toolUse":
93
+ return { ...base, status: "complete", stopReason: message.stopReason };
94
+ case "error":
95
+ return {
96
+ ...base,
97
+ status: "error",
98
+ stopReason: "error",
99
+ ...(message.errorMessage ? { errorMessage: message.errorMessage } : {}),
100
+ };
101
+ case "aborted":
102
+ return {
103
+ ...base,
104
+ status: "aborted",
105
+ stopReason: "aborted",
106
+ ...(message.errorMessage ? { errorMessage: message.errorMessage } : {}),
107
+ };
108
+ default:
109
+ // `pending` y `deferred`: el turno aún no ha cerrado. `deferred` no
110
+ // existe en el protocolo — tratarlo como streaming es lo único que no
111
+ // pierde el mensaje ni miente sobre su estado.
112
+ return { ...base, status: "streaming" };
113
+ }
114
+ }
115
+ function projectTool(message, index, input) {
116
+ const content = message.content.map((block) => block.type === "image"
117
+ ? { type: "image", data: block.data, mimeType: block.mimeType }
118
+ : { type: "text", text: block.text ?? "" });
119
+ const base = {
120
+ id: itemId(index),
121
+ role: "tool",
122
+ toolCallId: message.toolCallId,
123
+ toolName: message.toolName,
124
+ // El resultado NO trae los argumentos: vienen del ToolCall correlacionado.
125
+ input: (input ?? {}),
126
+ content,
127
+ ...(message.details !== undefined ? { details: message.details } : {}),
128
+ ...(toUsage(message.usage) ? { usage: toUsage(message.usage) } : {}),
129
+ timestamp: timestampOf(message.timestamp),
130
+ };
131
+ return message.isError
132
+ ? { ...base, status: "error", isError: true }
133
+ : { ...base, status: "complete", isError: false };
134
+ }
135
+ /**
136
+ * Proyecta el transcript completo.
137
+ *
138
+ * INVARIANTE: devuelve exactamente un item por mensaje de entrada, en el mismo
139
+ * orden. Nada se filtra ni se colapsa — si un mensaje no encaja en ninguna
140
+ * variante, se degrada a algo válido antes que desaparecer.
141
+ */
142
+ export function projectTranscript(messages) {
143
+ // Primera pasada: índice de argumentos por toolCallId, para el punto 2.
144
+ const inputs = new Map();
145
+ for (const message of messages) {
146
+ if (message.role !== "assistant")
147
+ continue;
148
+ for (const block of message.content) {
149
+ if (block.type === "toolCall")
150
+ inputs.set(block.id, block.arguments ?? {});
151
+ }
152
+ }
153
+ const items = [];
154
+ messages.forEach((message, index) => {
155
+ if (message.role === "user")
156
+ items.push(projectUser(message, index));
157
+ else if (message.role === "assistant")
158
+ items.push(projectAssistant(message, index));
159
+ else if (message.role === "toolResult")
160
+ items.push(projectTool(message, index, inputs.get(message.toolCallId)));
161
+ // Sin `else`: cualquier rol desconocido se ignoraría en silencio. Se
162
+ // gestiona abajo para que el invariante siga siendo comprobable.
163
+ else {
164
+ items.push({
165
+ id: itemId(index),
166
+ role: "user",
167
+ content: [
168
+ { type: "text", text: `[mensaje no reconocido: ${String(message.role)}]` },
169
+ ],
170
+ timestamp: timestampOf(message.timestamp),
171
+ });
172
+ }
173
+ });
174
+ return items;
175
+ }
176
+ //# sourceMappingURL=transcript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../src/server/transcript.ts"],"names":[],"mappings":"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","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"]}
@@ -0,0 +1,90 @@
1
+ ---
2
+ name: skill-creator
3
+ description: Use when the user asks to create, write or package a new Ada skill. Covers the SKILL.md layout, the frontmatter limits Ada's loader actually enforces, where to place the file so it is discovered, and the two Ada-specific rules a skill must never break.
4
+ ---
5
+
6
+ # Crear una skill de Ada
7
+
8
+ Una skill es un fichero `SKILL.md` con frontmatter YAML. Ada las carga bajo
9
+ demanda: el modelo ve el `name` y la `description` siempre, y el cuerpo solo
10
+ cuando la invoca.
11
+
12
+ ## Límites que el loader impone de verdad
13
+
14
+ Estos números salen de `src/core/skills.ts`, no de la especificación genérica.
15
+ Pasarse hace que la skill se rechace con un diagnóstico que el usuario
16
+ normalmente no ve:
17
+
18
+ | Campo | Límite | Regla |
19
+ |---|---|---|
20
+ | `name` | 64 caracteres | **Debe coincidir con el nombre del directorio.** `skills/mi-skill/SKILL.md` → `name: mi-skill` |
21
+ | `description` | 1024 caracteres | Es lo único que el modelo lee para decidir si la invoca |
22
+
23
+ ## Dónde ponerla
24
+
25
+ | Ruta | Alcance |
26
+ |---|---|
27
+ | `.ada/agent/skills/<nombre>/SKILL.md` | Solo este proyecto (gana sobre la global) |
28
+ | `~/.ada/agent/skills/<nombre>/SKILL.md` | Todos los proyectos |
29
+ | `~/.agents/skills/<nombre>/SKILL.md` | Compartida con otros agentes compatibles |
30
+
31
+ Precedencia: proyecto → global → paquete → builtin. Una skill de proyecto con el
32
+ mismo nombre que una builtin la sustituye.
33
+
34
+ ## Escribir la descripción
35
+
36
+ Es la parte que más se falla. La `description` no describe la skill: describe
37
+ **cuándo usarla**. El modelo la lee sin haber leído el cuerpo.
38
+
39
+ Mal: `Herramienta para bases de datos.`
40
+ Bien: `Use when reviewing database migrations: checks for missing rollbacks, non-concurrent index creation, and locking DDL on large tables.`
41
+
42
+ ## Dos reglas que una skill de Ada NO debe romper
43
+
44
+ Esto es lo específico de Ada, y no está en ningún otro sitio:
45
+
46
+ 1. **Nunca instruyas a un subagente para que llame a `goal_*`, `workflow` o
47
+ `graph_add_nodes`.** No es una convención: esas tools no existen en el
48
+ registro de un subagente, así que la instrucción fallaría. La orquestación
49
+ vive solo en la sesión principal, a propósito.
50
+
51
+ 2. **Nunca declares algo como hecho sin una cita `fichero:línea`.** El juez del
52
+ goal y los gates del grafo exigen evidencia observada. Una skill que enseñe
53
+ al modelo a afirmar "ya está arreglado" sin cita está enseñándole a saltarse
54
+ la propiedad central del producto.
55
+
56
+ ## Plantilla
57
+
58
+ ```markdown
59
+ ---
60
+ name: revisar-migraciones
61
+ description: Use when reviewing database migration files, before merging schema changes, or when the user mentions Alembic/Flyway/Prisma migrations. Checks rollback coverage, index concurrency and locking DDL.
62
+ ---
63
+
64
+ # Revisar migraciones
65
+
66
+ ## Cuándo aplica
67
+ Ficheros bajo `migrations/`, `alembic/versions/` o `prisma/migrations/`.
68
+
69
+ ## Pasos
70
+ 1. Comprueba que cada `up` tiene su `down`. Cita `fichero:línea` de los que no.
71
+ 2. Marca los `CREATE INDEX` sin `CONCURRENTLY` sobre tablas de >1M filas.
72
+ 3. Marca el DDL que toma un lock exclusivo en horario de producción.
73
+
74
+ ## Salida
75
+ Una lista por severidad, cada hallazgo con su cita `fichero:línea`. Si no hay
76
+ hallazgos, dilo — no rellenes.
77
+ ```
78
+
79
+ ## Empaquetar un workflow ya ejecutado
80
+
81
+ Si lo que quieres reutilizar es un *procedimiento* que ya corrió, no escribas
82
+ una skill: guarda el run.
83
+
84
+ ```
85
+ workflow save-as-skill <runId> <nombre>
86
+ ```
87
+
88
+ Eso guarda el script que **se ejecutó de verdad**, con su procedencia (runId,
89
+ args, resultado) en la cabecera. Solo acepta runs completados. Es más fiable que
90
+ una skill escrita a mano describiendo lo que uno cree que hizo.
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Cliente de la Bot API de Telegram. Sin dependencias.
3
+ *
4
+ * Se habla HTTP directamente en vez de traer `grammy` o `node-telegram-bot-api`
5
+ * por la misma razón que el resto del producto evita dependencias: es un CLI
6
+ * que se instala en máquinas ajenas, y cada paquete añadido es superficie de
7
+ * suministro que no controlamos. La Bot API es JSON sobre HTTPS; el envoltorio
8
+ * cabe en un fichero.
9
+ *
10
+ * El long polling es la única forma sensata aquí: un webhook exigiría exponer un
11
+ * puerto público desde el portátil de alguien.
12
+ */
13
+ export interface TelegramUser {
14
+ id: number;
15
+ is_bot?: boolean;
16
+ username?: string;
17
+ first_name?: string;
18
+ }
19
+ export interface TelegramMessage {
20
+ message_id: number;
21
+ from?: TelegramUser;
22
+ chat: {
23
+ id: number;
24
+ type: string;
25
+ };
26
+ text?: string;
27
+ date: number;
28
+ }
29
+ export interface TelegramUpdate {
30
+ update_id: number;
31
+ message?: TelegramMessage;
32
+ callback_query?: {
33
+ id: string;
34
+ from: TelegramUser;
35
+ data?: string;
36
+ message?: TelegramMessage;
37
+ };
38
+ }
39
+ export interface ApiOptions {
40
+ token: string;
41
+ fetchImpl?: typeof fetch;
42
+ /** Segundos que el servidor retiene la petición sin novedades. */
43
+ longPollSeconds?: number;
44
+ }
45
+ export declare class TelegramApiError extends Error {
46
+ method: string;
47
+ status: number;
48
+ description: string;
49
+ /** Segundos que Telegram pide esperar (429). */
50
+ retryAfter?: number;
51
+ constructor(method: string, status: number, description: string, retryAfter?: number);
52
+ }
53
+ export declare class TelegramApi {
54
+ private token;
55
+ private fetchImpl;
56
+ private longPollSeconds;
57
+ constructor(options: ApiOptions);
58
+ private call;
59
+ /** Identidad del bot. Sirve para validar el token antes de hacer nada. */
60
+ getMe(signal?: AbortSignal): Promise<TelegramUser>;
61
+ /**
62
+ * Long poll. `offset` confirma como recibidas todas las actualizaciones
63
+ * ANTERIORES — por eso quien llama solo debe avanzarlo tras persistir.
64
+ */
65
+ getUpdates(offset: number, signal?: AbortSignal): Promise<TelegramUpdate[]>;
66
+ sendMessage(chatId: number, text: string, options?: {
67
+ replyTo?: number;
68
+ }): Promise<TelegramMessage>;
69
+ editMessage(chatId: number, messageId: number, text: string): Promise<unknown>;
70
+ /** Indicador de "escribiendo…". Caduca solo a los ~5 s. */
71
+ sendTyping(chatId: number): Promise<unknown>;
72
+ }
73
+ /** Trocea respetando saltos de línea; Telegram corta a 4096 caracteres. */
74
+ export declare function splitForTelegram(text: string, limit?: number): string[];
75
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/telegram/api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,cAAc,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,YAAY,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,eAAe,CAAA;KAAE,CAAC;CAC9F;AAED,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,mEAAkE;IAClE,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,YAAY,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAOnF;CACD;AAED,qBAAa,WAAW;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,eAAe,CAAS;IAEhC,YAAY,OAAO,EAAE,UAAU,EAI9B;YAQa,IAAI;IAwBlB,0EAA0E;IAC1E,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAEjD;IAED;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAM1E;IAED,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CAStG;IAED,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE7E;IAED,6DAA2D;IAC3D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE3C;CACD;AAED,4EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAO,GAAG,MAAM,EAAE,CAcrE","sourcesContent":["/**\n * Cliente de la Bot API de Telegram. Sin dependencias.\n *\n * Se habla HTTP directamente en vez de traer `grammy` o `node-telegram-bot-api`\n * por la misma razón que el resto del producto evita dependencias: es un CLI\n * que se instala en máquinas ajenas, y cada paquete añadido es superficie de\n * suministro que no controlamos. La Bot API es JSON sobre HTTPS; el envoltorio\n * cabe en un fichero.\n *\n * El long polling es la única forma sensata aquí: un webhook exigiría exponer un\n * puerto público desde el portátil de alguien.\n */\n\nconst BASE = \"https://api.telegram.org\";\n\nexport interface TelegramUser {\n\tid: number;\n\tis_bot?: boolean;\n\tusername?: string;\n\tfirst_name?: string;\n}\n\nexport interface TelegramMessage {\n\tmessage_id: number;\n\tfrom?: TelegramUser;\n\tchat: { id: number; type: string };\n\ttext?: string;\n\tdate: number;\n}\n\nexport interface TelegramUpdate {\n\tupdate_id: number;\n\tmessage?: TelegramMessage;\n\tcallback_query?: { id: string; from: TelegramUser; data?: string; message?: TelegramMessage };\n}\n\nexport interface ApiOptions {\n\ttoken: string;\n\tfetchImpl?: typeof fetch;\n\t/** Segundos que el servidor retiene la petición sin novedades. */\n\tlongPollSeconds?: number;\n}\n\nexport class TelegramApiError extends Error {\n\tmethod: string;\n\tstatus: number;\n\tdescription: string;\n\t/** Segundos que Telegram pide esperar (429). */\n\tretryAfter?: number;\n\n\tconstructor(method: string, status: number, description: string, retryAfter?: number) {\n\t\tsuper(`${method}: ${description} (HTTP ${status})`);\n\t\tthis.name = \"TelegramApiError\";\n\t\tthis.method = method;\n\t\tthis.status = status;\n\t\tthis.description = description;\n\t\tthis.retryAfter = retryAfter;\n\t}\n}\n\nexport class TelegramApi {\n\tprivate token: string;\n\tprivate fetchImpl: typeof fetch;\n\tprivate longPollSeconds: number;\n\n\tconstructor(options: ApiOptions) {\n\t\tthis.token = options.token;\n\t\tthis.fetchImpl = options.fetchImpl ?? fetch;\n\t\tthis.longPollSeconds = options.longPollSeconds ?? 25;\n\t}\n\n\t/**\n\t * Llama a un método de la Bot API.\n\t *\n\t * El token va en la URL porque así lo define Telegram; por eso `toString()`\n\t * de esta clase y cualquier traza deben evitar imprimir la URL entera.\n\t */\n\tprivate async call<T>(method: string, params: Record<string, unknown>, signal?: AbortSignal): Promise<T> {\n\t\tconst response = await this.fetchImpl(`${BASE}/bot${this.token}/${method}`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: { \"content-type\": \"application/json\" },\n\t\t\tbody: JSON.stringify(params),\n\t\t\tsignal,\n\t\t});\n\t\tconst body = (await response.json().catch(() => ({}))) as {\n\t\t\tok?: boolean;\n\t\t\tresult?: T;\n\t\t\tdescription?: string;\n\t\t\tparameters?: { retry_after?: number };\n\t\t};\n\t\tif (!response.ok || !body.ok) {\n\t\t\tthrow new TelegramApiError(\n\t\t\t\tmethod,\n\t\t\t\tresponse.status,\n\t\t\t\tbody.description ?? \"sin descripción\",\n\t\t\t\tbody.parameters?.retry_after,\n\t\t\t);\n\t\t}\n\t\treturn body.result as T;\n\t}\n\n\t/** Identidad del bot. Sirve para validar el token antes de hacer nada. */\n\tgetMe(signal?: AbortSignal): Promise<TelegramUser> {\n\t\treturn this.call<TelegramUser>(\"getMe\", {}, signal);\n\t}\n\n\t/**\n\t * Long poll. `offset` confirma como recibidas todas las actualizaciones\n\t * ANTERIORES — por eso quien llama solo debe avanzarlo tras persistir.\n\t */\n\tgetUpdates(offset: number, signal?: AbortSignal): Promise<TelegramUpdate[]> {\n\t\treturn this.call<TelegramUpdate[]>(\n\t\t\t\"getUpdates\",\n\t\t\t{ offset, timeout: this.longPollSeconds, allowed_updates: [\"message\", \"callback_query\"] },\n\t\t\tsignal,\n\t\t);\n\t}\n\n\tsendMessage(chatId: number, text: string, options: { replyTo?: number } = {}): Promise<TelegramMessage> {\n\t\treturn this.call<TelegramMessage>(\"sendMessage\", {\n\t\t\tchat_id: chatId,\n\t\t\ttext,\n\t\t\t// Sin parse_mode: el texto del agente puede contener Markdown roto o\n\t\t\t// caracteres que Telegram rechazaría, y un 400 por formato perdería el\n\t\t\t// mensaje entero. Texto plano siempre llega.\n\t\t\t...(options.replyTo ? { reply_to_message_id: options.replyTo } : {}),\n\t\t});\n\t}\n\n\teditMessage(chatId: number, messageId: number, text: string): Promise<unknown> {\n\t\treturn this.call(\"editMessageText\", { chat_id: chatId, message_id: messageId, text });\n\t}\n\n\t/** Indicador de \"escribiendo…\". Caduca solo a los ~5 s. */\n\tsendTyping(chatId: number): Promise<unknown> {\n\t\treturn this.call(\"sendChatAction\", { chat_id: chatId, action: \"typing\" }).catch(() => undefined);\n\t}\n}\n\n/** Trocea respetando saltos de línea; Telegram corta a 4096 caracteres. */\nexport function splitForTelegram(text: string, limit = 4000): string[] {\n\tif (text.length <= limit) return [text];\n\tconst partes: string[] = [];\n\tlet resto = text;\n\twhile (resto.length > limit) {\n\t\t// Se corta en el último salto de línea que quepa para no partir una\n\t\t// palabra ni un bloque de código por la mitad.\n\t\tconst corte = resto.lastIndexOf(\"\\n\", limit);\n\t\tconst en = corte > limit * 0.5 ? corte : limit;\n\t\tpartes.push(resto.slice(0, en));\n\t\tresto = resto.slice(en).replace(/^\\n/, \"\");\n\t}\n\tif (resto) partes.push(resto);\n\treturn partes;\n}\n"]}