@hoilab/ada-cli 0.85.0 → 0.85.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1682) hide show
  1. package/dist/ada-publico.d.ts.map +1 -1
  2. package/dist/ada-publico.js.map +1 -1
  3. package/dist/bun/cli.d.ts.map +1 -1
  4. package/dist/bun/cli.js.map +1 -1
  5. package/dist/bun/register-bedrock.d.ts.map +1 -1
  6. package/dist/bun/register-bedrock.js.map +1 -1
  7. package/dist/bun/restore-sandbox-env.d.ts.map +1 -1
  8. package/dist/bun/restore-sandbox-env.js.map +1 -1
  9. package/dist/cli/args.d.ts.map +1 -1
  10. package/dist/cli/args.js.map +1 -1
  11. package/dist/cli/audit-command.d.ts.map +1 -1
  12. package/dist/cli/audit-command.js.map +1 -1
  13. package/dist/cli/auth-check.d.ts.map +1 -1
  14. package/dist/cli/auth-check.js.map +1 -1
  15. package/dist/cli/auth-command.d.ts.map +1 -1
  16. package/dist/cli/auth-command.js.map +1 -1
  17. package/dist/cli/banco-command.d.ts.map +1 -1
  18. package/dist/cli/banco-command.js.map +1 -1
  19. package/dist/cli/cleanse-command.d.ts.map +1 -1
  20. package/dist/cli/cleanse-command.js +5 -2
  21. package/dist/cli/cleanse-command.js.map +1 -1
  22. package/dist/cli/commit-command.d.ts +8 -6
  23. package/dist/cli/commit-command.d.ts.map +1 -1
  24. package/dist/cli/commit-command.js +124 -92
  25. package/dist/cli/commit-command.js.map +1 -1
  26. package/dist/cli/completion.d.ts +20 -0
  27. package/dist/cli/completion.d.ts.map +1 -0
  28. package/dist/cli/completion.js +75 -0
  29. package/dist/cli/completion.js.map +1 -0
  30. package/dist/cli/computer-command.d.ts.map +1 -1
  31. package/dist/cli/computer-command.js.map +1 -1
  32. package/dist/cli/config-selector.d.ts.map +1 -1
  33. package/dist/cli/config-selector.js.map +1 -1
  34. package/dist/cli/credential-print.d.ts.map +1 -1
  35. package/dist/cli/credential-print.js.map +1 -1
  36. package/dist/cli/discover-command.d.ts.map +1 -1
  37. package/dist/cli/discover-command.js +5 -1
  38. package/dist/cli/discover-command.js.map +1 -1
  39. package/dist/cli/experimental/auth.d.ts.map +1 -1
  40. package/dist/cli/experimental/auth.js.map +1 -1
  41. package/dist/cli/experimental/cli.d.ts +1 -1
  42. package/dist/cli/experimental/cli.d.ts.map +1 -1
  43. package/dist/cli/experimental/cli.js.map +1 -1
  44. package/dist/cli/experimental/command-options.d.ts.map +1 -1
  45. package/dist/cli/experimental/command-options.js.map +1 -1
  46. package/dist/cli/experimental/command.d.ts.map +1 -1
  47. package/dist/cli/experimental/command.js.map +1 -1
  48. package/dist/cli/experimental/commands/client.d.ts.map +1 -1
  49. package/dist/cli/experimental/commands/client.js.map +1 -1
  50. package/dist/cli/experimental/commands/pi.d.ts.map +1 -1
  51. package/dist/cli/experimental/commands/pi.js.map +1 -1
  52. package/dist/cli/experimental/commands/server.d.ts.map +1 -1
  53. package/dist/cli/experimental/commands/server.js.map +1 -1
  54. package/dist/cli/experimental/transport-address.d.ts.map +1 -1
  55. package/dist/cli/experimental/transport-address.js.map +1 -1
  56. package/dist/cli/file-processor.d.ts.map +1 -1
  57. package/dist/cli/file-processor.js.map +1 -1
  58. package/dist/cli/guardrails.d.ts +14 -0
  59. package/dist/cli/guardrails.d.ts.map +1 -0
  60. package/dist/cli/guardrails.js +47 -0
  61. package/dist/cli/guardrails.js.map +1 -0
  62. package/dist/cli/hashline-command.d.ts.map +1 -1
  63. package/dist/cli/hashline-command.js.map +1 -1
  64. package/dist/cli/home-screen.d.ts.map +1 -1
  65. package/dist/cli/home-screen.js +1 -0
  66. package/dist/cli/home-screen.js.map +1 -1
  67. package/dist/cli/import-command.d.ts.map +1 -1
  68. package/dist/cli/import-command.js.map +1 -1
  69. package/dist/cli/initial-message.d.ts +1 -1
  70. package/dist/cli/initial-message.d.ts.map +1 -1
  71. package/dist/cli/initial-message.js.map +1 -1
  72. package/dist/cli/list-models.d.ts.map +1 -1
  73. package/dist/cli/list-models.js.map +1 -1
  74. package/dist/cli/politica-command.d.ts.map +1 -1
  75. package/dist/cli/politica-command.js.map +1 -1
  76. package/dist/cli/project-trust.d.ts.map +1 -1
  77. package/dist/cli/project-trust.js.map +1 -1
  78. package/dist/cli/refine-command.d.ts.map +1 -1
  79. package/dist/cli/refine-command.js.map +1 -1
  80. package/dist/cli/review-command.d.ts.map +1 -1
  81. package/dist/cli/review-command.js +77 -13
  82. package/dist/cli/review-command.js.map +1 -1
  83. package/dist/cli/schedule-command.d.ts.map +1 -1
  84. package/dist/cli/schedule-command.js.map +1 -1
  85. package/dist/cli/serve-command.d.ts +0 -1
  86. package/dist/cli/serve-command.d.ts.map +1 -1
  87. package/dist/cli/serve-command.js +12 -6
  88. package/dist/cli/serve-command.js.map +1 -1
  89. package/dist/cli/session-picker.d.ts.map +1 -1
  90. package/dist/cli/session-picker.js.map +1 -1
  91. package/dist/cli/startup-ui.d.ts.map +1 -1
  92. package/dist/cli/startup-ui.js.map +1 -1
  93. package/dist/cli/telegram-command.d.ts.map +1 -1
  94. package/dist/cli/telegram-command.js.map +1 -1
  95. package/dist/cli/telemetria-command.d.ts.map +1 -1
  96. package/dist/cli/telemetria-command.js.map +1 -1
  97. package/dist/cli/undo-command.d.ts.map +1 -1
  98. package/dist/cli/undo-command.js.map +1 -1
  99. package/dist/cli/update-cli.d.ts +82 -0
  100. package/dist/cli/update-cli.d.ts.map +1 -0
  101. package/dist/cli/update-cli.js +372 -0
  102. package/dist/cli/update-cli.js.map +1 -0
  103. package/dist/cli/usage-command.d.ts.map +1 -1
  104. package/dist/cli/usage-command.js +75 -6
  105. package/dist/cli/usage-command.js.map +1 -1
  106. package/dist/cli/wiki-command.d.ts.map +1 -1
  107. package/dist/cli/wiki-command.js.map +1 -1
  108. package/dist/cli.d.ts +0 -6
  109. package/dist/cli.d.ts.map +1 -1
  110. package/dist/cli.js +0 -0
  111. package/dist/cli.js.map +1 -1
  112. package/dist/client/index.d.ts.map +1 -1
  113. package/dist/client/index.js.map +1 -1
  114. package/dist/client/remote-session.d.ts.map +1 -1
  115. package/dist/client/remote-session.js.map +1 -1
  116. package/dist/client/transcript.d.ts.map +1 -1
  117. package/dist/client/transcript.js.map +1 -1
  118. package/dist/config.d.ts.map +1 -1
  119. package/dist/config.js.map +1 -1
  120. package/dist/core/ada.d.ts +5 -0
  121. package/dist/core/ada.d.ts.map +1 -1
  122. package/dist/core/ada.js +5 -0
  123. package/dist/core/ada.js.map +1 -1
  124. package/dist/core/advisor/guarda.d.ts.map +1 -1
  125. package/dist/core/advisor/guarda.js.map +1 -1
  126. package/dist/core/advisor/runtime.d.ts.map +1 -1
  127. package/dist/core/advisor/runtime.js.map +1 -1
  128. package/dist/core/advisor/sesion.d.ts.map +1 -1
  129. package/dist/core/advisor/sesion.js.map +1 -1
  130. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  131. package/dist/core/agent-session-runtime.js.map +1 -1
  132. package/dist/core/agent-session-services.d.ts.map +1 -1
  133. package/dist/core/agent-session-services.js +33 -0
  134. package/dist/core/agent-session-services.js.map +1 -1
  135. package/dist/core/agent-session.d.ts +67 -0
  136. package/dist/core/agent-session.d.ts.map +1 -1
  137. package/dist/core/agent-session.js +43 -2
  138. package/dist/core/agent-session.js.map +1 -1
  139. package/dist/core/agents/loader.d.ts.map +1 -1
  140. package/dist/core/agents/loader.js.map +1 -1
  141. package/dist/core/appendonly/append-only-context.d.ts +118 -0
  142. package/dist/core/appendonly/append-only-context.d.ts.map +1 -0
  143. package/dist/core/appendonly/append-only-context.js +256 -0
  144. package/dist/core/appendonly/append-only-context.js.map +1 -0
  145. package/dist/core/appendonly/auto.d.ts +30 -0
  146. package/dist/core/appendonly/auto.d.ts.map +1 -0
  147. package/dist/core/appendonly/auto.js +68 -0
  148. package/dist/core/appendonly/auto.js.map +1 -0
  149. package/dist/core/appendonly/extension.d.ts +29 -0
  150. package/dist/core/appendonly/extension.d.ts.map +1 -0
  151. package/dist/core/appendonly/extension.js +51 -0
  152. package/dist/core/appendonly/extension.js.map +1 -0
  153. package/dist/core/appendonly/index.d.ts +41 -0
  154. package/dist/core/appendonly/index.d.ts.map +1 -0
  155. package/dist/core/appendonly/index.js +42 -0
  156. package/dist/core/appendonly/index.js.map +1 -0
  157. package/dist/core/aprobacion/generados.d.ts.map +1 -1
  158. package/dist/core/aprobacion/generados.js.map +1 -1
  159. package/dist/core/aprobacion/politica-de-maquina.d.ts.map +1 -1
  160. package/dist/core/aprobacion/politica-de-maquina.js.map +1 -1
  161. package/dist/core/aprobacion/politica.d.ts +1 -1
  162. package/dist/core/aprobacion/politica.d.ts.map +1 -1
  163. package/dist/core/aprobacion/politica.js.map +1 -1
  164. package/dist/core/arranque/atajos.d.ts.map +1 -1
  165. package/dist/core/arranque/atajos.js +20 -0
  166. package/dist/core/arranque/atajos.js.map +1 -1
  167. package/dist/core/audit/exportacion.d.ts.map +1 -1
  168. package/dist/core/audit/exportacion.js +5 -3
  169. package/dist/core/audit/exportacion.js.map +1 -1
  170. package/dist/core/audit/libro.d.ts +7 -0
  171. package/dist/core/audit/libro.d.ts.map +1 -1
  172. package/dist/core/audit/libro.js.map +1 -1
  173. package/dist/core/audit/registro-sesion.d.ts.map +1 -1
  174. package/dist/core/audit/registro-sesion.js.map +1 -1
  175. package/dist/core/audit/retencion.d.ts.map +1 -1
  176. package/dist/core/audit/retencion.js.map +1 -1
  177. package/dist/core/audit/rutas.d.ts.map +1 -1
  178. package/dist/core/audit/rutas.js.map +1 -1
  179. package/dist/core/auth-guidance.d.ts.map +1 -1
  180. package/dist/core/auth-guidance.js.map +1 -1
  181. package/dist/core/auth-storage.d.ts.map +1 -1
  182. package/dist/core/auth-storage.js.map +1 -1
  183. package/dist/core/banco/almacenamiento.d.ts.map +1 -1
  184. package/dist/core/banco/almacenamiento.js.map +1 -1
  185. package/dist/core/banco/analisis.d.ts.map +1 -1
  186. package/dist/core/banco/analisis.js.map +1 -1
  187. package/dist/core/banco/asides.d.ts +64 -0
  188. package/dist/core/banco/asides.d.ts.map +1 -0
  189. package/dist/core/banco/asides.js +113 -0
  190. package/dist/core/banco/asides.js.map +1 -0
  191. package/dist/core/banco/bloques.d.ts.map +1 -1
  192. package/dist/core/banco/bloques.js.map +1 -1
  193. package/dist/core/banco/cargas.d.ts.map +1 -1
  194. package/dist/core/banco/cargas.js.map +1 -1
  195. package/dist/core/banco/comparar.d.ts.map +1 -1
  196. package/dist/core/banco/comparar.js.map +1 -1
  197. package/dist/core/banco/cow-isolation.d.ts +74 -0
  198. package/dist/core/banco/cow-isolation.d.ts.map +1 -0
  199. package/dist/core/banco/cow-isolation.js +259 -0
  200. package/dist/core/banco/cow-isolation.js.map +1 -0
  201. package/dist/core/banco/ejecutar.d.ts.map +1 -1
  202. package/dist/core/banco/ejecutar.js.map +1 -1
  203. package/dist/core/banco/generar.d.ts.map +1 -1
  204. package/dist/core/banco/generar.js.map +1 -1
  205. package/dist/core/banco/mutaciones.d.ts.map +1 -1
  206. package/dist/core/banco/mutaciones.js.map +1 -1
  207. package/dist/core/banco/park-revive.d.ts +67 -0
  208. package/dist/core/banco/park-revive.d.ts.map +1 -0
  209. package/dist/core/banco/park-revive.js +130 -0
  210. package/dist/core/banco/park-revive.js.map +1 -0
  211. package/dist/core/banco/pruning.d.ts +48 -0
  212. package/dist/core/banco/pruning.d.ts.map +1 -0
  213. package/dist/core/banco/pruning.js +146 -0
  214. package/dist/core/banco/pruning.js.map +1 -0
  215. package/dist/core/banco/steering.d.ts +81 -0
  216. package/dist/core/banco/steering.d.ts.map +1 -0
  217. package/dist/core/banco/steering.js +96 -0
  218. package/dist/core/banco/steering.js.map +1 -0
  219. package/dist/core/banco/tipos.d.ts.map +1 -1
  220. package/dist/core/banco/tipos.js.map +1 -1
  221. package/dist/core/bash-executor.d.ts.map +1 -1
  222. package/dist/core/bash-executor.js.map +1 -1
  223. package/dist/core/blobs/almacen.d.ts.map +1 -1
  224. package/dist/core/blobs/almacen.js.map +1 -1
  225. package/dist/core/blobs/broker.d.ts +1 -0
  226. package/dist/core/blobs/broker.d.ts.map +1 -1
  227. package/dist/core/blobs/broker.js +1 -1
  228. package/dist/core/blobs/broker.js.map +1 -1
  229. package/dist/core/blobs/index.d.ts +1 -0
  230. package/dist/core/blobs/index.d.ts.map +1 -1
  231. package/dist/core/blobs/index.js +1 -0
  232. package/dist/core/blobs/index.js.map +1 -1
  233. package/dist/core/blobs/payload.d.ts.map +1 -1
  234. package/dist/core/blobs/payload.js.map +1 -1
  235. package/dist/core/blobs/proveedor.d.ts.map +1 -1
  236. package/dist/core/blobs/proveedor.js.map +1 -1
  237. package/dist/core/blobs/uploaders.d.ts +105 -0
  238. package/dist/core/blobs/uploaders.d.ts.map +1 -0
  239. package/dist/core/blobs/uploaders.js +224 -0
  240. package/dist/core/blobs/uploaders.js.map +1 -0
  241. package/dist/core/broker/broker.d.ts +54 -0
  242. package/dist/core/broker/broker.d.ts.map +1 -0
  243. package/dist/core/broker/broker.js +216 -0
  244. package/dist/core/broker/broker.js.map +1 -0
  245. package/dist/core/broker/index.d.ts +21 -0
  246. package/dist/core/broker/index.d.ts.map +1 -0
  247. package/dist/core/broker/index.js +33 -0
  248. package/dist/core/broker/index.js.map +1 -0
  249. package/dist/core/broker/ps.d.ts +20 -0
  250. package/dist/core/broker/ps.d.ts.map +1 -0
  251. package/dist/core/broker/ps.js +55 -0
  252. package/dist/core/broker/ps.js.map +1 -0
  253. package/dist/core/broker/types.d.ts +45 -0
  254. package/dist/core/broker/types.d.ts.map +1 -0
  255. package/dist/core/broker/types.js +19 -0
  256. package/dist/core/broker/types.js.map +1 -0
  257. package/dist/core/browser/cdp.d.ts.map +1 -1
  258. package/dist/core/browser/cdp.js.map +1 -1
  259. package/dist/core/browser/politica.d.ts.map +1 -1
  260. package/dist/core/browser/politica.js.map +1 -1
  261. package/dist/core/browser/sesion.d.ts.map +1 -1
  262. package/dist/core/browser/sesion.js.map +1 -1
  263. package/dist/core/browser/tools.d.ts.map +1 -1
  264. package/dist/core/browser/tools.js.map +1 -1
  265. package/dist/core/cache-stats.d.ts.map +1 -1
  266. package/dist/core/cache-stats.js.map +1 -1
  267. package/dist/core/capability/capability.test.d.ts +12 -0
  268. package/dist/core/capability/capability.test.d.ts.map +1 -0
  269. package/dist/core/capability/capability.test.js +258 -0
  270. package/dist/core/capability/capability.test.js.map +1 -0
  271. package/dist/core/capability/fs.d.ts +32 -0
  272. package/dist/core/capability/fs.d.ts.map +1 -0
  273. package/dist/core/capability/fs.js +106 -0
  274. package/dist/core/capability/fs.js.map +1 -0
  275. package/dist/core/capability/index.d.ts +68 -0
  276. package/dist/core/capability/index.d.ts.map +1 -0
  277. package/dist/core/capability/index.js +258 -0
  278. package/dist/core/capability/index.js.map +1 -0
  279. package/dist/core/capability/types.d.ts +168 -0
  280. package/dist/core/capability/types.d.ts.map +1 -0
  281. package/dist/core/capability/types.js +16 -0
  282. package/dist/core/capability/types.js.map +1 -0
  283. package/dist/core/carga-plugins/index.d.ts +49 -0
  284. package/dist/core/carga-plugins/index.d.ts.map +1 -0
  285. package/dist/core/carga-plugins/index.js +85 -0
  286. package/dist/core/carga-plugins/index.js.map +1 -0
  287. package/dist/core/carga-plugins/invalidacion.d.ts +60 -0
  288. package/dist/core/carga-plugins/invalidacion.d.ts.map +1 -0
  289. package/dist/core/carga-plugins/invalidacion.js +94 -0
  290. package/dist/core/carga-plugins/invalidacion.js.map +1 -0
  291. package/dist/core/carga-plugins/paralelo.d.ts +48 -0
  292. package/dist/core/carga-plugins/paralelo.d.ts.map +1 -0
  293. package/dist/core/carga-plugins/paralelo.js +47 -0
  294. package/dist/core/carga-plugins/paralelo.js.map +1 -0
  295. package/dist/core/colaboracion/autoresearch.d.ts +56 -0
  296. package/dist/core/colaboracion/autoresearch.d.ts.map +1 -0
  297. package/dist/core/colaboracion/autoresearch.js +95 -0
  298. package/dist/core/colaboracion/autoresearch.js.map +1 -0
  299. package/dist/core/colaboracion/index.d.ts +10 -0
  300. package/dist/core/colaboracion/index.d.ts.map +1 -0
  301. package/dist/core/colaboracion/index.js +7 -0
  302. package/dist/core/colaboracion/index.js.map +1 -0
  303. package/dist/core/colaboracion/kernels.d.ts +63 -0
  304. package/dist/core/colaboracion/kernels.d.ts.map +1 -0
  305. package/dist/core/colaboracion/kernels.js +99 -0
  306. package/dist/core/colaboracion/kernels.js.map +1 -0
  307. package/dist/core/colaboracion/rele/index.d.ts +8 -0
  308. package/dist/core/colaboracion/rele/index.d.ts.map +1 -0
  309. package/dist/core/colaboracion/rele/index.js +6 -0
  310. package/dist/core/colaboracion/rele/index.js.map +1 -0
  311. package/dist/core/colaboracion/rele/rele-servidor.d.ts +69 -0
  312. package/dist/core/colaboracion/rele/rele-servidor.d.ts.map +1 -0
  313. package/dist/core/colaboracion/rele/rele-servidor.js +197 -0
  314. package/dist/core/colaboracion/rele/rele-servidor.js.map +1 -0
  315. package/dist/core/colaboracion/rele/suscriptor.d.ts +31 -0
  316. package/dist/core/colaboracion/rele/suscriptor.d.ts.map +1 -0
  317. package/dist/core/colaboracion/rele/suscriptor.js +173 -0
  318. package/dist/core/colaboracion/rele/suscriptor.js.map +1 -0
  319. package/dist/core/colaboracion/sesion-colaborativa.d.ts +61 -0
  320. package/dist/core/colaboracion/sesion-colaborativa.d.ts.map +1 -0
  321. package/dist/core/colaboracion/sesion-colaborativa.js +127 -0
  322. package/dist/core/colaboracion/sesion-colaborativa.js.map +1 -0
  323. package/dist/core/commits/agentic.d.ts +101 -0
  324. package/dist/core/commits/agentic.d.ts.map +1 -0
  325. package/dist/core/commits/agentic.js +268 -0
  326. package/dist/core/commits/agentic.js.map +1 -0
  327. package/dist/core/commits/changelog.d.ts +37 -0
  328. package/dist/core/commits/changelog.d.ts.map +1 -0
  329. package/dist/core/commits/changelog.js +155 -0
  330. package/dist/core/commits/changelog.js.map +1 -0
  331. package/dist/core/commits/diff.d.ts.map +1 -0
  332. package/dist/core/commits/diff.js.map +1 -0
  333. package/dist/core/commits/git.d.ts +43 -0
  334. package/dist/core/commits/git.d.ts.map +1 -0
  335. package/dist/core/commits/git.js +61 -0
  336. package/dist/core/commits/git.js.map +1 -0
  337. package/dist/core/commits/split.d.ts +45 -0
  338. package/dist/core/commits/split.d.ts.map +1 -0
  339. package/dist/core/commits/split.js +128 -0
  340. package/dist/core/commits/split.js.map +1 -0
  341. package/dist/core/compactacion/comandos.d.ts +53 -0
  342. package/dist/core/compactacion/comandos.d.ts.map +1 -0
  343. package/dist/core/compactacion/comandos.js +155 -0
  344. package/dist/core/compactacion/comandos.js.map +1 -0
  345. package/dist/core/compactacion/extension.d.ts +28 -0
  346. package/dist/core/compactacion/extension.d.ts.map +1 -0
  347. package/dist/core/compactacion/extension.js +159 -0
  348. package/dist/core/compactacion/extension.js.map +1 -0
  349. package/dist/core/compactacion/handoff.d.ts +61 -0
  350. package/dist/core/compactacion/handoff.d.ts.map +1 -0
  351. package/dist/core/compactacion/handoff.js +139 -0
  352. package/dist/core/compactacion/handoff.js.map +1 -0
  353. package/dist/core/compactacion/index.d.ts +15 -0
  354. package/dist/core/compactacion/index.d.ts.map +1 -0
  355. package/dist/core/compactacion/index.js +15 -0
  356. package/dist/core/compactacion/index.js.map +1 -0
  357. package/dist/core/compactacion/prune.d.ts +38 -0
  358. package/dist/core/compactacion/prune.d.ts.map +1 -0
  359. package/dist/core/compactacion/prune.js +81 -0
  360. package/dist/core/compactacion/prune.js.map +1 -0
  361. package/dist/core/compactacion/shake.d.ts +40 -0
  362. package/dist/core/compactacion/shake.d.ts.map +1 -0
  363. package/dist/core/compactacion/shake.js +106 -0
  364. package/dist/core/compactacion/shake.js.map +1 -0
  365. package/dist/core/compactacion/tipos.d.ts +54 -0
  366. package/dist/core/compactacion/tipos.d.ts.map +1 -0
  367. package/dist/core/compactacion/tipos.js +44 -0
  368. package/dist/core/compactacion/tipos.js.map +1 -0
  369. package/dist/core/compactar/index.d.ts.map +1 -1
  370. package/dist/core/compactar/index.js.map +1 -1
  371. package/dist/core/compactar/registro-denso.d.ts.map +1 -1
  372. package/dist/core/compactar/registro-denso.js.map +1 -1
  373. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  374. package/dist/core/compaction/branch-summarization.js.map +1 -1
  375. package/dist/core/compaction/compaction.d.ts.map +1 -1
  376. package/dist/core/compaction/compaction.js.map +1 -1
  377. package/dist/core/compaction/index.d.ts.map +1 -1
  378. package/dist/core/compaction/index.js.map +1 -1
  379. package/dist/core/compaction/utils.d.ts.map +1 -1
  380. package/dist/core/compaction/utils.js.map +1 -1
  381. package/dist/core/computer/captura.d.ts.map +1 -1
  382. package/dist/core/computer/captura.js.map +1 -1
  383. package/dist/core/computer/driver.d.ts.map +1 -1
  384. package/dist/core/computer/driver.js.map +1 -1
  385. package/dist/core/computer/motor/actions.d.ts.map +1 -1
  386. package/dist/core/computer/motor/actions.js.map +1 -1
  387. package/dist/core/computer/motor/bridge.d.ts +2 -2
  388. package/dist/core/computer/motor/bridge.d.ts.map +1 -1
  389. package/dist/core/computer/motor/bridge.js.map +1 -1
  390. package/dist/core/computer/motor/cdp.d.ts.map +1 -1
  391. package/dist/core/computer/motor/cdp.js.map +1 -1
  392. package/dist/core/computer/motor/config.d.ts.map +1 -1
  393. package/dist/core/computer/motor/config.js.map +1 -1
  394. package/dist/core/computer/motor/contract.d.ts.map +1 -1
  395. package/dist/core/computer/motor/contract.js.map +1 -1
  396. package/dist/core/computer/motor/note.d.ts.map +1 -1
  397. package/dist/core/computer/motor/note.js.map +1 -1
  398. package/dist/core/computer/motor/outline.d.ts.map +1 -1
  399. package/dist/core/computer/motor/outline.js.map +1 -1
  400. package/dist/core/computer/motor/output.d.ts.map +1 -1
  401. package/dist/core/computer/motor/output.js.map +1 -1
  402. package/dist/core/computer/motor/permissions.d.ts.map +1 -1
  403. package/dist/core/computer/motor/permissions.js.map +1 -1
  404. package/dist/core/computer/motor/platform/architecture.d.ts.map +1 -1
  405. package/dist/core/computer/motor/platform/architecture.js.map +1 -1
  406. package/dist/core/computer/motor/platform/coerce.d.ts.map +1 -1
  407. package/dist/core/computer/motor/platform/coerce.js.map +1 -1
  408. package/dist/core/computer/motor/platform/index.d.ts.map +1 -1
  409. package/dist/core/computer/motor/platform/index.js.map +1 -1
  410. package/dist/core/computer/motor/platform/linux/backend.d.ts.map +1 -1
  411. package/dist/core/computer/motor/platform/linux/backend.js.map +1 -1
  412. package/dist/core/computer/motor/platform/linux/helper.d.ts.map +1 -1
  413. package/dist/core/computer/motor/platform/linux/helper.js.map +1 -1
  414. package/dist/core/computer/motor/platform/macos/backend.d.ts.map +1 -1
  415. package/dist/core/computer/motor/platform/macos/backend.js.map +1 -1
  416. package/dist/core/computer/motor/platform/macos/browser.d.ts.map +1 -1
  417. package/dist/core/computer/motor/platform/macos/browser.js.map +1 -1
  418. package/dist/core/computer/motor/platform/macos/helper.d.ts.map +1 -1
  419. package/dist/core/computer/motor/platform/macos/helper.js.map +1 -1
  420. package/dist/core/computer/motor/platform/macos/permissions.d.ts.map +1 -1
  421. package/dist/core/computer/motor/platform/macos/permissions.js.map +1 -1
  422. package/dist/core/computer/motor/platform/types.d.ts.map +1 -1
  423. package/dist/core/computer/motor/platform/types.js.map +1 -1
  424. package/dist/core/computer/motor/platform/windows/backend.d.ts.map +1 -1
  425. package/dist/core/computer/motor/platform/windows/backend.js.map +1 -1
  426. package/dist/core/computer/motor/platform/windows/helper.d.ts.map +1 -1
  427. package/dist/core/computer/motor/platform/windows/helper.js.map +1 -1
  428. package/dist/core/computer/motor/root-selection.d.ts.map +1 -1
  429. package/dist/core/computer/motor/root-selection.js.map +1 -1
  430. package/dist/core/computer/motor/runtime.d.ts.map +1 -1
  431. package/dist/core/computer/motor/runtime.js.map +1 -1
  432. package/dist/core/computer/motor/state.d.ts.map +1 -1
  433. package/dist/core/computer/motor/state.js.map +1 -1
  434. package/dist/core/computer/motor/view.d.ts.map +1 -1
  435. package/dist/core/computer/motor/view.js.map +1 -1
  436. package/dist/core/computer/motor-ada.d.ts.map +1 -1
  437. package/dist/core/computer/motor-ada.js.map +1 -1
  438. package/dist/core/computer/politica.d.ts.map +1 -1
  439. package/dist/core/computer/politica.js.map +1 -1
  440. package/dist/core/computer/tools.d.ts.map +1 -1
  441. package/dist/core/computer/tools.js.map +1 -1
  442. package/dist/core/config/quarantine.d.ts +57 -0
  443. package/dist/core/config/quarantine.d.ts.map +1 -0
  444. package/dist/core/config/quarantine.js +161 -0
  445. package/dist/core/config/quarantine.js.map +1 -0
  446. package/dist/core/config-viva/ambito.d.ts +46 -0
  447. package/dist/core/config-viva/ambito.d.ts.map +1 -0
  448. package/dist/core/config-viva/ambito.js +62 -0
  449. package/dist/core/config-viva/ambito.js.map +1 -0
  450. package/dist/core/config-viva/cache-negativa.d.ts +50 -0
  451. package/dist/core/config-viva/cache-negativa.d.ts.map +1 -0
  452. package/dist/core/config-viva/cache-negativa.js +78 -0
  453. package/dist/core/config-viva/cache-negativa.js.map +1 -0
  454. package/dist/core/config-viva/headers-vivos.d.ts +41 -0
  455. package/dist/core/config-viva/headers-vivos.d.ts.map +1 -0
  456. package/dist/core/config-viva/headers-vivos.js +43 -0
  457. package/dist/core/config-viva/headers-vivos.js.map +1 -0
  458. package/dist/core/config-viva/index.d.ts +16 -0
  459. package/dist/core/config-viva/index.d.ts.map +1 -0
  460. package/dist/core/config-viva/index.js +16 -0
  461. package/dist/core/config-viva/index.js.map +1 -0
  462. package/dist/core/config-viva/proveedor.d.ts +48 -0
  463. package/dist/core/config-viva/proveedor.d.ts.map +1 -0
  464. package/dist/core/config-viva/proveedor.js +78 -0
  465. package/dist/core/config-viva/proveedor.js.map +1 -0
  466. package/dist/core/context-breakdown.d.ts.map +1 -1
  467. package/dist/core/context-breakdown.js.map +1 -1
  468. package/dist/core/credenciales/cliente.d.ts.map +1 -1
  469. package/dist/core/credenciales/cliente.js.map +1 -1
  470. package/dist/core/credenciales/pool.d.ts +36 -1
  471. package/dist/core/credenciales/pool.d.ts.map +1 -1
  472. package/dist/core/credenciales/pool.js +56 -7
  473. package/dist/core/credenciales/pool.js.map +1 -1
  474. package/dist/core/credenciales/ranking.d.ts +56 -0
  475. package/dist/core/credenciales/ranking.d.ts.map +1 -0
  476. package/dist/core/credenciales/ranking.js +94 -0
  477. package/dist/core/credenciales/ranking.js.map +1 -0
  478. package/dist/core/credenciales/ratelimit.d.ts +54 -0
  479. package/dist/core/credenciales/ratelimit.d.ts.map +1 -0
  480. package/dist/core/credenciales/ratelimit.js +116 -0
  481. package/dist/core/credenciales/ratelimit.js.map +1 -0
  482. package/dist/core/credenciales/reposo.d.ts.map +1 -1
  483. package/dist/core/credenciales/reposo.js.map +1 -1
  484. package/dist/core/credenciales/servidor.d.ts +8 -0
  485. package/dist/core/credenciales/servidor.d.ts.map +1 -1
  486. package/dist/core/credenciales/servidor.js +9 -1
  487. package/dist/core/credenciales/servidor.js.map +1 -1
  488. package/dist/core/defaults.d.ts.map +1 -1
  489. package/dist/core/defaults.js.map +1 -1
  490. package/dist/core/descubrimiento/comandos.d.ts.map +1 -1
  491. package/dist/core/descubrimiento/comandos.js.map +1 -1
  492. package/dist/core/descubrimiento/mcp.d.ts +12 -0
  493. package/dist/core/descubrimiento/mcp.d.ts.map +1 -1
  494. package/dist/core/descubrimiento/mcp.js +32 -0
  495. package/dist/core/descubrimiento/mcp.js.map +1 -1
  496. package/dist/core/descubrimiento/reglas.d.ts.map +1 -1
  497. package/dist/core/descubrimiento/reglas.js.map +1 -1
  498. package/dist/core/descubrimiento/runtimes/index.d.ts +24 -0
  499. package/dist/core/descubrimiento/runtimes/index.d.ts.map +1 -0
  500. package/dist/core/descubrimiento/runtimes/index.js +109 -0
  501. package/dist/core/descubrimiento/runtimes/index.js.map +1 -0
  502. package/dist/core/descubrimiento/runtimes/litellm.d.ts +12 -0
  503. package/dist/core/descubrimiento/runtimes/litellm.d.ts.map +1 -0
  504. package/dist/core/descubrimiento/runtimes/litellm.js +185 -0
  505. package/dist/core/descubrimiento/runtimes/litellm.js.map +1 -0
  506. package/dist/core/descubrimiento/runtimes/lm-studio.d.ts +13 -0
  507. package/dist/core/descubrimiento/runtimes/lm-studio.d.ts.map +1 -0
  508. package/dist/core/descubrimiento/runtimes/lm-studio.js +142 -0
  509. package/dist/core/descubrimiento/runtimes/lm-studio.js.map +1 -0
  510. package/dist/core/descubrimiento/runtimes/ollama.d.ts +8 -0
  511. package/dist/core/descubrimiento/runtimes/ollama.d.ts.map +1 -0
  512. package/dist/core/descubrimiento/runtimes/ollama.js +96 -0
  513. package/dist/core/descubrimiento/runtimes/ollama.js.map +1 -0
  514. package/dist/core/descubrimiento/runtimes/tipos.d.ts +47 -0
  515. package/dist/core/descubrimiento/runtimes/tipos.d.ts.map +1 -0
  516. package/dist/core/descubrimiento/runtimes/tipos.js +10 -0
  517. package/dist/core/descubrimiento/runtimes/tipos.js.map +1 -0
  518. package/dist/core/descubrimiento/skills.d.ts.map +1 -1
  519. package/dist/core/descubrimiento/skills.js.map +1 -1
  520. package/dist/core/diagnostics.d.ts.map +1 -1
  521. package/dist/core/diagnostics.js.map +1 -1
  522. package/dist/core/dificultad/clasificador.d.ts.map +1 -1
  523. package/dist/core/dificultad/clasificador.js.map +1 -1
  524. package/dist/core/edicion/diario.d.ts.map +1 -1
  525. package/dist/core/edicion/diario.js.map +1 -1
  526. package/dist/core/edicion/hashline.d.ts.map +1 -1
  527. package/dist/core/edicion/hashline.js.map +1 -1
  528. package/dist/core/edicion/hueco.d.ts.map +1 -1
  529. package/dist/core/edicion/hueco.js.map +1 -1
  530. package/dist/core/edicion/ipynb.d.ts +51 -0
  531. package/dist/core/edicion/ipynb.d.ts.map +1 -0
  532. package/dist/core/edicion/ipynb.js +110 -0
  533. package/dist/core/edicion/ipynb.js.map +1 -0
  534. package/dist/core/edicion/limpiar-carga.d.ts.map +1 -1
  535. package/dist/core/edicion/limpiar-carga.js.map +1 -1
  536. package/dist/core/edicion/observador.d.ts.map +1 -1
  537. package/dist/core/edicion/observador.js.map +1 -1
  538. package/dist/core/edicion/parecido.d.ts.map +1 -1
  539. package/dist/core/edicion/parecido.js.map +1 -1
  540. package/dist/core/edicion/parseo.d.ts.map +1 -1
  541. package/dist/core/edicion/parseo.js.map +1 -1
  542. package/dist/core/edicion/portapapeles.d.ts +28 -0
  543. package/dist/core/edicion/portapapeles.d.ts.map +1 -0
  544. package/dist/core/edicion/portapapeles.js +49 -0
  545. package/dist/core/edicion/portapapeles.js.map +1 -0
  546. package/dist/core/edicion/reparacion.d.ts.map +1 -1
  547. package/dist/core/edicion/reparacion.js.map +1 -1
  548. package/dist/core/edicion/rutas-difusas.d.ts +44 -0
  549. package/dist/core/edicion/rutas-difusas.d.ts.map +1 -0
  550. package/dist/core/edicion/rutas-difusas.js +93 -0
  551. package/dist/core/edicion/rutas-difusas.js.map +1 -0
  552. package/dist/core/edicion/sangria.d.ts.map +1 -1
  553. package/dist/core/edicion/sangria.js.map +1 -1
  554. package/dist/core/edicion/tipos.d.ts.map +1 -1
  555. package/dist/core/edicion/tipos.js.map +1 -1
  556. package/dist/core/engine-personality.d.ts.map +1 -1
  557. package/dist/core/engine-personality.js.map +1 -1
  558. package/dist/core/errores/proveedor.d.ts.map +1 -1
  559. package/dist/core/errores/proveedor.js.map +1 -1
  560. package/dist/core/estructural/buscar.d.ts.map +1 -1
  561. package/dist/core/estructural/buscar.js.map +1 -1
  562. package/dist/core/estructural/editar.d.ts.map +1 -1
  563. package/dist/core/estructural/editar.js.map +1 -1
  564. package/dist/core/estructural/tools.d.ts.map +1 -1
  565. package/dist/core/estructural/tools.js.map +1 -1
  566. package/dist/core/event-bus.d.ts.map +1 -1
  567. package/dist/core/event-bus.js.map +1 -1
  568. package/dist/core/exec.d.ts.map +1 -1
  569. package/dist/core/exec.js.map +1 -1
  570. package/dist/core/experimental.d.ts.map +1 -1
  571. package/dist/core/experimental.js.map +1 -1
  572. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  573. package/dist/core/export-html/ansi-to-html.js.map +1 -1
  574. package/dist/core/export-html/index.d.ts.map +1 -1
  575. package/dist/core/export-html/index.js +183 -13
  576. package/dist/core/export-html/index.js.map +1 -1
  577. package/dist/core/export-html/template.css +88 -4
  578. package/dist/core/export-html/template.html +3 -1
  579. package/dist/core/export-html/template.js +84 -0
  580. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  581. package/dist/core/export-html/tool-renderer.js.map +1 -1
  582. package/dist/core/extensiones/suplantacion.d.ts.map +1 -1
  583. package/dist/core/extensiones/suplantacion.js.map +1 -1
  584. package/dist/core/extensiones/vigilancia.d.ts.map +1 -1
  585. package/dist/core/extensiones/vigilancia.js.map +1 -1
  586. package/dist/core/extensions/index.d.ts.map +1 -1
  587. package/dist/core/extensions/index.js.map +1 -1
  588. package/dist/core/extensions/loader.d.ts.map +1 -1
  589. package/dist/core/extensions/loader.js.map +1 -1
  590. package/dist/core/extensions/runner.d.ts.map +1 -1
  591. package/dist/core/extensions/runner.js.map +1 -1
  592. package/dist/core/extensions/types.d.ts.map +1 -1
  593. package/dist/core/extensions/types.js.map +1 -1
  594. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  595. package/dist/core/extensions/wrapper.js.map +1 -1
  596. package/dist/core/footer-data-provider.d.ts.map +1 -1
  597. package/dist/core/footer-data-provider.js.map +1 -1
  598. package/dist/core/gc/archivo-frio.d.ts +33 -0
  599. package/dist/core/gc/archivo-frio.d.ts.map +1 -0
  600. package/dist/core/gc/archivo-frio.js +152 -0
  601. package/dist/core/gc/archivo-frio.js.map +1 -0
  602. package/dist/core/gc/blobs-gc.d.ts +25 -0
  603. package/dist/core/gc/blobs-gc.d.ts.map +1 -0
  604. package/dist/core/gc/blobs-gc.js +143 -0
  605. package/dist/core/gc/blobs-gc.js.map +1 -0
  606. package/dist/core/gc/index.d.ts +42 -0
  607. package/dist/core/gc/index.d.ts.map +1 -0
  608. package/dist/core/gc/index.js +50 -0
  609. package/dist/core/gc/index.js.map +1 -0
  610. package/dist/core/gc/lock.d.ts +19 -0
  611. package/dist/core/gc/lock.d.ts.map +1 -0
  612. package/dist/core/gc/lock.js +48 -0
  613. package/dist/core/gc/lock.js.map +1 -0
  614. package/dist/core/gc/reconciliacion.d.ts +19 -0
  615. package/dist/core/gc/reconciliacion.d.ts.map +1 -0
  616. package/dist/core/gc/reconciliacion.js +102 -0
  617. package/dist/core/gc/reconciliacion.js.map +1 -0
  618. package/dist/core/gc/wal.d.ts +15 -0
  619. package/dist/core/gc/wal.d.ts.map +1 -0
  620. package/dist/core/gc/wal.js +44 -0
  621. package/dist/core/gc/wal.js.map +1 -0
  622. package/dist/core/harness/fuentes-de-contexto.d.ts.map +1 -1
  623. package/dist/core/harness/fuentes-de-contexto.js.map +1 -1
  624. package/dist/core/harness/refine.d.ts.map +1 -1
  625. package/dist/core/harness/refine.js.map +1 -1
  626. package/dist/core/harness/store.d.ts.map +1 -1
  627. package/dist/core/harness/store.js.map +1 -1
  628. package/dist/core/higiene/index.d.ts +8 -0
  629. package/dist/core/higiene/index.d.ts.map +1 -0
  630. package/dist/core/higiene/index.js +8 -0
  631. package/dist/core/higiene/index.js.map +1 -0
  632. package/dist/core/higiene/managed-timers.d.ts +19 -0
  633. package/dist/core/higiene/managed-timers.d.ts.map +1 -0
  634. package/dist/core/higiene/managed-timers.js +68 -0
  635. package/dist/core/higiene/managed-timers.js.map +1 -0
  636. package/dist/core/higiene/race-handler.d.ts +7 -0
  637. package/dist/core/higiene/race-handler.d.ts.map +1 -0
  638. package/dist/core/higiene/race-handler.js +32 -0
  639. package/dist/core/higiene/race-handler.js.map +1 -0
  640. package/dist/core/higiene/withHostGuard.d.ts +27 -0
  641. package/dist/core/higiene/withHostGuard.d.ts.map +1 -0
  642. package/dist/core/higiene/withHostGuard.js +79 -0
  643. package/dist/core/higiene/withHostGuard.js.map +1 -0
  644. package/dist/core/hooks/contract.d.ts.map +1 -1
  645. package/dist/core/hooks/contract.js.map +1 -1
  646. package/dist/core/hooks/runner.d.ts.map +1 -1
  647. package/dist/core/hooks/runner.js.map +1 -1
  648. package/dist/core/hooks/session-hooks.d.ts.map +1 -1
  649. package/dist/core/hooks/session-hooks.js.map +1 -1
  650. package/dist/core/hooks-ts/cargador.d.ts +29 -0
  651. package/dist/core/hooks-ts/cargador.d.ts.map +1 -0
  652. package/dist/core/hooks-ts/cargador.js +51 -0
  653. package/dist/core/hooks-ts/cargador.js.map +1 -0
  654. package/dist/core/hooks-ts/index.d.ts +25 -0
  655. package/dist/core/hooks-ts/index.d.ts.map +1 -0
  656. package/dist/core/hooks-ts/index.js +25 -0
  657. package/dist/core/hooks-ts/index.js.map +1 -0
  658. package/dist/core/hooks-ts/runner.d.ts +40 -0
  659. package/dist/core/hooks-ts/runner.d.ts.map +1 -0
  660. package/dist/core/hooks-ts/runner.js +95 -0
  661. package/dist/core/hooks-ts/runner.js.map +1 -0
  662. package/dist/core/hooks-ts/tipos.d.ts +69 -0
  663. package/dist/core/hooks-ts/tipos.d.ts.map +1 -0
  664. package/dist/core/hooks-ts/tipos.js +90 -0
  665. package/dist/core/hooks-ts/tipos.js.map +1 -0
  666. package/dist/core/http-dispatcher.d.ts.map +1 -1
  667. package/dist/core/http-dispatcher.js.map +1 -1
  668. package/dist/core/importar/formatos.d.ts.map +1 -1
  669. package/dist/core/importar/formatos.js.map +1 -1
  670. package/dist/core/index.d.ts.map +1 -1
  671. package/dist/core/index.js.map +1 -1
  672. package/dist/core/interactivo/deteccion.d.ts.map +1 -1
  673. package/dist/core/interactivo/deteccion.js.map +1 -1
  674. package/dist/core/interactivo/sesion.d.ts.map +1 -1
  675. package/dist/core/interactivo/sesion.js.map +1 -1
  676. package/dist/core/interactivo/tools.d.ts.map +1 -1
  677. package/dist/core/interactivo/tools.js.map +1 -1
  678. package/dist/core/keybindings.d.ts +170 -170
  679. package/dist/core/keybindings.d.ts.map +1 -1
  680. package/dist/core/keybindings.js.map +1 -1
  681. package/dist/core/lectura/mapa.d.ts.map +1 -1
  682. package/dist/core/lectura/mapa.js.map +1 -1
  683. package/dist/core/lectura/pdf.d.ts.map +1 -1
  684. package/dist/core/lectura/pdf.js.map +1 -1
  685. package/dist/core/lectura/sniffer.d.ts +54 -0
  686. package/dist/core/lectura/sniffer.d.ts.map +1 -0
  687. package/dist/core/lectura/sniffer.js +106 -0
  688. package/dist/core/lectura/sniffer.js.map +1 -0
  689. package/dist/core/limpieza/comprobadores.d.ts +16 -2
  690. package/dist/core/limpieza/comprobadores.d.ts.map +1 -1
  691. package/dist/core/limpieza/comprobadores.js +200 -6
  692. package/dist/core/limpieza/comprobadores.js.map +1 -1
  693. package/dist/core/limpieza/flujo.d.ts +36 -0
  694. package/dist/core/limpieza/flujo.d.ts.map +1 -0
  695. package/dist/core/limpieza/flujo.js +89 -0
  696. package/dist/core/limpieza/flujo.js.map +1 -0
  697. package/dist/core/limpieza/parseo.d.ts.map +1 -1
  698. package/dist/core/limpieza/parseo.js.map +1 -1
  699. package/dist/core/limpieza/peso.d.ts +17 -0
  700. package/dist/core/limpieza/peso.d.ts.map +1 -0
  701. package/dist/core/limpieza/peso.js +52 -0
  702. package/dist/core/limpieza/peso.js.map +1 -0
  703. package/dist/core/limpieza/pool.d.ts +44 -0
  704. package/dist/core/limpieza/pool.d.ts.map +1 -0
  705. package/dist/core/limpieza/pool.js +123 -0
  706. package/dist/core/limpieza/pool.js.map +1 -0
  707. package/dist/core/limpieza/reparacion.d.ts +19 -2
  708. package/dist/core/limpieza/reparacion.d.ts.map +1 -1
  709. package/dist/core/limpieza/reparacion.js +95 -8
  710. package/dist/core/limpieza/reparacion.js.map +1 -1
  711. package/dist/core/limpieza/tablero.d.ts +47 -0
  712. package/dist/core/limpieza/tablero.d.ts.map +1 -0
  713. package/dist/core/limpieza/tablero.js +78 -0
  714. package/dist/core/limpieza/tablero.js.map +1 -0
  715. package/dist/core/limpieza/tipos.d.ts +25 -0
  716. package/dist/core/limpieza/tipos.d.ts.map +1 -1
  717. package/dist/core/limpieza/tipos.js.map +1 -1
  718. package/dist/core/lsp/cliente.d.ts +7 -0
  719. package/dist/core/lsp/cliente.d.ts.map +1 -1
  720. package/dist/core/lsp/cliente.js +4 -2
  721. package/dist/core/lsp/cliente.js.map +1 -1
  722. package/dist/core/lsp/descubrimiento.d.ts.map +1 -1
  723. package/dist/core/lsp/descubrimiento.js.map +1 -1
  724. package/dist/core/lsp/ediciones.d.ts.map +1 -1
  725. package/dist/core/lsp/ediciones.js.map +1 -1
  726. package/dist/core/lsp/extension.d.ts +9 -0
  727. package/dist/core/lsp/extension.d.ts.map +1 -1
  728. package/dist/core/lsp/extension.js +60 -4
  729. package/dist/core/lsp/extension.js.map +1 -1
  730. package/dist/core/lsp/formato.d.ts +72 -0
  731. package/dist/core/lsp/formato.d.ts.map +1 -0
  732. package/dist/core/lsp/formato.js +117 -0
  733. package/dist/core/lsp/formato.js.map +1 -0
  734. package/dist/core/lsp/tools.d.ts +3 -3
  735. package/dist/core/lsp/tools.d.ts.map +1 -1
  736. package/dist/core/lsp/tools.js.map +1 -1
  737. package/dist/core/lsp/writethrough.d.ts +165 -0
  738. package/dist/core/lsp/writethrough.d.ts.map +1 -0
  739. package/dist/core/lsp/writethrough.js +282 -0
  740. package/dist/core/lsp/writethrough.js.map +1 -0
  741. package/dist/core/marketplace/catalogo.d.ts +32 -0
  742. package/dist/core/marketplace/catalogo.d.ts.map +1 -0
  743. package/dist/core/marketplace/catalogo.js +122 -0
  744. package/dist/core/marketplace/catalogo.js.map +1 -0
  745. package/dist/core/marketplace/doctor.d.ts +47 -0
  746. package/dist/core/marketplace/doctor.d.ts.map +1 -0
  747. package/dist/core/marketplace/doctor.js +155 -0
  748. package/dist/core/marketplace/doctor.js.map +1 -0
  749. package/dist/core/marketplace/features.d.ts +22 -0
  750. package/dist/core/marketplace/features.d.ts.map +1 -0
  751. package/dist/core/marketplace/features.js +70 -0
  752. package/dist/core/marketplace/features.js.map +1 -0
  753. package/dist/core/marketplace/index.d.ts +33 -0
  754. package/dist/core/marketplace/index.d.ts.map +1 -0
  755. package/dist/core/marketplace/index.js +33 -0
  756. package/dist/core/marketplace/index.js.map +1 -0
  757. package/dist/core/marketplace/instalar.d.ts +27 -0
  758. package/dist/core/marketplace/instalar.d.ts.map +1 -0
  759. package/dist/core/marketplace/instalar.js +50 -0
  760. package/dist/core/marketplace/instalar.js.map +1 -0
  761. package/dist/core/mcp/client.d.ts.map +1 -1
  762. package/dist/core/mcp/client.js.map +1 -1
  763. package/dist/core/mcp/manager.d.ts.map +1 -1
  764. package/dist/core/mcp/manager.js.map +1 -1
  765. package/dist/core/mcp/oauth.d.ts +138 -0
  766. package/dist/core/mcp/oauth.d.ts.map +1 -0
  767. package/dist/core/mcp/oauth.js +348 -0
  768. package/dist/core/mcp/oauth.js.map +1 -0
  769. package/dist/core/mcp/tools.d.ts.map +1 -1
  770. package/dist/core/mcp/tools.js.map +1 -1
  771. package/dist/core/memoria/almacen.d.ts +56 -0
  772. package/dist/core/memoria/almacen.d.ts.map +1 -0
  773. package/dist/core/memoria/almacen.js +214 -0
  774. package/dist/core/memoria/almacen.js.map +1 -0
  775. package/dist/core/memoria/dr/respaldo.d.ts +34 -0
  776. package/dist/core/memoria/dr/respaldo.d.ts.map +1 -0
  777. package/dist/core/memoria/dr/respaldo.js +133 -0
  778. package/dist/core/memoria/dr/respaldo.js.map +1 -0
  779. package/dist/core/memoria/embeddings.d.ts +21 -0
  780. package/dist/core/memoria/embeddings.d.ts.map +1 -0
  781. package/dist/core/memoria/embeddings.js +87 -0
  782. package/dist/core/memoria/embeddings.js.map +1 -0
  783. package/dist/core/memoria/grafo.d.ts +56 -0
  784. package/dist/core/memoria/grafo.d.ts.map +1 -0
  785. package/dist/core/memoria/grafo.js +143 -0
  786. package/dist/core/memoria/grafo.js.map +1 -0
  787. package/dist/core/memoria/redaccion.d.ts +32 -0
  788. package/dist/core/memoria/redaccion.d.ts.map +1 -0
  789. package/dist/core/memoria/redaccion.js +76 -0
  790. package/dist/core/memoria/redaccion.js.map +1 -0
  791. package/dist/core/memoria/servidor/almacen-json.d.ts +26 -0
  792. package/dist/core/memoria/servidor/almacen-json.d.ts.map +1 -0
  793. package/dist/core/memoria/servidor/almacen-json.js +90 -0
  794. package/dist/core/memoria/servidor/almacen-json.js.map +1 -0
  795. package/dist/core/memoria/servidor/servidor.d.ts +43 -0
  796. package/dist/core/memoria/servidor/servidor.d.ts.map +1 -0
  797. package/dist/core/memoria/servidor/servidor.js +195 -0
  798. package/dist/core/memoria/servidor/servidor.js.map +1 -0
  799. package/dist/core/memoria/servidor/tipos.d.ts +44 -0
  800. package/dist/core/memoria/servidor/tipos.d.ts.map +1 -0
  801. package/dist/core/memoria/servidor/tipos.js +12 -0
  802. package/dist/core/memoria/servidor/tipos.js.map +1 -0
  803. package/dist/core/memoria/tipos.d.ts +63 -0
  804. package/dist/core/memoria/tipos.d.ts.map +1 -0
  805. package/dist/core/memoria/tipos.js +14 -0
  806. package/dist/core/memoria/tipos.js.map +1 -0
  807. package/dist/core/memory-engine/audit-export.d.ts.map +1 -1
  808. package/dist/core/memory-engine/audit-export.js.map +1 -1
  809. package/dist/core/memory-engine/audit-indice.d.ts.map +1 -1
  810. package/dist/core/memory-engine/audit-indice.js.map +1 -1
  811. package/dist/core/memory-engine/audit.d.ts.map +1 -1
  812. package/dist/core/memory-engine/audit.js.map +1 -1
  813. package/dist/core/memory-engine/engine.d.ts +7 -0
  814. package/dist/core/memory-engine/engine.d.ts.map +1 -1
  815. package/dist/core/memory-engine/engine.js.map +1 -1
  816. package/dist/core/memory-engine/inverted-index.d.ts.map +1 -1
  817. package/dist/core/memory-engine/inverted-index.js.map +1 -1
  818. package/dist/core/memory-engine/keychain.d.ts.map +1 -1
  819. package/dist/core/memory-engine/keychain.js.map +1 -1
  820. package/dist/core/memory-engine/observation-store.d.ts +1 -0
  821. package/dist/core/memory-engine/observation-store.d.ts.map +1 -1
  822. package/dist/core/memory-engine/observation-store.js.map +1 -1
  823. package/dist/core/memory-engine/refinements.d.ts.map +1 -1
  824. package/dist/core/memory-engine/refinements.js.map +1 -1
  825. package/dist/core/memory-engine/scanner.d.ts.map +1 -1
  826. package/dist/core/memory-engine/scanner.js.map +1 -1
  827. package/dist/core/memory-engine/security.d.ts.map +1 -1
  828. package/dist/core/memory-engine/security.js.map +1 -1
  829. package/dist/core/memory-engine/session-indexer.d.ts.map +1 -1
  830. package/dist/core/memory-engine/session-indexer.js.map +1 -1
  831. package/dist/core/memory-engine/tools.d.ts.map +1 -1
  832. package/dist/core/memory-engine/tools.js.map +1 -1
  833. package/dist/core/memory-engine/types.d.ts.map +1 -1
  834. package/dist/core/memory-engine/types.js.map +1 -1
  835. package/dist/core/memory-engine/vault.d.ts.map +1 -1
  836. package/dist/core/memory-engine/vault.js.map +1 -1
  837. package/dist/core/messages.d.ts.map +1 -1
  838. package/dist/core/messages.js.map +1 -1
  839. package/dist/core/metaharness/cli.d.ts +19 -0
  840. package/dist/core/metaharness/cli.d.ts.map +1 -0
  841. package/dist/core/metaharness/cli.js +171 -0
  842. package/dist/core/metaharness/cli.js.map +1 -0
  843. package/dist/core/metaharness/comparar.d.ts +21 -0
  844. package/dist/core/metaharness/comparar.d.ts.map +1 -0
  845. package/dist/core/metaharness/comparar.js +64 -0
  846. package/dist/core/metaharness/comparar.js.map +1 -0
  847. package/dist/core/metaharness/ejecutar.d.ts +70 -0
  848. package/dist/core/metaharness/ejecutar.d.ts.map +1 -0
  849. package/dist/core/metaharness/ejecutar.js +249 -0
  850. package/dist/core/metaharness/ejecutar.js.map +1 -0
  851. package/dist/core/metaharness/tipos.d.ts +142 -0
  852. package/dist/core/metaharness/tipos.d.ts.map +1 -0
  853. package/dist/core/metaharness/tipos.js +17 -0
  854. package/dist/core/metaharness/tipos.js.map +1 -0
  855. package/dist/core/model-config.d.ts +8 -8
  856. package/dist/core/model-config.d.ts.map +1 -1
  857. package/dist/core/model-config.js.map +1 -1
  858. package/dist/core/model-registry.d.ts.map +1 -1
  859. package/dist/core/model-registry.js.map +1 -1
  860. package/dist/core/model-resolver.d.ts.map +1 -1
  861. package/dist/core/model-resolver.js.map +1 -1
  862. package/dist/core/model-runtime.d.ts.map +1 -1
  863. package/dist/core/model-runtime.js.map +1 -1
  864. package/dist/core/models-store.d.ts.map +1 -1
  865. package/dist/core/models-store.js.map +1 -1
  866. package/dist/core/muestreo-restringido.d.ts.map +1 -1
  867. package/dist/core/muestreo-restringido.js.map +1 -1
  868. package/dist/core/orphan-process-journal.d.ts.map +1 -1
  869. package/dist/core/orphan-process-journal.js.map +1 -1
  870. package/dist/core/output-guard.d.ts.map +1 -1
  871. package/dist/core/output-guard.js.map +1 -1
  872. package/dist/core/package-manager.d.ts.map +1 -1
  873. package/dist/core/package-manager.js.map +1 -1
  874. package/dist/core/parche/aplicar.d.ts +19 -0
  875. package/dist/core/parche/aplicar.d.ts.map +1 -0
  876. package/dist/core/parche/aplicar.js +243 -0
  877. package/dist/core/parche/aplicar.js.map +1 -0
  878. package/dist/core/parche/parser.d.ts +38 -0
  879. package/dist/core/parche/parser.d.ts.map +1 -0
  880. package/dist/core/parche/parser.js +217 -0
  881. package/dist/core/parche/parser.js.map +1 -0
  882. package/dist/core/parche/registro.d.ts +12 -0
  883. package/dist/core/parche/registro.d.ts.map +1 -0
  884. package/dist/core/parche/registro.js +58 -0
  885. package/dist/core/parche/registro.js.map +1 -0
  886. package/dist/core/perfiles/index.d.ts +22 -0
  887. package/dist/core/perfiles/index.d.ts.map +1 -0
  888. package/dist/core/perfiles/index.js +21 -0
  889. package/dist/core/perfiles/index.js.map +1 -0
  890. package/dist/core/perfiles/resolver.d.ts +51 -0
  891. package/dist/core/perfiles/resolver.d.ts.map +1 -0
  892. package/dist/core/perfiles/resolver.js +329 -0
  893. package/dist/core/perfiles/resolver.js.map +1 -0
  894. package/dist/core/perfiles/tipos.d.ts +69 -0
  895. package/dist/core/perfiles/tipos.d.ts.map +1 -0
  896. package/dist/core/perfiles/tipos.js +98 -0
  897. package/dist/core/perfiles/tipos.js.map +1 -0
  898. package/dist/core/pi-manifest.d.ts.map +1 -1
  899. package/dist/core/pi-manifest.js.map +1 -1
  900. package/dist/core/privacidad/categorias-especiales.d.ts.map +1 -1
  901. package/dist/core/privacidad/categorias-especiales.js +4 -0
  902. package/dist/core/privacidad/categorias-especiales.js.map +1 -1
  903. package/dist/core/privacidad/tapar.d.ts.map +1 -1
  904. package/dist/core/privacidad/tapar.js.map +1 -1
  905. package/dist/core/project-memory.d.ts.map +1 -1
  906. package/dist/core/project-memory.js.map +1 -1
  907. package/dist/core/project-trust.d.ts.map +1 -1
  908. package/dist/core/project-trust.js.map +1 -1
  909. package/dist/core/prompt-cache/diagnostics.d.ts.map +1 -1
  910. package/dist/core/prompt-cache/diagnostics.js.map +1 -1
  911. package/dist/core/prompt-cache/index.d.ts.map +1 -1
  912. package/dist/core/prompt-cache/index.js.map +1 -1
  913. package/dist/core/prompt-cache/payload.d.ts.map +1 -1
  914. package/dist/core/prompt-cache/payload.js.map +1 -1
  915. package/dist/core/prompt-cache/stabilize.d.ts.map +1 -1
  916. package/dist/core/prompt-cache/stabilize.js.map +1 -1
  917. package/dist/core/prompt-cache/stats.d.ts.map +1 -1
  918. package/dist/core/prompt-cache/stats.js.map +1 -1
  919. package/dist/core/prompt-eleccion.d.ts.map +1 -1
  920. package/dist/core/prompt-eleccion.js.map +1 -1
  921. package/dist/core/prompt-optimizer.d.ts.map +1 -1
  922. package/dist/core/prompt-optimizer.js.map +1 -1
  923. package/dist/core/prompt-templates.d.ts.map +1 -1
  924. package/dist/core/prompt-templates.js.map +1 -1
  925. package/dist/core/prompts/montar.d.ts.map +1 -1
  926. package/dist/core/prompts/montar.js.map +1 -1
  927. package/dist/core/prompts/plantilla.d.ts.map +1 -1
  928. package/dist/core/prompts/plantilla.js.map +1 -1
  929. package/dist/core/proveedores-registry/definiciones.d.ts +15 -0
  930. package/dist/core/proveedores-registry/definiciones.d.ts.map +1 -0
  931. package/dist/core/proveedores-registry/definiciones.js +22 -0
  932. package/dist/core/proveedores-registry/definiciones.js.map +1 -0
  933. package/dist/core/proveedores-registry/index.d.ts +14 -0
  934. package/dist/core/proveedores-registry/index.d.ts.map +1 -0
  935. package/dist/core/proveedores-registry/index.js +13 -0
  936. package/dist/core/proveedores-registry/index.js.map +1 -0
  937. package/dist/core/proveedores-registry/resolver.d.ts +25 -0
  938. package/dist/core/proveedores-registry/resolver.d.ts.map +1 -0
  939. package/dist/core/proveedores-registry/resolver.js +69 -0
  940. package/dist/core/proveedores-registry/resolver.js.map +1 -0
  941. package/dist/core/proveedores-registry/tipos.d.ts +47 -0
  942. package/dist/core/proveedores-registry/tipos.d.ts.map +1 -0
  943. package/dist/core/proveedores-registry/tipos.js +15 -0
  944. package/dist/core/proveedores-registry/tipos.js.map +1 -0
  945. package/dist/core/provider-attribution.d.ts.map +1 -1
  946. package/dist/core/provider-attribution.js.map +1 -1
  947. package/dist/core/provider-composer.d.ts.map +1 -1
  948. package/dist/core/provider-composer.js.map +1 -1
  949. package/dist/core/radius.d.ts.map +1 -1
  950. package/dist/core/radius.js.map +1 -1
  951. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  952. package/dist/core/remote-catalog-provider.js.map +1 -1
  953. package/dist/core/remoto/destino.d.ts.map +1 -1
  954. package/dist/core/remoto/destino.js.map +1 -1
  955. package/dist/core/remoto/ejecutor.d.ts.map +1 -1
  956. package/dist/core/remoto/ejecutor.js.map +1 -1
  957. package/dist/core/remoto/ficheros.d.ts.map +1 -1
  958. package/dist/core/remoto/ficheros.js.map +1 -1
  959. package/dist/core/remoto/registro-extension.d.ts.map +1 -1
  960. package/dist/core/remoto/registro-extension.js.map +1 -1
  961. package/dist/core/remoto/tools.d.ts.map +1 -1
  962. package/dist/core/remoto/tools.js.map +1 -1
  963. package/dist/core/reparacion/index.d.ts +2 -0
  964. package/dist/core/reparacion/index.d.ts.map +1 -0
  965. package/dist/core/reparacion/index.js +2 -0
  966. package/dist/core/reparacion/index.js.map +1 -0
  967. package/dist/core/reparacion/reparar-hunk.d.ts +27 -0
  968. package/dist/core/reparacion/reparar-hunk.d.ts.map +1 -0
  969. package/dist/core/reparacion/reparar-hunk.js +139 -0
  970. package/dist/core/reparacion/reparar-hunk.js.map +1 -0
  971. package/dist/core/resolve-config-value.d.ts.map +1 -1
  972. package/dist/core/resolve-config-value.js.map +1 -1
  973. package/dist/core/resource-loader.d.ts +13 -0
  974. package/dist/core/resource-loader.d.ts.map +1 -1
  975. package/dist/core/resource-loader.js +7 -4
  976. package/dist/core/resource-loader.js.map +1 -1
  977. package/dist/core/revision/dispositions.d.ts +86 -0
  978. package/dist/core/revision/dispositions.d.ts.map +1 -0
  979. package/dist/core/revision/dispositions.js +137 -0
  980. package/dist/core/revision/dispositions.js.map +1 -0
  981. package/dist/core/revision/hallazgo.d.ts.map +1 -1
  982. package/dist/core/revision/hallazgo.js.map +1 -1
  983. package/dist/core/revision/procedencia.d.ts +63 -0
  984. package/dist/core/revision/procedencia.d.ts.map +1 -0
  985. package/dist/core/revision/procedencia.js +72 -0
  986. package/dist/core/revision/procedencia.js.map +1 -0
  987. package/dist/core/revision/publicar.d.ts +26 -0
  988. package/dist/core/revision/publicar.d.ts.map +1 -0
  989. package/dist/core/revision/publicar.js +34 -0
  990. package/dist/core/revision/publicar.js.map +1 -0
  991. package/dist/core/revision/revisor.d.ts.map +1 -1
  992. package/dist/core/revision/revisor.js.map +1 -1
  993. package/dist/core/revision/sarif.d.ts.map +1 -1
  994. package/dist/core/revision/sarif.js.map +1 -1
  995. package/dist/core/router-uris/index.d.ts +12 -0
  996. package/dist/core/router-uris/index.d.ts.map +1 -0
  997. package/dist/core/router-uris/index.js +12 -0
  998. package/dist/core/router-uris/index.js.map +1 -0
  999. package/dist/core/router-uris/router.d.ts +2 -0
  1000. package/dist/core/router-uris/router.d.ts.map +1 -0
  1001. package/dist/core/router-uris/router.js +2 -0
  1002. package/dist/core/router-uris/router.js.map +1 -0
  1003. package/dist/core/runtime-credentials.d.ts.map +1 -1
  1004. package/dist/core/runtime-credentials.js.map +1 -1
  1005. package/dist/core/rutas/envoltorio.d.ts +20 -0
  1006. package/dist/core/rutas/envoltorio.d.ts.map +1 -0
  1007. package/dist/core/rutas/envoltorio.js +48 -0
  1008. package/dist/core/rutas/envoltorio.js.map +1 -0
  1009. package/dist/core/rutas/index.d.ts +11 -0
  1010. package/dist/core/rutas/index.d.ts.map +1 -0
  1011. package/dist/core/rutas/index.js +11 -0
  1012. package/dist/core/rutas/index.js.map +1 -0
  1013. package/dist/core/rutas/router.d.ts +82 -0
  1014. package/dist/core/rutas/router.d.ts.map +1 -0
  1015. package/dist/core/rutas/router.js +161 -0
  1016. package/dist/core/rutas/router.js.map +1 -0
  1017. package/dist/core/scheduler/scheduler.d.ts.map +1 -1
  1018. package/dist/core/scheduler/scheduler.js.map +1 -1
  1019. package/dist/core/sdk.d.ts.map +1 -1
  1020. package/dist/core/sdk.js.map +1 -1
  1021. package/dist/core/secretos/extension.d.ts +31 -0
  1022. package/dist/core/secretos/extension.d.ts.map +1 -0
  1023. package/dist/core/secretos/extension.js +64 -0
  1024. package/dist/core/secretos/extension.js.map +1 -0
  1025. package/dist/core/secretos/index.d.ts +75 -0
  1026. package/dist/core/secretos/index.d.ts.map +1 -0
  1027. package/dist/core/secretos/index.js +385 -0
  1028. package/dist/core/secretos/index.js.map +1 -0
  1029. package/dist/core/secretos/message-transform.d.ts +44 -0
  1030. package/dist/core/secretos/message-transform.d.ts.map +1 -0
  1031. package/dist/core/secretos/message-transform.js +246 -0
  1032. package/dist/core/secretos/message-transform.js.map +1 -0
  1033. package/dist/core/secretos/obfuscator.d.ts +30 -0
  1034. package/dist/core/secretos/obfuscator.d.ts.map +1 -0
  1035. package/dist/core/secretos/obfuscator.js +1182 -0
  1036. package/dist/core/secretos/obfuscator.js.map +1 -0
  1037. package/dist/core/secretos/placeholder-scan.d.ts +96 -0
  1038. package/dist/core/secretos/placeholder-scan.d.ts.map +1 -0
  1039. package/dist/core/secretos/placeholder-scan.js +433 -0
  1040. package/dist/core/secretos/placeholder-scan.js.map +1 -0
  1041. package/dist/core/secretos/placeholder.d.ts +95 -0
  1042. package/dist/core/secretos/placeholder.d.ts.map +1 -0
  1043. package/dist/core/secretos/placeholder.js +283 -0
  1044. package/dist/core/secretos/placeholder.js.map +1 -0
  1045. package/dist/core/secretos/regex.d.ts +3 -0
  1046. package/dist/core/secretos/regex.d.ts.map +1 -0
  1047. package/dist/core/secretos/regex.js +19 -0
  1048. package/dist/core/secretos/regex.js.map +1 -0
  1049. package/dist/core/secretos/replacement.d.ts +83 -0
  1050. package/dist/core/secretos/replacement.d.ts.map +1 -0
  1051. package/dist/core/secretos/replacement.js +211 -0
  1052. package/dist/core/secretos/replacement.js.map +1 -0
  1053. package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts.map +1 -1
  1054. package/dist/core/sesion/cerrar-llamadas-abiertas.js.map +1 -1
  1055. package/dist/core/sesion/journal-tree.d.ts +73 -0
  1056. package/dist/core/sesion/journal-tree.d.ts.map +1 -0
  1057. package/dist/core/sesion/journal-tree.js +241 -0
  1058. package/dist/core/sesion/journal-tree.js.map +1 -0
  1059. package/dist/core/sesion/turn-recovery.d.ts +48 -0
  1060. package/dist/core/sesion/turn-recovery.d.ts.map +1 -0
  1061. package/dist/core/sesion/turn-recovery.js +182 -0
  1062. package/dist/core/sesion/turn-recovery.js.map +1 -0
  1063. package/dist/core/session-cwd.d.ts.map +1 -1
  1064. package/dist/core/session-cwd.js.map +1 -1
  1065. package/dist/core/session-manager.d.ts.map +1 -1
  1066. package/dist/core/session-manager.js.map +1 -1
  1067. package/dist/core/settings-diagnostics.d.ts.map +1 -1
  1068. package/dist/core/settings-diagnostics.js.map +1 -1
  1069. package/dist/core/settings-manager.d.ts +2 -2
  1070. package/dist/core/settings-manager.d.ts.map +1 -1
  1071. package/dist/core/settings-manager.js.map +1 -1
  1072. package/dist/core/share/cifrado.d.ts +39 -0
  1073. package/dist/core/share/cifrado.d.ts.map +1 -0
  1074. package/dist/core/share/cifrado.js +81 -0
  1075. package/dist/core/share/cifrado.js.map +1 -0
  1076. package/dist/core/share/exportar.d.ts +69 -0
  1077. package/dist/core/share/exportar.d.ts.map +1 -0
  1078. package/dist/core/share/exportar.js +247 -0
  1079. package/dist/core/share/exportar.js.map +1 -0
  1080. package/dist/core/skills.d.ts.map +1 -1
  1081. package/dist/core/skills.js.map +1 -1
  1082. package/dist/core/slash-commands.d.ts.map +1 -1
  1083. package/dist/core/slash-commands.js.map +1 -1
  1084. package/dist/core/source-info.d.ts.map +1 -1
  1085. package/dist/core/source-info.js.map +1 -1
  1086. package/dist/core/stream-guard/guardia.d.ts +45 -0
  1087. package/dist/core/stream-guard/guardia.d.ts.map +1 -0
  1088. package/dist/core/stream-guard/guardia.js +100 -0
  1089. package/dist/core/stream-guard/guardia.js.map +1 -0
  1090. package/dist/core/stream-guard/index.d.ts +9 -0
  1091. package/dist/core/stream-guard/index.d.ts.map +1 -0
  1092. package/dist/core/stream-guard/index.js +7 -0
  1093. package/dist/core/stream-guard/index.js.map +1 -0
  1094. package/dist/core/stream-guard/replay.d.ts +39 -0
  1095. package/dist/core/stream-guard/replay.d.ts.map +1 -0
  1096. package/dist/core/stream-guard/replay.js +68 -0
  1097. package/dist/core/stream-guard/replay.js.map +1 -0
  1098. package/dist/core/system-prompt.d.ts.map +1 -1
  1099. package/dist/core/system-prompt.js.map +1 -1
  1100. package/dist/core/telemetria/otlp.d.ts.map +1 -1
  1101. package/dist/core/telemetria/otlp.js.map +1 -1
  1102. package/dist/core/telemetry/otel-genai.d.ts +44 -0
  1103. package/dist/core/telemetry/otel-genai.d.ts.map +1 -0
  1104. package/dist/core/telemetry/otel-genai.js +124 -0
  1105. package/dist/core/telemetry/otel-genai.js.map +1 -0
  1106. package/dist/core/telemetry.d.ts.map +1 -1
  1107. package/dist/core/telemetry.js.map +1 -1
  1108. package/dist/core/terminal/backlog-guard.d.ts +53 -0
  1109. package/dist/core/terminal/backlog-guard.d.ts.map +1 -0
  1110. package/dist/core/terminal/backlog-guard.js +122 -0
  1111. package/dist/core/terminal/backlog-guard.js.map +1 -0
  1112. package/dist/core/terminal/conpty.d.ts +29 -0
  1113. package/dist/core/terminal/conpty.d.ts.map +1 -0
  1114. package/dist/core/terminal/conpty.js +67 -0
  1115. package/dist/core/terminal/conpty.js.map +1 -0
  1116. package/dist/core/terminal/conptyChunking.d.ts +2 -0
  1117. package/dist/core/terminal/conptyChunking.d.ts.map +1 -0
  1118. package/dist/core/terminal/conptyChunking.js +2 -0
  1119. package/dist/core/terminal/conptyChunking.js.map +1 -0
  1120. package/dist/core/terminal/index.d.ts +5 -0
  1121. package/dist/core/terminal/index.d.ts.map +1 -0
  1122. package/dist/core/terminal/index.js +5 -0
  1123. package/dist/core/terminal/index.js.map +1 -0
  1124. package/dist/core/terminal/loop-watchdog.d.ts +43 -0
  1125. package/dist/core/terminal/loop-watchdog.d.ts.map +1 -0
  1126. package/dist/core/terminal/loop-watchdog.js +117 -0
  1127. package/dist/core/terminal/loop-watchdog.js.map +1 -0
  1128. package/dist/core/terminal/runner.d.ts +55 -0
  1129. package/dist/core/terminal/runner.d.ts.map +1 -0
  1130. package/dist/core/terminal/runner.js +102 -0
  1131. package/dist/core/terminal/runner.js.map +1 -0
  1132. package/dist/core/timings.d.ts.map +1 -1
  1133. package/dist/core/timings.js.map +1 -1
  1134. package/dist/core/tools/apply_patch.d.ts +29 -0
  1135. package/dist/core/tools/apply_patch.d.ts.map +1 -0
  1136. package/dist/core/tools/apply_patch.js +54 -0
  1137. package/dist/core/tools/apply_patch.js.map +1 -0
  1138. package/dist/core/tools/bash.d.ts.map +1 -1
  1139. package/dist/core/tools/bash.js.map +1 -1
  1140. package/dist/core/tools/coercion-argumentos.d.ts.map +1 -1
  1141. package/dist/core/tools/coercion-argumentos.js.map +1 -1
  1142. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  1143. package/dist/core/tools/edit-diff.js.map +1 -1
  1144. package/dist/core/tools/edit.d.ts.map +1 -1
  1145. package/dist/core/tools/edit.js +43 -1
  1146. package/dist/core/tools/edit.js.map +1 -1
  1147. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  1148. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  1149. package/dist/core/tools/find.d.ts.map +1 -1
  1150. package/dist/core/tools/find.js.map +1 -1
  1151. package/dist/core/tools/grep.d.ts.map +1 -1
  1152. package/dist/core/tools/grep.js.map +1 -1
  1153. package/dist/core/tools/index.d.ts.map +1 -1
  1154. package/dist/core/tools/index.js.map +1 -1
  1155. package/dist/core/tools/json-tolerante.d.ts.map +1 -1
  1156. package/dist/core/tools/json-tolerante.js.map +1 -1
  1157. package/dist/core/tools/ls.d.ts.map +1 -1
  1158. package/dist/core/tools/ls.js.map +1 -1
  1159. package/dist/core/tools/noop-loop-guard.d.ts +46 -0
  1160. package/dist/core/tools/noop-loop-guard.d.ts.map +1 -0
  1161. package/dist/core/tools/noop-loop-guard.js +57 -0
  1162. package/dist/core/tools/noop-loop-guard.js.map +1 -0
  1163. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  1164. package/dist/core/tools/output-accumulator.js.map +1 -1
  1165. package/dist/core/tools/path-utils.d.ts.map +1 -1
  1166. package/dist/core/tools/path-utils.js.map +1 -1
  1167. package/dist/core/tools/project-memory-tool.d.ts.map +1 -1
  1168. package/dist/core/tools/project-memory-tool.js.map +1 -1
  1169. package/dist/core/tools/read.d.ts.map +1 -1
  1170. package/dist/core/tools/read.js.map +1 -1
  1171. package/dist/core/tools/render-utils.d.ts.map +1 -1
  1172. package/dist/core/tools/render-utils.js.map +1 -1
  1173. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  1174. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  1175. package/dist/core/tools/truncate.d.ts.map +1 -1
  1176. package/dist/core/tools/truncate.js.map +1 -1
  1177. package/dist/core/tools/write.d.ts.map +1 -1
  1178. package/dist/core/tools/write.js.map +1 -1
  1179. package/dist/core/trust-manager.d.ts.map +1 -1
  1180. package/dist/core/trust-manager.js.map +1 -1
  1181. package/dist/core/ttsr/captura.d.ts +72 -0
  1182. package/dist/core/ttsr/captura.d.ts.map +1 -0
  1183. package/dist/core/ttsr/captura.js +183 -0
  1184. package/dist/core/ttsr/captura.js.map +1 -0
  1185. package/dist/core/ttsr/index.d.ts +24 -0
  1186. package/dist/core/ttsr/index.d.ts.map +1 -0
  1187. package/dist/core/ttsr/index.js +57 -0
  1188. package/dist/core/ttsr/index.js.map +1 -0
  1189. package/dist/core/ttsr/preview.d.ts +48 -0
  1190. package/dist/core/ttsr/preview.d.ts.map +1 -0
  1191. package/dist/core/ttsr/preview.js +83 -0
  1192. package/dist/core/ttsr/preview.js.map +1 -0
  1193. package/dist/core/turno-vacio/detectar.d.ts.map +1 -1
  1194. package/dist/core/turno-vacio/detectar.js.map +1 -1
  1195. package/dist/core/undo/journal.d.ts.map +1 -1
  1196. package/dist/core/undo/journal.js.map +1 -1
  1197. package/dist/core/urls-internas/auditoria.d.ts.map +1 -1
  1198. package/dist/core/urls-internas/auditoria.js.map +1 -1
  1199. package/dist/core/urls-internas/boveda.d.ts.map +1 -1
  1200. package/dist/core/urls-internas/boveda.js.map +1 -1
  1201. package/dist/core/urls-internas/lector.d.ts +14 -10
  1202. package/dist/core/urls-internas/lector.d.ts.map +1 -1
  1203. package/dist/core/urls-internas/lector.js +50 -36
  1204. package/dist/core/urls-internas/lector.js.map +1 -1
  1205. package/dist/core/urls-internas/memoria.d.ts.map +1 -1
  1206. package/dist/core/urls-internas/memoria.js.map +1 -1
  1207. package/dist/core/urls-internas/parse.d.ts +6 -13
  1208. package/dist/core/urls-internas/parse.d.ts.map +1 -1
  1209. package/dist/core/urls-internas/parse.js +6 -17
  1210. package/dist/core/urls-internas/parse.js.map +1 -1
  1211. package/dist/core/urls-internas/reglas.d.ts.map +1 -1
  1212. package/dist/core/urls-internas/reglas.js.map +1 -1
  1213. package/dist/core/usage/aggregate.d.ts +1 -0
  1214. package/dist/core/usage/aggregate.d.ts.map +1 -1
  1215. package/dist/core/usage/aggregate.js +1 -1
  1216. package/dist/core/usage/aggregate.js.map +1 -1
  1217. package/dist/core/usage/cuota/anthropic.d.ts.map +1 -1
  1218. package/dist/core/usage/cuota/anthropic.js.map +1 -1
  1219. package/dist/core/usage/cuota/cache.d.ts.map +1 -1
  1220. package/dist/core/usage/cuota/cache.js.map +1 -1
  1221. package/dist/core/usage/cuota/github-copilot.d.ts.map +1 -1
  1222. package/dist/core/usage/cuota/github-copilot.js.map +1 -1
  1223. package/dist/core/usage/cuota/google-gemini.d.ts.map +1 -1
  1224. package/dist/core/usage/cuota/google-gemini.js.map +1 -1
  1225. package/dist/core/usage/cuota/index.d.ts.map +1 -1
  1226. package/dist/core/usage/cuota/index.js.map +1 -1
  1227. package/dist/core/usage/cuota/openai-codex.d.ts.map +1 -1
  1228. package/dist/core/usage/cuota/openai-codex.js.map +1 -1
  1229. package/dist/core/usage/cuota/openrouter.d.ts.map +1 -1
  1230. package/dist/core/usage/cuota/openrouter.js.map +1 -1
  1231. package/dist/core/usage/cuota/tipos.d.ts.map +1 -1
  1232. package/dist/core/usage/cuota/tipos.js.map +1 -1
  1233. package/dist/core/usage/index.d.ts +11 -0
  1234. package/dist/core/usage/index.d.ts.map +1 -0
  1235. package/dist/core/usage/index.js +11 -0
  1236. package/dist/core/usage/index.js.map +1 -0
  1237. package/dist/core/usage/multi.d.ts +62 -0
  1238. package/dist/core/usage/multi.d.ts.map +1 -0
  1239. package/dist/core/usage/multi.js +122 -0
  1240. package/dist/core/usage/multi.js.map +1 -0
  1241. package/dist/core/usage/redaccion.d.ts +48 -0
  1242. package/dist/core/usage/redaccion.d.ts.map +1 -0
  1243. package/dist/core/usage/redaccion.js +72 -0
  1244. package/dist/core/usage/redaccion.js.map +1 -0
  1245. package/dist/core/usage-totals.d.ts.map +1 -1
  1246. package/dist/core/usage-totals.js.map +1 -1
  1247. package/dist/core/utils/atomic-write.d.ts +55 -0
  1248. package/dist/core/utils/atomic-write.d.ts.map +1 -0
  1249. package/dist/core/utils/atomic-write.js +293 -0
  1250. package/dist/core/utils/atomic-write.js.map +1 -0
  1251. package/dist/core/utils/git.d.ts +24 -0
  1252. package/dist/core/utils/git.d.ts.map +1 -0
  1253. package/dist/core/utils/git.js +107 -0
  1254. package/dist/core/utils/git.js.map +1 -0
  1255. package/dist/core/utils/logger.d.ts +26 -0
  1256. package/dist/core/utils/logger.d.ts.map +1 -0
  1257. package/dist/core/utils/logger.js +104 -0
  1258. package/dist/core/utils/logger.js.map +1 -0
  1259. package/dist/core/utils/shell-snapshot.d.ts +21 -0
  1260. package/dist/core/utils/shell-snapshot.d.ts.map +1 -0
  1261. package/dist/core/utils/shell-snapshot.js +32 -0
  1262. package/dist/core/utils/shell-snapshot.js.map +1 -0
  1263. package/dist/core/utils/startup-watchdog.d.ts +11 -0
  1264. package/dist/core/utils/startup-watchdog.d.ts.map +1 -0
  1265. package/dist/core/utils/startup-watchdog.js +34 -0
  1266. package/dist/core/utils/startup-watchdog.js.map +1 -0
  1267. package/dist/core/utils/tls-ca-shim.d.ts +17 -0
  1268. package/dist/core/utils/tls-ca-shim.d.ts.map +1 -0
  1269. package/dist/core/utils/tls-ca-shim.js +33 -0
  1270. package/dist/core/utils/tls-ca-shim.js.map +1 -0
  1271. package/dist/core/web/agregador.d.ts +67 -0
  1272. package/dist/core/web/agregador.d.ts.map +1 -0
  1273. package/dist/core/web/agregador.js +182 -0
  1274. package/dist/core/web/agregador.js.map +1 -0
  1275. package/dist/core/web/busqueda-nativa.d.ts.map +1 -1
  1276. package/dist/core/web/busqueda-nativa.js.map +1 -1
  1277. package/dist/core/web/consulta.d.ts +53 -0
  1278. package/dist/core/web/consulta.d.ts.map +1 -0
  1279. package/dist/core/web/consulta.js +213 -0
  1280. package/dist/core/web/consulta.js.map +1 -0
  1281. package/dist/core/web/destino.d.ts +11 -0
  1282. package/dist/core/web/destino.d.ts.map +1 -1
  1283. package/dist/core/web/destino.js +35 -0
  1284. package/dist/core/web/destino.js.map +1 -1
  1285. package/dist/core/web/load-page.d.ts +52 -0
  1286. package/dist/core/web/load-page.d.ts.map +1 -0
  1287. package/dist/core/web/load-page.js +221 -0
  1288. package/dist/core/web/load-page.js.map +1 -0
  1289. package/dist/core/web/proveedores/brave.d.ts.map +1 -1
  1290. package/dist/core/web/proveedores/brave.js.map +1 -1
  1291. package/dist/core/web/proveedores/claves.d.ts.map +1 -1
  1292. package/dist/core/web/proveedores/claves.js.map +1 -1
  1293. package/dist/core/web/proveedores/duckduckgo.d.ts.map +1 -1
  1294. package/dist/core/web/proveedores/duckduckgo.js.map +1 -1
  1295. package/dist/core/web/proveedores/ecosia.d.ts.map +1 -1
  1296. package/dist/core/web/proveedores/ecosia.js.map +1 -1
  1297. package/dist/core/web/proveedores/exa.d.ts.map +1 -1
  1298. package/dist/core/web/proveedores/exa.js.map +1 -1
  1299. package/dist/core/web/proveedores/mojeek.d.ts.map +1 -1
  1300. package/dist/core/web/proveedores/mojeek.js.map +1 -1
  1301. package/dist/core/web/proveedores/navegador.d.ts.map +1 -1
  1302. package/dist/core/web/proveedores/navegador.js.map +1 -1
  1303. package/dist/core/web/proveedores/registro.d.ts.map +1 -1
  1304. package/dist/core/web/proveedores/registro.js.map +1 -1
  1305. package/dist/core/web/proveedores/searxng.d.ts.map +1 -1
  1306. package/dist/core/web/proveedores/searxng.js.map +1 -1
  1307. package/dist/core/web/proveedores/serper.d.ts.map +1 -1
  1308. package/dist/core/web/proveedores/serper.js.map +1 -1
  1309. package/dist/core/web/proveedores/tavily.d.ts.map +1 -1
  1310. package/dist/core/web/proveedores/tavily.js.map +1 -1
  1311. package/dist/core/web/proveedores/tipos.d.ts.map +1 -1
  1312. package/dist/core/web/proveedores/tipos.js.map +1 -1
  1313. package/dist/core/web/registro-red.d.ts.map +1 -1
  1314. package/dist/core/web/registro-red.js.map +1 -1
  1315. package/dist/core/web/scrapers/cisa-kev.d.ts.map +1 -1
  1316. package/dist/core/web/scrapers/cisa-kev.js.map +1 -1
  1317. package/dist/core/web/scrapers/crates-io.d.ts.map +1 -1
  1318. package/dist/core/web/scrapers/crates-io.js.map +1 -1
  1319. package/dist/core/web/scrapers/docs-rs.d.ts.map +1 -1
  1320. package/dist/core/web/scrapers/docs-rs.js.map +1 -1
  1321. package/dist/core/web/scrapers/github.d.ts.map +1 -1
  1322. package/dist/core/web/scrapers/github.js.map +1 -1
  1323. package/dist/core/web/scrapers/go-pkg.d.ts.map +1 -1
  1324. package/dist/core/web/scrapers/go-pkg.js.map +1 -1
  1325. package/dist/core/web/scrapers/hex.d.ts.map +1 -1
  1326. package/dist/core/web/scrapers/hex.js.map +1 -1
  1327. package/dist/core/web/scrapers/maven.d.ts.map +1 -1
  1328. package/dist/core/web/scrapers/maven.js.map +1 -1
  1329. package/dist/core/web/scrapers/mdn.d.ts.map +1 -1
  1330. package/dist/core/web/scrapers/mdn.js.map +1 -1
  1331. package/dist/core/web/scrapers/npm.d.ts.map +1 -1
  1332. package/dist/core/web/scrapers/npm.js.map +1 -1
  1333. package/dist/core/web/scrapers/nuget.d.ts.map +1 -1
  1334. package/dist/core/web/scrapers/nuget.js.map +1 -1
  1335. package/dist/core/web/scrapers/nvd.d.ts.map +1 -1
  1336. package/dist/core/web/scrapers/nvd.js.map +1 -1
  1337. package/dist/core/web/scrapers/pypi.d.ts.map +1 -1
  1338. package/dist/core/web/scrapers/pypi.js.map +1 -1
  1339. package/dist/core/web/scrapers/registro.d.ts.map +1 -1
  1340. package/dist/core/web/scrapers/registro.js.map +1 -1
  1341. package/dist/core/web/scrapers/rubygems.d.ts.map +1 -1
  1342. package/dist/core/web/scrapers/rubygems.js.map +1 -1
  1343. package/dist/core/web/scrapers/stackoverflow.d.ts.map +1 -1
  1344. package/dist/core/web/scrapers/stackoverflow.js.map +1 -1
  1345. package/dist/core/web/scrapers/tipos.d.ts.map +1 -1
  1346. package/dist/core/web/scrapers/tipos.js.map +1 -1
  1347. package/dist/core/web/texto.d.ts.map +1 -1
  1348. package/dist/core/web/texto.js.map +1 -1
  1349. package/dist/core/web/tools.d.ts +1 -8
  1350. package/dist/core/web/tools.d.ts.map +1 -1
  1351. package/dist/core/web/tools.js +2 -33
  1352. package/dist/core/web/tools.js.map +1 -1
  1353. package/dist/core/wiki/almacen.d.ts.map +1 -1
  1354. package/dist/core/wiki/almacen.js.map +1 -1
  1355. package/dist/core/wiki/citas.d.ts.map +1 -1
  1356. package/dist/core/wiki/citas.js.map +1 -1
  1357. package/dist/core/workflows/agent-runner.d.ts.map +1 -1
  1358. package/dist/core/workflows/agent-runner.js.map +1 -1
  1359. package/dist/core/workflows/builtins.d.ts.map +1 -1
  1360. package/dist/core/workflows/builtins.js.map +1 -1
  1361. package/dist/core/workflows/contrato/esquema.d.ts.map +1 -1
  1362. package/dist/core/workflows/contrato/esquema.js.map +1 -1
  1363. package/dist/core/workflows/contrato/reparar-argumentos.d.ts.map +1 -1
  1364. package/dist/core/workflows/contrato/reparar-argumentos.js.map +1 -1
  1365. package/dist/core/workflows/contrato/validador.d.ts.map +1 -1
  1366. package/dist/core/workflows/contrato/validador.js.map +1 -1
  1367. package/dist/core/workflows/contrato/yield.d.ts.map +1 -1
  1368. package/dist/core/workflows/contrato/yield.js.map +1 -1
  1369. package/dist/core/workflows/goal-engine/engine.d.ts +5 -0
  1370. package/dist/core/workflows/goal-engine/engine.d.ts.map +1 -1
  1371. package/dist/core/workflows/goal-engine/engine.js.map +1 -1
  1372. package/dist/core/workflows/goal-engine/errors.d.ts.map +1 -1
  1373. package/dist/core/workflows/goal-engine/errors.js.map +1 -1
  1374. package/dist/core/workflows/goal-engine/index.d.ts.map +1 -1
  1375. package/dist/core/workflows/goal-engine/index.js.map +1 -1
  1376. package/dist/core/workflows/goal-engine/persistence.d.ts.map +1 -1
  1377. package/dist/core/workflows/goal-engine/persistence.js.map +1 -1
  1378. package/dist/core/workflows/goal-engine/prompts.d.ts.map +1 -1
  1379. package/dist/core/workflows/goal-engine/prompts.js.map +1 -1
  1380. package/dist/core/workflows/goal-engine/state.d.ts.map +1 -1
  1381. package/dist/core/workflows/goal-engine/state.js.map +1 -1
  1382. package/dist/core/workflows/goal-engine/tools.d.ts.map +1 -1
  1383. package/dist/core/workflows/goal-engine/tools.js.map +1 -1
  1384. package/dist/core/workflows/goal-engine/types.d.ts.map +1 -1
  1385. package/dist/core/workflows/goal-engine/types.js.map +1 -1
  1386. package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts.map +1 -1
  1387. package/dist/core/workflows/goal-engine/worktree-fingerprint.js.map +1 -1
  1388. package/dist/core/workflows/graph-sync.d.ts.map +1 -1
  1389. package/dist/core/workflows/graph-sync.js.map +1 -1
  1390. package/dist/core/workflows/graph.d.ts.map +1 -1
  1391. package/dist/core/workflows/graph.js.map +1 -1
  1392. package/dist/core/workflows/index.d.ts +6 -0
  1393. package/dist/core/workflows/index.d.ts.map +1 -1
  1394. package/dist/core/workflows/index.js +3 -0
  1395. package/dist/core/workflows/index.js.map +1 -1
  1396. package/dist/core/workflows/journal.d.ts.map +1 -1
  1397. package/dist/core/workflows/journal.js.map +1 -1
  1398. package/dist/core/workflows/manager.d.ts.map +1 -1
  1399. package/dist/core/workflows/manager.js.map +1 -1
  1400. package/dist/core/workflows/provider-caps.d.ts +103 -0
  1401. package/dist/core/workflows/provider-caps.d.ts.map +1 -0
  1402. package/dist/core/workflows/provider-caps.js +235 -0
  1403. package/dist/core/workflows/provider-caps.js.map +1 -0
  1404. package/dist/core/workflows/resolve-script.d.ts.map +1 -1
  1405. package/dist/core/workflows/resolve-script.js.map +1 -1
  1406. package/dist/core/workflows/runtime.d.ts.map +1 -1
  1407. package/dist/core/workflows/runtime.js.map +1 -1
  1408. package/dist/core/workflows/save-as-skill.d.ts.map +1 -1
  1409. package/dist/core/workflows/save-as-skill.js.map +1 -1
  1410. package/dist/core/workflows/shared-store.d.ts.map +1 -1
  1411. package/dist/core/workflows/shared-store.js.map +1 -1
  1412. package/dist/core/workflows/soft-budget.d.ts +27 -0
  1413. package/dist/core/workflows/soft-budget.d.ts.map +1 -0
  1414. package/dist/core/workflows/soft-budget.js +47 -0
  1415. package/dist/core/workflows/soft-budget.js.map +1 -0
  1416. package/dist/core/workflows/subagent-host.d.ts.map +1 -1
  1417. package/dist/core/workflows/subagent-host.js.map +1 -1
  1418. package/dist/core/workflows/tool-scheduling.d.ts +47 -0
  1419. package/dist/core/workflows/tool-scheduling.d.ts.map +1 -0
  1420. package/dist/core/workflows/tool-scheduling.js +102 -0
  1421. package/dist/core/workflows/tool-scheduling.js.map +1 -0
  1422. package/dist/core/workflows/tool-workflow.d.ts.map +1 -1
  1423. package/dist/core/workflows/tool-workflow.js.map +1 -1
  1424. package/dist/core/workflows/types.d.ts.map +1 -1
  1425. package/dist/core/workflows/types.js.map +1 -1
  1426. package/dist/core/workflows/worktree.d.ts.map +1 -1
  1427. package/dist/core/workflows/worktree.js.map +1 -1
  1428. package/dist/extensions/index.d.ts.map +1 -1
  1429. package/dist/extensions/index.js.map +1 -1
  1430. package/dist/extensions/llama/client.d.ts.map +1 -1
  1431. package/dist/extensions/llama/client.js.map +1 -1
  1432. package/dist/extensions/llama/huggingface.d.ts.map +1 -1
  1433. package/dist/extensions/llama/huggingface.js.map +1 -1
  1434. package/dist/extensions/llama/index.d.ts.map +1 -1
  1435. package/dist/extensions/llama/index.js.map +1 -1
  1436. package/dist/extensions/llama/provider.d.ts.map +1 -1
  1437. package/dist/extensions/llama/provider.js.map +1 -1
  1438. package/dist/extensions/llama/ui.d.ts.map +1 -1
  1439. package/dist/extensions/llama/ui.js.map +1 -1
  1440. package/dist/extensions/remoto/index.d.ts.map +1 -1
  1441. package/dist/extensions/remoto/index.js.map +1 -1
  1442. package/dist/index.d.ts.map +1 -1
  1443. package/dist/index.js.map +1 -1
  1444. package/dist/main.d.ts.map +1 -1
  1445. package/dist/main.js +71 -3
  1446. package/dist/main.js.map +1 -1
  1447. package/dist/migrations.d.ts.map +1 -1
  1448. package/dist/migrations.js.map +1 -1
  1449. package/dist/modes/acp/acp-mode.d.ts.map +1 -1
  1450. package/dist/modes/acp/acp-mode.js.map +1 -1
  1451. package/dist/modes/acp/events.d.ts.map +1 -1
  1452. package/dist/modes/acp/events.js.map +1 -1
  1453. package/dist/modes/index.d.ts.map +1 -1
  1454. package/dist/modes/index.js.map +1 -1
  1455. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  1456. package/dist/modes/interactive/components/armin.js.map +1 -1
  1457. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  1458. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  1459. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  1460. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  1461. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  1462. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  1463. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  1464. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  1465. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  1466. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  1467. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  1468. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  1469. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  1470. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  1471. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  1472. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  1473. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
  1474. package/dist/modes/interactive/components/custom-entry.js.map +1 -1
  1475. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  1476. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  1477. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  1478. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  1479. package/dist/modes/interactive/components/diff.d.ts.map +1 -1
  1480. package/dist/modes/interactive/components/diff.js.map +1 -1
  1481. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  1482. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  1483. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  1484. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
  1485. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  1486. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  1487. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  1488. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  1489. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  1490. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  1491. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
  1492. package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
  1493. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  1494. package/dist/modes/interactive/components/footer.js.map +1 -1
  1495. package/dist/modes/interactive/components/home-screen.d.ts +2 -0
  1496. package/dist/modes/interactive/components/home-screen.d.ts.map +1 -1
  1497. package/dist/modes/interactive/components/home-screen.js +5 -6
  1498. package/dist/modes/interactive/components/home-screen.js.map +1 -1
  1499. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  1500. package/dist/modes/interactive/components/index.js.map +1 -1
  1501. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  1502. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  1503. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  1504. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  1505. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -1
  1506. package/dist/modes/interactive/components/markdown-transform.js.map +1 -1
  1507. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -1
  1508. package/dist/modes/interactive/components/mermaid.js.map +1 -1
  1509. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  1510. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  1511. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  1512. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  1513. package/dist/modes/interactive/components/prompt-optimization.d.ts.map +1 -1
  1514. package/dist/modes/interactive/components/prompt-optimization.js.map +1 -1
  1515. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  1516. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  1517. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  1518. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  1519. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  1520. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  1521. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  1522. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  1523. package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -1
  1524. package/dist/modes/interactive/components/settings-submenu.js.map +1 -1
  1525. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  1526. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  1527. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  1528. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  1529. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  1530. package/dist/modes/interactive/components/status-indicator.js.map +1 -1
  1531. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  1532. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  1533. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  1534. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  1535. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  1536. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  1537. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  1538. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  1539. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
  1540. package/dist/modes/interactive/components/trust-selector.js.map +1 -1
  1541. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  1542. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  1543. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  1544. package/dist/modes/interactive/components/user-message.js.map +1 -1
  1545. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  1546. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  1547. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  1548. package/dist/modes/interactive/external-editor.js.map +1 -1
  1549. package/dist/modes/interactive/interactive-mode.d.ts +19 -0
  1550. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  1551. package/dist/modes/interactive/interactive-mode.js +29 -0
  1552. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  1553. package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -1
  1554. package/dist/modes/interactive/model-catalog-refresh.js.map +1 -1
  1555. package/dist/modes/interactive/model-search.d.ts.map +1 -1
  1556. package/dist/modes/interactive/model-search.js.map +1 -1
  1557. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  1558. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  1559. package/dist/modes/interactive/theme/theme.d.ts +2 -2
  1560. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  1561. package/dist/modes/interactive/theme/theme.js.map +1 -1
  1562. package/dist/modes/json-event.d.ts.map +1 -1
  1563. package/dist/modes/json-event.js.map +1 -1
  1564. package/dist/modes/print-mode.d.ts.map +1 -1
  1565. package/dist/modes/print-mode.js.map +1 -1
  1566. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  1567. package/dist/modes/rpc/jsonl.js.map +1 -1
  1568. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  1569. package/dist/modes/rpc/rpc-client.js.map +1 -1
  1570. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  1571. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  1572. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  1573. package/dist/modes/rpc/rpc-types.js.map +1 -1
  1574. package/dist/package-manager-cli.d.ts.map +1 -1
  1575. package/dist/package-manager-cli.js.map +1 -1
  1576. package/dist/rpc-entry.d.ts.map +1 -1
  1577. package/dist/rpc-entry.js +0 -0
  1578. package/dist/rpc-entry.js.map +1 -1
  1579. package/dist/server/attach.d.ts.map +1 -1
  1580. package/dist/server/attach.js.map +1 -1
  1581. package/dist/server/create-harness.d.ts.map +1 -1
  1582. package/dist/server/create-harness.js.map +1 -1
  1583. package/dist/server/extension-ops.d.ts.map +1 -1
  1584. package/dist/server/extension-ops.js.map +1 -1
  1585. package/dist/server/pi-server-service.d.ts.map +1 -1
  1586. package/dist/server/pi-server-service.js.map +1 -1
  1587. package/dist/server/scheduler-tick.d.ts.map +1 -1
  1588. package/dist/server/scheduler-tick.js.map +1 -1
  1589. package/dist/server/serve.d.ts.map +1 -1
  1590. package/dist/server/serve.js.map +1 -1
  1591. package/dist/server/transcript.d.ts.map +1 -1
  1592. package/dist/server/transcript.js.map +1 -1
  1593. package/dist/telegram/api.d.ts +6 -0
  1594. package/dist/telegram/api.d.ts.map +1 -1
  1595. package/dist/telegram/api.js.map +1 -1
  1596. package/dist/telegram/bridge.d.ts.map +1 -1
  1597. package/dist/telegram/bridge.js.map +1 -1
  1598. package/dist/telegram/journal.d.ts.map +1 -1
  1599. package/dist/telegram/journal.js.map +1 -1
  1600. package/dist/telegram/servidor.d.ts.map +1 -1
  1601. package/dist/telegram/servidor.js.map +1 -1
  1602. package/dist/utils/abort.d.ts.map +1 -1
  1603. package/dist/utils/abort.js.map +1 -1
  1604. package/dist/utils/ansi.d.ts.map +1 -1
  1605. package/dist/utils/ansi.js.map +1 -1
  1606. package/dist/utils/changelog.d.ts.map +1 -1
  1607. package/dist/utils/changelog.js.map +1 -1
  1608. package/dist/utils/child-process.d.ts.map +1 -1
  1609. package/dist/utils/child-process.js.map +1 -1
  1610. package/dist/utils/clipboard-image.d.ts.map +1 -1
  1611. package/dist/utils/clipboard-image.js.map +1 -1
  1612. package/dist/utils/clipboard-native.d.ts.map +1 -1
  1613. package/dist/utils/clipboard-native.js.map +1 -1
  1614. package/dist/utils/clipboard.d.ts.map +1 -1
  1615. package/dist/utils/clipboard.js.map +1 -1
  1616. package/dist/utils/deprecation.d.ts.map +1 -1
  1617. package/dist/utils/deprecation.js.map +1 -1
  1618. package/dist/utils/exif-orientation.d.ts.map +1 -1
  1619. package/dist/utils/exif-orientation.js.map +1 -1
  1620. package/dist/utils/frontmatter.d.ts.map +1 -1
  1621. package/dist/utils/frontmatter.js.map +1 -1
  1622. package/dist/utils/fs-watch.d.ts.map +1 -1
  1623. package/dist/utils/fs-watch.js.map +1 -1
  1624. package/dist/utils/git.d.ts.map +1 -1
  1625. package/dist/utils/git.js.map +1 -1
  1626. package/dist/utils/html.d.ts.map +1 -1
  1627. package/dist/utils/html.js.map +1 -1
  1628. package/dist/utils/image-convert.d.ts.map +1 -1
  1629. package/dist/utils/image-convert.js.map +1 -1
  1630. package/dist/utils/image-process.d.ts.map +1 -1
  1631. package/dist/utils/image-process.js.map +1 -1
  1632. package/dist/utils/image-resize-core.d.ts.map +1 -1
  1633. package/dist/utils/image-resize-core.js.map +1 -1
  1634. package/dist/utils/image-resize-worker.d.ts.map +1 -1
  1635. package/dist/utils/image-resize-worker.js.map +1 -1
  1636. package/dist/utils/image-resize.d.ts.map +1 -1
  1637. package/dist/utils/image-resize.js.map +1 -1
  1638. package/dist/utils/json.d.ts.map +1 -1
  1639. package/dist/utils/json.js.map +1 -1
  1640. package/dist/utils/management-http.d.ts.map +1 -1
  1641. package/dist/utils/management-http.js.map +1 -1
  1642. package/dist/utils/mime.d.ts.map +1 -1
  1643. package/dist/utils/mime.js.map +1 -1
  1644. package/dist/utils/open-browser.d.ts.map +1 -1
  1645. package/dist/utils/open-browser.js.map +1 -1
  1646. package/dist/utils/paths.d.ts.map +1 -1
  1647. package/dist/utils/paths.js.map +1 -1
  1648. package/dist/utils/photon.d.ts.map +1 -1
  1649. package/dist/utils/photon.js.map +1 -1
  1650. package/dist/utils/pi-user-agent.d.ts.map +1 -1
  1651. package/dist/utils/pi-user-agent.js.map +1 -1
  1652. package/dist/utils/shell.d.ts.map +1 -1
  1653. package/dist/utils/shell.js.map +1 -1
  1654. package/dist/utils/sleep.d.ts.map +1 -1
  1655. package/dist/utils/sleep.js.map +1 -1
  1656. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  1657. package/dist/utils/syntax-highlight.js.map +1 -1
  1658. package/dist/utils/text.d.ts.map +1 -1
  1659. package/dist/utils/text.js.map +1 -1
  1660. package/dist/utils/tool-result-images.d.ts.map +1 -1
  1661. package/dist/utils/tool-result-images.js.map +1 -1
  1662. package/dist/utils/tools-manager.d.ts.map +1 -1
  1663. package/dist/utils/tools-manager.js.map +1 -1
  1664. package/dist/utils/version-check.d.ts.map +1 -1
  1665. package/dist/utils/version-check.js.map +1 -1
  1666. package/dist/utils/windows-self-update.d.ts.map +1 -1
  1667. package/dist/utils/windows-self-update.js.map +1 -1
  1668. package/docs/development-fork.md +170 -0
  1669. package/docs/docs.json +25 -0
  1670. package/docs/modules-infraestructura.md +115 -0
  1671. package/docs/modules-motor.md +160 -0
  1672. package/docs/modules-producto.md +179 -0
  1673. package/docs/modules-seguridad.md +158 -0
  1674. package/package.json +113 -113
  1675. package/dist/core/commit/diff.d.ts.map +0 -1
  1676. package/dist/core/commit/diff.js.map +0 -1
  1677. package/dist/core/commit/mensaje.d.ts +0 -80
  1678. package/dist/core/commit/mensaje.d.ts.map +0 -1
  1679. package/dist/core/commit/mensaje.js +0 -207
  1680. package/dist/core/commit/mensaje.js.map +0 -1
  1681. /package/dist/core/{commit → commits}/diff.d.ts +0 -0
  1682. /package/dist/core/{commit → commits}/diff.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"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":"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"}
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formato.d.ts","sourceRoot":"","sources":["../../../src/core/lsp/formato.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EAAmB,QAAQ,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAgC,MAAM,qBAAqB,CAAC;AAEzF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,mBAAmB,EAAE,eAAoD,CAAC;AAEvF,0EAA0E;AAC1E,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAE7D,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAGjF;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,yBAAyB,GAClC;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAClE;IAAE,MAAM,EAAE,aAAa,GAAG,aAAa,GAAG,SAAS,GAAG,aAAa,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACxF;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhD,uEAAuE;AACvE,KAAK,YAAY,GAAG,OAAO,QAAQ,CAAC;AAcpC;;;;GAIG;AACH,wBAAsB,mBAAmB,CACxC,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,cAAc,EAAE,EACpC,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE;IACV,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,YAAY,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,oBAAoB,CAAC;CAC1C,GACC,OAAO,CAAC,yBAAyB,CAAC,CAsEpC"}
@@ -0,0 +1,117 @@
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 { readFile, writeFile } from "node:fs/promises";
27
+ import { conectar } from "./cliente.js";
28
+ import { descubrirParaFichero } from "./descubrimiento.js";
29
+ import { aplicarEnTexto } from "./ediciones.js";
30
+ export const FORMATO_POR_DEFECTO = { tabSize: 2, insertSpaces: true };
31
+ /** Variable de entorno opt-in: `ADA_LSP_FORMAT_ON_WRITE=1` (o `true`). */
32
+ export const ENV_FORMAT_ON_WRITE = "ADA_LSP_FORMAT_ON_WRITE";
33
+ export function formatOnWriteActivo(env = process.env) {
34
+ const valor = env[ENV_FORMAT_ON_WRITE];
35
+ return valor === "1" || valor === "true";
36
+ }
37
+ const TIMEOUT_FORMATEO_MS = 5_000;
38
+ function soportaFormateo(capacidades) {
39
+ if (!capacidades)
40
+ return false;
41
+ const textDocument = capacidades.textDocument;
42
+ return (typeof textDocument === "object" &&
43
+ textDocument !== null &&
44
+ textDocument.formatting !== undefined);
45
+ }
46
+ /**
47
+ * Formatea `rutaAbsoluta` tras aplicarse `edicionesAplicadas`. Lee el disco
48
+ * (los bytes que dejó el edit), pide el formateo, valida el anclaje de cada
49
+ * `newText` contra el resultado y solo entonces escribe.
50
+ */
51
+ export async function formatearTrasEditar(rutaAbsoluta, edicionesAplicadas, cwd, opciones) {
52
+ const activo = opciones?.activo ?? formatOnWriteActivo();
53
+ if (!activo)
54
+ return { estado: "desactivado" };
55
+ const disc = (opciones?.descubridor ?? descubrirParaFichero)(rutaAbsoluta, cwd);
56
+ if (disc.estado !== "disponible") {
57
+ return { estado: "sin_lsp", detalles: disc.estado === "no_instalado" ? disc.servidor.nombre : undefined };
58
+ }
59
+ let contenido;
60
+ try {
61
+ contenido = await readFile(rutaAbsoluta, "utf-8");
62
+ }
63
+ catch (error) {
64
+ return { estado: "sin_lsp", detalles: `no se pudo leer: ${error.message}` };
65
+ }
66
+ let cliente;
67
+ try {
68
+ cliente = await (opciones?.conectarCliente ?? conectar)(disc.servidor.comando, disc.servidor.args, cwd, {
69
+ timeoutInicializacionMs: 5_000,
70
+ });
71
+ }
72
+ catch (error) {
73
+ return { estado: "sin_lsp", detalles: `sin servidor: ${error.message}` };
74
+ }
75
+ try {
76
+ if (!soportaFormateo(cliente.capacidades))
77
+ return { estado: "sin_soporte" };
78
+ const uri = `file://${encodeURI(rutaAbsoluta).replace(/#/g, "%23")}`;
79
+ cliente.notificar("textDocument/didOpen", {
80
+ textDocument: { uri, languageId: "plaintext", version: 1, text: contenido },
81
+ });
82
+ const formato = { ...FORMATO_POR_DEFECTO, ...opciones?.formato };
83
+ let edicionesFormateo;
84
+ try {
85
+ edicionesFormateo = await cliente.enviar("textDocument/formatting", { textDocument: { uri }, options: formato }, TIMEOUT_FORMATEO_MS);
86
+ }
87
+ catch (error) {
88
+ return { estado: "sin_cambios", detalles: `formateo falló: ${error.message}` };
89
+ }
90
+ if (!Array.isArray(edicionesFormateo) || edicionesFormateo.length === 0)
91
+ return { estado: "sin_cambios" };
92
+ const formateado = aplicarEnTexto(contenido, edicionesFormateo);
93
+ if (formateado === contenido)
94
+ return { estado: "sin_cambios" };
95
+ // Re-verificación de anclaje: cada newText aplicado por el edit debe
96
+ // seguir presente en el contenido formateado. Si el formateo lo tragó
97
+ // (reindentación agresiva, colapso de líneas), NO se persiste: el edit
98
+ // del agente es la verdad, el formateo es cosmética.
99
+ const perdidos = edicionesAplicadas.filter((e) => e.newText.length > 0 && !formateado.includes(e.newText));
100
+ if (perdidos.length > 0) {
101
+ return {
102
+ estado: "anclaje_roto",
103
+ detalles: `${perdidos.length} de ${edicionesAplicadas.length} edits ya no están presentes tras el formateo`,
104
+ };
105
+ }
106
+ await writeFile(rutaAbsoluta, formateado, "utf-8");
107
+ return {
108
+ estado: "formateado",
109
+ bytesAntes: Buffer.byteLength(contenido, "utf-8"),
110
+ bytesDespues: Buffer.byteLength(formateado, "utf-8"),
111
+ };
112
+ }
113
+ finally {
114
+ await cliente.cerrar().catch(() => { });
115
+ }
116
+ }
117
+ //# sourceMappingURL=formato.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formato.js","sourceRoot":"","sources":["../../../src/core/lsp/formato.ts"],"names":[],"mappings":"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"}
@@ -19,10 +19,10 @@ declare const esquemaDefinicion: Type.TObject<{
19
19
  }>;
