@hoilab/ada-cli 0.85.0 → 0.85.1

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 (1691) hide show
  1. package/dist/ada-publico.d.ts.map +1 -1
  2. package/dist/ada-publico.js.map +1 -1
  3. package/dist/bun/cli.d.ts.map +1 -1
  4. package/dist/bun/cli.js.map +1 -1
  5. package/dist/bun/register-bedrock.d.ts.map +1 -1
  6. package/dist/bun/register-bedrock.js.map +1 -1
  7. package/dist/bun/restore-sandbox-env.d.ts.map +1 -1
  8. package/dist/bun/restore-sandbox-env.js.map +1 -1
  9. package/dist/cli/args.d.ts.map +1 -1
  10. package/dist/cli/args.js.map +1 -1
  11. package/dist/cli/audit-command.d.ts.map +1 -1
  12. package/dist/cli/audit-command.js.map +1 -1
  13. package/dist/cli/auth-check.d.ts.map +1 -1
  14. package/dist/cli/auth-check.js.map +1 -1
  15. package/dist/cli/auth-command.d.ts.map +1 -1
  16. package/dist/cli/auth-command.js.map +1 -1
  17. package/dist/cli/banco-command.d.ts.map +1 -1
  18. package/dist/cli/banco-command.js.map +1 -1
  19. package/dist/cli/cleanse-command.d.ts.map +1 -1
  20. package/dist/cli/cleanse-command.js +5 -2
  21. package/dist/cli/cleanse-command.js.map +1 -1
  22. package/dist/cli/commit-command.d.ts +8 -6
  23. package/dist/cli/commit-command.d.ts.map +1 -1
  24. package/dist/cli/commit-command.js +124 -92
  25. package/dist/cli/commit-command.js.map +1 -1
  26. package/dist/cli/completion.d.ts +20 -0
  27. package/dist/cli/completion.d.ts.map +1 -0
  28. package/dist/cli/completion.js +75 -0
  29. package/dist/cli/completion.js.map +1 -0
  30. package/dist/cli/computer-command.d.ts.map +1 -1
  31. package/dist/cli/computer-command.js.map +1 -1
  32. package/dist/cli/config-selector.d.ts.map +1 -1
  33. package/dist/cli/config-selector.js.map +1 -1
  34. package/dist/cli/credential-print.d.ts.map +1 -1
  35. package/dist/cli/credential-print.js.map +1 -1
  36. package/dist/cli/discover-command.d.ts.map +1 -1
  37. package/dist/cli/discover-command.js +5 -1
  38. package/dist/cli/discover-command.js.map +1 -1
  39. package/dist/cli/experimental/auth.d.ts.map +1 -1
  40. package/dist/cli/experimental/auth.js.map +1 -1
  41. package/dist/cli/experimental/cli.d.ts +1 -1
  42. package/dist/cli/experimental/cli.d.ts.map +1 -1
  43. package/dist/cli/experimental/cli.js.map +1 -1
  44. package/dist/cli/experimental/command-options.d.ts.map +1 -1
  45. package/dist/cli/experimental/command-options.js.map +1 -1
  46. package/dist/cli/experimental/command.d.ts.map +1 -1
  47. package/dist/cli/experimental/command.js.map +1 -1
  48. package/dist/cli/experimental/commands/client.d.ts.map +1 -1
  49. package/dist/cli/experimental/commands/client.js.map +1 -1
  50. package/dist/cli/experimental/commands/pi.d.ts.map +1 -1
  51. package/dist/cli/experimental/commands/pi.js.map +1 -1
  52. package/dist/cli/experimental/commands/server.d.ts.map +1 -1
  53. package/dist/cli/experimental/commands/server.js.map +1 -1
  54. package/dist/cli/experimental/transport-address.d.ts.map +1 -1
  55. package/dist/cli/experimental/transport-address.js.map +1 -1
  56. package/dist/cli/file-processor.d.ts.map +1 -1
  57. package/dist/cli/file-processor.js.map +1 -1
  58. package/dist/cli/guardrails.d.ts +14 -0
  59. package/dist/cli/guardrails.d.ts.map +1 -0
  60. package/dist/cli/guardrails.js +47 -0
  61. package/dist/cli/guardrails.js.map +1 -0
  62. package/dist/cli/hashline-command.d.ts.map +1 -1
  63. package/dist/cli/hashline-command.js.map +1 -1
  64. package/dist/cli/home-screen.d.ts.map +1 -1
  65. package/dist/cli/home-screen.js +1 -0
  66. package/dist/cli/home-screen.js.map +1 -1
  67. package/dist/cli/import-command.d.ts.map +1 -1
  68. package/dist/cli/import-command.js.map +1 -1
  69. package/dist/cli/initial-message.d.ts +1 -1
  70. package/dist/cli/initial-message.d.ts.map +1 -1
  71. package/dist/cli/initial-message.js.map +1 -1
  72. package/dist/cli/list-models.d.ts.map +1 -1
  73. package/dist/cli/list-models.js.map +1 -1
  74. package/dist/cli/politica-command.d.ts.map +1 -1
  75. package/dist/cli/politica-command.js.map +1 -1
  76. package/dist/cli/project-trust.d.ts.map +1 -1
  77. package/dist/cli/project-trust.js.map +1 -1
  78. package/dist/cli/refine-command.d.ts.map +1 -1
  79. package/dist/cli/refine-command.js.map +1 -1
  80. package/dist/cli/review-command.d.ts.map +1 -1
  81. package/dist/cli/review-command.js +77 -13
  82. package/dist/cli/review-command.js.map +1 -1
  83. package/dist/cli/schedule-command.d.ts.map +1 -1
  84. package/dist/cli/schedule-command.js.map +1 -1
  85. package/dist/cli/serve-command.d.ts +0 -1
  86. package/dist/cli/serve-command.d.ts.map +1 -1
  87. package/dist/cli/serve-command.js +12 -6
  88. package/dist/cli/serve-command.js.map +1 -1
  89. package/dist/cli/session-picker.d.ts.map +1 -1
  90. package/dist/cli/session-picker.js.map +1 -1
  91. package/dist/cli/startup-ui.d.ts.map +1 -1
  92. package/dist/cli/startup-ui.js.map +1 -1
  93. package/dist/cli/telegram-command.d.ts.map +1 -1
  94. package/dist/cli/telegram-command.js.map +1 -1
  95. package/dist/cli/telemetria-command.d.ts.map +1 -1
  96. package/dist/cli/telemetria-command.js.map +1 -1
  97. package/dist/cli/undo-command.d.ts.map +1 -1
  98. package/dist/cli/undo-command.js.map +1 -1
  99. package/dist/cli/update-cli.d.ts +82 -0
  100. package/dist/cli/update-cli.d.ts.map +1 -0
  101. package/dist/cli/update-cli.js +372 -0
  102. package/dist/cli/update-cli.js.map +1 -0
  103. package/dist/cli/usage-command.d.ts.map +1 -1
  104. package/dist/cli/usage-command.js +75 -6
  105. package/dist/cli/usage-command.js.map +1 -1
  106. package/dist/cli/wiki-command.d.ts.map +1 -1
  107. package/dist/cli/wiki-command.js.map +1 -1
  108. package/dist/cli.d.ts +0 -6
  109. package/dist/cli.d.ts.map +1 -1
  110. package/dist/cli.js +0 -0
  111. package/dist/cli.js.map +1 -1
  112. package/dist/client/index.d.ts.map +1 -1
  113. package/dist/client/index.js.map +1 -1
  114. package/dist/client/remote-session.d.ts.map +1 -1
  115. package/dist/client/remote-session.js.map +1 -1
  116. package/dist/client/transcript.d.ts.map +1 -1
  117. package/dist/client/transcript.js.map +1 -1
  118. package/dist/config.d.ts.map +1 -1
  119. package/dist/config.js.map +1 -1
  120. package/dist/core/ada.d.ts +5 -0
  121. package/dist/core/ada.d.ts.map +1 -1
  122. package/dist/core/ada.js +5 -0
  123. package/dist/core/ada.js.map +1 -1
  124. package/dist/core/advisor/guarda.d.ts.map +1 -1
  125. package/dist/core/advisor/guarda.js.map +1 -1
  126. package/dist/core/advisor/runtime.d.ts.map +1 -1
  127. package/dist/core/advisor/runtime.js.map +1 -1
  128. package/dist/core/advisor/sesion.d.ts.map +1 -1
  129. package/dist/core/advisor/sesion.js.map +1 -1
  130. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  131. package/dist/core/agent-session-runtime.js.map +1 -1
  132. package/dist/core/agent-session-services.d.ts.map +1 -1
  133. package/dist/core/agent-session-services.js.map +1 -1
  134. package/dist/core/agent-session.d.ts +67 -0
  135. package/dist/core/agent-session.d.ts.map +1 -1
  136. package/dist/core/agent-session.js +43 -2
  137. package/dist/core/agent-session.js.map +1 -1
  138. package/dist/core/agents/loader.d.ts.map +1 -1
  139. package/dist/core/agents/loader.js.map +1 -1
  140. package/dist/core/appendonly/append-only-context.d.ts +118 -0
  141. package/dist/core/appendonly/append-only-context.d.ts.map +1 -0
  142. package/dist/core/appendonly/append-only-context.js +256 -0
  143. package/dist/core/appendonly/append-only-context.js.map +1 -0
  144. package/dist/core/appendonly/auto.d.ts +30 -0
  145. package/dist/core/appendonly/auto.d.ts.map +1 -0
  146. package/dist/core/appendonly/auto.js +68 -0
  147. package/dist/core/appendonly/auto.js.map +1 -0
  148. package/dist/core/appendonly/extension.d.ts +29 -0
  149. package/dist/core/appendonly/extension.d.ts.map +1 -0
  150. package/dist/core/appendonly/extension.js +51 -0
  151. package/dist/core/appendonly/extension.js.map +1 -0
  152. package/dist/core/appendonly/index.d.ts +41 -0
  153. package/dist/core/appendonly/index.d.ts.map +1 -0
  154. package/dist/core/appendonly/index.js +42 -0
  155. package/dist/core/appendonly/index.js.map +1 -0
  156. package/dist/core/aprobacion/generados.d.ts.map +1 -1
  157. package/dist/core/aprobacion/generados.js.map +1 -1
  158. package/dist/core/aprobacion/politica-de-maquina.d.ts.map +1 -1
  159. package/dist/core/aprobacion/politica-de-maquina.js.map +1 -1
  160. package/dist/core/aprobacion/politica.d.ts +1 -1
  161. package/dist/core/aprobacion/politica.d.ts.map +1 -1
  162. package/dist/core/aprobacion/politica.js.map +1 -1
  163. package/dist/core/arranque/atajos.d.ts.map +1 -1
  164. package/dist/core/arranque/atajos.js +20 -0
  165. package/dist/core/arranque/atajos.js.map +1 -1
  166. package/dist/core/audit/exportacion.d.ts.map +1 -1
  167. package/dist/core/audit/exportacion.js +5 -3
  168. package/dist/core/audit/exportacion.js.map +1 -1
  169. package/dist/core/audit/libro.d.ts +7 -0
  170. package/dist/core/audit/libro.d.ts.map +1 -1
  171. package/dist/core/audit/libro.js.map +1 -1
  172. package/dist/core/audit/registro-sesion.d.ts.map +1 -1
  173. package/dist/core/audit/registro-sesion.js.map +1 -1
  174. package/dist/core/audit/retencion.d.ts.map +1 -1
  175. package/dist/core/audit/retencion.js.map +1 -1
  176. package/dist/core/audit/rutas.d.ts.map +1 -1
  177. package/dist/core/audit/rutas.js.map +1 -1
  178. package/dist/core/auth-guidance.d.ts.map +1 -1
  179. package/dist/core/auth-guidance.js.map +1 -1
  180. package/dist/core/auth-storage.d.ts.map +1 -1
  181. package/dist/core/auth-storage.js.map +1 -1
  182. package/dist/core/banco/almacenamiento.d.ts.map +1 -1
  183. package/dist/core/banco/almacenamiento.js.map +1 -1
  184. package/dist/core/banco/analisis.d.ts.map +1 -1
  185. package/dist/core/banco/analisis.js.map +1 -1
  186. package/dist/core/banco/asides.d.ts +64 -0
  187. package/dist/core/banco/asides.d.ts.map +1 -0
  188. package/dist/core/banco/asides.js +113 -0
  189. package/dist/core/banco/asides.js.map +1 -0
  190. package/dist/core/banco/bloques.d.ts.map +1 -1
  191. package/dist/core/banco/bloques.js.map +1 -1
  192. package/dist/core/banco/cargas.d.ts.map +1 -1
  193. package/dist/core/banco/cargas.js.map +1 -1
  194. package/dist/core/banco/comparar.d.ts.map +1 -1
  195. package/dist/core/banco/comparar.js.map +1 -1
  196. package/dist/core/banco/cow-isolation.d.ts +74 -0
  197. package/dist/core/banco/cow-isolation.d.ts.map +1 -0
  198. package/dist/core/banco/cow-isolation.js +259 -0
  199. package/dist/core/banco/cow-isolation.js.map +1 -0
  200. package/dist/core/banco/ejecutar.d.ts.map +1 -1
  201. package/dist/core/banco/ejecutar.js.map +1 -1
  202. package/dist/core/banco/generar.d.ts.map +1 -1
  203. package/dist/core/banco/generar.js.map +1 -1
  204. package/dist/core/banco/mutaciones.d.ts.map +1 -1
  205. package/dist/core/banco/mutaciones.js.map +1 -1
  206. package/dist/core/banco/park-revive.d.ts +67 -0
  207. package/dist/core/banco/park-revive.d.ts.map +1 -0
  208. package/dist/core/banco/park-revive.js +130 -0
  209. package/dist/core/banco/park-revive.js.map +1 -0
  210. package/dist/core/banco/pruning.d.ts +48 -0
  211. package/dist/core/banco/pruning.d.ts.map +1 -0
  212. package/dist/core/banco/pruning.js +146 -0
  213. package/dist/core/banco/pruning.js.map +1 -0
  214. package/dist/core/banco/steering.d.ts +81 -0
  215. package/dist/core/banco/steering.d.ts.map +1 -0
  216. package/dist/core/banco/steering.js +96 -0
  217. package/dist/core/banco/steering.js.map +1 -0
  218. package/dist/core/banco/tipos.d.ts.map +1 -1
  219. package/dist/core/banco/tipos.js.map +1 -1
  220. package/dist/core/bash-executor.d.ts.map +1 -1
  221. package/dist/core/bash-executor.js.map +1 -1
  222. package/dist/core/blobs/almacen.d.ts.map +1 -1
  223. package/dist/core/blobs/almacen.js.map +1 -1
  224. package/dist/core/blobs/broker.d.ts +1 -0
  225. package/dist/core/blobs/broker.d.ts.map +1 -1
  226. package/dist/core/blobs/broker.js +1 -1
  227. package/dist/core/blobs/broker.js.map +1 -1
  228. package/dist/core/blobs/index.d.ts +1 -0
  229. package/dist/core/blobs/index.d.ts.map +1 -1
  230. package/dist/core/blobs/index.js +1 -0
  231. package/dist/core/blobs/index.js.map +1 -1
  232. package/dist/core/blobs/payload.d.ts.map +1 -1
  233. package/dist/core/blobs/payload.js.map +1 -1
  234. package/dist/core/blobs/proveedor.d.ts.map +1 -1
  235. package/dist/core/blobs/proveedor.js.map +1 -1
  236. package/dist/core/blobs/uploaders.d.ts +105 -0
  237. package/dist/core/blobs/uploaders.d.ts.map +1 -0
  238. package/dist/core/blobs/uploaders.js +224 -0
  239. package/dist/core/blobs/uploaders.js.map +1 -0
  240. package/dist/core/broker/broker.d.ts +54 -0
  241. package/dist/core/broker/broker.d.ts.map +1 -0
  242. package/dist/core/broker/broker.js +216 -0
  243. package/dist/core/broker/broker.js.map +1 -0
  244. package/dist/core/broker/index.d.ts +21 -0
  245. package/dist/core/broker/index.d.ts.map +1 -0
  246. package/dist/core/broker/index.js +33 -0
  247. package/dist/core/broker/index.js.map +1 -0
  248. package/dist/core/broker/ps.d.ts +20 -0
  249. package/dist/core/broker/ps.d.ts.map +1 -0
  250. package/dist/core/broker/ps.js +55 -0
  251. package/dist/core/broker/ps.js.map +1 -0
  252. package/dist/core/broker/types.d.ts +45 -0
  253. package/dist/core/broker/types.d.ts.map +1 -0
  254. package/dist/core/broker/types.js +19 -0
  255. package/dist/core/broker/types.js.map +1 -0
  256. package/dist/core/browser/cdp.d.ts.map +1 -1
  257. package/dist/core/browser/cdp.js.map +1 -1
  258. package/dist/core/browser/politica.d.ts.map +1 -1
  259. package/dist/core/browser/politica.js.map +1 -1
  260. package/dist/core/browser/sesion.d.ts.map +1 -1
  261. package/dist/core/browser/sesion.js.map +1 -1
  262. package/dist/core/browser/tools.d.ts.map +1 -1
  263. package/dist/core/browser/tools.js.map +1 -1
  264. package/dist/core/cache-stats.d.ts.map +1 -1
  265. package/dist/core/cache-stats.js.map +1 -1
  266. package/dist/core/capability/capability.test.d.ts +12 -0
  267. package/dist/core/capability/capability.test.d.ts.map +1 -0
  268. package/dist/core/capability/capability.test.js +258 -0
  269. package/dist/core/capability/capability.test.js.map +1 -0
  270. package/dist/core/capability/fs.d.ts +32 -0
  271. package/dist/core/capability/fs.d.ts.map +1 -0
  272. package/dist/core/capability/fs.js +106 -0
  273. package/dist/core/capability/fs.js.map +1 -0
  274. package/dist/core/capability/index.d.ts +68 -0
  275. package/dist/core/capability/index.d.ts.map +1 -0
  276. package/dist/core/capability/index.js +258 -0
  277. package/dist/core/capability/index.js.map +1 -0
  278. package/dist/core/capability/types.d.ts +168 -0
  279. package/dist/core/capability/types.d.ts.map +1 -0
  280. package/dist/core/capability/types.js +16 -0
  281. package/dist/core/capability/types.js.map +1 -0
  282. package/dist/core/carga-plugins/index.d.ts +49 -0
  283. package/dist/core/carga-plugins/index.d.ts.map +1 -0
  284. package/dist/core/carga-plugins/index.js +85 -0
  285. package/dist/core/carga-plugins/index.js.map +1 -0
  286. package/dist/core/carga-plugins/invalidacion.d.ts +60 -0
  287. package/dist/core/carga-plugins/invalidacion.d.ts.map +1 -0
  288. package/dist/core/carga-plugins/invalidacion.js +94 -0
  289. package/dist/core/carga-plugins/invalidacion.js.map +1 -0
  290. package/dist/core/carga-plugins/paralelo.d.ts +48 -0
  291. package/dist/core/carga-plugins/paralelo.d.ts.map +1 -0
  292. package/dist/core/carga-plugins/paralelo.js +47 -0
  293. package/dist/core/carga-plugins/paralelo.js.map +1 -0
  294. package/dist/core/colaboracion/autoresearch.d.ts +56 -0
  295. package/dist/core/colaboracion/autoresearch.d.ts.map +1 -0
  296. package/dist/core/colaboracion/autoresearch.js +95 -0
  297. package/dist/core/colaboracion/autoresearch.js.map +1 -0
  298. package/dist/core/colaboracion/index.d.ts +10 -0
  299. package/dist/core/colaboracion/index.d.ts.map +1 -0
  300. package/dist/core/colaboracion/index.js +7 -0
  301. package/dist/core/colaboracion/index.js.map +1 -0
  302. package/dist/core/colaboracion/kernels.d.ts +63 -0
  303. package/dist/core/colaboracion/kernels.d.ts.map +1 -0
  304. package/dist/core/colaboracion/kernels.js +99 -0
  305. package/dist/core/colaboracion/kernels.js.map +1 -0
  306. package/dist/core/colaboracion/rele/index.d.ts +8 -0
  307. package/dist/core/colaboracion/rele/index.d.ts.map +1 -0
  308. package/dist/core/colaboracion/rele/index.js +6 -0
  309. package/dist/core/colaboracion/rele/index.js.map +1 -0
  310. package/dist/core/colaboracion/rele/rele-servidor.d.ts +69 -0
  311. package/dist/core/colaboracion/rele/rele-servidor.d.ts.map +1 -0
  312. package/dist/core/colaboracion/rele/rele-servidor.js +197 -0
  313. package/dist/core/colaboracion/rele/rele-servidor.js.map +1 -0
  314. package/dist/core/colaboracion/rele/suscriptor.d.ts +31 -0
  315. package/dist/core/colaboracion/rele/suscriptor.d.ts.map +1 -0
  316. package/dist/core/colaboracion/rele/suscriptor.js +173 -0
  317. package/dist/core/colaboracion/rele/suscriptor.js.map +1 -0
  318. package/dist/core/colaboracion/sesion-colaborativa.d.ts +61 -0
  319. package/dist/core/colaboracion/sesion-colaborativa.d.ts.map +1 -0
  320. package/dist/core/colaboracion/sesion-colaborativa.js +127 -0
  321. package/dist/core/colaboracion/sesion-colaborativa.js.map +1 -0
  322. package/dist/core/commits/agentic.d.ts +101 -0
  323. package/dist/core/commits/agentic.d.ts.map +1 -0
  324. package/dist/core/commits/agentic.js +268 -0
  325. package/dist/core/commits/agentic.js.map +1 -0
  326. package/dist/core/commits/changelog.d.ts +37 -0
  327. package/dist/core/commits/changelog.d.ts.map +1 -0
  328. package/dist/core/commits/changelog.js +155 -0
  329. package/dist/core/commits/changelog.js.map +1 -0
  330. package/dist/core/commits/diff.d.ts.map +1 -0
  331. package/dist/core/commits/diff.js.map +1 -0
  332. package/dist/core/commits/git.d.ts +43 -0
  333. package/dist/core/commits/git.d.ts.map +1 -0
  334. package/dist/core/commits/git.js +61 -0
  335. package/dist/core/commits/git.js.map +1 -0
  336. package/dist/core/commits/split.d.ts +45 -0
  337. package/dist/core/commits/split.d.ts.map +1 -0
  338. package/dist/core/commits/split.js +128 -0
  339. package/dist/core/commits/split.js.map +1 -0
  340. package/dist/core/compactacion/comandos.d.ts +53 -0
  341. package/dist/core/compactacion/comandos.d.ts.map +1 -0
  342. package/dist/core/compactacion/comandos.js +155 -0
  343. package/dist/core/compactacion/comandos.js.map +1 -0
  344. package/dist/core/compactacion/extension.d.ts +28 -0
  345. package/dist/core/compactacion/extension.d.ts.map +1 -0
  346. package/dist/core/compactacion/extension.js +159 -0
  347. package/dist/core/compactacion/extension.js.map +1 -0
  348. package/dist/core/compactacion/handoff.d.ts +61 -0
  349. package/dist/core/compactacion/handoff.d.ts.map +1 -0
  350. package/dist/core/compactacion/handoff.js +139 -0
  351. package/dist/core/compactacion/handoff.js.map +1 -0
  352. package/dist/core/compactacion/index.d.ts +15 -0
  353. package/dist/core/compactacion/index.d.ts.map +1 -0
  354. package/dist/core/compactacion/index.js +15 -0
  355. package/dist/core/compactacion/index.js.map +1 -0
  356. package/dist/core/compactacion/prune.d.ts +38 -0
  357. package/dist/core/compactacion/prune.d.ts.map +1 -0
  358. package/dist/core/compactacion/prune.js +81 -0
  359. package/dist/core/compactacion/prune.js.map +1 -0
  360. package/dist/core/compactacion/shake.d.ts +40 -0
  361. package/dist/core/compactacion/shake.d.ts.map +1 -0
  362. package/dist/core/compactacion/shake.js +106 -0
  363. package/dist/core/compactacion/shake.js.map +1 -0
  364. package/dist/core/compactacion/tipos.d.ts +54 -0
  365. package/dist/core/compactacion/tipos.d.ts.map +1 -0
  366. package/dist/core/compactacion/tipos.js +44 -0
  367. package/dist/core/compactacion/tipos.js.map +1 -0
  368. package/dist/core/compactar/index.d.ts.map +1 -1
  369. package/dist/core/compactar/index.js.map +1 -1
  370. package/dist/core/compactar/registro-denso.d.ts.map +1 -1
  371. package/dist/core/compactar/registro-denso.js.map +1 -1
  372. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  373. package/dist/core/compaction/branch-summarization.js.map +1 -1
  374. package/dist/core/compaction/compaction.d.ts.map +1 -1
  375. package/dist/core/compaction/compaction.js.map +1 -1
  376. package/dist/core/compaction/index.d.ts.map +1 -1
  377. package/dist/core/compaction/index.js.map +1 -1
  378. package/dist/core/compaction/utils.d.ts.map +1 -1
  379. package/dist/core/compaction/utils.js.map +1 -1
  380. package/dist/core/computer/captura.d.ts.map +1 -1
  381. package/dist/core/computer/captura.js.map +1 -1
  382. package/dist/core/computer/driver.d.ts.map +1 -1
  383. package/dist/core/computer/driver.js.map +1 -1
  384. package/dist/core/computer/motor/actions.d.ts.map +1 -1
  385. package/dist/core/computer/motor/actions.js.map +1 -1
  386. package/dist/core/computer/motor/bridge.d.ts +2 -2
  387. package/dist/core/computer/motor/bridge.d.ts.map +1 -1
  388. package/dist/core/computer/motor/bridge.js.map +1 -1
  389. package/dist/core/computer/motor/cdp.d.ts.map +1 -1
  390. package/dist/core/computer/motor/cdp.js.map +1 -1
  391. package/dist/core/computer/motor/config.d.ts.map +1 -1
  392. package/dist/core/computer/motor/config.js.map +1 -1
  393. package/dist/core/computer/motor/contract.d.ts.map +1 -1
  394. package/dist/core/computer/motor/contract.js.map +1 -1
  395. package/dist/core/computer/motor/note.d.ts.map +1 -1
  396. package/dist/core/computer/motor/note.js.map +1 -1
  397. package/dist/core/computer/motor/outline.d.ts.map +1 -1
  398. package/dist/core/computer/motor/outline.js.map +1 -1
  399. package/dist/core/computer/motor/output.d.ts.map +1 -1
  400. package/dist/core/computer/motor/output.js.map +1 -1
  401. package/dist/core/computer/motor/permissions.d.ts.map +1 -1
  402. package/dist/core/computer/motor/permissions.js.map +1 -1
  403. package/dist/core/computer/motor/platform/architecture.d.ts.map +1 -1
  404. package/dist/core/computer/motor/platform/architecture.js.map +1 -1
  405. package/dist/core/computer/motor/platform/coerce.d.ts.map +1 -1
  406. package/dist/core/computer/motor/platform/coerce.js.map +1 -1
  407. package/dist/core/computer/motor/platform/index.d.ts.map +1 -1
  408. package/dist/core/computer/motor/platform/index.js.map +1 -1
  409. package/dist/core/computer/motor/platform/linux/backend.d.ts.map +1 -1
  410. package/dist/core/computer/motor/platform/linux/backend.js.map +1 -1
  411. package/dist/core/computer/motor/platform/linux/helper.d.ts.map +1 -1
  412. package/dist/core/computer/motor/platform/linux/helper.js.map +1 -1
  413. package/dist/core/computer/motor/platform/macos/backend.d.ts.map +1 -1
  414. package/dist/core/computer/motor/platform/macos/backend.js.map +1 -1
  415. package/dist/core/computer/motor/platform/macos/browser.d.ts.map +1 -1
  416. package/dist/core/computer/motor/platform/macos/browser.js.map +1 -1
  417. package/dist/core/computer/motor/platform/macos/helper.d.ts.map +1 -1
  418. package/dist/core/computer/motor/platform/macos/helper.js.map +1 -1
  419. package/dist/core/computer/motor/platform/macos/permissions.d.ts.map +1 -1
  420. package/dist/core/computer/motor/platform/macos/permissions.js.map +1 -1
  421. package/dist/core/computer/motor/platform/types.d.ts.map +1 -1
  422. package/dist/core/computer/motor/platform/types.js.map +1 -1
  423. package/dist/core/computer/motor/platform/windows/backend.d.ts.map +1 -1
  424. package/dist/core/computer/motor/platform/windows/backend.js.map +1 -1
  425. package/dist/core/computer/motor/platform/windows/helper.d.ts.map +1 -1
  426. package/dist/core/computer/motor/platform/windows/helper.js.map +1 -1
  427. package/dist/core/computer/motor/root-selection.d.ts.map +1 -1
  428. package/dist/core/computer/motor/root-selection.js.map +1 -1
  429. package/dist/core/computer/motor/runtime.d.ts.map +1 -1
  430. package/dist/core/computer/motor/runtime.js.map +1 -1
  431. package/dist/core/computer/motor/state.d.ts.map +1 -1
  432. package/dist/core/computer/motor/state.js.map +1 -1
  433. package/dist/core/computer/motor/view.d.ts.map +1 -1
  434. package/dist/core/computer/motor/view.js.map +1 -1
  435. package/dist/core/computer/motor-ada.d.ts.map +1 -1
  436. package/dist/core/computer/motor-ada.js.map +1 -1
  437. package/dist/core/computer/politica.d.ts.map +1 -1
  438. package/dist/core/computer/politica.js.map +1 -1
  439. package/dist/core/computer/tools.d.ts.map +1 -1
  440. package/dist/core/computer/tools.js.map +1 -1
  441. package/dist/core/config/quarantine.d.ts +57 -0
  442. package/dist/core/config/quarantine.d.ts.map +1 -0
  443. package/dist/core/config/quarantine.js +161 -0
  444. package/dist/core/config/quarantine.js.map +1 -0
  445. package/dist/core/config-viva/ambito.d.ts +46 -0
  446. package/dist/core/config-viva/ambito.d.ts.map +1 -0
  447. package/dist/core/config-viva/ambito.js +62 -0
  448. package/dist/core/config-viva/ambito.js.map +1 -0
  449. package/dist/core/config-viva/cache-negativa.d.ts +50 -0
  450. package/dist/core/config-viva/cache-negativa.d.ts.map +1 -0
  451. package/dist/core/config-viva/cache-negativa.js +78 -0
  452. package/dist/core/config-viva/cache-negativa.js.map +1 -0
  453. package/dist/core/config-viva/headers-vivos.d.ts +41 -0
  454. package/dist/core/config-viva/headers-vivos.d.ts.map +1 -0
  455. package/dist/core/config-viva/headers-vivos.js +43 -0
  456. package/dist/core/config-viva/headers-vivos.js.map +1 -0
  457. package/dist/core/config-viva/index.d.ts +16 -0
  458. package/dist/core/config-viva/index.d.ts.map +1 -0
  459. package/dist/core/config-viva/index.js +16 -0
  460. package/dist/core/config-viva/index.js.map +1 -0
  461. package/dist/core/config-viva/proveedor.d.ts +48 -0
  462. package/dist/core/config-viva/proveedor.d.ts.map +1 -0
  463. package/dist/core/config-viva/proveedor.js +78 -0
  464. package/dist/core/config-viva/proveedor.js.map +1 -0
  465. package/dist/core/context-breakdown.d.ts.map +1 -1
  466. package/dist/core/context-breakdown.js.map +1 -1
  467. package/dist/core/credenciales/cliente.d.ts.map +1 -1
  468. package/dist/core/credenciales/cliente.js.map +1 -1
  469. package/dist/core/credenciales/pool.d.ts +36 -1
  470. package/dist/core/credenciales/pool.d.ts.map +1 -1
  471. package/dist/core/credenciales/pool.js +56 -7
  472. package/dist/core/credenciales/pool.js.map +1 -1
  473. package/dist/core/credenciales/ranking.d.ts +56 -0
  474. package/dist/core/credenciales/ranking.d.ts.map +1 -0
  475. package/dist/core/credenciales/ranking.js +94 -0
  476. package/dist/core/credenciales/ranking.js.map +1 -0
  477. package/dist/core/credenciales/ratelimit.d.ts +54 -0
  478. package/dist/core/credenciales/ratelimit.d.ts.map +1 -0
  479. package/dist/core/credenciales/ratelimit.js +116 -0
  480. package/dist/core/credenciales/ratelimit.js.map +1 -0
  481. package/dist/core/credenciales/reposo.d.ts.map +1 -1
  482. package/dist/core/credenciales/reposo.js.map +1 -1
  483. package/dist/core/credenciales/servidor.d.ts +8 -0
  484. package/dist/core/credenciales/servidor.d.ts.map +1 -1
  485. package/dist/core/credenciales/servidor.js +9 -1
  486. package/dist/core/credenciales/servidor.js.map +1 -1
  487. package/dist/core/defaults.d.ts.map +1 -1
  488. package/dist/core/defaults.js.map +1 -1
  489. package/dist/core/descubrimiento/comandos.d.ts.map +1 -1
  490. package/dist/core/descubrimiento/comandos.js.map +1 -1
  491. package/dist/core/descubrimiento/mcp.d.ts +12 -0
  492. package/dist/core/descubrimiento/mcp.d.ts.map +1 -1
  493. package/dist/core/descubrimiento/mcp.js +32 -0
  494. package/dist/core/descubrimiento/mcp.js.map +1 -1
  495. package/dist/core/descubrimiento/reglas.d.ts.map +1 -1
  496. package/dist/core/descubrimiento/reglas.js.map +1 -1
  497. package/dist/core/descubrimiento/runtimes/index.d.ts +24 -0
  498. package/dist/core/descubrimiento/runtimes/index.d.ts.map +1 -0
  499. package/dist/core/descubrimiento/runtimes/index.js +109 -0
  500. package/dist/core/descubrimiento/runtimes/index.js.map +1 -0
  501. package/dist/core/descubrimiento/runtimes/litellm.d.ts +12 -0
  502. package/dist/core/descubrimiento/runtimes/litellm.d.ts.map +1 -0
  503. package/dist/core/descubrimiento/runtimes/litellm.js +185 -0
  504. package/dist/core/descubrimiento/runtimes/litellm.js.map +1 -0
  505. package/dist/core/descubrimiento/runtimes/lm-studio.d.ts +13 -0
  506. package/dist/core/descubrimiento/runtimes/lm-studio.d.ts.map +1 -0
  507. package/dist/core/descubrimiento/runtimes/lm-studio.js +142 -0
  508. package/dist/core/descubrimiento/runtimes/lm-studio.js.map +1 -0
  509. package/dist/core/descubrimiento/runtimes/ollama.d.ts +8 -0
  510. package/dist/core/descubrimiento/runtimes/ollama.d.ts.map +1 -0
  511. package/dist/core/descubrimiento/runtimes/ollama.js +96 -0
  512. package/dist/core/descubrimiento/runtimes/ollama.js.map +1 -0
  513. package/dist/core/descubrimiento/runtimes/tipos.d.ts +47 -0
  514. package/dist/core/descubrimiento/runtimes/tipos.d.ts.map +1 -0
  515. package/dist/core/descubrimiento/runtimes/tipos.js +10 -0
  516. package/dist/core/descubrimiento/runtimes/tipos.js.map +1 -0
  517. package/dist/core/descubrimiento/skills.d.ts.map +1 -1
  518. package/dist/core/descubrimiento/skills.js.map +1 -1
  519. package/dist/core/diagnostics.d.ts.map +1 -1
  520. package/dist/core/diagnostics.js.map +1 -1
  521. package/dist/core/dificultad/clasificador.d.ts.map +1 -1
  522. package/dist/core/dificultad/clasificador.js.map +1 -1
  523. package/dist/core/edicion/diario.d.ts.map +1 -1
  524. package/dist/core/edicion/diario.js.map +1 -1
  525. package/dist/core/edicion/hashline.d.ts.map +1 -1
  526. package/dist/core/edicion/hashline.js.map +1 -1
  527. package/dist/core/edicion/hueco.d.ts.map +1 -1
  528. package/dist/core/edicion/hueco.js.map +1 -1
  529. package/dist/core/edicion/ipynb.d.ts +51 -0
  530. package/dist/core/edicion/ipynb.d.ts.map +1 -0
  531. package/dist/core/edicion/ipynb.js +110 -0
  532. package/dist/core/edicion/ipynb.js.map +1 -0
  533. package/dist/core/edicion/limpiar-carga.d.ts.map +1 -1
  534. package/dist/core/edicion/limpiar-carga.js.map +1 -1
  535. package/dist/core/edicion/observador.d.ts.map +1 -1
  536. package/dist/core/edicion/observador.js.map +1 -1
  537. package/dist/core/edicion/parecido.d.ts.map +1 -1
  538. package/dist/core/edicion/parecido.js.map +1 -1
  539. package/dist/core/edicion/parseo.d.ts.map +1 -1
  540. package/dist/core/edicion/parseo.js.map +1 -1
  541. package/dist/core/edicion/portapapeles.d.ts +28 -0
  542. package/dist/core/edicion/portapapeles.d.ts.map +1 -0
  543. package/dist/core/edicion/portapapeles.js +49 -0
  544. package/dist/core/edicion/portapapeles.js.map +1 -0
  545. package/dist/core/edicion/reparacion.d.ts.map +1 -1
  546. package/dist/core/edicion/reparacion.js.map +1 -1
  547. package/dist/core/edicion/rutas-difusas.d.ts +44 -0
  548. package/dist/core/edicion/rutas-difusas.d.ts.map +1 -0
  549. package/dist/core/edicion/rutas-difusas.js +93 -0
  550. package/dist/core/edicion/rutas-difusas.js.map +1 -0
  551. package/dist/core/edicion/sangria.d.ts.map +1 -1
  552. package/dist/core/edicion/sangria.js.map +1 -1
  553. package/dist/core/edicion/tipos.d.ts.map +1 -1
  554. package/dist/core/edicion/tipos.js.map +1 -1
  555. package/dist/core/engine-personality.d.ts.map +1 -1
  556. package/dist/core/engine-personality.js.map +1 -1
  557. package/dist/core/errores/proveedor.d.ts.map +1 -1
  558. package/dist/core/errores/proveedor.js.map +1 -1
  559. package/dist/core/estructural/buscar.d.ts.map +1 -1
  560. package/dist/core/estructural/buscar.js.map +1 -1
  561. package/dist/core/estructural/editar.d.ts.map +1 -1
  562. package/dist/core/estructural/editar.js.map +1 -1
  563. package/dist/core/estructural/tools.d.ts.map +1 -1
  564. package/dist/core/estructural/tools.js.map +1 -1
  565. package/dist/core/event-bus.d.ts.map +1 -1
  566. package/dist/core/event-bus.js.map +1 -1
  567. package/dist/core/exec.d.ts.map +1 -1
  568. package/dist/core/exec.js.map +1 -1
  569. package/dist/core/experimental.d.ts.map +1 -1
  570. package/dist/core/experimental.js.map +1 -1
  571. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  572. package/dist/core/export-html/ansi-to-html.js.map +1 -1
  573. package/dist/core/export-html/index.d.ts.map +1 -1
  574. package/dist/core/export-html/index.js +183 -13
  575. package/dist/core/export-html/index.js.map +1 -1
  576. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  577. package/dist/core/export-html/tool-renderer.js.map +1 -1
  578. package/dist/core/extensiones/suplantacion.d.ts.map +1 -1
  579. package/dist/core/extensiones/suplantacion.js.map +1 -1
  580. package/dist/core/extensiones/vigilancia.d.ts.map +1 -1
  581. package/dist/core/extensiones/vigilancia.js.map +1 -1
  582. package/dist/core/extensions/index.d.ts.map +1 -1
  583. package/dist/core/extensions/index.js.map +1 -1
  584. package/dist/core/extensions/loader.d.ts.map +1 -1
  585. package/dist/core/extensions/loader.js.map +1 -1
  586. package/dist/core/extensions/runner.d.ts.map +1 -1
  587. package/dist/core/extensions/runner.js.map +1 -1
  588. package/dist/core/extensions/types.d.ts.map +1 -1
  589. package/dist/core/extensions/types.js.map +1 -1
  590. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  591. package/dist/core/extensions/wrapper.js.map +1 -1
  592. package/dist/core/footer-data-provider.d.ts.map +1 -1
  593. package/dist/core/footer-data-provider.js.map +1 -1
  594. package/dist/core/gc/archivo-frio.d.ts +33 -0
  595. package/dist/core/gc/archivo-frio.d.ts.map +1 -0
  596. package/dist/core/gc/archivo-frio.js +152 -0
  597. package/dist/core/gc/archivo-frio.js.map +1 -0
  598. package/dist/core/gc/blobs-gc.d.ts +25 -0
  599. package/dist/core/gc/blobs-gc.d.ts.map +1 -0
  600. package/dist/core/gc/blobs-gc.js +143 -0
  601. package/dist/core/gc/blobs-gc.js.map +1 -0
  602. package/dist/core/gc/index.d.ts +42 -0
  603. package/dist/core/gc/index.d.ts.map +1 -0
  604. package/dist/core/gc/index.js +50 -0
  605. package/dist/core/gc/index.js.map +1 -0
  606. package/dist/core/gc/lock.d.ts +19 -0
  607. package/dist/core/gc/lock.d.ts.map +1 -0
  608. package/dist/core/gc/lock.js +48 -0
  609. package/dist/core/gc/lock.js.map +1 -0
  610. package/dist/core/gc/reconciliacion.d.ts +19 -0
  611. package/dist/core/gc/reconciliacion.d.ts.map +1 -0
  612. package/dist/core/gc/reconciliacion.js +102 -0
  613. package/dist/core/gc/reconciliacion.js.map +1 -0
  614. package/dist/core/gc/wal.d.ts +15 -0
  615. package/dist/core/gc/wal.d.ts.map +1 -0
  616. package/dist/core/gc/wal.js +44 -0
  617. package/dist/core/gc/wal.js.map +1 -0
  618. package/dist/core/harness/fuentes-de-contexto.d.ts.map +1 -1
  619. package/dist/core/harness/fuentes-de-contexto.js.map +1 -1
  620. package/dist/core/harness/refine.d.ts.map +1 -1
  621. package/dist/core/harness/refine.js.map +1 -1
  622. package/dist/core/harness/store.d.ts.map +1 -1
  623. package/dist/core/harness/store.js.map +1 -1
  624. package/dist/core/higiene/index.d.ts +8 -0
  625. package/dist/core/higiene/index.d.ts.map +1 -0
  626. package/dist/core/higiene/index.js +8 -0
  627. package/dist/core/higiene/index.js.map +1 -0
  628. package/dist/core/higiene/managed-timers.d.ts +19 -0
  629. package/dist/core/higiene/managed-timers.d.ts.map +1 -0
  630. package/dist/core/higiene/managed-timers.js +68 -0
  631. package/dist/core/higiene/managed-timers.js.map +1 -0
  632. package/dist/core/higiene/race-handler.d.ts +7 -0
  633. package/dist/core/higiene/race-handler.d.ts.map +1 -0
  634. package/dist/core/higiene/race-handler.js +32 -0
  635. package/dist/core/higiene/race-handler.js.map +1 -0
  636. package/dist/core/higiene/withHostGuard.d.ts +27 -0
  637. package/dist/core/higiene/withHostGuard.d.ts.map +1 -0
  638. package/dist/core/higiene/withHostGuard.js +79 -0
  639. package/dist/core/higiene/withHostGuard.js.map +1 -0
  640. package/dist/core/hooks/contract.d.ts.map +1 -1
  641. package/dist/core/hooks/contract.js.map +1 -1
  642. package/dist/core/hooks/runner.d.ts.map +1 -1
  643. package/dist/core/hooks/runner.js.map +1 -1
  644. package/dist/core/hooks/session-hooks.d.ts.map +1 -1
  645. package/dist/core/hooks/session-hooks.js.map +1 -1
  646. package/dist/core/hooks-ts/cargador.d.ts +29 -0
  647. package/dist/core/hooks-ts/cargador.d.ts.map +1 -0
  648. package/dist/core/hooks-ts/cargador.js +51 -0
  649. package/dist/core/hooks-ts/cargador.js.map +1 -0
  650. package/dist/core/hooks-ts/index.d.ts +25 -0
  651. package/dist/core/hooks-ts/index.d.ts.map +1 -0
  652. package/dist/core/hooks-ts/index.js +25 -0
  653. package/dist/core/hooks-ts/index.js.map +1 -0
  654. package/dist/core/hooks-ts/runner.d.ts +40 -0
  655. package/dist/core/hooks-ts/runner.d.ts.map +1 -0
  656. package/dist/core/hooks-ts/runner.js +95 -0
  657. package/dist/core/hooks-ts/runner.js.map +1 -0
  658. package/dist/core/hooks-ts/tipos.d.ts +69 -0
  659. package/dist/core/hooks-ts/tipos.d.ts.map +1 -0
  660. package/dist/core/hooks-ts/tipos.js +90 -0
  661. package/dist/core/hooks-ts/tipos.js.map +1 -0
  662. package/dist/core/http-dispatcher.d.ts.map +1 -1
  663. package/dist/core/http-dispatcher.js.map +1 -1
  664. package/dist/core/importar/formatos.d.ts.map +1 -1
  665. package/dist/core/importar/formatos.js.map +1 -1
  666. package/dist/core/index.d.ts.map +1 -1
  667. package/dist/core/index.js.map +1 -1
  668. package/dist/core/interactivo/deteccion.d.ts.map +1 -1
  669. package/dist/core/interactivo/deteccion.js.map +1 -1
  670. package/dist/core/interactivo/sesion.d.ts.map +1 -1
  671. package/dist/core/interactivo/sesion.js.map +1 -1
  672. package/dist/core/interactivo/tools.d.ts.map +1 -1
  673. package/dist/core/interactivo/tools.js.map +1 -1
  674. package/dist/core/keybindings.d.ts +170 -170
  675. package/dist/core/keybindings.d.ts.map +1 -1
  676. package/dist/core/keybindings.js.map +1 -1
  677. package/dist/core/lectura/mapa.d.ts.map +1 -1
  678. package/dist/core/lectura/mapa.js.map +1 -1
  679. package/dist/core/lectura/pdf.d.ts.map +1 -1
  680. package/dist/core/lectura/pdf.js.map +1 -1
  681. package/dist/core/lectura/sniffer.d.ts +54 -0
  682. package/dist/core/lectura/sniffer.d.ts.map +1 -0
  683. package/dist/core/lectura/sniffer.js +106 -0
  684. package/dist/core/lectura/sniffer.js.map +1 -0
  685. package/dist/core/limpieza/comprobadores.d.ts +16 -2
  686. package/dist/core/limpieza/comprobadores.d.ts.map +1 -1
  687. package/dist/core/limpieza/comprobadores.js +200 -6
  688. package/dist/core/limpieza/comprobadores.js.map +1 -1
  689. package/dist/core/limpieza/flujo.d.ts +36 -0
  690. package/dist/core/limpieza/flujo.d.ts.map +1 -0
  691. package/dist/core/limpieza/flujo.js +89 -0
  692. package/dist/core/limpieza/flujo.js.map +1 -0
  693. package/dist/core/limpieza/parseo.d.ts.map +1 -1
  694. package/dist/core/limpieza/parseo.js.map +1 -1
  695. package/dist/core/limpieza/peso.d.ts +17 -0
  696. package/dist/core/limpieza/peso.d.ts.map +1 -0
  697. package/dist/core/limpieza/peso.js +52 -0
  698. package/dist/core/limpieza/peso.js.map +1 -0
  699. package/dist/core/limpieza/pool.d.ts +44 -0
  700. package/dist/core/limpieza/pool.d.ts.map +1 -0
  701. package/dist/core/limpieza/pool.js +123 -0
  702. package/dist/core/limpieza/pool.js.map +1 -0
  703. package/dist/core/limpieza/reparacion.d.ts +19 -2
  704. package/dist/core/limpieza/reparacion.d.ts.map +1 -1
  705. package/dist/core/limpieza/reparacion.js +95 -8
  706. package/dist/core/limpieza/reparacion.js.map +1 -1
  707. package/dist/core/limpieza/tablero.d.ts +47 -0
  708. package/dist/core/limpieza/tablero.d.ts.map +1 -0
  709. package/dist/core/limpieza/tablero.js +78 -0
  710. package/dist/core/limpieza/tablero.js.map +1 -0
  711. package/dist/core/limpieza/tipos.d.ts +25 -0
  712. package/dist/core/limpieza/tipos.d.ts.map +1 -1
  713. package/dist/core/limpieza/tipos.js.map +1 -1
  714. package/dist/core/lsp/cliente.d.ts +7 -0
  715. package/dist/core/lsp/cliente.d.ts.map +1 -1
  716. package/dist/core/lsp/cliente.js +4 -2
  717. package/dist/core/lsp/cliente.js.map +1 -1
  718. package/dist/core/lsp/descubrimiento.d.ts.map +1 -1
  719. package/dist/core/lsp/descubrimiento.js.map +1 -1
  720. package/dist/core/lsp/ediciones.d.ts.map +1 -1
  721. package/dist/core/lsp/ediciones.js.map +1 -1
  722. package/dist/core/lsp/extension.d.ts +9 -0
  723. package/dist/core/lsp/extension.d.ts.map +1 -1
  724. package/dist/core/lsp/extension.js +60 -4
  725. package/dist/core/lsp/extension.js.map +1 -1
  726. package/dist/core/lsp/formato.d.ts +72 -0
  727. package/dist/core/lsp/formato.d.ts.map +1 -0
  728. package/dist/core/lsp/formato.js +117 -0
  729. package/dist/core/lsp/formato.js.map +1 -0
  730. package/dist/core/lsp/tools.d.ts +3 -3
  731. package/dist/core/lsp/tools.d.ts.map +1 -1
  732. package/dist/core/lsp/tools.js.map +1 -1
  733. package/dist/core/lsp/writethrough.d.ts +165 -0
  734. package/dist/core/lsp/writethrough.d.ts.map +1 -0
  735. package/dist/core/lsp/writethrough.js +282 -0
  736. package/dist/core/lsp/writethrough.js.map +1 -0
  737. package/dist/core/marketplace/catalogo.d.ts +32 -0
  738. package/dist/core/marketplace/catalogo.d.ts.map +1 -0
  739. package/dist/core/marketplace/catalogo.js +122 -0
  740. package/dist/core/marketplace/catalogo.js.map +1 -0
  741. package/dist/core/marketplace/doctor.d.ts +47 -0
  742. package/dist/core/marketplace/doctor.d.ts.map +1 -0
  743. package/dist/core/marketplace/doctor.js +155 -0
  744. package/dist/core/marketplace/doctor.js.map +1 -0
  745. package/dist/core/marketplace/features.d.ts +22 -0
  746. package/dist/core/marketplace/features.d.ts.map +1 -0
  747. package/dist/core/marketplace/features.js +70 -0
  748. package/dist/core/marketplace/features.js.map +1 -0
  749. package/dist/core/marketplace/index.d.ts +33 -0
  750. package/dist/core/marketplace/index.d.ts.map +1 -0
  751. package/dist/core/marketplace/index.js +33 -0
  752. package/dist/core/marketplace/index.js.map +1 -0
  753. package/dist/core/marketplace/instalar.d.ts +27 -0
  754. package/dist/core/marketplace/instalar.d.ts.map +1 -0
  755. package/dist/core/marketplace/instalar.js +50 -0
  756. package/dist/core/marketplace/instalar.js.map +1 -0
  757. package/dist/core/mcp/client.d.ts.map +1 -1
  758. package/dist/core/mcp/client.js.map +1 -1
  759. package/dist/core/mcp/manager.d.ts.map +1 -1
  760. package/dist/core/mcp/manager.js.map +1 -1
  761. package/dist/core/mcp/oauth.d.ts +138 -0
  762. package/dist/core/mcp/oauth.d.ts.map +1 -0
  763. package/dist/core/mcp/oauth.js +348 -0
  764. package/dist/core/mcp/oauth.js.map +1 -0
  765. package/dist/core/mcp/tools.d.ts.map +1 -1
  766. package/dist/core/mcp/tools.js.map +1 -1
  767. package/dist/core/memoria/almacen.d.ts +56 -0
  768. package/dist/core/memoria/almacen.d.ts.map +1 -0
  769. package/dist/core/memoria/almacen.js +214 -0
  770. package/dist/core/memoria/almacen.js.map +1 -0
  771. package/dist/core/memoria/dr/respaldo.d.ts +34 -0
  772. package/dist/core/memoria/dr/respaldo.d.ts.map +1 -0
  773. package/dist/core/memoria/dr/respaldo.js +133 -0
  774. package/dist/core/memoria/dr/respaldo.js.map +1 -0
  775. package/dist/core/memoria/embeddings.d.ts +21 -0
  776. package/dist/core/memoria/embeddings.d.ts.map +1 -0
  777. package/dist/core/memoria/embeddings.js +87 -0
  778. package/dist/core/memoria/embeddings.js.map +1 -0
  779. package/dist/core/memoria/grafo.d.ts +56 -0
  780. package/dist/core/memoria/grafo.d.ts.map +1 -0
  781. package/dist/core/memoria/grafo.js +143 -0
  782. package/dist/core/memoria/grafo.js.map +1 -0
  783. package/dist/core/memoria/redaccion.d.ts +32 -0
  784. package/dist/core/memoria/redaccion.d.ts.map +1 -0
  785. package/dist/core/memoria/redaccion.js +76 -0
  786. package/dist/core/memoria/redaccion.js.map +1 -0
  787. package/dist/core/memoria/servidor/almacen-json.d.ts +26 -0
  788. package/dist/core/memoria/servidor/almacen-json.d.ts.map +1 -0
  789. package/dist/core/memoria/servidor/almacen-json.js +90 -0
  790. package/dist/core/memoria/servidor/almacen-json.js.map +1 -0
  791. package/dist/core/memoria/servidor/servidor.d.ts +43 -0
  792. package/dist/core/memoria/servidor/servidor.d.ts.map +1 -0
  793. package/dist/core/memoria/servidor/servidor.js +195 -0
  794. package/dist/core/memoria/servidor/servidor.js.map +1 -0
  795. package/dist/core/memoria/servidor/tipos.d.ts +44 -0
  796. package/dist/core/memoria/servidor/tipos.d.ts.map +1 -0
  797. package/dist/core/memoria/servidor/tipos.js +12 -0
  798. package/dist/core/memoria/servidor/tipos.js.map +1 -0
  799. package/dist/core/memoria/tipos.d.ts +63 -0
  800. package/dist/core/memoria/tipos.d.ts.map +1 -0
  801. package/dist/core/memoria/tipos.js +14 -0
  802. package/dist/core/memoria/tipos.js.map +1 -0
  803. package/dist/core/memory-engine/audit-export.d.ts.map +1 -1
  804. package/dist/core/memory-engine/audit-export.js.map +1 -1
  805. package/dist/core/memory-engine/audit-indice.d.ts.map +1 -1
  806. package/dist/core/memory-engine/audit-indice.js.map +1 -1
  807. package/dist/core/memory-engine/audit.d.ts.map +1 -1
  808. package/dist/core/memory-engine/audit.js.map +1 -1
  809. package/dist/core/memory-engine/engine.d.ts +7 -0
  810. package/dist/core/memory-engine/engine.d.ts.map +1 -1
  811. package/dist/core/memory-engine/engine.js.map +1 -1
  812. package/dist/core/memory-engine/inverted-index.d.ts.map +1 -1
  813. package/dist/core/memory-engine/inverted-index.js.map +1 -1
  814. package/dist/core/memory-engine/keychain.d.ts.map +1 -1
  815. package/dist/core/memory-engine/keychain.js.map +1 -1
  816. package/dist/core/memory-engine/observation-store.d.ts +1 -0
  817. package/dist/core/memory-engine/observation-store.d.ts.map +1 -1
  818. package/dist/core/memory-engine/observation-store.js.map +1 -1
  819. package/dist/core/memory-engine/refinements.d.ts.map +1 -1
  820. package/dist/core/memory-engine/refinements.js.map +1 -1
  821. package/dist/core/memory-engine/scanner.d.ts.map +1 -1
  822. package/dist/core/memory-engine/scanner.js.map +1 -1
  823. package/dist/core/memory-engine/security.d.ts.map +1 -1
  824. package/dist/core/memory-engine/security.js.map +1 -1
  825. package/dist/core/memory-engine/session-indexer.d.ts.map +1 -1
  826. package/dist/core/memory-engine/session-indexer.js.map +1 -1
  827. package/dist/core/memory-engine/tools.d.ts.map +1 -1
  828. package/dist/core/memory-engine/tools.js.map +1 -1
  829. package/dist/core/memory-engine/types.d.ts.map +1 -1
  830. package/dist/core/memory-engine/types.js.map +1 -1
  831. package/dist/core/memory-engine/vault.d.ts.map +1 -1
  832. package/dist/core/memory-engine/vault.js.map +1 -1
  833. package/dist/core/messages.d.ts.map +1 -1
  834. package/dist/core/messages.js.map +1 -1
  835. package/dist/core/metaharness/cli.d.ts +19 -0
  836. package/dist/core/metaharness/cli.d.ts.map +1 -0
  837. package/dist/core/metaharness/cli.js +171 -0
  838. package/dist/core/metaharness/cli.js.map +1 -0
  839. package/dist/core/metaharness/comparar.d.ts +21 -0
  840. package/dist/core/metaharness/comparar.d.ts.map +1 -0
  841. package/dist/core/metaharness/comparar.js +64 -0
  842. package/dist/core/metaharness/comparar.js.map +1 -0
  843. package/dist/core/metaharness/ejecutar.d.ts +70 -0
  844. package/dist/core/metaharness/ejecutar.d.ts.map +1 -0
  845. package/dist/core/metaharness/ejecutar.js +249 -0
  846. package/dist/core/metaharness/ejecutar.js.map +1 -0
  847. package/dist/core/metaharness/tipos.d.ts +142 -0
  848. package/dist/core/metaharness/tipos.d.ts.map +1 -0
  849. package/dist/core/metaharness/tipos.js +17 -0
  850. package/dist/core/metaharness/tipos.js.map +1 -0
  851. package/dist/core/model-config.d.ts +8 -8
  852. package/dist/core/model-config.d.ts.map +1 -1
  853. package/dist/core/model-config.js.map +1 -1
  854. package/dist/core/model-registry.d.ts.map +1 -1
  855. package/dist/core/model-registry.js.map +1 -1
  856. package/dist/core/model-resolver.d.ts.map +1 -1
  857. package/dist/core/model-resolver.js.map +1 -1
  858. package/dist/core/model-runtime.d.ts.map +1 -1
  859. package/dist/core/model-runtime.js.map +1 -1
  860. package/dist/core/models-store.d.ts.map +1 -1
  861. package/dist/core/models-store.js.map +1 -1
  862. package/dist/core/muestreo-restringido.d.ts.map +1 -1
  863. package/dist/core/muestreo-restringido.js.map +1 -1
  864. package/dist/core/orphan-process-journal.d.ts.map +1 -1
  865. package/dist/core/orphan-process-journal.js.map +1 -1
  866. package/dist/core/output-guard.d.ts.map +1 -1
  867. package/dist/core/output-guard.js.map +1 -1
  868. package/dist/core/package-manager.d.ts.map +1 -1
  869. package/dist/core/package-manager.js.map +1 -1
  870. package/dist/core/parche/aplicar.d.ts +19 -0
  871. package/dist/core/parche/aplicar.d.ts.map +1 -0
  872. package/dist/core/parche/aplicar.js +243 -0
  873. package/dist/core/parche/aplicar.js.map +1 -0
  874. package/dist/core/parche/parser.d.ts +38 -0
  875. package/dist/core/parche/parser.d.ts.map +1 -0
  876. package/dist/core/parche/parser.js +217 -0
  877. package/dist/core/parche/parser.js.map +1 -0
  878. package/dist/core/parche/registro.d.ts +12 -0
  879. package/dist/core/parche/registro.d.ts.map +1 -0
  880. package/dist/core/parche/registro.js +58 -0
  881. package/dist/core/parche/registro.js.map +1 -0
  882. package/dist/core/perfiles/index.d.ts +22 -0
  883. package/dist/core/perfiles/index.d.ts.map +1 -0
  884. package/dist/core/perfiles/index.js +21 -0
  885. package/dist/core/perfiles/index.js.map +1 -0
  886. package/dist/core/perfiles/resolver.d.ts +51 -0
  887. package/dist/core/perfiles/resolver.d.ts.map +1 -0
  888. package/dist/core/perfiles/resolver.js +329 -0
  889. package/dist/core/perfiles/resolver.js.map +1 -0
  890. package/dist/core/perfiles/tipos.d.ts +69 -0
  891. package/dist/core/perfiles/tipos.d.ts.map +1 -0
  892. package/dist/core/perfiles/tipos.js +98 -0
  893. package/dist/core/perfiles/tipos.js.map +1 -0
  894. package/dist/core/pi-manifest.d.ts.map +1 -1
  895. package/dist/core/pi-manifest.js.map +1 -1
  896. package/dist/core/privacidad/categorias-especiales.d.ts.map +1 -1
  897. package/dist/core/privacidad/categorias-especiales.js +4 -0
  898. package/dist/core/privacidad/categorias-especiales.js.map +1 -1
  899. package/dist/core/privacidad/tapar.d.ts.map +1 -1
  900. package/dist/core/privacidad/tapar.js.map +1 -1
  901. package/dist/core/project-memory.d.ts.map +1 -1
  902. package/dist/core/project-memory.js.map +1 -1
  903. package/dist/core/project-trust.d.ts.map +1 -1
  904. package/dist/core/project-trust.js.map +1 -1
  905. package/dist/core/prompt-cache/diagnostics.d.ts.map +1 -1
  906. package/dist/core/prompt-cache/diagnostics.js.map +1 -1
  907. package/dist/core/prompt-cache/index.d.ts.map +1 -1
  908. package/dist/core/prompt-cache/index.js.map +1 -1
  909. package/dist/core/prompt-cache/payload.d.ts.map +1 -1
  910. package/dist/core/prompt-cache/payload.js.map +1 -1
  911. package/dist/core/prompt-cache/stabilize.d.ts.map +1 -1
  912. package/dist/core/prompt-cache/stabilize.js.map +1 -1
  913. package/dist/core/prompt-cache/stats.d.ts.map +1 -1
  914. package/dist/core/prompt-cache/stats.js.map +1 -1
  915. package/dist/core/prompt-eleccion.d.ts.map +1 -1
  916. package/dist/core/prompt-eleccion.js.map +1 -1
  917. package/dist/core/prompt-optimizer.d.ts.map +1 -1
  918. package/dist/core/prompt-optimizer.js.map +1 -1
  919. package/dist/core/prompt-templates.d.ts.map +1 -1
  920. package/dist/core/prompt-templates.js.map +1 -1
  921. package/dist/core/prompts/montar.d.ts.map +1 -1
  922. package/dist/core/prompts/montar.js.map +1 -1
  923. package/dist/core/prompts/plantilla.d.ts.map +1 -1
  924. package/dist/core/prompts/plantilla.js.map +1 -1
  925. package/dist/core/proveedores-registry/definiciones.d.ts +15 -0
  926. package/dist/core/proveedores-registry/definiciones.d.ts.map +1 -0
  927. package/dist/core/proveedores-registry/definiciones.js +22 -0
  928. package/dist/core/proveedores-registry/definiciones.js.map +1 -0
  929. package/dist/core/proveedores-registry/index.d.ts +14 -0
  930. package/dist/core/proveedores-registry/index.d.ts.map +1 -0
  931. package/dist/core/proveedores-registry/index.js +13 -0
  932. package/dist/core/proveedores-registry/index.js.map +1 -0
  933. package/dist/core/proveedores-registry/resolver.d.ts +25 -0
  934. package/dist/core/proveedores-registry/resolver.d.ts.map +1 -0
  935. package/dist/core/proveedores-registry/resolver.js +69 -0
  936. package/dist/core/proveedores-registry/resolver.js.map +1 -0
  937. package/dist/core/proveedores-registry/tipos.d.ts +47 -0
  938. package/dist/core/proveedores-registry/tipos.d.ts.map +1 -0
  939. package/dist/core/proveedores-registry/tipos.js +15 -0
  940. package/dist/core/proveedores-registry/tipos.js.map +1 -0
  941. package/dist/core/provider-attribution.d.ts.map +1 -1
  942. package/dist/core/provider-attribution.js.map +1 -1
  943. package/dist/core/provider-composer.d.ts.map +1 -1
  944. package/dist/core/provider-composer.js.map +1 -1
  945. package/dist/core/radius.d.ts.map +1 -1
  946. package/dist/core/radius.js.map +1 -1
  947. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  948. package/dist/core/remote-catalog-provider.js.map +1 -1
  949. package/dist/core/remoto/destino.d.ts.map +1 -1
  950. package/dist/core/remoto/destino.js.map +1 -1
  951. package/dist/core/remoto/ejecutor.d.ts.map +1 -1
  952. package/dist/core/remoto/ejecutor.js.map +1 -1
  953. package/dist/core/remoto/ficheros.d.ts.map +1 -1
  954. package/dist/core/remoto/ficheros.js.map +1 -1
  955. package/dist/core/remoto/registro-extension.d.ts.map +1 -1
  956. package/dist/core/remoto/registro-extension.js.map +1 -1
  957. package/dist/core/remoto/tools.d.ts.map +1 -1
  958. package/dist/core/remoto/tools.js.map +1 -1
  959. package/dist/core/reparacion/index.d.ts +2 -0
  960. package/dist/core/reparacion/index.d.ts.map +1 -0
  961. package/dist/core/reparacion/index.js +2 -0
  962. package/dist/core/reparacion/index.js.map +1 -0
  963. package/dist/core/reparacion/reparar-hunk.d.ts +27 -0
  964. package/dist/core/reparacion/reparar-hunk.d.ts.map +1 -0
  965. package/dist/core/reparacion/reparar-hunk.js +139 -0
  966. package/dist/core/reparacion/reparar-hunk.js.map +1 -0
  967. package/dist/core/resolve-config-value.d.ts.map +1 -1
  968. package/dist/core/resolve-config-value.js.map +1 -1
  969. package/dist/core/resource-loader.d.ts +13 -0
  970. package/dist/core/resource-loader.d.ts.map +1 -1
  971. package/dist/core/resource-loader.js +7 -4
  972. package/dist/core/resource-loader.js.map +1 -1
  973. package/dist/core/revision/dispositions.d.ts +86 -0
  974. package/dist/core/revision/dispositions.d.ts.map +1 -0
  975. package/dist/core/revision/dispositions.js +137 -0
  976. package/dist/core/revision/dispositions.js.map +1 -0
  977. package/dist/core/revision/hallazgo.d.ts.map +1 -1
  978. package/dist/core/revision/hallazgo.js.map +1 -1
  979. package/dist/core/revision/procedencia.d.ts +63 -0
  980. package/dist/core/revision/procedencia.d.ts.map +1 -0
  981. package/dist/core/revision/procedencia.js +72 -0
  982. package/dist/core/revision/procedencia.js.map +1 -0
  983. package/dist/core/revision/publicar.d.ts +26 -0
  984. package/dist/core/revision/publicar.d.ts.map +1 -0
  985. package/dist/core/revision/publicar.js +34 -0
  986. package/dist/core/revision/publicar.js.map +1 -0
  987. package/dist/core/revision/revisor.d.ts.map +1 -1
  988. package/dist/core/revision/revisor.js.map +1 -1
  989. package/dist/core/revision/sarif.d.ts.map +1 -1
  990. package/dist/core/revision/sarif.js.map +1 -1
  991. package/dist/core/router-uris/index.d.ts +12 -0
  992. package/dist/core/router-uris/index.d.ts.map +1 -0
  993. package/dist/core/router-uris/index.js +12 -0
  994. package/dist/core/router-uris/index.js.map +1 -0
  995. package/dist/core/router-uris/router.d.ts +2 -0
  996. package/dist/core/router-uris/router.d.ts.map +1 -0
  997. package/dist/core/router-uris/router.js +2 -0
  998. package/dist/core/router-uris/router.js.map +1 -0
  999. package/dist/core/runtime-credentials.d.ts.map +1 -1
  1000. package/dist/core/runtime-credentials.js.map +1 -1
  1001. package/dist/core/rutas/envoltorio.d.ts +20 -0
  1002. package/dist/core/rutas/envoltorio.d.ts.map +1 -0
  1003. package/dist/core/rutas/envoltorio.js +48 -0
  1004. package/dist/core/rutas/envoltorio.js.map +1 -0
  1005. package/dist/core/rutas/index.d.ts +11 -0
  1006. package/dist/core/rutas/index.d.ts.map +1 -0
  1007. package/dist/core/rutas/index.js +11 -0
  1008. package/dist/core/rutas/index.js.map +1 -0
  1009. package/dist/core/rutas/router.d.ts +82 -0
  1010. package/dist/core/rutas/router.d.ts.map +1 -0
  1011. package/dist/core/rutas/router.js +161 -0
  1012. package/dist/core/rutas/router.js.map +1 -0
  1013. package/dist/core/scheduler/scheduler.d.ts.map +1 -1
  1014. package/dist/core/scheduler/scheduler.js.map +1 -1
  1015. package/dist/core/sdk.d.ts.map +1 -1
  1016. package/dist/core/sdk.js.map +1 -1
  1017. package/dist/core/secretos/extension.d.ts +31 -0
  1018. package/dist/core/secretos/extension.d.ts.map +1 -0
  1019. package/dist/core/secretos/extension.js +64 -0
  1020. package/dist/core/secretos/extension.js.map +1 -0
  1021. package/dist/core/secretos/index.d.ts +75 -0
  1022. package/dist/core/secretos/index.d.ts.map +1 -0
  1023. package/dist/core/secretos/index.js +385 -0
  1024. package/dist/core/secretos/index.js.map +1 -0
  1025. package/dist/core/secretos/message-transform.d.ts +44 -0
  1026. package/dist/core/secretos/message-transform.d.ts.map +1 -0
  1027. package/dist/core/secretos/message-transform.js +246 -0
  1028. package/dist/core/secretos/message-transform.js.map +1 -0
  1029. package/dist/core/secretos/obfuscator.d.ts +30 -0
  1030. package/dist/core/secretos/obfuscator.d.ts.map +1 -0
  1031. package/dist/core/secretos/obfuscator.js +1182 -0
  1032. package/dist/core/secretos/obfuscator.js.map +1 -0
  1033. package/dist/core/secretos/placeholder-scan.d.ts +96 -0
  1034. package/dist/core/secretos/placeholder-scan.d.ts.map +1 -0
  1035. package/dist/core/secretos/placeholder-scan.js +433 -0
  1036. package/dist/core/secretos/placeholder-scan.js.map +1 -0
  1037. package/dist/core/secretos/placeholder.d.ts +95 -0
  1038. package/dist/core/secretos/placeholder.d.ts.map +1 -0
  1039. package/dist/core/secretos/placeholder.js +283 -0
  1040. package/dist/core/secretos/placeholder.js.map +1 -0
  1041. package/dist/core/secretos/regex.d.ts +3 -0
  1042. package/dist/core/secretos/regex.d.ts.map +1 -0
  1043. package/dist/core/secretos/regex.js +19 -0
  1044. package/dist/core/secretos/regex.js.map +1 -0
  1045. package/dist/core/secretos/replacement.d.ts +83 -0
  1046. package/dist/core/secretos/replacement.d.ts.map +1 -0
  1047. package/dist/core/secretos/replacement.js +211 -0
  1048. package/dist/core/secretos/replacement.js.map +1 -0
  1049. package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts.map +1 -1
  1050. package/dist/core/sesion/cerrar-llamadas-abiertas.js.map +1 -1
  1051. package/dist/core/sesion/journal-tree.d.ts +73 -0
  1052. package/dist/core/sesion/journal-tree.d.ts.map +1 -0
  1053. package/dist/core/sesion/journal-tree.js +241 -0
  1054. package/dist/core/sesion/journal-tree.js.map +1 -0
  1055. package/dist/core/sesion/turn-recovery.d.ts +48 -0
  1056. package/dist/core/sesion/turn-recovery.d.ts.map +1 -0
  1057. package/dist/core/sesion/turn-recovery.js +182 -0
  1058. package/dist/core/sesion/turn-recovery.js.map +1 -0
  1059. package/dist/core/session-cwd.d.ts.map +1 -1
  1060. package/dist/core/session-cwd.js.map +1 -1
  1061. package/dist/core/session-manager.d.ts.map +1 -1
  1062. package/dist/core/session-manager.js.map +1 -1
  1063. package/dist/core/settings-diagnostics.d.ts.map +1 -1
  1064. package/dist/core/settings-diagnostics.js.map +1 -1
  1065. package/dist/core/settings-manager.d.ts +2 -2
  1066. package/dist/core/settings-manager.d.ts.map +1 -1
  1067. package/dist/core/settings-manager.js.map +1 -1
  1068. package/dist/core/share/cifrado.d.ts +39 -0
  1069. package/dist/core/share/cifrado.d.ts.map +1 -0
  1070. package/dist/core/share/cifrado.js +81 -0
  1071. package/dist/core/share/cifrado.js.map +1 -0
  1072. package/dist/core/share/exportar.d.ts +69 -0
  1073. package/dist/core/share/exportar.d.ts.map +1 -0
  1074. package/dist/core/share/exportar.js +247 -0
  1075. package/dist/core/share/exportar.js.map +1 -0
  1076. package/dist/core/skills.d.ts.map +1 -1
  1077. package/dist/core/skills.js.map +1 -1
  1078. package/dist/core/slash-commands.d.ts.map +1 -1
  1079. package/dist/core/slash-commands.js.map +1 -1
  1080. package/dist/core/source-info.d.ts.map +1 -1
  1081. package/dist/core/source-info.js.map +1 -1
  1082. package/dist/core/stream-guard/guardia.d.ts +45 -0
  1083. package/dist/core/stream-guard/guardia.d.ts.map +1 -0
  1084. package/dist/core/stream-guard/guardia.js +100 -0
  1085. package/dist/core/stream-guard/guardia.js.map +1 -0
  1086. package/dist/core/stream-guard/index.d.ts +9 -0
  1087. package/dist/core/stream-guard/index.d.ts.map +1 -0
  1088. package/dist/core/stream-guard/index.js +7 -0
  1089. package/dist/core/stream-guard/index.js.map +1 -0
  1090. package/dist/core/stream-guard/replay.d.ts +39 -0
  1091. package/dist/core/stream-guard/replay.d.ts.map +1 -0
  1092. package/dist/core/stream-guard/replay.js +68 -0
  1093. package/dist/core/stream-guard/replay.js.map +1 -0
  1094. package/dist/core/system-prompt.d.ts.map +1 -1
  1095. package/dist/core/system-prompt.js.map +1 -1
  1096. package/dist/core/telemetria/otlp.d.ts.map +1 -1
  1097. package/dist/core/telemetria/otlp.js.map +1 -1
  1098. package/dist/core/telemetry/otel-genai.d.ts +44 -0
  1099. package/dist/core/telemetry/otel-genai.d.ts.map +1 -0
  1100. package/dist/core/telemetry/otel-genai.js +124 -0
  1101. package/dist/core/telemetry/otel-genai.js.map +1 -0
  1102. package/dist/core/telemetry.d.ts.map +1 -1
  1103. package/dist/core/telemetry.js.map +1 -1
  1104. package/dist/core/terminal/backlog-guard.d.ts +53 -0
  1105. package/dist/core/terminal/backlog-guard.d.ts.map +1 -0
  1106. package/dist/core/terminal/backlog-guard.js +122 -0
  1107. package/dist/core/terminal/backlog-guard.js.map +1 -0
  1108. package/dist/core/terminal/conpty.d.ts +29 -0
  1109. package/dist/core/terminal/conpty.d.ts.map +1 -0
  1110. package/dist/core/terminal/conpty.js +67 -0
  1111. package/dist/core/terminal/conpty.js.map +1 -0
  1112. package/dist/core/terminal/conptyChunking.d.ts +2 -0
  1113. package/dist/core/terminal/conptyChunking.d.ts.map +1 -0
  1114. package/dist/core/terminal/conptyChunking.js +2 -0
  1115. package/dist/core/terminal/conptyChunking.js.map +1 -0
  1116. package/dist/core/terminal/index.d.ts +5 -0
  1117. package/dist/core/terminal/index.d.ts.map +1 -0
  1118. package/dist/core/terminal/index.js +5 -0
  1119. package/dist/core/terminal/index.js.map +1 -0
  1120. package/dist/core/terminal/loop-watchdog.d.ts +43 -0
  1121. package/dist/core/terminal/loop-watchdog.d.ts.map +1 -0
  1122. package/dist/core/terminal/loop-watchdog.js +117 -0
  1123. package/dist/core/terminal/loop-watchdog.js.map +1 -0
  1124. package/dist/core/terminal/runner.d.ts +55 -0
  1125. package/dist/core/terminal/runner.d.ts.map +1 -0
  1126. package/dist/core/terminal/runner.js +102 -0
  1127. package/dist/core/terminal/runner.js.map +1 -0
  1128. package/dist/core/timings.d.ts.map +1 -1
  1129. package/dist/core/timings.js.map +1 -1
  1130. package/dist/core/tools/apply_patch.d.ts +29 -0
  1131. package/dist/core/tools/apply_patch.d.ts.map +1 -0
  1132. package/dist/core/tools/apply_patch.js +54 -0
  1133. package/dist/core/tools/apply_patch.js.map +1 -0
  1134. package/dist/core/tools/bash.d.ts.map +1 -1
  1135. package/dist/core/tools/bash.js.map +1 -1
  1136. package/dist/core/tools/coercion-argumentos.d.ts.map +1 -1
  1137. package/dist/core/tools/coercion-argumentos.js.map +1 -1
  1138. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  1139. package/dist/core/tools/edit-diff.js.map +1 -1
  1140. package/dist/core/tools/edit.d.ts.map +1 -1
  1141. package/dist/core/tools/edit.js +43 -1
  1142. package/dist/core/tools/edit.js.map +1 -1
  1143. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  1144. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  1145. package/dist/core/tools/find.d.ts.map +1 -1
  1146. package/dist/core/tools/find.js.map +1 -1
  1147. package/dist/core/tools/grep.d.ts.map +1 -1
  1148. package/dist/core/tools/grep.js.map +1 -1
  1149. package/dist/core/tools/index.d.ts.map +1 -1
  1150. package/dist/core/tools/index.js.map +1 -1
  1151. package/dist/core/tools/json-tolerante.d.ts.map +1 -1
  1152. package/dist/core/tools/json-tolerante.js.map +1 -1
  1153. package/dist/core/tools/ls.d.ts.map +1 -1
  1154. package/dist/core/tools/ls.js.map +1 -1
  1155. package/dist/core/tools/noop-loop-guard.d.ts +46 -0
  1156. package/dist/core/tools/noop-loop-guard.d.ts.map +1 -0
  1157. package/dist/core/tools/noop-loop-guard.js +57 -0
  1158. package/dist/core/tools/noop-loop-guard.js.map +1 -0
  1159. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  1160. package/dist/core/tools/output-accumulator.js.map +1 -1
  1161. package/dist/core/tools/path-utils.d.ts.map +1 -1
  1162. package/dist/core/tools/path-utils.js.map +1 -1
  1163. package/dist/core/tools/project-memory-tool.d.ts.map +1 -1
  1164. package/dist/core/tools/project-memory-tool.js.map +1 -1
  1165. package/dist/core/tools/read.d.ts.map +1 -1
  1166. package/dist/core/tools/read.js.map +1 -1
  1167. package/dist/core/tools/render-utils.d.ts.map +1 -1
  1168. package/dist/core/tools/render-utils.js.map +1 -1
  1169. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  1170. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  1171. package/dist/core/tools/truncate.d.ts.map +1 -1
  1172. package/dist/core/tools/truncate.js.map +1 -1
  1173. package/dist/core/tools/write.d.ts.map +1 -1
  1174. package/dist/core/tools/write.js.map +1 -1
  1175. package/dist/core/trust-manager.d.ts.map +1 -1
  1176. package/dist/core/trust-manager.js.map +1 -1
  1177. package/dist/core/ttsr/captura.d.ts +72 -0
  1178. package/dist/core/ttsr/captura.d.ts.map +1 -0
  1179. package/dist/core/ttsr/captura.js +183 -0
  1180. package/dist/core/ttsr/captura.js.map +1 -0
  1181. package/dist/core/ttsr/index.d.ts +24 -0
  1182. package/dist/core/ttsr/index.d.ts.map +1 -0
  1183. package/dist/core/ttsr/index.js +57 -0
  1184. package/dist/core/ttsr/index.js.map +1 -0
  1185. package/dist/core/ttsr/preview.d.ts +48 -0
  1186. package/dist/core/ttsr/preview.d.ts.map +1 -0
  1187. package/dist/core/ttsr/preview.js +83 -0
  1188. package/dist/core/ttsr/preview.js.map +1 -0
  1189. package/dist/core/turno-vacio/detectar.d.ts.map +1 -1
  1190. package/dist/core/turno-vacio/detectar.js.map +1 -1
  1191. package/dist/core/undo/journal.d.ts.map +1 -1
  1192. package/dist/core/undo/journal.js.map +1 -1
  1193. package/dist/core/urls-internas/auditoria.d.ts.map +1 -1
  1194. package/dist/core/urls-internas/auditoria.js.map +1 -1
  1195. package/dist/core/urls-internas/boveda.d.ts.map +1 -1
  1196. package/dist/core/urls-internas/boveda.js.map +1 -1
  1197. package/dist/core/urls-internas/lector.d.ts +14 -10
  1198. package/dist/core/urls-internas/lector.d.ts.map +1 -1
  1199. package/dist/core/urls-internas/lector.js +50 -36
  1200. package/dist/core/urls-internas/lector.js.map +1 -1
  1201. package/dist/core/urls-internas/memoria.d.ts.map +1 -1
  1202. package/dist/core/urls-internas/memoria.js.map +1 -1
  1203. package/dist/core/urls-internas/parse.d.ts +6 -13
  1204. package/dist/core/urls-internas/parse.d.ts.map +1 -1
  1205. package/dist/core/urls-internas/parse.js +6 -17
  1206. package/dist/core/urls-internas/parse.js.map +1 -1
  1207. package/dist/core/urls-internas/reglas.d.ts.map +1 -1
  1208. package/dist/core/urls-internas/reglas.js.map +1 -1
  1209. package/dist/core/usage/aggregate.d.ts +1 -0
  1210. package/dist/core/usage/aggregate.d.ts.map +1 -1
  1211. package/dist/core/usage/aggregate.js +1 -1
  1212. package/dist/core/usage/aggregate.js.map +1 -1
  1213. package/dist/core/usage/cuota/anthropic.d.ts.map +1 -1
  1214. package/dist/core/usage/cuota/anthropic.js.map +1 -1
  1215. package/dist/core/usage/cuota/cache.d.ts.map +1 -1
  1216. package/dist/core/usage/cuota/cache.js.map +1 -1
  1217. package/dist/core/usage/cuota/github-copilot.d.ts.map +1 -1
  1218. package/dist/core/usage/cuota/github-copilot.js.map +1 -1
  1219. package/dist/core/usage/cuota/google-gemini.d.ts.map +1 -1
  1220. package/dist/core/usage/cuota/google-gemini.js.map +1 -1
  1221. package/dist/core/usage/cuota/index.d.ts.map +1 -1
  1222. package/dist/core/usage/cuota/index.js.map +1 -1
  1223. package/dist/core/usage/cuota/openai-codex.d.ts.map +1 -1
  1224. package/dist/core/usage/cuota/openai-codex.js.map +1 -1
  1225. package/dist/core/usage/cuota/openrouter.d.ts.map +1 -1
  1226. package/dist/core/usage/cuota/openrouter.js.map +1 -1
  1227. package/dist/core/usage/cuota/tipos.d.ts.map +1 -1
  1228. package/dist/core/usage/cuota/tipos.js.map +1 -1
  1229. package/dist/core/usage/index.d.ts +11 -0
  1230. package/dist/core/usage/index.d.ts.map +1 -0
  1231. package/dist/core/usage/index.js +11 -0
  1232. package/dist/core/usage/index.js.map +1 -0
  1233. package/dist/core/usage/multi.d.ts +62 -0
  1234. package/dist/core/usage/multi.d.ts.map +1 -0
  1235. package/dist/core/usage/multi.js +122 -0
  1236. package/dist/core/usage/multi.js.map +1 -0
  1237. package/dist/core/usage/redaccion.d.ts +48 -0
  1238. package/dist/core/usage/redaccion.d.ts.map +1 -0
  1239. package/dist/core/usage/redaccion.js +72 -0
  1240. package/dist/core/usage/redaccion.js.map +1 -0
  1241. package/dist/core/usage-totals.d.ts.map +1 -1
  1242. package/dist/core/usage-totals.js.map +1 -1
  1243. package/dist/core/utils/atomic-write.d.ts +55 -0
  1244. package/dist/core/utils/atomic-write.d.ts.map +1 -0
  1245. package/dist/core/utils/atomic-write.js +293 -0
  1246. package/dist/core/utils/atomic-write.js.map +1 -0
  1247. package/dist/core/utils/git.d.ts +24 -0
  1248. package/dist/core/utils/git.d.ts.map +1 -0
  1249. package/dist/core/utils/git.js +107 -0
  1250. package/dist/core/utils/git.js.map +1 -0
  1251. package/dist/core/utils/logger.d.ts +26 -0
  1252. package/dist/core/utils/logger.d.ts.map +1 -0
  1253. package/dist/core/utils/logger.js +104 -0
  1254. package/dist/core/utils/logger.js.map +1 -0
  1255. package/dist/core/utils/shell-snapshot.d.ts +21 -0
  1256. package/dist/core/utils/shell-snapshot.d.ts.map +1 -0
  1257. package/dist/core/utils/shell-snapshot.js +32 -0
  1258. package/dist/core/utils/shell-snapshot.js.map +1 -0
  1259. package/dist/core/utils/startup-watchdog.d.ts +11 -0
  1260. package/dist/core/utils/startup-watchdog.d.ts.map +1 -0
  1261. package/dist/core/utils/startup-watchdog.js +34 -0
  1262. package/dist/core/utils/startup-watchdog.js.map +1 -0
  1263. package/dist/core/utils/tls-ca-shim.d.ts +17 -0
  1264. package/dist/core/utils/tls-ca-shim.d.ts.map +1 -0
  1265. package/dist/core/utils/tls-ca-shim.js +33 -0
  1266. package/dist/core/utils/tls-ca-shim.js.map +1 -0
  1267. package/dist/core/web/agregador.d.ts +67 -0
  1268. package/dist/core/web/agregador.d.ts.map +1 -0
  1269. package/dist/core/web/agregador.js +182 -0
  1270. package/dist/core/web/agregador.js.map +1 -0
  1271. package/dist/core/web/busqueda-nativa.d.ts.map +1 -1
  1272. package/dist/core/web/busqueda-nativa.js.map +1 -1
  1273. package/dist/core/web/consulta.d.ts +53 -0
  1274. package/dist/core/web/consulta.d.ts.map +1 -0
  1275. package/dist/core/web/consulta.js +213 -0
  1276. package/dist/core/web/consulta.js.map +1 -0
  1277. package/dist/core/web/destino.d.ts +11 -0
  1278. package/dist/core/web/destino.d.ts.map +1 -1
  1279. package/dist/core/web/destino.js +35 -0
  1280. package/dist/core/web/destino.js.map +1 -1
  1281. package/dist/core/web/load-page.d.ts +52 -0
  1282. package/dist/core/web/load-page.d.ts.map +1 -0
  1283. package/dist/core/web/load-page.js +221 -0
  1284. package/dist/core/web/load-page.js.map +1 -0
  1285. package/dist/core/web/proveedores/brave.d.ts.map +1 -1
  1286. package/dist/core/web/proveedores/brave.js.map +1 -1
  1287. package/dist/core/web/proveedores/claves.d.ts.map +1 -1
  1288. package/dist/core/web/proveedores/claves.js.map +1 -1
  1289. package/dist/core/web/proveedores/duckduckgo.d.ts.map +1 -1
  1290. package/dist/core/web/proveedores/duckduckgo.js.map +1 -1
  1291. package/dist/core/web/proveedores/ecosia.d.ts.map +1 -1
  1292. package/dist/core/web/proveedores/ecosia.js.map +1 -1
  1293. package/dist/core/web/proveedores/exa.d.ts.map +1 -1
  1294. package/dist/core/web/proveedores/exa.js.map +1 -1
  1295. package/dist/core/web/proveedores/mojeek.d.ts.map +1 -1
  1296. package/dist/core/web/proveedores/mojeek.js.map +1 -1
  1297. package/dist/core/web/proveedores/navegador.d.ts.map +1 -1
  1298. package/dist/core/web/proveedores/navegador.js.map +1 -1
  1299. package/dist/core/web/proveedores/registro.d.ts.map +1 -1
  1300. package/dist/core/web/proveedores/registro.js.map +1 -1
  1301. package/dist/core/web/proveedores/searxng.d.ts.map +1 -1
  1302. package/dist/core/web/proveedores/searxng.js.map +1 -1
  1303. package/dist/core/web/proveedores/serper.d.ts.map +1 -1
  1304. package/dist/core/web/proveedores/serper.js.map +1 -1
  1305. package/dist/core/web/proveedores/tavily.d.ts.map +1 -1
  1306. package/dist/core/web/proveedores/tavily.js.map +1 -1
  1307. package/dist/core/web/proveedores/tipos.d.ts.map +1 -1
  1308. package/dist/core/web/proveedores/tipos.js.map +1 -1
  1309. package/dist/core/web/registro-red.d.ts.map +1 -1
  1310. package/dist/core/web/registro-red.js.map +1 -1
  1311. package/dist/core/web/scrapers/cisa-kev.d.ts.map +1 -1
  1312. package/dist/core/web/scrapers/cisa-kev.js.map +1 -1
  1313. package/dist/core/web/scrapers/crates-io.d.ts.map +1 -1
  1314. package/dist/core/web/scrapers/crates-io.js.map +1 -1
  1315. package/dist/core/web/scrapers/docs-rs.d.ts.map +1 -1
  1316. package/dist/core/web/scrapers/docs-rs.js.map +1 -1
  1317. package/dist/core/web/scrapers/github.d.ts.map +1 -1
  1318. package/dist/core/web/scrapers/github.js.map +1 -1
  1319. package/dist/core/web/scrapers/go-pkg.d.ts.map +1 -1
  1320. package/dist/core/web/scrapers/go-pkg.js.map +1 -1
  1321. package/dist/core/web/scrapers/hex.d.ts.map +1 -1
  1322. package/dist/core/web/scrapers/hex.js.map +1 -1
  1323. package/dist/core/web/scrapers/maven.d.ts.map +1 -1
  1324. package/dist/core/web/scrapers/maven.js.map +1 -1
  1325. package/dist/core/web/scrapers/mdn.d.ts.map +1 -1
  1326. package/dist/core/web/scrapers/mdn.js.map +1 -1
  1327. package/dist/core/web/scrapers/npm.d.ts.map +1 -1
  1328. package/dist/core/web/scrapers/npm.js.map +1 -1
  1329. package/dist/core/web/scrapers/nuget.d.ts.map +1 -1
  1330. package/dist/core/web/scrapers/nuget.js.map +1 -1
  1331. package/dist/core/web/scrapers/nvd.d.ts.map +1 -1
  1332. package/dist/core/web/scrapers/nvd.js.map +1 -1
  1333. package/dist/core/web/scrapers/pypi.d.ts.map +1 -1
  1334. package/dist/core/web/scrapers/pypi.js.map +1 -1
  1335. package/dist/core/web/scrapers/registro.d.ts.map +1 -1
  1336. package/dist/core/web/scrapers/registro.js.map +1 -1
  1337. package/dist/core/web/scrapers/rubygems.d.ts.map +1 -1
  1338. package/dist/core/web/scrapers/rubygems.js.map +1 -1
  1339. package/dist/core/web/scrapers/stackoverflow.d.ts.map +1 -1
  1340. package/dist/core/web/scrapers/stackoverflow.js.map +1 -1
  1341. package/dist/core/web/scrapers/tipos.d.ts.map +1 -1
  1342. package/dist/core/web/scrapers/tipos.js.map +1 -1
  1343. package/dist/core/web/texto.d.ts.map +1 -1
  1344. package/dist/core/web/texto.js.map +1 -1
  1345. package/dist/core/web/tools.d.ts +1 -8
  1346. package/dist/core/web/tools.d.ts.map +1 -1
  1347. package/dist/core/web/tools.js +2 -33
  1348. package/dist/core/web/tools.js.map +1 -1
  1349. package/dist/core/wiki/almacen.d.ts.map +1 -1
  1350. package/dist/core/wiki/almacen.js.map +1 -1
  1351. package/dist/core/wiki/citas.d.ts.map +1 -1
  1352. package/dist/core/wiki/citas.js.map +1 -1
  1353. package/dist/core/workflows/agent-runner.d.ts.map +1 -1
  1354. package/dist/core/workflows/agent-runner.js.map +1 -1
  1355. package/dist/core/workflows/builtins.d.ts.map +1 -1
  1356. package/dist/core/workflows/builtins.js.map +1 -1
  1357. package/dist/core/workflows/contrato/esquema.d.ts.map +1 -1
  1358. package/dist/core/workflows/contrato/esquema.js.map +1 -1
  1359. package/dist/core/workflows/contrato/reparar-argumentos.d.ts.map +1 -1
  1360. package/dist/core/workflows/contrato/reparar-argumentos.js.map +1 -1
  1361. package/dist/core/workflows/contrato/validador.d.ts.map +1 -1
  1362. package/dist/core/workflows/contrato/validador.js.map +1 -1
  1363. package/dist/core/workflows/contrato/yield.d.ts.map +1 -1
  1364. package/dist/core/workflows/contrato/yield.js.map +1 -1
  1365. package/dist/core/workflows/goal-engine/engine.d.ts +5 -0
  1366. package/dist/core/workflows/goal-engine/engine.d.ts.map +1 -1
  1367. package/dist/core/workflows/goal-engine/engine.js.map +1 -1
  1368. package/dist/core/workflows/goal-engine/errors.d.ts.map +1 -1
  1369. package/dist/core/workflows/goal-engine/errors.js.map +1 -1
  1370. package/dist/core/workflows/goal-engine/index.d.ts.map +1 -1
  1371. package/dist/core/workflows/goal-engine/index.js.map +1 -1
  1372. package/dist/core/workflows/goal-engine/persistence.d.ts.map +1 -1
  1373. package/dist/core/workflows/goal-engine/persistence.js.map +1 -1
  1374. package/dist/core/workflows/goal-engine/prompts.d.ts.map +1 -1
  1375. package/dist/core/workflows/goal-engine/prompts.js.map +1 -1
  1376. package/dist/core/workflows/goal-engine/state.d.ts.map +1 -1
  1377. package/dist/core/workflows/goal-engine/state.js.map +1 -1
  1378. package/dist/core/workflows/goal-engine/tools.d.ts.map +1 -1
  1379. package/dist/core/workflows/goal-engine/tools.js.map +1 -1
  1380. package/dist/core/workflows/goal-engine/types.d.ts.map +1 -1
  1381. package/dist/core/workflows/goal-engine/types.js.map +1 -1
  1382. package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts.map +1 -1
  1383. package/dist/core/workflows/goal-engine/worktree-fingerprint.js.map +1 -1
  1384. package/dist/core/workflows/graph-sync.d.ts.map +1 -1
  1385. package/dist/core/workflows/graph-sync.js.map +1 -1
  1386. package/dist/core/workflows/graph.d.ts.map +1 -1
  1387. package/dist/core/workflows/graph.js.map +1 -1
  1388. package/dist/core/workflows/index.d.ts +6 -0
  1389. package/dist/core/workflows/index.d.ts.map +1 -1
  1390. package/dist/core/workflows/index.js +3 -0
  1391. package/dist/core/workflows/index.js.map +1 -1
  1392. package/dist/core/workflows/journal.d.ts.map +1 -1
  1393. package/dist/core/workflows/journal.js.map +1 -1
  1394. package/dist/core/workflows/manager.d.ts.map +1 -1
  1395. package/dist/core/workflows/manager.js.map +1 -1
  1396. package/dist/core/workflows/provider-caps.d.ts +103 -0
  1397. package/dist/core/workflows/provider-caps.d.ts.map +1 -0
  1398. package/dist/core/workflows/provider-caps.js +235 -0
  1399. package/dist/core/workflows/provider-caps.js.map +1 -0
  1400. package/dist/core/workflows/resolve-script.d.ts.map +1 -1
  1401. package/dist/core/workflows/resolve-script.js.map +1 -1
  1402. package/dist/core/workflows/runtime.d.ts.map +1 -1
  1403. package/dist/core/workflows/runtime.js.map +1 -1
  1404. package/dist/core/workflows/save-as-skill.d.ts.map +1 -1
  1405. package/dist/core/workflows/save-as-skill.js.map +1 -1
  1406. package/dist/core/workflows/shared-store.d.ts.map +1 -1
  1407. package/dist/core/workflows/shared-store.js.map +1 -1
  1408. package/dist/core/workflows/soft-budget.d.ts +27 -0
  1409. package/dist/core/workflows/soft-budget.d.ts.map +1 -0
  1410. package/dist/core/workflows/soft-budget.js +47 -0
  1411. package/dist/core/workflows/soft-budget.js.map +1 -0
  1412. package/dist/core/workflows/subagent-host.d.ts.map +1 -1
  1413. package/dist/core/workflows/subagent-host.js.map +1 -1
  1414. package/dist/core/workflows/tool-scheduling.d.ts +47 -0
  1415. package/dist/core/workflows/tool-scheduling.d.ts.map +1 -0
  1416. package/dist/core/workflows/tool-scheduling.js +102 -0
  1417. package/dist/core/workflows/tool-scheduling.js.map +1 -0
  1418. package/dist/core/workflows/tool-workflow.d.ts.map +1 -1
  1419. package/dist/core/workflows/tool-workflow.js.map +1 -1
  1420. package/dist/core/workflows/types.d.ts.map +1 -1
  1421. package/dist/core/workflows/types.js.map +1 -1
  1422. package/dist/core/workflows/worktree.d.ts.map +1 -1
  1423. package/dist/core/workflows/worktree.js.map +1 -1
  1424. package/dist/extensions/index.d.ts.map +1 -1
  1425. package/dist/extensions/index.js.map +1 -1
  1426. package/dist/extensions/llama/client.d.ts.map +1 -1
  1427. package/dist/extensions/llama/client.js.map +1 -1
  1428. package/dist/extensions/llama/huggingface.d.ts.map +1 -1
  1429. package/dist/extensions/llama/huggingface.js.map +1 -1
  1430. package/dist/extensions/llama/index.d.ts.map +1 -1
  1431. package/dist/extensions/llama/index.js.map +1 -1
  1432. package/dist/extensions/llama/provider.d.ts.map +1 -1
  1433. package/dist/extensions/llama/provider.js.map +1 -1
  1434. package/dist/extensions/llama/ui.d.ts.map +1 -1
  1435. package/dist/extensions/llama/ui.js.map +1 -1
  1436. package/dist/extensions/remoto/index.d.ts.map +1 -1
  1437. package/dist/extensions/remoto/index.js.map +1 -1
  1438. package/dist/index.d.ts.map +1 -1
  1439. package/dist/index.js.map +1 -1
  1440. package/dist/main.d.ts.map +1 -1
  1441. package/dist/main.js +71 -3
  1442. package/dist/main.js.map +1 -1
  1443. package/dist/migrations.d.ts.map +1 -1
  1444. package/dist/migrations.js.map +1 -1
  1445. package/dist/modes/acp/acp-mode.d.ts.map +1 -1
  1446. package/dist/modes/acp/acp-mode.js.map +1 -1
  1447. package/dist/modes/acp/events.d.ts.map +1 -1
  1448. package/dist/modes/acp/events.js.map +1 -1
  1449. package/dist/modes/index.d.ts.map +1 -1
  1450. package/dist/modes/index.js.map +1 -1
  1451. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  1452. package/dist/modes/interactive/components/armin.js.map +1 -1
  1453. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  1454. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  1455. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  1456. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  1457. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  1458. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  1459. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  1460. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  1461. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  1462. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  1463. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  1464. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  1465. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  1466. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  1467. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  1468. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  1469. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
  1470. package/dist/modes/interactive/components/custom-entry.js.map +1 -1
  1471. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  1472. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  1473. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  1474. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  1475. package/dist/modes/interactive/components/diff.d.ts.map +1 -1
  1476. package/dist/modes/interactive/components/diff.js.map +1 -1
  1477. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  1478. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  1479. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  1480. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
  1481. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  1482. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  1483. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  1484. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  1485. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  1486. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  1487. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
  1488. package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
  1489. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  1490. package/dist/modes/interactive/components/footer.js.map +1 -1
  1491. package/dist/modes/interactive/components/home-screen.d.ts +2 -0
  1492. package/dist/modes/interactive/components/home-screen.d.ts.map +1 -1
  1493. package/dist/modes/interactive/components/home-screen.js +5 -6
  1494. package/dist/modes/interactive/components/home-screen.js.map +1 -1
  1495. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  1496. package/dist/modes/interactive/components/index.js.map +1 -1
  1497. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  1498. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  1499. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  1500. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  1501. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -1
  1502. package/dist/modes/interactive/components/markdown-transform.js.map +1 -1
  1503. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -1
  1504. package/dist/modes/interactive/components/mermaid.js.map +1 -1
  1505. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  1506. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  1507. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  1508. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  1509. package/dist/modes/interactive/components/prompt-optimization.d.ts.map +1 -1
  1510. package/dist/modes/interactive/components/prompt-optimization.js.map +1 -1
  1511. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  1512. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  1513. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  1514. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  1515. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  1516. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  1517. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  1518. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  1519. package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -1
  1520. package/dist/modes/interactive/components/settings-submenu.js.map +1 -1
  1521. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  1522. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  1523. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  1524. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  1525. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  1526. package/dist/modes/interactive/components/status-indicator.js.map +1 -1
  1527. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  1528. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  1529. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  1530. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  1531. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  1532. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  1533. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  1534. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  1535. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
  1536. package/dist/modes/interactive/components/trust-selector.js.map +1 -1
  1537. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  1538. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  1539. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  1540. package/dist/modes/interactive/components/user-message.js.map +1 -1
  1541. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  1542. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  1543. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  1544. package/dist/modes/interactive/external-editor.js.map +1 -1
  1545. package/dist/modes/interactive/interactive-mode.d.ts +19 -0
  1546. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  1547. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  1548. package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -1
  1549. package/dist/modes/interactive/model-catalog-refresh.js.map +1 -1
  1550. package/dist/modes/interactive/model-search.d.ts.map +1 -1
  1551. package/dist/modes/interactive/model-search.js.map +1 -1
  1552. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  1553. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  1554. package/dist/modes/interactive/theme/theme.d.ts +2 -2
  1555. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  1556. package/dist/modes/interactive/theme/theme.js.map +1 -1
  1557. package/dist/modes/json-event.d.ts.map +1 -1
  1558. package/dist/modes/json-event.js.map +1 -1
  1559. package/dist/modes/print-mode.d.ts.map +1 -1
  1560. package/dist/modes/print-mode.js.map +1 -1
  1561. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  1562. package/dist/modes/rpc/jsonl.js.map +1 -1
  1563. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  1564. package/dist/modes/rpc/rpc-client.js.map +1 -1
  1565. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  1566. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  1567. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  1568. package/dist/modes/rpc/rpc-types.js.map +1 -1
  1569. package/dist/package-manager-cli.d.ts.map +1 -1
  1570. package/dist/package-manager-cli.js.map +1 -1
  1571. package/dist/rpc-entry.d.ts.map +1 -1
  1572. package/dist/rpc-entry.js +0 -0
  1573. package/dist/rpc-entry.js.map +1 -1
  1574. package/dist/server/attach.d.ts.map +1 -1
  1575. package/dist/server/attach.js.map +1 -1
  1576. package/dist/server/create-harness.d.ts.map +1 -1
  1577. package/dist/server/create-harness.js.map +1 -1
  1578. package/dist/server/extension-ops.d.ts.map +1 -1
  1579. package/dist/server/extension-ops.js.map +1 -1
  1580. package/dist/server/pi-server-service.d.ts.map +1 -1
  1581. package/dist/server/pi-server-service.js.map +1 -1
  1582. package/dist/server/scheduler-tick.d.ts.map +1 -1
  1583. package/dist/server/scheduler-tick.js.map +1 -1
  1584. package/dist/server/serve.d.ts.map +1 -1
  1585. package/dist/server/serve.js.map +1 -1
  1586. package/dist/server/transcript.d.ts.map +1 -1
  1587. package/dist/server/transcript.js.map +1 -1
  1588. package/dist/telegram/api.d.ts +6 -0
  1589. package/dist/telegram/api.d.ts.map +1 -1
  1590. package/dist/telegram/api.js.map +1 -1
  1591. package/dist/telegram/bridge.d.ts.map +1 -1
  1592. package/dist/telegram/bridge.js.map +1 -1
  1593. package/dist/telegram/journal.d.ts.map +1 -1
  1594. package/dist/telegram/journal.js.map +1 -1
  1595. package/dist/telegram/servidor.d.ts.map +1 -1
  1596. package/dist/telegram/servidor.js.map +1 -1
  1597. package/dist/utils/abort.d.ts.map +1 -1
  1598. package/dist/utils/abort.js.map +1 -1
  1599. package/dist/utils/ansi.d.ts.map +1 -1
  1600. package/dist/utils/ansi.js.map +1 -1
  1601. package/dist/utils/changelog.d.ts.map +1 -1
  1602. package/dist/utils/changelog.js.map +1 -1
  1603. package/dist/utils/child-process.d.ts.map +1 -1
  1604. package/dist/utils/child-process.js.map +1 -1
  1605. package/dist/utils/clipboard-image.d.ts.map +1 -1
  1606. package/dist/utils/clipboard-image.js.map +1 -1
  1607. package/dist/utils/clipboard-native.d.ts.map +1 -1
  1608. package/dist/utils/clipboard-native.js.map +1 -1
  1609. package/dist/utils/clipboard.d.ts.map +1 -1
  1610. package/dist/utils/clipboard.js.map +1 -1
  1611. package/dist/utils/deprecation.d.ts.map +1 -1
  1612. package/dist/utils/deprecation.js.map +1 -1
  1613. package/dist/utils/exif-orientation.d.ts.map +1 -1
  1614. package/dist/utils/exif-orientation.js.map +1 -1
  1615. package/dist/utils/frontmatter.d.ts.map +1 -1
  1616. package/dist/utils/frontmatter.js.map +1 -1
  1617. package/dist/utils/fs-watch.d.ts.map +1 -1
  1618. package/dist/utils/fs-watch.js.map +1 -1
  1619. package/dist/utils/git.d.ts.map +1 -1
  1620. package/dist/utils/git.js.map +1 -1
  1621. package/dist/utils/html.d.ts.map +1 -1
  1622. package/dist/utils/html.js.map +1 -1
  1623. package/dist/utils/image-convert.d.ts.map +1 -1
  1624. package/dist/utils/image-convert.js.map +1 -1
  1625. package/dist/utils/image-process.d.ts.map +1 -1
  1626. package/dist/utils/image-process.js.map +1 -1
  1627. package/dist/utils/image-resize-core.d.ts.map +1 -1
  1628. package/dist/utils/image-resize-core.js.map +1 -1
  1629. package/dist/utils/image-resize-worker.d.ts.map +1 -1
  1630. package/dist/utils/image-resize-worker.js.map +1 -1
  1631. package/dist/utils/image-resize.d.ts.map +1 -1
  1632. package/dist/utils/image-resize.js.map +1 -1
  1633. package/dist/utils/json.d.ts.map +1 -1
  1634. package/dist/utils/json.js.map +1 -1
  1635. package/dist/utils/management-http.d.ts.map +1 -1
  1636. package/dist/utils/management-http.js.map +1 -1
  1637. package/dist/utils/mime.d.ts.map +1 -1
  1638. package/dist/utils/mime.js.map +1 -1
  1639. package/dist/utils/open-browser.d.ts.map +1 -1
  1640. package/dist/utils/open-browser.js.map +1 -1
  1641. package/dist/utils/paths.d.ts.map +1 -1
  1642. package/dist/utils/paths.js.map +1 -1
  1643. package/dist/utils/photon.d.ts.map +1 -1
  1644. package/dist/utils/photon.js.map +1 -1
  1645. package/dist/utils/pi-user-agent.d.ts.map +1 -1
  1646. package/dist/utils/pi-user-agent.js.map +1 -1
  1647. package/dist/utils/shell.d.ts.map +1 -1
  1648. package/dist/utils/shell.js.map +1 -1
  1649. package/dist/utils/sleep.d.ts.map +1 -1
  1650. package/dist/utils/sleep.js.map +1 -1
  1651. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  1652. package/dist/utils/syntax-highlight.js.map +1 -1
  1653. package/dist/utils/text.d.ts.map +1 -1
  1654. package/dist/utils/text.js.map +1 -1
  1655. package/dist/utils/tool-result-images.d.ts.map +1 -1
  1656. package/dist/utils/tool-result-images.js.map +1 -1
  1657. package/dist/utils/tools-manager.d.ts.map +1 -1
  1658. package/dist/utils/tools-manager.js.map +1 -1
  1659. package/dist/utils/version-check.d.ts.map +1 -1
  1660. package/dist/utils/version-check.js.map +1 -1
  1661. package/dist/utils/windows-self-update.d.ts.map +1 -1
  1662. package/dist/utils/windows-self-update.js.map +1 -1
  1663. package/docs/development-fork.md +170 -0
  1664. package/docs/docs.json +25 -0
  1665. package/docs/modules-infraestructura.md +115 -0
  1666. package/docs/modules-motor.md +160 -0
  1667. package/docs/modules-producto.md +179 -0
  1668. package/docs/modules-seguridad.md +158 -0
  1669. package/npm-shrinkwrap.json +2 -2
  1670. package/package.json +113 -113
  1671. package/dist/core/commit/diff.d.ts.map +0 -1
  1672. package/dist/core/commit/diff.js.map +0 -1
  1673. package/dist/core/commit/mensaje.d.ts +0 -80
  1674. package/dist/core/commit/mensaje.d.ts.map +0 -1
  1675. package/dist/core/commit/mensaje.js +0 -207
  1676. package/dist/core/commit/mensaje.js.map +0 -1
  1677. package/dist/core/computer/motor/platform/macos/helper-path.mjs +0 -34
  1678. package/dist/core/export-html/template.css +0 -1066
  1679. package/dist/core/export-html/template.html +0 -55
  1680. package/dist/core/export-html/template.js +0 -1864
  1681. package/dist/core/export-html/vendor/highlight.min.js +0 -1213
  1682. package/dist/core/export-html/vendor/marked.min.js +0 -78
  1683. package/dist/core/prompts/sistema.md +0 -134
  1684. package/dist/modes/interactive/assets/clankolas.png +0 -0
  1685. package/dist/modes/interactive/theme/dark.json +0 -90
  1686. package/dist/modes/interactive/theme/light.json +0 -89
  1687. package/dist/modes/interactive/theme/theme-schema.json +0 -352
  1688. package/dist/skills/ada-engine/SKILL.md +0 -153
  1689. package/dist/skills/skill-creator/SKILL.md +0 -90
  1690. /package/dist/core/{commit → commits}/diff.d.ts +0 -0
  1691. /package/dist/core/{commit → commits}/diff.js +0 -0
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Board vivo TTY/plain — C06.
3
+ *
4
+ * TTY: repinta filas por checker/grupo con \r (sin scroll).
5
+ * plain (no-TTY o CI): emite líneas [start][done][fail] estables.
6
+ * Comparte modelo con el loop para que el estado sea consultable.
7
+ */
8
+ export class Tablero {
9
+ checkers = new Map();
10
+ grupos = new Map();
11
+ opts;
12
+ cerrado = false;
13
+ constructor(opts) {
14
+ this.opts = opts;
15
+ }
16
+ registrarCheckers(checkers) {
17
+ for (const c of checkers) {
18
+ this.checkers.set(c.id, { id: c.id, etiqueta: c.etiqueta, estado: "pendiente", diagnosticos: 0 });
19
+ }
20
+ this.render();
21
+ }
22
+ checkerInicio(id) {
23
+ const f = this.checkers.get(id);
24
+ if (f)
25
+ f.estado = "corriendo";
26
+ if (!this.opts.tty)
27
+ this.opts.escribir(`[start] checker ${id}`);
28
+ this.render();
29
+ }
30
+ checkerFin(id, diagnosticos, error) {
31
+ const f = this.checkers.get(id);
32
+ if (f) {
33
+ f.estado = error ? "fallo" : "ok";
34
+ f.diagnosticos = diagnosticos;
35
+ }
36
+ if (!this.opts.tty) {
37
+ this.opts.escribir(error ? `[fail] checker ${id}: ${error}` : `[done] checker ${id} (${diagnosticos})`);
38
+ }
39
+ this.render();
40
+ }
41
+ grupoInicio(ruta, worker) {
42
+ const clave = ruta || "<proyecto>";
43
+ this.grupos.set(clave, { ruta: clave, estado: "reparando", diagnosticos: 0, worker });
44
+ if (!this.opts.tty)
45
+ this.opts.escribir(`[start] ${clave}${worker ? ` @${worker}` : ""}`);
46
+ this.render();
47
+ }
48
+ grupoFin(ruta, ok, motivo) {
49
+ const clave = ruta || "<proyecto>";
50
+ const g = this.grupos.get(clave);
51
+ if (g)
52
+ g.estado = ok ? "hecho" : "fallo";
53
+ if (!this.opts.tty)
54
+ this.opts.escribir(ok ? `[done] ${clave}` : `[fail] ${clave}: ${motivo ?? ""}`);
55
+ this.render();
56
+ }
57
+ render() {
58
+ if (this.cerrado)
59
+ return;
60
+ if (!this.opts.tty)
61
+ return;
62
+ // TTY: una línea de resumen repintada.
63
+ const checks = [...this.checkers.values()];
64
+ const grupos = [...this.grupos.values()];
65
+ const resumen = `cleanse ${checks.filter((c) => c.estado === "ok").length}/${checks.length} checkers · ${grupos.filter((g) => g.estado === "hecho").length}/${grupos.length} ficheros`;
66
+ this.opts.escribir(`\r\x1b[2K${resumen}`);
67
+ }
68
+ cerrar() {
69
+ if (!this.opts.tty)
70
+ return;
71
+ this.cerrado = true;
72
+ this.opts.escribir("\n");
73
+ }
74
+ snapshot() {
75
+ return { checkers: [...this.checkers.values()], grupos: [...this.grupos.values()] };
76
+ }
77
+ }
78
+ //# sourceMappingURL=tablero.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tablero.js","sourceRoot":"","sources":["../../../src/core/limpieza/tablero.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,10 @@ export interface Diagnostico {
15
15
  columna?: number;
