@hoilab/ada-cli 0.84.22 → 0.85.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -2
- package/README.es.md +17 -6
- package/README.md +109 -11
- 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/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/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/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/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 +1 -1
- 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 +30 -2
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +430 -22
- 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 +17 -5
- 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/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/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/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/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +11 -1
- package/dist/core/extensions/loader.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/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 +12 -10
- package/dist/core/memory-engine/audit-export.d.ts.map +1 -1
- package/dist/core/memory-engine/audit-export.js +15 -0
- package/dist/core/memory-engine/audit-export.js.map +1 -1
- 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 +25 -42
- package/dist/core/memory-engine/audit.js.map +1 -1
- package/dist/core/memory-engine/engine.d.ts +19 -1
- package/dist/core/memory-engine/engine.d.ts.map +1 -1
- package/dist/core/memory-engine/engine.js +71 -5
- package/dist/core/memory-engine/engine.js.map +1 -1
- package/dist/core/memory-engine/observation-store.d.ts +0 -2
- package/dist/core/memory-engine/observation-store.d.ts.map +1 -1
- package/dist/core/memory-engine/observation-store.js +4 -5
- 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/tools.d.ts.map +1 -1
- package/dist/core/memory-engine/tools.js +27 -1
- 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/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +7 -1
- package/dist/core/model-resolver.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/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/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/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 +8 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +93 -1
- 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/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/settings-manager.d.ts +110 -6
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +53 -2
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +3 -3
- 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 -7
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js +232 -7
- 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 +8 -1
- 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/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/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/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 +2 -0
- package/dist/core/workflows/agent-runner.d.ts.map +1 -1
- package/dist/core/workflows/agent-runner.js +131 -44
- package/dist/core/workflows/agent-runner.js.map +1 -1
- package/dist/core/workflows/builtins.d.ts.map +1 -1
- package/dist/core/workflows/builtins.js +1 -0
- package/dist/core/workflows/builtins.js.map +1 -1
- 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 +17 -0
- package/dist/core/workflows/goal-engine/engine.d.ts.map +1 -1
- package/dist/core/workflows/goal-engine/engine.js +41 -0
- package/dist/core/workflows/goal-engine/engine.js.map +1 -1
- package/dist/core/workflows/index.d.ts +8 -0
- package/dist/core/workflows/index.d.ts.map +1 -1
- package/dist/core/workflows/index.js +4 -0
- package/dist/core/workflows/index.js.map +1 -1
- package/dist/core/workflows/manager.d.ts +10 -0
- package/dist/core/workflows/manager.d.ts.map +1 -1
- package/dist/core/workflows/manager.js +35 -11
- package/dist/core/workflows/manager.js.map +1 -1
- package/dist/core/workflows/runtime.d.ts +13 -0
- package/dist/core/workflows/runtime.d.ts.map +1 -1
- package/dist/core/workflows/runtime.js +80 -1
- package/dist/core/workflows/runtime.js.map +1 -1
- 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/types.d.ts +49 -0
- package/dist/core/workflows/types.d.ts.map +1 -1
- package/dist/core/workflows/types.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 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -16
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +6 -0
- package/dist/main.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/model-selector.d.ts +8 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +41 -7
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +1 -2
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +9 -86
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts +8 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +48 -17
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +3 -7
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +137 -146
- package/dist/modes/interactive/interactive-mode.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/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/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/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/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 +10 -10
- package/docs/compliance.md +241 -0
- package/docs/containerization.md +24 -24
- package/docs/custom-provider.md +10 -10
- package/docs/development.md +47 -10
- package/docs/docs.json +14 -2
- package/docs/environment-variables.md +20 -17
- package/docs/extensions.md +51 -49
- package/docs/index.md +15 -21
- package/docs/json.md +3 -3
- package/docs/keybindings.md +5 -5
- package/docs/llama-cpp.md +7 -7
- package/docs/models.md +12 -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 +12 -12
- 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 +45 -20
- package/docs/shell-aliases.md +2 -2
- package/docs/skills.md +11 -11
- 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/sdk/12-full-control.ts +9 -0
- package/npm-shrinkwrap.json +35 -251
- package/package.json +10 -4
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-reparación de una edición que rompió el parseo.
|
|
3
|
+
*
|
|
4
|
+
* Cuando `parseo.ts` detecta que una edición convirtió un fichero que
|
|
5
|
+
* parseaba en uno que no, esto intenta arreglarlo solo: localiza el conjunto
|
|
6
|
+
* mínimo de hunks (líneas cambiadas) cuya reversión restaura el parseo, le
|
|
7
|
+
* pide al modelo que arregle SOLO esa región mostrándole la versión sin
|
|
8
|
+
* romper como referencia, y acepta el resultado únicamente si (a) el
|
|
9
|
+
* fichero entero vuelve a parsear Y (b) lo que devolvió el modelo no es,
|
|
10
|
+
* quitando espacios, un calco de la referencia — es decir, no es una simple
|
|
11
|
+
* reversión del cambio que el usuario pidió.
|
|
12
|
+
*
|
|
13
|
+
* La idea y el reparto de responsabilidades vienen de `oh-my-pi`
|
|
14
|
+
* (packages/coding-agent/src/edit/auto-repair.ts): localizar antes de
|
|
15
|
+
* preguntar, y rechazar la reversión aunque parsee. Lo que cambia aquí es la
|
|
16
|
+
* implementación: sin tree-sitter (usamos el mismo `parsea()` de
|
|
17
|
+
* `parseo.ts`, que ya cubre lo que este fork edita) y con el paquete `diff`
|
|
18
|
+
* que este proyecto ya trae en vez de un diff de líneas propio.
|
|
19
|
+
*/
|
|
20
|
+
import * as Diff from "diff";
|
|
21
|
+
import { parsea } from "./parseo.js";
|
|
22
|
+
/** Cuántas líneas de contexto se enseñan alrededor de los hunks culpables. */
|
|
23
|
+
const LINEAS_DE_CONTEXTO = 6;
|
|
24
|
+
/** Región más grande que merece la pena mandarle a un modelo. */
|
|
25
|
+
const MAX_LINEAS_REGION = 150;
|
|
26
|
+
/** Un primer intento y un reintento con el rechazo anterior como pista. */
|
|
27
|
+
const MAX_INTENTOS = 2;
|
|
28
|
+
function construirHunks(antes, despues) {
|
|
29
|
+
const a = antes.split("\n");
|
|
30
|
+
const b = despues.split("\n");
|
|
31
|
+
const partes = Diff.diffLines(antes, despues);
|
|
32
|
+
const hunks = [];
|
|
33
|
+
let ai = 0;
|
|
34
|
+
let bi = 0;
|
|
35
|
+
for (const parte of partes) {
|
|
36
|
+
const lineas = parte.count ?? 0;
|
|
37
|
+
if (!parte.added && !parte.removed) {
|
|
38
|
+
ai += lineas;
|
|
39
|
+
bi += lineas;
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
const borradas = parte.removed ? lineas : 0;
|
|
43
|
+
const anadidas = parte.added ? lineas : 0;
|
|
44
|
+
// Un borrado seguido de un añadido contiguos son la misma edición
|
|
45
|
+
// (una sustitución), no dos hunks distintos que reventar por separado.
|
|
46
|
+
const ultimo = hunks.at(-1);
|
|
47
|
+
if (ultimo && ultimo.aFin === ai && ultimo.bFin === bi) {
|
|
48
|
+
ultimo.aFin += borradas;
|
|
49
|
+
ultimo.bFin += anadidas;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
hunks.push({ aInicio: ai, aFin: ai + borradas, bInicio: bi, bFin: bi + anadidas });
|
|
53
|
+
}
|
|
54
|
+
ai += borradas;
|
|
55
|
+
bi += anadidas;
|
|
56
|
+
}
|
|
57
|
+
return { hunks, a, b };
|
|
58
|
+
}
|
|
59
|
+
/** La posimagen con el conjunto `indices` de hunks revertidos a sus líneas de preimagen. */
|
|
60
|
+
function revertirHunks(a, b, hunks, indices) {
|
|
61
|
+
const ordenados = [...indices].sort((x, y) => x - y);
|
|
62
|
+
const out = [];
|
|
63
|
+
let bi = 0;
|
|
64
|
+
for (const i of ordenados) {
|
|
65
|
+
const h = hunks[i];
|
|
66
|
+
out.push(...b.slice(bi, h.bInicio), ...a.slice(h.aInicio, h.aFin));
|
|
67
|
+
bi = h.bFin;
|
|
68
|
+
}
|
|
69
|
+
out.push(...b.slice(bi));
|
|
70
|
+
return out.join("\n");
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* El conjunto de hunks cuya reversión conjunta restaura el parseo, o
|
|
74
|
+
* `undefined` si no se puede aislar (incluye el caso "revertirlos todos
|
|
75
|
+
* tampoco parsea", que solo pasaría si la preimagen ya estaba rota — y eso
|
|
76
|
+
* ya lo descarta quien llama antes de invocar este módulo).
|
|
77
|
+
*/
|
|
78
|
+
function aislarHunksCulpables(ruta, a, b, hunks) {
|
|
79
|
+
const n = hunks.length;
|
|
80
|
+
if (n === 0)
|
|
81
|
+
return undefined;
|
|
82
|
+
// Camino rápido: la inmensa mayoría de roturas son un solo hunk.
|
|
83
|
+
for (let i = 0; i < n; i++) {
|
|
84
|
+
if (parsea(revertirHunks(a, b, hunks, [i]), ruta) === true)
|
|
85
|
+
return [i];
|
|
86
|
+
}
|
|
87
|
+
// ponytail: sin la búsqueda acotada de PARES de oh-my-pi antes de esto —
|
|
88
|
+
// el pelado voraz de abajo ya encuentra un conjunto que funciona para
|
|
89
|
+
// roturas de varios hunks, solo que no siempre es el par más pequeño
|
|
90
|
+
// posible. Si algún caso real lo echa en falta, se añade aquí.
|
|
91
|
+
//
|
|
92
|
+
// Pelado voraz: se parte de "revertir todos" (que parsea, porque
|
|
93
|
+
// reconstruye la preimagen) y se intenta, hunk a hunk, DEJARLO sin
|
|
94
|
+
// revertir; si el resto sigue parseando, ese hunk no era culpable.
|
|
95
|
+
const conservar = new Set(Array.from({ length: n }, (_, i) => i));
|
|
96
|
+
for (let i = 0; i < n; i++) {
|
|
97
|
+
const prueba = new Set(conservar);
|
|
98
|
+
prueba.delete(i);
|
|
99
|
+
if (parsea(revertirHunks(a, b, hunks, [...prueba]), ruta) === true)
|
|
100
|
+
conservar.delete(i);
|
|
101
|
+
}
|
|
102
|
+
if (conservar.size === 0)
|
|
103
|
+
return undefined;
|
|
104
|
+
if (parsea(revertirHunks(a, b, hunks, [...conservar]), ruta) !== true)
|
|
105
|
+
return undefined;
|
|
106
|
+
return [...conservar];
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Localiza la rotura de `antes → despues` a una región de líneas acotada.
|
|
110
|
+
* `undefined` cuando no se puede aislar o cuando la región supera
|
|
111
|
+
* {@link MAX_LINEAS_REGION} — quien llama se queda entonces con el aviso de
|
|
112
|
+
* parseo roto normal.
|
|
113
|
+
*/
|
|
114
|
+
export function calcularRegionDeReparacion(instantanea) {
|
|
115
|
+
const { ruta, antes, despues } = instantanea;
|
|
116
|
+
const { hunks, a, b } = construirHunks(antes, despues);
|
|
117
|
+
const culpables = aislarHunksCulpables(ruta, a, b, hunks);
|
|
118
|
+
if (!culpables)
|
|
119
|
+
return undefined;
|
|
120
|
+
const hs = culpables.map((i) => hunks[i]).sort((x, y) => x.bInicio - y.bInicio);
|
|
121
|
+
const bInicio = Math.max(0, hs[0].bInicio - LINEAS_DE_CONTEXTO);
|
|
122
|
+
const bFin = Math.min(b.length, hs.at(-1).bFin + LINEAS_DE_CONTEXTO);
|
|
123
|
+
if (bFin - bInicio > MAX_LINEAS_REGION)
|
|
124
|
+
return undefined;
|
|
125
|
+
// Referencia = la región rota con cada hunk culpable cambiado por sus
|
|
126
|
+
// líneas de preimagen, así que empalmarla reproduce exactamente esa
|
|
127
|
+
// reversión (que parsea por construcción).
|
|
128
|
+
const ref = [];
|
|
129
|
+
let bi = bInicio;
|
|
130
|
+
for (const h of hs) {
|
|
131
|
+
ref.push(...b.slice(bi, h.bInicio), ...a.slice(h.aInicio, h.aFin));
|
|
132
|
+
bi = h.bFin;
|
|
133
|
+
}
|
|
134
|
+
ref.push(...b.slice(bi, bFin));
|
|
135
|
+
return {
|
|
136
|
+
bInicio,
|
|
137
|
+
bFin,
|
|
138
|
+
textoRoto: b.slice(bInicio, bFin).join("\n"),
|
|
139
|
+
textoReferencia: ref.join("\n"),
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function empalmarRegion(b, region, texto) {
|
|
143
|
+
return [...b.slice(0, region.bInicio), ...texto.split("\n"), ...b.slice(region.bFin)].join("\n");
|
|
144
|
+
}
|
|
145
|
+
/** Quita una valla de código markdown envolvente, si la hay. */
|
|
146
|
+
function quitarValla(texto) {
|
|
147
|
+
const recortado = texto.trim();
|
|
148
|
+
const m = recortado.match(/^```[^\n]*\n([\s\S]*?)\n?```$/);
|
|
149
|
+
return m ? m[1] : recortado;
|
|
150
|
+
}
|
|
151
|
+
/** Espacios colapsados para comparar sin que un reindentado cuente como cambio real. */
|
|
152
|
+
function normalizarParaComparar(texto) {
|
|
153
|
+
return texto.replace(/\s+/g, " ").trim();
|
|
154
|
+
}
|
|
155
|
+
function construirPrompt(region, ruta, intentoPrevio) {
|
|
156
|
+
const previo = intentoPrevio
|
|
157
|
+
? `\n\nINTENTO ANTERIOR (rechazado — o seguía roto, o era un simple calco de la referencia):\n\`\`\`\n${intentoPrevio}\n\`\`\`\n`
|
|
158
|
+
: "";
|
|
159
|
+
return (`El fichero ${ruta} quedó con un error de sintaxis tras una edición. Tu tarea es arreglar SOLO ` +
|
|
160
|
+
`la sintaxis, sin deshacer el cambio que se pretendía.\n\n` +
|
|
161
|
+
`REFERENCIA (parsea bien; es el cambio pretendido con la rotura revertida — NO la copies tal cual, ` +
|
|
162
|
+
`solo es para que veas qué había antes):\n\`\`\`\n${region.textoReferencia}\n\`\`\`\n\n` +
|
|
163
|
+
`ROTO (esto es lo que hay que arreglar, conservando su intención):\n\`\`\`\n${region.textoRoto}\n\`\`\`\n` +
|
|
164
|
+
`${previo}\n` +
|
|
165
|
+
`Devuelve SOLO el bloque de código que sustituye la sección ROTO, ya arreglado. Sin explicaciones, sin ` +
|
|
166
|
+
`numerar líneas, sin nada fuera del bloque.`);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Intenta reparar una edición que rompió el parseo, preguntándole a `completar`.
|
|
170
|
+
*
|
|
171
|
+
* `completar` devuelve `null` cuando no pudo completarse (sin modelo, sin
|
|
172
|
+
* red, error de la API…): eso es "no-aplicable", nunca "rechazada" — una
|
|
173
|
+
* reparación rechazada es una que SE INTENTÓ y no sirvió.
|
|
174
|
+
*/
|
|
175
|
+
export async function intentarReparar(instantanea, completar) {
|
|
176
|
+
if (!completar)
|
|
177
|
+
return { estado: "no-aplicable" };
|
|
178
|
+
const region = calcularRegionDeReparacion(instantanea);
|
|
179
|
+
if (!region)
|
|
180
|
+
return { estado: "no-aplicable" };
|
|
181
|
+
const b = instantanea.despues.split("\n");
|
|
182
|
+
const referenciaNormalizada = normalizarParaComparar(region.textoReferencia);
|
|
183
|
+
let intentoPrevio;
|
|
184
|
+
for (let intento = 1; intento <= MAX_INTENTOS; intento++) {
|
|
185
|
+
const respuesta = await completar(construirPrompt(region, instantanea.ruta, intentoPrevio));
|
|
186
|
+
if (respuesta === null)
|
|
187
|
+
return { estado: intento === 1 ? "no-aplicable" : "rechazada" };
|
|
188
|
+
const candidato = quitarValla(respuesta);
|
|
189
|
+
intentoPrevio = candidato;
|
|
190
|
+
// La regla que evita que la "reparación" deshaga el trabajo del
|
|
191
|
+
// usuario: un candidato que, sin espacios, es un calco de la
|
|
192
|
+
// referencia es una reversión pura y se descarta aunque parseara.
|
|
193
|
+
if (normalizarParaComparar(candidato) === referenciaNormalizada)
|
|
194
|
+
continue;
|
|
195
|
+
const contenido = empalmarRegion(b, region, candidato);
|
|
196
|
+
if (parsea(contenido, instantanea.ruta) === true) {
|
|
197
|
+
return { estado: "reparado", contenido, intentos: intento };
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return { estado: "rechazada" };
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=reparacion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reparacion.js","sourceRoot":"","sources":["../../../src/core/edicion/reparacion.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Auto-reparación de una edición que rompió el parseo.\n *\n * Cuando `parseo.ts` detecta que una edición convirtió un fichero que\n * parseaba en uno que no, esto intenta arreglarlo solo: localiza el conjunto\n * mínimo de hunks (líneas cambiadas) cuya reversión restaura el parseo, le\n * pide al modelo que arregle SOLO esa región mostrándole la versión sin\n * romper como referencia, y acepta el resultado únicamente si (a) el\n * fichero entero vuelve a parsear Y (b) lo que devolvió el modelo no es,\n * quitando espacios, un calco de la referencia — es decir, no es una simple\n * reversión del cambio que el usuario pidió.\n *\n * La idea y el reparto de responsabilidades vienen de `oh-my-pi`\n * (packages/coding-agent/src/edit/auto-repair.ts): localizar antes de\n * preguntar, y rechazar la reversión aunque parsee. Lo que cambia aquí es la\n * implementación: sin tree-sitter (usamos el mismo `parsea()` de\n * `parseo.ts`, que ya cubre lo que este fork edita) y con el paquete `diff`\n * que este proyecto ya trae en vez de un diff de líneas propio.\n */\n\nimport * as Diff from \"diff\";\nimport { parsea } from \"./parseo.ts\";\n\n/** Cuántas líneas de contexto se enseñan alrededor de los hunks culpables. */\nconst LINEAS_DE_CONTEXTO = 6;\n/** Región más grande que merece la pena mandarle a un modelo. */\nconst MAX_LINEAS_REGION = 150;\n/** Un primer intento y un reintento con el rechazo anterior como pista. */\nconst MAX_INTENTOS = 2;\n\n/** Un tramo de líneas cambiado, en coordenadas de preimagen (`a`) y posimagen (`b`). */\ninterface Hunk {\n\taInicio: number;\n\taFin: number;\n\tbInicio: number;\n\tbFin: number;\n}\n\nfunction construirHunks(antes: string, despues: string): { hunks: Hunk[]; a: string[]; b: string[] } {\n\tconst a = antes.split(\"\\n\");\n\tconst b = despues.split(\"\\n\");\n\tconst partes = Diff.diffLines(antes, despues);\n\tconst hunks: Hunk[] = [];\n\tlet ai = 0;\n\tlet bi = 0;\n\tfor (const parte of partes) {\n\t\tconst lineas = parte.count ?? 0;\n\t\tif (!parte.added && !parte.removed) {\n\t\t\tai += lineas;\n\t\t\tbi += lineas;\n\t\t\tcontinue;\n\t\t}\n\t\tconst borradas = parte.removed ? lineas : 0;\n\t\tconst anadidas = parte.added ? lineas : 0;\n\t\t// Un borrado seguido de un añadido contiguos son la misma edición\n\t\t// (una sustitución), no dos hunks distintos que reventar por separado.\n\t\tconst ultimo = hunks.at(-1);\n\t\tif (ultimo && ultimo.aFin === ai && ultimo.bFin === bi) {\n\t\t\tultimo.aFin += borradas;\n\t\t\tultimo.bFin += anadidas;\n\t\t} else {\n\t\t\thunks.push({ aInicio: ai, aFin: ai + borradas, bInicio: bi, bFin: bi + anadidas });\n\t\t}\n\t\tai += borradas;\n\t\tbi += anadidas;\n\t}\n\treturn { hunks, a, b };\n}\n\n/** La posimagen con el conjunto `indices` de hunks revertidos a sus líneas de preimagen. */\nfunction revertirHunks(a: string[], b: string[], hunks: Hunk[], indices: readonly number[]): string {\n\tconst ordenados = [...indices].sort((x, y) => x - y);\n\tconst out: string[] = [];\n\tlet bi = 0;\n\tfor (const i of ordenados) {\n\t\tconst h = hunks[i];\n\t\tout.push(...b.slice(bi, h.bInicio), ...a.slice(h.aInicio, h.aFin));\n\t\tbi = h.bFin;\n\t}\n\tout.push(...b.slice(bi));\n\treturn out.join(\"\\n\");\n}\n\n/**\n * El conjunto de hunks cuya reversión conjunta restaura el parseo, o\n * `undefined` si no se puede aislar (incluye el caso \"revertirlos todos\n * tampoco parsea\", que solo pasaría si la preimagen ya estaba rota — y eso\n * ya lo descarta quien llama antes de invocar este módulo).\n */\nfunction aislarHunksCulpables(ruta: string, a: string[], b: string[], hunks: Hunk[]): number[] | undefined {\n\tconst n = hunks.length;\n\tif (n === 0) return undefined;\n\n\t// Camino rápido: la inmensa mayoría de roturas son un solo hunk.\n\tfor (let i = 0; i < n; i++) {\n\t\tif (parsea(revertirHunks(a, b, hunks, [i]), ruta) === true) return [i];\n\t}\n\n\t// ponytail: sin la búsqueda acotada de PARES de oh-my-pi antes de esto —\n\t// el pelado voraz de abajo ya encuentra un conjunto que funciona para\n\t// roturas de varios hunks, solo que no siempre es el par más pequeño\n\t// posible. Si algún caso real lo echa en falta, se añade aquí.\n\t//\n\t// Pelado voraz: se parte de \"revertir todos\" (que parsea, porque\n\t// reconstruye la preimagen) y se intenta, hunk a hunk, DEJARLO sin\n\t// revertir; si el resto sigue parseando, ese hunk no era culpable.\n\tconst conservar = new Set<number>(Array.from({ length: n }, (_, i) => i));\n\tfor (let i = 0; i < n; i++) {\n\t\tconst prueba = new Set(conservar);\n\t\tprueba.delete(i);\n\t\tif (parsea(revertirHunks(a, b, hunks, [...prueba]), ruta) === true) conservar.delete(i);\n\t}\n\tif (conservar.size === 0) return undefined;\n\tif (parsea(revertirHunks(a, b, hunks, [...conservar]), ruta) !== true) return undefined;\n\treturn [...conservar];\n}\n\n/** La región rota localizada, con su referencia (culpables revertidos) para enseñarle al modelo. */\nexport interface RegionDeReparacion {\n\t/** Tramo de líneas sustituido en el fichero roto, `[bInicio, bFin)`. */\n\tbInicio: number;\n\tbFin: number;\n\t/** La región tal cual está en el fichero roto. */\n\ttextoRoto: string;\n\t/** La misma región con los hunks culpables revertidos: empalmarla restaura el parseo. */\n\ttextoReferencia: string;\n}\n\n/**\n * Localiza la rotura de `antes → despues` a una región de líneas acotada.\n * `undefined` cuando no se puede aislar o cuando la región supera\n * {@link MAX_LINEAS_REGION} — quien llama se queda entonces con el aviso de\n * parseo roto normal.\n */\nexport function calcularRegionDeReparacion(instantanea: {\n\truta: string;\n\tantes: string;\n\tdespues: string;\n}): RegionDeReparacion | undefined {\n\tconst { ruta, antes, despues } = instantanea;\n\tconst { hunks, a, b } = construirHunks(antes, despues);\n\tconst culpables = aislarHunksCulpables(ruta, a, b, hunks);\n\tif (!culpables) return undefined;\n\n\tconst hs = culpables.map((i) => hunks[i]).sort((x, y) => x.bInicio - y.bInicio);\n\tconst bInicio = Math.max(0, hs[0].bInicio - LINEAS_DE_CONTEXTO);\n\tconst bFin = Math.min(b.length, (hs.at(-1) as Hunk).bFin + LINEAS_DE_CONTEXTO);\n\tif (bFin - bInicio > MAX_LINEAS_REGION) return undefined;\n\n\t// Referencia = la región rota con cada hunk culpable cambiado por sus\n\t// líneas de preimagen, así que empalmarla reproduce exactamente esa\n\t// reversión (que parsea por construcción).\n\tconst ref: string[] = [];\n\tlet bi = bInicio;\n\tfor (const h of hs) {\n\t\tref.push(...b.slice(bi, h.bInicio), ...a.slice(h.aInicio, h.aFin));\n\t\tbi = h.bFin;\n\t}\n\tref.push(...b.slice(bi, bFin));\n\n\treturn {\n\t\tbInicio,\n\t\tbFin,\n\t\ttextoRoto: b.slice(bInicio, bFin).join(\"\\n\"),\n\t\ttextoReferencia: ref.join(\"\\n\"),\n\t};\n}\n\nfunction empalmarRegion(b: string[], region: RegionDeReparacion, texto: string): string {\n\treturn [...b.slice(0, region.bInicio), ...texto.split(\"\\n\"), ...b.slice(region.bFin)].join(\"\\n\");\n}\n\n/** Quita una valla de código markdown envolvente, si la hay. */\nfunction quitarValla(texto: string): string {\n\tconst recortado = texto.trim();\n\tconst m = recortado.match(/^```[^\\n]*\\n([\\s\\S]*?)\\n?```$/);\n\treturn m ? m[1] : recortado;\n}\n\n/** Espacios colapsados para comparar sin que un reindentado cuente como cambio real. */\nfunction normalizarParaComparar(texto: string): string {\n\treturn texto.replace(/\\s+/g, \" \").trim();\n}\n\nfunction construirPrompt(region: RegionDeReparacion, ruta: string, intentoPrevio?: string): string {\n\tconst previo = intentoPrevio\n\t\t? `\\n\\nINTENTO ANTERIOR (rechazado — o seguía roto, o era un simple calco de la referencia):\\n\\`\\`\\`\\n${intentoPrevio}\\n\\`\\`\\`\\n`\n\t\t: \"\";\n\treturn (\n\t\t`El fichero ${ruta} quedó con un error de sintaxis tras una edición. Tu tarea es arreglar SOLO ` +\n\t\t`la sintaxis, sin deshacer el cambio que se pretendía.\\n\\n` +\n\t\t`REFERENCIA (parsea bien; es el cambio pretendido con la rotura revertida — NO la copies tal cual, ` +\n\t\t`solo es para que veas qué había antes):\\n\\`\\`\\`\\n${region.textoReferencia}\\n\\`\\`\\`\\n\\n` +\n\t\t`ROTO (esto es lo que hay que arreglar, conservando su intención):\\n\\`\\`\\`\\n${region.textoRoto}\\n\\`\\`\\`\\n` +\n\t\t`${previo}\\n` +\n\t\t`Devuelve SOLO el bloque de código que sustituye la sección ROTO, ya arreglado. Sin explicaciones, sin ` +\n\t\t`numerar líneas, sin nada fuera del bloque.`\n\t);\n}\n\n/** Qué pasó al intentar reparar. Nunca colapsa \"no pude intentarlo\" con \"lo intenté y no valió\". */\nexport type ResultadoReparacion =\n\t| { estado: \"reparado\"; contenido: string; intentos: number }\n\t/** No había con qué preguntar (sin modelo) o la rotura no se pudo aislar/acotar. */\n\t| { estado: \"no-aplicable\" }\n\t/** Se preguntó al modelo pero ningún intento cumplió las dos condiciones de aceptación. */\n\t| { estado: \"rechazada\" };\n\n/**\n * Intenta reparar una edición que rompió el parseo, preguntándole a `completar`.\n *\n * `completar` devuelve `null` cuando no pudo completarse (sin modelo, sin\n * red, error de la API…): eso es \"no-aplicable\", nunca \"rechazada\" — una\n * reparación rechazada es una que SE INTENTÓ y no sirvió.\n */\nexport async function intentarReparar(\n\tinstantanea: { ruta: string; antes: string; despues: string },\n\tcompletar?: (prompt: string) => Promise<string | null>,\n): Promise<ResultadoReparacion> {\n\tif (!completar) return { estado: \"no-aplicable\" };\n\tconst region = calcularRegionDeReparacion(instantanea);\n\tif (!region) return { estado: \"no-aplicable\" };\n\n\tconst b = instantanea.despues.split(\"\\n\");\n\tconst referenciaNormalizada = normalizarParaComparar(region.textoReferencia);\n\n\tlet intentoPrevio: string | undefined;\n\tfor (let intento = 1; intento <= MAX_INTENTOS; intento++) {\n\t\tconst respuesta = await completar(construirPrompt(region, instantanea.ruta, intentoPrevio));\n\t\tif (respuesta === null) return { estado: intento === 1 ? \"no-aplicable\" : \"rechazada\" };\n\n\t\tconst candidato = quitarValla(respuesta);\n\t\tintentoPrevio = candidato;\n\n\t\t// La regla que evita que la \"reparación\" deshaga el trabajo del\n\t\t// usuario: un candidato que, sin espacios, es un calco de la\n\t\t// referencia es una reversión pura y se descarta aunque parseara.\n\t\tif (normalizarParaComparar(candidato) === referenciaNormalizada) continue;\n\n\t\tconst contenido = empalmarRegion(b, region, candidato);\n\t\tif (parsea(contenido, instantanea.ruta) === true) {\n\t\t\treturn { estado: \"reparado\", contenido, intentos: intento };\n\t\t}\n\t}\n\treturn { estado: \"rechazada\" };\n}\n"]}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Casar una edición cuando el modelo se equivoca con la SANGRÍA.
|
|
3
|
+
*
|
|
4
|
+
* EL CASO. Ada se indenta con tabuladores y los modelos emiten espacios sin
|
|
5
|
+
* parar. Medido sobre el banco de cargas mal formadas: de once cargas
|
|
6
|
+
* recuperables, el motor entraba en tres, y varias de las que rechazaba eran de
|
|
7
|
+
* sangría — el error más frecuente que existe.
|
|
8
|
+
*
|
|
9
|
+
* Un rechazo cuesta un turno entero: el modelo tiene que releer el fichero y
|
|
10
|
+
* volver a escribir el bloque a ciegas, y muchas veces repite el mismo error.
|
|
11
|
+
*
|
|
12
|
+
* LO QUE ESTE MÓDULO NO HACE, y es la parte importante. No basta con encontrar
|
|
13
|
+
* el sitio: hay que escribir el reemplazo con la sangría DEL FICHERO. oh-my-pi
|
|
14
|
+
* casa más cargas que nosotros pero de las diez que aplica, tres corrompen — dos
|
|
15
|
+
* de ellas dejando la sangría mal. Aplicar no es aplicar bien:
|
|
16
|
+
*
|
|
17
|
+
* antes: →app.listen(puerto);
|
|
18
|
+
* mal: app.listen(PUERTO); ← entró, y dejó espacios en un
|
|
19
|
+
* fichero de tabuladores
|
|
20
|
+
*
|
|
21
|
+
* En TypeScript eso es cosmético. En Python es un error de sintaxis, o peor: una
|
|
22
|
+
* línea que se sale del bloque `if` y cambia la semántica sin romper nada.
|
|
23
|
+
*
|
|
24
|
+
* DOS INVARIANTES QUE LO HACEN SEGURO:
|
|
25
|
+
*
|
|
26
|
+
* 1. **Una sola posición.** Si el patrón sin sangría casa en dos sitios, se
|
|
27
|
+
* devuelve `null`. Quitar la sangría hace el patrón MENOS específico, así que
|
|
28
|
+
* puede volver ambiguo algo que no lo era — y elegir por el modelo cuál de
|
|
29
|
+
* los dos editar es peor que rechazar.
|
|
30
|
+
* 2. **La sangría sale del fichero, nunca del patrón.** Se mide la del bloque
|
|
31
|
+
* casado y se reconstruye el reemplazo con su carácter y su unidad,
|
|
32
|
+
* conservando la profundidad RELATIVA que el modelo expresó.
|
|
33
|
+
*
|
|
34
|
+
* EL ESPACIADO INTERNO, que es el mismo error una columna más adentro. El
|
|
35
|
+
* fichero tiene `let suma = 0;` y el modelo manda `let suma = 0;`. No es un
|
|
36
|
+
* problema de sangría —la sangría está bien— y sin embargo cuesta un turno
|
|
37
|
+
* entero igual. Se recupera con una SEGUNDA pasada de comparación que colapsa
|
|
38
|
+
* los espacios y tabuladores interiores.
|
|
39
|
+
*
|
|
40
|
+
* Y aquí está la trampa que hay que ver antes de tocar esto. Colapsar espacios
|
|
41
|
+
* en `normalizeForFuzzyMatch` (en `core/tools/edit-diff.ts`) sería mucho más
|
|
42
|
+
* corto y estaría MAL: esa forma normalizada se convierte en la base de
|
|
43
|
+
* escritura cuando alguna edición del lote es difusa, y su traducción de
|
|
44
|
+
* posiciones exige que cada sustitución sea de un carácter por otro. `[ \t]+` a
|
|
45
|
+
* un espacio no lo es. Ya nos costó una corrupción silenciosa por el mismo
|
|
46
|
+
* camino: `“`→`"` en una línea que nadie pidió tocar, dejando ficheros que ni
|
|
47
|
+
* compilan. Aquí el colapso vive SOLO en la comparación —una función que se
|
|
48
|
+
* llama para decidir si dos líneas son la misma— y nunca en el texto que se
|
|
49
|
+
* escribe: el reemplazo se construye desde el `newText` del modelo y desde los
|
|
50
|
+
* bytes del bloque original, jamás desde la forma colapsada.
|
|
51
|
+
*/
|
|
52
|
+
/** Un bloque casado, con lo que hace falta para empalmarlo. */
|
|
53
|
+
export interface CasadoPorSangria {
|
|
54
|
+
/** Desplazamiento del inicio del bloque en el contenido original. */
|
|
55
|
+
indice: number;
|
|
56
|
+
/** Cuántos caracteres ocupa el bloque casado. */
|
|
57
|
+
longitud: number;
|
|
58
|
+
/** El reemplazo, ya re-sangrado a la sangría del fichero. */
|
|
59
|
+
textoNuevo: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Qué unidad de sangría usa un bloque: el carácter y cuántos por nivel.
|
|
63
|
+
*
|
|
64
|
+
* Se deduce del propio bloque casado y no de todo el fichero, porque un fichero
|
|
65
|
+
* mixto —los hay— daría una respuesta que no vale para la región que se toca.
|
|
66
|
+
*/
|
|
67
|
+
export declare function unidadDe(lineas: readonly string[]): {
|
|
68
|
+
caracter: string;
|
|
69
|
+
ancho: number;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Re-emite `nuevas` con la sangría del BLOQUE destino, conservando la
|
|
73
|
+
* profundidad relativa que expresó el modelo.
|
|
74
|
+
*
|
|
75
|
+
* Vive aquí y se exporta porque el camino del hueco elidido (`./hueco.ts`)
|
|
76
|
+
* necesita exactamente esto: escribía el `newText` tal cual y metía un
|
|
77
|
+
* tabulador en un fichero de cuatro espacios, que es el invariante 2 de este
|
|
78
|
+
* módulo roto en el camino de al lado.
|
|
79
|
+
*/
|
|
80
|
+
export declare function reSangrarComoElBloque(nuevas: readonly string[], bloque: readonly string[]): string[];
|
|
81
|
+
/**
|
|
82
|
+
* Casa `oldText` contra `contenido` ignorando la sangría, y re-sangra `newText`.
|
|
83
|
+
*
|
|
84
|
+
* Devuelve `null` cuando no casa, cuando casa en más de un sitio, o cuando el
|
|
85
|
+
* patrón está vacío. `null` significa «no puedo», nunca «no hay»: quien llama
|
|
86
|
+
* debe seguir con su propio error, no dar la edición por aplicada.
|
|
87
|
+
*/
|
|
88
|
+
export declare function casarIgnorandoSangria(contenido: string, oldText: string, newText: string): CasadoPorSangria | null;
|
|
89
|
+
/**
|
|
90
|
+
* ¿El texto nuevo mete un carácter de sangría que el fichero no usa?
|
|
91
|
+
*
|
|
92
|
+
* EL CASO, encontrado auditando y reproducido ejecutando. Cuando el `oldText`
|
|
93
|
+
* casa EXACTO, el motor escribe el `newText` tal cual y se salta toda la lógica
|
|
94
|
+
* de sangría de arriba. Si el modelo teclea el bloque nuevo con tabuladores en
|
|
95
|
+
* un fichero de espacios —cosa que hace constantemente— la mezcla entra sin que
|
|
96
|
+
* nadie la mire:
|
|
97
|
+
*
|
|
98
|
+
* class Carro:
|
|
99
|
+
* def total(self, items): ← 4 espacios, del fichero
|
|
100
|
+
* →→→→s = 0 ← tabuladores, del modelo
|
|
101
|
+
*
|
|
102
|
+
* En Python eso es un `TabError` y el fichero no arranca. Y no lo caza nadie:
|
|
103
|
+
* `core/edicion/parseo.ts` solo cubre TypeScript y JSON, así que para `.py`
|
|
104
|
+
* devuelve `null` y la red de reparación ni se despierta.
|
|
105
|
+
*
|
|
106
|
+
* En TypeScript no rompe la sintaxis, pero deja un fichero con dos estilos que
|
|
107
|
+
* el siguiente `edit` va a casar peor. Es la misma familia que perseguimos:
|
|
108
|
+
* la edición ENTRA, así que se lee como éxito.
|
|
109
|
+
*
|
|
110
|
+
* POR QUÉ AQUÍ Y NO EN UN COMPROBADOR POR LENGUAJE. Esto no necesita gramática
|
|
111
|
+
* de nada: se compara el carácter de sangría del bloque que se sustituye con el
|
|
112
|
+
* del texto que entra. Un comprobador de Python arreglaría Python; esto arregla
|
|
113
|
+
* cualquier lenguaje sensible a la sangría, presentes y futuros.
|
|
114
|
+
*
|
|
115
|
+
* QUÉ NO HACE: no toca el texto cuando el bloque original ya mezcla —ahí no hay
|
|
116
|
+
* un estilo del fichero que respetar, y elegir uno sería inventárselo—. omp, en
|
|
117
|
+
* ese caso, abandona y escribe el texto crudo (`normalize.ts:325`); nosotros
|
|
118
|
+
* hacemos lo mismo, pero solo en ese caso.
|
|
119
|
+
*/
|
|
120
|
+
export declare function coherenteConElBloque(bloqueOriginal: string, textoNuevo: string): string;
|
|
121
|
+
//# sourceMappingURL=sangria.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sangria.d.ts","sourceRoot":"","sources":["../../../src/core/edicion/sangria.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAEH,+DAA+D;AAC/D,MAAM,WAAW,gBAAgB;IAChC,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,kDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;CACnB;AAOD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAQvF;AAuCD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAWpG;AAuBD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAuHlH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAwCvF","sourcesContent":["/**\n * Casar una edición cuando el modelo se equivoca con la SANGRÍA.\n *\n * EL CASO. Ada se indenta con tabuladores y los modelos emiten espacios sin\n * parar. Medido sobre el banco de cargas mal formadas: de once cargas\n * recuperables, el motor entraba en tres, y varias de las que rechazaba eran de\n * sangría — el error más frecuente que existe.\n *\n * Un rechazo cuesta un turno entero: el modelo tiene que releer el fichero y\n * volver a escribir el bloque a ciegas, y muchas veces repite el mismo error.\n *\n * LO QUE ESTE MÓDULO NO HACE, y es la parte importante. No basta con encontrar\n * el sitio: hay que escribir el reemplazo con la sangría DEL FICHERO. oh-my-pi\n * casa más cargas que nosotros pero de las diez que aplica, tres corrompen — dos\n * de ellas dejando la sangría mal. Aplicar no es aplicar bien:\n *\n * antes: →app.listen(puerto);\n * mal: app.listen(PUERTO); ← entró, y dejó espacios en un\n * fichero de tabuladores\n *\n * En TypeScript eso es cosmético. En Python es un error de sintaxis, o peor: una\n * línea que se sale del bloque `if` y cambia la semántica sin romper nada.\n *\n * DOS INVARIANTES QUE LO HACEN SEGURO:\n *\n * 1. **Una sola posición.** Si el patrón sin sangría casa en dos sitios, se\n * devuelve `null`. Quitar la sangría hace el patrón MENOS específico, así que\n * puede volver ambiguo algo que no lo era — y elegir por el modelo cuál de\n * los dos editar es peor que rechazar.\n * 2. **La sangría sale del fichero, nunca del patrón.** Se mide la del bloque\n * casado y se reconstruye el reemplazo con su carácter y su unidad,\n * conservando la profundidad RELATIVA que el modelo expresó.\n *\n * EL ESPACIADO INTERNO, que es el mismo error una columna más adentro. El\n * fichero tiene `let suma = 0;` y el modelo manda `let suma = 0;`. No es un\n * problema de sangría —la sangría está bien— y sin embargo cuesta un turno\n * entero igual. Se recupera con una SEGUNDA pasada de comparación que colapsa\n * los espacios y tabuladores interiores.\n *\n * Y aquí está la trampa que hay que ver antes de tocar esto. Colapsar espacios\n * en `normalizeForFuzzyMatch` (en `core/tools/edit-diff.ts`) sería mucho más\n * corto y estaría MAL: esa forma normalizada se convierte en la base de\n * escritura cuando alguna edición del lote es difusa, y su traducción de\n * posiciones exige que cada sustitución sea de un carácter por otro. `[ \\t]+` a\n * un espacio no lo es. Ya nos costó una corrupción silenciosa por el mismo\n * camino: `“`→`\"` en una línea que nadie pidió tocar, dejando ficheros que ni\n * compilan. Aquí el colapso vive SOLO en la comparación —una función que se\n * llama para decidir si dos líneas son la misma— y nunca en el texto que se\n * escribe: el reemplazo se construye desde el `newText` del modelo y desde los\n * bytes del bloque original, jamás desde la forma colapsada.\n */\n\n/** Un bloque casado, con lo que hace falta para empalmarlo. */\nexport interface CasadoPorSangria {\n\t/** Desplazamiento del inicio del bloque en el contenido original. */\n\tindice: number;\n\t/** Cuántos caracteres ocupa el bloque casado. */\n\tlongitud: number;\n\t/** El reemplazo, ya re-sangrado a la sangría del fichero. */\n\ttextoNuevo: string;\n}\n\n/** La sangría de una línea: su texto literal. `\"\"` si empieza en la columna 0. */\nfunction sangriaDe(linea: string): string {\n\treturn linea.match(/^[ \\t]*/)?.[0] ?? \"\";\n}\n\n/**\n * Qué unidad de sangría usa un bloque: el carácter y cuántos por nivel.\n *\n * Se deduce del propio bloque casado y no de todo el fichero, porque un fichero\n * mixto —los hay— daría una respuesta que no vale para la región que se toca.\n */\nexport function unidadDe(lineas: readonly string[]): { caracter: string; ancho: number } {\n\tconst sangrias = lineas.filter((l) => l.trim() !== \"\").map(sangriaDe);\n\tif (sangrias.some((s) => s.includes(\"\\t\"))) return { caracter: \"\\t\", ancho: 1 };\n\tconst anchos = sangrias.map((s) => s.length).filter((n) => n > 0);\n\tif (anchos.length === 0) return { caracter: \" \", ancho: 4 };\n\t// El menor salto no nulo es la unidad. Con una sola línea sangrada no hay\n\t// salto que medir, así que su propia sangría hace de unidad.\n\treturn { caracter: \" \", ancho: Math.min(...anchos) };\n}\n\n/**\n * Profundidad de una línea contando LOS DOS caracteres.\n *\n * `profundidad()` decide por una unidad única del bloque, y eso falla cuando es\n * el TEXTO DEL MODELO el que mezcla: si una línea lleva 4 espacios y la\n * siguiente 2 tabuladores, mirar solo los tabuladores da 0 y 2, cuando lo que\n * el modelo quiso decir es 1 y 2.\n *\n * Medido: con eso, el cuerpo de un método Python salía a 12 espacios en vez de\n * 8. Contando cada línea por su propio carácter sale la profundidad que el\n * modelo quiso expresar, que es la única información suya aprovechable.\n */\nfunction profundidadMixta(linea: string, anchoEspacios: number): number {\n\tconst s = sangriaDe(linea);\n\tconst tabs = (s.match(/\\t/g) ?? []).length;\n\tconst espacios = s.length - tabs;\n\treturn tabs + Math.floor(espacios / Math.max(1, anchoEspacios));\n}\n\n/** Profundidad de una línea en unidades, redondeando hacia abajo. */\nfunction profundidad(linea: string, unidad: { caracter: string; ancho: number }): number {\n\tconst s = sangriaDe(linea);\n\tif (unidad.caracter === \"\\t\") return (s.match(/\\t/g) ?? []).length;\n\treturn Math.floor(s.length / Math.max(1, unidad.ancho));\n}\n\n/**\n * La forma de una línea para COMPARAR: sin sangría y con el espaciado interior\n * colapsado.\n *\n * Nunca se escribe. Es la mitad permisiva de la comparación y solo entra en\n * juego cuando la estricta no ha encontrado nada.\n */\nfunction colapsado(linea: string): string {\n\treturn linea.trim().replace(/[ \\t]+/g, \" \");\n}\n\n/**\n * Re-emite `nuevas` con la sangría del BLOQUE destino, conservando la\n * profundidad relativa que expresó el modelo.\n *\n * Vive aquí y se exporta porque el camino del hueco elidido (`./hueco.ts`)\n * necesita exactamente esto: escribía el `newText` tal cual y metía un\n * tabulador en un fichero de cuatro espacios, que es el invariante 2 de este\n * módulo roto en el camino de al lado.\n */\nexport function reSangrarComoElBloque(nuevas: readonly string[], bloque: readonly string[]): string[] {\n\tconst unidad = unidadDe(bloque);\n\tconst base = sangriaDe(bloque[0]);\n\tconst unidadDelModelo = unidadDe(nuevas);\n\tconst primeraNoVacia = nuevas.find((l) => l.trim() !== \"\");\n\tconst baseDelModelo = primeraNoVacia === undefined ? 0 : profundidad(primeraNoVacia, unidadDelModelo);\n\treturn nuevas.map((linea) => {\n\t\tif (linea.trim() === \"\") return \"\";\n\t\tconst relativa = profundidad(linea, unidadDelModelo) - baseDelModelo;\n\t\treturn base + unidad.caracter.repeat(Math.max(0, relativa) * unidad.ancho) + linea.trim();\n\t});\n}\n\n/** Índices de las ventanas donde el patrón casa línea a línea bajo `forma`. */\nfunction ventanasQueCasan(\n\tlineas: readonly string[],\n\tpatron: readonly string[],\n\tforma: (l: string) => string,\n): number[] {\n\tconst buscado = patron.map(forma);\n\tconst posiciones: number[] = [];\n\tfor (let i = 0; i + buscado.length <= lineas.length; i++) {\n\t\tlet casa = true;\n\t\tfor (let j = 0; j < buscado.length; j++) {\n\t\t\tif (forma(lineas[i + j]) !== buscado[j]) {\n\t\t\t\tcasa = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (casa) posiciones.push(i);\n\t}\n\treturn posiciones;\n}\n\n/**\n * Casa `oldText` contra `contenido` ignorando la sangría, y re-sangra `newText`.\n *\n * Devuelve `null` cuando no casa, cuando casa en más de un sitio, o cuando el\n * patrón está vacío. `null` significa «no puedo», nunca «no hay»: quien llama\n * debe seguir con su propio error, no dar la edición por aplicada.\n */\nexport function casarIgnorandoSangria(contenido: string, oldText: string, newText: string): CasadoPorSangria | null {\n\tconst patron = oldText.split(\"\\n\");\n\t// Líneas vacías al principio o al final son ruido de copiado.\n\twhile (patron.length > 0 && patron[0].trim() === \"\") patron.shift();\n\twhile (patron.length > 0 && patron[patron.length - 1].trim() === \"\") patron.pop();\n\tif (patron.length === 0) return null;\n\n\tconst lineas = contenido.split(\"\\n\");\n\n\t// Dos pasadas, de la estricta a la permisiva. La segunda SOLO se intenta si\n\t// la primera no encontró nada: colapsar espacios no puede desambiguar —\n\t// cualquier par de líneas iguales al recortarlas lo sigue siendo al\n\t// colapsarlas—, así que si la estricta ya casaba en dos sitios, la permisiva\n\t// casaría en dos o más y el resultado es el mismo `null`. Intentarla solo\n\t// desde cero deja escrito que esto añade alcance y no permisividad.\n\tlet posiciones = ventanasQueCasan(lineas, patron, (l) => l.trim());\n\t// Si la estricta casó, el modelo reprodujo el espaciado interior TAL CUAL\n\t// está en el fichero. Hace falta saberlo para el invariante 3.\n\tlet caseColapsando = false;\n\tif (posiciones.length === 0) {\n\t\tposiciones = ventanasQueCasan(lineas, patron, colapsado);\n\t\tcaseColapsando = true;\n\t}\n\t// Invariante 1: una sola posición, o nada.\n\tif (posiciones.length !== 1) return null;\n\n\tconst inicio = posiciones[0];\n\tconst bloque = lineas.slice(inicio, inicio + patron.length);\n\n\t// Invariante 2: la sangría sale del FICHERO.\n\tconst unidad = unidadDe(bloque);\n\tconst nuevas = newText.split(\"\\n\");\n\tconst unidadDelModelo = unidadDe(nuevas);\n\tconst primeraNoVacia = nuevas.find((l) => l.trim() !== \"\");\n\tconst baseDelModelo = primeraNoVacia === undefined ? 0 : profundidad(primeraNoVacia, unidadDelModelo);\n\n\t// ¿El modelo aportó ALGUNA información de estructura?\n\t//\n\t// Si mandó todas las líneas pegadas al margen, su profundidad relativa es\n\t// cero en todas y no dice nada sobre el anidamiento. Re-emitirlas todas al\n\t// mismo nivel es INVENTARSE la estructura, y eso es exactamente lo que\n\t// corrompe. Medido: con el bloque\n\t//\n\t// for (const it of items) {\n\t// suma += it.precio; ← el modelo la manda pegada al margen\n\t// }\n\t//\n\t// la primera versión de esta función dejaba `suma += …` al nivel del `for`\n\t// en vez de dentro, y el banco lo marcó como CORRUPTO. Un rechazo cuesta un\n\t// turno; esto costaba un fichero mal indentado sin avisar.\n\tconst modeloAportaEstructura = nuevas.some(\n\t\t(l) => l.trim() !== \"\" && profundidad(l, unidadDelModelo) - baseDelModelo !== 0,\n\t);\n\tconst bloqueTieneEstructura = bloque.some(\n\t\t(l) => l.trim() !== \"\" && profundidad(l, unidad) !== profundidad(bloque[0], unidad),\n\t);\n\n\tlet reSangradas: string[];\n\tif (modeloAportaEstructura || !bloqueTieneEstructura) {\n\t\t// El modelo dijo la profundidad, o el bloque es plano y no hay nada que\n\t\t// preservar. En los dos casos su información basta.\n\t\treSangradas = reSangrarComoElBloque(nuevas, bloque);\n\t} else if (nuevas.length === bloque.length) {\n\t\t// El modelo no aportó estructura pero el bloque sí la tiene, y hay el\n\t\t// mismo número de líneas: la plantilla es el BLOQUE ORIGINAL. El modelo\n\t\t// cambió el contenido, no la forma, así que cada línea hereda la sangría\n\t\t// literal de la que sustituye.\n\t\treSangradas = nuevas.map((linea, i) => (linea.trim() === \"\" ? \"\" : sangriaDe(bloque[i]) + linea.trim()));\n\t} else {\n\t\t// Ni el modelo dice la estructura, ni se puede heredar línea a línea.\n\t\t// Cualquier sangría que pusiéramos sería adivinada, así que se rechaza:\n\t\t// «no puedo» dicho a tiempo vale más que un fichero mal indentado.\n\t\treturn null;\n\t}\n\n\t// Invariante 3: una línea que el modelo RETECLEÓ sin cambiarla conserva sus\n\t// bytes originales.\n\t//\n\t// Es la misma lección que el `“`→`\"` de `normalizeForFuzzyMatch`, aplicada\n\t// línea a línea. Al casar por espaciado colapsado, el fichero puede tener\n\t// `const s = \"a b\";` y el modelo mandar `const s = \"a b\";` dentro de un\n\t// bloque cuya única intención era cambiar OTRA línea. Escribir la versión del\n\t// modelo colapsaría un espacio dentro de una cadena que nadie pidió tocar.\n\t// Si al colapsar las dos líneas son la misma, la que gana es la del fichero.\n\t//\n\t// Y SOLO cuando el casado ha necesitado colapsar. Este invariante existe para\n\t// neutralizar la igualdad FALSA que introduce el colapso; si casó la pasada\n\t// estricta, el modelo reprodujo el espaciado interior tal cual, así que una\n\t// diferencia en el `newText` es un cambio DELIBERADO y hay que escribirlo.\n\t// Medido, con el fichero `\\tlet suma = 0;` y el modelo pidiendo\n\t// `let suma = 0;` con la sangría en espacios (el error de sangría más\n\t// frecuente que existe, el que este módulo entero viene a arreglar):\n\t//\n\t// sin la puerta: la edición se descarta y sale «No changes made … the text\n\t// not existing as expected» — un «no puedo» disfrazado de\n\t// «no existe», y el texto SÍ existía y SÍ había casado\n\t// con la puerta: entra, y queda `\\tlet suma = 0;`\n\t//\n\t// Sin esto, ningún arreglo cuyo único cambio sea «N espacios → uno» puede\n\t// entrar nunca por este camino: alinear un `=`, quitar un espacio doble o\n\t// convertir un tabulador interior en espacio.\n\t//\n\t// Y hasta dónde llega, que no es hasta donde parece: «bytes originales» son\n\t// los del `contenido` que nos han pasado, y cuando alguna OTRA edición del\n\t// mismo lote es difusa, ese contenido es la forma normalizada. Comprobado:\n\t// con un fichero `const s = “a b”;` y un lote así, en disco queda\n\t// `const s = \"a b\";` — el doble espacio se salva y las comillas\n\t// tipográficas no. No es peor que escribir la línea del modelo (que también\n\t// las trae rectas), pero la promesa es más pequeña de lo que suena.\n\tif (caseColapsando && nuevas.length === bloque.length) {\n\t\treSangradas = reSangradas.map((linea, i) => (colapsado(linea) === colapsado(bloque[i]) ? bloque[i] : linea));\n\t}\n\n\t// Desplazamientos en el contenido original: hay que contar los saltos.\n\tlet indice = 0;\n\tfor (let i = 0; i < inicio; i++) indice += lineas[i].length + 1;\n\tconst longitud = bloque.reduce((n, l) => n + l.length + 1, 0) - 1;\n\n\treturn { indice, longitud, textoNuevo: reSangradas.join(\"\\n\") };\n}\n\n/**\n * ¿El texto nuevo mete un carácter de sangría que el fichero no usa?\n *\n * EL CASO, encontrado auditando y reproducido ejecutando. Cuando el `oldText`\n * casa EXACTO, el motor escribe el `newText` tal cual y se salta toda la lógica\n * de sangría de arriba. Si el modelo teclea el bloque nuevo con tabuladores en\n * un fichero de espacios —cosa que hace constantemente— la mezcla entra sin que\n * nadie la mire:\n *\n * class Carro:\n * def total(self, items): ← 4 espacios, del fichero\n * →→→→s = 0 ← tabuladores, del modelo\n *\n * En Python eso es un `TabError` y el fichero no arranca. Y no lo caza nadie:\n * `core/edicion/parseo.ts` solo cubre TypeScript y JSON, así que para `.py`\n * devuelve `null` y la red de reparación ni se despierta.\n *\n * En TypeScript no rompe la sintaxis, pero deja un fichero con dos estilos que\n * el siguiente `edit` va a casar peor. Es la misma familia que perseguimos:\n * la edición ENTRA, así que se lee como éxito.\n *\n * POR QUÉ AQUÍ Y NO EN UN COMPROBADOR POR LENGUAJE. Esto no necesita gramática\n * de nada: se compara el carácter de sangría del bloque que se sustituye con el\n * del texto que entra. Un comprobador de Python arreglaría Python; esto arregla\n * cualquier lenguaje sensible a la sangría, presentes y futuros.\n *\n * QUÉ NO HACE: no toca el texto cuando el bloque original ya mezcla —ahí no hay\n * un estilo del fichero que respetar, y elegir uno sería inventárselo—. omp, en\n * ese caso, abandona y escribe el texto crudo (`normalize.ts:325`); nosotros\n * hacemos lo mismo, pero solo en ese caso.\n */\nexport function coherenteConElBloque(bloqueOriginal: string, textoNuevo: string): string {\n\tconst lineasOrig = bloqueOriginal.split(\"\\n\").filter((l) => l.trim() !== \"\");\n\tconst lineasNuevas = textoNuevo.split(\"\\n\");\n\tif (lineasOrig.length === 0) return textoNuevo;\n\n\tconst sangriasOrig = lineasOrig.map(sangriaDe).filter((s) => s.length > 0);\n\tif (sangriasOrig.length === 0) return textoNuevo;\n\n\tconst origConTab = sangriasOrig.some((s) => s.includes(\"\\t\"));\n\tconst origConEspacio = sangriasOrig.some((s) => s.includes(\" \"));\n\t// El bloque original ya mezcla: no hay estilo que respetar.\n\tif (origConTab && origConEspacio) return textoNuevo;\n\n\tconst sangriasNuevas = lineasNuevas.filter((l) => l.trim() !== \"\").map(sangriaDe);\n\tconst nuevoConTab = sangriasNuevas.some((s) => s.includes(\"\\t\"));\n\tconst nuevoConEspacio = sangriasNuevas.some((s) => s.includes(\" \"));\n\t// Coincide con el fichero, o no sangra nada: no hay nada que arreglar.\n\tif (origConTab && !nuevoConEspacio) return textoNuevo;\n\tif (origConEspacio && !nuevoConTab) return textoNuevo;\n\n\t// Hay conflicto. Se reescribe la sangría del texto nuevo al estilo del\n\t// bloque, conservando la profundidad RELATIVA que el modelo expresó — que es\n\t// la única información suya que vale.\n\tconst unidad = unidadDe(lineasOrig);\n\t// El ancho del bloque original es el que convierte espacios en niveles: si el\n\t// fichero sangra de 4 en 4, ocho espacios del modelo son dos niveles.\n\tconst ancho =\n\t\tunidad.caracter === \"\\t\"\n\t\t\t? (unidadDe(lineasOrig.filter((l) => !sangriaDe(l).includes(\"\\t\"))).ancho ?? 4)\n\t\t\t: unidad.ancho;\n\tconst primera = lineasNuevas.find((l) => l.trim() !== \"\");\n\tconst base = primera === undefined ? 0 : profundidadMixta(primera, ancho);\n\treturn lineasNuevas\n\t\t.map((linea) => {\n\t\t\tif (linea.trim() === \"\") return \"\";\n\t\t\tconst relativa = Math.max(0, profundidadMixta(linea, ancho) - base);\n\t\t\tconst baseDelBloque = sangriaDe(lineasOrig[0]);\n\t\t\treturn baseDelBloque + unidad.caracter.repeat(relativa * unidad.ancho) + linea.trim();\n\t\t})\n\t\t.join(\"\\n\");\n}\n"]}
|