20
20
  export declare const lspDefinitionTool: ToolDefinition<typeof esquemaDefinicion>;
21
21
  declare const esquemaReferencias: Type.TObject<{
22
+ include_declaration: Type.TOptional<Type.TBoolean>;
22
23
  file: Type.TString;
23
24
  line: Type.TNumber;
24
25
  character: Type.TNumber;
25
- include_declaration: Type.TOptional<Type.TBoolean>;
26
26
  }>;
27
27
  export declare const lspReferencesTool: ToolDefinition<typeof esquemaReferencias>;
28
28
  declare const esquemaSimbolos: Type.TObject<{
@@ -30,11 +30,11 @@ declare const esquemaSimbolos: Type.TObject<{
30
30
  }>;
31
31
  export declare const lspSymbolsTool: ToolDefinition<typeof esquemaSimbolos>;
32
32
  declare const esquemaRename: Type.TObject<{
33
+ new_name: Type.TString;
34
+ apply: Type.TOptional<Type.TBoolean>;
33
35
  file: Type.TString;
34
36
  line: Type.TNumber;
35
37
  character: Type.TNumber;
36
- new_name: Type.TString;
37
- apply: Type.TOptional<Type.TBoolean>;
38
38
  }>;
39
39
  export declare const lspRenameTool: ToolDefinition<typeof esquemaRename>;
40
40
  /** Los cuatro tools del cliente LSP, listos para `pi.registerTool`. */
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/core/lsp/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAsF/E,QAAA,MAAM,iBAAiB;;;;EAAmB,CAAC;AAc3C,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,OAAO,iBAAiB,CAsBtE,CAAC;AAMF,QAAA,MAAM,kBAAkB;;;;;EAKtB,CAAC;AAEH,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,OAAO,kBAAkB,CAyBvE,CAAC;AAMF,QAAA,MAAM,eAAe;;EAEnB,CAAC;AAkBH,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,OAAO,eAAe,CAsBjE,CAAC;AAMF,QAAA,MAAM,aAAa;;;;;;EAMjB,CAAC;AAEH,eAAO,MAAM,aAAa,EAAE,cAAc,CAAC,OAAO,aAAa,CAsD9D,CAAC;AAUF,uEAAuE;AACvE,eAAO,MAAM,QAAQ;;mBAAwE,CAAC","sourcesContent":["/**\n * `lsp_rename`, `lsp_symbols`, `lsp_definition`, `lsp_references`.\n *\n * Lo que un LanguageService de un solo lenguaje (TypeScript, en\n * `core/edicion/tipos.ts`) no da: renombrar entre ficheros, buscar símbolos,\n * ir a definición y referencias en los lenguajes que solo hablan LSP.\n *\n * Ciclo de vida: cada llamada arranca su propio servidor y lo cierra al\n * terminar (ver el porqué en `cliente.ts`). El coste es un `initialize` de\n * más por llamada; la ganancia es que \"ningún proceso queda vivo\" es\n * estructural, no una promesa que dependa de un temporizador de inactividad.\n */\n\nimport { readFile } from \"node:fs/promises\";\nimport { extname, relative } from \"node:path\";\nimport { Type } from \"typebox\";\nimport type { ExtensionContext, ToolDefinition } from \"../extensions/types.ts\";\nimport { resolveToCwd } from \"../tools/path-utils.ts\";\nimport { type ClienteLsp, conectar, uriDeRuta } from \"./cliente.ts\";\nimport { descubrirParaFichero } from \"./descubrimiento.ts\";\nimport { aplicarWorkspaceEdit, rutaDeUri, type WorkspaceEditLsp } from \"./ediciones.ts\";\n\nconst LANGUAGE_ID_POR_EXTENSION: Record<string, string> = {\n\t\".go\": \"go\",\n\t\".rs\": \"rust\",\n\t\".py\": \"python\",\n\t\".pyi\": \"python\",\n\t\".c\": \"c\",\n\t\".h\": \"c\",\n\t\".cpp\": \"cpp\",\n\t\".cc\": \"cpp\",\n\t\".hpp\": \"cpp\",\n\t\".sh\": \"shellscript\",\n\t\".bash\": \"shellscript\",\n};\n\n/**\n * Explica por qué NO hay un cliente disponible para este fichero, con el\n * comando exacto para arreglarlo si aplica. Nunca \"no hay símbolos\": dice qué\n * pasó.\n */\nfunction explicarNoDisponible(rutaAbsoluta: string, cwd: string): string {\n\tconst resultado = descubrirParaFichero(rutaAbsoluta, cwd);\n\tif (resultado.estado === \"sin_cobertura\") {\n\t\treturn `No hay servidor LSP conocido para la extensión \"${resultado.extension}\". TypeScript/JavaScript usan el LanguageService interno, no este cliente.`;\n\t}\n\t// estado === \"no_instalado\": el servidor existe en la lista, pero el binario no está en PATH.\n\treturn `El servidor \"${resultado.servidor.nombre}\" para \"${resultado.servidor.extensiones.join(\", \")}\" no está instalado. Para instalarlo:\\n ${resultado.servidor.instalar}`;\n}\n\n/** Conecta el servidor adecuado para `rutaAbsoluta`, o `null` si no hay uno disponible (ver `explicarNoDisponible` para el motivo). */\nasync function conectarParaFichero(rutaAbsoluta: string, cwd: string): Promise<ClienteLsp | null> {\n\tconst resultado = descubrirParaFichero(rutaAbsoluta, cwd);\n\tif (resultado.estado !== \"disponible\") return null;\n\treturn conectar(resultado.servidor.comando, resultado.servidor.args, cwd);\n}\n\n/** Sincroniza el contenido actual del fichero con el servidor antes de preguntarle nada — sin esto, algunos servidores responden sobre una copia vacía. */\nasync function abrirDocumento(cliente: ClienteLsp, rutaAbsoluta: string): Promise<string> {\n\tconst texto = await readFile(rutaAbsoluta, \"utf-8\");\n\tconst uri = uriDeRuta(rutaAbsoluta);\n\tconst languageId = LANGUAGE_ID_POR_EXTENSION[extname(rutaAbsoluta).toLowerCase()] ?? \"plaintext\";\n\tcliente.notificar(\"textDocument/didOpen\", {\n\t\ttextDocument: { uri, languageId, version: 1, text: texto },\n\t});\n\treturn uri;\n}\n\nconst SIMBOLO_POR_KIND: Record<number, string> = {\n\t5: \"clase\",\n\t6: \"método\",\n\t9: \"constructor\",\n\t11: \"interfaz\",\n\t12: \"función\",\n\t13: \"variable\",\n\t14: \"constante\",\n\t23: \"struct\",\n};\n\nfunction nombreDeKind(kind: number): string {\n\treturn SIMBOLO_POR_KIND[kind] ?? `símbolo(${kind})`;\n}\n\nconst esquemaUbicacion = Type.Object({\n\tfile: Type.String({ description: \"Ruta del fichero (relativa al cwd o absoluta)\" }),\n\tline: Type.Number({ description: \"Línea, 1-indexada (como en la salida de `read`)\" }),\n\tcharacter: Type.Number({ description: \"Columna, 1-indexada\" }),\n});\n\n/** `line`/`character` de la LLM (1-indexados) → posición LSP (0-indexada). */\nfunction posicionLsp(params: { line: number; character: number }) {\n\treturn { line: params.line - 1, character: params.character - 1 };\n}\n\nfunction rutaRelativa(rutaAbsoluta: string, cwd: string): string {\n\treturn relative(cwd, rutaAbsoluta) || rutaAbsoluta;\n}\n\n// ============================================================================\n// lsp_definition\n// ============================================================================\n\nconst esquemaDefinicion = esquemaUbicacion;\n\ninterface Ubicacion {\n\turi: string;\n\trange: { start: { line: number; character: number } };\n}\n\nfunction formatearUbicaciones(ubicaciones: Ubicacion[], cwd: string): string {\n\tif (ubicaciones.length === 0) return \"Sin resultados.\";\n\treturn ubicaciones\n\t\t.map((u) => `${rutaRelativa(rutaDeUri(u.uri), cwd)}:${u.range.start.line + 1}:${u.range.start.character + 1}`)\n\t\t.join(\"\\n\");\n}\n\nexport const lspDefinitionTool: ToolDefinition<typeof esquemaDefinicion> = {\n\tname: \"lsp_definition\",\n\tlabel: \"LSP: ir a definición\",\n\tdescription:\n\t\t\"Ir a la definición de un símbolo en un lenguaje sin LanguageService propio (Go, Rust, Python, C/C++, Bash). Para TypeScript/JavaScript usa las herramientas de tipos internas, no esta.\",\n\tparameters: esquemaDefinicion,\n\tasync execute(_toolCallId, params, _signal, _onUpdate, ctx: ExtensionContext) {\n\t\tconst rutaAbsoluta = resolveToCwd(params.file, ctx.cwd);\n\t\tconst cliente = await conectarParaFichero(rutaAbsoluta, ctx.cwd);\n\t\tif (!cliente) throw new Error(explicarNoDisponible(rutaAbsoluta, ctx.cwd));\n\t\ttry {\n\t\t\tconst uri = await abrirDocumento(cliente, rutaAbsoluta);\n\t\t\tconst resultado = await cliente.enviar<Ubicacion | Ubicacion[] | null>(\"textDocument/definition\", {\n\t\t\t\ttextDocument: { uri },\n\t\t\t\tposition: posicionLsp(params),\n\t\t\t});\n\t\t\tconst lista = resultado === null ? [] : Array.isArray(resultado) ? resultado : [resultado];\n\t\t\treturn { content: [{ type: \"text\", text: formatearUbicaciones(lista, ctx.cwd) }], details: undefined };\n\t\t} finally {\n\t\t\tawait cliente.cerrar();\n\t\t}\n\t},\n};\n\n// ============================================================================\n// lsp_references\n// ============================================================================\n\nconst esquemaReferencias = Type.Object({\n\t...esquemaUbicacion.properties,\n\tinclude_declaration: Type.Optional(\n\t\tType.Boolean({ description: \"Incluir la propia declaración en los resultados (por defecto true)\" }),\n\t),\n});\n\nexport const lspReferencesTool: ToolDefinition<typeof esquemaReferencias> = {\n\tname: \"lsp_references\",\n\tlabel: \"LSP: buscar referencias\",\n\tdescription:\n\t\t\"Buscar todos los usos de un símbolo en todo el proyecto, en un lenguaje sin LanguageService propio (Go, Rust, Python, C/C++, Bash).\",\n\tparameters: esquemaReferencias,\n\tasync execute(_toolCallId, params, _signal, _onUpdate, ctx: ExtensionContext) {\n\t\tconst rutaAbsoluta = resolveToCwd(params.file, ctx.cwd);\n\t\tconst cliente = await conectarParaFichero(rutaAbsoluta, ctx.cwd);\n\t\tif (!cliente) throw new Error(explicarNoDisponible(rutaAbsoluta, ctx.cwd));\n\t\ttry {\n\t\t\tconst uri = await abrirDocumento(cliente, rutaAbsoluta);\n\t\t\tconst resultado = await cliente.enviar<Ubicacion[] | null>(\"textDocument/references\", {\n\t\t\t\ttextDocument: { uri },\n\t\t\t\tposition: posicionLsp(params),\n\t\t\t\tcontext: { includeDeclaration: params.include_declaration ?? true },\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: formatearUbicaciones(resultado ?? [], ctx.cwd) }],\n\t\t\t\tdetails: undefined,\n\t\t\t};\n\t\t} finally {\n\t\t\tawait cliente.cerrar();\n\t\t}\n\t},\n};\n\n// ============================================================================\n// lsp_symbols\n// ============================================================================\n\nconst esquemaSimbolos = Type.Object({\n\tfile: Type.String({ description: \"Ruta del fichero (relativa al cwd o absoluta)\" }),\n});\n\ninterface SimboloDocumento {\n\tname: string;\n\tkind: number;\n\trange: { start: { line: number } };\n\tchildren?: SimboloDocumento[];\n}\n\nfunction formatearSimbolos(simbolos: SimboloDocumento[], profundidad = 0): string[] {\n\tconst lineas: string[] = [];\n\tfor (const s of simbolos) {\n\t\tlineas.push(`${\" \".repeat(profundidad)}${nombreDeKind(s.kind)} ${s.name} @ línea ${s.range.start.line + 1}`);\n\t\tif (s.children?.length) lineas.push(...formatearSimbolos(s.children, profundidad + 1));\n\t}\n\treturn lineas;\n}\n\nexport const lspSymbolsTool: ToolDefinition<typeof esquemaSimbolos> = {\n\tname: \"lsp_symbols\",\n\tlabel: \"LSP: símbolos del fichero\",\n\tdescription:\n\t\t\"Listar clases, funciones y variables de un fichero en un lenguaje sin LanguageService propio (Go, Rust, Python, C/C++, Bash).\",\n\tparameters: esquemaSimbolos,\n\tasync execute(_toolCallId, params, _signal, _onUpdate, ctx: ExtensionContext) {\n\t\tconst rutaAbsoluta = resolveToCwd(params.file, ctx.cwd);\n\t\tconst cliente = await conectarParaFichero(rutaAbsoluta, ctx.cwd);\n\t\tif (!cliente) throw new Error(explicarNoDisponible(rutaAbsoluta, ctx.cwd));\n\t\ttry {\n\t\t\tconst uri = await abrirDocumento(cliente, rutaAbsoluta);\n\t\t\tconst resultado = await cliente.enviar<SimboloDocumento[] | null>(\"textDocument/documentSymbol\", {\n\t\t\t\ttextDocument: { uri },\n\t\t\t});\n\t\t\tconst lineas =\n\t\t\t\tresultado && resultado.length > 0 ? formatearSimbolos(resultado) : [\"Sin símbolos en este fichero.\"];\n\t\t\treturn { content: [{ type: \"text\", text: lineas.join(\"\\n\") }], details: undefined };\n\t\t} finally {\n\t\t\tawait cliente.cerrar();\n\t\t}\n\t},\n};\n\n// ============================================================================\n// lsp_rename\n// ============================================================================\n\nconst esquemaRename = Type.Object({\n\t...esquemaUbicacion.properties,\n\tnew_name: Type.String({ description: \"Nuevo nombre del símbolo\" }),\n\tapply: Type.Optional(\n\t\tType.Boolean({ description: \"Aplicar los cambios a disco (por defecto true). false = solo previsualizar.\" }),\n\t),\n});\n\nexport const lspRenameTool: ToolDefinition<typeof esquemaRename> = {\n\tname: \"lsp_rename\",\n\tlabel: \"LSP: renombrar símbolo\",\n\tdescription:\n\t\t\"Renombrar un símbolo en TODOS los ficheros que lo usan (definición, referencias y re-exportaciones), en un lenguaje sin LanguageService propio (Go, Rust, Python, C/C++, Bash). Un grep-and-replace no distingue símbolos que comparten nombre en ámbitos distintos; esto sí.\",\n\tparameters: esquemaRename,\n\tasync execute(_toolCallId, params, _signal, _onUpdate, ctx: ExtensionContext) {\n\t\tconst rutaAbsoluta = resolveToCwd(params.file, ctx.cwd);\n\t\tconst cliente = await conectarParaFichero(rutaAbsoluta, ctx.cwd);\n\t\tif (!cliente) throw new Error(explicarNoDisponible(rutaAbsoluta, ctx.cwd));\n\t\ttry {\n\t\t\tconst uri = await abrirDocumento(cliente, rutaAbsoluta);\n\t\t\tconst edit = await cliente.enviar<WorkspaceEditLsp | null>(\"textDocument/rename\", {\n\t\t\t\ttextDocument: { uri },\n\t\t\t\tposition: posicionLsp(params),\n\t\t\t\tnewName: params.new_name,\n\t\t\t});\n\t\t\tif (!edit) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`El servidor no devolvió ediciones para renombrar en ${rutaRelativa(rutaAbsoluta, ctx.cwd)}:${params.line}:${params.character}. Comprueba que la posición señala al símbolo (no a un espacio en blanco o comentario).`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (params.apply === false) {\n\t\t\t\tconst { aplanar } = await import(\"./ediciones.ts\");\n\t\t\t\tconst porUri = aplanar(edit);\n\t\t\t\tconst resumen = [...porUri.entries()]\n\t\t\t\t\t.map(([u, ediciones]) => `${rutaRelativa(rutaDeUri(u), ctx.cwd)}: ${ediciones.length} edición(es)`)\n\t\t\t\t\t.join(\"\\n\");\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: \"text\", text: `Previsualización (sin aplicar):\\n${resumen || \"(sin cambios)\"}` }],\n\t\t\t\t\tdetails: undefined,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst cambios = await aplicarWorkspaceEdit(edit);\n\t\t\tif (cambios.length === 0) {\n\t\t\t\tthrow new Error(\"El rename no produjo ningún cambio en disco (WorkspaceEdit vacío tras aplicar).\");\n\t\t\t}\n\t\t\tconst resumen = cambios.map(\n\t\t\t\t(c) =>\n\t\t\t\t\t`${rutaRelativa(c.ruta, ctx.cwd)} (${contarLineasDistintas(c.antes, c.despues)} línea(s) cambiada(s))`,\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tcontent: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\ttext: `Renombrado \"${params.new_name}\" aplicado en ${cambios.length} fichero(s):\\n${resumen.join(\"\\n\")}`,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdetails: undefined,\n\t\t\t};\n\t\t} finally {\n\t\t\tawait cliente.cerrar();\n\t\t}\n\t},\n};\n\nfunction contarLineasDistintas(a: string, b: string): number {\n\tconst la = a.split(\"\\n\");\n\tconst lb = b.split(\"\\n\");\n\tlet n = 0;\n\tfor (let i = 0; i < Math.max(la.length, lb.length); i++) if (la[i] !== lb[i]) n++;\n\treturn n;\n}\n\n/** Los cuatro tools del cliente LSP, listos para `pi.registerTool`. */\nexport const lspTools = [lspDefinitionTool, lspSymbolsTool, lspReferencesTool, lspRenameTool];\n"]}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/core/lsp/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAsF/E,QAAA,MAAM,iBAAiB;;;;EAAmB,CAAC;AAc3C,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,OAAO,iBAAiB,CAsBtE,CAAC;AAMF,QAAA,MAAM,kBAAkB;;;;;EAKtB,CAAC;AAEH,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,OAAO,kBAAkB,CAyBvE,CAAC;AAMF,QAAA,MAAM,eAAe;;EAEnB,CAAC;AAkBH,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,OAAO,eAAe,CAsBjE,CAAC;AAMF,QAAA,MAAM,aAAa;;;;;;EAMjB,CAAC;AAEH,eAAO,MAAM,aAAa,EAAE,cAAc,CAAC,OAAO,aAAa,CAsD9D,CAAC;AAUF,uEAAuE;AACvE,eAAO,MAAM,QAAQ;;mBAAwE,CAAC"}