@hoilab/ada-cli 0.84.21 → 0.85.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +49 -2
- package/README.es.md +174 -0
- package/README.md +203 -658
- package/dist/ada-publico.d.ts +35 -0
- package/dist/ada-publico.d.ts.map +1 -0
- package/dist/ada-publico.js +40 -0
- package/dist/ada-publico.js.map +1 -0
- package/dist/cli/args.d.ts +3 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +11 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/audit-command.d.ts +15 -0
- package/dist/cli/audit-command.d.ts.map +1 -0
- package/dist/cli/audit-command.js +280 -0
- package/dist/cli/audit-command.js.map +1 -0
- package/dist/cli/banco-command.d.ts +15 -0
- package/dist/cli/banco-command.d.ts.map +1 -0
- package/dist/cli/banco-command.js +213 -0
- package/dist/cli/banco-command.js.map +1 -0
- package/dist/cli/cleanse-command.d.ts +11 -0
- package/dist/cli/cleanse-command.d.ts.map +1 -0
- package/dist/cli/cleanse-command.js +101 -0
- package/dist/cli/cleanse-command.js.map +1 -0
- package/dist/cli/commit-command.d.ts +31 -0
- package/dist/cli/commit-command.d.ts.map +1 -0
- package/dist/cli/commit-command.js +158 -0
- package/dist/cli/commit-command.js.map +1 -0
- package/dist/cli/computer-command.d.ts +12 -0
- package/dist/cli/computer-command.d.ts.map +1 -0
- package/dist/cli/computer-command.js +141 -0
- package/dist/cli/computer-command.js.map +1 -0
- package/dist/cli/discover-command.d.ts +18 -0
- package/dist/cli/discover-command.d.ts.map +1 -0
- package/dist/cli/discover-command.js +108 -0
- package/dist/cli/discover-command.js.map +1 -0
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js +2 -1
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/cli/hashline-command.d.ts +11 -0
- package/dist/cli/hashline-command.d.ts.map +1 -0
- package/dist/cli/hashline-command.js +106 -0
- package/dist/cli/hashline-command.js.map +1 -0
- package/dist/cli/home-screen.d.ts.map +1 -1
- package/dist/cli/home-screen.js +2 -2
- package/dist/cli/home-screen.js.map +1 -1
- package/dist/cli/import-command.d.ts +35 -0
- package/dist/cli/import-command.d.ts.map +1 -0
- package/dist/cli/import-command.js +164 -0
- package/dist/cli/import-command.js.map +1 -0
- package/dist/cli/politica-command.d.ts +20 -0
- package/dist/cli/politica-command.d.ts.map +1 -0
- package/dist/cli/politica-command.js +93 -0
- package/dist/cli/politica-command.js.map +1 -0
- package/dist/cli/refine-command.d.ts +18 -0
- package/dist/cli/refine-command.d.ts.map +1 -0
- package/dist/cli/refine-command.js +101 -0
- package/dist/cli/refine-command.js.map +1 -0
- package/dist/cli/review-command.d.ts +24 -0
- package/dist/cli/review-command.d.ts.map +1 -0
- package/dist/cli/review-command.js +168 -0
- package/dist/cli/review-command.js.map +1 -0
- package/dist/cli/schedule-command.d.ts +17 -0
- package/dist/cli/schedule-command.d.ts.map +1 -0
- package/dist/cli/schedule-command.js +117 -0
- package/dist/cli/schedule-command.js.map +1 -0
- package/dist/cli/serve-command.d.ts +72 -0
- package/dist/cli/serve-command.d.ts.map +1 -0
- package/dist/cli/serve-command.js +568 -0
- package/dist/cli/serve-command.js.map +1 -0
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +9 -3
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/cli/telegram-command.d.ts +18 -0
- package/dist/cli/telegram-command.d.ts.map +1 -0
- package/dist/cli/telegram-command.js +137 -0
- package/dist/cli/telegram-command.js.map +1 -0
- package/dist/cli/telemetria-command.d.ts +22 -0
- package/dist/cli/telemetria-command.d.ts.map +1 -0
- package/dist/cli/telemetria-command.js +127 -0
- package/dist/cli/telemetria-command.js.map +1 -0
- package/dist/cli/undo-command.d.ts +9 -0
- package/dist/cli/undo-command.d.ts.map +1 -0
- package/dist/cli/undo-command.js +56 -0
- package/dist/cli/undo-command.js.map +1 -0
- package/dist/cli/usage-command.d.ts +10 -0
- package/dist/cli/usage-command.d.ts.map +1 -0
- package/dist/cli/usage-command.js +209 -0
- package/dist/cli/usage-command.js.map +1 -0
- package/dist/cli/wiki-command.d.ts +9 -0
- package/dist/cli/wiki-command.d.ts.map +1 -0
- package/dist/cli/wiki-command.js +76 -0
- package/dist/cli/wiki-command.js.map +1 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +10 -11
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -2
- package/dist/config.js.map +1 -1
- package/dist/core/ada.d.ts +58 -0
- package/dist/core/ada.d.ts.map +1 -0
- package/dist/core/ada.js +61 -0
- package/dist/core/ada.js.map +1 -0
- package/dist/core/advisor/guarda.d.ts +66 -0
- package/dist/core/advisor/guarda.d.ts.map +1 -0
- package/dist/core/advisor/guarda.js +191 -0
- package/dist/core/advisor/guarda.js.map +1 -0
- package/dist/core/advisor/runtime.d.ts +66 -0
- package/dist/core/advisor/runtime.d.ts.map +1 -0
- package/dist/core/advisor/runtime.js +121 -0
- package/dist/core/advisor/runtime.js.map +1 -0
- package/dist/core/advisor/sesion.d.ts +109 -0
- package/dist/core/advisor/sesion.d.ts.map +1 -0
- package/dist/core/advisor/sesion.js +139 -0
- package/dist/core/advisor/sesion.js.map +1 -0
- package/dist/core/agent-session.d.ts +85 -7
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +862 -78
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/agents/loader.d.ts +77 -0
- package/dist/core/agents/loader.d.ts.map +1 -0
- package/dist/core/agents/loader.js +154 -0
- package/dist/core/agents/loader.js.map +1 -0
- package/dist/core/aprobacion/generados.d.ts +37 -0
- package/dist/core/aprobacion/generados.d.ts.map +1 -0
- package/dist/core/aprobacion/generados.js +85 -0
- package/dist/core/aprobacion/generados.js.map +1 -0
- package/dist/core/aprobacion/politica-de-maquina.d.ts +90 -0
- package/dist/core/aprobacion/politica-de-maquina.d.ts.map +1 -0
- package/dist/core/aprobacion/politica-de-maquina.js +212 -0
- package/dist/core/aprobacion/politica-de-maquina.js.map +1 -0
- package/dist/core/aprobacion/politica.d.ts +90 -0
- package/dist/core/aprobacion/politica.d.ts.map +1 -0
- package/dist/core/aprobacion/politica.js +375 -0
- package/dist/core/aprobacion/politica.js.map +1 -0
- package/dist/core/arranque/atajos.d.ts +46 -0
- package/dist/core/arranque/atajos.d.ts.map +1 -0
- package/dist/core/arranque/atajos.js +113 -0
- package/dist/core/arranque/atajos.js.map +1 -0
- package/dist/core/audit/exportacion.d.ts +54 -0
- package/dist/core/audit/exportacion.d.ts.map +1 -0
- package/dist/core/audit/exportacion.js +265 -0
- package/dist/core/audit/exportacion.js.map +1 -0
- package/dist/core/audit/libro.d.ts +318 -0
- package/dist/core/audit/libro.d.ts.map +1 -0
- package/dist/core/audit/libro.js +508 -0
- package/dist/core/audit/libro.js.map +1 -0
- package/dist/core/audit/registro-sesion.d.ts +78 -0
- package/dist/core/audit/registro-sesion.d.ts.map +1 -0
- package/dist/core/audit/registro-sesion.js +202 -0
- package/dist/core/audit/registro-sesion.js.map +1 -0
- package/dist/core/audit/retencion.d.ts +82 -0
- package/dist/core/audit/retencion.d.ts.map +1 -0
- package/dist/core/audit/retencion.js +152 -0
- package/dist/core/audit/retencion.js.map +1 -0
- package/dist/core/audit/rutas.d.ts +23 -0
- package/dist/core/audit/rutas.d.ts.map +1 -0
- package/dist/core/audit/rutas.js +23 -0
- package/dist/core/audit/rutas.js.map +1 -0
- package/dist/core/auth-storage.d.ts +0 -3
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +21 -8
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/banco/almacenamiento.d.ts +18 -0
- package/dist/core/banco/almacenamiento.d.ts.map +1 -0
- package/dist/core/banco/almacenamiento.js +50 -0
- package/dist/core/banco/almacenamiento.js.map +1 -0
- package/dist/core/banco/analisis.d.ts +37 -0
- package/dist/core/banco/analisis.d.ts.map +1 -0
- package/dist/core/banco/analisis.js +164 -0
- package/dist/core/banco/analisis.js.map +1 -0
- package/dist/core/banco/bloques.d.ts +39 -0
- package/dist/core/banco/bloques.d.ts.map +1 -0
- package/dist/core/banco/bloques.js +84 -0
- package/dist/core/banco/bloques.js.map +1 -0
- package/dist/core/banco/cargas.d.ts +84 -0
- package/dist/core/banco/cargas.d.ts.map +1 -0
- package/dist/core/banco/cargas.js +520 -0
- package/dist/core/banco/cargas.js.map +1 -0
- package/dist/core/banco/comparar.d.ts +29 -0
- package/dist/core/banco/comparar.d.ts.map +1 -0
- package/dist/core/banco/comparar.js +28 -0
- package/dist/core/banco/comparar.js.map +1 -0
- package/dist/core/banco/ejecutar.d.ts +44 -0
- package/dist/core/banco/ejecutar.d.ts.map +1 -0
- package/dist/core/banco/ejecutar.js +183 -0
- package/dist/core/banco/ejecutar.js.map +1 -0
- package/dist/core/banco/generar.d.ts +24 -0
- package/dist/core/banco/generar.d.ts.map +1 -0
- package/dist/core/banco/generar.js +159 -0
- package/dist/core/banco/generar.js.map +1 -0
- package/dist/core/banco/mutaciones.d.ts +25 -0
- package/dist/core/banco/mutaciones.d.ts.map +1 -0
- package/dist/core/banco/mutaciones.js +215 -0
- package/dist/core/banco/mutaciones.js.map +1 -0
- package/dist/core/banco/tipos.d.ts +121 -0
- package/dist/core/banco/tipos.d.ts.map +1 -0
- package/dist/core/banco/tipos.js +16 -0
- package/dist/core/banco/tipos.js.map +1 -0
- package/dist/core/blobs/almacen.d.ts +81 -0
- package/dist/core/blobs/almacen.d.ts.map +1 -0
- package/dist/core/blobs/almacen.js +198 -0
- package/dist/core/blobs/almacen.js.map +1 -0
- package/dist/core/blobs/broker.d.ts +103 -0
- package/dist/core/blobs/broker.d.ts.map +1 -0
- package/dist/core/blobs/broker.js +204 -0
- package/dist/core/blobs/broker.js.map +1 -0
- package/dist/core/blobs/index.d.ts +70 -0
- package/dist/core/blobs/index.d.ts.map +1 -0
- package/dist/core/blobs/index.js +232 -0
- package/dist/core/blobs/index.js.map +1 -0
- package/dist/core/blobs/payload.d.ts +55 -0
- package/dist/core/blobs/payload.d.ts.map +1 -0
- package/dist/core/blobs/payload.js +255 -0
- package/dist/core/blobs/payload.js.map +1 -0
- package/dist/core/blobs/proveedor.d.ts +85 -0
- package/dist/core/blobs/proveedor.d.ts.map +1 -0
- package/dist/core/blobs/proveedor.js +196 -0
- package/dist/core/blobs/proveedor.js.map +1 -0
- package/dist/core/browser/cdp.d.ts +41 -0
- package/dist/core/browser/cdp.d.ts.map +1 -0
- package/dist/core/browser/cdp.js +119 -0
- package/dist/core/browser/cdp.js.map +1 -0
- package/dist/core/browser/politica.d.ts +51 -0
- package/dist/core/browser/politica.d.ts.map +1 -0
- package/dist/core/browser/politica.js +123 -0
- package/dist/core/browser/politica.js.map +1 -0
- package/dist/core/browser/sesion.d.ts +52 -0
- package/dist/core/browser/sesion.d.ts.map +1 -0
- package/dist/core/browser/sesion.js +176 -0
- package/dist/core/browser/sesion.js.map +1 -0
- package/dist/core/browser/tools.d.ts +16 -0
- package/dist/core/browser/tools.d.ts.map +1 -0
- package/dist/core/browser/tools.js +279 -0
- package/dist/core/browser/tools.js.map +1 -0
- package/dist/core/commit/diff.d.ts +56 -0
- package/dist/core/commit/diff.d.ts.map +1 -0
- package/dist/core/commit/diff.js +145 -0
- package/dist/core/commit/diff.js.map +1 -0
- package/dist/core/commit/mensaje.d.ts +80 -0
- package/dist/core/commit/mensaje.d.ts.map +1 -0
- package/dist/core/commit/mensaje.js +207 -0
- package/dist/core/commit/mensaje.js.map +1 -0
- package/dist/core/compactar/index.d.ts +52 -0
- package/dist/core/compactar/index.d.ts.map +1 -0
- package/dist/core/compactar/index.js +91 -0
- package/dist/core/compactar/index.js.map +1 -0
- package/dist/core/compactar/registro-denso.d.ts +160 -0
- package/dist/core/compactar/registro-denso.d.ts.map +1 -0
- package/dist/core/compactar/registro-denso.js +620 -0
- package/dist/core/compactar/registro-denso.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +3 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +4 -3
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +41 -32
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/computer/captura.d.ts +35 -0
- package/dist/core/computer/captura.d.ts.map +1 -0
- package/dist/core/computer/captura.js +140 -0
- package/dist/core/computer/captura.js.map +1 -0
- package/dist/core/computer/driver.d.ts +130 -0
- package/dist/core/computer/driver.d.ts.map +1 -0
- package/dist/core/computer/driver.js +206 -0
- package/dist/core/computer/driver.js.map +1 -0
- package/dist/core/computer/motor/actions.d.ts +109 -0
- package/dist/core/computer/motor/actions.d.ts.map +1 -0
- package/dist/core/computer/motor/actions.js +157 -0
- package/dist/core/computer/motor/actions.js.map +1 -0
- package/dist/core/computer/motor/bridge.d.ts +232 -0
- package/dist/core/computer/motor/bridge.d.ts.map +1 -0
- package/dist/core/computer/motor/bridge.js +2335 -0
- package/dist/core/computer/motor/bridge.js.map +1 -0
- package/dist/core/computer/motor/cdp.d.ts +107 -0
- package/dist/core/computer/motor/cdp.d.ts.map +1 -0
- package/dist/core/computer/motor/cdp.js +659 -0
- package/dist/core/computer/motor/cdp.js.map +1 -0
- package/dist/core/computer/motor/config.d.ts +23 -0
- package/dist/core/computer/motor/config.d.ts.map +1 -0
- package/dist/core/computer/motor/config.js +100 -0
- package/dist/core/computer/motor/config.js.map +1 -0
- package/dist/core/computer/motor/contract.d.ts +81 -0
- package/dist/core/computer/motor/contract.d.ts.map +1 -0
- package/dist/core/computer/motor/contract.js +14 -0
- package/dist/core/computer/motor/contract.js.map +1 -0
- package/dist/core/computer/motor/note.d.ts +37 -0
- package/dist/core/computer/motor/note.d.ts.map +1 -0
- package/dist/core/computer/motor/note.js +162 -0
- package/dist/core/computer/motor/note.js.map +1 -0
- package/dist/core/computer/motor/outline.d.ts +155 -0
- package/dist/core/computer/motor/outline.d.ts.map +1 -0
- package/dist/core/computer/motor/outline.js +590 -0
- package/dist/core/computer/motor/outline.js.map +1 -0
- package/dist/core/computer/motor/output.d.ts +18 -0
- package/dist/core/computer/motor/output.d.ts.map +1 -0
- package/dist/core/computer/motor/output.js +148 -0
- package/dist/core/computer/motor/output.js.map +1 -0
- package/dist/core/computer/motor/permissions.d.ts +41 -0
- package/dist/core/computer/motor/permissions.d.ts.map +1 -0
- package/dist/core/computer/motor/permissions.js +51 -0
- package/dist/core/computer/motor/permissions.js.map +1 -0
- package/dist/core/computer/motor/platform/architecture.d.ts +5 -0
- package/dist/core/computer/motor/platform/architecture.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/architecture.js +21 -0
- package/dist/core/computer/motor/platform/architecture.js.map +1 -0
- package/dist/core/computer/motor/platform/coerce.d.ts +4 -0
- package/dist/core/computer/motor/platform/coerce.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/coerce.js +17 -0
- package/dist/core/computer/motor/platform/coerce.js.map +1 -0
- package/dist/core/computer/motor/platform/index.d.ts +4 -0
- package/dist/core/computer/motor/platform/index.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/index.js +79 -0
- package/dist/core/computer/motor/platform/index.js.map +1 -0
- package/dist/core/computer/motor/platform/linux/backend.d.ts +3 -0
- package/dist/core/computer/motor/platform/linux/backend.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/linux/backend.js +173 -0
- package/dist/core/computer/motor/platform/linux/backend.js.map +1 -0
- package/dist/core/computer/motor/platform/linux/helper.d.ts +29 -0
- package/dist/core/computer/motor/platform/linux/helper.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/linux/helper.js +261 -0
- package/dist/core/computer/motor/platform/linux/helper.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/backend.d.ts +3 -0
- package/dist/core/computer/motor/platform/macos/backend.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/backend.js +124 -0
- package/dist/core/computer/motor/platform/macos/backend.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/browser.d.ts +7 -0
- package/dist/core/computer/motor/platform/macos/browser.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/browser.js +101 -0
- package/dist/core/computer/motor/platform/macos/browser.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/helper-path.mjs +34 -0
- package/dist/core/computer/motor/platform/macos/helper.d.ts +32 -0
- package/dist/core/computer/motor/platform/macos/helper.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/helper.js +277 -0
- package/dist/core/computer/motor/platform/macos/helper.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/permissions.d.ts +4 -0
- package/dist/core/computer/motor/platform/macos/permissions.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/permissions.js +118 -0
- package/dist/core/computer/motor/platform/macos/permissions.js.map +1 -0
- package/dist/core/computer/motor/platform/types.d.ts +263 -0
- package/dist/core/computer/motor/platform/types.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/types.js +2 -0
- package/dist/core/computer/motor/platform/types.js.map +1 -0
- package/dist/core/computer/motor/platform/windows/backend.d.ts +3 -0
- package/dist/core/computer/motor/platform/windows/backend.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/windows/backend.js +163 -0
- package/dist/core/computer/motor/platform/windows/backend.js.map +1 -0
- package/dist/core/computer/motor/platform/windows/helper.d.ts +18 -0
- package/dist/core/computer/motor/platform/windows/helper.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/windows/helper.js +174 -0
- package/dist/core/computer/motor/platform/windows/helper.js.map +1 -0
- package/dist/core/computer/motor/root-selection.d.ts +6 -0
- package/dist/core/computer/motor/root-selection.d.ts.map +1 -0
- package/dist/core/computer/motor/root-selection.js +28 -0
- package/dist/core/computer/motor/root-selection.js.map +1 -0
- package/dist/core/computer/motor/runtime.d.ts +50 -0
- package/dist/core/computer/motor/runtime.d.ts.map +1 -0
- package/dist/core/computer/motor/runtime.js +119 -0
- package/dist/core/computer/motor/runtime.js.map +1 -0
- package/dist/core/computer/motor/state.d.ts +68 -0
- package/dist/core/computer/motor/state.d.ts.map +1 -0
- package/dist/core/computer/motor/state.js +100 -0
- package/dist/core/computer/motor/state.js.map +1 -0
- package/dist/core/computer/motor/view.d.ts +6 -0
- package/dist/core/computer/motor/view.d.ts.map +1 -0
- package/dist/core/computer/motor/view.js +185 -0
- package/dist/core/computer/motor/view.js.map +1 -0
- package/dist/core/computer/motor-ada.d.ts +159 -0
- package/dist/core/computer/motor-ada.d.ts.map +1 -0
- package/dist/core/computer/motor-ada.js +412 -0
- package/dist/core/computer/motor-ada.js.map +1 -0
- package/dist/core/computer/politica.d.ts +56 -0
- package/dist/core/computer/politica.d.ts.map +1 -0
- package/dist/core/computer/politica.js +163 -0
- package/dist/core/computer/politica.js.map +1 -0
- package/dist/core/computer/tools.d.ts +26 -0
- package/dist/core/computer/tools.d.ts.map +1 -0
- package/dist/core/computer/tools.js +399 -0
- package/dist/core/computer/tools.js.map +1 -0
- package/dist/core/context-breakdown.d.ts +80 -0
- package/dist/core/context-breakdown.d.ts.map +1 -0
- package/dist/core/context-breakdown.js +87 -0
- package/dist/core/context-breakdown.js.map +1 -0
- package/dist/core/credenciales/cliente.d.ts +60 -0
- package/dist/core/credenciales/cliente.d.ts.map +1 -0
- package/dist/core/credenciales/cliente.js +81 -0
- package/dist/core/credenciales/cliente.js.map +1 -0
- package/dist/core/credenciales/pool.d.ts +96 -0
- package/dist/core/credenciales/pool.d.ts.map +1 -0
- package/dist/core/credenciales/pool.js +128 -0
- package/dist/core/credenciales/pool.js.map +1 -0
- package/dist/core/credenciales/reposo.d.ts +93 -0
- package/dist/core/credenciales/reposo.d.ts.map +1 -0
- package/dist/core/credenciales/reposo.js +489 -0
- package/dist/core/credenciales/reposo.js.map +1 -0
- package/dist/core/credenciales/servidor.d.ts +55 -0
- package/dist/core/credenciales/servidor.d.ts.map +1 -0
- package/dist/core/credenciales/servidor.js +205 -0
- package/dist/core/credenciales/servidor.js.map +1 -0
- package/dist/core/defaults.d.ts +1 -0
- package/dist/core/defaults.d.ts.map +1 -1
- package/dist/core/defaults.js +9 -0
- package/dist/core/defaults.js.map +1 -1
- package/dist/core/descubrimiento/comandos.d.ts +30 -0
- package/dist/core/descubrimiento/comandos.d.ts.map +1 -0
- package/dist/core/descubrimiento/comandos.js +76 -0
- package/dist/core/descubrimiento/comandos.js.map +1 -0
- package/dist/core/descubrimiento/mcp.d.ts +42 -0
- package/dist/core/descubrimiento/mcp.d.ts.map +1 -0
- package/dist/core/descubrimiento/mcp.js +130 -0
- package/dist/core/descubrimiento/mcp.js.map +1 -0
- package/dist/core/descubrimiento/reglas.d.ts +61 -0
- package/dist/core/descubrimiento/reglas.d.ts.map +1 -0
- package/dist/core/descubrimiento/reglas.js +134 -0
- package/dist/core/descubrimiento/reglas.js.map +1 -0
- package/dist/core/descubrimiento/skills.d.ts +57 -0
- package/dist/core/descubrimiento/skills.d.ts.map +1 -0
- package/dist/core/descubrimiento/skills.js +113 -0
- package/dist/core/descubrimiento/skills.js.map +1 -0
- package/dist/core/dificultad/clasificador.d.ts +133 -0
- package/dist/core/dificultad/clasificador.d.ts.map +1 -0
- package/dist/core/dificultad/clasificador.js +288 -0
- package/dist/core/dificultad/clasificador.js.map +1 -0
- package/dist/core/edicion/diario.d.ts +37 -0
- package/dist/core/edicion/diario.d.ts.map +1 -0
- package/dist/core/edicion/diario.js +51 -0
- package/dist/core/edicion/diario.js.map +1 -0
- package/dist/core/edicion/hashline.d.ts +71 -0
- package/dist/core/edicion/hashline.d.ts.map +1 -0
- package/dist/core/edicion/hashline.js +111 -0
- package/dist/core/edicion/hashline.js.map +1 -0
- package/dist/core/edicion/hueco.d.ts +64 -0
- package/dist/core/edicion/hueco.d.ts.map +1 -0
- package/dist/core/edicion/hueco.js +162 -0
- package/dist/core/edicion/hueco.js.map +1 -0
- package/dist/core/edicion/limpiar-carga.d.ts +39 -0
- package/dist/core/edicion/limpiar-carga.d.ts.map +1 -0
- package/dist/core/edicion/limpiar-carga.js +121 -0
- package/dist/core/edicion/limpiar-carga.js.map +1 -0
- package/dist/core/edicion/observador.d.ts +80 -0
- package/dist/core/edicion/observador.d.ts.map +1 -0
- package/dist/core/edicion/observador.js +183 -0
- package/dist/core/edicion/observador.js.map +1 -0
- package/dist/core/edicion/parecido.d.ts +53 -0
- package/dist/core/edicion/parecido.d.ts.map +1 -0
- package/dist/core/edicion/parecido.js +145 -0
- package/dist/core/edicion/parecido.js.map +1 -0
- package/dist/core/edicion/parseo.d.ts +58 -0
- package/dist/core/edicion/parseo.d.ts.map +1 -0
- package/dist/core/edicion/parseo.js +124 -0
- package/dist/core/edicion/parseo.js.map +1 -0
- package/dist/core/edicion/reparacion.d.ts +67 -0
- package/dist/core/edicion/reparacion.d.ts.map +1 -0
- package/dist/core/edicion/reparacion.js +202 -0
- package/dist/core/edicion/reparacion.js.map +1 -0
- package/dist/core/edicion/sangria.d.ts +121 -0
- package/dist/core/edicion/sangria.d.ts.map +1 -0
- package/dist/core/edicion/sangria.js +341 -0
- package/dist/core/edicion/sangria.js.map +1 -0
- package/dist/core/edicion/tipos.d.ts +58 -0
- package/dist/core/edicion/tipos.d.ts.map +1 -0
- package/dist/core/edicion/tipos.js +160 -0
- package/dist/core/edicion/tipos.js.map +1 -0
- package/dist/core/engine-personality.d.ts +12 -0
- package/dist/core/engine-personality.d.ts.map +1 -0
- package/dist/core/engine-personality.js +53 -0
- package/dist/core/engine-personality.js.map +1 -0
- package/dist/core/errores/proveedor.d.ts +53 -0
- package/dist/core/errores/proveedor.d.ts.map +1 -0
- package/dist/core/errores/proveedor.js +191 -0
- package/dist/core/errores/proveedor.js.map +1 -0
- package/dist/core/estructural/buscar.d.ts +61 -0
- package/dist/core/estructural/buscar.d.ts.map +1 -0
- package/dist/core/estructural/buscar.js +261 -0
- package/dist/core/estructural/buscar.js.map +1 -0
- package/dist/core/estructural/editar.d.ts +36 -0
- package/dist/core/estructural/editar.d.ts.map +1 -0
- package/dist/core/estructural/editar.js +123 -0
- package/dist/core/estructural/editar.js.map +1 -0
- package/dist/core/estructural/tools.d.ts +11 -0
- package/dist/core/estructural/tools.d.ts.map +1 -0
- package/dist/core/estructural/tools.js +100 -0
- package/dist/core/estructural/tools.js.map +1 -0
- package/dist/core/experimental.d.ts.map +1 -1
- package/dist/core/experimental.js +10 -1
- package/dist/core/experimental.js.map +1 -1
- package/dist/core/extensiones/suplantacion.d.ts +49 -0
- package/dist/core/extensiones/suplantacion.d.ts.map +1 -0
- package/dist/core/extensiones/suplantacion.js +61 -0
- package/dist/core/extensiones/suplantacion.js.map +1 -0
- package/dist/core/extensiones/vigilancia.d.ts +54 -0
- package/dist/core/extensiones/vigilancia.d.ts.map +1 -0
- package/dist/core/extensiones/vigilancia.js +217 -0
- package/dist/core/extensiones/vigilancia.js.map +1 -0
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +21 -6
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/types.d.ts +23 -4
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/harness/fuentes-de-contexto.d.ts +29 -0
- package/dist/core/harness/fuentes-de-contexto.d.ts.map +1 -0
- package/dist/core/harness/fuentes-de-contexto.js +44 -0
- package/dist/core/harness/fuentes-de-contexto.js.map +1 -0
- package/dist/core/harness/refine.d.ts +40 -0
- package/dist/core/harness/refine.d.ts.map +1 -0
- package/dist/core/harness/refine.js +109 -0
- package/dist/core/harness/refine.js.map +1 -0
- package/dist/core/harness/store.d.ts +75 -0
- package/dist/core/harness/store.d.ts.map +1 -0
- package/dist/core/harness/store.js +149 -0
- package/dist/core/harness/store.js.map +1 -0
- package/dist/core/hooks/contract.d.ts +85 -0
- package/dist/core/hooks/contract.d.ts.map +1 -0
- package/dist/core/hooks/contract.js +140 -0
- package/dist/core/hooks/contract.js.map +1 -0
- package/dist/core/hooks/runner.d.ts +42 -0
- package/dist/core/hooks/runner.d.ts.map +1 -0
- package/dist/core/hooks/runner.js +85 -0
- package/dist/core/hooks/runner.js.map +1 -0
- package/dist/core/hooks/session-hooks.d.ts +62 -0
- package/dist/core/hooks/session-hooks.d.ts.map +1 -0
- package/dist/core/hooks/session-hooks.js +84 -0
- package/dist/core/hooks/session-hooks.js.map +1 -0
- package/dist/core/importar/formatos.d.ts +69 -0
- package/dist/core/importar/formatos.d.ts.map +1 -0
- package/dist/core/importar/formatos.js +235 -0
- package/dist/core/importar/formatos.js.map +1 -0
- package/dist/core/interactivo/deteccion.d.ts +44 -0
- package/dist/core/interactivo/deteccion.d.ts.map +1 -0
- package/dist/core/interactivo/deteccion.js +82 -0
- package/dist/core/interactivo/deteccion.js.map +1 -0
- package/dist/core/interactivo/sesion.d.ts +50 -0
- package/dist/core/interactivo/sesion.d.ts.map +1 -0
- package/dist/core/interactivo/sesion.js +156 -0
- package/dist/core/interactivo/sesion.js.map +1 -0
- package/dist/core/interactivo/tools.d.ts +21 -0
- package/dist/core/interactivo/tools.d.ts.map +1 -0
- package/dist/core/interactivo/tools.js +122 -0
- package/dist/core/interactivo/tools.js.map +1 -0
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +2 -1
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/lectura/mapa.d.ts +70 -0
- package/dist/core/lectura/mapa.d.ts.map +1 -0
- package/dist/core/lectura/mapa.js +177 -0
- package/dist/core/lectura/mapa.js.map +1 -0
- package/dist/core/lectura/pdf.d.ts +49 -0
- package/dist/core/lectura/pdf.d.ts.map +1 -0
- package/dist/core/lectura/pdf.js +337 -0
- package/dist/core/lectura/pdf.js.map +1 -0
- package/dist/core/limpieza/comprobadores.d.ts +28 -0
- package/dist/core/limpieza/comprobadores.d.ts.map +1 -0
- package/dist/core/limpieza/comprobadores.js +311 -0
- package/dist/core/limpieza/comprobadores.js.map +1 -0
- package/dist/core/limpieza/parseo.d.ts +19 -0
- package/dist/core/limpieza/parseo.d.ts.map +1 -0
- package/dist/core/limpieza/parseo.js +124 -0
- package/dist/core/limpieza/parseo.js.map +1 -0
- package/dist/core/limpieza/reparacion.d.ts +77 -0
- package/dist/core/limpieza/reparacion.d.ts.map +1 -0
- package/dist/core/limpieza/reparacion.js +254 -0
- package/dist/core/limpieza/reparacion.js.map +1 -0
- package/dist/core/limpieza/tipos.d.ts +56 -0
- package/dist/core/limpieza/tipos.d.ts.map +1 -0
- package/dist/core/limpieza/tipos.js +9 -0
- package/dist/core/limpieza/tipos.js.map +1 -0
- package/dist/core/lsp/cliente.d.ts +52 -0
- package/dist/core/lsp/cliente.d.ts.map +1 -0
- package/dist/core/lsp/cliente.js +232 -0
- package/dist/core/lsp/cliente.js.map +1 -0
- package/dist/core/lsp/descubrimiento.d.ts +62 -0
- package/dist/core/lsp/descubrimiento.d.ts.map +1 -0
- package/dist/core/lsp/descubrimiento.js +152 -0
- package/dist/core/lsp/descubrimiento.js.map +1 -0
- package/dist/core/lsp/ediciones.d.ts +59 -0
- package/dist/core/lsp/ediciones.d.ts.map +1 -0
- package/dist/core/lsp/ediciones.js +89 -0
- package/dist/core/lsp/ediciones.js.map +1 -0
- package/dist/core/lsp/extension.d.ts +28 -0
- package/dist/core/lsp/extension.d.ts.map +1 -0
- package/dist/core/lsp/extension.js +34 -0
- package/dist/core/lsp/extension.js.map +1 -0
- package/dist/core/lsp/tools.d.ts +45 -0
- package/dist/core/lsp/tools.d.ts.map +1 -0
- package/dist/core/lsp/tools.js +265 -0
- package/dist/core/lsp/tools.js.map +1 -0
- package/dist/core/mcp/client.d.ts +60 -0
- package/dist/core/mcp/client.d.ts.map +1 -0
- package/dist/core/mcp/client.js +139 -0
- package/dist/core/mcp/client.js.map +1 -0
- package/dist/core/mcp/manager.d.ts +86 -0
- package/dist/core/mcp/manager.d.ts.map +1 -0
- package/dist/core/mcp/manager.js +124 -0
- package/dist/core/mcp/manager.js.map +1 -0
- package/dist/core/mcp/tools.d.ts +15 -0
- package/dist/core/mcp/tools.d.ts.map +1 -0
- package/dist/core/mcp/tools.js +84 -0
- package/dist/core/mcp/tools.js.map +1 -0
- package/dist/core/memory-engine/audit-export.d.ts +56 -0
- package/dist/core/memory-engine/audit-export.d.ts.map +1 -0
- package/dist/core/memory-engine/audit-export.js +100 -0
- package/dist/core/memory-engine/audit-export.js.map +1 -0
- package/dist/core/memory-engine/audit-indice.d.ts +153 -0
- package/dist/core/memory-engine/audit-indice.d.ts.map +1 -0
- package/dist/core/memory-engine/audit-indice.js +271 -0
- package/dist/core/memory-engine/audit-indice.js.map +1 -0
- package/dist/core/memory-engine/audit.d.ts +18 -6
- package/dist/core/memory-engine/audit.d.ts.map +1 -1
- package/dist/core/memory-engine/audit.js +32 -50
- package/dist/core/memory-engine/audit.js.map +1 -1
- package/dist/core/memory-engine/engine.d.ts +21 -4
- package/dist/core/memory-engine/engine.d.ts.map +1 -1
- package/dist/core/memory-engine/engine.js +219 -55
- package/dist/core/memory-engine/engine.js.map +1 -1
- package/dist/core/memory-engine/inverted-index.d.ts.map +1 -1
- package/dist/core/memory-engine/inverted-index.js +67 -10
- package/dist/core/memory-engine/inverted-index.js.map +1 -1
- package/dist/core/memory-engine/keychain.d.ts.map +1 -1
- package/dist/core/memory-engine/keychain.js +1 -6
- package/dist/core/memory-engine/keychain.js.map +1 -1
- package/dist/core/memory-engine/observation-store.d.ts +0 -1
- package/dist/core/memory-engine/observation-store.d.ts.map +1 -1
- package/dist/core/memory-engine/observation-store.js +40 -12
- package/dist/core/memory-engine/observation-store.js.map +1 -1
- package/dist/core/memory-engine/refinements.d.ts +51 -0
- package/dist/core/memory-engine/refinements.d.ts.map +1 -0
- package/dist/core/memory-engine/refinements.js +99 -0
- package/dist/core/memory-engine/refinements.js.map +1 -0
- package/dist/core/memory-engine/scanner.d.ts.map +1 -1
- package/dist/core/memory-engine/scanner.js +25 -5
- package/dist/core/memory-engine/scanner.js.map +1 -1
- package/dist/core/memory-engine/security.d.ts.map +1 -1
- package/dist/core/memory-engine/security.js +131 -23
- package/dist/core/memory-engine/security.js.map +1 -1
- package/dist/core/memory-engine/session-indexer.d.ts.map +1 -1
- package/dist/core/memory-engine/session-indexer.js +8 -2
- package/dist/core/memory-engine/session-indexer.js.map +1 -1
- package/dist/core/memory-engine/tools.d.ts +2 -2
- package/dist/core/memory-engine/tools.d.ts.map +1 -1
- package/dist/core/memory-engine/tools.js +41 -8
- package/dist/core/memory-engine/tools.js.map +1 -1
- package/dist/core/memory-engine/types.d.ts +2 -0
- package/dist/core/memory-engine/types.d.ts.map +1 -1
- package/dist/core/memory-engine/types.js.map +1 -1
- package/dist/core/memory-engine/vault.d.ts.map +1 -1
- package/dist/core/memory-engine/vault.js +2 -2
- package/dist/core/memory-engine/vault.js.map +1 -1
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +2 -1
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-resolver.d.ts +1 -0
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +19 -7
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/models-store.d.ts.map +1 -1
- package/dist/core/models-store.js +2 -1
- package/dist/core/models-store.js.map +1 -1
- package/dist/core/muestreo-restringido.d.ts +49 -0
- package/dist/core/muestreo-restringido.d.ts.map +1 -0
- package/dist/core/muestreo-restringido.js +65 -0
- package/dist/core/muestreo-restringido.js.map +1 -0
- package/dist/core/orphan-process-journal.d.ts +48 -0
- package/dist/core/orphan-process-journal.d.ts.map +1 -0
- package/dist/core/orphan-process-journal.js +116 -0
- package/dist/core/orphan-process-journal.js.map +1 -0
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +11 -6
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/pi-manifest.d.ts.map +1 -1
- package/dist/core/pi-manifest.js +2 -1
- package/dist/core/pi-manifest.js.map +1 -1
- package/dist/core/privacidad/categorias-especiales.d.ts +186 -0
- package/dist/core/privacidad/categorias-especiales.d.ts.map +1 -0
- package/dist/core/privacidad/categorias-especiales.js +745 -0
- package/dist/core/privacidad/categorias-especiales.js.map +1 -0
- package/dist/core/privacidad/tapar.d.ts +48 -0
- package/dist/core/privacidad/tapar.d.ts.map +1 -0
- package/dist/core/privacidad/tapar.js +66 -0
- package/dist/core/privacidad/tapar.js.map +1 -0
- package/dist/core/prompt-cache/diagnostics.d.ts +33 -0
- package/dist/core/prompt-cache/diagnostics.d.ts.map +1 -0
- package/dist/core/prompt-cache/diagnostics.js +100 -0
- package/dist/core/prompt-cache/diagnostics.js.map +1 -0
- package/dist/core/prompt-cache/index.d.ts +33 -0
- package/dist/core/prompt-cache/index.d.ts.map +1 -0
- package/dist/core/prompt-cache/index.js +189 -0
- package/dist/core/prompt-cache/index.js.map +1 -0
- package/dist/core/prompt-cache/payload.d.ts +58 -0
- package/dist/core/prompt-cache/payload.d.ts.map +1 -0
- package/dist/core/prompt-cache/payload.js +122 -0
- package/dist/core/prompt-cache/payload.js.map +1 -0
- package/dist/core/prompt-cache/stabilize.d.ts +65 -0
- package/dist/core/prompt-cache/stabilize.d.ts.map +1 -0
- package/dist/core/prompt-cache/stabilize.js +137 -0
- package/dist/core/prompt-cache/stabilize.js.map +1 -0
- package/dist/core/prompt-cache/stats.d.ts +55 -0
- package/dist/core/prompt-cache/stats.d.ts.map +1 -0
- package/dist/core/prompt-cache/stats.js +158 -0
- package/dist/core/prompt-cache/stats.js.map +1 -0
- package/dist/core/prompt-eleccion.d.ts +38 -0
- package/dist/core/prompt-eleccion.d.ts.map +1 -0
- package/dist/core/prompt-eleccion.js +46 -0
- package/dist/core/prompt-eleccion.js.map +1 -0
- package/dist/core/prompt-optimizer.d.ts +53 -0
- package/dist/core/prompt-optimizer.d.ts.map +1 -0
- package/dist/core/prompt-optimizer.js +138 -0
- package/dist/core/prompt-optimizer.js.map +1 -0
- package/dist/core/prompts/montar.d.ts +75 -0
- package/dist/core/prompts/montar.d.ts.map +1 -0
- package/dist/core/prompts/montar.js +146 -0
- package/dist/core/prompts/montar.js.map +1 -0
- package/dist/core/prompts/plantilla.d.ts +54 -0
- package/dist/core/prompts/plantilla.d.ts.map +1 -0
- package/dist/core/prompts/plantilla.js +153 -0
- package/dist/core/prompts/plantilla.js.map +1 -0
- package/dist/core/prompts/sistema.md +134 -0
- package/dist/core/provider-attribution.d.ts +24 -2
- package/dist/core/provider-attribution.d.ts.map +1 -1
- package/dist/core/provider-attribution.js +24 -42
- package/dist/core/provider-attribution.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +2 -1
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/remoto/destino.d.ts +38 -0
- package/dist/core/remoto/destino.d.ts.map +1 -0
- package/dist/core/remoto/destino.js +105 -0
- package/dist/core/remoto/destino.js.map +1 -0
- package/dist/core/remoto/ejecutor.d.ts +59 -0
- package/dist/core/remoto/ejecutor.d.ts.map +1 -0
- package/dist/core/remoto/ejecutor.js +225 -0
- package/dist/core/remoto/ejecutor.js.map +1 -0
- package/dist/core/remoto/ficheros.d.ts +29 -0
- package/dist/core/remoto/ficheros.d.ts.map +1 -0
- package/dist/core/remoto/ficheros.js +90 -0
- package/dist/core/remoto/ficheros.js.map +1 -0
- package/dist/core/remoto/registro-extension.d.ts +15 -0
- package/dist/core/remoto/registro-extension.d.ts.map +1 -0
- package/dist/core/remoto/registro-extension.js +17 -0
- package/dist/core/remoto/registro-extension.js.map +1 -0
- package/dist/core/remoto/tools.d.ts +28 -0
- package/dist/core/remoto/tools.d.ts.map +1 -0
- package/dist/core/remoto/tools.js +31 -0
- package/dist/core/remoto/tools.js.map +1 -0
- package/dist/core/resource-loader.d.ts +58 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +326 -8
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/revision/hallazgo.d.ts +51 -0
- package/dist/core/revision/hallazgo.d.ts.map +1 -0
- package/dist/core/revision/hallazgo.js +73 -0
- package/dist/core/revision/hallazgo.js.map +1 -0
- package/dist/core/revision/revisor.d.ts +81 -0
- package/dist/core/revision/revisor.d.ts.map +1 -0
- package/dist/core/revision/revisor.js +132 -0
- package/dist/core/revision/revisor.js.map +1 -0
- package/dist/core/revision/sarif.d.ts +30 -0
- package/dist/core/revision/sarif.d.ts.map +1 -0
- package/dist/core/revision/sarif.js +83 -0
- package/dist/core/revision/sarif.js.map +1 -0
- package/dist/core/scheduler/scheduler.d.ts +87 -0
- package/dist/core/scheduler/scheduler.d.ts.map +1 -0
- package/dist/core/scheduler/scheduler.js +178 -0
- package/dist/core/scheduler/scheduler.js.map +1 -0
- package/dist/core/sdk.d.ts +8 -0
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +11 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts +49 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts.map +1 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.js +77 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.js.map +1 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +2 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-diagnostics.d.ts +9 -0
- package/dist/core/settings-diagnostics.d.ts.map +1 -0
- package/dist/core/settings-diagnostics.js +21 -0
- package/dist/core/settings-diagnostics.js.map +1 -0
- package/dist/core/settings-manager.d.ts +156 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +255 -10
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +51 -33
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +2 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.d.ts +17 -0
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +13 -5
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/telemetria/otlp.d.ts +122 -0
- package/dist/core/telemetria/otlp.d.ts.map +1 -0
- package/dist/core/telemetria/otlp.js +373 -0
- package/dist/core/telemetria/otlp.js.map +1 -0
- package/dist/core/tools/coercion-argumentos.d.ts +48 -0
- package/dist/core/tools/coercion-argumentos.d.ts.map +1 -0
- package/dist/core/tools/coercion-argumentos.js +99 -0
- package/dist/core/tools/coercion-argumentos.js.map +1 -0
- package/dist/core/tools/edit-diff.d.ts +0 -12
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js +234 -12
- package/dist/core/tools/edit-diff.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +28 -5
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
- package/dist/core/tools/file-mutation-queue.js +5 -0
- package/dist/core/tools/file-mutation-queue.js.map +1 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +2 -2
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/json-tolerante.d.ts +30 -0
- package/dist/core/tools/json-tolerante.d.ts.map +1 -0
- package/dist/core/tools/json-tolerante.js +70 -0
- package/dist/core/tools/json-tolerante.js.map +1 -0
- package/dist/core/tools/project-memory-tool.d.ts.map +1 -1
- package/dist/core/tools/project-memory-tool.js +4 -1
- package/dist/core/tools/project-memory-tool.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +17 -0
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts +14 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js +17 -1
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/trust-manager.d.ts.map +1 -1
- package/dist/core/trust-manager.js +2 -1
- package/dist/core/trust-manager.js.map +1 -1
- package/dist/core/turno-vacio/detectar.d.ts +38 -0
- package/dist/core/turno-vacio/detectar.d.ts.map +1 -0
- package/dist/core/turno-vacio/detectar.js +66 -0
- package/dist/core/turno-vacio/detectar.js.map +1 -0
- package/dist/core/undo/journal.d.ts +57 -0
- package/dist/core/undo/journal.d.ts.map +1 -0
- package/dist/core/undo/journal.js +178 -0
- package/dist/core/undo/journal.js.map +1 -0
- package/dist/core/urls-internas/auditoria.d.ts +10 -0
- package/dist/core/urls-internas/auditoria.d.ts.map +1 -0
- package/dist/core/urls-internas/auditoria.js +42 -0
- package/dist/core/urls-internas/auditoria.js.map +1 -0
- package/dist/core/urls-internas/boveda.d.ts +13 -0
- package/dist/core/urls-internas/boveda.d.ts.map +1 -0
- package/dist/core/urls-internas/boveda.js +40 -0
- package/dist/core/urls-internas/boveda.js.map +1 -0
- package/dist/core/urls-internas/lector.d.ts +30 -0
- package/dist/core/urls-internas/lector.d.ts.map +1 -0
- package/dist/core/urls-internas/lector.js +56 -0
- package/dist/core/urls-internas/lector.js.map +1 -0
- package/dist/core/urls-internas/memoria.d.ts +11 -0
- package/dist/core/urls-internas/memoria.d.ts.map +1 -0
- package/dist/core/urls-internas/memoria.js +25 -0
- package/dist/core/urls-internas/memoria.js.map +1 -0
- package/dist/core/urls-internas/parse.d.ts +28 -0
- package/dist/core/urls-internas/parse.d.ts.map +1 -0
- package/dist/core/urls-internas/parse.js +32 -0
- package/dist/core/urls-internas/parse.js.map +1 -0
- package/dist/core/urls-internas/reglas.d.ts +10 -0
- package/dist/core/urls-internas/reglas.d.ts.map +1 -0
- package/dist/core/urls-internas/reglas.js +31 -0
- package/dist/core/urls-internas/reglas.js.map +1 -0
- package/dist/core/usage/aggregate.d.ts +68 -0
- package/dist/core/usage/aggregate.d.ts.map +1 -0
- package/dist/core/usage/aggregate.js +93 -0
- package/dist/core/usage/aggregate.js.map +1 -0
- package/dist/core/usage/cuota/anthropic.d.ts +10 -0
- package/dist/core/usage/cuota/anthropic.d.ts.map +1 -0
- package/dist/core/usage/cuota/anthropic.js +63 -0
- package/dist/core/usage/cuota/anthropic.js.map +1 -0
- package/dist/core/usage/cuota/cache.d.ts +20 -0
- package/dist/core/usage/cuota/cache.d.ts.map +1 -0
- package/dist/core/usage/cuota/cache.js +36 -0
- package/dist/core/usage/cuota/cache.js.map +1 -0
- package/dist/core/usage/cuota/github-copilot.d.ts +9 -0
- package/dist/core/usage/cuota/github-copilot.d.ts.map +1 -0
- package/dist/core/usage/cuota/github-copilot.js +67 -0
- package/dist/core/usage/cuota/github-copilot.js.map +1 -0
- package/dist/core/usage/cuota/google-gemini.d.ts +9 -0
- package/dist/core/usage/cuota/google-gemini.d.ts.map +1 -0
- package/dist/core/usage/cuota/google-gemini.js +72 -0
- package/dist/core/usage/cuota/google-gemini.js.map +1 -0
- package/dist/core/usage/cuota/index.d.ts +25 -0
- package/dist/core/usage/cuota/index.d.ts.map +1 -0
- package/dist/core/usage/cuota/index.js +50 -0
- package/dist/core/usage/cuota/index.js.map +1 -0
- package/dist/core/usage/cuota/openai-codex.d.ts +9 -0
- package/dist/core/usage/cuota/openai-codex.d.ts.map +1 -0
- package/dist/core/usage/cuota/openai-codex.js +59 -0
- package/dist/core/usage/cuota/openai-codex.js.map +1 -0
- package/dist/core/usage/cuota/openrouter.d.ts +10 -0
- package/dist/core/usage/cuota/openrouter.d.ts.map +1 -0
- package/dist/core/usage/cuota/openrouter.js +47 -0
- package/dist/core/usage/cuota/openrouter.js.map +1 -0
- package/dist/core/usage/cuota/tipos.d.ts +50 -0
- package/dist/core/usage/cuota/tipos.d.ts.map +1 -0
- package/dist/core/usage/cuota/tipos.js +25 -0
- package/dist/core/usage/cuota/tipos.js.map +1 -0
- package/dist/core/web/busqueda-nativa.d.ts +82 -0
- package/dist/core/web/busqueda-nativa.d.ts.map +1 -0
- package/dist/core/web/busqueda-nativa.js +163 -0
- package/dist/core/web/busqueda-nativa.js.map +1 -0
- package/dist/core/web/destino.d.ts +58 -0
- package/dist/core/web/destino.d.ts.map +1 -0
- package/dist/core/web/destino.js +127 -0
- package/dist/core/web/destino.js.map +1 -0
- package/dist/core/web/proveedores/brave.d.ts +6 -0
- package/dist/core/web/proveedores/brave.d.ts.map +1 -0
- package/dist/core/web/proveedores/brave.js +20 -0
- package/dist/core/web/proveedores/brave.js.map +1 -0
- package/dist/core/web/proveedores/claves.d.ts +19 -0
- package/dist/core/web/proveedores/claves.d.ts.map +1 -0
- package/dist/core/web/proveedores/claves.js +36 -0
- package/dist/core/web/proveedores/claves.js.map +1 -0
- package/dist/core/web/proveedores/duckduckgo.d.ts +3 -0
- package/dist/core/web/proveedores/duckduckgo.d.ts.map +1 -0
- package/dist/core/web/proveedores/duckduckgo.js +109 -0
- package/dist/core/web/proveedores/duckduckgo.js.map +1 -0
- package/dist/core/web/proveedores/ecosia.d.ts +3 -0
- package/dist/core/web/proveedores/ecosia.d.ts.map +1 -0
- package/dist/core/web/proveedores/ecosia.js +72 -0
- package/dist/core/web/proveedores/ecosia.js.map +1 -0
- package/dist/core/web/proveedores/exa.d.ts +6 -0
- package/dist/core/web/proveedores/exa.d.ts.map +1 -0
- package/dist/core/web/proveedores/exa.js +24 -0
- package/dist/core/web/proveedores/exa.js.map +1 -0
- package/dist/core/web/proveedores/mojeek.d.ts +3 -0
- package/dist/core/web/proveedores/mojeek.d.ts.map +1 -0
- package/dist/core/web/proveedores/mojeek.js +65 -0
- package/dist/core/web/proveedores/mojeek.js.map +1 -0
- package/dist/core/web/proveedores/navegador.d.ts +10 -0
- package/dist/core/web/proveedores/navegador.d.ts.map +1 -0
- package/dist/core/web/proveedores/navegador.js +13 -0
- package/dist/core/web/proveedores/navegador.js.map +1 -0
- package/dist/core/web/proveedores/registro.d.ts +43 -0
- package/dist/core/web/proveedores/registro.d.ts.map +1 -0
- package/dist/core/web/proveedores/registro.js +49 -0
- package/dist/core/web/proveedores/registro.js.map +1 -0
- package/dist/core/web/proveedores/searxng.d.ts +9 -0
- package/dist/core/web/proveedores/searxng.d.ts.map +1 -0
- package/dist/core/web/proveedores/searxng.js +17 -0
- package/dist/core/web/proveedores/searxng.js.map +1 -0
- package/dist/core/web/proveedores/serper.d.ts +9 -0
- package/dist/core/web/proveedores/serper.d.ts.map +1 -0
- package/dist/core/web/proveedores/serper.js +19 -0
- package/dist/core/web/proveedores/serper.js.map +1 -0
- package/dist/core/web/proveedores/tavily.d.ts +6 -0
- package/dist/core/web/proveedores/tavily.d.ts.map +1 -0
- package/dist/core/web/proveedores/tavily.js +19 -0
- package/dist/core/web/proveedores/tavily.js.map +1 -0
- package/dist/core/web/proveedores/tipos.d.ts +36 -0
- package/dist/core/web/proveedores/tipos.d.ts.map +1 -0
- package/dist/core/web/proveedores/tipos.js +10 -0
- package/dist/core/web/proveedores/tipos.js.map +1 -0
- package/dist/core/web/registro-red.d.ts +43 -0
- package/dist/core/web/registro-red.d.ts.map +1 -0
- package/dist/core/web/registro-red.js +86 -0
- package/dist/core/web/registro-red.js.map +1 -0
- package/dist/core/web/scrapers/cisa-kev.d.ts +10 -0
- package/dist/core/web/scrapers/cisa-kev.d.ts.map +1 -0
- package/dist/core/web/scrapers/cisa-kev.js +38 -0
- package/dist/core/web/scrapers/cisa-kev.js.map +1 -0
- package/dist/core/web/scrapers/crates-io.d.ts +11 -0
- package/dist/core/web/scrapers/crates-io.d.ts.map +1 -0
- package/dist/core/web/scrapers/crates-io.js +29 -0
- package/dist/core/web/scrapers/crates-io.js.map +1 -0
- package/dist/core/web/scrapers/docs-rs.d.ts +10 -0
- package/dist/core/web/scrapers/docs-rs.d.ts.map +1 -0
- package/dist/core/web/scrapers/docs-rs.js +35 -0
- package/dist/core/web/scrapers/docs-rs.js.map +1 -0
- package/dist/core/web/scrapers/github.d.ts +3 -0
- package/dist/core/web/scrapers/github.d.ts.map +1 -0
- package/dist/core/web/scrapers/github.js +72 -0
- package/dist/core/web/scrapers/github.js.map +1 -0
- package/dist/core/web/scrapers/go-pkg.d.ts +7 -0
- package/dist/core/web/scrapers/go-pkg.d.ts.map +1 -0
- package/dist/core/web/scrapers/go-pkg.js +30 -0
- package/dist/core/web/scrapers/go-pkg.js.map +1 -0
- package/dist/core/web/scrapers/hex.d.ts +6 -0
- package/dist/core/web/scrapers/hex.d.ts.map +1 -0
- package/dist/core/web/scrapers/hex.js +27 -0
- package/dist/core/web/scrapers/hex.js.map +1 -0
- package/dist/core/web/scrapers/maven.d.ts +8 -0
- package/dist/core/web/scrapers/maven.d.ts.map +1 -0
- package/dist/core/web/scrapers/maven.js +41 -0
- package/dist/core/web/scrapers/maven.js.map +1 -0
- package/dist/core/web/scrapers/mdn.d.ts +6 -0
- package/dist/core/web/scrapers/mdn.d.ts.map +1 -0
- package/dist/core/web/scrapers/mdn.js +28 -0
- package/dist/core/web/scrapers/mdn.js.map +1 -0
- package/dist/core/web/scrapers/npm.d.ts +11 -0
- package/dist/core/web/scrapers/npm.d.ts.map +1 -0
- package/dist/core/web/scrapers/npm.js +57 -0
- package/dist/core/web/scrapers/npm.js.map +1 -0
- package/dist/core/web/scrapers/nuget.d.ts +8 -0
- package/dist/core/web/scrapers/nuget.d.ts.map +1 -0
- package/dist/core/web/scrapers/nuget.js +22 -0
- package/dist/core/web/scrapers/nuget.js.map +1 -0
- package/dist/core/web/scrapers/nvd.d.ts +7 -0
- package/dist/core/web/scrapers/nvd.d.ts.map +1 -0
- package/dist/core/web/scrapers/nvd.js +37 -0
- package/dist/core/web/scrapers/nvd.js.map +1 -0
- package/dist/core/web/scrapers/pypi.d.ts +6 -0
- package/dist/core/web/scrapers/pypi.d.ts.map +1 -0
- package/dist/core/web/scrapers/pypi.js +31 -0
- package/dist/core/web/scrapers/pypi.js.map +1 -0
- package/dist/core/web/scrapers/registro.d.ts +13 -0
- package/dist/core/web/scrapers/registro.d.ts.map +1 -0
- package/dist/core/web/scrapers/registro.js +65 -0
- package/dist/core/web/scrapers/registro.js.map +1 -0
- package/dist/core/web/scrapers/rubygems.d.ts +6 -0
- package/dist/core/web/scrapers/rubygems.d.ts.map +1 -0
- package/dist/core/web/scrapers/rubygems.js +23 -0
- package/dist/core/web/scrapers/rubygems.js.map +1 -0
- package/dist/core/web/scrapers/stackoverflow.d.ts +3 -0
- package/dist/core/web/scrapers/stackoverflow.d.ts.map +1 -0
- package/dist/core/web/scrapers/stackoverflow.js +46 -0
- package/dist/core/web/scrapers/stackoverflow.js.map +1 -0
- package/dist/core/web/scrapers/tipos.d.ts +42 -0
- package/dist/core/web/scrapers/tipos.d.ts.map +1 -0
- package/dist/core/web/scrapers/tipos.js +23 -0
- package/dist/core/web/scrapers/tipos.js.map +1 -0
- package/dist/core/web/texto.d.ts +10 -0
- package/dist/core/web/texto.d.ts.map +1 -0
- package/dist/core/web/texto.js +26 -0
- package/dist/core/web/texto.js.map +1 -0
- package/dist/core/web/tools.d.ts +91 -0
- package/dist/core/web/tools.d.ts.map +1 -0
- package/dist/core/web/tools.js +304 -0
- package/dist/core/web/tools.js.map +1 -0
- package/dist/core/wiki/almacen.d.ts +33 -0
- package/dist/core/wiki/almacen.d.ts.map +1 -0
- package/dist/core/wiki/almacen.js +93 -0
- package/dist/core/wiki/almacen.js.map +1 -0
- package/dist/core/wiki/citas.d.ts +111 -0
- package/dist/core/wiki/citas.d.ts.map +1 -0
- package/dist/core/wiki/citas.js +146 -0
- package/dist/core/wiki/citas.js.map +1 -0
- package/dist/core/workflows/agent-runner.d.ts +88 -0
- package/dist/core/workflows/agent-runner.d.ts.map +1 -0
- package/dist/core/workflows/agent-runner.js +312 -0
- package/dist/core/workflows/agent-runner.js.map +1 -0
- package/dist/core/workflows/builtins.d.ts +41 -0
- package/dist/core/workflows/builtins.d.ts.map +1 -0
- package/dist/core/workflows/builtins.js +283 -0
- package/dist/core/workflows/builtins.js.map +1 -0
- package/dist/core/workflows/contrato/esquema.d.ts +32 -0
- package/dist/core/workflows/contrato/esquema.d.ts.map +1 -0
- package/dist/core/workflows/contrato/esquema.js +25 -0
- package/dist/core/workflows/contrato/esquema.js.map +1 -0
- package/dist/core/workflows/contrato/reparar-argumentos.d.ts +69 -0
- package/dist/core/workflows/contrato/reparar-argumentos.d.ts.map +1 -0
- package/dist/core/workflows/contrato/reparar-argumentos.js +117 -0
- package/dist/core/workflows/contrato/reparar-argumentos.js.map +1 -0
- package/dist/core/workflows/contrato/validador.d.ts +30 -0
- package/dist/core/workflows/contrato/validador.d.ts.map +1 -0
- package/dist/core/workflows/contrato/validador.js +56 -0
- package/dist/core/workflows/contrato/validador.js.map +1 -0
- package/dist/core/workflows/contrato/yield.d.ts +65 -0
- package/dist/core/workflows/contrato/yield.d.ts.map +1 -0
- package/dist/core/workflows/contrato/yield.js +80 -0
- package/dist/core/workflows/contrato/yield.js.map +1 -0
- package/dist/core/workflows/goal-engine/engine.d.ts +151 -0
- package/dist/core/workflows/goal-engine/engine.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/engine.js +503 -0
- package/dist/core/workflows/goal-engine/engine.js.map +1 -0
- package/dist/core/workflows/goal-engine/errors.d.ts +7 -0
- package/dist/core/workflows/goal-engine/errors.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/errors.js +9 -0
- package/dist/core/workflows/goal-engine/errors.js.map +1 -0
- package/dist/core/workflows/goal-engine/index.d.ts +13 -0
- package/dist/core/workflows/goal-engine/index.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/index.js +8 -0
- package/dist/core/workflows/goal-engine/index.js.map +1 -0
- package/dist/core/workflows/goal-engine/persistence.d.ts +31 -0
- package/dist/core/workflows/goal-engine/persistence.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/persistence.js +145 -0
- package/dist/core/workflows/goal-engine/persistence.js.map +1 -0
- package/dist/core/workflows/goal-engine/prompts.d.ts +37 -0
- package/dist/core/workflows/goal-engine/prompts.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/prompts.js +131 -0
- package/dist/core/workflows/goal-engine/prompts.js.map +1 -0
- package/dist/core/workflows/goal-engine/state.d.ts +41 -0
- package/dist/core/workflows/goal-engine/state.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/state.js +397 -0
- package/dist/core/workflows/goal-engine/state.js.map +1 -0
- package/dist/core/workflows/goal-engine/tools.d.ts +31 -0
- package/dist/core/workflows/goal-engine/tools.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/tools.js +211 -0
- package/dist/core/workflows/goal-engine/tools.js.map +1 -0
- package/dist/core/workflows/goal-engine/types.d.ts +286 -0
- package/dist/core/workflows/goal-engine/types.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/types.js +17 -0
- package/dist/core/workflows/goal-engine/types.js.map +1 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts +23 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts.map +1 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.js +72 -0
- package/dist/core/workflows/goal-engine/worktree-fingerprint.js.map +1 -0
- package/dist/core/workflows/graph-sync.d.ts +67 -0
- package/dist/core/workflows/graph-sync.d.ts.map +1 -0
- package/dist/core/workflows/graph-sync.js +188 -0
- package/dist/core/workflows/graph-sync.js.map +1 -0
- package/dist/core/workflows/graph.d.ts +143 -0
- package/dist/core/workflows/graph.d.ts.map +1 -0
- package/dist/core/workflows/graph.js +319 -0
- package/dist/core/workflows/graph.js.map +1 -0
- package/dist/core/workflows/index.d.ts +26 -0
- package/dist/core/workflows/index.d.ts.map +1 -0
- package/dist/core/workflows/index.js +18 -0
- package/dist/core/workflows/index.js.map +1 -0
- package/dist/core/workflows/journal.d.ts +68 -0
- package/dist/core/workflows/journal.d.ts.map +1 -0
- package/dist/core/workflows/journal.js +83 -0
- package/dist/core/workflows/journal.js.map +1 -0
- package/dist/core/workflows/manager.d.ts +122 -0
- package/dist/core/workflows/manager.d.ts.map +1 -0
- package/dist/core/workflows/manager.js +351 -0
- package/dist/core/workflows/manager.js.map +1 -0
- package/dist/core/workflows/resolve-script.d.ts +35 -0
- package/dist/core/workflows/resolve-script.d.ts.map +1 -0
- package/dist/core/workflows/resolve-script.js +66 -0
- package/dist/core/workflows/resolve-script.js.map +1 -0
- package/dist/core/workflows/runtime.d.ts +62 -0
- package/dist/core/workflows/runtime.d.ts.map +1 -0
- package/dist/core/workflows/runtime.js +380 -0
- package/dist/core/workflows/runtime.js.map +1 -0
- package/dist/core/workflows/save-as-skill.d.ts +27 -0
- package/dist/core/workflows/save-as-skill.d.ts.map +1 -0
- package/dist/core/workflows/save-as-skill.js +54 -0
- package/dist/core/workflows/save-as-skill.js.map +1 -0
- package/dist/core/workflows/shared-store.d.ts +31 -0
- package/dist/core/workflows/shared-store.d.ts.map +1 -0
- package/dist/core/workflows/shared-store.js +80 -0
- package/dist/core/workflows/shared-store.js.map +1 -0
- package/dist/core/workflows/subagent-host.d.ts +50 -0
- package/dist/core/workflows/subagent-host.d.ts.map +1 -0
- package/dist/core/workflows/subagent-host.js +225 -0
- package/dist/core/workflows/subagent-host.js.map +1 -0
- package/dist/core/workflows/tool-workflow.d.ts +22 -0
- package/dist/core/workflows/tool-workflow.d.ts.map +1 -0
- package/dist/core/workflows/tool-workflow.js +120 -0
- package/dist/core/workflows/tool-workflow.js.map +1 -0
- package/dist/core/workflows/types.d.ts +191 -0
- package/dist/core/workflows/types.d.ts.map +1 -0
- package/dist/core/workflows/types.js +26 -0
- package/dist/core/workflows/types.js.map +1 -0
- package/dist/core/workflows/worktree.d.ts +42 -0
- package/dist/core/workflows/worktree.d.ts.map +1 -0
- package/dist/core/workflows/worktree.js +107 -0
- package/dist/core/workflows/worktree.js.map +1 -0
- package/dist/extensions/llama/index.d.ts.map +1 -1
- package/dist/extensions/llama/index.js +2 -0
- package/dist/extensions/llama/index.js.map +1 -1
- package/dist/extensions/llama/provider.d.ts.map +1 -1
- package/dist/extensions/llama/provider.js +6 -2
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/extensions/remoto/index.d.ts +22 -0
- package/dist/extensions/remoto/index.d.ts.map +1 -0
- package/dist/extensions/remoto/index.js +54 -0
- package/dist/extensions/remoto/index.js.map +1 -0
- package/dist/index.d.ts +1 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -13
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +4 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +26 -15
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +4 -3
- package/dist/migrations.js.map +1 -1
- package/dist/modes/acp/acp-mode.d.ts +42 -0
- package/dist/modes/acp/acp-mode.d.ts.map +1 -0
- package/dist/modes/acp/acp-mode.js +190 -0
- package/dist/modes/acp/acp-mode.js.map +1 -0
- package/dist/modes/acp/events.d.ts +74 -0
- package/dist/modes/acp/events.d.ts.map +1 -0
- package/dist/modes/acp/events.js +116 -0
- package/dist/modes/acp/events.js.map +1 -0
- package/dist/modes/interactive/components/home-screen.d.ts.map +1 -1
- package/dist/modes/interactive/components/home-screen.js +2 -2
- package/dist/modes/interactive/components/home-screen.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +9 -3
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +56 -12
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/prompt-optimization.d.ts +16 -0
- package/dist/modes/interactive/components/prompt-optimization.d.ts.map +1 -0
- package/dist/modes/interactive/components/prompt-optimization.js +46 -0
- package/dist/modes/interactive/components/prompt-optimization.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +19 -2
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +180 -56
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
- package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-submenu.js +165 -0
- package/dist/modes/interactive/components/settings-submenu.js.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts +15 -3
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +74 -17
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/external-editor.d.ts.map +1 -1
- package/dist/modes/interactive/external-editor.js +2 -1
- package/dist/modes/interactive/external-editor.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +21 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +709 -75
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +4 -3
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/json-event.d.ts +16 -13
- package/dist/modes/json-event.d.ts.map +1 -1
- package/dist/modes/json-event.js +20 -6
- package/dist/modes/json-event.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +11 -0
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +173 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +29 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +27 -5
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/server/attach.d.ts +56 -0
- package/dist/server/attach.d.ts.map +1 -0
- package/dist/server/attach.js +130 -0
- package/dist/server/attach.js.map +1 -0
- package/dist/server/extension-ops.d.ts +40 -0
- package/dist/server/extension-ops.d.ts.map +1 -0
- package/dist/server/extension-ops.js +146 -0
- package/dist/server/extension-ops.js.map +1 -0
- package/dist/server/pi-server-service.d.ts +85 -0
- package/dist/server/pi-server-service.d.ts.map +1 -0
- package/dist/server/pi-server-service.js +213 -0
- package/dist/server/pi-server-service.js.map +1 -0
- package/dist/server/scheduler-tick.d.ts +32 -0
- package/dist/server/scheduler-tick.d.ts.map +1 -0
- package/dist/server/scheduler-tick.js +47 -0
- package/dist/server/scheduler-tick.js.map +1 -0
- package/dist/server/serve.d.ts +25 -0
- package/dist/server/serve.d.ts.map +1 -0
- package/dist/server/serve.js +83 -0
- package/dist/server/serve.js.map +1 -0
- package/dist/server/transcript.d.ts +38 -0
- package/dist/server/transcript.d.ts.map +1 -0
- package/dist/server/transcript.js +176 -0
- package/dist/server/transcript.js.map +1 -0
- package/dist/skills/ada-engine/SKILL.md +153 -0
- package/dist/skills/skill-creator/SKILL.md +90 -0
- package/dist/telegram/api.d.ts +75 -0
- package/dist/telegram/api.d.ts.map +1 -0
- package/dist/telegram/api.js +104 -0
- package/dist/telegram/api.js.map +1 -0
- package/dist/telegram/bridge.d.ts +85 -0
- package/dist/telegram/bridge.d.ts.map +1 -0
- package/dist/telegram/bridge.js +182 -0
- package/dist/telegram/bridge.js.map +1 -0
- package/dist/telegram/journal.d.ts +67 -0
- package/dist/telegram/journal.d.ts.map +1 -0
- package/dist/telegram/journal.js +119 -0
- package/dist/telegram/journal.js.map +1 -0
- package/dist/telegram/servidor.d.ts +15 -0
- package/dist/telegram/servidor.d.ts.map +1 -0
- package/dist/telegram/servidor.js +74 -0
- package/dist/telegram/servidor.js.map +1 -0
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +2 -1
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/management-http.d.ts +5 -3
- package/dist/utils/management-http.d.ts.map +1 -1
- package/dist/utils/management-http.js +14 -10
- package/dist/utils/management-http.js.map +1 -1
- package/dist/utils/shell.d.ts +11 -0
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +11 -0
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/text.d.ts +8 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +9 -0
- package/dist/utils/text.js.map +1 -0
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +29 -1
- package/dist/utils/version-check.js.map +1 -1
- package/docs/compaction.md +25 -10
- package/docs/compliance.md +241 -0
- package/docs/containerization.md +24 -24
- package/docs/custom-provider.md +15 -12
- package/docs/development.md +47 -10
- package/docs/docs.json +14 -2
- package/docs/environment-variables.md +20 -17
- package/docs/extensions.md +62 -51
- package/docs/index.md +15 -21
- package/docs/json.md +10 -5
- package/docs/keybindings.md +5 -5
- package/docs/llama-cpp.md +9 -7
- package/docs/models.md +18 -12
- package/docs/packages.md +45 -45
- package/docs/prompt-templates.md +5 -5
- package/docs/providers.md +12 -12
- package/docs/quickstart.md +39 -39
- package/docs/rpc.md +21 -15
- package/docs/sdk.md +38 -38
- package/docs/security.md +26 -21
- package/docs/session-format.md +7 -7
- package/docs/sessions.md +14 -14
- package/docs/settings.md +47 -22
- package/docs/shell-aliases.md +2 -2
- package/docs/skills.md +14 -13
- package/docs/terminal-setup.md +14 -14
- package/docs/termux.md +7 -7
- package/docs/themes.md +11 -11
- package/docs/tmux.md +4 -4
- package/docs/tui.md +3 -3
- package/docs/usage.md +54 -54
- package/docs/windows.md +2 -2
- package/examples/extensions/border-status-editor.ts +1 -1
- package/examples/extensions/git-checkpoint.ts +2 -2
- package/examples/extensions/notify.ts +3 -1
- package/examples/extensions/subagent/README.md +1 -1
- package/examples/extensions/subagent/index.ts +6 -1
- package/examples/extensions/titlebar-spinner.ts +1 -1
- package/examples/rpc-extension-ui.ts +1 -1
- package/examples/sdk/06-extensions.ts +1 -1
- package/examples/sdk/12-full-control.ts +9 -0
- package/examples/sdk/README.md +1 -1
- package/npm-shrinkwrap.json +35 -261
- package/package.json +9 -3
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Aprobación por herramienta.
|
|
3
|
+
*
|
|
4
|
+
* Antes de esto no había política ninguna: `beforeToolCall` disparaba los hooks
|
|
5
|
+
* del usuario y las extensiones, y `permissions.level` —que existe en settings
|
|
6
|
+
* desde siempre— solo lo leían los propios hooks. Ninguna tool se consultaba
|
|
7
|
+
* contra él. Es decir, el nivel de permisos no gobernaba los permisos.
|
|
8
|
+
*
|
|
9
|
+
* El orden de las comprobaciones ES la propiedad de seguridad, y por eso está
|
|
10
|
+
* escrito de arriba abajo en `decidir()` y no repartido:
|
|
11
|
+
*
|
|
12
|
+
* 1. Rutas protegidas — denegado SIEMPRE, incluso en `yolo`, no configurable
|
|
13
|
+
* 2. Deny del usuario — denegado SIEMPRE, incluso en `yolo`
|
|
14
|
+
* 3. Modo de la sesión — plan / manual / auto / yolo
|
|
15
|
+
*
|
|
16
|
+
* Que 1 y 2 vayan por delante del modo es lo que hace que el argumento de
|
|
17
|
+
* cumplimiento se sostenga: una política que el propio agente puede desactivar
|
|
18
|
+
* pidiendo `yolo` no es una política, es una sugerencia.
|
|
19
|
+
*
|
|
20
|
+
* Lo desconocido cuenta como ejecución. Una tool de MCP o de una extensión que
|
|
21
|
+
* nadie ha clasificado no puede colarse por el carril de lectura por no estar
|
|
22
|
+
* en ninguna lista.
|
|
23
|
+
*/
|
|
24
|
+
import { readFileSync } from "node:fs";
|
|
25
|
+
import { homedir } from "node:os";
|
|
26
|
+
import { CONFIG_DIR_NAME } from "../../config.js";
|
|
27
|
+
import { DIR_INDICE, DIR_SESION } from "../audit/rutas.js";
|
|
28
|
+
import { suplantadaPor } from "../extensiones/suplantacion.js";
|
|
29
|
+
import { marcaDeGenerado, motivoDeGenerado } from "./generados.js";
|
|
30
|
+
import { politicaDeMaquina, recortarModo } from "./politica-de-maquina.js";
|
|
31
|
+
/**
|
|
32
|
+
* Segmento `.../<CONFIG_DIR_NAME>/agent/` de CUALQUIER instalación de Ada,
|
|
33
|
+
* no solo `agentDir` (que es la de ESTE equipo).
|
|
34
|
+
*
|
|
35
|
+
* Con `--remoto` los argumentos de `read`/`write`/`bash` pueden nombrar un
|
|
36
|
+
* `auth.json` o un `vault/` que viven en OTRA máquina — el destino de SSH,
|
|
37
|
+
* el contenedor de Docker, la distro de WSL — con su propio `$HOME` y por
|
|
38
|
+
* tanto un `agentDir` que `rutaProtegida` nunca conoce. Comprobar el
|
|
39
|
+
* segmento en vez del prefijo completo protege ambos sin necesitar el
|
|
40
|
+
* `agentDir` del destino, que esta política no tiene forma de calcular.
|
|
41
|
+
*/
|
|
42
|
+
const SEGMENTO_AGENTE_ADA = `/${CONFIG_DIR_NAME}/agent/`;
|
|
43
|
+
/** Tools que solo miran. */
|
|
44
|
+
const LECTURA = new Set([
|
|
45
|
+
"read",
|
|
46
|
+
"ls",
|
|
47
|
+
"find",
|
|
48
|
+
"grep",
|
|
49
|
+
"ast_search",
|
|
50
|
+
"session_search",
|
|
51
|
+
"web_fetch",
|
|
52
|
+
"web_search",
|
|
53
|
+
"memory_search",
|
|
54
|
+
"memory_list",
|
|
55
|
+
"graph_query",
|
|
56
|
+
"ask_user_question",
|
|
57
|
+
"todo_read",
|
|
58
|
+
]);
|
|
59
|
+
/** Tools que cambian estado nuestro, pero no ejecutan nada del sistema. */
|
|
60
|
+
const ESCRITURA = new Set([
|
|
61
|
+
"edit",
|
|
62
|
+
"write",
|
|
63
|
+
"ast_edit",
|
|
64
|
+
"memory_add",
|
|
65
|
+
"memory_replace",
|
|
66
|
+
"memory_remove",
|
|
67
|
+
"update_project_memory",
|
|
68
|
+
"scratchpad",
|
|
69
|
+
"todo",
|
|
70
|
+
"todo_write",
|
|
71
|
+
"graph_add",
|
|
72
|
+
]);
|
|
73
|
+
/**
|
|
74
|
+
* ¿Este nombre es de una tool NUESTRA cuyo nivel de confianza da esta política?
|
|
75
|
+
*
|
|
76
|
+
* Lo consulta el registro de extensiones para saber si `registerTool` está
|
|
77
|
+
* suplantando una builtin. `bash` va aparte porque no está en ninguna de las dos
|
|
78
|
+
* listas —lo desconocido ya es ejecución— pero suplantarlo importa igual: el
|
|
79
|
+
* usuario tiene que ver que el `bash` que corre no es el nuestro.
|
|
80
|
+
*/
|
|
81
|
+
export function esNombreDeToolNuestra(tool) {
|
|
82
|
+
return LECTURA.has(tool) || ESCRITURA.has(tool) || tool === "bash";
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* El nivel de una herramienta. Lo que no está clasificado es ejecución.
|
|
86
|
+
*
|
|
87
|
+
* Falla cerrado a propósito: el coste de equivocarse hacia arriba es una
|
|
88
|
+
* pregunta de más; hacia abajo, es una tool desconocida corriendo sola.
|
|
89
|
+
*/
|
|
90
|
+
export function nivelDe(tool) {
|
|
91
|
+
// Una builtin suplantada por una extensión NO hereda su nivel.
|
|
92
|
+
//
|
|
93
|
+
// Comprobado ejecutando: una extensión registra `read`, el loader la pone
|
|
94
|
+
// encima de la nuestra y el modelo sigue creyendo que llama a la de Ada. Con
|
|
95
|
+
// `LECTURA.has("read")` por delante, ese `read` —que puede hacer lo que
|
|
96
|
+
// quiera— se permitía siempre y en cualquier modo. Devolver "ejecucion" lo
|
|
97
|
+
// devuelve al carril de lo desconocido, que es lo que es.
|
|
98
|
+
if (suplantadaPor(tool))
|
|
99
|
+
return "ejecucion";
|
|
100
|
+
if (LECTURA.has(tool))
|
|
101
|
+
return "lectura";
|
|
102
|
+
if (ESCRITURA.has(tool))
|
|
103
|
+
return "escritura";
|
|
104
|
+
return "ejecucion";
|
|
105
|
+
}
|
|
106
|
+
/** Un directorio protegido aparece como segmento completo de la ruta. */
|
|
107
|
+
function contieneSegmento(texto, segmento) {
|
|
108
|
+
return texto.includes(`/${segmento}/`);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* ¿El texto nombra el directorio `dir` colgado de `base`, con barra final o sin
|
|
112
|
+
* ella?
|
|
113
|
+
*
|
|
114
|
+
* La comprobación anterior solo miraba `base/dir/`, y por ahí se colaba justo el
|
|
115
|
+
* caso peor. Comprobado ejecutando `decidir`:
|
|
116
|
+
*
|
|
117
|
+
* rm -rf <agentDir>/vault/ -> denegada ruta-protegida
|
|
118
|
+
* rm -rf <agentDir>/vault -> PERMITIDA modo-yolo
|
|
119
|
+
*
|
|
120
|
+
* Es decir, el borrado entero del vault con un comando, porque el nombre de un
|
|
121
|
+
* directorio no lleva barra al final cuando se lo pasas a `rm`. Se arregla aquí,
|
|
122
|
+
* en la comprobación compartida, y no en cada llamada: la misma trampa valía
|
|
123
|
+
* para el vault, para el libro y para cualquier directorio que se añada mañana.
|
|
124
|
+
*
|
|
125
|
+
* El caso sin barra se mide sobre el token y con el final exacto para no
|
|
126
|
+
* llevarse por delante `vault-ejemplo` ni `sesiones/`. Se recorta la puntuación
|
|
127
|
+
* de shell del final porque `rm -rf x/vault;` y `rm -rf x/vault)` son el mismo
|
|
128
|
+
* comando con otro adorno.
|
|
129
|
+
*/
|
|
130
|
+
function nombraDirectorio(texto, base, dir) {
|
|
131
|
+
if (texto.includes(`${base}${dir}/`))
|
|
132
|
+
return true;
|
|
133
|
+
return texto.split(/[\s"'`]+/).some((t) => t.replace(/[;,)&|>]+$/, "").endsWith(`${base}${dir}`));
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Deja la ruta en la forma con la que se compara.
|
|
137
|
+
*
|
|
138
|
+
* Sin esto la política era papel mojado, y se descubrió EJECUTANDO el producto:
|
|
139
|
+
* el modelo escribe `~/.ada/agent/vault/…`, la tool expande la tilde por dentro
|
|
140
|
+
* y abre el fichero, mientras que la política —que solo ve los argumentos
|
|
141
|
+
* crudos— comparaba contra la ruta absoluta y no reconocía nada. El vault se
|
|
142
|
+
* leyó entero con la política activada y todas las pruebas en verde, porque
|
|
143
|
+
* todas usaban rutas absolutas.
|
|
144
|
+
*
|
|
145
|
+
* Se sustituye en TODO el texto y no solo al principio porque `bash` recibe una
|
|
146
|
+
* línea entera, donde el `~` va detrás del comando.
|
|
147
|
+
*/
|
|
148
|
+
function normalizar(texto, home) {
|
|
149
|
+
return texto.replaceAll("$HOME/", `${home}/`).replaceAll("~/", `${home}/`);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Si el texto nombra algo que no se puede tocar, devuelve por qué.
|
|
153
|
+
*
|
|
154
|
+
* Se mira el texto y no una "ruta" porque los argumentos no tienen un nombre
|
|
155
|
+
* común (`path`, `file_path`, `command`…) y porque `bash` recibe una línea de
|
|
156
|
+
* shell entera. Para `bash` esto es MEJOR ESFUERZO y hay que decirlo: quien
|
|
157
|
+
* contiene de verdad un comando es el sandbox del sistema operativo, no esta
|
|
158
|
+
* comprobación. Aquí se para lo evidente, que es lo que hace un agente
|
|
159
|
+
* despistado; lo deliberado lo para el kernel.
|
|
160
|
+
*/
|
|
161
|
+
function rutaProtegida(texto, agentDir, escribiendo) {
|
|
162
|
+
if (nombraDirectorio(texto, `${agentDir}/`, "vault"))
|
|
163
|
+
return "el vault cifrado";
|
|
164
|
+
// Generaliza lo de arriba a un vault de Ada en OTRA máquina (ver
|
|
165
|
+
// `SEGMENTO_AGENTE_ADA`): mismo motivo, sin depender del `agentDir` local.
|
|
166
|
+
if (nombraDirectorio(texto, SEGMENTO_AGENTE_ADA, "vault"))
|
|
167
|
+
return "el vault cifrado (de este equipo o de un destino remoto)";
|
|
168
|
+
// El libro de auditoría y su índice.
|
|
169
|
+
//
|
|
170
|
+
// Agujero real, y el más grave que hemos tenido: la política protegía el
|
|
171
|
+
// vault y el `auth.json` y dejaba al agente escribir y BORRAR libremente en
|
|
172
|
+
// `<agentDir>/sesion/`, que es donde está el registro de lo que ha hecho. Es
|
|
173
|
+
// decir, el sujeto de la auditoría tenía permiso de escritura sobre la
|
|
174
|
+
// auditoría. Comprobado ejecutando `decidir`: `rm -rf <agentDir>/sesion/`
|
|
175
|
+
// salía `permitida`.
|
|
176
|
+
//
|
|
177
|
+
// Denegado también para LEER, igual que el vault: el libro guarda hashes y
|
|
178
|
+
// rutas de todo lo que ha pasado por la sesión, y no hay ninguna tarea
|
|
179
|
+
// legítima del agente que necesite leerlo por el sistema de ficheros. Quien
|
|
180
|
+
// tiene que verlo lo ve por `ada-cli audit show`, por `audit://` o por el
|
|
181
|
+
// panel, que no pasan por esta política porque no son el agente.
|
|
182
|
+
for (const dir of [DIR_SESION, DIR_INDICE]) {
|
|
183
|
+
if (nombraDirectorio(texto, `${agentDir}/`, dir))
|
|
184
|
+
return "el libro de auditoría de la sesión";
|
|
185
|
+
if (nombraDirectorio(texto, SEGMENTO_AGENTE_ADA, dir)) {
|
|
186
|
+
return "el libro de auditoría de la sesión (de este equipo o de un destino remoto)";
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
// Las credenciales de los proveedores, que viven EN CLARO en `auth.json`.
|
|
190
|
+
//
|
|
191
|
+
// Agujero real y propio: la primera versión de esta política protegía el
|
|
192
|
+
// vault, las claves SSH, AWS y los `.env`, y dejaba abierto justo el fichero
|
|
193
|
+
// donde están las claves con las que corre el agente. Se comprobó
|
|
194
|
+
// ejecutando el producto y las leyó todas. Proteger la caja fuerte y dejar
|
|
195
|
+
// las llaves encima no protege nada.
|
|
196
|
+
//
|
|
197
|
+
// Se compara con el nombre de fichero COMPLETO para no llevarse por delante
|
|
198
|
+
// `auth.json.example`, `auth-storage.ts` ni `auth.md`, que son código y
|
|
199
|
+
// documentación que el agente sí tiene que poder leer.
|
|
200
|
+
for (const parte of texto.split(/[\s"'`]+/)) {
|
|
201
|
+
const base = parte.slice(parte.lastIndexOf("/") + 1);
|
|
202
|
+
if (parte.includes(`${agentDir}/`) && base === "auth.json")
|
|
203
|
+
return "las credenciales de los proveedores";
|
|
204
|
+
// Igual, pero para el `auth.json` de un Ada corriendo en el DESTINO de
|
|
205
|
+
// `--remoto`: no comparte `agentDir` con este equipo, así que el
|
|
206
|
+
// segmento genérico es la única forma de reconocerlo.
|
|
207
|
+
if (parte.includes(SEGMENTO_AGENTE_ADA) && base === "auth.json") {
|
|
208
|
+
return "las credenciales de los proveedores (de este equipo o de un destino remoto)";
|
|
209
|
+
}
|
|
210
|
+
// Y las de las otras herramientas: están en el mismo portátil y sirven
|
|
211
|
+
// para lo mismo. Si el agente no ve las nuestras, no hay motivo para que
|
|
212
|
+
// vea las de Claude Code, Codex, gh, Docker o kubectl.
|
|
213
|
+
if (base === ".credentials.json" || base === ".netrc")
|
|
214
|
+
return "credenciales de otra herramienta";
|
|
215
|
+
if (contieneSegmento(parte, ".codex") && base === "auth.json")
|
|
216
|
+
return "las credenciales de Codex";
|
|
217
|
+
if (contieneSegmento(parte, "gh") && base === "hosts.yml")
|
|
218
|
+
return "las credenciales de GitHub CLI";
|
|
219
|
+
if (contieneSegmento(parte, ".docker") && base === "config.json")
|
|
220
|
+
return "las credenciales de Docker";
|
|
221
|
+
if (contieneSegmento(parte, ".kube") && base === "config")
|
|
222
|
+
return "el acceso al clúster de Kubernetes";
|
|
223
|
+
}
|
|
224
|
+
if (contieneSegmento(texto, ".ssh"))
|
|
225
|
+
return "las claves SSH";
|
|
226
|
+
if (contieneSegmento(texto, ".gnupg"))
|
|
227
|
+
return "las claves GPG";
|
|
228
|
+
if (contieneSegmento(texto, ".aws"))
|
|
229
|
+
return "las credenciales de AWS";
|
|
230
|
+
// `.env` como nombre de fichero completo, no como prefijo: `.environment.ts`
|
|
231
|
+
// es código normal y denegarlo dejaría medio proyecto ilegible sin que nadie
|
|
232
|
+
// entendiera por qué.
|
|
233
|
+
for (const parte of texto.split(/[\s"'`]+/)) {
|
|
234
|
+
const base = parte.slice(parte.lastIndexOf("/") + 1);
|
|
235
|
+
if (base === ".env" || base.startsWith(".env."))
|
|
236
|
+
return "un fichero de entorno";
|
|
237
|
+
}
|
|
238
|
+
// La configuración del agente se puede LEER pero no escribir. El
|
|
239
|
+
// CVE-2026-25725 de Claude Code fue exactamente esto: código dentro del
|
|
240
|
+
// sandbox creaba un settings.json e inyectaba hooks `SessionStart` que
|
|
241
|
+
// corrían FUERA. Nuestro settings.json también ejecuta hooks.
|
|
242
|
+
if (escribiendo && (texto.includes(`${agentDir}/settings.json`) || texto.includes(`${agentDir}/hooks`))) {
|
|
243
|
+
return "la configuración del agente, que ejecuta hooks";
|
|
244
|
+
}
|
|
245
|
+
return null;
|
|
246
|
+
}
|
|
247
|
+
/** Todas las cadenas de los argumentos, a cualquier profundidad. */
|
|
248
|
+
function cadenasDe(valor, acumulado = []) {
|
|
249
|
+
if (typeof valor === "string")
|
|
250
|
+
acumulado.push(valor);
|
|
251
|
+
else if (Array.isArray(valor))
|
|
252
|
+
for (const v of valor)
|
|
253
|
+
cadenasDe(v, acumulado);
|
|
254
|
+
else if (valor && typeof valor === "object")
|
|
255
|
+
for (const v of Object.values(valor))
|
|
256
|
+
cadenasDe(v, acumulado);
|
|
257
|
+
return acumulado;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Lee `permissions.denied` de la configuración, tolerando que no exista.
|
|
261
|
+
*
|
|
262
|
+
* El bloque `permissions` es un `Record<string, unknown>` en settings, así que
|
|
263
|
+
* lo que hay ahí no está tipado y puede ser cualquier cosa: se filtra a cadenas
|
|
264
|
+
* en vez de confiar. Una entrada mal escrita tiene que perderse ella sola, no
|
|
265
|
+
* tumbar la política entera y con ella la sesión.
|
|
266
|
+
*/
|
|
267
|
+
export function leerDenegadas(config) {
|
|
268
|
+
const lista = config?.permissions?.denied;
|
|
269
|
+
return Array.isArray(lista) ? lista.filter((x) => typeof x === "string") : [];
|
|
270
|
+
}
|
|
271
|
+
export function decidir({ tool, args, modo, agentDir, home, denegadas, maquina: maquinaDada, }) {
|
|
272
|
+
const casa = home ?? homedir();
|
|
273
|
+
const nivel = nivelDe(tool);
|
|
274
|
+
// 1. Rutas protegidas. Por delante de todo lo demás, incluido `yolo`.
|
|
275
|
+
// `ejecucion` cuenta como escritura: un `bash` puede reescribir el
|
|
276
|
+
// settings.json igual de bien que un `write`.
|
|
277
|
+
const escribiendo = nivel !== "lectura";
|
|
278
|
+
for (const cadena of cadenasDe(args)) {
|
|
279
|
+
const que = rutaProtegida(normalizar(cadena, casa), agentDir, escribiendo);
|
|
280
|
+
if (que) {
|
|
281
|
+
return {
|
|
282
|
+
veredicto: "denegada",
|
|
283
|
+
politica: "ruta-protegida",
|
|
284
|
+
motivo: `Denegado: ${que}. No es configurable y no cambia con el modo de permisos. Si el usuario necesita ese dato, pídeselo.`,
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
// 2. Ficheros generados. Escribir en uno es trabajo que desaparece en la
|
|
289
|
+
// siguiente regeneración, y entre medias deja la fuente y el generado
|
|
290
|
+
// diciendo cosas distintas.
|
|
291
|
+
//
|
|
292
|
+
// Va después de las rutas protegidas y antes del modo, porque no es
|
|
293
|
+
// negociable por comodidad — pero sí lo levanta el usuario diciéndolo, y
|
|
294
|
+
// el mensaje se lo explica al modelo para que lo pida en vez de insistir.
|
|
295
|
+
if (escribiendo) {
|
|
296
|
+
for (const cadena of cadenasDe(args)) {
|
|
297
|
+
// El filtro es "se puede abrir", no "parece una ruta".
|
|
298
|
+
//
|
|
299
|
+
// La versión anterior exigía una barra, y con eso `edit` sobre
|
|
300
|
+
// `api.pb.go` —sin directorio— se colaba entera: la guarda estaba
|
|
301
|
+
// puesta, las pruebas en verde, y el fichero generado se editó igual.
|
|
302
|
+
// Solo salió ejecutando el CLI de verdad.
|
|
303
|
+
//
|
|
304
|
+
// Lo que sí se descarta antes de tocar el disco es lo que no puede ser
|
|
305
|
+
// un nombre de fichero: contenido con saltos de línea (el `new_string`
|
|
306
|
+
// de una edición) o cadenas absurdamente largas.
|
|
307
|
+
if (cadena.length === 0 || cadena.length > 400 || cadena.includes("\n"))
|
|
308
|
+
continue;
|
|
309
|
+
let contenido;
|
|
310
|
+
try {
|
|
311
|
+
contenido = readFileSync(normalizar(cadena, casa), "utf-8");
|
|
312
|
+
}
|
|
313
|
+
catch {
|
|
314
|
+
continue; // no existe o no es un fichero: no hay nada que proteger
|
|
315
|
+
}
|
|
316
|
+
const marca = marcaDeGenerado(contenido);
|
|
317
|
+
if (marca) {
|
|
318
|
+
return { veredicto: "denegada", politica: "fichero-generado", motivo: motivoDeGenerado(cadena, marca) };
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
// 3. Lo que el usuario ha denegado. También sobrevive a `yolo`: si no,
|
|
323
|
+
// "denegar" significaría "denegar hasta que al agente le convenga".
|
|
324
|
+
if (denegadas?.includes(tool)) {
|
|
325
|
+
return {
|
|
326
|
+
veredicto: "denegada",
|
|
327
|
+
politica: "deny-de-usuario",
|
|
328
|
+
motivo: `Denegado: el usuario ha desactivado \`${tool}\` en su configuración.`,
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
// 4. La política de MÁQUINA, que el usuario no puede editar.
|
|
332
|
+
//
|
|
333
|
+
// Va aquí y no en cada llamante porque `decidir()` la invocan siete
|
|
334
|
+
// sitios: un techo que haya que acordarse de poner en cada uno no es un
|
|
335
|
+
// techo. Y va antes del modo porque su único poder es recortarlo.
|
|
336
|
+
//
|
|
337
|
+
// Los dos ámbitos que había —global y proyecto— son ficheros del propio
|
|
338
|
+
// usuario, así que la línea con la que el CISO prohíbe `yolo` la borraba
|
|
339
|
+
// él mismo con un editor de texto. Ver `politica-de-maquina.ts`.
|
|
340
|
+
const maquina = maquinaDada ?? politicaDeMaquina();
|
|
341
|
+
if (maquina.politica?.denegadas?.includes(tool)) {
|
|
342
|
+
return {
|
|
343
|
+
veredicto: "denegada",
|
|
344
|
+
politica: "deny-de-maquina",
|
|
345
|
+
motivo: `Denegado: \`${tool}\` está desactivada por la política de este equipo` +
|
|
346
|
+
(maquina.politica.motivo ? `: ${maquina.politica.motivo}` : ".") +
|
|
347
|
+
" No la levanta el modo de permisos ni la configuración del usuario.",
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
const efectivo = recortarModo(modo, maquina);
|
|
351
|
+
// 5. El modo de la sesión, ya recortado.
|
|
352
|
+
if (nivel === "lectura")
|
|
353
|
+
return { veredicto: "permitida", politica: `modo-${efectivo}`, motivo: "" };
|
|
354
|
+
// Que el recorte se NOMBRE en `politica` no es cosmético: ese campo va al
|
|
355
|
+
// libro de sesión, así que un auditor puede ver que la decisión la tomó la
|
|
356
|
+
// política del equipo y no la preferencia del usuario.
|
|
357
|
+
const sufijo = efectivo === modo ? "" : "-por-politica-de-maquina";
|
|
358
|
+
switch (efectivo) {
|
|
359
|
+
case "plan":
|
|
360
|
+
return {
|
|
361
|
+
veredicto: "denegada",
|
|
362
|
+
politica: `modo-plan${sufijo}`,
|
|
363
|
+
motivo: "En modo plan no se actúa: propón el cambio en vez de aplicarlo.",
|
|
364
|
+
};
|
|
365
|
+
case "manual":
|
|
366
|
+
return { veredicto: "preguntar", politica: `modo-manual${sufijo}`, motivo: "" };
|
|
367
|
+
case "auto":
|
|
368
|
+
return nivel === "escritura"
|
|
369
|
+
? { veredicto: "permitida", politica: `modo-auto${sufijo}`, motivo: "" }
|
|
370
|
+
: { veredicto: "preguntar", politica: `modo-auto${sufijo}`, motivo: "" };
|
|
371
|
+
default:
|
|
372
|
+
return { veredicto: "permitida", politica: `modo-yolo${sufijo}`, motivo: "" };
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
//# sourceMappingURL=politica.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"politica.js","sourceRoot":"","sources":["../../../src/core/aprobacion/politica.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Aprobación por herramienta.\n *\n * Antes de esto no había política ninguna: `beforeToolCall` disparaba los hooks\n * del usuario y las extensiones, y `permissions.level` —que existe en settings\n * desde siempre— solo lo leían los propios hooks. Ninguna tool se consultaba\n * contra él. Es decir, el nivel de permisos no gobernaba los permisos.\n *\n * El orden de las comprobaciones ES la propiedad de seguridad, y por eso está\n * escrito de arriba abajo en `decidir()` y no repartido:\n *\n * 1. Rutas protegidas — denegado SIEMPRE, incluso en `yolo`, no configurable\n * 2. Deny del usuario — denegado SIEMPRE, incluso en `yolo`\n * 3. Modo de la sesión — plan / manual / auto / yolo\n *\n * Que 1 y 2 vayan por delante del modo es lo que hace que el argumento de\n * cumplimiento se sostenga: una política que el propio agente puede desactivar\n * pidiendo `yolo` no es una política, es una sugerencia.\n *\n * Lo desconocido cuenta como ejecución. Una tool de MCP o de una extensión que\n * nadie ha clasificado no puede colarse por el carril de lectura por no estar\n * en ninguna lista.\n */\n\nimport { readFileSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { CONFIG_DIR_NAME } from \"../../config.ts\";\nimport { DIR_INDICE, DIR_SESION } from \"../audit/rutas.ts\";\nimport { suplantadaPor } from \"../extensiones/suplantacion.ts\";\nimport { marcaDeGenerado, motivoDeGenerado } from \"./generados.ts\";\nimport { type LecturaDePolitica, politicaDeMaquina, recortarModo } from \"./politica-de-maquina.ts\";\n\n/**\n * Segmento `.../<CONFIG_DIR_NAME>/agent/` de CUALQUIER instalación de Ada,\n * no solo `agentDir` (que es la de ESTE equipo).\n *\n * Con `--remoto` los argumentos de `read`/`write`/`bash` pueden nombrar un\n * `auth.json` o un `vault/` que viven en OTRA máquina — el destino de SSH,\n * el contenedor de Docker, la distro de WSL — con su propio `$HOME` y por\n * tanto un `agentDir` que `rutaProtegida` nunca conoce. Comprobar el\n * segmento en vez del prefijo completo protege ambos sin necesitar el\n * `agentDir` del destino, que esta política no tiene forma de calcular.\n */\nconst SEGMENTO_AGENTE_ADA = `/${CONFIG_DIR_NAME}/agent/`;\n\nexport type NivelTool = \"lectura\" | \"escritura\" | \"ejecucion\";\nexport type ModoPermiso = \"plan\" | \"manual\" | \"auto\" | \"yolo\";\nexport type VeredictoAprobacion = \"permitida\" | \"denegada\" | \"preguntar\";\n\nexport interface Decision {\n\tveredicto: VeredictoAprobacion;\n\t/** Qué regla decidió. Va al libro de sesión, así que tiene que ser estable. */\n\tpolitica: string;\n\t/** Texto para el modelo y para el usuario. Vacío cuando no hay nada que explicar. */\n\tmotivo: string;\n}\n\n/** Tools que solo miran. */\nconst LECTURA = new Set([\n\t\"read\",\n\t\"ls\",\n\t\"find\",\n\t\"grep\",\n\t\"ast_search\",\n\t\"session_search\",\n\t\"web_fetch\",\n\t\"web_search\",\n\t\"memory_search\",\n\t\"memory_list\",\n\t\"graph_query\",\n\t\"ask_user_question\",\n\t\"todo_read\",\n]);\n\n/** Tools que cambian estado nuestro, pero no ejecutan nada del sistema. */\nconst ESCRITURA = new Set([\n\t\"edit\",\n\t\"write\",\n\t\"ast_edit\",\n\t\"memory_add\",\n\t\"memory_replace\",\n\t\"memory_remove\",\n\t\"update_project_memory\",\n\t\"scratchpad\",\n\t\"todo\",\n\t\"todo_write\",\n\t\"graph_add\",\n]);\n\n/**\n * ¿Este nombre es de una tool NUESTRA cuyo nivel de confianza da esta política?\n *\n * Lo consulta el registro de extensiones para saber si `registerTool` está\n * suplantando una builtin. `bash` va aparte porque no está en ninguna de las dos\n * listas —lo desconocido ya es ejecución— pero suplantarlo importa igual: el\n * usuario tiene que ver que el `bash` que corre no es el nuestro.\n */\nexport function esNombreDeToolNuestra(tool: string): boolean {\n\treturn LECTURA.has(tool) || ESCRITURA.has(tool) || tool === \"bash\";\n}\n\n/**\n * El nivel de una herramienta. Lo que no está clasificado es ejecución.\n *\n * Falla cerrado a propósito: el coste de equivocarse hacia arriba es una\n * pregunta de más; hacia abajo, es una tool desconocida corriendo sola.\n */\nexport function nivelDe(tool: string): NivelTool {\n\t// Una builtin suplantada por una extensión NO hereda su nivel.\n\t//\n\t// Comprobado ejecutando: una extensión registra `read`, el loader la pone\n\t// encima de la nuestra y el modelo sigue creyendo que llama a la de Ada. Con\n\t// `LECTURA.has(\"read\")` por delante, ese `read` —que puede hacer lo que\n\t// quiera— se permitía siempre y en cualquier modo. Devolver \"ejecucion\" lo\n\t// devuelve al carril de lo desconocido, que es lo que es.\n\tif (suplantadaPor(tool)) return \"ejecucion\";\n\tif (LECTURA.has(tool)) return \"lectura\";\n\tif (ESCRITURA.has(tool)) return \"escritura\";\n\treturn \"ejecucion\";\n}\n\n/** Un directorio protegido aparece como segmento completo de la ruta. */\nfunction contieneSegmento(texto: string, segmento: string): boolean {\n\treturn texto.includes(`/${segmento}/`);\n}\n\n/**\n * ¿El texto nombra el directorio `dir` colgado de `base`, con barra final o sin\n * ella?\n *\n * La comprobación anterior solo miraba `base/dir/`, y por ahí se colaba justo el\n * caso peor. Comprobado ejecutando `decidir`:\n *\n * rm -rf <agentDir>/vault/ -> denegada ruta-protegida\n * rm -rf <agentDir>/vault -> PERMITIDA modo-yolo\n *\n * Es decir, el borrado entero del vault con un comando, porque el nombre de un\n * directorio no lleva barra al final cuando se lo pasas a `rm`. Se arregla aquí,\n * en la comprobación compartida, y no en cada llamada: la misma trampa valía\n * para el vault, para el libro y para cualquier directorio que se añada mañana.\n *\n * El caso sin barra se mide sobre el token y con el final exacto para no\n * llevarse por delante `vault-ejemplo` ni `sesiones/`. Se recorta la puntuación\n * de shell del final porque `rm -rf x/vault;` y `rm -rf x/vault)` son el mismo\n * comando con otro adorno.\n */\nfunction nombraDirectorio(texto: string, base: string, dir: string): boolean {\n\tif (texto.includes(`${base}${dir}/`)) return true;\n\treturn texto.split(/[\\s\"'`]+/).some((t) => t.replace(/[;,)&|>]+$/, \"\").endsWith(`${base}${dir}`));\n}\n\n/**\n * Deja la ruta en la forma con la que se compara.\n *\n * Sin esto la política era papel mojado, y se descubrió EJECUTANDO el producto:\n * el modelo escribe `~/.ada/agent/vault/…`, la tool expande la tilde por dentro\n * y abre el fichero, mientras que la política —que solo ve los argumentos\n * crudos— comparaba contra la ruta absoluta y no reconocía nada. El vault se\n * leyó entero con la política activada y todas las pruebas en verde, porque\n * todas usaban rutas absolutas.\n *\n * Se sustituye en TODO el texto y no solo al principio porque `bash` recibe una\n * línea entera, donde el `~` va detrás del comando.\n */\nfunction normalizar(texto: string, home: string): string {\n\treturn texto.replaceAll(\"$HOME/\", `${home}/`).replaceAll(\"~/\", `${home}/`);\n}\n\n/**\n * Si el texto nombra algo que no se puede tocar, devuelve por qué.\n *\n * Se mira el texto y no una \"ruta\" porque los argumentos no tienen un nombre\n * común (`path`, `file_path`, `command`…) y porque `bash` recibe una línea de\n * shell entera. Para `bash` esto es MEJOR ESFUERZO y hay que decirlo: quien\n * contiene de verdad un comando es el sandbox del sistema operativo, no esta\n * comprobación. Aquí se para lo evidente, que es lo que hace un agente\n * despistado; lo deliberado lo para el kernel.\n */\nfunction rutaProtegida(texto: string, agentDir: string, escribiendo: boolean): string | null {\n\tif (nombraDirectorio(texto, `${agentDir}/`, \"vault\")) return \"el vault cifrado\";\n\t// Generaliza lo de arriba a un vault de Ada en OTRA máquina (ver\n\t// `SEGMENTO_AGENTE_ADA`): mismo motivo, sin depender del `agentDir` local.\n\tif (nombraDirectorio(texto, SEGMENTO_AGENTE_ADA, \"vault\"))\n\t\treturn \"el vault cifrado (de este equipo o de un destino remoto)\";\n\n\t// El libro de auditoría y su índice.\n\t//\n\t// Agujero real, y el más grave que hemos tenido: la política protegía el\n\t// vault y el `auth.json` y dejaba al agente escribir y BORRAR libremente en\n\t// `<agentDir>/sesion/`, que es donde está el registro de lo que ha hecho. Es\n\t// decir, el sujeto de la auditoría tenía permiso de escritura sobre la\n\t// auditoría. Comprobado ejecutando `decidir`: `rm -rf <agentDir>/sesion/`\n\t// salía `permitida`.\n\t//\n\t// Denegado también para LEER, igual que el vault: el libro guarda hashes y\n\t// rutas de todo lo que ha pasado por la sesión, y no hay ninguna tarea\n\t// legítima del agente que necesite leerlo por el sistema de ficheros. Quien\n\t// tiene que verlo lo ve por `ada-cli audit show`, por `audit://` o por el\n\t// panel, que no pasan por esta política porque no son el agente.\n\tfor (const dir of [DIR_SESION, DIR_INDICE]) {\n\t\tif (nombraDirectorio(texto, `${agentDir}/`, dir)) return \"el libro de auditoría de la sesión\";\n\t\tif (nombraDirectorio(texto, SEGMENTO_AGENTE_ADA, dir)) {\n\t\t\treturn \"el libro de auditoría de la sesión (de este equipo o de un destino remoto)\";\n\t\t}\n\t}\n\n\t// Las credenciales de los proveedores, que viven EN CLARO en `auth.json`.\n\t//\n\t// Agujero real y propio: la primera versión de esta política protegía el\n\t// vault, las claves SSH, AWS y los `.env`, y dejaba abierto justo el fichero\n\t// donde están las claves con las que corre el agente. Se comprobó\n\t// ejecutando el producto y las leyó todas. Proteger la caja fuerte y dejar\n\t// las llaves encima no protege nada.\n\t//\n\t// Se compara con el nombre de fichero COMPLETO para no llevarse por delante\n\t// `auth.json.example`, `auth-storage.ts` ni `auth.md`, que son código y\n\t// documentación que el agente sí tiene que poder leer.\n\tfor (const parte of texto.split(/[\\s\"'`]+/)) {\n\t\tconst base = parte.slice(parte.lastIndexOf(\"/\") + 1);\n\t\tif (parte.includes(`${agentDir}/`) && base === \"auth.json\") return \"las credenciales de los proveedores\";\n\t\t// Igual, pero para el `auth.json` de un Ada corriendo en el DESTINO de\n\t\t// `--remoto`: no comparte `agentDir` con este equipo, así que el\n\t\t// segmento genérico es la única forma de reconocerlo.\n\t\tif (parte.includes(SEGMENTO_AGENTE_ADA) && base === \"auth.json\") {\n\t\t\treturn \"las credenciales de los proveedores (de este equipo o de un destino remoto)\";\n\t\t}\n\t\t// Y las de las otras herramientas: están en el mismo portátil y sirven\n\t\t// para lo mismo. Si el agente no ve las nuestras, no hay motivo para que\n\t\t// vea las de Claude Code, Codex, gh, Docker o kubectl.\n\t\tif (base === \".credentials.json\" || base === \".netrc\") return \"credenciales de otra herramienta\";\n\t\tif (contieneSegmento(parte, \".codex\") && base === \"auth.json\") return \"las credenciales de Codex\";\n\t\tif (contieneSegmento(parte, \"gh\") && base === \"hosts.yml\") return \"las credenciales de GitHub CLI\";\n\t\tif (contieneSegmento(parte, \".docker\") && base === \"config.json\") return \"las credenciales de Docker\";\n\t\tif (contieneSegmento(parte, \".kube\") && base === \"config\") return \"el acceso al clúster de Kubernetes\";\n\t}\n\n\tif (contieneSegmento(texto, \".ssh\")) return \"las claves SSH\";\n\tif (contieneSegmento(texto, \".gnupg\")) return \"las claves GPG\";\n\tif (contieneSegmento(texto, \".aws\")) return \"las credenciales de AWS\";\n\n\t// `.env` como nombre de fichero completo, no como prefijo: `.environment.ts`\n\t// es código normal y denegarlo dejaría medio proyecto ilegible sin que nadie\n\t// entendiera por qué.\n\tfor (const parte of texto.split(/[\\s\"'`]+/)) {\n\t\tconst base = parte.slice(parte.lastIndexOf(\"/\") + 1);\n\t\tif (base === \".env\" || base.startsWith(\".env.\")) return \"un fichero de entorno\";\n\t}\n\n\t// La configuración del agente se puede LEER pero no escribir. El\n\t// CVE-2026-25725 de Claude Code fue exactamente esto: código dentro del\n\t// sandbox creaba un settings.json e inyectaba hooks `SessionStart` que\n\t// corrían FUERA. Nuestro settings.json también ejecuta hooks.\n\tif (escribiendo && (texto.includes(`${agentDir}/settings.json`) || texto.includes(`${agentDir}/hooks`))) {\n\t\treturn \"la configuración del agente, que ejecuta hooks\";\n\t}\n\treturn null;\n}\n\n/** Todas las cadenas de los argumentos, a cualquier profundidad. */\nfunction cadenasDe(valor: unknown, acumulado: string[] = []): string[] {\n\tif (typeof valor === \"string\") acumulado.push(valor);\n\telse if (Array.isArray(valor)) for (const v of valor) cadenasDe(v, acumulado);\n\telse if (valor && typeof valor === \"object\") for (const v of Object.values(valor)) cadenasDe(v, acumulado);\n\treturn acumulado;\n}\n\nexport interface EntradaDecision {\n\ttool: string;\n\targs: Record<string, unknown>;\n\tmodo: ModoPermiso;\n\tagentDir: string;\n\t/**\n\t * Directorio del usuario, para resolver `~` y `$HOME` antes de comparar.\n\t *\n\t * Opcional y con `homedir()` por defecto para que el punto de llamada no\n\t * tenga que importarlo: `agent-session.ts` es de upstream y está en el tope\n\t * del presupuesto de fork, donde un `import` nuevo cuesta un hunk. Las\n\t * pruebas lo pasan siempre, así que siguen siendo deterministas.\n\t */\n\thome?: string;\n\t/** Tools que el usuario ha denegado explícitamente en su configuración. */\n\tdenegadas?: string[];\n\t/**\n\t * La política de máquina, para las pruebas.\n\t *\n\t * Opcional, y por defecto la del sistema. NO se lee de una variable de\n\t * entorno a propósito: una variable la pone el propio usuario, así que sería\n\t * la puerta trasera que anula toda la política de un `export`. Quien ya\n\t * ejecuta código en este proceso puede saltársela igual —la frontera es el\n\t * proceso, no esta función—, pero no debe haber un camino cómodo.\n\t */\n\tmaquina?: LecturaDePolitica;\n}\n\n/**\n * Lee `permissions.denied` de la configuración, tolerando que no exista.\n *\n * El bloque `permissions` es un `Record<string, unknown>` en settings, así que\n * lo que hay ahí no está tipado y puede ser cualquier cosa: se filtra a cadenas\n * en vez de confiar. Una entrada mal escrita tiene que perderse ella sola, no\n * tumbar la política entera y con ella la sesión.\n */\nexport function leerDenegadas(config: { permissions?: Record<string, unknown> } | undefined): string[] {\n\tconst lista = (config?.permissions as { denied?: unknown } | undefined)?.denied;\n\treturn Array.isArray(lista) ? lista.filter((x): x is string => typeof x === \"string\") : [];\n}\n\nexport function decidir({\n\ttool,\n\targs,\n\tmodo,\n\tagentDir,\n\thome,\n\tdenegadas,\n\tmaquina: maquinaDada,\n}: EntradaDecision): Decision {\n\tconst casa = home ?? homedir();\n\tconst nivel = nivelDe(tool);\n\n\t// 1. Rutas protegidas. Por delante de todo lo demás, incluido `yolo`.\n\t// `ejecucion` cuenta como escritura: un `bash` puede reescribir el\n\t// settings.json igual de bien que un `write`.\n\tconst escribiendo = nivel !== \"lectura\";\n\tfor (const cadena of cadenasDe(args)) {\n\t\tconst que = rutaProtegida(normalizar(cadena, casa), agentDir, escribiendo);\n\t\tif (que) {\n\t\t\treturn {\n\t\t\t\tveredicto: \"denegada\",\n\t\t\t\tpolitica: \"ruta-protegida\",\n\t\t\t\tmotivo: `Denegado: ${que}. No es configurable y no cambia con el modo de permisos. Si el usuario necesita ese dato, pídeselo.`,\n\t\t\t};\n\t\t}\n\t}\n\n\t// 2. Ficheros generados. Escribir en uno es trabajo que desaparece en la\n\t// siguiente regeneración, y entre medias deja la fuente y el generado\n\t// diciendo cosas distintas.\n\t//\n\t// Va después de las rutas protegidas y antes del modo, porque no es\n\t// negociable por comodidad — pero sí lo levanta el usuario diciéndolo, y\n\t// el mensaje se lo explica al modelo para que lo pida en vez de insistir.\n\tif (escribiendo) {\n\t\tfor (const cadena of cadenasDe(args)) {\n\t\t\t// El filtro es \"se puede abrir\", no \"parece una ruta\".\n\t\t\t//\n\t\t\t// La versión anterior exigía una barra, y con eso `edit` sobre\n\t\t\t// `api.pb.go` —sin directorio— se colaba entera: la guarda estaba\n\t\t\t// puesta, las pruebas en verde, y el fichero generado se editó igual.\n\t\t\t// Solo salió ejecutando el CLI de verdad.\n\t\t\t//\n\t\t\t// Lo que sí se descarta antes de tocar el disco es lo que no puede ser\n\t\t\t// un nombre de fichero: contenido con saltos de línea (el `new_string`\n\t\t\t// de una edición) o cadenas absurdamente largas.\n\t\t\tif (cadena.length === 0 || cadena.length > 400 || cadena.includes(\"\\n\")) continue;\n\t\t\tlet contenido: string;\n\t\t\ttry {\n\t\t\t\tcontenido = readFileSync(normalizar(cadena, casa), \"utf-8\");\n\t\t\t} catch {\n\t\t\t\tcontinue; // no existe o no es un fichero: no hay nada que proteger\n\t\t\t}\n\t\t\tconst marca = marcaDeGenerado(contenido);\n\t\t\tif (marca) {\n\t\t\t\treturn { veredicto: \"denegada\", politica: \"fichero-generado\", motivo: motivoDeGenerado(cadena, marca) };\n\t\t\t}\n\t\t}\n\t}\n\n\t// 3. Lo que el usuario ha denegado. También sobrevive a `yolo`: si no,\n\t// \"denegar\" significaría \"denegar hasta que al agente le convenga\".\n\tif (denegadas?.includes(tool)) {\n\t\treturn {\n\t\t\tveredicto: \"denegada\",\n\t\t\tpolitica: \"deny-de-usuario\",\n\t\t\tmotivo: `Denegado: el usuario ha desactivado \\`${tool}\\` en su configuración.`,\n\t\t};\n\t}\n\n\t// 4. La política de MÁQUINA, que el usuario no puede editar.\n\t//\n\t// Va aquí y no en cada llamante porque `decidir()` la invocan siete\n\t// sitios: un techo que haya que acordarse de poner en cada uno no es un\n\t// techo. Y va antes del modo porque su único poder es recortarlo.\n\t//\n\t// Los dos ámbitos que había —global y proyecto— son ficheros del propio\n\t// usuario, así que la línea con la que el CISO prohíbe `yolo` la borraba\n\t// él mismo con un editor de texto. Ver `politica-de-maquina.ts`.\n\tconst maquina = maquinaDada ?? politicaDeMaquina();\n\tif (maquina.politica?.denegadas?.includes(tool)) {\n\t\treturn {\n\t\t\tveredicto: \"denegada\",\n\t\t\tpolitica: \"deny-de-maquina\",\n\t\t\tmotivo:\n\t\t\t\t`Denegado: \\`${tool}\\` está desactivada por la política de este equipo` +\n\t\t\t\t(maquina.politica.motivo ? `: ${maquina.politica.motivo}` : \".\") +\n\t\t\t\t\" No la levanta el modo de permisos ni la configuración del usuario.\",\n\t\t};\n\t}\n\tconst efectivo = recortarModo(modo, maquina);\n\n\t// 5. El modo de la sesión, ya recortado.\n\tif (nivel === \"lectura\") return { veredicto: \"permitida\", politica: `modo-${efectivo}`, motivo: \"\" };\n\n\t// Que el recorte se NOMBRE en `politica` no es cosmético: ese campo va al\n\t// libro de sesión, así que un auditor puede ver que la decisión la tomó la\n\t// política del equipo y no la preferencia del usuario.\n\tconst sufijo = efectivo === modo ? \"\" : \"-por-politica-de-maquina\";\n\n\tswitch (efectivo) {\n\t\tcase \"plan\":\n\t\t\treturn {\n\t\t\t\tveredicto: \"denegada\",\n\t\t\t\tpolitica: `modo-plan${sufijo}`,\n\t\t\t\tmotivo: \"En modo plan no se actúa: propón el cambio en vez de aplicarlo.\",\n\t\t\t};\n\t\tcase \"manual\":\n\t\t\treturn { veredicto: \"preguntar\", politica: `modo-manual${sufijo}`, motivo: \"\" };\n\t\tcase \"auto\":\n\t\t\treturn nivel === \"escritura\"\n\t\t\t\t? { veredicto: \"permitida\", politica: `modo-auto${sufijo}`, motivo: \"\" }\n\t\t\t\t: { veredicto: \"preguntar\", politica: `modo-auto${sufijo}`, motivo: \"\" };\n\t\tdefault:\n\t\t\treturn { veredicto: \"permitida\", politica: `modo-yolo${sufijo}`, motivo: \"\" };\n\t}\n}\n"]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Arranque del CLI con atajos: decide qué grafo de módulos hay que cargar ANTES
|
|
3
|
+
* de cargarlo.
|
|
4
|
+
*
|
|
5
|
+
* Por qué existe. Medido en este árbol (Node 22, macOS, caché caliente):
|
|
6
|
+
*
|
|
7
|
+
* node dist/cli.js --version -> 1,65 s y 1927 módulos cargados
|
|
8
|
+
* node -e "" -> 0,03 s
|
|
9
|
+
*
|
|
10
|
+
* (contados con un hook `load` de `node:module`; con `module.register()`, que va
|
|
11
|
+
* en otro hilo y no ve algunas cargas, salen 1315 — el número de la puerta
|
|
12
|
+
* `scripts/check-arranque.mjs` es el primero, para que se puedan comparar.)
|
|
13
|
+
*
|
|
14
|
+
* De esos 1927 módulos, 660 son de `typebox` (los esquemas de todas las tools),
|
|
15
|
+
* 206 de `core/` y 171 de `packages/ai`. Ninguno hace falta para imprimir una
|
|
16
|
+
* cadena de versión. El coste no era del lenguaje —Bun tardaba lo mismo— sino de
|
|
17
|
+
* que `cli.ts` importaba `main.ts` de forma estática, y `main.ts` importa
|
|
18
|
+
* ávidamente TODO su grafo (sdk, modos, extensiones, proveedores, motor de
|
|
19
|
+
* control del ordenador) antes de mirar el primer argumento.
|
|
20
|
+
*
|
|
21
|
+
* Lo mismo pasaba con los subcomandos que ya estaban escritos para ser
|
|
22
|
+
* perezosos: `runServeCommand` (audit, discover, banco, review, commit, wiki,
|
|
23
|
+
* usage…) carga sus dependencias con `await import()`, pero se llamaba desde
|
|
24
|
+
* dentro de `main()`, o sea DESPUÉS de haber pagado el grafo entero. La pereza
|
|
25
|
+
* estaba construida y desenchufada.
|
|
26
|
+
*
|
|
27
|
+
* Enganche en upstream: UN solo hunk, el final de `src/cli.ts`. El resto vive
|
|
28
|
+
* aquí, en un fichero nuestro.
|
|
29
|
+
*/
|
|
30
|
+
/**
|
|
31
|
+
* ¿Es una invocación que solo pide la versión y nada más?
|
|
32
|
+
*
|
|
33
|
+
* Se exige que sea el ÚNICO argumento a propósito. `ada-cli update --version`
|
|
34
|
+
* lo consume `handlePackageCommand` dentro de `main()` con otro significado (la
|
|
35
|
+
* versión a instalar), y atajarlo aquí cambiaría lo que hace ese comando. Un
|
|
36
|
+
* atajo que se lleva por delante un caso legítimo es peor que no tener atajo.
|
|
37
|
+
*/
|
|
38
|
+
export declare function esSoloVersion(args: readonly string[]): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Punto de entrada real del CLI. Devuelve cuando el trabajo ha terminado.
|
|
41
|
+
*
|
|
42
|
+
* Sin `options`: `cli.ts` nunca las pasó y el SDK no entra por aquí, sino por
|
|
43
|
+
* `createAgentSession`. Un parámetro que nadie rellena es una mentira con tipo.
|
|
44
|
+
*/
|
|
45
|
+
export declare function arrancar(args: string[]): Promise<void>;
|
|
46
|
+
//# sourceMappingURL=atajos.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atajos.d.ts","sourceRoot":"","sources":["../../../src/core/arranque/atajos.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAoBH;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAE9D;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyC5D","sourcesContent":["/**\n * Arranque del CLI con atajos: decide qué grafo de módulos hay que cargar ANTES\n * de cargarlo.\n *\n * Por qué existe. Medido en este árbol (Node 22, macOS, caché caliente):\n *\n * node dist/cli.js --version -> 1,65 s y 1927 módulos cargados\n * node -e \"\" -> 0,03 s\n *\n * (contados con un hook `load` de `node:module`; con `module.register()`, que va\n * en otro hilo y no ve algunas cargas, salen 1315 — el número de la puerta\n * `scripts/check-arranque.mjs` es el primero, para que se puedan comparar.)\n *\n * De esos 1927 módulos, 660 son de `typebox` (los esquemas de todas las tools),\n * 206 de `core/` y 171 de `packages/ai`. Ninguno hace falta para imprimir una\n * cadena de versión. El coste no era del lenguaje —Bun tardaba lo mismo— sino de\n * que `cli.ts` importaba `main.ts` de forma estática, y `main.ts` importa\n * ávidamente TODO su grafo (sdk, modos, extensiones, proveedores, motor de\n * control del ordenador) antes de mirar el primer argumento.\n *\n * Lo mismo pasaba con los subcomandos que ya estaban escritos para ser\n * perezosos: `runServeCommand` (audit, discover, banco, review, commit, wiki,\n * usage…) carga sus dependencias con `await import()`, pero se llamaba desde\n * dentro de `main()`, o sea DESPUÉS de haber pagado el grafo entero. La pereza\n * estaba construida y desenchufada.\n *\n * Enganche en upstream: UN solo hunk, el final de `src/cli.ts`. El resto vive\n * aquí, en un fichero nuestro.\n */\n\n/**\n * Prepara el proceso igual que hacía `cli.ts`: título, variables de entorno que\n * leen otros módulos y silenciado de avisos de Node.\n *\n * `configureHttpDispatcher()` NO se llama aquí: es el único trozo del preámbulo\n * que cuesta (carga `undici`, 221 módulos medidos) y solo hace falta cuando algo\n * va a hablar por red. Se llama justo antes de `main()` —donde `runAuthCommand`\n * ya usa la red— y dentro de `runServeCommand`, después de los subcomandos que\n * solo leen ficheros.\n */\nasync function prepararProceso(): Promise<void> {\n\tconst { APP_NAME } = await import(\"../../config.ts\");\n\tprocess.title = APP_NAME;\n\tprocess.env.PI_CODING_AGENT = \"true\";\n\tprocess.env.AI_AGENT = \"pi\";\n\tprocess.emitWarning = (() => {}) as typeof process.emitWarning;\n}\n\n/**\n * ¿Es una invocación que solo pide la versión y nada más?\n *\n * Se exige que sea el ÚNICO argumento a propósito. `ada-cli update --version`\n * lo consume `handlePackageCommand` dentro de `main()` con otro significado (la\n * versión a instalar), y atajarlo aquí cambiaría lo que hace ese comando. Un\n * atajo que se lleva por delante un caso legítimo es peor que no tener atajo.\n */\nexport function esSoloVersion(args: readonly string[]): boolean {\n\treturn args.length === 1 && (args[0] === \"--version\" || args[0] === \"-v\");\n}\n\n/**\n * Punto de entrada real del CLI. Devuelve cuando el trabajo ha terminado.\n *\n * Sin `options`: `cli.ts` nunca las pasó y el SDK no entra por aquí, sino por\n * `createAgentSession`. Un parámetro que nadie rellena es una mentira con tipo.\n */\nexport async function arrancar(args: string[]): Promise<void> {\n\tawait prepararProceso();\n\n\t// Atajo 1: la versión. `VERSION` sale de config.ts, que ya está cargado.\n\tif (esSoloVersion(args)) {\n\t\tconst { VERSION } = await import(\"../../config.ts\");\n\t\tconsole.log(VERSION);\n\t\treturn;\n\t}\n\n\t// `--offline` tiene que estar puesto en el entorno antes de que cualquier\n\t// módulo lo lea. Es lo mismo que hace `main()` en sus primeras líneas; se\n\t// repite aquí porque los subcomandos del atajo 2 ya no pasan por allí.\n\tif (args.includes(\"--offline\") || esBanderaVerdadera(process.env.PI_OFFLINE)) {\n\t\tprocess.env.PI_OFFLINE = \"1\";\n\t\tprocess.env.PI_SKIP_VERSION_CHECK = \"1\";\n\t}\n\n\t// Atajo 2: los subcomandos que no abren el TUI (audit, discover, banco,\n\t// review, commit, usage, wiki, serve, sessions, attach…). Ya cargaban sus\n\t// dependencias de forma perezosa; lo que se gana es no pagar el grafo de\n\t// `main.ts` para llegar hasta ellos.\n\t//\n\t// El orden respecto a `runAuthCommand` (que sigue dentro de `main()`) no\n\t// importa: `auth` no está en la lista de `isServeCommand`, así que los dos\n\t// conjuntos de argumentos son disjuntos.\n\t//\n\t// No se filtra con `isServeCommand` aquí: `runServeCommand` ya empieza por esa\n\t// misma comprobación y devuelve false. Repetirla solo abría la puerta a que\n\t// las dos listas se separaran.\n\tconst { runServeCommand } = await import(\"../../cli/serve-command.ts\");\n\tif (await runServeCommand(args)) return;\n\n\t// Camino normal: el CLI completo. El dispatcher se configura aquí y no antes\n\t// porque `undici` son 221 módulos medidos y los subcomandos que solo leen\n\t// ficheros no los necesitan. Tiene que ser ANTES de `main()`: `runAuthCommand`\n\t// usa la red en las primeras líneas de main, antes de su propia llamada.\n\tconst { configureHttpDispatcher } = await import(\"../http-dispatcher.ts\");\n\tconfigureHttpDispatcher();\n\tconst { main } = await import(\"../../main.ts\");\n\tawait main(args);\n}\n\n/**\n * Copia local de la lectura de banderas de entorno de `main.ts`. Son cuatro\n * líneas y traerlas desde allí obligaría a cargar `main.ts`, que es justo lo que\n * este fichero existe para evitar.\n */\nfunction esBanderaVerdadera(value: string | undefined): boolean {\n\tif (!value) return false;\n\treturn value === \"1\" || value.toLowerCase() === \"true\" || value.toLowerCase() === \"yes\";\n}\n"]}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Arranque del CLI con atajos: decide qué grafo de módulos hay que cargar ANTES
|
|
3
|
+
* de cargarlo.
|
|
4
|
+
*
|
|
5
|
+
* Por qué existe. Medido en este árbol (Node 22, macOS, caché caliente):
|
|
6
|
+
*
|
|
7
|
+
* node dist/cli.js --version -> 1,65 s y 1927 módulos cargados
|
|
8
|
+
* node -e "" -> 0,03 s
|
|
9
|
+
*
|
|
10
|
+
* (contados con un hook `load` de `node:module`; con `module.register()`, que va
|
|
11
|
+
* en otro hilo y no ve algunas cargas, salen 1315 — el número de la puerta
|
|
12
|
+
* `scripts/check-arranque.mjs` es el primero, para que se puedan comparar.)
|
|
13
|
+
*
|
|
14
|
+
* De esos 1927 módulos, 660 son de `typebox` (los esquemas de todas las tools),
|
|
15
|
+
* 206 de `core/` y 171 de `packages/ai`. Ninguno hace falta para imprimir una
|
|
16
|
+
* cadena de versión. El coste no era del lenguaje —Bun tardaba lo mismo— sino de
|
|
17
|
+
* que `cli.ts` importaba `main.ts` de forma estática, y `main.ts` importa
|
|
18
|
+
* ávidamente TODO su grafo (sdk, modos, extensiones, proveedores, motor de
|
|
19
|
+
* control del ordenador) antes de mirar el primer argumento.
|
|
20
|
+
*
|
|
21
|
+
* Lo mismo pasaba con los subcomandos que ya estaban escritos para ser
|
|
22
|
+
* perezosos: `runServeCommand` (audit, discover, banco, review, commit, wiki,
|
|
23
|
+
* usage…) carga sus dependencias con `await import()`, pero se llamaba desde
|
|
24
|
+
* dentro de `main()`, o sea DESPUÉS de haber pagado el grafo entero. La pereza
|
|
25
|
+
* estaba construida y desenchufada.
|
|
26
|
+
*
|
|
27
|
+
* Enganche en upstream: UN solo hunk, el final de `src/cli.ts`. El resto vive
|
|
28
|
+
* aquí, en un fichero nuestro.
|
|
29
|
+
*/
|
|
30
|
+
/**
|
|
31
|
+
* Prepara el proceso igual que hacía `cli.ts`: título, variables de entorno que
|
|
32
|
+
* leen otros módulos y silenciado de avisos de Node.
|
|
33
|
+
*
|
|
34
|
+
* `configureHttpDispatcher()` NO se llama aquí: es el único trozo del preámbulo
|
|
35
|
+
* que cuesta (carga `undici`, 221 módulos medidos) y solo hace falta cuando algo
|
|
36
|
+
* va a hablar por red. Se llama justo antes de `main()` —donde `runAuthCommand`
|
|
37
|
+
* ya usa la red— y dentro de `runServeCommand`, después de los subcomandos que
|
|
38
|
+
* solo leen ficheros.
|
|
39
|
+
*/
|
|
40
|
+
async function prepararProceso() {
|
|
41
|
+
const { APP_NAME } = await import("../../config.js");
|
|
42
|
+
process.title = APP_NAME;
|
|
43
|
+
process.env.PI_CODING_AGENT = "true";
|
|
44
|
+
process.env.AI_AGENT = "pi";
|
|
45
|
+
process.emitWarning = (() => { });
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* ¿Es una invocación que solo pide la versión y nada más?
|
|
49
|
+
*
|
|
50
|
+
* Se exige que sea el ÚNICO argumento a propósito. `ada-cli update --version`
|
|
51
|
+
* lo consume `handlePackageCommand` dentro de `main()` con otro significado (la
|
|
52
|
+
* versión a instalar), y atajarlo aquí cambiaría lo que hace ese comando. Un
|
|
53
|
+
* atajo que se lleva por delante un caso legítimo es peor que no tener atajo.
|
|
54
|
+
*/
|
|
55
|
+
export function esSoloVersion(args) {
|
|
56
|
+
return args.length === 1 && (args[0] === "--version" || args[0] === "-v");
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Punto de entrada real del CLI. Devuelve cuando el trabajo ha terminado.
|
|
60
|
+
*
|
|
61
|
+
* Sin `options`: `cli.ts` nunca las pasó y el SDK no entra por aquí, sino por
|
|
62
|
+
* `createAgentSession`. Un parámetro que nadie rellena es una mentira con tipo.
|
|
63
|
+
*/
|
|
64
|
+
export async function arrancar(args) {
|
|
65
|
+
await prepararProceso();
|
|
66
|
+
// Atajo 1: la versión. `VERSION` sale de config.ts, que ya está cargado.
|
|
67
|
+
if (esSoloVersion(args)) {
|
|
68
|
+
const { VERSION } = await import("../../config.js");
|
|
69
|
+
console.log(VERSION);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
// `--offline` tiene que estar puesto en el entorno antes de que cualquier
|
|
73
|
+
// módulo lo lea. Es lo mismo que hace `main()` en sus primeras líneas; se
|
|
74
|
+
// repite aquí porque los subcomandos del atajo 2 ya no pasan por allí.
|
|
75
|
+
if (args.includes("--offline") || esBanderaVerdadera(process.env.PI_OFFLINE)) {
|
|
76
|
+
process.env.PI_OFFLINE = "1";
|
|
77
|
+
process.env.PI_SKIP_VERSION_CHECK = "1";
|
|
78
|
+
}
|
|
79
|
+
// Atajo 2: los subcomandos que no abren el TUI (audit, discover, banco,
|
|
80
|
+
// review, commit, usage, wiki, serve, sessions, attach…). Ya cargaban sus
|
|
81
|
+
// dependencias de forma perezosa; lo que se gana es no pagar el grafo de
|
|
82
|
+
// `main.ts` para llegar hasta ellos.
|
|
83
|
+
//
|
|
84
|
+
// El orden respecto a `runAuthCommand` (que sigue dentro de `main()`) no
|
|
85
|
+
// importa: `auth` no está en la lista de `isServeCommand`, así que los dos
|
|
86
|
+
// conjuntos de argumentos son disjuntos.
|
|
87
|
+
//
|
|
88
|
+
// No se filtra con `isServeCommand` aquí: `runServeCommand` ya empieza por esa
|
|
89
|
+
// misma comprobación y devuelve false. Repetirla solo abría la puerta a que
|
|
90
|
+
// las dos listas se separaran.
|
|
91
|
+
const { runServeCommand } = await import("../../cli/serve-command.js");
|
|
92
|
+
if (await runServeCommand(args))
|
|
93
|
+
return;
|
|
94
|
+
// Camino normal: el CLI completo. El dispatcher se configura aquí y no antes
|
|
95
|
+
// porque `undici` son 221 módulos medidos y los subcomandos que solo leen
|
|
96
|
+
// ficheros no los necesitan. Tiene que ser ANTES de `main()`: `runAuthCommand`
|
|
97
|
+
// usa la red en las primeras líneas de main, antes de su propia llamada.
|
|
98
|
+
const { configureHttpDispatcher } = await import("../http-dispatcher.js");
|
|
99
|
+
configureHttpDispatcher();
|
|
100
|
+
const { main } = await import("../../main.js");
|
|
101
|
+
await main(args);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Copia local de la lectura de banderas de entorno de `main.ts`. Son cuatro
|
|
105
|
+
* líneas y traerlas desde allí obligaría a cargar `main.ts`, que es justo lo que
|
|
106
|
+
* este fichero existe para evitar.
|
|
107
|
+
*/
|
|
108
|
+
function esBanderaVerdadera(value) {
|
|
109
|
+
if (!value)
|
|
110
|
+
return false;
|
|
111
|
+
return value === "1" || value.toLowerCase() === "true" || value.toLowerCase() === "yes";
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=atajos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atajos.js","sourceRoot":"","sources":["../../../src/core/arranque/atajos.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH;;;;;;;;;GASG;AACH,KAAK,UAAU,eAAe,GAAkB;IAC/C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACrD,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,WAAW,GAAG,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAA+B,CAAC;AAAA,CAC/D;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,IAAuB,EAAW;IAC/D,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AAAA,CAC1E;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAc,EAAiB;IAC7D,MAAM,eAAe,EAAE,CAAC;IAExB,2EAAyE;IACzE,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO;IACR,CAAC;IAED,0EAA0E;IAC1E,4EAA0E;IAC1E,yEAAuE;IACvE,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,GAAG,CAAC;IACzC,CAAC;IAED,wEAAwE;IACxE,4EAA0E;IAC1E,yEAAyE;IACzE,qCAAqC;IACrC,EAAE;IACF,yEAAyE;IACzE,6EAA2E;IAC3E,yCAAyC;IACzC,EAAE;IACF,gFAA+E;IAC/E,8EAA4E;IAC5E,+BAA+B;IAC/B,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;IACvE,IAAI,MAAM,eAAe,CAAC,IAAI,CAAC;QAAE,OAAO;IAExC,8EAA6E;IAC7E,2EAA0E;IAC1E,+EAA+E;IAC/E,0EAAyE;IACzE,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAC1E,uBAAuB,EAAE,CAAC;IAC1B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAC/C,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;AAAA,CACjB;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,KAAyB,EAAW;IAC/D,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,OAAO,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC;AAAA,CACxF","sourcesContent":["/**\n * Arranque del CLI con atajos: decide qué grafo de módulos hay que cargar ANTES\n * de cargarlo.\n *\n * Por qué existe. Medido en este árbol (Node 22, macOS, caché caliente):\n *\n * node dist/cli.js --version -> 1,65 s y 1927 módulos cargados\n * node -e \"\" -> 0,03 s\n *\n * (contados con un hook `load` de `node:module`; con `module.register()`, que va\n * en otro hilo y no ve algunas cargas, salen 1315 — el número de la puerta\n * `scripts/check-arranque.mjs` es el primero, para que se puedan comparar.)\n *\n * De esos 1927 módulos, 660 son de `typebox` (los esquemas de todas las tools),\n * 206 de `core/` y 171 de `packages/ai`. Ninguno hace falta para imprimir una\n * cadena de versión. El coste no era del lenguaje —Bun tardaba lo mismo— sino de\n * que `cli.ts` importaba `main.ts` de forma estática, y `main.ts` importa\n * ávidamente TODO su grafo (sdk, modos, extensiones, proveedores, motor de\n * control del ordenador) antes de mirar el primer argumento.\n *\n * Lo mismo pasaba con los subcomandos que ya estaban escritos para ser\n * perezosos: `runServeCommand` (audit, discover, banco, review, commit, wiki,\n * usage…) carga sus dependencias con `await import()`, pero se llamaba desde\n * dentro de `main()`, o sea DESPUÉS de haber pagado el grafo entero. La pereza\n * estaba construida y desenchufada.\n *\n * Enganche en upstream: UN solo hunk, el final de `src/cli.ts`. El resto vive\n * aquí, en un fichero nuestro.\n */\n\n/**\n * Prepara el proceso igual que hacía `cli.ts`: título, variables de entorno que\n * leen otros módulos y silenciado de avisos de Node.\n *\n * `configureHttpDispatcher()` NO se llama aquí: es el único trozo del preámbulo\n * que cuesta (carga `undici`, 221 módulos medidos) y solo hace falta cuando algo\n * va a hablar por red. Se llama justo antes de `main()` —donde `runAuthCommand`\n * ya usa la red— y dentro de `runServeCommand`, después de los subcomandos que\n * solo leen ficheros.\n */\nasync function prepararProceso(): Promise<void> {\n\tconst { APP_NAME } = await import(\"../../config.ts\");\n\tprocess.title = APP_NAME;\n\tprocess.env.PI_CODING_AGENT = \"true\";\n\tprocess.env.AI_AGENT = \"pi\";\n\tprocess.emitWarning = (() => {}) as typeof process.emitWarning;\n}\n\n/**\n * ¿Es una invocación que solo pide la versión y nada más?\n *\n * Se exige que sea el ÚNICO argumento a propósito. `ada-cli update --version`\n * lo consume `handlePackageCommand` dentro de `main()` con otro significado (la\n * versión a instalar), y atajarlo aquí cambiaría lo que hace ese comando. Un\n * atajo que se lleva por delante un caso legítimo es peor que no tener atajo.\n */\nexport function esSoloVersion(args: readonly string[]): boolean {\n\treturn args.length === 1 && (args[0] === \"--version\" || args[0] === \"-v\");\n}\n\n/**\n * Punto de entrada real del CLI. Devuelve cuando el trabajo ha terminado.\n *\n * Sin `options`: `cli.ts` nunca las pasó y el SDK no entra por aquí, sino por\n * `createAgentSession`. Un parámetro que nadie rellena es una mentira con tipo.\n */\nexport async function arrancar(args: string[]): Promise<void> {\n\tawait prepararProceso();\n\n\t// Atajo 1: la versión. `VERSION` sale de config.ts, que ya está cargado.\n\tif (esSoloVersion(args)) {\n\t\tconst { VERSION } = await import(\"../../config.ts\");\n\t\tconsole.log(VERSION);\n\t\treturn;\n\t}\n\n\t// `--offline` tiene que estar puesto en el entorno antes de que cualquier\n\t// módulo lo lea. Es lo mismo que hace `main()` en sus primeras líneas; se\n\t// repite aquí porque los subcomandos del atajo 2 ya no pasan por allí.\n\tif (args.includes(\"--offline\") || esBanderaVerdadera(process.env.PI_OFFLINE)) {\n\t\tprocess.env.PI_OFFLINE = \"1\";\n\t\tprocess.env.PI_SKIP_VERSION_CHECK = \"1\";\n\t}\n\n\t// Atajo 2: los subcomandos que no abren el TUI (audit, discover, banco,\n\t// review, commit, usage, wiki, serve, sessions, attach…). Ya cargaban sus\n\t// dependencias de forma perezosa; lo que se gana es no pagar el grafo de\n\t// `main.ts` para llegar hasta ellos.\n\t//\n\t// El orden respecto a `runAuthCommand` (que sigue dentro de `main()`) no\n\t// importa: `auth` no está en la lista de `isServeCommand`, así que los dos\n\t// conjuntos de argumentos son disjuntos.\n\t//\n\t// No se filtra con `isServeCommand` aquí: `runServeCommand` ya empieza por esa\n\t// misma comprobación y devuelve false. Repetirla solo abría la puerta a que\n\t// las dos listas se separaran.\n\tconst { runServeCommand } = await import(\"../../cli/serve-command.ts\");\n\tif (await runServeCommand(args)) return;\n\n\t// Camino normal: el CLI completo. El dispatcher se configura aquí y no antes\n\t// porque `undici` son 221 módulos medidos y los subcomandos que solo leen\n\t// ficheros no los necesitan. Tiene que ser ANTES de `main()`: `runAuthCommand`\n\t// usa la red en las primeras líneas de main, antes de su propia llamada.\n\tconst { configureHttpDispatcher } = await import(\"../http-dispatcher.ts\");\n\tconfigureHttpDispatcher();\n\tconst { main } = await import(\"../../main.ts\");\n\tawait main(args);\n}\n\n/**\n * Copia local de la lectura de banderas de entorno de `main.ts`. Son cuatro\n * líneas y traerlas desde allí obligaría a cargar `main.ts`, que es justo lo que\n * este fichero existe para evitar.\n */\nfunction esBanderaVerdadera(value: string | undefined): boolean {\n\tif (!value) return false;\n\treturn value === \"1\" || value.toLowerCase() === \"true\" || value.toLowerCase() === \"yes\";\n}\n"]}
|