16
16
  regla?: string;
17
17
  mensaje: string;
18
+ /** Severidad normalizada: error > warning > info. Para peso y ordenación. */
19
+ gravedad?: "error" | "warning" | "info";
20
+ /** Sugerencia de arreglo si el checker la proporciona (para peso). */
21
+ sugerencia?: string;
18
22
  }
19
23
  /** Un diagnóstico sin el campo `comprobador` — lo añade quien ejecuta, no quien parsea. */
20
24
  export type DiagnosticoParcial = Omit<Diagnostico, "comprobador">;
@@ -46,6 +50,8 @@ export interface Comprobador {
46
50
  * fichero pasaría como limpio porque nunca se vuelve a correr tsc.
47
51
  */
48
52
  alcance: "fichero" | "proyecto";
53
+ /** Si true, el checker reescribe ficheros (clippy --fix, etc.). Solo activo con --fix. */
54
+ mutador?: boolean;
49
55
  }
50
56
  /** Resultado de mirar qué hay en el proyecto. */
51
57
  export interface Deteccion {
@@ -53,4 +59,23 @@ export interface Deteccion {
53
59
  /** Cada sitio comprobado, se haya encontrado algo o no — para cuando no hay ninguno. */
54
60
  mirado: string[];
55
61
  }
62
+ /** Opciones de ejecución de cleanse que afectan a detección/ejecución. */
63
+ export interface OpcionesCleanse {
64
+ fix?: boolean;
65
+ }
66
+ /** Mensaje de steering vía IRC para diagnósticos tardíos. */
67
+ export interface SteeringMensaje {
68
+ tipo: "steering";
69
+ ruta: string;
70
+ diagnosticos: Diagnostico[];
71
+ origen: string;
72
+ }
73
+ /** Resultado de intentar entregar un steering. */
74
+ export type SteeringResultado = {
75
+ entregado: true;
76
+ workerId: string;
77
+ } | {
78
+ entregado: false;
79
+ motivo: string;
80
+ };
56
81
  //# sourceMappingURL=tipos.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tipos.d.ts","sourceRoot":"","sources":["../../../src/core/limpieza/tipos.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,uEAAsE;AACtE,MAAM,WAAW,WAAW;IAC3B,0FAAuF;IACvF,WAAW,EAAE,MAAM,CAAC;IACpB,+FAA8F;IAC9F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,+FAA2F;AAC3F,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAElE,4FAA2F;AAC3F,MAAM,WAAW,eAAe;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,WAAW,EAAE,CAAC;CAC5B;AAED,+CAA+C;AAC/C,MAAM,WAAW,aAAa;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACb;AAED,sDAAsD;AACtD,MAAM,WAAW,WAAW;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,KAAK,kBAAkB,EAAE,CAAC;IACtE;;;;;;;OAOG;IACH,OAAO,EAAE,SAAS,GAAG,UAAU,CAAC;CAChC;AAED,kDAAiD;AACjD,MAAM,WAAW,SAAS;IACzB,aAAa,EAAE,WAAW,EAAE,CAAC;IAC7B,0FAAwF;IACxF,MAAM,EAAE,MAAM,EAAE,CAAC;CACjB","sourcesContent":["/**\n * Tipos compartidos de `ada-cli cleanse`.\n *\n * Los nombres de campo van en español ({@link Diagnostico}: ruta, linea,\n * regla, mensaje) porque ese es el contrato que pide la tarea y el que\n * respeta el resto del módulo.\n */\n\n/** Un problema accionable que reportó un comprobador del proyecto. */\nexport interface Diagnostico {\n\t/** id del comprobador que lo generó — permite re-ejecutar solo ese tras un arreglo. */\n\tcomprobador: string;\n\t/** undefined = diagnóstico de proyecto entero (p.ej. un test que falla), no de un fichero. */\n\truta?: string;\n\tlinea?: number;\n\tcolumna?: number;\n\tregla?: string;\n\tmensaje: string;\n}\n\n/** Un diagnóstico sin el campo `comprobador` — lo añade quien ejecuta, no quien parsea. */\nexport type DiagnosticoParcial = Omit<Diagnostico, \"comprobador\">;\n\n/** Todos los diagnósticos de un fichero (o del proyecto entero si `ruta` es undefined). */\nexport interface GrupoPorFichero {\n\truta?: string;\n\tdiagnosticos: Diagnostico[];\n}\n\n/** Salida cruda de ejecutar un comprobador. */\nexport interface SalidaComando {\n\tstdout: string;\n\tstderr: string;\n\tcode: number;\n}\n\n/** Un comprobador detectado y listo para ejecutar. */\nexport interface Comprobador {\n\tid: string;\n\tetiqueta: string;\n\tcomando: string;\n\targs: string[];\n\tcwd: string;\n\tparsear: (salida: SalidaComando, cwd: string) => DiagnosticoParcial[];\n\t/**\n\t * \"fichero\" = sus diagnósticos vienen con `ruta` (lint, typecheck…);\n\t * \"proyecto\" = sin `ruta`, del proyecto entero (un test runner). Decide\n\t * qué comprobadores se re-ejecutan al verificar el arreglo de UN fichero:\n\t * hace falta correrlos TODOS los de \"fichero\", no solo el que originó el\n\t * diagnóstico — si no, un arreglo de lint que rompe el typecheck del mismo\n\t * fichero pasaría como limpio porque nunca se vuelve a correr tsc.\n\t */\n\talcance: \"fichero\" | \"proyecto\";\n}\n\n/** Resultado de mirar qué hay en el proyecto. */\nexport interface Deteccion {\n\tcomprobadores: Comprobador[];\n\t/** Cada sitio comprobado, se haya encontrado algo o no — para cuando no hay ninguno. */\n\tmirado: string[];\n}\n"]}
1
+ {"version":3,"file":"tipos.d.ts","sourceRoot":"","sources":["../../../src/core/limpieza/tipos.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,sEAAsE;AACtE,MAAM,WAAW,WAAW;IAC3B,uFAAuF;IACvF,WAAW,EAAE,MAAM,CAAC;IACpB,8FAA8F;IAC9F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACxC,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,2FAA2F;AAC3F,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAElE,2FAA2F;AAC3F,MAAM,WAAW,eAAe;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,WAAW,EAAE,CAAC;CAC5B;AAED,+CAA+C;AAC/C,MAAM,WAAW,aAAa;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACb;AAED,sDAAsD;AACtD,MAAM,WAAW,WAAW;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,KAAK,kBAAkB,EAAE,CAAC;IACtE;;;;;;;OAOG;IACH,OAAO,EAAE,SAAS,GAAG,UAAU,CAAC;IAChC,0FAA0F;IAC1F,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,iDAAiD;AACjD,MAAM,WAAW,SAAS;IACzB,aAAa,EAAE,WAAW,EAAE,CAAC;IAC7B,wFAAwF;IACxF,MAAM,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAC;CACd;AAED,6DAA6D;AAC7D,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CACf;AAED,kDAAkD;AAClD,MAAM,MAAM,iBAAiB,GAAG;IAAE,SAAS,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,SAAS,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tipos.js","sourceRoot":"","sources":["../../../src/core/limpieza/tipos.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG","sourcesContent":["/**\n * Tipos compartidos de `ada-cli cleanse`.\n *\n * Los nombres de campo van en español ({@link Diagnostico}: ruta, linea,\n * regla, mensaje) porque ese es el contrato que pide la tarea y el que\n * respeta el resto del módulo.\n */\n\n/** Un problema accionable que reportó un comprobador del proyecto. */\nexport interface Diagnostico {\n\t/** id del comprobador que lo generó — permite re-ejecutar solo ese tras un arreglo. */\n\tcomprobador: string;\n\t/** undefined = diagnóstico de proyecto entero (p.ej. un test que falla), no de un fichero. */\n\truta?: string;\n\tlinea?: number;\n\tcolumna?: number;\n\tregla?: string;\n\tmensaje: string;\n}\n\n/** Un diagnóstico sin el campo `comprobador` — lo añade quien ejecuta, no quien parsea. */\nexport type DiagnosticoParcial = Omit<Diagnostico, \"comprobador\">;\n\n/** Todos los diagnósticos de un fichero (o del proyecto entero si `ruta` es undefined). */\nexport interface GrupoPorFichero {\n\truta?: string;\n\tdiagnosticos: Diagnostico[];\n}\n\n/** Salida cruda de ejecutar un comprobador. */\nexport interface SalidaComando {\n\tstdout: string;\n\tstderr: string;\n\tcode: number;\n}\n\n/** Un comprobador detectado y listo para ejecutar. */\nexport interface Comprobador {\n\tid: string;\n\tetiqueta: string;\n\tcomando: string;\n\targs: string[];\n\tcwd: string;\n\tparsear: (salida: SalidaComando, cwd: string) => DiagnosticoParcial[];\n\t/**\n\t * \"fichero\" = sus diagnósticos vienen con `ruta` (lint, typecheck…);\n\t * \"proyecto\" = sin `ruta`, del proyecto entero (un test runner). Decide\n\t * qué comprobadores se re-ejecutan al verificar el arreglo de UN fichero:\n\t * hace falta correrlos TODOS los de \"fichero\", no solo el que originó el\n\t * diagnóstico — si no, un arreglo de lint que rompe el typecheck del mismo\n\t * fichero pasaría como limpio porque nunca se vuelve a correr tsc.\n\t */\n\talcance: \"fichero\" | \"proyecto\";\n}\n\n/** Resultado de mirar qué hay en el proyecto. */\nexport interface Deteccion {\n\tcomprobadores: Comprobador[];\n\t/** Cada sitio comprobado, se haya encontrado algo o no — para cuando no hay ninguno. */\n\tmirado: string[];\n}\n"]}
1
+ {"version":3,"file":"tipos.js","sourceRoot":"","sources":["../../../src/core/limpieza/tipos.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -35,6 +35,13 @@ export interface ClienteLsp {
35
35
  cerrar(): Promise<void>;
36
36
  /** PID del proceso del servidor. Solo para diagnóstico/pruebas: comprobar que no queda vivo tras `cerrar()`. */
37
37
  readonly pid: number | undefined;
38
+ /**
39
+ * `capabilities` tal como el servidor los declaró en su respuesta
40
+ * `initialize`. Quien quiera saber si el servidor soporta una capacidad
41
+ * (p. ej. `textDocument.formatting` para format-on-write) la lee aquí en
42
+ * vez de disparar la petición a ciegas y distinguir "error" de "null".
43
+ */
44
+ readonly capacidades: Record<string, unknown> | undefined;
38
45
  }
39
46
  declare function uriDeRuta(ruta: string): string;
40
47
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"cliente.d.ts","sourceRoot":"","sources":["../../../src/core/lsp/cliente.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAaH,sGAAqG;AACrG,qBAAa,QAAS,SAAQ,KAAK;IAGlC,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;IAE9D,YAAY,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,EAIhF;CACD;AAED,8GAA6G;AAC7G,MAAM,WAAW,UAAU;IAC1B,2GAA0G;IAC1G,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3E,uEAAsE;IACtE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACjD;;;;;OAKG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,iHAAgH;IAChH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAgFD,iBAAS,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGvC;AAED;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAC7B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE;IAAE,uBAAuB,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C,OAAO,CAAC,UAAU,CAAC,CAuHrB;AAED,OAAO,EAAE,SAAS,EAAE,CAAC","sourcesContent":["/**\n * Cliente JSON-RPC sobre stdio contra un servidor de lenguaje (LSP).\n *\n * Fichero nuestro (coste cero de fork): el LanguageService de TypeScript en\n * `core/edicion/tipos.ts` cubre un único lenguaje sin salir de proceso; esto\n * es lo que hace falta para los demás — hablar el protocolo LSP con un\n * binario externo que arranca y para por comando.\n *\n * Decisión deliberada de diseño (ponytail): un servidor por LLAMADA, no un\n * pool de servidores vivos entre llamadas. Arrancar `gopls`/`rust-analyzer`\n * cuesta cientos de ms, pero un servidor que sobrevive a la llamada que lo\n * arrancó es exactamente el \"proceso huérfano\" que la puerta de este hueco\n * prohíbe, y mantener un pool con temporizador de inactividad es la mitad de\n * `client.ts` del competidor (1601 líneas) para un problema que aquí no\n * existe todavía. Subir a un pool es la mejora natural si el coste de\n * relanzar por llamada llega a notarse.\n */\n\nimport { type ChildProcessWithoutNullStreams, spawn } from \"node:child_process\";\n\n/** Cabecera LSP: los mensajes van precedidos de `Content-Length` en BYTES, no en caracteres. */\nconst SEPARADOR = \"\\r\\n\\r\\n\";\nconst PATRON_LONGITUD = /Content-Length:\\s*(\\d+)/i;\n\ninterface PeticionPendiente {\n\tresolver: (valor: unknown) => void;\n\trechazar: (error: Error) => void;\n}\n\n/** Lo que de verdad puede fallar al hablar con el servidor: nunca se colapsa en un único \"error\". */\nexport class ErrorLsp extends Error {\n\t// Campo explícito, no propiedad de parámetro: el proyecto compila con\n\t// `erasableSyntaxOnly`, que prohíbe la forma corta por no ser borrable.\n\treadonly tipo: \"proceso_murio\" | \"timeout\" | \"rpc\" | \"cierre\";\n\n\tconstructor(message: string, tipo: \"proceso_murio\" | \"timeout\" | \"rpc\" | \"cierre\") {\n\t\tsuper(message);\n\t\tthis.name = \"ErrorLsp\";\n\t\tthis.tipo = tipo;\n\t}\n}\n\n/** Conexión JSON-RPC ya inicializada (handshake `initialize`/`initialized` hecho) contra un servidor LSP. */\nexport interface ClienteLsp {\n\t/** Petición LSP que espera respuesta. Rechaza con `ErrorLsp` si el proceso muere o se agota el tiempo. */\n\tenviar<T>(metodo: string, params: unknown, timeoutMs?: number): Promise<T>;\n\t/** Notificación LSP sin respuesta (p. ej. `textDocument/didOpen`). */\n\tnotificar(metodo: string, params: unknown): void;\n\t/**\n\t * Cierre limpio: `shutdown` (petición) → `exit` (notificación) → espera a que\n\t * el proceso termine solo → `SIGKILL` si no lo ha hecho a tiempo.\n\t * Al resolver, el proceso YA NO existe — es la garantía que pide la puerta\n\t * de \"ningún servidor queda vivo al terminar\".\n\t */\n\tcerrar(): Promise<void>;\n\t/** PID del proceso del servidor. Solo para diagnóstico/pruebas: comprobar que no queda vivo tras `cerrar()`. */\n\treadonly pid: number | undefined;\n}\n\nfunction escribirMensaje(proc: ChildProcessWithoutNullStreams, cuerpo: unknown): void {\n\tconst json = JSON.stringify(cuerpo);\n\t// Content-Length cuenta BYTES UTF-8, no unidades de código: un símbolo o\n\t// comentario no-ASCII en el nombre nuevo de un rename lo desincroniza si se\n\t// mide en caracteres.\n\tconst bytes = Buffer.byteLength(json, \"utf-8\");\n\tproc.stdin.write(`Content-Length: ${bytes}${SEPARADOR}${json}`);\n}\n\n/** Trocea el flujo de stdout del servidor en mensajes JSON-RPC completos, cabecera incluida. */\nclass Trocador {\n\tprivate buffer = Buffer.alloc(0);\n\n\tagregar(chunk: Buffer): unknown[] {\n\t\tthis.buffer = Buffer.concat([this.buffer, chunk]);\n\t\tconst mensajes: unknown[] = [];\n\t\tfor (;;) {\n\t\t\tconst finCabecera = this.buffer.indexOf(SEPARADOR);\n\t\t\tif (finCabecera === -1) return mensajes;\n\t\t\tconst cabecera = this.buffer.subarray(0, finCabecera).toString(\"utf-8\");\n\t\t\tconst coincidencia = cabecera.match(PATRON_LONGITUD);\n\t\t\tif (!coincidencia) {\n\t\t\t\t// Cabecera sin Content-Length: no hay forma fiable de saber dónde\n\t\t\t\t// empieza el siguiente mensaje. Se descarta hasta el separador y se\n\t\t\t\t// sigue — un servidor mal comportado no debe colgar el cliente.\n\t\t\t\tthis.buffer = this.buffer.subarray(finCabecera + SEPARADOR.length);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst longitud = Number(coincidencia[1]);\n\t\t\tconst inicioCuerpo = finCabecera + SEPARADOR.length;\n\t\t\tif (this.buffer.length < inicioCuerpo + longitud) return mensajes; // cuerpo incompleto, esperar más datos\n\t\t\tconst cuerpo = this.buffer.subarray(inicioCuerpo, inicioCuerpo + longitud).toString(\"utf-8\");\n\t\t\tthis.buffer = this.buffer.subarray(inicioCuerpo + longitud);\n\t\t\ttry {\n\t\t\t\tmensajes.push(JSON.parse(cuerpo));\n\t\t\t} catch {\n\t\t\t\t// JSON roto de un servidor concreto no debe tirar abajo al cliente:\n\t\t\t\t// se ignora ese mensaje y se sigue troceando el resto del flujo.\n\t\t\t}\n\t\t}\n\t}\n}\n\nconst ESPERA_SALIDA_MS = 2000;\n\n/** Espera a que el proceso emita `exit`, o hasta `timeoutMs`. `true` = salió solo. */\nfunction esperarSalida(proc: ChildProcessWithoutNullStreams, timeoutMs: number): Promise<boolean> {\n\tif (proc.exitCode !== null || proc.signalCode !== null) return Promise.resolve(true);\n\treturn new Promise((resolver) => {\n\t\tconst temporizador = setTimeout(() => {\n\t\t\tproc.off(\"exit\", alSalir);\n\t\t\tresolver(false);\n\t\t}, timeoutMs);\n\t\tfunction alSalir() {\n\t\t\tclearTimeout(temporizador);\n\t\t\tresolver(true);\n\t\t}\n\t\tproc.once(\"exit\", alSalir);\n\t});\n}\n\n/** Capacidades mínimas que necesitan rename/symbols/definition/references. Ampliar aquí, no en cada tool. */\nconst CAPACIDADES_CLIENTE = {\n\ttextDocument: {\n\t\tsynchronization: { didSave: true, dynamicRegistration: false },\n\t\tdefinition: { dynamicRegistration: false, linkSupport: false },\n\t\treferences: { dynamicRegistration: false },\n\t\tdocumentSymbol: { dynamicRegistration: false, hierarchicalDocumentSymbolSupport: true },\n\t\trename: { dynamicRegistration: false, prepareSupport: false },\n\t},\n\tworkspace: {\n\t\tapplyEdit: false, // el cliente aplica el WorkspaceEdit él mismo (edits.ts); no delega en el servidor\n\t\tworkspaceEdit: { documentChanges: true, resourceOperations: [] },\n\t\tworkspaceFolders: true,\n\t\tsymbol: { dynamicRegistration: false },\n\t},\n} as const;\n\nfunction uriDeRuta(ruta: string): string {\n\t// file:// + porcentaje-escapado, igual que hace cualquier cliente LSP normal.\n\treturn `file://${encodeURI(ruta).replace(/#/g, \"%23\")}`;\n}\n\n/**\n * Arranca `comando` como servidor LSP, hace el handshake `initialize` +\n * `initialized` y devuelve un cliente listo para usar.\n *\n * Lanza `ErrorLsp` (nunca falla en silencio) si el binario no arranca o el\n * `initialize` no responde a tiempo — quien llama distingue \"no se pudo\n * hablar con el servidor\" de \"el servidor contestó vacío\".\n */\nexport async function conectar(\n\tcomando: string,\n\targs: string[],\n\tcwd: string,\n\topciones?: { timeoutInicializacionMs?: number },\n): Promise<ClienteLsp> {\n\tconst proc = spawn(comando, args, { cwd, stdio: [\"pipe\", \"pipe\", \"pipe\"] });\n\n\tconst pendientes = new Map<number, PeticionPendiente>();\n\tlet siguienteId = 1;\n\tlet cerrado = false;\n\n\tconst trocador = new Trocador();\n\tproc.stdout.on(\"data\", (chunk: Buffer) => {\n\t\tfor (const mensaje of trocador.agregar(chunk)) manejarMensaje(mensaje as Record<string, unknown>);\n\t});\n\n\t// stderr de un servidor LSP suele ser su log, no un fallo: se descarta salvo\n\t// que el proceso muera, momento en el que sí importa para el mensaje de error.\n\tlet ultimoStderr = \"\";\n\tproc.stderr.on(\"data\", (chunk: Buffer) => {\n\t\tultimoStderr = chunk.toString(\"utf-8\").slice(-2000);\n\t});\n\n\tfunction manejarMensaje(mensaje: Record<string, unknown>): void {\n\t\tif (typeof mensaje.id !== \"number\") return; // notificación del servidor (p. ej. publishDiagnostics): se ignora, no la necesitamos\n\t\tconst pendiente = pendientes.get(mensaje.id);\n\t\tif (!pendiente) return;\n\t\tpendientes.delete(mensaje.id);\n\t\tif (mensaje.error) {\n\t\t\tconst err = mensaje.error as { message?: string; code?: number };\n\t\t\tpendiente.rechazar(\n\t\t\t\tnew ErrorLsp(`el servidor respondió un error: ${err.message ?? JSON.stringify(err)}`, \"rpc\"),\n\t\t\t);\n\t\t} else {\n\t\t\tpendiente.resolver(mensaje.result);\n\t\t}\n\t}\n\n\tfunction rechazarTodoPendiente(error: Error): void {\n\t\tfor (const p of pendientes.values()) p.rechazar(error);\n\t\tpendientes.clear();\n\t}\n\n\tlet procesoMuerto: Error | null = null;\n\tproc.once(\"exit\", (codigo, senal) => {\n\t\tif (!cerrado) {\n\t\t\tprocesoMuerto = new ErrorLsp(\n\t\t\t\t`el servidor de lenguaje terminó solo (código ${codigo}, señal ${senal}): ${ultimoStderr || \"sin salida en stderr\"}`,\n\t\t\t\t\"proceso_murio\",\n\t\t\t);\n\t\t\trechazarTodoPendiente(procesoMuerto);\n\t\t}\n\t});\n\tproc.once(\"error\", (error) => {\n\t\tprocesoMuerto = new ErrorLsp(`no se pudo arrancar «${comando}»: ${error.message}`, \"proceso_murio\");\n\t\trechazarTodoPendiente(procesoMuerto);\n\t});\n\n\tfunction enviar<T>(metodo: string, params: unknown, timeoutMs = 30_000): Promise<T> {\n\t\tif (procesoMuerto) return Promise.reject(procesoMuerto);\n\t\tconst id = siguienteId++;\n\t\treturn new Promise<T>((resolver, rechazar) => {\n\t\t\tconst temporizador = setTimeout(() => {\n\t\t\t\tpendientes.delete(id);\n\t\t\t\trechazar(new ErrorLsp(`«${metodo}» no respondió en ${timeoutMs}ms`, \"timeout\"));\n\t\t\t}, timeoutMs);\n\t\t\tpendientes.set(id, {\n\t\t\t\tresolver: (v) => {\n\t\t\t\t\tclearTimeout(temporizador);\n\t\t\t\t\tresolver(v as T);\n\t\t\t\t},\n\t\t\t\trechazar: (e) => {\n\t\t\t\t\tclearTimeout(temporizador);\n\t\t\t\t\trechazar(e);\n\t\t\t\t},\n\t\t\t});\n\t\t\tescribirMensaje(proc, { jsonrpc: \"2.0\", id, method: metodo, params });\n\t\t});\n\t}\n\n\tfunction notificar(metodo: string, params: unknown): void {\n\t\tif (procesoMuerto) return;\n\t\tescribirMensaje(proc, { jsonrpc: \"2.0\", method: metodo, params });\n\t}\n\n\tasync function cerrar(): Promise<void> {\n\t\tif (cerrado) return;\n\t\tcerrado = true;\n\t\tif (!procesoMuerto) {\n\t\t\t// Handshake formal primero: le da al servidor la oportunidad de soltar\n\t\t\t// ficheros de bloqueo, sockets, etc. antes del kill.\n\t\t\tawait enviar(\"shutdown\", null, 3000).catch(() => {});\n\t\t\tnotificar(\"exit\", undefined);\n\t\t}\n\t\trechazarTodoPendiente(new ErrorLsp(\"cliente LSP cerrado\", \"cierre\"));\n\t\tif (await esperarSalida(proc, ESPERA_SALIDA_MS)) return;\n\t\tproc.kill(\"SIGKILL\");\n\t\tawait esperarSalida(proc, ESPERA_SALIDA_MS);\n\t\t// Si tras SIGKILL sigue sin confirmar salida (proceso zombi, señal\n\t\t// bloqueada) no hay nada más que este cliente pueda hacer: se ha hecho\n\t\t// lo posible y se devuelve el control. Quien orquesta varios clientes\n\t\t// puede comprobar el pid con `process.kill(-1, 0)` para decidir si avisa.\n\t}\n\n\ttry {\n\t\tconst timeoutInit = opciones?.timeoutInicializacionMs ?? 15_000;\n\t\tawait enviar(\n\t\t\t\"initialize\",\n\t\t\t{\n\t\t\t\tprocessId: process.pid,\n\t\t\t\trootUri: uriDeRuta(cwd),\n\t\t\t\tworkspaceFolders: [{ uri: uriDeRuta(cwd), name: cwd }],\n\t\t\t\tcapabilities: CAPACIDADES_CLIENTE,\n\t\t\t},\n\t\t\ttimeoutInit,\n\t\t);\n\t\tnotificar(\"initialized\", {});\n\t} catch (error) {\n\t\tawait cerrar();\n\t\tthrow error;\n\t}\n\n\treturn { enviar, notificar, cerrar, pid: proc.pid };\n}\n\nexport { uriDeRuta };\n"]}
1
+ {"version":3,"file":"cliente.d.ts","sourceRoot":"","sources":["../../../src/core/lsp/cliente.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAaH,qGAAqG;AACrG,qBAAa,QAAS,SAAQ,KAAK;IAGlC,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;gBAElD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ;CAKjF;AAED,6GAA6G;AAC7G,MAAM,WAAW,UAAU;IAC1B,0GAA0G;IAC1G,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3E,sEAAsE;IACtE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACjD;;;;;OAKG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,gHAAgH;IAChH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAC1D;AAgFD,iBAAS,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGvC;AAED;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAC7B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE;IAAE,uBAAuB,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C,OAAO,CAAC,UAAU,CAAC,CAyHrB;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -212,21 +212,23 @@ export async function conectar(comando, args, cwd, opciones) {
212
212
  // lo posible y se devuelve el control. Quien orquesta varios clientes
213
213
  // puede comprobar el pid con `process.kill(-1, 0)` para decidir si avisa.
214
214
  }
215
+ let capacidades;
215
216
  try {
216
217
  const timeoutInit = opciones?.timeoutInicializacionMs ?? 15_000;
217
- await enviar("initialize", {
218
+ const init = await enviar("initialize", {
218
219
  processId: process.pid,
219
220
  rootUri: uriDeRuta(cwd),
220
221
  workspaceFolders: [{ uri: uriDeRuta(cwd), name: cwd }],
221
222
  capabilities: CAPACIDADES_CLIENTE,
222
223
  }, timeoutInit);
224
+ capacidades = typeof init === "object" && init !== null ? init : undefined;
223
225
  notificar("initialized", {});
224
226
  }
225
227
  catch (error) {
226
228
  await cerrar();
227
229
  throw error;
228
230
  }
229
- return { enviar, notificar, cerrar, pid: proc.pid };
231
+ return { enviar, notificar, cerrar, pid: proc.pid, capacidades };
230
232
  }
231
233
  export { uriDeRuta };
232
234
  //# sourceMappingURL=cliente.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cliente.js","sourceRoot":"","sources":["../../../src/core/lsp/cliente.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Cliente JSON-RPC sobre stdio contra un servidor de lenguaje (LSP).\n *\n * Fichero nuestro (coste cero de fork): el LanguageService de TypeScript en\n * `core/edicion/tipos.ts` cubre un único lenguaje sin salir de proceso; esto\n * es lo que hace falta para los demás — hablar el protocolo LSP con un\n * binario externo que arranca y para por comando.\n *\n * Decisión deliberada de diseño (ponytail): un servidor por LLAMADA, no un\n * pool de servidores vivos entre llamadas. Arrancar `gopls`/`rust-analyzer`\n * cuesta cientos de ms, pero un servidor que sobrevive a la llamada que lo\n * arrancó es exactamente el \"proceso huérfano\" que la puerta de este hueco\n * prohíbe, y mantener un pool con temporizador de inactividad es la mitad de\n * `client.ts` del competidor (1601 líneas) para un problema que aquí no\n * existe todavía. Subir a un pool es la mejora natural si el coste de\n * relanzar por llamada llega a notarse.\n */\n\nimport { type ChildProcessWithoutNullStreams, spawn } from \"node:child_process\";\n\n/** Cabecera LSP: los mensajes van precedidos de `Content-Length` en BYTES, no en caracteres. */\nconst SEPARADOR = \"\\r\\n\\r\\n\";\nconst PATRON_LONGITUD = /Content-Length:\\s*(\\d+)/i;\n\ninterface PeticionPendiente {\n\tresolver: (valor: unknown) => void;\n\trechazar: (error: Error) => void;\n}\n\n/** Lo que de verdad puede fallar al hablar con el servidor: nunca se colapsa en un único \"error\". */\nexport class ErrorLsp extends Error {\n\t// Campo explícito, no propiedad de parámetro: el proyecto compila con\n\t// `erasableSyntaxOnly`, que prohíbe la forma corta por no ser borrable.\n\treadonly tipo: \"proceso_murio\" | \"timeout\" | \"rpc\" | \"cierre\";\n\n\tconstructor(message: string, tipo: \"proceso_murio\" | \"timeout\" | \"rpc\" | \"cierre\") {\n\t\tsuper(message);\n\t\tthis.name = \"ErrorLsp\";\n\t\tthis.tipo = tipo;\n\t}\n}\n\n/** Conexión JSON-RPC ya inicializada (handshake `initialize`/`initialized` hecho) contra un servidor LSP. */\nexport interface ClienteLsp {\n\t/** Petición LSP que espera respuesta. Rechaza con `ErrorLsp` si el proceso muere o se agota el tiempo. */\n\tenviar<T>(metodo: string, params: unknown, timeoutMs?: number): Promise<T>;\n\t/** Notificación LSP sin respuesta (p. ej. `textDocument/didOpen`). */\n\tnotificar(metodo: string, params: unknown): void;\n\t/**\n\t * Cierre limpio: `shutdown` (petición) → `exit` (notificación) → espera a que\n\t * el proceso termine solo → `SIGKILL` si no lo ha hecho a tiempo.\n\t * Al resolver, el proceso YA NO existe — es la garantía que pide la puerta\n\t * de \"ningún servidor queda vivo al terminar\".\n\t */\n\tcerrar(): Promise<void>;\n\t/** PID del proceso del servidor. Solo para diagnóstico/pruebas: comprobar que no queda vivo tras `cerrar()`. */\n\treadonly pid: number | undefined;\n}\n\nfunction escribirMensaje(proc: ChildProcessWithoutNullStreams, cuerpo: unknown): void {\n\tconst json = JSON.stringify(cuerpo);\n\t// Content-Length cuenta BYTES UTF-8, no unidades de código: un símbolo o\n\t// comentario no-ASCII en el nombre nuevo de un rename lo desincroniza si se\n\t// mide en caracteres.\n\tconst bytes = Buffer.byteLength(json, \"utf-8\");\n\tproc.stdin.write(`Content-Length: ${bytes}${SEPARADOR}${json}`);\n}\n\n/** Trocea el flujo de stdout del servidor en mensajes JSON-RPC completos, cabecera incluida. */\nclass Trocador {\n\tprivate buffer = Buffer.alloc(0);\n\n\tagregar(chunk: Buffer): unknown[] {\n\t\tthis.buffer = Buffer.concat([this.buffer, chunk]);\n\t\tconst mensajes: unknown[] = [];\n\t\tfor (;;) {\n\t\t\tconst finCabecera = this.buffer.indexOf(SEPARADOR);\n\t\t\tif (finCabecera === -1) return mensajes;\n\t\t\tconst cabecera = this.buffer.subarray(0, finCabecera).toString(\"utf-8\");\n\t\t\tconst coincidencia = cabecera.match(PATRON_LONGITUD);\n\t\t\tif (!coincidencia) {\n\t\t\t\t// Cabecera sin Content-Length: no hay forma fiable de saber dónde\n\t\t\t\t// empieza el siguiente mensaje. Se descarta hasta el separador y se\n\t\t\t\t// sigue — un servidor mal comportado no debe colgar el cliente.\n\t\t\t\tthis.buffer = this.buffer.subarray(finCabecera + SEPARADOR.length);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst longitud = Number(coincidencia[1]);\n\t\t\tconst inicioCuerpo = finCabecera + SEPARADOR.length;\n\t\t\tif (this.buffer.length < inicioCuerpo + longitud) return mensajes; // cuerpo incompleto, esperar más datos\n\t\t\tconst cuerpo = this.buffer.subarray(inicioCuerpo, inicioCuerpo + longitud).toString(\"utf-8\");\n\t\t\tthis.buffer = this.buffer.subarray(inicioCuerpo + longitud);\n\t\t\ttry {\n\t\t\t\tmensajes.push(JSON.parse(cuerpo));\n\t\t\t} catch {\n\t\t\t\t// JSON roto de un servidor concreto no debe tirar abajo al cliente:\n\t\t\t\t// se ignora ese mensaje y se sigue troceando el resto del flujo.\n\t\t\t}\n\t\t}\n\t}\n}\n\nconst ESPERA_SALIDA_MS = 2000;\n\n/** Espera a que el proceso emita `exit`, o hasta `timeoutMs`. `true` = salió solo. */\nfunction esperarSalida(proc: ChildProcessWithoutNullStreams, timeoutMs: number): Promise<boolean> {\n\tif (proc.exitCode !== null || proc.signalCode !== null) return Promise.resolve(true);\n\treturn new Promise((resolver) => {\n\t\tconst temporizador = setTimeout(() => {\n\t\t\tproc.off(\"exit\", alSalir);\n\t\t\tresolver(false);\n\t\t}, timeoutMs);\n\t\tfunction alSalir() {\n\t\t\tclearTimeout(temporizador);\n\t\t\tresolver(true);\n\t\t}\n\t\tproc.once(\"exit\", alSalir);\n\t});\n}\n\n/** Capacidades mínimas que necesitan rename/symbols/definition/references. Ampliar aquí, no en cada tool. */\nconst CAPACIDADES_CLIENTE = {\n\ttextDocument: {\n\t\tsynchronization: { didSave: true, dynamicRegistration: false },\n\t\tdefinition: { dynamicRegistration: false, linkSupport: false },\n\t\treferences: { dynamicRegistration: false },\n\t\tdocumentSymbol: { dynamicRegistration: false, hierarchicalDocumentSymbolSupport: true },\n\t\trename: { dynamicRegistration: false, prepareSupport: false },\n\t},\n\tworkspace: {\n\t\tapplyEdit: false, // el cliente aplica el WorkspaceEdit él mismo (edits.ts); no delega en el servidor\n\t\tworkspaceEdit: { documentChanges: true, resourceOperations: [] },\n\t\tworkspaceFolders: true,\n\t\tsymbol: { dynamicRegistration: false },\n\t},\n} as const;\n\nfunction uriDeRuta(ruta: string): string {\n\t// file:// + porcentaje-escapado, igual que hace cualquier cliente LSP normal.\n\treturn `file://${encodeURI(ruta).replace(/#/g, \"%23\")}`;\n}\n\n/**\n * Arranca `comando` como servidor LSP, hace el handshake `initialize` +\n * `initialized` y devuelve un cliente listo para usar.\n *\n * Lanza `ErrorLsp` (nunca falla en silencio) si el binario no arranca o el\n * `initialize` no responde a tiempo — quien llama distingue \"no se pudo\n * hablar con el servidor\" de \"el servidor contestó vacío\".\n */\nexport async function conectar(\n\tcomando: string,\n\targs: string[],\n\tcwd: string,\n\topciones?: { timeoutInicializacionMs?: number },\n): Promise<ClienteLsp> {\n\tconst proc = spawn(comando, args, { cwd, stdio: [\"pipe\", \"pipe\", \"pipe\"] });\n\n\tconst pendientes = new Map<number, PeticionPendiente>();\n\tlet siguienteId = 1;\n\tlet cerrado = false;\n\n\tconst trocador = new Trocador();\n\tproc.stdout.on(\"data\", (chunk: Buffer) => {\n\t\tfor (const mensaje of trocador.agregar(chunk)) manejarMensaje(mensaje as Record<string, unknown>);\n\t});\n\n\t// stderr de un servidor LSP suele ser su log, no un fallo: se descarta salvo\n\t// que el proceso muera, momento en el que sí importa para el mensaje de error.\n\tlet ultimoStderr = \"\";\n\tproc.stderr.on(\"data\", (chunk: Buffer) => {\n\t\tultimoStderr = chunk.toString(\"utf-8\").slice(-2000);\n\t});\n\n\tfunction manejarMensaje(mensaje: Record<string, unknown>): void {\n\t\tif (typeof mensaje.id !== \"number\") return; // notificación del servidor (p. ej. publishDiagnostics): se ignora, no la necesitamos\n\t\tconst pendiente = pendientes.get(mensaje.id);\n\t\tif (!pendiente) return;\n\t\tpendientes.delete(mensaje.id);\n\t\tif (mensaje.error) {\n\t\t\tconst err = mensaje.error as { message?: string; code?: number };\n\t\t\tpendiente.rechazar(\n\t\t\t\tnew ErrorLsp(`el servidor respondió un error: ${err.message ?? JSON.stringify(err)}`, \"rpc\"),\n\t\t\t);\n\t\t} else {\n\t\t\tpendiente.resolver(mensaje.result);\n\t\t}\n\t}\n\n\tfunction rechazarTodoPendiente(error: Error): void {\n\t\tfor (const p of pendientes.values()) p.rechazar(error);\n\t\tpendientes.clear();\n\t}\n\n\tlet procesoMuerto: Error | null = null;\n\tproc.once(\"exit\", (codigo, senal) => {\n\t\tif (!cerrado) {\n\t\t\tprocesoMuerto = new ErrorLsp(\n\t\t\t\t`el servidor de lenguaje terminó solo (código ${codigo}, señal ${senal}): ${ultimoStderr || \"sin salida en stderr\"}`,\n\t\t\t\t\"proceso_murio\",\n\t\t\t);\n\t\t\trechazarTodoPendiente(procesoMuerto);\n\t\t}\n\t});\n\tproc.once(\"error\", (error) => {\n\t\tprocesoMuerto = new ErrorLsp(`no se pudo arrancar «${comando}»: ${error.message}`, \"proceso_murio\");\n\t\trechazarTodoPendiente(procesoMuerto);\n\t});\n\n\tfunction enviar<T>(metodo: string, params: unknown, timeoutMs = 30_000): Promise<T> {\n\t\tif (procesoMuerto) return Promise.reject(procesoMuerto);\n\t\tconst id = siguienteId++;\n\t\treturn new Promise<T>((resolver, rechazar) => {\n\t\t\tconst temporizador = setTimeout(() => {\n\t\t\t\tpendientes.delete(id);\n\t\t\t\trechazar(new ErrorLsp(`«${metodo}» no respondió en ${timeoutMs}ms`, \"timeout\"));\n\t\t\t}, timeoutMs);\n\t\t\tpendientes.set(id, {\n\t\t\t\tresolver: (v) => {\n\t\t\t\t\tclearTimeout(temporizador);\n\t\t\t\t\tresolver(v as T);\n\t\t\t\t},\n\t\t\t\trechazar: (e) => {\n\t\t\t\t\tclearTimeout(temporizador);\n\t\t\t\t\trechazar(e);\n\t\t\t\t},\n\t\t\t});\n\t\t\tescribirMensaje(proc, { jsonrpc: \"2.0\", id, method: metodo, params });\n\t\t});\n\t}\n\n\tfunction notificar(metodo: string, params: unknown): void {\n\t\tif (procesoMuerto) return;\n\t\tescribirMensaje(proc, { jsonrpc: \"2.0\", method: metodo, params });\n\t}\n\n\tasync function cerrar(): Promise<void> {\n\t\tif (cerrado) return;\n\t\tcerrado = true;\n\t\tif (!procesoMuerto) {\n\t\t\t// Handshake formal primero: le da al servidor la oportunidad de soltar\n\t\t\t// ficheros de bloqueo, sockets, etc. antes del kill.\n\t\t\tawait enviar(\"shutdown\", null, 3000).catch(() => {});\n\t\t\tnotificar(\"exit\", undefined);\n\t\t}\n\t\trechazarTodoPendiente(new ErrorLsp(\"cliente LSP cerrado\", \"cierre\"));\n\t\tif (await esperarSalida(proc, ESPERA_SALIDA_MS)) return;\n\t\tproc.kill(\"SIGKILL\");\n\t\tawait esperarSalida(proc, ESPERA_SALIDA_MS);\n\t\t// Si tras SIGKILL sigue sin confirmar salida (proceso zombi, señal\n\t\t// bloqueada) no hay nada más que este cliente pueda hacer: se ha hecho\n\t\t// lo posible y se devuelve el control. Quien orquesta varios clientes\n\t\t// puede comprobar el pid con `process.kill(-1, 0)` para decidir si avisa.\n\t}\n\n\ttry {\n\t\tconst timeoutInit = opciones?.timeoutInicializacionMs ?? 15_000;\n\t\tawait enviar(\n\t\t\t\"initialize\",\n\t\t\t{\n\t\t\t\tprocessId: process.pid,\n\t\t\t\trootUri: uriDeRuta(cwd),\n\t\t\t\tworkspaceFolders: [{ uri: uriDeRuta(cwd), name: cwd }],\n\t\t\t\tcapabilities: CAPACIDADES_CLIENTE,\n\t\t\t},\n\t\t\ttimeoutInit,\n\t\t);\n\t\tnotificar(\"initialized\", {});\n\t} catch (error) {\n\t\tawait cerrar();\n\t\tthrow error;\n\t}\n\n\treturn { enviar, notificar, cerrar, pid: proc.pid };\n}\n\nexport { uriDeRuta };\n"]}
1
+ {"version":3,"file":"cliente.js","sourceRoot":"","sources":["../../../src/core/lsp/cliente.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAuC,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhF,gGAAgG;AAChG,MAAM,SAAS,GAAG,UAAU,CAAC;AAC7B,MAAM,eAAe,GAAG,0BAA0B,CAAC;AAOnD,qGAAqG;AACrG,MAAM,OAAO,QAAS,SAAQ,KAAK;IAClC,sEAAsE;IACtE,wEAAwE;IAC/D,IAAI,CAAiD;IAE9D,YAAY,OAAe,EAAE,IAAoD;QAChF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;CACD;AA0BD,SAAS,eAAe,CAAC,IAAoC,EAAE,MAAe;IAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACpC,yEAAyE;IACzE,4EAA4E;IAC5E,sBAAsB;IACtB,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,KAAK,GAAG,SAAS,GAAG,IAAI,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,gGAAgG;AAChG,MAAM,QAAQ;IACL,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEjC,OAAO,CAAC,KAAa;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAc,EAAE,CAAC;QAC/B,SAAS,CAAC;YACT,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACnD,IAAI,WAAW,KAAK,CAAC,CAAC;gBAAE,OAAO,QAAQ,CAAC;YACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACxE,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YACrD,IAAI,CAAC,YAAY,EAAE,CAAC;gBACnB,kEAAkE;gBAClE,oEAAoE;gBACpE,gEAAgE;gBAChE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;gBACnE,SAAS;YACV,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC;YACpD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,GAAG,QAAQ;gBAAE,OAAO,QAAQ,CAAC,CAAC,uCAAuC;YAC1G,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,GAAG,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC7F,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,CAAC;YAC5D,IAAI,CAAC;gBACJ,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YACnC,CAAC;YAAC,MAAM,CAAC;gBACR,oEAAoE;gBACpE,iEAAiE;YAClE,CAAC;QACF,CAAC;IACF,CAAC;CACD;AAED,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAE9B,sFAAsF;AACtF,SAAS,aAAa,CAAC,IAAoC,EAAE,SAAiB;IAC7E,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF,OAAO,IAAI,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC/B,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;YACpC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC1B,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,EAAE,SAAS,CAAC,CAAC;QACd,SAAS,OAAO;YACf,YAAY,CAAC,YAAY,CAAC,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,6GAA6G;AAC7G,MAAM,mBAAmB,GAAG;IAC3B,YAAY,EAAE;QACb,eAAe,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE;QAC9D,UAAU,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE;QAC9D,UAAU,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE;QAC1C,cAAc,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,iCAAiC,EAAE,IAAI,EAAE;QACvF,MAAM,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE;KAC7D;IACD,SAAS,EAAE;QACV,SAAS,EAAE,KAAK,EAAE,mFAAmF;QACrG,aAAa,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE;QAChE,gBAAgB,EAAE,IAAI;QACtB,MAAM,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE;KACtC;CACQ,CAAC;AAEX,SAAS,SAAS,CAAC,IAAY;IAC9B,8EAA8E;IAC9E,OAAO,UAAU,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;AACzD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC7B,OAAe,EACf,IAAc,EACd,GAAW,EACX,QAA+C;IAE/C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAE5E,MAAM,UAAU,GAAG,IAAI,GAAG,EAA6B,CAAC;IACxD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAChC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACxC,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,cAAc,CAAC,OAAkC,CAAC,CAAC;IACnG,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,+EAA+E;IAC/E,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACxC,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,SAAS,cAAc,CAAC,OAAgC;QACvD,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ;YAAE,OAAO,CAAC,sFAAsF;QAClI,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,OAAO,CAAC,KAA4C,CAAC;YACjE,SAAS,CAAC,QAAQ,CACjB,IAAI,QAAQ,CAAC,mCAAmC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAC5F,CAAC;QACH,CAAC;aAAM,CAAC;YACP,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;IACF,CAAC;IAED,SAAS,qBAAqB,CAAC,KAAY;QAC1C,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE;YAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvD,UAAU,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,IAAI,aAAa,GAAiB,IAAI,CAAC;IACvC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,aAAa,GAAG,IAAI,QAAQ,CAC3B,gDAAgD,MAAM,WAAW,KAAK,MAAM,YAAY,IAAI,sBAAsB,EAAE,EACpH,eAAe,CACf,CAAC;YACF,qBAAqB,CAAC,aAAa,CAAC,CAAC;QACtC,CAAC;IACF,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC5B,aAAa,GAAG,IAAI,QAAQ,CAAC,wBAAwB,OAAO,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC;QACpG,qBAAqB,CAAC,aAAa,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,SAAS,MAAM,CAAI,MAAc,EAAE,MAAe,EAAE,SAAS,GAAG,MAAM;QACrE,IAAI,aAAa;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACxD,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QACzB,OAAO,IAAI,OAAO,CAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE;YAC5C,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;gBACpC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACtB,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,MAAM,qBAAqB,SAAS,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;YACjF,CAAC,EAAE,SAAS,CAAC,CAAC;YACd,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE;gBAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;oBACf,YAAY,CAAC,YAAY,CAAC,CAAC;oBAC3B,QAAQ,CAAC,CAAM,CAAC,CAAC;gBAClB,CAAC;gBACD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;oBACf,YAAY,CAAC,YAAY,CAAC,CAAC;oBAC3B,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACb,CAAC;aACD,CAAC,CAAC;YACH,eAAe,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,SAAS,SAAS,CAAC,MAAc,EAAE,MAAe;QACjD,IAAI,aAAa;YAAE,OAAO;QAC1B,eAAe,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,UAAU,MAAM;QACpB,IAAI,OAAO;YAAE,OAAO;QACpB,OAAO,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,aAAa,EAAE,CAAC;YACpB,uEAAuE;YACvE,qDAAqD;YACrD,MAAM,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACrD,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC9B,CAAC;QACD,qBAAqB,CAAC,IAAI,QAAQ,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC,CAAC;QACrE,IAAI,MAAM,aAAa,CAAC,IAAI,EAAE,gBAAgB,CAAC;YAAE,OAAO;QACxD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrB,MAAM,aAAa,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAC5C,mEAAmE;QACnE,uEAAuE;QACvE,sEAAsE;QACtE,0EAA0E;IAC3E,CAAC;IAED,IAAI,WAAgD,CAAC;IACrD,IAAI,CAAC;QACJ,MAAM,WAAW,GAAG,QAAQ,EAAE,uBAAuB,IAAI,MAAM,CAAC;QAChE,MAAM,IAAI,GAAG,MAAM,MAAM,CACxB,YAAY,EACZ;YACC,SAAS,EAAE,OAAO,CAAC,GAAG;YACtB,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC;YACvB,gBAAgB,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;YACtD,YAAY,EAAE,mBAAmB;SACjC,EACD,WAAW,CACX,CAAC;QACF,WAAW,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAE,IAAgC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxG,SAAS,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,MAAM,EAAE,CAAC;QACf,MAAM,KAAK,CAAC;IACb,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC;AAClE,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"descubrimiento.d.ts","sourceRoot":"","sources":["../../../src/core/lsp/descubrimiento.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,iHAA8G;AAC9G,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,6DAA4D;IAC5D,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,6IAA4I;IAC5I,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,sGAAsG;IACtG,QAAQ,EAAE,MAAM,CAAC;CACjB;AAyFD;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAChC;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAA;CAAE,GAC/C;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAA;CAAE,GACjD;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAElD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,uBAAuB,CAc9F;AAED,gHAA8G;AAC9G,wBAAgB,mBAAmB,IAAI,SAAS,WAAW,EAAE,CAE5D;AAaD;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAKpE","sourcesContent":["/**\n * Qué servidor de lenguaje toca para un fichero, y si está instalado.\n *\n * TypeScript/JS quedan fuera a propósito: los cubre el LanguageService de\n * `core/edicion/tipos.ts` (más rápido, ya pagado, sin salir de proceso). Este\n * módulo es solo para los lenguajes donde no hay alternativa a hablar LSP con\n * un binario externo.\n *\n * Regla 6 del hueco, aplicada aquí sin excepción: \"no pude\" (el binario no\n * está instalado) y \"no hay\" (esta extensión no tiene servidor conocido) son\n * dos resultados DISTINTOS. Ninguno de los dos es un error silencioso ni un\n * \"no hay símbolos\" genérico — cada uno lleva lo que hace falta para actuar.\n */\n\nimport { existsSync, readdirSync } from \"node:fs\";\nimport { dirname, join, delimiter as SEP_PATH, sep as SEP_RUTA } from \"node:path\";\n\n/** Un servidor de lenguaje conocido: cómo arrancarlo, para qué ficheros sirve, y cómo instalarlo si falta. */\nexport interface ServidorLsp {\n\tnombre: string;\n\tcomando: string;\n\targs: string[];\n\t/** Extensiones con punto, en minúsculas: \".go\", \".rs\"... */\n\textensiones: string[];\n\t/** Al menos uno de estos ficheros/directorios debe existir en algún ancestro del fichero para considerar el proyecto \"de este lenguaje\". */\n\tmarcadoresRaiz: string[];\n\t/** Comando EXACTO para instalarlo. Se muestra tal cual al usuario: nada de \"instala un LSP de Go\". */\n\tinstalar: string;\n}\n\n/**\n * Lista curada, no exhaustiva (ponytail: los lenguajes más comunes, no los 50\n * del competidor). Añadir uno nuevo es una entrada más aquí, nunca lógica\n * nueva — si hace falta más cobertura, este es el único sitio que crece.\n */\nconst SERVIDORES: readonly ServidorLsp[] = [\n\t{\n\t\tnombre: \"gopls\",\n\t\tcomando: \"gopls\",\n\t\targs: [\"serve\"],\n\t\textensiones: [\".go\"],\n\t\tmarcadoresRaiz: [\"go.mod\", \"go.work\"],\n\t\tinstalar: \"go install golang.org/x/tools/gopls@latest\",\n\t},\n\t{\n\t\tnombre: \"rust-analyzer\",\n\t\tcomando: \"rust-analyzer\",\n\t\targs: [],\n\t\textensiones: [\".rs\"],\n\t\tmarcadoresRaiz: [\"Cargo.toml\"],\n\t\tinstalar: \"rustup component add rust-analyzer\",\n\t},\n\t{\n\t\tnombre: \"pyright\",\n\t\tcomando: \"pyright-langserver\",\n\t\targs: [\"--stdio\"],\n\t\textensiones: [\".py\", \".pyi\"],\n\t\tmarcadoresRaiz: [\"pyproject.toml\", \"setup.py\", \"requirements.txt\"],\n\t\tinstalar: \"npm install -g pyright\",\n\t},\n\t{\n\t\tnombre: \"clangd\",\n\t\tcomando: \"clangd\",\n\t\targs: [],\n\t\textensiones: [\".c\", \".h\", \".cpp\", \".cc\", \".hpp\"],\n\t\tmarcadoresRaiz: [\"compile_commands.json\", \"CMakeLists.txt\"],\n\t\tinstalar: process.platform === \"darwin\" ? \"brew install llvm\" : \"sudo apt install clangd\",\n\t},\n\t{\n\t\tnombre: \"bash-language-server\",\n\t\tcomando: \"bash-language-server\",\n\t\targs: [\"start\"],\n\t\textensiones: [\".sh\", \".bash\"],\n\t\tmarcadoresRaiz: [\".git\"],\n\t\tinstalar: \"npm install -g bash-language-server\",\n\t},\n];\n\n/** Directorios y (en Windows) extensiones ejecutables candidatas para un `comando`. */\nfunction candidatosDeComando(comando: string): string[] {\n\tconst directorios = (process.env.PATH ?? \"\").split(SEP_PATH).filter(Boolean);\n\tconst extensiones = process.platform === \"win32\" ? (process.env.PATHEXT ?? \".EXE;.CMD;.BAT\").split(\";\") : [\"\"];\n\tconst candidatos: string[] = [];\n\tfor (const dir of directorios) {\n\t\tfor (const ext of extensiones) candidatos.push(join(dir, comando + ext));\n\t}\n\treturn candidatos;\n}\n\n/** ¿Está `comando` en el PATH? No usa un `which` de shell: mismo resultado en macOS, Linux y Windows sin depender de que exista ese binario. */\nfunction estaInstalado(comando: string): boolean {\n\treturn candidatosDeComando(comando).some((ruta) => existsSync(ruta));\n}\n\n/** ¿Hay algún marcador de `marcadores` en `dir` o en algún ancestro de `dir`? */\nfunction tieneMarcadorAncestro(dir: string, marcadores: string[]): boolean {\n\tlet actual = dir;\n\tfor (;;) {\n\t\tlet entradas: string[];\n\t\ttry {\n\t\t\tentradas = readdirSync(actual);\n\t\t} catch {\n\t\t\tentradas = [];\n\t\t}\n\t\tif (marcadores.some((m) => entradas.includes(m))) return true;\n\t\tconst padre = dirname(actual);\n\t\tif (padre === actual) return false; // llegado a la raíz del sistema de ficheros\n\t\tactual = padre;\n\t}\n}\n\nfunction extensionDe(ruta: string): string {\n\tconst base = ruta.slice(ruta.lastIndexOf(SEP_RUTA) + 1);\n\tconst punto = base.lastIndexOf(\".\");\n\treturn punto <= 0 ? \"\" : base.slice(punto).toLowerCase();\n}\n\n/**\n * Resultado de buscar servidor para un fichero. Tres formas, nunca\n * colapsadas: hay servidor listo para usar; hay servidor conocido pero el\n * binario no está instalado (con el comando exacto para arreglarlo); o esta\n * extensión no tiene servidor conocido en absoluto (cobertura, no fallo).\n */\nexport type ResultadoDescubrimiento =\n\t| { estado: \"disponible\"; servidor: ServidorLsp }\n\t| { estado: \"no_instalado\"; servidor: ServidorLsp }\n\t| { estado: \"sin_cobertura\"; extension: string };\n\n/**\n * Busca el servidor LSP para `rutaFichero` dentro del proyecto `cwd`.\n *\n * No lanza nunca: toda situación (sin cobertura, servidor conocido pero no\n * instalado, o servidor listo) es un valor de retorno distinguible, no una\n * excepción que el llamador tenga que adivinar.\n */\nexport function descubrirParaFichero(rutaFichero: string, cwd: string): ResultadoDescubrimiento {\n\tconst extension = extensionDe(rutaFichero);\n\tconst candidato = SERVIDORES.find((s) => s.extensiones.includes(extension));\n\tif (!candidato) return { estado: \"sin_cobertura\", extension: extension || \"(sin extensión)\" };\n\n\tconst dirFichero = dirname(rutaFichero);\n\tconst raizDelLenguaje =\n\t\ttieneMarcadorAncestro(dirFichero, candidato.marcadoresRaiz) ||\n\t\ttieneMarcadorAncestro(cwd, candidato.marcadoresRaiz);\n\tif (!raizDelLenguaje) return { estado: \"sin_cobertura\", extension };\n\n\treturn estaInstalado(candidato.comando)\n\t\t? { estado: \"disponible\", servidor: candidato }\n\t\t: { estado: \"no_instalado\", servidor: candidato };\n}\n\n/** Lista de servidores curados, para diagnóstico (`ada-cli` mostrando qué lenguajes cubre el cliente LSP). */\nexport function servidoresConocidos(): readonly ServidorLsp[] {\n\treturn SERVIDORES;\n}\n\n/**\n * Marcadores demasiado genéricos para decidir por sí solos \"este proyecto es\n * de este lenguaje\": `.git` (el marcador de bash-language-server, elegido\n * porque cualquier `.sh` en un repo git es un script legítimo) está presente\n * en prácticamente TODO proyecto, sea cual sea su lenguaje. Sirve para\n * `descubrirParaFichero` (ahí ya viene acotado por la extensión real del\n * fichero), pero colaría a `hayLenguajeReconocidoEnProyecto` a devolver\n * `true` siempre — el mismo marcador con dos papeles distintos.\n */\nconst MARCADORES_DEMASIADO_GENERICOS = new Set([\".git\"]);\n\n/**\n * ¿Hay algún lenguaje con servidor conocido en este proyecto? No mira si el\n * binario está instalado — solo si el proyecto es \"de ese lenguaje\" (marcador\n * de raíz específico presente). Es la comprobación que decide si vale la pena\n * registrar los tools: si el proyecto no toca ningún lenguaje que cubrimos,\n * no hay nada que ofrecer y las tools solo serían ruido en el contexto del\n * modelo — un `.git` (casi cualquier proyecto lo tiene) no cuenta como señal\n * de \"este proyecto usa Bash\" a estos efectos.\n */\nexport function hayLenguajeReconocidoEnProyecto(cwd: string): boolean {\n\treturn SERVIDORES.some((s) => {\n\t\tconst marcadoresFiables = s.marcadoresRaiz.filter((m) => !MARCADORES_DEMASIADO_GENERICOS.has(m));\n\t\treturn marcadoresFiables.length > 0 && tieneMarcadorAncestro(cwd, marcadoresFiables);\n\t});\n}\n"]}
1
+ {"version":3,"file":"descubrimiento.d.ts","sourceRoot":"","sources":["../../../src/core/lsp/descubrimiento.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,8GAA8G;AAC9G,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,4DAA4D;IAC5D,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,4IAA4I;IAC5I,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,sGAAsG;IACtG,QAAQ,EAAE,MAAM,CAAC;CACjB;AAyFD;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAChC;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAA;CAAE,GAC/C;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAA;CAAE,GACjD;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAElD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,uBAAuB,CAc9F;AAED,8GAA8G;AAC9G,wBAAgB,mBAAmB,IAAI,SAAS,WAAW,EAAE,CAE5D;AAaD;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAKpE"}
@@ -1 +1 @@
1
- {"version":3,"file":"descubrimiento.js","sourceRoot":"","sources":["../../../src/core/lsp/descubrimiento.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Qué servidor de lenguaje toca para un fichero, y si está instalado.\n *\n * TypeScript/JS quedan fuera a propósito: los cubre el LanguageService de\n * `core/edicion/tipos.ts` (más rápido, ya pagado, sin salir de proceso). Este\n * módulo es solo para los lenguajes donde no hay alternativa a hablar LSP con\n * un binario externo.\n *\n * Regla 6 del hueco, aplicada aquí sin excepción: \"no pude\" (el binario no\n * está instalado) y \"no hay\" (esta extensión no tiene servidor conocido) son\n * dos resultados DISTINTOS. Ninguno de los dos es un error silencioso ni un\n * \"no hay símbolos\" genérico — cada uno lleva lo que hace falta para actuar.\n */\n\nimport { existsSync, readdirSync } from \"node:fs\";\nimport { dirname, join, delimiter as SEP_PATH, sep as SEP_RUTA } from \"node:path\";\n\n/** Un servidor de lenguaje conocido: cómo arrancarlo, para qué ficheros sirve, y cómo instalarlo si falta. */\nexport interface ServidorLsp {\n\tnombre: string;\n\tcomando: string;\n\targs: string[];\n\t/** Extensiones con punto, en minúsculas: \".go\", \".rs\"... */\n\textensiones: string[];\n\t/** Al menos uno de estos ficheros/directorios debe existir en algún ancestro del fichero para considerar el proyecto \"de este lenguaje\". */\n\tmarcadoresRaiz: string[];\n\t/** Comando EXACTO para instalarlo. Se muestra tal cual al usuario: nada de \"instala un LSP de Go\". */\n\tinstalar: string;\n}\n\n/**\n * Lista curada, no exhaustiva (ponytail: los lenguajes más comunes, no los 50\n * del competidor). Añadir uno nuevo es una entrada más aquí, nunca lógica\n * nueva — si hace falta más cobertura, este es el único sitio que crece.\n */\nconst SERVIDORES: readonly ServidorLsp[] = [\n\t{\n\t\tnombre: \"gopls\",\n\t\tcomando: \"gopls\",\n\t\targs: [\"serve\"],\n\t\textensiones: [\".go\"],\n\t\tmarcadoresRaiz: [\"go.mod\", \"go.work\"],\n\t\tinstalar: \"go install golang.org/x/tools/gopls@latest\",\n\t},\n\t{\n\t\tnombre: \"rust-analyzer\",\n\t\tcomando: \"rust-analyzer\",\n\t\targs: [],\n\t\textensiones: [\".rs\"],\n\t\tmarcadoresRaiz: [\"Cargo.toml\"],\n\t\tinstalar: \"rustup component add rust-analyzer\",\n\t},\n\t{\n\t\tnombre: \"pyright\",\n\t\tcomando: \"pyright-langserver\",\n\t\targs: [\"--stdio\"],\n\t\textensiones: [\".py\", \".pyi\"],\n\t\tmarcadoresRaiz: [\"pyproject.toml\", \"setup.py\", \"requirements.txt\"],\n\t\tinstalar: \"npm install -g pyright\",\n\t},\n\t{\n\t\tnombre: \"clangd\",\n\t\tcomando: \"clangd\",\n\t\targs: [],\n\t\textensiones: [\".c\", \".h\", \".cpp\", \".cc\", \".hpp\"],\n\t\tmarcadoresRaiz: [\"compile_commands.json\", \"CMakeLists.txt\"],\n\t\tinstalar: process.platform === \"darwin\" ? \"brew install llvm\" : \"sudo apt install clangd\",\n\t},\n\t{\n\t\tnombre: \"bash-language-server\",\n\t\tcomando: \"bash-language-server\",\n\t\targs: [\"start\"],\n\t\textensiones: [\".sh\", \".bash\"],\n\t\tmarcadoresRaiz: [\".git\"],\n\t\tinstalar: \"npm install -g bash-language-server\",\n\t},\n];\n\n/** Directorios y (en Windows) extensiones ejecutables candidatas para un `comando`. */\nfunction candidatosDeComando(comando: string): string[] {\n\tconst directorios = (process.env.PATH ?? \"\").split(SEP_PATH).filter(Boolean);\n\tconst extensiones = process.platform === \"win32\" ? (process.env.PATHEXT ?? \".EXE;.CMD;.BAT\").split(\";\") : [\"\"];\n\tconst candidatos: string[] = [];\n\tfor (const dir of directorios) {\n\t\tfor (const ext of extensiones) candidatos.push(join(dir, comando + ext));\n\t}\n\treturn candidatos;\n}\n\n/** ¿Está `comando` en el PATH? No usa un `which` de shell: mismo resultado en macOS, Linux y Windows sin depender de que exista ese binario. */\nfunction estaInstalado(comando: string): boolean {\n\treturn candidatosDeComando(comando).some((ruta) => existsSync(ruta));\n}\n\n/** ¿Hay algún marcador de `marcadores` en `dir` o en algún ancestro de `dir`? */\nfunction tieneMarcadorAncestro(dir: string, marcadores: string[]): boolean {\n\tlet actual = dir;\n\tfor (;;) {\n\t\tlet entradas: string[];\n\t\ttry {\n\t\t\tentradas = readdirSync(actual);\n\t\t} catch {\n\t\t\tentradas = [];\n\t\t}\n\t\tif (marcadores.some((m) => entradas.includes(m))) return true;\n\t\tconst padre = dirname(actual);\n\t\tif (padre === actual) return false; // llegado a la raíz del sistema de ficheros\n\t\tactual = padre;\n\t}\n}\n\nfunction extensionDe(ruta: string): string {\n\tconst base = ruta.slice(ruta.lastIndexOf(SEP_RUTA) + 1);\n\tconst punto = base.lastIndexOf(\".\");\n\treturn punto <= 0 ? \"\" : base.slice(punto).toLowerCase();\n}\n\n/**\n * Resultado de buscar servidor para un fichero. Tres formas, nunca\n * colapsadas: hay servidor listo para usar; hay servidor conocido pero el\n * binario no está instalado (con el comando exacto para arreglarlo); o esta\n * extensión no tiene servidor conocido en absoluto (cobertura, no fallo).\n */\nexport type ResultadoDescubrimiento =\n\t| { estado: \"disponible\"; servidor: ServidorLsp }\n\t| { estado: \"no_instalado\"; servidor: ServidorLsp }\n\t| { estado: \"sin_cobertura\"; extension: string };\n\n/**\n * Busca el servidor LSP para `rutaFichero` dentro del proyecto `cwd`.\n *\n * No lanza nunca: toda situación (sin cobertura, servidor conocido pero no\n * instalado, o servidor listo) es un valor de retorno distinguible, no una\n * excepción que el llamador tenga que adivinar.\n */\nexport function descubrirParaFichero(rutaFichero: string, cwd: string): ResultadoDescubrimiento {\n\tconst extension = extensionDe(rutaFichero);\n\tconst candidato = SERVIDORES.find((s) => s.extensiones.includes(extension));\n\tif (!candidato) return { estado: \"sin_cobertura\", extension: extension || \"(sin extensión)\" };\n\n\tconst dirFichero = dirname(rutaFichero);\n\tconst raizDelLenguaje =\n\t\ttieneMarcadorAncestro(dirFichero, candidato.marcadoresRaiz) ||\n\t\ttieneMarcadorAncestro(cwd, candidato.marcadoresRaiz);\n\tif (!raizDelLenguaje) return { estado: \"sin_cobertura\", extension };\n\n\treturn estaInstalado(candidato.comando)\n\t\t? { estado: \"disponible\", servidor: candidato }\n\t\t: { estado: \"no_instalado\", servidor: candidato };\n}\n\n/** Lista de servidores curados, para diagnóstico (`ada-cli` mostrando qué lenguajes cubre el cliente LSP). */\nexport function servidoresConocidos(): readonly ServidorLsp[] {\n\treturn SERVIDORES;\n}\n\n/**\n * Marcadores demasiado genéricos para decidir por sí solos \"este proyecto es\n * de este lenguaje\": `.git` (el marcador de bash-language-server, elegido\n * porque cualquier `.sh` en un repo git es un script legítimo) está presente\n * en prácticamente TODO proyecto, sea cual sea su lenguaje. Sirve para\n * `descubrirParaFichero` (ahí ya viene acotado por la extensión real del\n * fichero), pero colaría a `hayLenguajeReconocidoEnProyecto` a devolver\n * `true` siempre — el mismo marcador con dos papeles distintos.\n */\nconst MARCADORES_DEMASIADO_GENERICOS = new Set([\".git\"]);\n\n/**\n * ¿Hay algún lenguaje con servidor conocido en este proyecto? No mira si el\n * binario está instalado — solo si el proyecto es \"de ese lenguaje\" (marcador\n * de raíz específico presente). Es la comprobación que decide si vale la pena\n * registrar los tools: si el proyecto no toca ningún lenguaje que cubrimos,\n * no hay nada que ofrecer y las tools solo serían ruido en el contexto del\n * modelo — un `.git` (casi cualquier proyecto lo tiene) no cuenta como señal\n * de \"este proyecto usa Bash\" a estos efectos.\n */\nexport function hayLenguajeReconocidoEnProyecto(cwd: string): boolean {\n\treturn SERVIDORES.some((s) => {\n\t\tconst marcadoresFiables = s.marcadoresRaiz.filter((m) => !MARCADORES_DEMASIADO_GENERICOS.has(m));\n\t\treturn marcadoresFiables.length > 0 && tieneMarcadorAncestro(cwd, marcadoresFiables);\n\t});\n}\n"]}
1
+ {"version":3,"file":"descubrimiento.js","sourceRoot":"","sources":["../../../src/core/lsp/descubrimiento.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ediciones.d.ts","sourceRoot":"","sources":["../../../src/core/lsp/ediciones.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACxB,KAAK,EAAE,QAAQ,CAAC;IAChB,GAAG,EAAE,QAAQ,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,eAAe;IACxB,YAAY,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACvD,KAAK,EAAE,YAAY,EAAE,CAAC;CACtB;AAED,qJAAoJ;AACpJ,MAAM,WAAW,gBAAgB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IACzC,eAAe,CAAC,EAAE,KAAK,CAAC,eAAe,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5D;AAED,kFAAgF;AAChF,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED,wJAAuJ;AACvJ,wBAAgB,OAAO,CAAC,IAAI,EAAE,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAiB3E;AAMD,0HAAyH;AACzH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,CAkBnF;AAED,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAY5F","sourcesContent":["/**\n * Aplica un `WorkspaceEdit` de LSP (el resultado de `textDocument/rename`) a\n * disco, fichero por fichero.\n *\n * Las posiciones LSP son `{line, character}` en unidades UTF-16 — que es\n * exactamente cómo Python... no, cómo JAVASCRIPT indexa sus strings (UTF-16\n * interno). Por eso `slice(character)` sobre un string de JS ya hace lo\n * correcto sin convertir a offsets de bytes: es la pereza correcta, no un\n * atajo que rompa con acentos o emoji en el nombre nuevo.\n */\n\nimport { readFile, writeFile } from \"node:fs/promises\";\n\nexport interface Posicion {\n\tline: number;\n\tcharacter: number;\n}\n\nexport interface RangoLsp {\n\tstart: Posicion;\n\tend: Posicion;\n}\n\nexport interface EdicionTexto {\n\trange: RangoLsp;\n\tnewText: string;\n}\n\ninterface CambioDocumento {\n\ttextDocument: { uri: string; version?: number | null };\n\tedits: EdicionTexto[];\n}\n\n/** Subconjunto de `WorkspaceEdit` que cubrimos: ediciones de texto puras. Crear/renombrar/borrar ficheros no hace falta para rename de símbolos. */\nexport interface WorkspaceEditLsp {\n\tchanges?: Record<string, EdicionTexto[]>;\n\tdocumentChanges?: Array<CambioDocumento | { kind: string }>;\n}\n\n/** `file:///a/b%20c.go` → `/a/b c.go`. Inversa de `uriDeRuta` en cliente.ts. */\nexport function rutaDeUri(uri: string): string {\n\tif (!uri.startsWith(\"file://\")) throw new Error(`URI no soportada (no es file://): ${uri}`);\n\treturn decodeURIComponent(uri.slice(\"file://\".length));\n}\n\n/** Agrupa `changes` y `documentChanges` en un único `Map<uri, ediciones>`; ignora operaciones de fichero (create/rename/delete) que no necesitamos. */\nexport function aplanar(edit: WorkspaceEditLsp): Map<string, EdicionTexto[]> {\n\tconst porUri = new Map<string, EdicionTexto[]>();\n\tconst agregar = (uri: string, ediciones: EdicionTexto[]) => {\n\t\tif (ediciones.length === 0) return;\n\t\tconst previas = porUri.get(uri);\n\t\tif (previas) previas.push(...ediciones);\n\t\telse porUri.set(uri, [...ediciones]);\n\t};\n\tif (edit.changes) {\n\t\tfor (const [uri, ediciones] of Object.entries(edit.changes)) agregar(uri, ediciones);\n\t}\n\tif (edit.documentChanges) {\n\t\tfor (const cambio of edit.documentChanges) {\n\t\t\tif (\"textDocument\" in cambio && \"edits\" in cambio) agregar(cambio.textDocument.uri, cambio.edits);\n\t\t}\n\t}\n\treturn porUri;\n}\n\nfunction compararPosicion(a: Posicion, b: Posicion): number {\n\treturn a.line === b.line ? a.character - b.character : a.line - b.line;\n}\n\n/** Aplica las ediciones a un texto en memoria, de abajo a arriba para no desincronizar los índices de las que faltan. */\nexport function aplicarEnTexto(contenido: string, ediciones: EdicionTexto[]): string {\n\tconst lineas = contenido.split(\"\\n\");\n\t// Orden descendente por posición de inicio: aplicar la de más abajo primero\n\t// deja intactos los índices de línea de las que quedan por aplicar.\n\tconst ordenadas = [...ediciones].sort((a, b) => compararPosicion(b.range.start, a.range.start));\n\tfor (const edicion of ordenadas) {\n\t\tconst { start, end } = edicion.range;\n\t\tif (start.line === end.line) {\n\t\t\tconst linea = lineas[start.line] ?? \"\";\n\t\t\tlineas[start.line] = linea.slice(0, start.character) + edicion.newText + linea.slice(end.character);\n\t\t} else {\n\t\t\tconst lineaInicio = lineas[start.line] ?? \"\";\n\t\t\tconst lineaFin = lineas[end.line] ?? \"\";\n\t\t\tconst nuevoContenido = lineaInicio.slice(0, start.character) + edicion.newText + lineaFin.slice(end.character);\n\t\t\tlineas.splice(start.line, end.line - start.line + 1, ...nuevoContenido.split(\"\\n\"));\n\t\t}\n\t}\n\treturn lineas.join(\"\\n\");\n}\n\nexport interface CambioAplicado {\n\truta: string;\n\tantes: string;\n\tdespues: string;\n}\n\n/**\n * Aplica un WorkspaceEdit completo a disco. Devuelve un `CambioAplicado` por\n * fichero tocado, con el contenido antes/después — así quien llama puede\n * enseñar el diff real, no solo decir \"aplicado\".\n *\n * Lanza si un fichero no se puede leer o escribir: un rename que dice\n * \"aplicado\" sobre un fichero que en realidad no cambió es el error que la\n * regla 6 prohíbe (éxito que no lo fue).\n */\nexport async function aplicarWorkspaceEdit(edit: WorkspaceEditLsp): Promise<CambioAplicado[]> {\n\tconst porUri = aplanar(edit);\n\tconst cambios: CambioAplicado[] = [];\n\tfor (const [uri, ediciones] of porUri) {\n\t\tconst ruta = rutaDeUri(uri);\n\t\tconst antes = await readFile(ruta, \"utf-8\");\n\t\tconst despues = aplicarEnTexto(antes, ediciones);\n\t\tif (despues === antes) continue; // ediciones vacías tras aplicar (raro, pero no es un cambio real)\n\t\tawait writeFile(ruta, despues, \"utf-8\");\n\t\tcambios.push({ ruta, antes, despues });\n\t}\n\treturn cambios;\n}\n"]}
1
+ {"version":3,"file":"ediciones.d.ts","sourceRoot":"","sources":["../../../src/core/lsp/ediciones.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACxB,KAAK,EAAE,QAAQ,CAAC;IAChB,GAAG,EAAE,QAAQ,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,eAAe;IACxB,YAAY,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACvD,KAAK,EAAE,YAAY,EAAE,CAAC;CACtB;AAED,oJAAoJ;AACpJ,MAAM,WAAW,gBAAgB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IACzC,eAAe,CAAC,EAAE,KAAK,CAAC,eAAe,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5D;AAED,gFAAgF;AAChF,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED,uJAAuJ;AACvJ,wBAAgB,OAAO,CAAC,IAAI,EAAE,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAiB3E;AAMD,yHAAyH;AACzH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,CAkBnF;AAED,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAY5F"}
@@ -1 +1 @@
1
- {"version":3,"file":"ediciones.js","sourceRoot":"","sources":["../../../src/core/lsp/ediciones.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Aplica un `WorkspaceEdit` de LSP (el resultado de `textDocument/rename`) a\n * disco, fichero por fichero.\n *\n * Las posiciones LSP son `{line, character}` en unidades UTF-16 — que es\n * exactamente cómo Python... no, cómo JAVASCRIPT indexa sus strings (UTF-16\n * interno). Por eso `slice(character)` sobre un string de JS ya hace lo\n * correcto sin convertir a offsets de bytes: es la pereza correcta, no un\n * atajo que rompa con acentos o emoji en el nombre nuevo.\n */\n\nimport { readFile, writeFile } from \"node:fs/promises\";\n\nexport interface Posicion {\n\tline: number;\n\tcharacter: number;\n}\n\nexport interface RangoLsp {\n\tstart: Posicion;\n\tend: Posicion;\n}\n\nexport interface EdicionTexto {\n\trange: RangoLsp;\n\tnewText: string;\n}\n\ninterface CambioDocumento {\n\ttextDocument: { uri: string; version?: number | null };\n\tedits: EdicionTexto[];\n}\n\n/** Subconjunto de `WorkspaceEdit` que cubrimos: ediciones de texto puras. Crear/renombrar/borrar ficheros no hace falta para rename de símbolos. */\nexport interface WorkspaceEditLsp {\n\tchanges?: Record<string, EdicionTexto[]>;\n\tdocumentChanges?: Array<CambioDocumento | { kind: string }>;\n}\n\n/** `file:///a/b%20c.go` → `/a/b c.go`. Inversa de `uriDeRuta` en cliente.ts. */\nexport function rutaDeUri(uri: string): string {\n\tif (!uri.startsWith(\"file://\")) throw new Error(`URI no soportada (no es file://): ${uri}`);\n\treturn decodeURIComponent(uri.slice(\"file://\".length));\n}\n\n/** Agrupa `changes` y `documentChanges` en un único `Map<uri, ediciones>`; ignora operaciones de fichero (create/rename/delete) que no necesitamos. */\nexport function aplanar(edit: WorkspaceEditLsp): Map<string, EdicionTexto[]> {\n\tconst porUri = new Map<string, EdicionTexto[]>();\n\tconst agregar = (uri: string, ediciones: EdicionTexto[]) => {\n\t\tif (ediciones.length === 0) return;\n\t\tconst previas = porUri.get(uri);\n\t\tif (previas) previas.push(...ediciones);\n\t\telse porUri.set(uri, [...ediciones]);\n\t};\n\tif (edit.changes) {\n\t\tfor (const [uri, ediciones] of Object.entries(edit.changes)) agregar(uri, ediciones);\n\t}\n\tif (edit.documentChanges) {\n\t\tfor (const cambio of edit.documentChanges) {\n\t\t\tif (\"textDocument\" in cambio && \"edits\" in cambio) agregar(cambio.textDocument.uri, cambio.edits);\n\t\t}\n\t}\n\treturn porUri;\n}\n\nfunction compararPosicion(a: Posicion, b: Posicion): number {\n\treturn a.line === b.line ? a.character - b.character : a.line - b.line;\n}\n\n/** Aplica las ediciones a un texto en memoria, de abajo a arriba para no desincronizar los índices de las que faltan. */\nexport function aplicarEnTexto(contenido: string, ediciones: EdicionTexto[]): string {\n\tconst lineas = contenido.split(\"\\n\");\n\t// Orden descendente por posición de inicio: aplicar la de más abajo primero\n\t// deja intactos los índices de línea de las que quedan por aplicar.\n\tconst ordenadas = [...ediciones].sort((a, b) => compararPosicion(b.range.start, a.range.start));\n\tfor (const edicion of ordenadas) {\n\t\tconst { start, end } = edicion.range;\n\t\tif (start.line === end.line) {\n\t\t\tconst linea = lineas[start.line] ?? \"\";\n\t\t\tlineas[start.line] = linea.slice(0, start.character) + edicion.newText + linea.slice(end.character);\n\t\t} else {\n\t\t\tconst lineaInicio = lineas[start.line] ?? \"\";\n\t\t\tconst lineaFin = lineas[end.line] ?? \"\";\n\t\t\tconst nuevoContenido = lineaInicio.slice(0, start.character) + edicion.newText + lineaFin.slice(end.character);\n\t\t\tlineas.splice(start.line, end.line - start.line + 1, ...nuevoContenido.split(\"\\n\"));\n\t\t}\n\t}\n\treturn lineas.join(\"\\n\");\n}\n\nexport interface CambioAplicado {\n\truta: string;\n\tantes: string;\n\tdespues: string;\n}\n\n/**\n * Aplica un WorkspaceEdit completo a disco. Devuelve un `CambioAplicado` por\n * fichero tocado, con el contenido antes/después — así quien llama puede\n * enseñar el diff real, no solo decir \"aplicado\".\n *\n * Lanza si un fichero no se puede leer o escribir: un rename que dice\n * \"aplicado\" sobre un fichero que en realidad no cambió es el error que la\n * regla 6 prohíbe (éxito que no lo fue).\n */\nexport async function aplicarWorkspaceEdit(edit: WorkspaceEditLsp): Promise<CambioAplicado[]> {\n\tconst porUri = aplanar(edit);\n\tconst cambios: CambioAplicado[] = [];\n\tfor (const [uri, ediciones] of porUri) {\n\t\tconst ruta = rutaDeUri(uri);\n\t\tconst antes = await readFile(ruta, \"utf-8\");\n\t\tconst despues = aplicarEnTexto(antes, ediciones);\n\t\tif (despues === antes) continue; // ediciones vacías tras aplicar (raro, pero no es un cambio real)\n\t\tawait writeFile(ruta, despues, \"utf-8\");\n\t\tcambios.push({ ruta, antes, despues });\n\t}\n\treturn cambios;\n}\n"]}
1
+ {"version":3,"file":"ediciones.js","sourceRoot":"","sources":["../../../src/core/lsp/ediciones.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,15 @@
22
22
  *
23
23
  * Migrar esto a builtin (para no necesitar `-e`) es una línea en
24
24
  * `builtInExtensions` el día que se libere margen — este fichero no cambia.
25
+ *
26
+ * Writethrough en ruta edición (LSP-01):
27
+ * ------------------------------------------------------------------------
28
+ * Además de registrar las tools, instala un hook `tool_call` que intercepta
29
+ * cada `edit` ANTES de que toque disco. Consulta LSP por diagnostics que
30
+ * solapen con el hunk; si hay error solapado, bloquea con motivo + sugerencia
31
+ * de reparación. Funciona sin broker (file-level, cliente efímero por hunk) y
32
+ * con broker si está disponible (mux cacheado — ver `writethrough.ts`).
33
+ * El hook vive aquí a coste cero porque este fichero ya es Ada-owned.
25
34
  */
26
35
  import type { ExtensionAPI } from "../extensions/types.ts";
27
36
  export default function lspExtension(pi: ExtensionAPI): void;
@@ -1 +1 @@
1
- {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../../src/core/lsp/extension.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI3D,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAG3D","sourcesContent":["/**\n * Registra los 4 tools del cliente LSP — SOLO si el proyecto toca algún\n * lenguaje que este cliente cubre. Si no, no hay nada que ofrecer y las\n * tools serían ruido puro en el contexto del modelo (regla del hueco:\n * \"Registradas SOLO si hay servidor disponible\").\n *\n * Punto de enganche real, sin gastar presupuesto de fork:\n * ------------------------------------------------------------------------\n * El presupuesto de sincronización (`scripts/sync-ada.sh --check`) está en\n * 115/115 — agotado (ver ADA-CLI.md). La forma \"de catálogo\" de dar de alta\n * un tool interno es añadirlo a `builtInExtensions` en\n * `src/extensions/index.ts`, pero ese fichero también es de upstream: una\n * sola línea ahí cuesta 1 hunk que hoy no hay margen para pagar.\n *\n * Este fichero es la mitad barata (coste cero: vive bajo `core/lsp/`, que no\n * existe en upstream). La otra mitad — cargarlo de verdad sin tocar ningún\n * fichero de upstream — usa un mecanismo que YA EXISTE y no necesita ningún\n * hunk: `ada-cli -e <ruta>` carga un fichero de extensión explícito (ver\n * `cli/args.ts`, opción `--extension`/`-e`, ya soportada). Se demuestra con:\n *\n * ada-cli -e packages/coding-agent/src/core/lsp/extension.ts --print ...\n *\n * Migrar esto a builtin (para no necesitar `-e`) es una línea en\n * `builtInExtensions` el día que se libere margen — este fichero no cambia.\n */\n\nimport type { ExtensionAPI } from \"../extensions/types.ts\";\nimport { hayLenguajeReconocidoEnProyecto } from \"./descubrimiento.ts\";\nimport { lspTools } from \"./tools.ts\";\n\nexport default function lspExtension(pi: ExtensionAPI): void {\n\tif (!hayLenguajeReconocidoEnProyecto(process.cwd())) return; // nada que ofrecer: ningún marcador de proyecto conocido\n\tfor (const tool of lspTools) pi.registerTool(tool);\n}\n"]}
1
+ {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../../src/core/lsp/extension.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAM3D,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAiD3D"}
@@ -22,13 +22,69 @@
22
22
  *
23
23
  * Migrar esto a builtin (para no necesitar `-e`) es una línea en
24
24
  * `builtInExtensions` el día que se libere margen — este fichero no cambia.
25
+ *
26
+ * Writethrough en ruta edición (LSP-01):
27
+ * ------------------------------------------------------------------------
28
+ * Además de registrar las tools, instala un hook `tool_call` que intercepta
29
+ * cada `edit` ANTES de que toque disco. Consulta LSP por diagnostics que
30
+ * solapen con el hunk; si hay error solapado, bloquea con motivo + sugerencia
31
+ * de reparación. Funciona sin broker (file-level, cliente efímero por hunk) y
32
+ * con broker si está disponible (mux cacheado — ver `writethrough.ts`).
33
+ * El hook vive aquí a coste cero porque este fichero ya es Ada-owned.
25
34
  */
35
+ import { getBroker } from "../broker/index.js";
26
36
  import { hayLenguajeReconocidoEnProyecto } from "./descubrimiento.js";
37
+ import { formatearTrasEditar } from "./formato.js";
27
38
  import { lspTools } from "./tools.js";
39
+ import { decidirBloqueoEdit } from "./writethrough.js";
28
40
  export default function lspExtension(pi) {
29
- if (!hayLenguajeReconocidoEnProyecto(process.cwd()))
30
- return; // nada que ofrecer: ningún marcador de proyecto conocido
31
- for (const tool of lspTools)
32
- pi.registerTool(tool);
41
+ if (hayLenguajeReconocidoEnProyecto(process.cwd())) {
42
+ for (const tool of lspTools)
43
+ pi.registerTool(tool);
44
+ }
45
+ // Writethrough: intercepta `edit` antes de tocar disco. No depende de
46
+ // que haya lenguaje reconocido — el propio writethrough hace fallback a
47
+ // "sin_lsp" si no hay cobertura, y eso es un permitido silencioso.
48
+ // Así el hook está siempre activo y no hay capacidad desenchufada.
49
+ pi.on("tool_call", async (event) => {
50
+ if (event.toolName !== "edit")
51
+ return undefined;
52
+ // Broker para mux si está disponible; si no hay handle, cae a file-level.
53
+ // `getBroker()` es singleton de proceso (coste cero si no se usa).
54
+ let broker;
55
+ try {
56
+ const b = getBroker();
57
+ if (b && typeof b.get === "function")
58
+ broker = b;
59
+ }
60
+ catch {
61
+ // Sin broker disponible — modo file-level puro.
62
+ }
63
+ const cwd = process.cwd();
64
+ const input = event.input;
65
+ const bloqueo = await decidirBloqueoEdit(input, cwd, { broker });
66
+ if (bloqueo?.block)
67
+ return bloqueo;
68
+ return undefined;
69
+ });
70
+ // Format-on-write (D06): DESPUÉS de que el edit toque disco, si hay
71
+ // servidor LSP con soporte `textDocument/formatting`, formatea solo el
72
+ // fichero tocado. OPT-IN: apagado salvo `ADA_LSP_FORMAT_ON_WRITE=1`
73
+ // (ver formato.ts). La re-verificación de anclaje dentro de
74
+ // `formatearTrasEditar` garantiza que el formateo nunca corrompe el edit:
75
+ // si los newText ya no están en el contenido formateado, no se escribe.
76
+ pi.on("tool_result", async (event) => {
77
+ if (event.toolName !== "edit" || event.isError)
78
+ return undefined;
79
+ const cwd = process.cwd();
80
+ const input = event.input;
81
+ const path = typeof input.path === "string" ? input.path : undefined;
82
+ const edits = Array.isArray(input.edits) ? input.edits : undefined;
83
+ if (!path || !edits || edits.length === 0)
84
+ return undefined;
85
+ const rutaAbsoluta = path.startsWith("/") ? path : `${cwd.replace(/\/$/, "")}/${path}`;
86
+ await formatearTrasEditar(rutaAbsoluta, edits, cwd);
87
+ return undefined;
88
+ });
33
89
  }
34
90
  //# sourceMappingURL=extension.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../src/core/lsp/extension.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAgB,EAAQ;IAC5D,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAAE,OAAO,CAAC,0DAAyD;IACtH,KAAK,MAAM,IAAI,IAAI,QAAQ;QAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAAA,CACnD","sourcesContent":["/**\n * Registra los 4 tools del cliente LSP — SOLO si el proyecto toca algún\n * lenguaje que este cliente cubre. Si no, no hay nada que ofrecer y las\n * tools serían ruido puro en el contexto del modelo (regla del hueco:\n * \"Registradas SOLO si hay servidor disponible\").\n *\n * Punto de enganche real, sin gastar presupuesto de fork:\n * ------------------------------------------------------------------------\n * El presupuesto de sincronización (`scripts/sync-ada.sh --check`) está en\n * 115/115 — agotado (ver ADA-CLI.md). La forma \"de catálogo\" de dar de alta\n * un tool interno es añadirlo a `builtInExtensions` en\n * `src/extensions/index.ts`, pero ese fichero también es de upstream: una\n * sola línea ahí cuesta 1 hunk que hoy no hay margen para pagar.\n *\n * Este fichero es la mitad barata (coste cero: vive bajo `core/lsp/`, que no\n * existe en upstream). La otra mitad — cargarlo de verdad sin tocar ningún\n * fichero de upstream — usa un mecanismo que YA EXISTE y no necesita ningún\n * hunk: `ada-cli -e <ruta>` carga un fichero de extensión explícito (ver\n * `cli/args.ts`, opción `--extension`/`-e`, ya soportada). Se demuestra con:\n *\n * ada-cli -e packages/coding-agent/src/core/lsp/extension.ts --print ...\n *\n * Migrar esto a builtin (para no necesitar `-e`) es una línea en\n * `builtInExtensions` el día que se libere margen — este fichero no cambia.\n */\n\nimport type { ExtensionAPI } from \"../extensions/types.ts\";\nimport { hayLenguajeReconocidoEnProyecto } from \"./descubrimiento.ts\";\nimport { lspTools } from \"./tools.ts\";\n\nexport default function lspExtension(pi: ExtensionAPI): void {\n\tif (!hayLenguajeReconocidoEnProyecto(process.cwd())) return; // nada que ofrecer: ningún marcador de proyecto conocido\n\tfor (const tool of lspTools) pi.registerTool(tool);\n}\n"]}
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../src/core/lsp/extension.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAuB,MAAM,mBAAmB,CAAC;AAE5E,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAgB;IACpD,IAAI,+BAA+B,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QACpD,KAAK,MAAM,IAAI,IAAI,QAAQ;YAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,sEAAsE;IACtE,wEAAwE;IACxE,mEAAmE;IACnE,mEAAmE;IACnE,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QAClC,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM;YAAE,OAAO,SAAS,CAAC;QAEhD,0EAA0E;QAC1E,mEAAmE;QACnE,IAAI,MAAuD,CAAC;QAC5D,IAAI,CAAC;YACJ,MAAM,CAAC,GAAG,SAAS,EAAoD,CAAC;YACxE,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,UAAU;gBAAE,MAAM,GAAG,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACR,gDAAgD;QACjD,CAAC;QAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAgC,CAAC;QACrD,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACjE,IAAI,OAAO,EAAE,KAAK;YAAE,OAAO,OAAO,CAAC;QAEnC,OAAO,SAAS,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,oEAAoE;IACpE,uEAAuE;IACvE,oEAAoE;IACpE,4DAA4D;IAC5D,0EAA0E;IAC1E,wEAAwE;IACxE,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QACpC,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAEjE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAgC,CAAC;QACrD,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAK,CAAC,KAA0B,CAAC,CAAC,CAAC,SAAS,CAAC;QACzF,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAE5D,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QACvF,MAAM,mBAAmB,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACpD,OAAO,SAAS,CAAC;IAClB,CAAC,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Format-on-write (D06): tras aplicar un `edit`, si el servidor LSP del
3
+ * fichero soporta `textDocument/formatting`, formatea SOLO los ficheros
4
+ * tocados y persiste el resultado solo si sobrevive la re-verificación de
5
+ * anclaje. Nunca destructivo en silencio.
6
+ *
7
+ * Contrato, en orden:
8
+ * 1. OPT-IN: desactivado por defecto. Se activa con la variable de entorno
9
+ * `ADA_LSP_FORMAT_ON_WRITE=1` (o `true`) o programáticamente con
10
+ * `opciones.activo`. Sin la variable, esta función es un no-op
11
+ * observable (`estado: "desactivado"`) — el formato automático cambia
12
+ * bytes que el modelo no escribió, así que nadie lo sufre sin haberlo
13
+ * pedido.
14
+ * 2. Solo ficheros tocados: se llama una vez por fichero editado, con las
15
+ * mismas `EntradaEdicion` que se aplicaron.
16
+ * 3. formatOptions: se envían al servidor (`tabSize`, `insertSpaces`);
17
+ * por defecto 2 espacios — el estándar de este repo — y sustituibles.
18
+ * 4. Re-verificación de anclaje ANTES de persistir: el formateo reordena y
19
+ * reindenta bytes; si algún `newText` del edit dejó de estar presente
20
+ * en el contenido formateado, NO se escribe nada (`anclaje_roto`) y el
21
+ * fichero conserva exactamente los bytes que dejó el edit.
22
+ * 5. Nunca lanza: un servidor caído o un formateo fallido degradan a un
23
+ * estado informativo — igual que el writethrough, un LSP roto no debe
24
+ * romper la ruta de edición del agente.
25
+ */
26
+ import { conectar } from "./cliente.ts";
27
+ import { descubrirParaFichero } from "./descubrimiento.ts";
28
+ import type { EntradaEdicion } from "./writethrough.ts";
29
+ /** Opciones de formateo que se envían al servidor (formatOptions del LSP). */
30
+ export interface OpcionesFormato {
31
+ tabSize: number;
32
+ insertSpaces: boolean;
33
+ }
34
+ export declare const FORMATO_POR_DEFECTO: OpcionesFormato;
35
+ /** Variable de entorno opt-in: `ADA_LSP_FORMAT_ON_WRITE=1` (o `true`). */
36
+ export declare const ENV_FORMAT_ON_WRITE = "ADA_LSP_FORMAT_ON_WRITE";
37
+ export declare function formatOnWriteActivo(env?: NodeJS.ProcessEnv): boolean;
38
+ /**
39
+ * Resultado con tres estados mínimos por camino — nunca un booleano solo:
40
+ * formateado = el servidor cambió bytes, pasaron el anclaje y se escribieron
41
+ * sin_cambios = el servidor respondió pero el resultado coincide byte a byte
42
+ * desactivado = opt-in apagado (el default)
43
+ * sin_lsp = sin cobertura / binario ausente / servidor caído → no-op seguro
44
+ * sin_soporte = hay servidor pero no declara textDocument/formatting
45
+ * anclaje_roto = el formateo perdió el edit → NO se persiste nada
46
+ */
47
+ export type ResultadoFormatoEscritura = {
48
+ estado: "formateado";
49
+ bytesAntes: number;
50
+ bytesDespues: number;
51
+ } | {
52
+ estado: "sin_cambios" | "desactivado" | "sin_lsp" | "sin_soporte";
53
+ detalles?: string;
54
+ } | {
55
+ estado: "anclaje_roto";
56
+ detalles: string;
57
+ };
58
+ /** Inyección para tests: firma idéntica a `conectar` en cliente.ts. */
59
+ type ConectarImpl = typeof conectar;
60
+ /**
61
+ * Formatea `rutaAbsoluta` tras aplicarse `edicionesAplicadas`. Lee el disco
62
+ * (los bytes que dejó el edit), pide el formateo, valida el anclaje de cada
63
+ * `newText` contra el resultado y solo entonces escribe.
64
+ */
65
+ export declare function formatearTrasEditar(rutaAbsoluta: string, edicionesAplicadas: EntradaEdicion[], cwd: string, opciones?: {
66
+ formato?: Partial<OpcionesFormato>;
67
+ activo?: boolean;
68
+ conectarCliente?: ConectarImpl;
69
+ descubridor?: typeof descubrirParaFichero;
70
+ }): Promise<ResultadoFormatoEscritura>;
71
+ export {};
72
+ //# sourceMappingURL=formato.d.ts.map