@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,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* El tercer ámbito de configuración: el que el usuario NO puede editar.
|
|
3
|
+
*
|
|
4
|
+
* EL AGUJERO, medido: `settings-manager.ts:203` declara
|
|
5
|
+
* `type SettingsScope = "global" | "project"`, y los dos ficheros son
|
|
6
|
+
* `~/<config>/agent/settings.json` y `<proyecto>/<config>/settings.json`. Los
|
|
7
|
+
* dos los escribe el usuario. Así que la línea que el CISO puso para prohibir
|
|
8
|
+
* `yolo` la borra el propio usuario con un editor de texto y `yolo` vuelve a
|
|
9
|
+
* estar disponible. Lo mismo en oh-my-pi, prime-agent y pi.dev: dos ámbitos,
|
|
10
|
+
* los dos suyos.
|
|
11
|
+
*
|
|
12
|
+
* Una política que el sujeto de la política puede desactivar no es una
|
|
13
|
+
* política. Es una sugerencia con formato JSON.
|
|
14
|
+
*
|
|
15
|
+
* LA PROPIEDAD QUE LA HACE REAL, y es la única que importa: esta política
|
|
16
|
+
* **solo puede restringir**. Nunca amplía. Si el fichero de máquina dice
|
|
17
|
+
* `modoMaximo: "manual"` y el usuario pide `yolo`, sale `manual`; si dice
|
|
18
|
+
* `modoMaximo: "yolo"` y el usuario pide `manual`, sale `manual` igual. Un
|
|
19
|
+
* ámbito que pudiera subir permisos sería un agujero nuevo —quien escriba en
|
|
20
|
+
* `/etc` ya tiene la máquina, pero quien copie un fichero de política de otro
|
|
21
|
+
* sitio no debería poder ampliarle los permisos a nadie—.
|
|
22
|
+
*
|
|
23
|
+
* DÓNDE VIVE. En el sitio de cada sistema que exige administrador para
|
|
24
|
+
* escribir, que es lo que sostiene todo lo demás:
|
|
25
|
+
*
|
|
26
|
+
* macOS /Library/Application Support/Ada/politica.json
|
|
27
|
+
* Linux /etc/ada/politica.json
|
|
28
|
+
* Windows %ProgramData%\Ada\politica.json
|
|
29
|
+
*
|
|
30
|
+
* LO QUE NO RESUELVE, dicho antes de que lo descubra un cliente: un usuario con
|
|
31
|
+
* administrador en su propia máquina puede editar el fichero. Esto no defiende
|
|
32
|
+
* de eso y no puede: en un equipo gestionado, quien tiene root manda. Defiende
|
|
33
|
+
* del caso que sí ocurre en una empresa —un portátil corporativo donde el
|
|
34
|
+
* empleado no es administrador— y deja constancia en el libro de sesión de bajo
|
|
35
|
+
* qué política se decidió cada llamada.
|
|
36
|
+
*
|
|
37
|
+
* Y si el fichero resulta ser escribible por el usuario, se dice. Una política
|
|
38
|
+
* que se aplica pero no protege es peor que ninguna si se presenta como que
|
|
39
|
+
* protege: se sigue aplicando —solo puede restringir, así que aplicarla nunca
|
|
40
|
+
* empeora— pero el aviso sale por `stderr` y por `ada-cli audit`.
|
|
41
|
+
*/
|
|
42
|
+
import { accessSync, constants, readFileSync, statSync } from "node:fs";
|
|
43
|
+
import { dirname, win32 } from "node:path";
|
|
44
|
+
/** De menos a más permisivo. El orden ES la semántica del techo. */
|
|
45
|
+
const ORDEN = ["plan", "manual", "auto", "yolo"];
|
|
46
|
+
/** El sitio de cada sistema que pide administrador para escribir. */
|
|
47
|
+
export function rutaDeLaPolitica(plataforma = process.platform, entorno = process.env) {
|
|
48
|
+
if (plataforma === "win32") {
|
|
49
|
+
// `win32.join` y no `join`: esta función recibe la plataforma como
|
|
50
|
+
// parámetro, así que tiene que dar la ruta correcta también cuando se la
|
|
51
|
+
// pregunta desde macOS o Linux. Con `join` a secas salía
|
|
52
|
+
// `D:\ProgramData/Ada/politica.json`, con los separadores mezclados.
|
|
53
|
+
return win32.join(entorno.ProgramData ?? "C:\\ProgramData", "Ada", "politica.json");
|
|
54
|
+
}
|
|
55
|
+
if (plataforma === "darwin") {
|
|
56
|
+
return "/Library/Application Support/Ada/politica.json";
|
|
57
|
+
}
|
|
58
|
+
return "/etc/ada/politica.json";
|
|
59
|
+
}
|
|
60
|
+
function esModo(x) {
|
|
61
|
+
return typeof x === "string" && ORDEN.includes(x);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Lee la política de máquina.
|
|
65
|
+
*
|
|
66
|
+
* Un fichero que existe y no se entiende NO se trata como que no existe: eso
|
|
67
|
+
* convertiría un error de sintaxis del administrador en una vía silenciosa para
|
|
68
|
+
* quedarse sin política. Se devuelve `ilegible`, y quien decide lo baja a lo
|
|
69
|
+
* más restrictivo — igual que hace `nivelDesdeConfig` con un nivel desconocido.
|
|
70
|
+
*/
|
|
71
|
+
export function leerPoliticaDeMaquina(ruta = rutaDeLaPolitica()) {
|
|
72
|
+
let crudo;
|
|
73
|
+
try {
|
|
74
|
+
crudo = readFileSync(ruta, "utf-8");
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
const codigo = error.code;
|
|
78
|
+
if (codigo === "ENOENT") {
|
|
79
|
+
return { politica: null, ruta, estado: "ausente", editablePorElUsuario: false, aviso: "" };
|
|
80
|
+
}
|
|
81
|
+
// Existe pero no se deja leer —permisos, por ejemplo—. «No he podido
|
|
82
|
+
// mirarlo» no es «no hay nada».
|
|
83
|
+
return {
|
|
84
|
+
politica: null,
|
|
85
|
+
ruta,
|
|
86
|
+
estado: "ilegible",
|
|
87
|
+
editablePorElUsuario: false,
|
|
88
|
+
aviso: `hay una política de máquina en ${ruta} y no se ha podido leer (${codigo ?? "error"})`,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
let objeto;
|
|
92
|
+
try {
|
|
93
|
+
objeto = JSON.parse(crudo);
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
return {
|
|
97
|
+
politica: null,
|
|
98
|
+
ruta,
|
|
99
|
+
estado: "ilegible",
|
|
100
|
+
editablePorElUsuario: false,
|
|
101
|
+
aviso: `la política de máquina de ${ruta} no es JSON válido`,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
if (typeof objeto !== "object" || objeto === null) {
|
|
105
|
+
return {
|
|
106
|
+
politica: null,
|
|
107
|
+
ruta,
|
|
108
|
+
estado: "ilegible",
|
|
109
|
+
editablePorElUsuario: false,
|
|
110
|
+
aviso: `la política de máquina de ${ruta} no es un objeto`,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
const o = objeto;
|
|
114
|
+
// Un `modoMaximo` que no se entiende es lo mismo que no poder leer el
|
|
115
|
+
// fichero: si se ignorara, bastaría una errata para desactivar el techo.
|
|
116
|
+
if (o.modoMaximo !== undefined && !esModo(o.modoMaximo)) {
|
|
117
|
+
return {
|
|
118
|
+
politica: null,
|
|
119
|
+
ruta,
|
|
120
|
+
estado: "ilegible",
|
|
121
|
+
editablePorElUsuario: false,
|
|
122
|
+
aviso: `"modoMaximo" vale ${JSON.stringify(o.modoMaximo)} en ${ruta}, y no es ninguno de ${ORDEN.join(", ")}`,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
const politica = {
|
|
126
|
+
...(esModo(o.modoMaximo) ? { modoMaximo: o.modoMaximo } : {}),
|
|
127
|
+
...(Array.isArray(o.denegadas)
|
|
128
|
+
? { denegadas: o.denegadas.filter((x) => typeof x === "string") }
|
|
129
|
+
: {}),
|
|
130
|
+
...(typeof o.motivo === "string" ? { motivo: o.motivo } : {}),
|
|
131
|
+
};
|
|
132
|
+
const editable = escribiblePorElUsuario(ruta);
|
|
133
|
+
return {
|
|
134
|
+
politica,
|
|
135
|
+
ruta,
|
|
136
|
+
estado: "aplicada",
|
|
137
|
+
editablePorElUsuario: editable,
|
|
138
|
+
aviso: editable
|
|
139
|
+
? `la política de máquina de ${ruta} la puede editar este usuario, así que no garantiza nada`
|
|
140
|
+
: "",
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* ¿Puede este usuario reescribir el fichero de política?
|
|
145
|
+
*
|
|
146
|
+
* Se comprueba el fichero Y su directorio: poder escribir en el directorio
|
|
147
|
+
* basta para sustituir el fichero entero, y mirar solo el fichero daría por
|
|
148
|
+
* protegida una política que cualquiera puede reemplazar.
|
|
149
|
+
*/
|
|
150
|
+
function escribiblePorElUsuario(ruta) {
|
|
151
|
+
const puedeEscribir = (p) => {
|
|
152
|
+
try {
|
|
153
|
+
accessSync(p, constants.W_OK);
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
if (puedeEscribir(ruta))
|
|
161
|
+
return true;
|
|
162
|
+
try {
|
|
163
|
+
// `dirname` y no partir por "/" a mano: esta comprobación sí corre en la
|
|
164
|
+
// máquina de verdad, y en Windows el separador es el otro.
|
|
165
|
+
const dir = dirname(ruta);
|
|
166
|
+
statSync(dir);
|
|
167
|
+
return puedeEscribir(dir);
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Aplica el techo. **Solo baja.**
|
|
175
|
+
*
|
|
176
|
+
* `ilegible` cae a `manual`, el más restrictivo utilizable: un fichero de
|
|
177
|
+
* política que el administrador escribió mal no puede acabar dando MÁS permisos
|
|
178
|
+
* de los que él pretendía. `plan` no se usa como caída porque dejaría el agente
|
|
179
|
+
* sin poder actuar en absoluto por una coma mal puesta.
|
|
180
|
+
*/
|
|
181
|
+
export function recortarModo(pedido, lectura) {
|
|
182
|
+
if (lectura.estado === "ausente")
|
|
183
|
+
return pedido;
|
|
184
|
+
if (lectura.estado === "ilegible") {
|
|
185
|
+
return ORDEN.indexOf(pedido) < ORDEN.indexOf("manual") ? pedido : "manual";
|
|
186
|
+
}
|
|
187
|
+
const techo = lectura.politica?.modoMaximo;
|
|
188
|
+
if (!techo)
|
|
189
|
+
return pedido;
|
|
190
|
+
return ORDEN.indexOf(pedido) <= ORDEN.indexOf(techo) ? pedido : techo;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* La política leída una vez por proceso.
|
|
194
|
+
*
|
|
195
|
+
* Se lee perezosamente —en la primera decisión, no al importar— porque el
|
|
196
|
+
* arranque tiene puerta medida (`scripts/check-arranque.mjs`) y un `readFileSync`
|
|
197
|
+
* en tiempo de importación se paga en cada `--version`.
|
|
198
|
+
*/
|
|
199
|
+
let cacheada = null;
|
|
200
|
+
export function politicaDeMaquina() {
|
|
201
|
+
if (!cacheada) {
|
|
202
|
+
cacheada = leerPoliticaDeMaquina();
|
|
203
|
+
if (cacheada.aviso)
|
|
204
|
+
console.error(`Ada: ${cacheada.aviso}.`);
|
|
205
|
+
}
|
|
206
|
+
return cacheada;
|
|
207
|
+
}
|
|
208
|
+
/** Para las pruebas: vuelve a leer la próxima vez. */
|
|
209
|
+
export function olvidarPoliticaDeMaquina() {
|
|
210
|
+
cacheada = null;
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=politica-de-maquina.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"politica-de-maquina.js","sourceRoot":"","sources":["../../../src/core/aprobacion/politica-de-maquina.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAG3C,sEAAoE;AACpE,MAAM,KAAK,GAA2B,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AA4BzE,qEAAqE;AACrE,MAAM,UAAU,gBAAgB,CAAC,UAAU,GAAoB,OAAO,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,EAAU;IAC/G,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC5B,oEAAmE;QACnE,4EAAyE;QACzE,0DAAyD;QACzD,qEAAqE;QACrE,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,iBAAiB,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;IACrF,CAAC;IACD,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,gDAAgD,CAAC;IACzD,CAAC;IACD,OAAO,wBAAwB,CAAC;AAAA,CAChC;AAED,SAAS,MAAM,CAAC,CAAU,EAAoB;IAC7C,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAK,KAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAAA,CACzE;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAI,GAAG,gBAAgB,EAAE,EAAqB;IACnF,IAAI,KAAa,CAAC;IAClB,IAAI,CAAC;QACJ,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,MAAM,GAAI,KAA+B,CAAC,IAAI,CAAC;QACrD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAC5F,CAAC;QACD,0EAAqE;QACrE,mCAAgC;QAChC,OAAO;YACN,QAAQ,EAAE,IAAI;YACd,IAAI;YACJ,MAAM,EAAE,UAAU;YAClB,oBAAoB,EAAE,KAAK;YAC3B,KAAK,EAAE,oCAAkC,IAAI,4BAA4B,MAAM,IAAI,OAAO,GAAG;SAC7F,CAAC;IACH,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACJ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACR,OAAO;YACN,QAAQ,EAAE,IAAI;YACd,IAAI;YACJ,MAAM,EAAE,UAAU;YAClB,oBAAoB,EAAE,KAAK;YAC3B,KAAK,EAAE,+BAA6B,IAAI,qBAAoB;SAC5D,CAAC;IACH,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACnD,OAAO;YACN,QAAQ,EAAE,IAAI;YACd,IAAI;YACJ,MAAM,EAAE,UAAU;YAClB,oBAAoB,EAAE,KAAK;YAC3B,KAAK,EAAE,+BAA6B,IAAI,kBAAkB;SAC1D,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAG,MAAiC,CAAC;IAC5C,sEAAsE;IACtE,0EAAyE;IACzE,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;QACzD,OAAO;YACN,QAAQ,EAAE,IAAI;YACd,IAAI;YACJ,MAAM,EAAE,UAAU;YAClB,oBAAoB,EAAE,KAAK;YAC3B,KAAK,EAAE,qBAAqB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,IAAI,wBAAwB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAC7G,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAsB;QACnC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7B,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE;YAC9E,CAAC,CAAC,EAAE,CAAC;QACN,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7D,CAAC;IAEF,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC9C,OAAO;QACN,QAAQ;QACR,IAAI;QACJ,MAAM,EAAE,UAAU;QAClB,oBAAoB,EAAE,QAAQ;QAC9B,KAAK,EAAE,QAAQ;YACd,CAAC,CAAC,+BAA6B,IAAI,2DAA0D;YAC7F,CAAC,CAAC,EAAE;KACL,CAAC;AAAA,CACF;AAED;;;;;;GAMG;AACH,SAAS,sBAAsB,CAAC,IAAY,EAAW;IACtD,MAAM,aAAa,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC;QAC7C,IAAI,CAAC;YACJ,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,KAAK,CAAC;QACd,CAAC;IAAA,CACD,CAAC;IACF,IAAI,aAAa,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,CAAC;QACJ,2EAAyE;QACzE,4DAA2D;QAC3D,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,QAAQ,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AAAA,CACD;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,MAAmB,EAAE,OAA0B,EAAe;IAC1F,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAChD,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5E,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAC1B,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AAAA,CACtE;AAED;;;;;;GAMG;AACH,IAAI,QAAQ,GAA6B,IAAI,CAAC;AAE9C,MAAM,UAAU,iBAAiB,GAAsB;IACtD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,QAAQ,GAAG,qBAAqB,EAAE,CAAC;QACnC,IAAI,QAAQ,CAAC,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,QAAQ,CAAC;AAAA,CAChB;AAED,uDAAsD;AACtD,MAAM,UAAU,wBAAwB,GAAS;IAChD,QAAQ,GAAG,IAAI,CAAC;AAAA,CAChB","sourcesContent":["/**\n * El tercer ámbito de configuración: el que el usuario NO puede editar.\n *\n * EL AGUJERO, medido: `settings-manager.ts:203` declara\n * `type SettingsScope = \"global\" | \"project\"`, y los dos ficheros son\n * `~/<config>/agent/settings.json` y `<proyecto>/<config>/settings.json`. Los\n * dos los escribe el usuario. Así que la línea que el CISO puso para prohibir\n * `yolo` la borra el propio usuario con un editor de texto y `yolo` vuelve a\n * estar disponible. Lo mismo en oh-my-pi, prime-agent y pi.dev: dos ámbitos,\n * los dos suyos.\n *\n * Una política que el sujeto de la política puede desactivar no es una\n * política. Es una sugerencia con formato JSON.\n *\n * LA PROPIEDAD QUE LA HACE REAL, y es la única que importa: esta política\n * **solo puede restringir**. Nunca amplía. Si el fichero de máquina dice\n * `modoMaximo: \"manual\"` y el usuario pide `yolo`, sale `manual`; si dice\n * `modoMaximo: \"yolo\"` y el usuario pide `manual`, sale `manual` igual. Un\n * ámbito que pudiera subir permisos sería un agujero nuevo —quien escriba en\n * `/etc` ya tiene la máquina, pero quien copie un fichero de política de otro\n * sitio no debería poder ampliarle los permisos a nadie—.\n *\n * DÓNDE VIVE. En el sitio de cada sistema que exige administrador para\n * escribir, que es lo que sostiene todo lo demás:\n *\n * macOS /Library/Application Support/Ada/politica.json\n * Linux /etc/ada/politica.json\n * Windows %ProgramData%\\Ada\\politica.json\n *\n * LO QUE NO RESUELVE, dicho antes de que lo descubra un cliente: un usuario con\n * administrador en su propia máquina puede editar el fichero. Esto no defiende\n * de eso y no puede: en un equipo gestionado, quien tiene root manda. Defiende\n * del caso que sí ocurre en una empresa —un portátil corporativo donde el\n * empleado no es administrador— y deja constancia en el libro de sesión de bajo\n * qué política se decidió cada llamada.\n *\n * Y si el fichero resulta ser escribible por el usuario, se dice. Una política\n * que se aplica pero no protege es peor que ninguna si se presenta como que\n * protege: se sigue aplicando —solo puede restringir, así que aplicarla nunca\n * empeora— pero el aviso sale por `stderr` y por `ada-cli audit`.\n */\n\nimport { accessSync, constants, readFileSync, statSync } from \"node:fs\";\nimport { dirname, win32 } from \"node:path\";\nimport type { ModoPermiso } from \"./politica.ts\";\n\n/** De menos a más permisivo. El orden ES la semántica del techo. */\nconst ORDEN: readonly ModoPermiso[] = [\"plan\", \"manual\", \"auto\", \"yolo\"];\n\nexport interface PoliticaDeMaquina {\n\t/** Techo del modo de permisos. Nunca sube el del usuario, solo lo baja. */\n\tmodoMaximo?: ModoPermiso;\n\t/** Tools denegadas para todo el equipo. Se suman a las del usuario. */\n\tdenegadas?: string[];\n\t/** Qué contarle a quien se topa con el bloqueo. Va al mensaje del modelo. */\n\tmotivo?: string;\n}\n\n/** Qué se leyó y qué garantía tiene. Nunca «no hay» cuando es «no pude». */\nexport interface LecturaDePolitica {\n\tpolitica: PoliticaDeMaquina | null;\n\truta: string;\n\t/**\n\t * Tres estados y no dos:\n\t * · `ausente` — no hay fichero. No hay política, y eso es una respuesta.\n\t * · `aplicada` — leído y en vigor.\n\t * · `ilegible` — existe y no se ha podido leer o entender. NO es «no hay».\n\t */\n\testado: \"ausente\" | \"aplicada\" | \"ilegible\";\n\t/** `true` si el usuario puede escribir el fichero: entonces no garantiza nada. */\n\teditablePorElUsuario: boolean;\n\t/** Explicación para el aviso. Vacía cuando no hay nada que decir. */\n\taviso: string;\n}\n\n/** El sitio de cada sistema que pide administrador para escribir. */\nexport function rutaDeLaPolitica(plataforma: NodeJS.Platform = process.platform, entorno = process.env): string {\n\tif (plataforma === \"win32\") {\n\t\t// `win32.join` y no `join`: esta función recibe la plataforma como\n\t\t// parámetro, así que tiene que dar la ruta correcta también cuando se la\n\t\t// pregunta desde macOS o Linux. Con `join` a secas salía\n\t\t// `D:\\ProgramData/Ada/politica.json`, con los separadores mezclados.\n\t\treturn win32.join(entorno.ProgramData ?? \"C:\\\\ProgramData\", \"Ada\", \"politica.json\");\n\t}\n\tif (plataforma === \"darwin\") {\n\t\treturn \"/Library/Application Support/Ada/politica.json\";\n\t}\n\treturn \"/etc/ada/politica.json\";\n}\n\nfunction esModo(x: unknown): x is ModoPermiso {\n\treturn typeof x === \"string\" && (ORDEN as readonly string[]).includes(x);\n}\n\n/**\n * Lee la política de máquina.\n *\n * Un fichero que existe y no se entiende NO se trata como que no existe: eso\n * convertiría un error de sintaxis del administrador en una vía silenciosa para\n * quedarse sin política. Se devuelve `ilegible`, y quien decide lo baja a lo\n * más restrictivo — igual que hace `nivelDesdeConfig` con un nivel desconocido.\n */\nexport function leerPoliticaDeMaquina(ruta = rutaDeLaPolitica()): LecturaDePolitica {\n\tlet crudo: string;\n\ttry {\n\t\tcrudo = readFileSync(ruta, \"utf-8\");\n\t} catch (error) {\n\t\tconst codigo = (error as NodeJS.ErrnoException).code;\n\t\tif (codigo === \"ENOENT\") {\n\t\t\treturn { politica: null, ruta, estado: \"ausente\", editablePorElUsuario: false, aviso: \"\" };\n\t\t}\n\t\t// Existe pero no se deja leer —permisos, por ejemplo—. «No he podido\n\t\t// mirarlo» no es «no hay nada».\n\t\treturn {\n\t\t\tpolitica: null,\n\t\t\truta,\n\t\t\testado: \"ilegible\",\n\t\t\teditablePorElUsuario: false,\n\t\t\taviso: `hay una política de máquina en ${ruta} y no se ha podido leer (${codigo ?? \"error\"})`,\n\t\t};\n\t}\n\n\tlet objeto: unknown;\n\ttry {\n\t\tobjeto = JSON.parse(crudo);\n\t} catch {\n\t\treturn {\n\t\t\tpolitica: null,\n\t\t\truta,\n\t\t\testado: \"ilegible\",\n\t\t\teditablePorElUsuario: false,\n\t\t\taviso: `la política de máquina de ${ruta} no es JSON válido`,\n\t\t};\n\t}\n\tif (typeof objeto !== \"object\" || objeto === null) {\n\t\treturn {\n\t\t\tpolitica: null,\n\t\t\truta,\n\t\t\testado: \"ilegible\",\n\t\t\teditablePorElUsuario: false,\n\t\t\taviso: `la política de máquina de ${ruta} no es un objeto`,\n\t\t};\n\t}\n\n\tconst o = objeto as Record<string, unknown>;\n\t// Un `modoMaximo` que no se entiende es lo mismo que no poder leer el\n\t// fichero: si se ignorara, bastaría una errata para desactivar el techo.\n\tif (o.modoMaximo !== undefined && !esModo(o.modoMaximo)) {\n\t\treturn {\n\t\t\tpolitica: null,\n\t\t\truta,\n\t\t\testado: \"ilegible\",\n\t\t\teditablePorElUsuario: false,\n\t\t\taviso: `\"modoMaximo\" vale ${JSON.stringify(o.modoMaximo)} en ${ruta}, y no es ninguno de ${ORDEN.join(\", \")}`,\n\t\t};\n\t}\n\n\tconst politica: PoliticaDeMaquina = {\n\t\t...(esModo(o.modoMaximo) ? { modoMaximo: o.modoMaximo } : {}),\n\t\t...(Array.isArray(o.denegadas)\n\t\t\t? { denegadas: o.denegadas.filter((x): x is string => typeof x === \"string\") }\n\t\t\t: {}),\n\t\t...(typeof o.motivo === \"string\" ? { motivo: o.motivo } : {}),\n\t};\n\n\tconst editable = escribiblePorElUsuario(ruta);\n\treturn {\n\t\tpolitica,\n\t\truta,\n\t\testado: \"aplicada\",\n\t\teditablePorElUsuario: editable,\n\t\taviso: editable\n\t\t\t? `la política de máquina de ${ruta} la puede editar este usuario, así que no garantiza nada`\n\t\t\t: \"\",\n\t};\n}\n\n/**\n * ¿Puede este usuario reescribir el fichero de política?\n *\n * Se comprueba el fichero Y su directorio: poder escribir en el directorio\n * basta para sustituir el fichero entero, y mirar solo el fichero daría por\n * protegida una política que cualquiera puede reemplazar.\n */\nfunction escribiblePorElUsuario(ruta: string): boolean {\n\tconst puedeEscribir = (p: string): boolean => {\n\t\ttry {\n\t\t\taccessSync(p, constants.W_OK);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t};\n\tif (puedeEscribir(ruta)) return true;\n\ttry {\n\t\t// `dirname` y no partir por \"/\" a mano: esta comprobación sí corre en la\n\t\t// máquina de verdad, y en Windows el separador es el otro.\n\t\tconst dir = dirname(ruta);\n\t\tstatSync(dir);\n\t\treturn puedeEscribir(dir);\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/**\n * Aplica el techo. **Solo baja.**\n *\n * `ilegible` cae a `manual`, el más restrictivo utilizable: un fichero de\n * política que el administrador escribió mal no puede acabar dando MÁS permisos\n * de los que él pretendía. `plan` no se usa como caída porque dejaría el agente\n * sin poder actuar en absoluto por una coma mal puesta.\n */\nexport function recortarModo(pedido: ModoPermiso, lectura: LecturaDePolitica): ModoPermiso {\n\tif (lectura.estado === \"ausente\") return pedido;\n\tif (lectura.estado === \"ilegible\") {\n\t\treturn ORDEN.indexOf(pedido) < ORDEN.indexOf(\"manual\") ? pedido : \"manual\";\n\t}\n\tconst techo = lectura.politica?.modoMaximo;\n\tif (!techo) return pedido;\n\treturn ORDEN.indexOf(pedido) <= ORDEN.indexOf(techo) ? pedido : techo;\n}\n\n/**\n * La política leída una vez por proceso.\n *\n * Se lee perezosamente —en la primera decisión, no al importar— porque el\n * arranque tiene puerta medida (`scripts/check-arranque.mjs`) y un `readFileSync`\n * en tiempo de importación se paga en cada `--version`.\n */\nlet cacheada: LecturaDePolitica | null = null;\n\nexport function politicaDeMaquina(): LecturaDePolitica {\n\tif (!cacheada) {\n\t\tcacheada = leerPoliticaDeMaquina();\n\t\tif (cacheada.aviso) console.error(`Ada: ${cacheada.aviso}.`);\n\t}\n\treturn cacheada;\n}\n\n/** Para las pruebas: vuelve a leer la próxima vez. */\nexport function olvidarPoliticaDeMaquina(): void {\n\tcacheada = null;\n}\n"]}
|
|
@@ -0,0 +1,90 @@
|
|
|
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 { type LecturaDePolitica } from "./politica-de-maquina.ts";
|
|
25
|
+
export type NivelTool = "lectura" | "escritura" | "ejecucion";
|
|
26
|
+
export type ModoPermiso = "plan" | "manual" | "auto" | "yolo";
|
|
27
|
+
export type VeredictoAprobacion = "permitida" | "denegada" | "preguntar";
|
|
28
|
+
export interface Decision {
|
|
29
|
+
veredicto: VeredictoAprobacion;
|
|
30
|
+
/** Qué regla decidió. Va al libro de sesión, así que tiene que ser estable. */
|
|
31
|
+
politica: string;
|
|
32
|
+
/** Texto para el modelo y para el usuario. Vacío cuando no hay nada que explicar. */
|
|
33
|
+
motivo: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* ¿Este nombre es de una tool NUESTRA cuyo nivel de confianza da esta política?
|
|
37
|
+
*
|
|
38
|
+
* Lo consulta el registro de extensiones para saber si `registerTool` está
|
|
39
|
+
* suplantando una builtin. `bash` va aparte porque no está en ninguna de las dos
|
|
40
|
+
* listas —lo desconocido ya es ejecución— pero suplantarlo importa igual: el
|
|
41
|
+
* usuario tiene que ver que el `bash` que corre no es el nuestro.
|
|
42
|
+
*/
|
|
43
|
+
export declare function esNombreDeToolNuestra(tool: string): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* El nivel de una herramienta. Lo que no está clasificado es ejecución.
|
|
46
|
+
*
|
|
47
|
+
* Falla cerrado a propósito: el coste de equivocarse hacia arriba es una
|
|
48
|
+
* pregunta de más; hacia abajo, es una tool desconocida corriendo sola.
|
|
49
|
+
*/
|
|
50
|
+
export declare function nivelDe(tool: string): NivelTool;
|
|
51
|
+
export interface EntradaDecision {
|
|
52
|
+
tool: string;
|
|
53
|
+
args: Record<string, unknown>;
|
|
54
|
+
modo: ModoPermiso;
|
|
55
|
+
agentDir: string;
|
|
56
|
+
/**
|
|
57
|
+
* Directorio del usuario, para resolver `~` y `$HOME` antes de comparar.
|
|
58
|
+
*
|
|
59
|
+
* Opcional y con `homedir()` por defecto para que el punto de llamada no
|
|
60
|
+
* tenga que importarlo: `agent-session.ts` es de upstream y está en el tope
|
|
61
|
+
* del presupuesto de fork, donde un `import` nuevo cuesta un hunk. Las
|
|
62
|
+
* pruebas lo pasan siempre, así que siguen siendo deterministas.
|
|
63
|
+
*/
|
|
64
|
+
home?: string;
|
|
65
|
+
/** Tools que el usuario ha denegado explícitamente en su configuración. */
|
|
66
|
+
denegadas?: string[];
|
|
67
|
+
/**
|
|
68
|
+
* La política de máquina, para las pruebas.
|
|
69
|
+
*
|
|
70
|
+
* Opcional, y por defecto la del sistema. NO se lee de una variable de
|
|
71
|
+
* entorno a propósito: una variable la pone el propio usuario, así que sería
|
|
72
|
+
* la puerta trasera que anula toda la política de un `export`. Quien ya
|
|
73
|
+
* ejecuta código en este proceso puede saltársela igual —la frontera es el
|
|
74
|
+
* proceso, no esta función—, pero no debe haber un camino cómodo.
|
|
75
|
+
*/
|
|
76
|
+
maquina?: LecturaDePolitica;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Lee `permissions.denied` de la configuración, tolerando que no exista.
|
|
80
|
+
*
|
|
81
|
+
* El bloque `permissions` es un `Record<string, unknown>` en settings, así que
|
|
82
|
+
* lo que hay ahí no está tipado y puede ser cualquier cosa: se filtra a cadenas
|
|
83
|
+
* en vez de confiar. Una entrada mal escrita tiene que perderse ella sola, no
|
|
84
|
+
* tumbar la política entera y con ella la sesión.
|
|
85
|
+
*/
|
|
86
|
+
export declare function leerDenegadas(config: {
|
|
87
|
+
permissions?: Record<string, unknown>;
|
|
88
|
+
} | undefined): string[];
|
|
89
|
+
export declare function decidir({ tool, args, modo, agentDir, home, denegadas, maquina: maquinaDada }: EntradaDecision): Decision;
|
|
90
|
+
//# sourceMappingURL=politica.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"politica.d.ts","sourceRoot":"","sources":["../../../src/core/aprobacion/politica.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAQH,OAAO,EAAE,KAAK,iBAAiB,EAAmC,MAAM,0BAA0B,CAAC;AAenG,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;AAC9D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAC9D,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,CAAC;AAEzE,MAAM,WAAW,QAAQ;IACxB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,mFAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAC;IACjB,sFAAqF;IACrF,MAAM,EAAE,MAAM,CAAC;CACf;AAkCD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAY/C;AAmJD,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAGrG;AAED,wBAAgB,OAAO,CAAC,EACvB,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,OAAO,EAAE,WAAW,EACpB,EAAE,eAAe,GAAG,QAAQ,CA4G5B","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"]}
|