@hoilab/ada-cli 0.84.21 → 0.85.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +49 -2
- package/README.es.md +174 -0
- package/README.md +203 -658
- package/dist/ada-publico.d.ts +35 -0
- package/dist/ada-publico.d.ts.map +1 -0
- package/dist/ada-publico.js +40 -0
- package/dist/ada-publico.js.map +1 -0
- package/dist/cli/args.d.ts +3 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +11 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/audit-command.d.ts +15 -0
- package/dist/cli/audit-command.d.ts.map +1 -0
- package/dist/cli/audit-command.js +280 -0
- package/dist/cli/audit-command.js.map +1 -0
- package/dist/cli/banco-command.d.ts +15 -0
- package/dist/cli/banco-command.d.ts.map +1 -0
- package/dist/cli/banco-command.js +213 -0
- package/dist/cli/banco-command.js.map +1 -0
- package/dist/cli/cleanse-command.d.ts +11 -0
- package/dist/cli/cleanse-command.d.ts.map +1 -0
- package/dist/cli/cleanse-command.js +101 -0
- package/dist/cli/cleanse-command.js.map +1 -0
- package/dist/cli/commit-command.d.ts +31 -0
- package/dist/cli/commit-command.d.ts.map +1 -0
- package/dist/cli/commit-command.js +158 -0
- package/dist/cli/commit-command.js.map +1 -0
- package/dist/cli/computer-command.d.ts +12 -0
- package/dist/cli/computer-command.d.ts.map +1 -0
- package/dist/cli/computer-command.js +141 -0
- package/dist/cli/computer-command.js.map +1 -0
- package/dist/cli/discover-command.d.ts +18 -0
- package/dist/cli/discover-command.d.ts.map +1 -0
- package/dist/cli/discover-command.js +108 -0
- package/dist/cli/discover-command.js.map +1 -0
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js +2 -1
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/cli/hashline-command.d.ts +11 -0
- package/dist/cli/hashline-command.d.ts.map +1 -0
- package/dist/cli/hashline-command.js +106 -0
- package/dist/cli/hashline-command.js.map +1 -0
- package/dist/cli/home-screen.d.ts.map +1 -1
- package/dist/cli/home-screen.js +2 -2
- package/dist/cli/home-screen.js.map +1 -1
- package/dist/cli/import-command.d.ts +35 -0
- package/dist/cli/import-command.d.ts.map +1 -0
- package/dist/cli/import-command.js +164 -0
- package/dist/cli/import-command.js.map +1 -0
- package/dist/cli/politica-command.d.ts +20 -0
- package/dist/cli/politica-command.d.ts.map +1 -0
- package/dist/cli/politica-command.js +93 -0
- package/dist/cli/politica-command.js.map +1 -0
- package/dist/cli/refine-command.d.ts +18 -0
- package/dist/cli/refine-command.d.ts.map +1 -0
- package/dist/cli/refine-command.js +101 -0
- package/dist/cli/refine-command.js.map +1 -0
- package/dist/cli/review-command.d.ts +24 -0
- package/dist/cli/review-command.d.ts.map +1 -0
- package/dist/cli/review-command.js +168 -0
- package/dist/cli/review-command.js.map +1 -0
- package/dist/cli/schedule-command.d.ts +17 -0
- package/dist/cli/schedule-command.d.ts.map +1 -0
- package/dist/cli/schedule-command.js +117 -0
- package/dist/cli/schedule-command.js.map +1 -0
- package/dist/cli/serve-command.d.ts +72 -0
- package/dist/cli/serve-command.d.ts.map +1 -0
- package/dist/cli/serve-command.js +568 -0
- package/dist/cli/serve-command.js.map +1 -0
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +9 -3
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/cli/telegram-command.d.ts +18 -0
- package/dist/cli/telegram-command.d.ts.map +1 -0
- package/dist/cli/telegram-command.js +137 -0
- package/dist/cli/telegram-command.js.map +1 -0
- package/dist/cli/telemetria-command.d.ts +22 -0
- package/dist/cli/telemetria-command.d.ts.map +1 -0
- package/dist/cli/telemetria-command.js +127 -0
- package/dist/cli/telemetria-command.js.map +1 -0
- package/dist/cli/undo-command.d.ts +9 -0
- package/dist/cli/undo-command.d.ts.map +1 -0
- package/dist/cli/undo-command.js +56 -0
- package/dist/cli/undo-command.js.map +1 -0
- package/dist/cli/usage-command.d.ts +10 -0
- package/dist/cli/usage-command.d.ts.map +1 -0
- package/dist/cli/usage-command.js +209 -0
- package/dist/cli/usage-command.js.map +1 -0
- package/dist/cli/wiki-command.d.ts +9 -0
- package/dist/cli/wiki-command.d.ts.map +1 -0
- package/dist/cli/wiki-command.js +76 -0
- package/dist/cli/wiki-command.js.map +1 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +10 -11
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -2
- package/dist/config.js.map +1 -1
- package/dist/core/ada.d.ts +58 -0
- package/dist/core/ada.d.ts.map +1 -0
- package/dist/core/ada.js +61 -0
- package/dist/core/ada.js.map +1 -0
- package/dist/core/advisor/guarda.d.ts +66 -0
- package/dist/core/advisor/guarda.d.ts.map +1 -0
- package/dist/core/advisor/guarda.js +191 -0
- package/dist/core/advisor/guarda.js.map +1 -0
- package/dist/core/advisor/runtime.d.ts +66 -0
- package/dist/core/advisor/runtime.d.ts.map +1 -0
- package/dist/core/advisor/runtime.js +121 -0
- package/dist/core/advisor/runtime.js.map +1 -0
- package/dist/core/advisor/sesion.d.ts +109 -0
- package/dist/core/advisor/sesion.d.ts.map +1 -0
- package/dist/core/advisor/sesion.js +139 -0
- package/dist/core/advisor/sesion.js.map +1 -0
- package/dist/core/agent-session.d.ts +85 -7
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +862 -78
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/agents/loader.d.ts +77 -0
- package/dist/core/agents/loader.d.ts.map +1 -0
- package/dist/core/agents/loader.js +154 -0
- package/dist/core/agents/loader.js.map +1 -0
- package/dist/core/aprobacion/generados.d.ts +37 -0
- package/dist/core/aprobacion/generados.d.ts.map +1 -0
- package/dist/core/aprobacion/generados.js +85 -0
- package/dist/core/aprobacion/generados.js.map +1 -0
- package/dist/core/aprobacion/politica-de-maquina.d.ts +90 -0
- package/dist/core/aprobacion/politica-de-maquina.d.ts.map +1 -0
- package/dist/core/aprobacion/politica-de-maquina.js +212 -0
- package/dist/core/aprobacion/politica-de-maquina.js.map +1 -0
- package/dist/core/aprobacion/politica.d.ts +90 -0
- package/dist/core/aprobacion/politica.d.ts.map +1 -0
- package/dist/core/aprobacion/politica.js +375 -0
- package/dist/core/aprobacion/politica.js.map +1 -0
- package/dist/core/arranque/atajos.d.ts +46 -0
- package/dist/core/arranque/atajos.d.ts.map +1 -0
- package/dist/core/arranque/atajos.js +113 -0
- package/dist/core/arranque/atajos.js.map +1 -0
- package/dist/core/audit/exportacion.d.ts +54 -0
- package/dist/core/audit/exportacion.d.ts.map +1 -0
- package/dist/core/audit/exportacion.js +265 -0
- package/dist/core/audit/exportacion.js.map +1 -0
- package/dist/core/audit/libro.d.ts +318 -0
- package/dist/core/audit/libro.d.ts.map +1 -0
- package/dist/core/audit/libro.js +508 -0
- package/dist/core/audit/libro.js.map +1 -0
- package/dist/core/audit/registro-sesion.d.ts +78 -0
- package/dist/core/audit/registro-sesion.d.ts.map +1 -0
- package/dist/core/audit/registro-sesion.js +202 -0
- package/dist/core/audit/registro-sesion.js.map +1 -0
- package/dist/core/audit/retencion.d.ts +82 -0
- package/dist/core/audit/retencion.d.ts.map +1 -0
- package/dist/core/audit/retencion.js +152 -0
- package/dist/core/audit/retencion.js.map +1 -0
- package/dist/core/audit/rutas.d.ts +23 -0
- package/dist/core/audit/rutas.d.ts.map +1 -0
- package/dist/core/audit/rutas.js +23 -0
- package/dist/core/audit/rutas.js.map +1 -0
- package/dist/core/auth-storage.d.ts +0 -3
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +21 -8
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/banco/almacenamiento.d.ts +18 -0
- package/dist/core/banco/almacenamiento.d.ts.map +1 -0
- package/dist/core/banco/almacenamiento.js +50 -0
- package/dist/core/banco/almacenamiento.js.map +1 -0
- package/dist/core/banco/analisis.d.ts +37 -0
- package/dist/core/banco/analisis.d.ts.map +1 -0
- package/dist/core/banco/analisis.js +164 -0
- package/dist/core/banco/analisis.js.map +1 -0
- package/dist/core/banco/bloques.d.ts +39 -0
- package/dist/core/banco/bloques.d.ts.map +1 -0
- package/dist/core/banco/bloques.js +84 -0
- package/dist/core/banco/bloques.js.map +1 -0
- package/dist/core/banco/cargas.d.ts +84 -0
- package/dist/core/banco/cargas.d.ts.map +1 -0
- package/dist/core/banco/cargas.js +520 -0
- package/dist/core/banco/cargas.js.map +1 -0
- package/dist/core/banco/comparar.d.ts +29 -0
- package/dist/core/banco/comparar.d.ts.map +1 -0
- package/dist/core/banco/comparar.js +28 -0
- package/dist/core/banco/comparar.js.map +1 -0
- package/dist/core/banco/ejecutar.d.ts +44 -0
- package/dist/core/banco/ejecutar.d.ts.map +1 -0
- package/dist/core/banco/ejecutar.js +183 -0
- package/dist/core/banco/ejecutar.js.map +1 -0
- package/dist/core/banco/generar.d.ts +24 -0
- package/dist/core/banco/generar.d.ts.map +1 -0
- package/dist/core/banco/generar.js +159 -0
- package/dist/core/banco/generar.js.map +1 -0
- package/dist/core/banco/mutaciones.d.ts +25 -0
- package/dist/core/banco/mutaciones.d.ts.map +1 -0
- package/dist/core/banco/mutaciones.js +215 -0
- package/dist/core/banco/mutaciones.js.map +1 -0
- package/dist/core/banco/tipos.d.ts +121 -0
- package/dist/core/banco/tipos.d.ts.map +1 -0
- package/dist/core/banco/tipos.js +16 -0
- package/dist/core/banco/tipos.js.map +1 -0
- package/dist/core/blobs/almacen.d.ts +81 -0
- package/dist/core/blobs/almacen.d.ts.map +1 -0
- package/dist/core/blobs/almacen.js +198 -0
- package/dist/core/blobs/almacen.js.map +1 -0
- package/dist/core/blobs/broker.d.ts +103 -0
- package/dist/core/blobs/broker.d.ts.map +1 -0
- package/dist/core/blobs/broker.js +204 -0
- package/dist/core/blobs/broker.js.map +1 -0
- package/dist/core/blobs/index.d.ts +70 -0
- package/dist/core/blobs/index.d.ts.map +1 -0
- package/dist/core/blobs/index.js +232 -0
- package/dist/core/blobs/index.js.map +1 -0
- package/dist/core/blobs/payload.d.ts +55 -0
- package/dist/core/blobs/payload.d.ts.map +1 -0
- package/dist/core/blobs/payload.js +255 -0
- package/dist/core/blobs/payload.js.map +1 -0
- package/dist/core/blobs/proveedor.d.ts +85 -0
- package/dist/core/blobs/proveedor.d.ts.map +1 -0
- package/dist/core/blobs/proveedor.js +196 -0
- package/dist/core/blobs/proveedor.js.map +1 -0
- package/dist/core/browser/cdp.d.ts +41 -0
- package/dist/core/browser/cdp.d.ts.map +1 -0
- package/dist/core/browser/cdp.js +119 -0
- package/dist/core/browser/cdp.js.map +1 -0
- package/dist/core/browser/politica.d.ts +51 -0
- package/dist/core/browser/politica.d.ts.map +1 -0
- package/dist/core/browser/politica.js +123 -0
- package/dist/core/browser/politica.js.map +1 -0
- package/dist/core/browser/sesion.d.ts +52 -0
- package/dist/core/browser/sesion.d.ts.map +1 -0
- package/dist/core/browser/sesion.js +176 -0
- package/dist/core/browser/sesion.js.map +1 -0
- package/dist/core/browser/tools.d.ts +16 -0
- package/dist/core/browser/tools.d.ts.map +1 -0
- package/dist/core/browser/tools.js +279 -0
- package/dist/core/browser/tools.js.map +1 -0
- package/dist/core/commit/diff.d.ts +56 -0
- package/dist/core/commit/diff.d.ts.map +1 -0
- package/dist/core/commit/diff.js +145 -0
- package/dist/core/commit/diff.js.map +1 -0
- package/dist/core/commit/mensaje.d.ts +80 -0
- package/dist/core/commit/mensaje.d.ts.map +1 -0
- package/dist/core/commit/mensaje.js +207 -0
- package/dist/core/commit/mensaje.js.map +1 -0
- package/dist/core/compactar/index.d.ts +52 -0
- package/dist/core/compactar/index.d.ts.map +1 -0
- package/dist/core/compactar/index.js +91 -0
- package/dist/core/compactar/index.js.map +1 -0
- package/dist/core/compactar/registro-denso.d.ts +160 -0
- package/dist/core/compactar/registro-denso.d.ts.map +1 -0
- package/dist/core/compactar/registro-denso.js +620 -0
- package/dist/core/compactar/registro-denso.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +3 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +4 -3
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +41 -32
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/computer/captura.d.ts +35 -0
- package/dist/core/computer/captura.d.ts.map +1 -0
- package/dist/core/computer/captura.js +140 -0
- package/dist/core/computer/captura.js.map +1 -0
- package/dist/core/computer/driver.d.ts +130 -0
- package/dist/core/computer/driver.d.ts.map +1 -0
- package/dist/core/computer/driver.js +206 -0
- package/dist/core/computer/driver.js.map +1 -0
- package/dist/core/computer/motor/actions.d.ts +109 -0
- package/dist/core/computer/motor/actions.d.ts.map +1 -0
- package/dist/core/computer/motor/actions.js +157 -0
- package/dist/core/computer/motor/actions.js.map +1 -0
- package/dist/core/computer/motor/bridge.d.ts +232 -0
- package/dist/core/computer/motor/bridge.d.ts.map +1 -0
- package/dist/core/computer/motor/bridge.js +2335 -0
- package/dist/core/computer/motor/bridge.js.map +1 -0
- package/dist/core/computer/motor/cdp.d.ts +107 -0
- package/dist/core/computer/motor/cdp.d.ts.map +1 -0
- package/dist/core/computer/motor/cdp.js +659 -0
- package/dist/core/computer/motor/cdp.js.map +1 -0
- package/dist/core/computer/motor/config.d.ts +23 -0
- package/dist/core/computer/motor/config.d.ts.map +1 -0
- package/dist/core/computer/motor/config.js +100 -0
- package/dist/core/computer/motor/config.js.map +1 -0
- package/dist/core/computer/motor/contract.d.ts +81 -0
- package/dist/core/computer/motor/contract.d.ts.map +1 -0
- package/dist/core/computer/motor/contract.js +14 -0
- package/dist/core/computer/motor/contract.js.map +1 -0
- package/dist/core/computer/motor/note.d.ts +37 -0
- package/dist/core/computer/motor/note.d.ts.map +1 -0
- package/dist/core/computer/motor/note.js +162 -0
- package/dist/core/computer/motor/note.js.map +1 -0
- package/dist/core/computer/motor/outline.d.ts +155 -0
- package/dist/core/computer/motor/outline.d.ts.map +1 -0
- package/dist/core/computer/motor/outline.js +590 -0
- package/dist/core/computer/motor/outline.js.map +1 -0
- package/dist/core/computer/motor/output.d.ts +18 -0
- package/dist/core/computer/motor/output.d.ts.map +1 -0
- package/dist/core/computer/motor/output.js +148 -0
- package/dist/core/computer/motor/output.js.map +1 -0
- package/dist/core/computer/motor/permissions.d.ts +41 -0
- package/dist/core/computer/motor/permissions.d.ts.map +1 -0
- package/dist/core/computer/motor/permissions.js +51 -0
- package/dist/core/computer/motor/permissions.js.map +1 -0
- package/dist/core/computer/motor/platform/architecture.d.ts +5 -0
- package/dist/core/computer/motor/platform/architecture.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/architecture.js +21 -0
- package/dist/core/computer/motor/platform/architecture.js.map +1 -0
- package/dist/core/computer/motor/platform/coerce.d.ts +4 -0
- package/dist/core/computer/motor/platform/coerce.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/coerce.js +17 -0
- package/dist/core/computer/motor/platform/coerce.js.map +1 -0
- package/dist/core/computer/motor/platform/index.d.ts +4 -0
- package/dist/core/computer/motor/platform/index.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/index.js +79 -0
- package/dist/core/computer/motor/platform/index.js.map +1 -0
- package/dist/core/computer/motor/platform/linux/backend.d.ts +3 -0
- package/dist/core/computer/motor/platform/linux/backend.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/linux/backend.js +173 -0
- package/dist/core/computer/motor/platform/linux/backend.js.map +1 -0
- package/dist/core/computer/motor/platform/linux/helper.d.ts +29 -0
- package/dist/core/computer/motor/platform/linux/helper.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/linux/helper.js +261 -0
- package/dist/core/computer/motor/platform/linux/helper.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/backend.d.ts +3 -0
- package/dist/core/computer/motor/platform/macos/backend.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/backend.js +124 -0
- package/dist/core/computer/motor/platform/macos/backend.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/browser.d.ts +7 -0
- package/dist/core/computer/motor/platform/macos/browser.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/browser.js +101 -0
- package/dist/core/computer/motor/platform/macos/browser.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/helper-path.mjs +34 -0
- package/dist/core/computer/motor/platform/macos/helper.d.ts +32 -0
- package/dist/core/computer/motor/platform/macos/helper.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/helper.js +277 -0
- package/dist/core/computer/motor/platform/macos/helper.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/permissions.d.ts +4 -0
- package/dist/core/computer/motor/platform/macos/permissions.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/permissions.js +118 -0
- package/dist/core/computer/motor/platform/macos/permissions.js.map +1 -0
- package/dist/core/computer/motor/platform/types.d.ts +263 -0
- package/dist/core/computer/motor/platform/types.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/types.js +2 -0
- package/dist/core/computer/motor/platform/types.js.map +1 -0
- package/dist/core/computer/motor/platform/windows/backend.d.ts +3 -0
- package/dist/core/computer/motor/platform/windows/backend.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/windows/backend.js +163 -0
- package/dist/core/computer/motor/platform/windows/backend.js.map +1 -0
- package/dist/core/computer/motor/platform/windows/helper.d.ts +18 -0
- package/dist/core/computer/motor/platform/windows/helper.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/windows/helper.js +174 -0
- package/dist/core/computer/motor/platform/windows/helper.js.map +1 -0
- package/dist/core/computer/motor/root-selection.d.ts +6 -0
- package/dist/core/computer/motor/root-selection.d.ts.map +1 -0
- package/dist/core/computer/motor/root-selection.js +28 -0
- package/dist/core/computer/motor/root-selection.js.map +1 -0
- package/dist/core/computer/motor/runtime.d.ts +50 -0
- package/dist/core/computer/motor/runtime.d.ts.map +1 -0
- package/dist/core/computer/motor/runtime.js +119 -0
- package/dist/core/computer/motor/runtime.js.map +1 -0
- package/dist/core/computer/motor/state.d.ts +68 -0
- package/dist/core/computer/motor/state.d.ts.map +1 -0
- package/dist/core/computer/motor/state.js +100 -0
- package/dist/core/computer/motor/state.js.map +1 -0
- package/dist/core/computer/motor/view.d.ts +6 -0
- package/dist/core/computer/motor/view.d.ts.map +1 -0
- package/dist/core/computer/motor/view.js +185 -0
- package/dist/core/computer/motor/view.js.map +1 -0
- package/dist/core/computer/motor-ada.d.ts +159 -0
- package/dist/core/computer/motor-ada.d.ts.map +1 -0
- package/dist/core/computer/motor-ada.js +412 -0
- package/dist/core/computer/motor-ada.js.map +1 -0
- package/dist/core/computer/politica.d.ts +56 -0
- package/dist/core/computer/politica.d.ts.map +1 -0
- package/dist/core/computer/politica.js +163 -0
- package/dist/core/computer/politica.js.map +1 -0
- package/dist/core/computer/tools.d.ts +26 -0
- package/dist/core/computer/tools.d.ts.map +1 -0
- package/dist/core/computer/tools.js +399 -0
- package/dist/core/computer/tools.js.map +1 -0
- package/dist/core/context-breakdown.d.ts +80 -0
- package/dist/core/context-breakdown.d.ts.map +1 -0
- package/dist/core/context-breakdown.js +87 -0
- package/dist/core/context-breakdown.js.map +1 -0
- package/dist/core/credenciales/cliente.d.ts +60 -0
- package/dist/core/credenciales/cliente.d.ts.map +1 -0
- package/dist/core/credenciales/cliente.js +81 -0
- package/dist/core/credenciales/cliente.js.map +1 -0
- package/dist/core/credenciales/pool.d.ts +96 -0
- package/dist/core/credenciales/pool.d.ts.map +1 -0
- package/dist/core/credenciales/pool.js +128 -0
- package/dist/core/credenciales/pool.js.map +1 -0
- package/dist/core/credenciales/reposo.d.ts +93 -0
- package/dist/core/credenciales/reposo.d.ts.map +1 -0
- package/dist/core/credenciales/reposo.js +489 -0
- package/dist/core/credenciales/reposo.js.map +1 -0
- package/dist/core/credenciales/servidor.d.ts +55 -0
- package/dist/core/credenciales/servidor.d.ts.map +1 -0
- package/dist/core/credenciales/servidor.js +205 -0
- package/dist/core/credenciales/servidor.js.map +1 -0
- package/dist/core/defaults.d.ts +1 -0
- package/dist/core/defaults.d.ts.map +1 -1
- package/dist/core/defaults.js +9 -0
- package/dist/core/defaults.js.map +1 -1
- package/dist/core/descubrimiento/comandos.d.ts +30 -0
- package/dist/core/descubrimiento/comandos.d.ts.map +1 -0
- package/dist/core/descubrimiento/comandos.js +76 -0
- package/dist/core/descubrimiento/comandos.js.map +1 -0
- package/dist/core/descubrimiento/mcp.d.ts +42 -0
- package/dist/core/descubrimiento/mcp.d.ts.map +1 -0
- package/dist/core/descubrimiento/mcp.js +130 -0
- package/dist/core/descubrimiento/mcp.js.map +1 -0
- package/dist/core/descubrimiento/reglas.d.ts +61 -0
- package/dist/core/descubrimiento/reglas.d.ts.map +1 -0
- package/dist/core/descubrimiento/reglas.js +134 -0
- package/dist/core/descubrimiento/reglas.js.map +1 -0
- package/dist/core/descubrimiento/skills.d.ts +57 -0
- package/dist/core/descubrimiento/skills.d.ts.map +1 -0
- package/dist/core/descubrimiento/skills.js +113 -0
- package/dist/core/descubrimiento/skills.js.map +1 -0
- package/dist/core/dificultad/clasificador.d.ts +133 -0
- package/dist/core/dificultad/clasificador.d.ts.map +1 -0
- package/dist/core/dificultad/clasificador.js +288 -0
- package/dist/core/dificultad/clasificador.js.map +1 -0
- package/dist/core/edicion/diario.d.ts +37 -0
- package/dist/core/edicion/diario.d.ts.map +1 -0
- package/dist/core/edicion/diario.js +51 -0
- package/dist/core/edicion/diario.js.map +1 -0
- package/dist/core/edicion/hashline.d.ts +71 -0
- package/dist/core/edicion/hashline.d.ts.map +1 -0
- package/dist/core/edicion/hashline.js +111 -0
- package/dist/core/edicion/hashline.js.map +1 -0
- package/dist/core/edicion/hueco.d.ts +64 -0
- package/dist/core/edicion/hueco.d.ts.map +1 -0
- package/dist/core/edicion/hueco.js +162 -0
- package/dist/core/edicion/hueco.js.map +1 -0
- package/dist/core/edicion/limpiar-carga.d.ts +39 -0
- package/dist/core/edicion/limpiar-carga.d.ts.map +1 -0
- package/dist/core/edicion/limpiar-carga.js +121 -0
- package/dist/core/edicion/limpiar-carga.js.map +1 -0
- package/dist/core/edicion/observador.d.ts +80 -0
- package/dist/core/edicion/observador.d.ts.map +1 -0
- package/dist/core/edicion/observador.js +183 -0
- package/dist/core/edicion/observador.js.map +1 -0
- package/dist/core/edicion/parecido.d.ts +53 -0
- package/dist/core/edicion/parecido.d.ts.map +1 -0
- package/dist/core/edicion/parecido.js +145 -0
- package/dist/core/edicion/parecido.js.map +1 -0
- package/dist/core/edicion/parseo.d.ts +58 -0
- package/dist/core/edicion/parseo.d.ts.map +1 -0
- package/dist/core/edicion/parseo.js +124 -0
- package/dist/core/edicion/parseo.js.map +1 -0
- package/dist/core/edicion/reparacion.d.ts +67 -0
- package/dist/core/edicion/reparacion.d.ts.map +1 -0
- package/dist/core/edicion/reparacion.js +202 -0
- package/dist/core/edicion/reparacion.js.map +1 -0
- package/dist/core/edicion/sangria.d.ts +121 -0
- package/dist/core/edicion/sangria.d.ts.map +1 -0
- package/dist/core/edicion/sangria.js +341 -0
- package/dist/core/edicion/sangria.js.map +1 -0
- package/dist/core/edicion/tipos.d.ts +58 -0
- package/dist/core/edicion/tipos.d.ts.map +1 -0
- package/dist/core/edicion/tipos.js +160 -0
- package/dist/core/edicion/tipos.js.map +1 -0
- package/dist/core/engine-personality.d.ts +12 -0
- package/dist/core/engine-personality.d.ts.map +1 -0
- package/dist/core/engine-personality.js +53 -0
- package/dist/core/engine-personality.js.map +1 -0
- package/dist/core/errores/proveedor.d.ts +53 -0
- package/dist/core/errores/proveedor.d.ts.map +1 -0
- package/dist/core/errores/proveedor.js +191 -0
- package/dist/core/errores/proveedor.js.map +1 -0
- package/dist/core/estructural/buscar.d.ts +61 -0
- package/dist/core/estructural/buscar.d.ts.map +1 -0
- package/dist/core/estructural/buscar.js +261 -0
- package/dist/core/estructural/buscar.js.map +1 -0
- package/dist/core/estructural/editar.d.ts +36 -0
- package/dist/core/estructural/editar.d.ts.map +1 -0
- package/dist/core/estructural/editar.js +123 -0
- package/dist/core/estructural/editar.js.map +1 -0
- package/dist/core/estructural/tools.d.ts +11 -0
- package/dist/core/estructural/tools.d.ts.map +1 -0
- package/dist/core/estructural/tools.js +100 -0
- package/dist/core/estructural/tools.js.map +1 -0
- package/dist/core/experimental.d.ts.map +1 -1
- package/dist/core/experimental.js +10 -1
- package/dist/core/experimental.js.map +1 -1
- package/dist/core/extensiones/suplantacion.d.ts +49 -0
- package/dist/core/extensiones/suplantacion.d.ts.map +1 -0
- package/dist/core/extensiones/suplantacion.js +61 -0
- package/dist/core/extensiones/suplantacion.js.map +1 -0
- package/dist/core/extensiones/vigilancia.d.ts +54 -0
- package/dist/core/extensiones/vigilancia.d.ts.map +1 -0
- package/dist/core/extensiones/vigilancia.js +217 -0
- package/dist/core/extensiones/vigilancia.js.map +1 -0
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +21 -6
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/types.d.ts +23 -4
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/harness/fuentes-de-contexto.d.ts +29 -0
- package/dist/core/harness/fuentes-de-contexto.d.ts.map +1 -0
- package/dist/core/harness/fuentes-de-contexto.js +44 -0
- package/dist/core/harness/fuentes-de-contexto.js.map +1 -0
- package/dist/core/harness/refine.d.ts +40 -0
- package/dist/core/harness/refine.d.ts.map +1 -0
- package/dist/core/harness/refine.js +109 -0
- package/dist/core/harness/refine.js.map +1 -0
- package/dist/core/harness/store.d.ts +75 -0
- package/dist/core/harness/store.d.ts.map +1 -0
- package/dist/core/harness/store.js +149 -0
- package/dist/core/harness/store.js.map +1 -0
- package/dist/core/hooks/contract.d.ts +85 -0
- package/dist/core/hooks/contract.d.ts.map +1 -0
- package/dist/core/hooks/contract.js +140 -0
- package/dist/core/hooks/contract.js.map +1 -0
- package/dist/core/hooks/runner.d.ts +42 -0
- package/dist/core/hooks/runner.d.ts.map +1 -0
- package/dist/core/hooks/runner.js +85 -0
- package/dist/core/hooks/runner.js.map +1 -0
- package/dist/core/hooks/session-hooks.d.ts +62 -0
- package/dist/core/hooks/session-hooks.d.ts.map +1 -0
- package/dist/core/hooks/session-hooks.js +84 -0
- package/dist/core/hooks/session-hooks.js.map +1 -0
- package/dist/core/importar/formatos.d.ts +69 -0
- package/dist/core/importar/formatos.d.ts.map +1 -0
- package/dist/core/importar/formatos.js +235 -0
- package/dist/core/importar/formatos.js.map +1 -0
- package/dist/core/interactivo/deteccion.d.ts +44 -0
- package/dist/core/interactivo/deteccion.d.ts.map +1 -0
- package/dist/core/interactivo/deteccion.js +82 -0
- package/dist/core/interactivo/deteccion.js.map +1 -0
- package/dist/core/interactivo/sesion.d.ts +50 -0
- package/dist/core/interactivo/sesion.d.ts.map +1 -0
- package/dist/core/interactivo/sesion.js +156 -0
- package/dist/core/interactivo/sesion.js.map +1 -0
- package/dist/core/interactivo/tools.d.ts +21 -0
- package/dist/core/interactivo/tools.d.ts.map +1 -0
- package/dist/core/interactivo/tools.js +122 -0
- package/dist/core/interactivo/tools.js.map +1 -0
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +2 -1
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/lectura/mapa.d.ts +70 -0
- package/dist/core/lectura/mapa.d.ts.map +1 -0
- package/dist/core/lectura/mapa.js +177 -0
- package/dist/core/lectura/mapa.js.map +1 -0
- package/dist/core/lectura/pdf.d.ts +49 -0
- package/dist/core/lectura/pdf.d.ts.map +1 -0
- package/dist/core/lectura/pdf.js +337 -0
- package/dist/core/lectura/pdf.js.map +1 -0
- package/dist/core/limpieza/comprobadores.d.ts +28 -0
- package/dist/core/limpieza/comprobadores.d.ts.map +1 -0
- package/dist/core/limpieza/comprobadores.js +311 -0
- package/dist/core/limpieza/comprobadores.js.map +1 -0
- package/dist/core/limpieza/parseo.d.ts +19 -0
- package/dist/core/limpieza/parseo.d.ts.map +1 -0
- package/dist/core/limpieza/parseo.js +124 -0
- package/dist/core/limpieza/parseo.js.map +1 -0
- package/dist/core/limpieza/reparacion.d.ts +77 -0
- package/dist/core/limpieza/reparacion.d.ts.map +1 -0
- package/dist/core/limpieza/reparacion.js +254 -0
- package/dist/core/limpieza/reparacion.js.map +1 -0
- package/dist/core/limpieza/tipos.d.ts +56 -0
- package/dist/core/limpieza/tipos.d.ts.map +1 -0
- package/dist/core/limpieza/tipos.js +9 -0
- package/dist/core/limpieza/tipos.js.map +1 -0
- package/dist/core/lsp/cliente.d.ts +52 -0
- package/dist/core/lsp/cliente.d.ts.map +1 -0
- package/dist/core/lsp/cliente.js +232 -0
- package/dist/core/lsp/cliente.js.map +1 -0
- package/dist/core/lsp/descubrimiento.d.ts +62 -0
- package/dist/core/lsp/descubrimiento.d.ts.map +1 -0
- package/dist/core/lsp/descubrimiento.js +152 -0
- package/dist/core/lsp/descubrimiento.js.map +1 -0
- package/dist/core/lsp/ediciones.d.ts +59 -0
- package/dist/core/lsp/ediciones.d.ts.map +1 -0
- package/dist/core/lsp/ediciones.js +89 -0
- package/dist/core/lsp/ediciones.js.map +1 -0
- package/dist/core/lsp/extension.d.ts +28 -0
- package/dist/core/lsp/extension.d.ts.map +1 -0
- package/dist/core/lsp/extension.js +34 -0
- package/dist/core/lsp/extension.js.map +1 -0
- package/dist/core/lsp/tools.d.ts +45 -0
- package/dist/core/lsp/tools.d.ts.map +1 -0
- package/dist/core/lsp/tools.js +265 -0
- package/dist/core/lsp/tools.js.map +1 -0
- package/dist/core/mcp/client.d.ts +60 -0
- package/dist/core/mcp/client.d.ts.map +1 -0
- package/dist/core/mcp/client.js +139 -0
- package/dist/core/mcp/client.js.map +1 -0
- package/dist/core/mcp/manager.d.ts +86 -0
- package/dist/core/mcp/manager.d.ts.map +1 -0
- package/dist/core/mcp/manager.js +124 -0
- package/dist/core/mcp/manager.js.map +1 -0
- package/dist/core/mcp/tools.d.ts +15 -0
- package/dist/core/mcp/tools.d.ts.map +1 -0
- package/dist/core/mcp/tools.js +84 -0
- package/dist/core/mcp/tools.js.map +1 -0
- package/dist/core/memory-engine/audit-export.d.ts +56 -0
- package/dist/core/memory-engine/audit-export.d.ts.map +1 -0
- package/dist/core/memory-engine/audit-export.js +100 -0
- package/dist/core/memory-engine/audit-export.js.map +1 -0
- package/dist/core/memory-engine/audit-indice.d.ts +153 -0
- package/dist/core/memory-engine/audit-indice.d.ts.map +1 -0
- package/dist/core/memory-engine/audit-indice.js +271 -0
- package/dist/core/memory-engine/audit-indice.js.map +1 -0
- package/dist/core/memory-engine/audit.d.ts +18 -6
- package/dist/core/memory-engine/audit.d.ts.map +1 -1
- package/dist/core/memory-engine/audit.js +32 -50
- package/dist/core/memory-engine/audit.js.map +1 -1
- package/dist/core/memory-engine/engine.d.ts +21 -4
- package/dist/core/memory-engine/engine.d.ts.map +1 -1
- package/dist/core/memory-engine/engine.js +219 -55
- package/dist/core/memory-engine/engine.js.map +1 -1
- package/dist/core/memory-engine/inverted-index.d.ts.map +1 -1
- package/dist/core/memory-engine/inverted-index.js +67 -10
- package/dist/core/memory-engine/inverted-index.js.map +1 -1
- package/dist/core/memory-engine/keychain.d.ts.map +1 -1
- package/dist/core/memory-engine/keychain.js +1 -6
- package/dist/core/memory-engine/keychain.js.map +1 -1
- package/dist/core/memory-engine/observation-store.d.ts +0 -1
- package/dist/core/memory-engine/observation-store.d.ts.map +1 -1
- package/dist/core/memory-engine/observation-store.js +40 -12
- package/dist/core/memory-engine/observation-store.js.map +1 -1
- package/dist/core/memory-engine/refinements.d.ts +51 -0
- package/dist/core/memory-engine/refinements.d.ts.map +1 -0
- package/dist/core/memory-engine/refinements.js +99 -0
- package/dist/core/memory-engine/refinements.js.map +1 -0
- package/dist/core/memory-engine/scanner.d.ts.map +1 -1
- package/dist/core/memory-engine/scanner.js +25 -5
- package/dist/core/memory-engine/scanner.js.map +1 -1
- package/dist/core/memory-engine/security.d.ts.map +1 -1
- package/dist/core/memory-engine/security.js +131 -23
- package/dist/core/memory-engine/security.js.map +1 -1
- package/dist/core/memory-engine/session-indexer.d.ts.map +1 -1
- package/dist/core/memory-engine/session-indexer.js +8 -2
- package/dist/core/memory-engine/session-indexer.js.map +1 -1
- package/dist/core/memory-engine/tools.d.ts +2 -2
- package/dist/core/memory-engine/tools.d.ts.map +1 -1
- package/dist/core/memory-engine/tools.js +41 -8
- package/dist/core/memory-engine/tools.js.map +1 -1
- package/dist/core/memory-engine/types.d.ts +2 -0
- package/dist/core/memory-engine/types.d.ts.map +1 -1
- package/dist/core/memory-engine/types.js.map +1 -1
- package/dist/core/memory-engine/vault.d.ts.map +1 -1
- package/dist/core/memory-engine/vault.js +2 -2
- package/dist/core/memory-engine/vault.js.map +1 -1
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +2 -1
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-resolver.d.ts +1 -0
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +19 -7
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/models-store.d.ts.map +1 -1
- package/dist/core/models-store.js +2 -1
- package/dist/core/models-store.js.map +1 -1
- package/dist/core/muestreo-restringido.d.ts +49 -0
- package/dist/core/muestreo-restringido.d.ts.map +1 -0
- package/dist/core/muestreo-restringido.js +65 -0
- package/dist/core/muestreo-restringido.js.map +1 -0
- package/dist/core/orphan-process-journal.d.ts +48 -0
- package/dist/core/orphan-process-journal.d.ts.map +1 -0
- package/dist/core/orphan-process-journal.js +116 -0
- package/dist/core/orphan-process-journal.js.map +1 -0
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +11 -6
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/pi-manifest.d.ts.map +1 -1
- package/dist/core/pi-manifest.js +2 -1
- package/dist/core/pi-manifest.js.map +1 -1
- package/dist/core/privacidad/categorias-especiales.d.ts +186 -0
- package/dist/core/privacidad/categorias-especiales.d.ts.map +1 -0
- package/dist/core/privacidad/categorias-especiales.js +745 -0
- package/dist/core/privacidad/categorias-especiales.js.map +1 -0
- package/dist/core/privacidad/tapar.d.ts +48 -0
- package/dist/core/privacidad/tapar.d.ts.map +1 -0
- package/dist/core/privacidad/tapar.js +66 -0
- package/dist/core/privacidad/tapar.js.map +1 -0
- package/dist/core/prompt-cache/diagnostics.d.ts +33 -0
- package/dist/core/prompt-cache/diagnostics.d.ts.map +1 -0
- package/dist/core/prompt-cache/diagnostics.js +100 -0
- package/dist/core/prompt-cache/diagnostics.js.map +1 -0
- package/dist/core/prompt-cache/index.d.ts +33 -0
- package/dist/core/prompt-cache/index.d.ts.map +1 -0
- package/dist/core/prompt-cache/index.js +189 -0
- package/dist/core/prompt-cache/index.js.map +1 -0
- package/dist/core/prompt-cache/payload.d.ts +58 -0
- package/dist/core/prompt-cache/payload.d.ts.map +1 -0
- package/dist/core/prompt-cache/payload.js +122 -0
- package/dist/core/prompt-cache/payload.js.map +1 -0
- package/dist/core/prompt-cache/stabilize.d.ts +65 -0
- package/dist/core/prompt-cache/stabilize.d.ts.map +1 -0
- package/dist/core/prompt-cache/stabilize.js +137 -0
- package/dist/core/prompt-cache/stabilize.js.map +1 -0
- package/dist/core/prompt-cache/stats.d.ts +55 -0
- package/dist/core/prompt-cache/stats.d.ts.map +1 -0
- package/dist/core/prompt-cache/stats.js +158 -0
- package/dist/core/prompt-cache/stats.js.map +1 -0
- package/dist/core/prompt-eleccion.d.ts +38 -0
- package/dist/core/prompt-eleccion.d.ts.map +1 -0
- package/dist/core/prompt-eleccion.js +46 -0
- package/dist/core/prompt-eleccion.js.map +1 -0
- package/dist/core/prompt-optimizer.d.ts +53 -0
- package/dist/core/prompt-optimizer.d.ts.map +1 -0
- package/dist/core/prompt-optimizer.js +138 -0
- package/dist/core/prompt-optimizer.js.map +1 -0
- package/dist/core/prompts/montar.d.ts +75 -0
- package/dist/core/prompts/montar.d.ts.map +1 -0
- package/dist/core/prompts/montar.js +146 -0
- package/dist/core/prompts/montar.js.map +1 -0
- package/dist/core/prompts/plantilla.d.ts +54 -0
- package/dist/core/prompts/plantilla.d.ts.map +1 -0
- package/dist/core/prompts/plantilla.js +153 -0
- package/dist/core/prompts/plantilla.js.map +1 -0
- package/dist/core/prompts/sistema.md +134 -0
- package/dist/core/provider-attribution.d.ts +24 -2
- package/dist/core/provider-attribution.d.ts.map +1 -1
- package/dist/core/provider-attribution.js +24 -42
- package/dist/core/provider-attribution.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +2 -1
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/remoto/destino.d.ts +38 -0
- package/dist/core/remoto/destino.d.ts.map +1 -0
- package/dist/core/remoto/destino.js +105 -0
- package/dist/core/remoto/destino.js.map +1 -0
- package/dist/core/remoto/ejecutor.d.ts +59 -0
- package/dist/core/remoto/ejecutor.d.ts.map +1 -0
- package/dist/core/remoto/ejecutor.js +225 -0
- package/dist/core/remoto/ejecutor.js.map +1 -0
- package/dist/core/remoto/ficheros.d.ts +29 -0
- package/dist/core/remoto/ficheros.d.ts.map +1 -0
- package/dist/core/remoto/ficheros.js +90 -0
- package/dist/core/remoto/ficheros.js.map +1 -0
- package/dist/core/remoto/registro-extension.d.ts +15 -0
- package/dist/core/remoto/registro-extension.d.ts.map +1 -0
- package/dist/core/remoto/registro-extension.js +17 -0
- package/dist/core/remoto/registro-extension.js.map +1 -0
- package/dist/core/remoto/tools.d.ts +28 -0
- package/dist/core/remoto/tools.d.ts.map +1 -0
- package/dist/core/remoto/tools.js +31 -0
- package/dist/core/remoto/tools.js.map +1 -0
- package/dist/core/resource-loader.d.ts +58 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +326 -8
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/revision/hallazgo.d.ts +51 -0
- package/dist/core/revision/hallazgo.d.ts.map +1 -0
- package/dist/core/revision/hallazgo.js +73 -0
- package/dist/core/revision/hallazgo.js.map +1 -0
- package/dist/core/revision/revisor.d.ts +81 -0
- package/dist/core/revision/revisor.d.ts.map +1 -0
- package/dist/core/revision/revisor.js +132 -0
- package/dist/core/revision/revisor.js.map +1 -0
- package/dist/core/revision/sarif.d.ts +30 -0
- package/dist/core/revision/sarif.d.ts.map +1 -0
- package/dist/core/revision/sarif.js +83 -0
- package/dist/core/revision/sarif.js.map +1 -0
- package/dist/core/scheduler/scheduler.d.ts +87 -0
- package/dist/core/scheduler/scheduler.d.ts.map +1 -0
- package/dist/core/scheduler/scheduler.js +178 -0
- package/dist/core/scheduler/scheduler.js.map +1 -0
- package/dist/core/sdk.d.ts +8 -0
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +11 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts +49 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts.map +1 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.js +77 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.js.map +1 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +2 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-diagnostics.d.ts +9 -0
- package/dist/core/settings-diagnostics.d.ts.map +1 -0
- package/dist/core/settings-diagnostics.js +21 -0
- package/dist/core/settings-diagnostics.js.map +1 -0
- package/dist/core/settings-manager.d.ts +156 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +255 -10
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +51 -33
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +2 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.d.ts +17 -0
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +13 -5
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/telemetria/otlp.d.ts +122 -0
- package/dist/core/telemetria/otlp.d.ts.map +1 -0
- package/dist/core/telemetria/otlp.js +373 -0
- package/dist/core/telemetria/otlp.js.map +1 -0
- package/dist/core/tools/coercion-argumentos.d.ts +48 -0
- package/dist/core/tools/coercion-argumentos.d.ts.map +1 -0
- package/dist/core/tools/coercion-argumentos.js +99 -0
- package/dist/core/tools/coercion-argumentos.js.map +1 -0
- package/dist/core/tools/edit-diff.d.ts +0 -12
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js +234 -12
- package/dist/core/tools/edit-diff.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +28 -5
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
- package/dist/core/tools/file-mutation-queue.js +5 -0
- package/dist/core/tools/file-mutation-queue.js.map +1 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +2 -2
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/json-tolerante.d.ts +30 -0
- package/dist/core/tools/json-tolerante.d.ts.map +1 -0
- package/dist/core/tools/json-tolerante.js +70 -0
- package/dist/core/tools/json-tolerante.js.map +1 -0
- package/dist/core/tools/project-memory-tool.d.ts.map +1 -1
- package/dist/core/tools/project-memory-tool.js +4 -1
- package/dist/core/tools/project-memory-tool.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +17 -0
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts +14 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js +17 -1
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/trust-manager.d.ts.map +1 -1
- package/dist/core/trust-manager.js +2 -1
- package/dist/core/trust-manager.js.map +1 -1
- package/dist/core/turno-vacio/detectar.d.ts +38 -0
- package/dist/core/turno-vacio/detectar.d.ts.map +1 -0
- package/dist/core/turno-vacio/detectar.js +66 -0
- package/dist/core/turno-vacio/detectar.js.map +1 -0
- package/dist/core/undo/journal.d.ts +57 -0
- package/dist/core/undo/journal.d.ts.map +1 -0
- package/dist/core/undo/journal.js +178 -0
- package/dist/core/undo/journal.js.map +1 -0
- package/dist/core/urls-internas/auditoria.d.ts +10 -0
- package/dist/core/urls-internas/auditoria.d.ts.map +1 -0
- package/dist/core/urls-internas/auditoria.js +42 -0
- package/dist/core/urls-internas/auditoria.js.map +1 -0
- package/dist/core/urls-internas/boveda.d.ts +13 -0
- package/dist/core/urls-internas/boveda.d.ts.map +1 -0
- package/dist/core/urls-internas/boveda.js +40 -0
- package/dist/core/urls-internas/boveda.js.map +1 -0
- package/dist/core/urls-internas/lector.d.ts +30 -0
- package/dist/core/urls-internas/lector.d.ts.map +1 -0
- package/dist/core/urls-internas/lector.js +56 -0
- package/dist/core/urls-internas/lector.js.map +1 -0
- package/dist/core/urls-internas/memoria.d.ts +11 -0
- package/dist/core/urls-internas/memoria.d.ts.map +1 -0
- package/dist/core/urls-internas/memoria.js +25 -0
- package/dist/core/urls-internas/memoria.js.map +1 -0
- package/dist/core/urls-internas/parse.d.ts +28 -0
- package/dist/core/urls-internas/parse.d.ts.map +1 -0
- package/dist/core/urls-internas/parse.js +32 -0
- package/dist/core/urls-internas/parse.js.map +1 -0
- package/dist/core/urls-internas/reglas.d.ts +10 -0
- package/dist/core/urls-internas/reglas.d.ts.map +1 -0
- package/dist/core/urls-internas/reglas.js +31 -0
- package/dist/core/urls-internas/reglas.js.map +1 -0
- package/dist/core/usage/aggregate.d.ts +68 -0
- package/dist/core/usage/aggregate.d.ts.map +1 -0
- package/dist/core/usage/aggregate.js +93 -0
- package/dist/core/usage/aggregate.js.map +1 -0
- package/dist/core/usage/cuota/anthropic.d.ts +10 -0
- package/dist/core/usage/cuota/anthropic.d.ts.map +1 -0
- package/dist/core/usage/cuota/anthropic.js +63 -0
- package/dist/core/usage/cuota/anthropic.js.map +1 -0
- package/dist/core/usage/cuota/cache.d.ts +20 -0
- package/dist/core/usage/cuota/cache.d.ts.map +1 -0
- package/dist/core/usage/cuota/cache.js +36 -0
- package/dist/core/usage/cuota/cache.js.map +1 -0
- package/dist/core/usage/cuota/github-copilot.d.ts +9 -0
- package/dist/core/usage/cuota/github-copilot.d.ts.map +1 -0
- package/dist/core/usage/cuota/github-copilot.js +67 -0
- package/dist/core/usage/cuota/github-copilot.js.map +1 -0
- package/dist/core/usage/cuota/google-gemini.d.ts +9 -0
- package/dist/core/usage/cuota/google-gemini.d.ts.map +1 -0
- package/dist/core/usage/cuota/google-gemini.js +72 -0
- package/dist/core/usage/cuota/google-gemini.js.map +1 -0
- package/dist/core/usage/cuota/index.d.ts +25 -0
- package/dist/core/usage/cuota/index.d.ts.map +1 -0
- package/dist/core/usage/cuota/index.js +50 -0
- package/dist/core/usage/cuota/index.js.map +1 -0
- package/dist/core/usage/cuota/openai-codex.d.ts +9 -0
- package/dist/core/usage/cuota/openai-codex.d.ts.map +1 -0
- package/dist/core/usage/cuota/openai-codex.js +59 -0
- package/dist/core/usage/cuota/openai-codex.js.map +1 -0
- package/dist/core/usage/cuota/openrouter.d.ts +10 -0
- package/dist/core/usage/cuota/openrouter.d.ts.map +1 -0
- package/dist/core/usage/cuota/openrouter.js +47 -0
- package/dist/core/usage/cuota/openrouter.js.map +1 -0
- package/dist/core/usage/cuota/tipos.d.ts +50 -0
- package/dist/core/usage/cuota/tipos.d.ts.map +1 -0
- package/dist/core/usage/cuota/tipos.js +25 -0
- package/dist/core/usage/cuota/tipos.js.map +1 -0
- package/dist/core/web/busqueda-nativa.d.ts +82 -0
- package/dist/core/web/busqueda-nativa.d.ts.map +1 -0
- package/dist/core/web/busqueda-nativa.js +163 -0
- package/dist/core/web/busqueda-nativa.js.map +1 -0
- package/dist/core/web/destino.d.ts +58 -0
- package/dist/core/web/destino.d.ts.map +1 -0
- package/dist/core/web/destino.js +127 -0
- package/dist/core/web/destino.js.map +1 -0
- package/dist/core/web/proveedores/brave.d.ts +6 -0
- package/dist/core/web/proveedores/brave.d.ts.map +1 -0
- package/dist/core/web/proveedores/brave.js +20 -0
- package/dist/core/web/proveedores/brave.js.map +1 -0
- package/dist/core/web/proveedores/claves.d.ts +19 -0
- package/dist/core/web/proveedores/claves.d.ts.map +1 -0
- package/dist/core/web/proveedores/claves.js +36 -0
- package/dist/core/web/proveedores/claves.js.map +1 -0
- package/dist/core/web/proveedores/duckduckgo.d.ts +3 -0
- package/dist/core/web/proveedores/duckduckgo.d.ts.map +1 -0
- package/dist/core/web/proveedores/duckduckgo.js +109 -0
- package/dist/core/web/proveedores/duckduckgo.js.map +1 -0
- package/dist/core/web/proveedores/ecosia.d.ts +3 -0
- package/dist/core/web/proveedores/ecosia.d.ts.map +1 -0
- package/dist/core/web/proveedores/ecosia.js +72 -0
- package/dist/core/web/proveedores/ecosia.js.map +1 -0
- package/dist/core/web/proveedores/exa.d.ts +6 -0
- package/dist/core/web/proveedores/exa.d.ts.map +1 -0
- package/dist/core/web/proveedores/exa.js +24 -0
- package/dist/core/web/proveedores/exa.js.map +1 -0
- package/dist/core/web/proveedores/mojeek.d.ts +3 -0
- package/dist/core/web/proveedores/mojeek.d.ts.map +1 -0
- package/dist/core/web/proveedores/mojeek.js +65 -0
- package/dist/core/web/proveedores/mojeek.js.map +1 -0
- package/dist/core/web/proveedores/navegador.d.ts +10 -0
- package/dist/core/web/proveedores/navegador.d.ts.map +1 -0
- package/dist/core/web/proveedores/navegador.js +13 -0
- package/dist/core/web/proveedores/navegador.js.map +1 -0
- package/dist/core/web/proveedores/registro.d.ts +43 -0
- package/dist/core/web/proveedores/registro.d.ts.map +1 -0
- package/dist/core/web/proveedores/registro.js +49 -0
- package/dist/core/web/proveedores/registro.js.map +1 -0
- package/dist/core/web/proveedores/searxng.d.ts +9 -0
- package/dist/core/web/proveedores/searxng.d.ts.map +1 -0
- package/dist/core/web/proveedores/searxng.js +17 -0
- package/dist/core/web/proveedores/searxng.js.map +1 -0
- package/dist/core/web/proveedores/serper.d.ts +9 -0
- package/dist/core/web/proveedores/serper.d.ts.map +1 -0
- package/dist/core/web/proveedores/serper.js +19 -0
- package/dist/core/web/proveedores/serper.js.map +1 -0
- package/dist/core/web/proveedores/tavily.d.ts +6 -0
- package/dist/core/web/proveedores/tavily.d.ts.map +1 -0
- package/dist/core/web/proveedores/tavily.js +19 -0
- package/dist/core/web/proveedores/tavily.js.map +1 -0
- package/dist/core/web/proveedores/tipos.d.ts +36 -0
- package/dist/core/web/proveedores/tipos.d.ts.map +1 -0
- package/dist/core/web/proveedores/tipos.js +10 -0
- package/dist/core/web/proveedores/tipos.js.map +1 -0
- package/dist/core/web/registro-red.d.ts +43 -0
- package/dist/core/web/registro-red.d.ts.map +1 -0
- package/dist/core/web/registro-red.js +86 -0
- package/dist/core/web/registro-red.js.map +1 -0
- package/dist/core/web/scrapers/cisa-kev.d.ts +10 -0
- package/dist/core/web/scrapers/cisa-kev.d.ts.map +1 -0
- package/dist/core/web/scrapers/cisa-kev.js +38 -0
- package/dist/core/web/scrapers/cisa-kev.js.map +1 -0
- package/dist/core/web/scrapers/crates-io.d.ts +11 -0
- package/dist/core/web/scrapers/crates-io.d.ts.map +1 -0
- package/dist/core/web/scrapers/crates-io.js +29 -0
- package/dist/core/web/scrapers/crates-io.js.map +1 -0
- package/dist/core/web/scrapers/docs-rs.d.ts +10 -0
- package/dist/core/web/scrapers/docs-rs.d.ts.map +1 -0
- package/dist/core/web/scrapers/docs-rs.js +35 -0
- package/dist/core/web/scrapers/docs-rs.js.map +1 -0
- package/dist/core/web/scrapers/github.d.ts +3 -0
- package/dist/core/web/scrapers/github.d.ts.map +1 -0
- package/dist/core/web/scrapers/github.js +72 -0
- package/dist/core/web/scrapers/github.js.map +1 -0
- package/dist/core/web/scrapers/go-pkg.d.ts +7 -0
- package/dist/core/web/scrapers/go-pkg.d.ts.map +1 -0
- package/dist/core/web/scrapers/go-pkg.js +30 -0
- package/dist/core/web/scrapers/go-pkg.js.map +1 -0
- package/dist/core/web/scrapers/hex.d.ts +6 -0
- package/dist/core/web/scrapers/hex.d.ts.map +1 -0
- package/dist/core/web/scrapers/hex.js +27 -0
- package/dist/core/web/scrapers/hex.js.map +1 -0
- package/dist/core/web/scrapers/maven.d.ts +8 -0
- package/dist/core/web/scrapers/maven.d.ts.map +1 -0
- package/dist/core/web/scrapers/maven.js +41 -0
- package/dist/core/web/scrapers/maven.js.map +1 -0
- package/dist/core/web/scrapers/mdn.d.ts +6 -0
- package/dist/core/web/scrapers/mdn.d.ts.map +1 -0
- package/dist/core/web/scrapers/mdn.js +28 -0
- package/dist/core/web/scrapers/mdn.js.map +1 -0
- package/dist/core/web/scrapers/npm.d.ts +11 -0
- package/dist/core/web/scrapers/npm.d.ts.map +1 -0
- package/dist/core/web/scrapers/npm.js +57 -0
- package/dist/core/web/scrapers/npm.js.map +1 -0
- package/dist/core/web/scrapers/nuget.d.ts +8 -0
- package/dist/core/web/scrapers/nuget.d.ts.map +1 -0
- package/dist/core/web/scrapers/nuget.js +22 -0
- package/dist/core/web/scrapers/nuget.js.map +1 -0
- package/dist/core/web/scrapers/nvd.d.ts +7 -0
- package/dist/core/web/scrapers/nvd.d.ts.map +1 -0
- package/dist/core/web/scrapers/nvd.js +37 -0
- package/dist/core/web/scrapers/nvd.js.map +1 -0
- package/dist/core/web/scrapers/pypi.d.ts +6 -0
- package/dist/core/web/scrapers/pypi.d.ts.map +1 -0
- package/dist/core/web/scrapers/pypi.js +31 -0
- package/dist/core/web/scrapers/pypi.js.map +1 -0
- package/dist/core/web/scrapers/registro.d.ts +13 -0
- package/dist/core/web/scrapers/registro.d.ts.map +1 -0
- package/dist/core/web/scrapers/registro.js +65 -0
- package/dist/core/web/scrapers/registro.js.map +1 -0
- package/dist/core/web/scrapers/rubygems.d.ts +6 -0
- package/dist/core/web/scrapers/rubygems.d.ts.map +1 -0
- package/dist/core/web/scrapers/rubygems.js +23 -0
- package/dist/core/web/scrapers/rubygems.js.map +1 -0
- package/dist/core/web/scrapers/stackoverflow.d.ts +3 -0
- package/dist/core/web/scrapers/stackoverflow.d.ts.map +1 -0
- package/dist/core/web/scrapers/stackoverflow.js +46 -0
- package/dist/core/web/scrapers/stackoverflow.js.map +1 -0
- package/dist/core/web/scrapers/tipos.d.ts +42 -0
- package/dist/core/web/scrapers/tipos.d.ts.map +1 -0
- package/dist/core/web/scrapers/tipos.js +23 -0
- package/dist/core/web/scrapers/tipos.js.map +1 -0
- package/dist/core/web/texto.d.ts +10 -0
- package/dist/core/web/texto.d.ts.map +1 -0
- package/dist/core/web/texto.js +26 -0
- package/dist/core/web/texto.js.map +1 -0
- package/dist/core/web/tools.d.ts +91 -0
- package/dist/core/web/tools.d.ts.map +1 -0
- package/dist/core/web/tools.js +304 -0
- package/dist/core/web/tools.js.map +1 -0
- package/dist/core/wiki/almacen.d.ts +33 -0
- package/dist/core/wiki/almacen.d.ts.map +1 -0
- package/dist/core/wiki/almacen.js +93 -0
- package/dist/core/wiki/almacen.js.map +1 -0
- package/dist/core/wiki/citas.d.ts +111 -0
- package/dist/core/wiki/citas.d.ts.map +1 -0
- package/dist/core/wiki/citas.js +146 -0
- package/dist/core/wiki/citas.js.map +1 -0
- package/dist/core/workflows/agent-runner.d.ts +88 -0
- package/dist/core/workflows/agent-runner.d.ts.map +1 -0
- package/dist/core/workflows/agent-runner.js +312 -0
- package/dist/core/workflows/agent-runner.js.map +1 -0
- package/dist/core/workflows/builtins.d.ts +41 -0
- package/dist/core/workflows/builtins.d.ts.map +1 -0
- package/dist/core/workflows/builtins.js +283 -0
- package/dist/core/workflows/builtins.js.map +1 -0
- package/dist/core/workflows/contrato/esquema.d.ts +32 -0
- package/dist/core/workflows/contrato/esquema.d.ts.map +1 -0
- package/dist/core/workflows/contrato/esquema.js +25 -0
- package/dist/core/workflows/contrato/esquema.js.map +1 -0
- package/dist/core/workflows/contrato/reparar-argumentos.d.ts +69 -0
- package/dist/core/workflows/contrato/reparar-argumentos.d.ts.map +1 -0
- package/dist/core/workflows/contrato/reparar-argumentos.js +117 -0
- package/dist/core/workflows/contrato/reparar-argumentos.js.map +1 -0
- package/dist/core/workflows/contrato/validador.d.ts +30 -0
- package/dist/core/workflows/contrato/validador.d.ts.map +1 -0
- package/dist/core/workflows/contrato/validador.js +56 -0
- package/dist/core/workflows/contrato/validador.js.map +1 -0
- package/dist/core/workflows/contrato/yield.d.ts +65 -0
- package/dist/core/workflows/contrato/yield.d.ts.map +1 -0
- package/dist/core/workflows/contrato/yield.js +80 -0
- package/dist/core/workflows/contrato/yield.js.map +1 -0
- package/dist/core/workflows/goal-engine/engine.d.ts +151 -0
- package/dist/core/workflows/goal-engine/engine.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/engine.js +503 -0
- package/dist/core/workflows/goal-engine/engine.js.map +1 -0
- package/dist/core/workflows/goal-engine/errors.d.ts +7 -0
- package/dist/core/workflows/goal-engine/errors.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/errors.js +9 -0
- package/dist/core/workflows/goal-engine/errors.js.map +1 -0
- package/dist/core/workflows/goal-engine/index.d.ts +13 -0
- package/dist/core/workflows/goal-engine/index.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/index.js +8 -0
- package/dist/core/workflows/goal-engine/index.js.map +1 -0
- package/dist/core/workflows/goal-engine/persistence.d.ts +31 -0
- package/dist/core/workflows/goal-engine/persistence.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/persistence.js +145 -0
- package/dist/core/workflows/goal-engine/persistence.js.map +1 -0
- package/dist/core/workflows/goal-engine/prompts.d.ts +37 -0
- package/dist/core/workflows/goal-engine/prompts.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/prompts.js +131 -0
- package/dist/core/workflows/goal-engine/prompts.js.map +1 -0
- package/dist/core/workflows/goal-engine/state.d.ts +41 -0
- package/dist/core/workflows/goal-engine/state.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/state.js +397 -0
- package/dist/core/workflows/goal-engine/state.js.map +1 -0
- package/dist/core/workflows/goal-engine/tools.d.ts +31 -0
- package/dist/core/workflows/goal-engine/tools.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/tools.js +211 -0
- package/dist/core/workflows/goal-engine/tools.js.map +1 -0
- package/dist/core/workflows/goal-engine/types.d.ts +286 -0
- package/dist/core/workflows/goal-engine/types.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/types.js +17 -0
- package/dist/core/workflows/goal-engine/types.js.map +1 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts +23 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.js +72 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.js.map +1 -0
- package/dist/core/workflows/graph-sync.d.ts +67 -0
- package/dist/core/workflows/graph-sync.d.ts.map +1 -0
- package/dist/core/workflows/graph-sync.js +188 -0
- package/dist/core/workflows/graph-sync.js.map +1 -0
- package/dist/core/workflows/graph.d.ts +143 -0
- package/dist/core/workflows/graph.d.ts.map +1 -0
- package/dist/core/workflows/graph.js +319 -0
- package/dist/core/workflows/graph.js.map +1 -0
- package/dist/core/workflows/index.d.ts +26 -0
- package/dist/core/workflows/index.d.ts.map +1 -0
- package/dist/core/workflows/index.js +18 -0
- package/dist/core/workflows/index.js.map +1 -0
- package/dist/core/workflows/journal.d.ts +68 -0
- package/dist/core/workflows/journal.d.ts.map +1 -0
- package/dist/core/workflows/journal.js +83 -0
- package/dist/core/workflows/journal.js.map +1 -0
- package/dist/core/workflows/manager.d.ts +122 -0
- package/dist/core/workflows/manager.d.ts.map +1 -0
- package/dist/core/workflows/manager.js +351 -0
- package/dist/core/workflows/manager.js.map +1 -0
- package/dist/core/workflows/resolve-script.d.ts +35 -0
- package/dist/core/workflows/resolve-script.d.ts.map +1 -0
- package/dist/core/workflows/resolve-script.js +66 -0
- package/dist/core/workflows/resolve-script.js.map +1 -0
- package/dist/core/workflows/runtime.d.ts +62 -0
- package/dist/core/workflows/runtime.d.ts.map +1 -0
- package/dist/core/workflows/runtime.js +380 -0
- package/dist/core/workflows/runtime.js.map +1 -0
- package/dist/core/workflows/save-as-skill.d.ts +27 -0
- package/dist/core/workflows/save-as-skill.d.ts.map +1 -0
- package/dist/core/workflows/save-as-skill.js +54 -0
- package/dist/core/workflows/save-as-skill.js.map +1 -0
- package/dist/core/workflows/shared-store.d.ts +31 -0
- package/dist/core/workflows/shared-store.d.ts.map +1 -0
- package/dist/core/workflows/shared-store.js +80 -0
- package/dist/core/workflows/shared-store.js.map +1 -0
- package/dist/core/workflows/subagent-host.d.ts +50 -0
- package/dist/core/workflows/subagent-host.d.ts.map +1 -0
- package/dist/core/workflows/subagent-host.js +225 -0
- package/dist/core/workflows/subagent-host.js.map +1 -0
- package/dist/core/workflows/tool-workflow.d.ts +22 -0
- package/dist/core/workflows/tool-workflow.d.ts.map +1 -0
- package/dist/core/workflows/tool-workflow.js +120 -0
- package/dist/core/workflows/tool-workflow.js.map +1 -0
- package/dist/core/workflows/types.d.ts +191 -0
- package/dist/core/workflows/types.d.ts.map +1 -0
- package/dist/core/workflows/types.js +26 -0
- package/dist/core/workflows/types.js.map +1 -0
- package/dist/core/workflows/worktree.d.ts +42 -0
- package/dist/core/workflows/worktree.d.ts.map +1 -0
- package/dist/core/workflows/worktree.js +107 -0
- package/dist/core/workflows/worktree.js.map +1 -0
- package/dist/extensions/llama/index.d.ts.map +1 -1
- package/dist/extensions/llama/index.js +2 -0
- package/dist/extensions/llama/index.js.map +1 -1
- package/dist/extensions/llama/provider.d.ts.map +1 -1
- package/dist/extensions/llama/provider.js +6 -2
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/extensions/remoto/index.d.ts +22 -0
- package/dist/extensions/remoto/index.d.ts.map +1 -0
- package/dist/extensions/remoto/index.js +54 -0
- package/dist/extensions/remoto/index.js.map +1 -0
- package/dist/index.d.ts +1 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -13
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +4 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +26 -15
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +4 -3
- package/dist/migrations.js.map +1 -1
- package/dist/modes/acp/acp-mode.d.ts +42 -0
- package/dist/modes/acp/acp-mode.d.ts.map +1 -0
- package/dist/modes/acp/acp-mode.js +190 -0
- package/dist/modes/acp/acp-mode.js.map +1 -0
- package/dist/modes/acp/events.d.ts +74 -0
- package/dist/modes/acp/events.d.ts.map +1 -0
- package/dist/modes/acp/events.js +116 -0
- package/dist/modes/acp/events.js.map +1 -0
- package/dist/modes/interactive/components/home-screen.d.ts.map +1 -1
- package/dist/modes/interactive/components/home-screen.js +2 -2
- package/dist/modes/interactive/components/home-screen.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +9 -3
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +56 -12
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/prompt-optimization.d.ts +16 -0
- package/dist/modes/interactive/components/prompt-optimization.d.ts.map +1 -0
- package/dist/modes/interactive/components/prompt-optimization.js +46 -0
- package/dist/modes/interactive/components/prompt-optimization.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +19 -2
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +180 -56
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
- package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-submenu.js +165 -0
- package/dist/modes/interactive/components/settings-submenu.js.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts +15 -3
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +74 -17
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/external-editor.d.ts.map +1 -1
- package/dist/modes/interactive/external-editor.js +2 -1
- package/dist/modes/interactive/external-editor.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +21 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +709 -75
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +4 -3
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/json-event.d.ts +16 -13
- package/dist/modes/json-event.d.ts.map +1 -1
- package/dist/modes/json-event.js +20 -6
- package/dist/modes/json-event.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +11 -0
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +173 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +29 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +27 -5
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/server/attach.d.ts +56 -0
- package/dist/server/attach.d.ts.map +1 -0
- package/dist/server/attach.js +130 -0
- package/dist/server/attach.js.map +1 -0
- package/dist/server/extension-ops.d.ts +40 -0
- package/dist/server/extension-ops.d.ts.map +1 -0
- package/dist/server/extension-ops.js +146 -0
- package/dist/server/extension-ops.js.map +1 -0
- package/dist/server/pi-server-service.d.ts +85 -0
- package/dist/server/pi-server-service.d.ts.map +1 -0
- package/dist/server/pi-server-service.js +213 -0
- package/dist/server/pi-server-service.js.map +1 -0
- package/dist/server/scheduler-tick.d.ts +32 -0
- package/dist/server/scheduler-tick.d.ts.map +1 -0
- package/dist/server/scheduler-tick.js +47 -0
- package/dist/server/scheduler-tick.js.map +1 -0
- package/dist/server/serve.d.ts +25 -0
- package/dist/server/serve.d.ts.map +1 -0
- package/dist/server/serve.js +83 -0
- package/dist/server/serve.js.map +1 -0
- package/dist/server/transcript.d.ts +38 -0
- package/dist/server/transcript.d.ts.map +1 -0
- package/dist/server/transcript.js +176 -0
- package/dist/server/transcript.js.map +1 -0
- package/dist/skills/ada-engine/SKILL.md +153 -0
- package/dist/skills/skill-creator/SKILL.md +90 -0
- package/dist/telegram/api.d.ts +75 -0
- package/dist/telegram/api.d.ts.map +1 -0
- package/dist/telegram/api.js +104 -0
- package/dist/telegram/api.js.map +1 -0
- package/dist/telegram/bridge.d.ts +85 -0
- package/dist/telegram/bridge.d.ts.map +1 -0
- package/dist/telegram/bridge.js +182 -0
- package/dist/telegram/bridge.js.map +1 -0
- package/dist/telegram/journal.d.ts +67 -0
- package/dist/telegram/journal.d.ts.map +1 -0
- package/dist/telegram/journal.js +119 -0
- package/dist/telegram/journal.js.map +1 -0
- package/dist/telegram/servidor.d.ts +15 -0
- package/dist/telegram/servidor.d.ts.map +1 -0
- package/dist/telegram/servidor.js +74 -0
- package/dist/telegram/servidor.js.map +1 -0
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +2 -1
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/management-http.d.ts +5 -3
- package/dist/utils/management-http.d.ts.map +1 -1
- package/dist/utils/management-http.js +14 -10
- package/dist/utils/management-http.js.map +1 -1
- package/dist/utils/shell.d.ts +11 -0
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +11 -0
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/text.d.ts +8 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +9 -0
- package/dist/utils/text.js.map +1 -0
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +29 -1
- package/dist/utils/version-check.js.map +1 -1
- package/docs/compaction.md +25 -10
- package/docs/compliance.md +241 -0
- package/docs/containerization.md +24 -24
- package/docs/custom-provider.md +15 -12
- package/docs/development.md +47 -10
- package/docs/docs.json +14 -2
- package/docs/environment-variables.md +20 -17
- package/docs/extensions.md +62 -51
- package/docs/index.md +15 -21
- package/docs/json.md +10 -5
- package/docs/keybindings.md +5 -5
- package/docs/llama-cpp.md +9 -7
- package/docs/models.md +18 -12
- package/docs/packages.md +45 -45
- package/docs/prompt-templates.md +5 -5
- package/docs/providers.md +12 -12
- package/docs/quickstart.md +39 -39
- package/docs/rpc.md +21 -15
- package/docs/sdk.md +38 -38
- package/docs/security.md +26 -21
- package/docs/session-format.md +7 -7
- package/docs/sessions.md +14 -14
- package/docs/settings.md +47 -22
- package/docs/shell-aliases.md +2 -2
- package/docs/skills.md +14 -13
- package/docs/terminal-setup.md +14 -14
- package/docs/termux.md +7 -7
- package/docs/themes.md +11 -11
- package/docs/tmux.md +4 -4
- package/docs/tui.md +3 -3
- package/docs/usage.md +54 -54
- package/docs/windows.md +2 -2
- package/examples/extensions/border-status-editor.ts +1 -1
- package/examples/extensions/git-checkpoint.ts +2 -2
- package/examples/extensions/notify.ts +3 -1
- package/examples/extensions/subagent/README.md +1 -1
- package/examples/extensions/subagent/index.ts +6 -1
- package/examples/extensions/titlebar-spinner.ts +1 -1
- package/examples/rpc-extension-ui.ts +1 -1
- package/examples/sdk/06-extensions.ts +1 -1
- package/examples/sdk/12-full-control.ts +9 -0
- package/examples/sdk/README.md +1 -1
- package/npm-shrinkwrap.json +35 -261
- package/package.json +9 -3
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Aplica un `WorkspaceEdit` de LSP (el resultado de `textDocument/rename`) a
|
|
3
|
+
* disco, fichero por fichero.
|
|
4
|
+
*
|
|
5
|
+
* Las posiciones LSP son `{line, character}` en unidades UTF-16 — que es
|
|
6
|
+
* exactamente cómo Python... no, cómo JAVASCRIPT indexa sus strings (UTF-16
|
|
7
|
+
* interno). Por eso `slice(character)` sobre un string de JS ya hace lo
|
|
8
|
+
* correcto sin convertir a offsets de bytes: es la pereza correcta, no un
|
|
9
|
+
* atajo que rompa con acentos o emoji en el nombre nuevo.
|
|
10
|
+
*/
|
|
11
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
12
|
+
/** `file:///a/b%20c.go` → `/a/b c.go`. Inversa de `uriDeRuta` en cliente.ts. */
|
|
13
|
+
export function rutaDeUri(uri) {
|
|
14
|
+
if (!uri.startsWith("file://"))
|
|
15
|
+
throw new Error(`URI no soportada (no es file://): ${uri}`);
|
|
16
|
+
return decodeURIComponent(uri.slice("file://".length));
|
|
17
|
+
}
|
|
18
|
+
/** Agrupa `changes` y `documentChanges` en un único `Map<uri, ediciones>`; ignora operaciones de fichero (create/rename/delete) que no necesitamos. */
|
|
19
|
+
export function aplanar(edit) {
|
|
20
|
+
const porUri = new Map();
|
|
21
|
+
const agregar = (uri, ediciones) => {
|
|
22
|
+
if (ediciones.length === 0)
|
|
23
|
+
return;
|
|
24
|
+
const previas = porUri.get(uri);
|
|
25
|
+
if (previas)
|
|
26
|
+
previas.push(...ediciones);
|
|
27
|
+
else
|
|
28
|
+
porUri.set(uri, [...ediciones]);
|
|
29
|
+
};
|
|
30
|
+
if (edit.changes) {
|
|
31
|
+
for (const [uri, ediciones] of Object.entries(edit.changes))
|
|
32
|
+
agregar(uri, ediciones);
|
|
33
|
+
}
|
|
34
|
+
if (edit.documentChanges) {
|
|
35
|
+
for (const cambio of edit.documentChanges) {
|
|
36
|
+
if ("textDocument" in cambio && "edits" in cambio)
|
|
37
|
+
agregar(cambio.textDocument.uri, cambio.edits);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return porUri;
|
|
41
|
+
}
|
|
42
|
+
function compararPosicion(a, b) {
|
|
43
|
+
return a.line === b.line ? a.character - b.character : a.line - b.line;
|
|
44
|
+
}
|
|
45
|
+
/** Aplica las ediciones a un texto en memoria, de abajo a arriba para no desincronizar los índices de las que faltan. */
|
|
46
|
+
export function aplicarEnTexto(contenido, ediciones) {
|
|
47
|
+
const lineas = contenido.split("\n");
|
|
48
|
+
// Orden descendente por posición de inicio: aplicar la de más abajo primero
|
|
49
|
+
// deja intactos los índices de línea de las que quedan por aplicar.
|
|
50
|
+
const ordenadas = [...ediciones].sort((a, b) => compararPosicion(b.range.start, a.range.start));
|
|
51
|
+
for (const edicion of ordenadas) {
|
|
52
|
+
const { start, end } = edicion.range;
|
|
53
|
+
if (start.line === end.line) {
|
|
54
|
+
const linea = lineas[start.line] ?? "";
|
|
55
|
+
lineas[start.line] = linea.slice(0, start.character) + edicion.newText + linea.slice(end.character);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
const lineaInicio = lineas[start.line] ?? "";
|
|
59
|
+
const lineaFin = lineas[end.line] ?? "";
|
|
60
|
+
const nuevoContenido = lineaInicio.slice(0, start.character) + edicion.newText + lineaFin.slice(end.character);
|
|
61
|
+
lineas.splice(start.line, end.line - start.line + 1, ...nuevoContenido.split("\n"));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return lineas.join("\n");
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Aplica un WorkspaceEdit completo a disco. Devuelve un `CambioAplicado` por
|
|
68
|
+
* fichero tocado, con el contenido antes/después — así quien llama puede
|
|
69
|
+
* enseñar el diff real, no solo decir "aplicado".
|
|
70
|
+
*
|
|
71
|
+
* Lanza si un fichero no se puede leer o escribir: un rename que dice
|
|
72
|
+
* "aplicado" sobre un fichero que en realidad no cambió es el error que la
|
|
73
|
+
* regla 6 prohíbe (éxito que no lo fue).
|
|
74
|
+
*/
|
|
75
|
+
export async function aplicarWorkspaceEdit(edit) {
|
|
76
|
+
const porUri = aplanar(edit);
|
|
77
|
+
const cambios = [];
|
|
78
|
+
for (const [uri, ediciones] of porUri) {
|
|
79
|
+
const ruta = rutaDeUri(uri);
|
|
80
|
+
const antes = await readFile(ruta, "utf-8");
|
|
81
|
+
const despues = aplicarEnTexto(antes, ediciones);
|
|
82
|
+
if (despues === antes)
|
|
83
|
+
continue; // ediciones vacías tras aplicar (raro, pero no es un cambio real)
|
|
84
|
+
await writeFile(ruta, despues, "utf-8");
|
|
85
|
+
cambios.push({ ruta, antes, despues });
|
|
86
|
+
}
|
|
87
|
+
return cambios;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=ediciones.js.map
|
|
@@ -0,0 +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"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registra los 4 tools del cliente LSP — SOLO si el proyecto toca algún
|
|
3
|
+
* lenguaje que este cliente cubre. Si no, no hay nada que ofrecer y las
|
|
4
|
+
* tools serían ruido puro en el contexto del modelo (regla del hueco:
|
|
5
|
+
* "Registradas SOLO si hay servidor disponible").
|
|
6
|
+
*
|
|
7
|
+
* Punto de enganche real, sin gastar presupuesto de fork:
|
|
8
|
+
* ------------------------------------------------------------------------
|
|
9
|
+
* El presupuesto de sincronización (`scripts/sync-ada.sh --check`) está en
|
|
10
|
+
* 115/115 — agotado (ver ADA-CLI.md). La forma "de catálogo" de dar de alta
|
|
11
|
+
* un tool interno es añadirlo a `builtInExtensions` en
|
|
12
|
+
* `src/extensions/index.ts`, pero ese fichero también es de upstream: una
|
|
13
|
+
* sola línea ahí cuesta 1 hunk que hoy no hay margen para pagar.
|
|
14
|
+
*
|
|
15
|
+
* Este fichero es la mitad barata (coste cero: vive bajo `core/lsp/`, que no
|
|
16
|
+
* existe en upstream). La otra mitad — cargarlo de verdad sin tocar ningún
|
|
17
|
+
* fichero de upstream — usa un mecanismo que YA EXISTE y no necesita ningún
|
|
18
|
+
* hunk: `ada-cli -e <ruta>` carga un fichero de extensión explícito (ver
|
|
19
|
+
* `cli/args.ts`, opción `--extension`/`-e`, ya soportada). Se demuestra con:
|
|
20
|
+
*
|
|
21
|
+
* ada-cli -e packages/coding-agent/src/core/lsp/extension.ts --print ...
|
|
22
|
+
*
|
|
23
|
+
* Migrar esto a builtin (para no necesitar `-e`) es una línea en
|
|
24
|
+
* `builtInExtensions` el día que se libere margen — este fichero no cambia.
|
|
25
|
+
*/
|
|
26
|
+
import type { ExtensionAPI } from "../extensions/types.ts";
|
|
27
|
+
export default function lspExtension(pi: ExtensionAPI): void;
|
|
28
|
+
//# sourceMappingURL=extension.d.ts.map
|
|
@@ -0,0 +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"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registra los 4 tools del cliente LSP — SOLO si el proyecto toca algún
|
|
3
|
+
* lenguaje que este cliente cubre. Si no, no hay nada que ofrecer y las
|
|
4
|
+
* tools serían ruido puro en el contexto del modelo (regla del hueco:
|
|
5
|
+
* "Registradas SOLO si hay servidor disponible").
|
|
6
|
+
*
|
|
7
|
+
* Punto de enganche real, sin gastar presupuesto de fork:
|
|
8
|
+
* ------------------------------------------------------------------------
|
|
9
|
+
* El presupuesto de sincronización (`scripts/sync-ada.sh --check`) está en
|
|
10
|
+
* 115/115 — agotado (ver ADA-CLI.md). La forma "de catálogo" de dar de alta
|
|
11
|
+
* un tool interno es añadirlo a `builtInExtensions` en
|
|
12
|
+
* `src/extensions/index.ts`, pero ese fichero también es de upstream: una
|
|
13
|
+
* sola línea ahí cuesta 1 hunk que hoy no hay margen para pagar.
|
|
14
|
+
*
|
|
15
|
+
* Este fichero es la mitad barata (coste cero: vive bajo `core/lsp/`, que no
|
|
16
|
+
* existe en upstream). La otra mitad — cargarlo de verdad sin tocar ningún
|
|
17
|
+
* fichero de upstream — usa un mecanismo que YA EXISTE y no necesita ningún
|
|
18
|
+
* hunk: `ada-cli -e <ruta>` carga un fichero de extensión explícito (ver
|
|
19
|
+
* `cli/args.ts`, opción `--extension`/`-e`, ya soportada). Se demuestra con:
|
|
20
|
+
*
|
|
21
|
+
* ada-cli -e packages/coding-agent/src/core/lsp/extension.ts --print ...
|
|
22
|
+
*
|
|
23
|
+
* Migrar esto a builtin (para no necesitar `-e`) es una línea en
|
|
24
|
+
* `builtInExtensions` el día que se libere margen — este fichero no cambia.
|
|
25
|
+
*/
|
|
26
|
+
import { hayLenguajeReconocidoEnProyecto } from "./descubrimiento.js";
|
|
27
|
+
import { lspTools } from "./tools.js";
|
|
28
|
+
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);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=extension.js.map
|
|
@@ -0,0 +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"]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `lsp_rename`, `lsp_symbols`, `lsp_definition`, `lsp_references`.
|
|
3
|
+
*
|
|
4
|
+
* Lo que un LanguageService de un solo lenguaje (TypeScript, en
|
|
5
|
+
* `core/edicion/tipos.ts`) no da: renombrar entre ficheros, buscar símbolos,
|
|
6
|
+
* ir a definición y referencias en los lenguajes que solo hablan LSP.
|
|
7
|
+
*
|
|
8
|
+
* Ciclo de vida: cada llamada arranca su propio servidor y lo cierra al
|
|
9
|
+
* terminar (ver el porqué en `cliente.ts`). El coste es un `initialize` de
|
|
10
|
+
* más por llamada; la ganancia es que "ningún proceso queda vivo" es
|
|
11
|
+
* estructural, no una promesa que dependa de un temporizador de inactividad.
|
|
12
|
+
*/
|
|
13
|
+
import { Type } from "typebox";
|
|
14
|
+
import type { ToolDefinition } from "../extensions/types.ts";
|
|
15
|
+
declare const esquemaDefinicion: Type.TObject<{
|
|
16
|
+
file: Type.TString;
|
|
17
|
+
line: Type.TNumber;
|
|
18
|
+
character: Type.TNumber;
|
|
19
|
+
}>;
|
|
20
|
+
export declare const lspDefinitionTool: ToolDefinition<typeof esquemaDefinicion>;
|
|
21
|
+
declare const esquemaReferencias: Type.TObject<{
|
|
22
|
+
file: Type.TString;
|
|
23
|
+
line: Type.TNumber;
|
|
24
|
+
character: Type.TNumber;
|
|
25
|
+
include_declaration: Type.TOptional<Type.TBoolean>;
|
|
26
|
+
}>;
|
|
27
|
+
export declare const lspReferencesTool: ToolDefinition<typeof esquemaReferencias>;
|
|
28
|
+
declare const esquemaSimbolos: Type.TObject<{
|
|
29
|
+
file: Type.TString;
|
|
30
|
+
}>;
|
|
31
|
+
export declare const lspSymbolsTool: ToolDefinition<typeof esquemaSimbolos>;
|
|
32
|
+
declare const esquemaRename: Type.TObject<{
|
|
33
|
+
file: Type.TString;
|
|
34
|
+
line: Type.TNumber;
|
|
35
|
+
character: Type.TNumber;
|
|
36
|
+
new_name: Type.TString;
|
|
37
|
+
apply: Type.TOptional<Type.TBoolean>;
|
|
38
|
+
}>;
|
|
39
|
+
export declare const lspRenameTool: ToolDefinition<typeof esquemaRename>;
|
|
40
|
+
/** Los cuatro tools del cliente LSP, listos para `pi.registerTool`. */
|
|
41
|
+
export declare const lspTools: ToolDefinition<Type.TObject<{
|
|
42
|
+
file: Type.TString;
|
|
43
|
+
}>, unknown, any>[];
|
|
44
|
+
export {};
|
|
45
|
+
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -0,0 +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"]}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `lsp_rename`, `lsp_symbols`, `lsp_definition`, `lsp_references`.
|
|
3
|
+
*
|
|
4
|
+
* Lo que un LanguageService de un solo lenguaje (TypeScript, en
|
|
5
|
+
* `core/edicion/tipos.ts`) no da: renombrar entre ficheros, buscar símbolos,
|
|
6
|
+
* ir a definición y referencias en los lenguajes que solo hablan LSP.
|
|
7
|
+
*
|
|
8
|
+
* Ciclo de vida: cada llamada arranca su propio servidor y lo cierra al
|
|
9
|
+
* terminar (ver el porqué en `cliente.ts`). El coste es un `initialize` de
|
|
10
|
+
* más por llamada; la ganancia es que "ningún proceso queda vivo" es
|
|
11
|
+
* estructural, no una promesa que dependa de un temporizador de inactividad.
|
|
12
|
+
*/
|
|
13
|
+
import { readFile } from "node:fs/promises";
|
|
14
|
+
import { extname, relative } from "node:path";
|
|
15
|
+
import { Type } from "typebox";
|
|
16
|
+
import { resolveToCwd } from "../tools/path-utils.js";
|
|
17
|
+
import { conectar, uriDeRuta } from "./cliente.js";
|
|
18
|
+
import { descubrirParaFichero } from "./descubrimiento.js";
|
|
19
|
+
import { aplicarWorkspaceEdit, rutaDeUri } from "./ediciones.js";
|
|
20
|
+
const LANGUAGE_ID_POR_EXTENSION = {
|
|
21
|
+
".go": "go",
|
|
22
|
+
".rs": "rust",
|
|
23
|
+
".py": "python",
|
|
24
|
+
".pyi": "python",
|
|
25
|
+
".c": "c",
|
|
26
|
+
".h": "c",
|
|
27
|
+
".cpp": "cpp",
|
|
28
|
+
".cc": "cpp",
|
|
29
|
+
".hpp": "cpp",
|
|
30
|
+
".sh": "shellscript",
|
|
31
|
+
".bash": "shellscript",
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Explica por qué NO hay un cliente disponible para este fichero, con el
|
|
35
|
+
* comando exacto para arreglarlo si aplica. Nunca "no hay símbolos": dice qué
|
|
36
|
+
* pasó.
|
|
37
|
+
*/
|
|
38
|
+
function explicarNoDisponible(rutaAbsoluta, cwd) {
|
|
39
|
+
const resultado = descubrirParaFichero(rutaAbsoluta, cwd);
|
|
40
|
+
if (resultado.estado === "sin_cobertura") {
|
|
41
|
+
return `No hay servidor LSP conocido para la extensión "${resultado.extension}". TypeScript/JavaScript usan el LanguageService interno, no este cliente.`;
|
|
42
|
+
}
|
|
43
|
+
// estado === "no_instalado": el servidor existe en la lista, pero el binario no está en PATH.
|
|
44
|
+
return `El servidor "${resultado.servidor.nombre}" para "${resultado.servidor.extensiones.join(", ")}" no está instalado. Para instalarlo:\n ${resultado.servidor.instalar}`;
|
|
45
|
+
}
|
|
46
|
+
/** Conecta el servidor adecuado para `rutaAbsoluta`, o `null` si no hay uno disponible (ver `explicarNoDisponible` para el motivo). */
|
|
47
|
+
async function conectarParaFichero(rutaAbsoluta, cwd) {
|
|
48
|
+
const resultado = descubrirParaFichero(rutaAbsoluta, cwd);
|
|
49
|
+
if (resultado.estado !== "disponible")
|
|
50
|
+
return null;
|
|
51
|
+
return conectar(resultado.servidor.comando, resultado.servidor.args, cwd);
|
|
52
|
+
}
|
|
53
|
+
/** Sincroniza el contenido actual del fichero con el servidor antes de preguntarle nada — sin esto, algunos servidores responden sobre una copia vacía. */
|
|
54
|
+
async function abrirDocumento(cliente, rutaAbsoluta) {
|
|
55
|
+
const texto = await readFile(rutaAbsoluta, "utf-8");
|
|
56
|
+
const uri = uriDeRuta(rutaAbsoluta);
|
|
57
|
+
const languageId = LANGUAGE_ID_POR_EXTENSION[extname(rutaAbsoluta).toLowerCase()] ?? "plaintext";
|
|
58
|
+
cliente.notificar("textDocument/didOpen", {
|
|
59
|
+
textDocument: { uri, languageId, version: 1, text: texto },
|
|
60
|
+
});
|
|
61
|
+
return uri;
|
|
62
|
+
}
|
|
63
|
+
const SIMBOLO_POR_KIND = {
|
|
64
|
+
5: "clase",
|
|
65
|
+
6: "método",
|
|
66
|
+
9: "constructor",
|
|
67
|
+
11: "interfaz",
|
|
68
|
+
12: "función",
|
|
69
|
+
13: "variable",
|
|
70
|
+
14: "constante",
|
|
71
|
+
23: "struct",
|
|
72
|
+
};
|
|
73
|
+
function nombreDeKind(kind) {
|
|
74
|
+
return SIMBOLO_POR_KIND[kind] ?? `símbolo(${kind})`;
|
|
75
|
+
}
|
|
76
|
+
const esquemaUbicacion = Type.Object({
|
|
77
|
+
file: Type.String({ description: "Ruta del fichero (relativa al cwd o absoluta)" }),
|
|
78
|
+
line: Type.Number({ description: "Línea, 1-indexada (como en la salida de `read`)" }),
|
|
79
|
+
character: Type.Number({ description: "Columna, 1-indexada" }),
|
|
80
|
+
});
|
|
81
|
+
/** `line`/`character` de la LLM (1-indexados) → posición LSP (0-indexada). */
|
|
82
|
+
function posicionLsp(params) {
|
|
83
|
+
return { line: params.line - 1, character: params.character - 1 };
|
|
84
|
+
}
|
|
85
|
+
function rutaRelativa(rutaAbsoluta, cwd) {
|
|
86
|
+
return relative(cwd, rutaAbsoluta) || rutaAbsoluta;
|
|
87
|
+
}
|
|
88
|
+
// ============================================================================
|
|
89
|
+
// lsp_definition
|
|
90
|
+
// ============================================================================
|
|
91
|
+
const esquemaDefinicion = esquemaUbicacion;
|
|
92
|
+
function formatearUbicaciones(ubicaciones, cwd) {
|
|
93
|
+
if (ubicaciones.length === 0)
|
|
94
|
+
return "Sin resultados.";
|
|
95
|
+
return ubicaciones
|
|
96
|
+
.map((u) => `${rutaRelativa(rutaDeUri(u.uri), cwd)}:${u.range.start.line + 1}:${u.range.start.character + 1}`)
|
|
97
|
+
.join("\n");
|
|
98
|
+
}
|
|
99
|
+
export const lspDefinitionTool = {
|
|
100
|
+
name: "lsp_definition",
|
|
101
|
+
label: "LSP: ir a definición",
|
|
102
|
+
description: "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.",
|
|
103
|
+
parameters: esquemaDefinicion,
|
|
104
|
+
async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
|
|
105
|
+
const rutaAbsoluta = resolveToCwd(params.file, ctx.cwd);
|
|
106
|
+
const cliente = await conectarParaFichero(rutaAbsoluta, ctx.cwd);
|
|
107
|
+
if (!cliente)
|
|
108
|
+
throw new Error(explicarNoDisponible(rutaAbsoluta, ctx.cwd));
|
|
109
|
+
try {
|
|
110
|
+
const uri = await abrirDocumento(cliente, rutaAbsoluta);
|
|
111
|
+
const resultado = await cliente.enviar("textDocument/definition", {
|
|
112
|
+
textDocument: { uri },
|
|
113
|
+
position: posicionLsp(params),
|
|
114
|
+
});
|
|
115
|
+
const lista = resultado === null ? [] : Array.isArray(resultado) ? resultado : [resultado];
|
|
116
|
+
return { content: [{ type: "text", text: formatearUbicaciones(lista, ctx.cwd) }], details: undefined };
|
|
117
|
+
}
|
|
118
|
+
finally {
|
|
119
|
+
await cliente.cerrar();
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
// ============================================================================
|
|
124
|
+
// lsp_references
|
|
125
|
+
// ============================================================================
|
|
126
|
+
const esquemaReferencias = Type.Object({
|
|
127
|
+
...esquemaUbicacion.properties,
|
|
128
|
+
include_declaration: Type.Optional(Type.Boolean({ description: "Incluir la propia declaración en los resultados (por defecto true)" })),
|
|
129
|
+
});
|
|
130
|
+
export const lspReferencesTool = {
|
|
131
|
+
name: "lsp_references",
|
|
132
|
+
label: "LSP: buscar referencias",
|
|
133
|
+
description: "Buscar todos los usos de un símbolo en todo el proyecto, en un lenguaje sin LanguageService propio (Go, Rust, Python, C/C++, Bash).",
|
|
134
|
+
parameters: esquemaReferencias,
|
|
135
|
+
async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
|
|
136
|
+
const rutaAbsoluta = resolveToCwd(params.file, ctx.cwd);
|
|
137
|
+
const cliente = await conectarParaFichero(rutaAbsoluta, ctx.cwd);
|
|
138
|
+
if (!cliente)
|
|
139
|
+
throw new Error(explicarNoDisponible(rutaAbsoluta, ctx.cwd));
|
|
140
|
+
try {
|
|
141
|
+
const uri = await abrirDocumento(cliente, rutaAbsoluta);
|
|
142
|
+
const resultado = await cliente.enviar("textDocument/references", {
|
|
143
|
+
textDocument: { uri },
|
|
144
|
+
position: posicionLsp(params),
|
|
145
|
+
context: { includeDeclaration: params.include_declaration ?? true },
|
|
146
|
+
});
|
|
147
|
+
return {
|
|
148
|
+
content: [{ type: "text", text: formatearUbicaciones(resultado ?? [], ctx.cwd) }],
|
|
149
|
+
details: undefined,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
finally {
|
|
153
|
+
await cliente.cerrar();
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
// ============================================================================
|
|
158
|
+
// lsp_symbols
|
|
159
|
+
// ============================================================================
|
|
160
|
+
const esquemaSimbolos = Type.Object({
|
|
161
|
+
file: Type.String({ description: "Ruta del fichero (relativa al cwd o absoluta)" }),
|
|
162
|
+
});
|
|
163
|
+
function formatearSimbolos(simbolos, profundidad = 0) {
|
|
164
|
+
const lineas = [];
|
|
165
|
+
for (const s of simbolos) {
|
|
166
|
+
lineas.push(`${" ".repeat(profundidad)}${nombreDeKind(s.kind)} ${s.name} @ línea ${s.range.start.line + 1}`);
|
|
167
|
+
if (s.children?.length)
|
|
168
|
+
lineas.push(...formatearSimbolos(s.children, profundidad + 1));
|
|
169
|
+
}
|
|
170
|
+
return lineas;
|
|
171
|
+
}
|
|
172
|
+
export const lspSymbolsTool = {
|
|
173
|
+
name: "lsp_symbols",
|
|
174
|
+
label: "LSP: símbolos del fichero",
|
|
175
|
+
description: "Listar clases, funciones y variables de un fichero en un lenguaje sin LanguageService propio (Go, Rust, Python, C/C++, Bash).",
|
|
176
|
+
parameters: esquemaSimbolos,
|
|
177
|
+
async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
|
|
178
|
+
const rutaAbsoluta = resolveToCwd(params.file, ctx.cwd);
|
|
179
|
+
const cliente = await conectarParaFichero(rutaAbsoluta, ctx.cwd);
|
|
180
|
+
if (!cliente)
|
|
181
|
+
throw new Error(explicarNoDisponible(rutaAbsoluta, ctx.cwd));
|
|
182
|
+
try {
|
|
183
|
+
const uri = await abrirDocumento(cliente, rutaAbsoluta);
|
|
184
|
+
const resultado = await cliente.enviar("textDocument/documentSymbol", {
|
|
185
|
+
textDocument: { uri },
|
|
186
|
+
});
|
|
187
|
+
const lineas = resultado && resultado.length > 0 ? formatearSimbolos(resultado) : ["Sin símbolos en este fichero."];
|
|
188
|
+
return { content: [{ type: "text", text: lineas.join("\n") }], details: undefined };
|
|
189
|
+
}
|
|
190
|
+
finally {
|
|
191
|
+
await cliente.cerrar();
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
};
|
|
195
|
+
// ============================================================================
|
|
196
|
+
// lsp_rename
|
|
197
|
+
// ============================================================================
|
|
198
|
+
const esquemaRename = Type.Object({
|
|
199
|
+
...esquemaUbicacion.properties,
|
|
200
|
+
new_name: Type.String({ description: "Nuevo nombre del símbolo" }),
|
|
201
|
+
apply: Type.Optional(Type.Boolean({ description: "Aplicar los cambios a disco (por defecto true). false = solo previsualizar." })),
|
|
202
|
+
});
|
|
203
|
+
export const lspRenameTool = {
|
|
204
|
+
name: "lsp_rename",
|
|
205
|
+
label: "LSP: renombrar símbolo",
|
|
206
|
+
description: "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í.",
|
|
207
|
+
parameters: esquemaRename,
|
|
208
|
+
async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
|
|
209
|
+
const rutaAbsoluta = resolveToCwd(params.file, ctx.cwd);
|
|
210
|
+
const cliente = await conectarParaFichero(rutaAbsoluta, ctx.cwd);
|
|
211
|
+
if (!cliente)
|
|
212
|
+
throw new Error(explicarNoDisponible(rutaAbsoluta, ctx.cwd));
|
|
213
|
+
try {
|
|
214
|
+
const uri = await abrirDocumento(cliente, rutaAbsoluta);
|
|
215
|
+
const edit = await cliente.enviar("textDocument/rename", {
|
|
216
|
+
textDocument: { uri },
|
|
217
|
+
position: posicionLsp(params),
|
|
218
|
+
newName: params.new_name,
|
|
219
|
+
});
|
|
220
|
+
if (!edit) {
|
|
221
|
+
throw new Error(`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).`);
|
|
222
|
+
}
|
|
223
|
+
if (params.apply === false) {
|
|
224
|
+
const { aplanar } = await import("./ediciones.js");
|
|
225
|
+
const porUri = aplanar(edit);
|
|
226
|
+
const resumen = [...porUri.entries()]
|
|
227
|
+
.map(([u, ediciones]) => `${rutaRelativa(rutaDeUri(u), ctx.cwd)}: ${ediciones.length} edición(es)`)
|
|
228
|
+
.join("\n");
|
|
229
|
+
return {
|
|
230
|
+
content: [{ type: "text", text: `Previsualización (sin aplicar):\n${resumen || "(sin cambios)"}` }],
|
|
231
|
+
details: undefined,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
const cambios = await aplicarWorkspaceEdit(edit);
|
|
235
|
+
if (cambios.length === 0) {
|
|
236
|
+
throw new Error("El rename no produjo ningún cambio en disco (WorkspaceEdit vacío tras aplicar).");
|
|
237
|
+
}
|
|
238
|
+
const resumen = cambios.map((c) => `${rutaRelativa(c.ruta, ctx.cwd)} (${contarLineasDistintas(c.antes, c.despues)} línea(s) cambiada(s))`);
|
|
239
|
+
return {
|
|
240
|
+
content: [
|
|
241
|
+
{
|
|
242
|
+
type: "text",
|
|
243
|
+
text: `Renombrado "${params.new_name}" aplicado en ${cambios.length} fichero(s):\n${resumen.join("\n")}`,
|
|
244
|
+
},
|
|
245
|
+
],
|
|
246
|
+
details: undefined,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
finally {
|
|
250
|
+
await cliente.cerrar();
|
|
251
|
+
}
|
|
252
|
+
},
|
|
253
|
+
};
|
|
254
|
+
function contarLineasDistintas(a, b) {
|
|
255
|
+
const la = a.split("\n");
|
|
256
|
+
const lb = b.split("\n");
|
|
257
|
+
let n = 0;
|
|
258
|
+
for (let i = 0; i < Math.max(la.length, lb.length); i++)
|
|
259
|
+
if (la[i] !== lb[i])
|
|
260
|
+
n++;
|
|
261
|
+
return n;
|
|
262
|
+
}
|
|
263
|
+
/** Los cuatro tools del cliente LSP, listos para `pi.registerTool`. */
|
|
264
|
+
export const lspTools = [lspDefinitionTool, lspSymbolsTool, lspReferencesTool, lspRenameTool];
|
|
265
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/core/lsp/tools.ts"],"names":[],"mappings":"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","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"]}
|