@hoilab/ada-cli 0.85.0 → 0.85.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ada-publico.d.ts.map +1 -1
- package/dist/ada-publico.js.map +1 -1
- package/dist/bun/cli.d.ts.map +1 -1
- package/dist/bun/cli.js.map +1 -1
- package/dist/bun/register-bedrock.d.ts.map +1 -1
- package/dist/bun/register-bedrock.js.map +1 -1
- package/dist/bun/restore-sandbox-env.d.ts.map +1 -1
- package/dist/bun/restore-sandbox-env.js.map +1 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/audit-command.d.ts.map +1 -1
- package/dist/cli/audit-command.js.map +1 -1
- package/dist/cli/auth-check.d.ts.map +1 -1
- package/dist/cli/auth-check.js.map +1 -1
- package/dist/cli/auth-command.d.ts.map +1 -1
- package/dist/cli/auth-command.js.map +1 -1
- package/dist/cli/banco-command.d.ts.map +1 -1
- package/dist/cli/banco-command.js.map +1 -1
- package/dist/cli/cleanse-command.d.ts.map +1 -1
- package/dist/cli/cleanse-command.js +5 -2
- package/dist/cli/cleanse-command.js.map +1 -1
- package/dist/cli/commit-command.d.ts +8 -6
- package/dist/cli/commit-command.d.ts.map +1 -1
- package/dist/cli/commit-command.js +124 -92
- package/dist/cli/commit-command.js.map +1 -1
- package/dist/cli/completion.d.ts +20 -0
- package/dist/cli/completion.d.ts.map +1 -0
- package/dist/cli/completion.js +75 -0
- package/dist/cli/completion.js.map +1 -0
- package/dist/cli/computer-command.d.ts.map +1 -1
- package/dist/cli/computer-command.js.map +1 -1
- package/dist/cli/config-selector.d.ts.map +1 -1
- package/dist/cli/config-selector.js.map +1 -1
- package/dist/cli/credential-print.d.ts.map +1 -1
- package/dist/cli/credential-print.js.map +1 -1
- package/dist/cli/discover-command.d.ts.map +1 -1
- package/dist/cli/discover-command.js +5 -1
- package/dist/cli/discover-command.js.map +1 -1
- package/dist/cli/experimental/auth.d.ts.map +1 -1
- package/dist/cli/experimental/auth.js.map +1 -1
- package/dist/cli/experimental/cli.d.ts +1 -1
- package/dist/cli/experimental/cli.d.ts.map +1 -1
- package/dist/cli/experimental/cli.js.map +1 -1
- package/dist/cli/experimental/command-options.d.ts.map +1 -1
- package/dist/cli/experimental/command-options.js.map +1 -1
- package/dist/cli/experimental/command.d.ts.map +1 -1
- package/dist/cli/experimental/command.js.map +1 -1
- package/dist/cli/experimental/commands/client.d.ts.map +1 -1
- package/dist/cli/experimental/commands/client.js.map +1 -1
- package/dist/cli/experimental/commands/pi.d.ts.map +1 -1
- package/dist/cli/experimental/commands/pi.js.map +1 -1
- package/dist/cli/experimental/commands/server.d.ts.map +1 -1
- package/dist/cli/experimental/commands/server.js.map +1 -1
- package/dist/cli/experimental/transport-address.d.ts.map +1 -1
- package/dist/cli/experimental/transport-address.js.map +1 -1
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/cli/guardrails.d.ts +14 -0
- package/dist/cli/guardrails.d.ts.map +1 -0
- package/dist/cli/guardrails.js +47 -0
- package/dist/cli/guardrails.js.map +1 -0
- package/dist/cli/hashline-command.d.ts.map +1 -1
- package/dist/cli/hashline-command.js.map +1 -1
- package/dist/cli/home-screen.d.ts.map +1 -1
- package/dist/cli/home-screen.js +1 -0
- package/dist/cli/home-screen.js.map +1 -1
- package/dist/cli/import-command.d.ts.map +1 -1
- package/dist/cli/import-command.js.map +1 -1
- package/dist/cli/initial-message.d.ts +1 -1
- package/dist/cli/initial-message.d.ts.map +1 -1
- package/dist/cli/initial-message.js.map +1 -1
- package/dist/cli/list-models.d.ts.map +1 -1
- package/dist/cli/list-models.js.map +1 -1
- package/dist/cli/politica-command.d.ts.map +1 -1
- package/dist/cli/politica-command.js.map +1 -1
- package/dist/cli/project-trust.d.ts.map +1 -1
- package/dist/cli/project-trust.js.map +1 -1
- package/dist/cli/refine-command.d.ts.map +1 -1
- package/dist/cli/refine-command.js.map +1 -1
- package/dist/cli/review-command.d.ts.map +1 -1
- package/dist/cli/review-command.js +77 -13
- package/dist/cli/review-command.js.map +1 -1
- package/dist/cli/schedule-command.d.ts.map +1 -1
- package/dist/cli/schedule-command.js.map +1 -1
- package/dist/cli/serve-command.d.ts +0 -1
- package/dist/cli/serve-command.d.ts.map +1 -1
- package/dist/cli/serve-command.js +12 -6
- package/dist/cli/serve-command.js.map +1 -1
- package/dist/cli/session-picker.d.ts.map +1 -1
- package/dist/cli/session-picker.js.map +1 -1
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/cli/telegram-command.d.ts.map +1 -1
- package/dist/cli/telegram-command.js.map +1 -1
- package/dist/cli/telemetria-command.d.ts.map +1 -1
- package/dist/cli/telemetria-command.js.map +1 -1
- package/dist/cli/undo-command.d.ts.map +1 -1
- package/dist/cli/undo-command.js.map +1 -1
- package/dist/cli/update-cli.d.ts +82 -0
- package/dist/cli/update-cli.d.ts.map +1 -0
- package/dist/cli/update-cli.js +372 -0
- package/dist/cli/update-cli.js.map +1 -0
- package/dist/cli/usage-command.d.ts.map +1 -1
- package/dist/cli/usage-command.js +75 -6
- package/dist/cli/usage-command.js.map +1 -1
- package/dist/cli/wiki-command.d.ts.map +1 -1
- package/dist/cli/wiki-command.js.map +1 -1
- package/dist/cli.d.ts +0 -6
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +0 -0
- package/dist/cli.js.map +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/remote-session.d.ts.map +1 -1
- package/dist/client/remote-session.js.map +1 -1
- package/dist/client/transcript.d.ts.map +1 -1
- package/dist/client/transcript.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/core/ada.d.ts +5 -0
- package/dist/core/ada.d.ts.map +1 -1
- package/dist/core/ada.js +5 -0
- package/dist/core/ada.js.map +1 -1
- package/dist/core/advisor/guarda.d.ts.map +1 -1
- package/dist/core/advisor/guarda.js.map +1 -1
- package/dist/core/advisor/runtime.d.ts.map +1 -1
- package/dist/core/advisor/runtime.js.map +1 -1
- package/dist/core/advisor/sesion.d.ts.map +1 -1
- package/dist/core/advisor/sesion.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +33 -0
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +67 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +43 -2
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/agents/loader.d.ts.map +1 -1
- package/dist/core/agents/loader.js.map +1 -1
- package/dist/core/appendonly/append-only-context.d.ts +118 -0
- package/dist/core/appendonly/append-only-context.d.ts.map +1 -0
- package/dist/core/appendonly/append-only-context.js +256 -0
- package/dist/core/appendonly/append-only-context.js.map +1 -0
- package/dist/core/appendonly/auto.d.ts +30 -0
- package/dist/core/appendonly/auto.d.ts.map +1 -0
- package/dist/core/appendonly/auto.js +68 -0
- package/dist/core/appendonly/auto.js.map +1 -0
- package/dist/core/appendonly/extension.d.ts +29 -0
- package/dist/core/appendonly/extension.d.ts.map +1 -0
- package/dist/core/appendonly/extension.js +51 -0
- package/dist/core/appendonly/extension.js.map +1 -0
- package/dist/core/appendonly/index.d.ts +41 -0
- package/dist/core/appendonly/index.d.ts.map +1 -0
- package/dist/core/appendonly/index.js +42 -0
- package/dist/core/appendonly/index.js.map +1 -0
- package/dist/core/aprobacion/generados.d.ts.map +1 -1
- package/dist/core/aprobacion/generados.js.map +1 -1
- package/dist/core/aprobacion/politica-de-maquina.d.ts.map +1 -1
- package/dist/core/aprobacion/politica-de-maquina.js.map +1 -1
- package/dist/core/aprobacion/politica.d.ts +1 -1
- package/dist/core/aprobacion/politica.d.ts.map +1 -1
- package/dist/core/aprobacion/politica.js.map +1 -1
- package/dist/core/arranque/atajos.d.ts.map +1 -1
- package/dist/core/arranque/atajos.js +20 -0
- package/dist/core/arranque/atajos.js.map +1 -1
- package/dist/core/audit/exportacion.d.ts.map +1 -1
- package/dist/core/audit/exportacion.js +5 -3
- package/dist/core/audit/exportacion.js.map +1 -1
- package/dist/core/audit/libro.d.ts +7 -0
- package/dist/core/audit/libro.d.ts.map +1 -1
- package/dist/core/audit/libro.js.map +1 -1
- package/dist/core/audit/registro-sesion.d.ts.map +1 -1
- package/dist/core/audit/registro-sesion.js.map +1 -1
- package/dist/core/audit/retencion.d.ts.map +1 -1
- package/dist/core/audit/retencion.js.map +1 -1
- package/dist/core/audit/rutas.d.ts.map +1 -1
- package/dist/core/audit/rutas.js.map +1 -1
- package/dist/core/auth-guidance.d.ts.map +1 -1
- package/dist/core/auth-guidance.js.map +1 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/banco/almacenamiento.d.ts.map +1 -1
- package/dist/core/banco/almacenamiento.js.map +1 -1
- package/dist/core/banco/analisis.d.ts.map +1 -1
- package/dist/core/banco/analisis.js.map +1 -1
- package/dist/core/banco/asides.d.ts +64 -0
- package/dist/core/banco/asides.d.ts.map +1 -0
- package/dist/core/banco/asides.js +113 -0
- package/dist/core/banco/asides.js.map +1 -0
- package/dist/core/banco/bloques.d.ts.map +1 -1
- package/dist/core/banco/bloques.js.map +1 -1
- package/dist/core/banco/cargas.d.ts.map +1 -1
- package/dist/core/banco/cargas.js.map +1 -1
- package/dist/core/banco/comparar.d.ts.map +1 -1
- package/dist/core/banco/comparar.js.map +1 -1
- package/dist/core/banco/cow-isolation.d.ts +74 -0
- package/dist/core/banco/cow-isolation.d.ts.map +1 -0
- package/dist/core/banco/cow-isolation.js +259 -0
- package/dist/core/banco/cow-isolation.js.map +1 -0
- package/dist/core/banco/ejecutar.d.ts.map +1 -1
- package/dist/core/banco/ejecutar.js.map +1 -1
- package/dist/core/banco/generar.d.ts.map +1 -1
- package/dist/core/banco/generar.js.map +1 -1
- package/dist/core/banco/mutaciones.d.ts.map +1 -1
- package/dist/core/banco/mutaciones.js.map +1 -1
- package/dist/core/banco/park-revive.d.ts +67 -0
- package/dist/core/banco/park-revive.d.ts.map +1 -0
- package/dist/core/banco/park-revive.js +130 -0
- package/dist/core/banco/park-revive.js.map +1 -0
- package/dist/core/banco/pruning.d.ts +48 -0
- package/dist/core/banco/pruning.d.ts.map +1 -0
- package/dist/core/banco/pruning.js +146 -0
- package/dist/core/banco/pruning.js.map +1 -0
- package/dist/core/banco/steering.d.ts +81 -0
- package/dist/core/banco/steering.d.ts.map +1 -0
- package/dist/core/banco/steering.js +96 -0
- package/dist/core/banco/steering.js.map +1 -0
- package/dist/core/banco/tipos.d.ts.map +1 -1
- package/dist/core/banco/tipos.js.map +1 -1
- package/dist/core/bash-executor.d.ts.map +1 -1
- package/dist/core/bash-executor.js.map +1 -1
- package/dist/core/blobs/almacen.d.ts.map +1 -1
- package/dist/core/blobs/almacen.js.map +1 -1
- package/dist/core/blobs/broker.d.ts +1 -0
- package/dist/core/blobs/broker.d.ts.map +1 -1
- package/dist/core/blobs/broker.js +1 -1
- package/dist/core/blobs/broker.js.map +1 -1
- package/dist/core/blobs/index.d.ts +1 -0
- package/dist/core/blobs/index.d.ts.map +1 -1
- package/dist/core/blobs/index.js +1 -0
- package/dist/core/blobs/index.js.map +1 -1
- package/dist/core/blobs/payload.d.ts.map +1 -1
- package/dist/core/blobs/payload.js.map +1 -1
- package/dist/core/blobs/proveedor.d.ts.map +1 -1
- package/dist/core/blobs/proveedor.js.map +1 -1
- package/dist/core/blobs/uploaders.d.ts +105 -0
- package/dist/core/blobs/uploaders.d.ts.map +1 -0
- package/dist/core/blobs/uploaders.js +224 -0
- package/dist/core/blobs/uploaders.js.map +1 -0
- package/dist/core/broker/broker.d.ts +54 -0
- package/dist/core/broker/broker.d.ts.map +1 -0
- package/dist/core/broker/broker.js +216 -0
- package/dist/core/broker/broker.js.map +1 -0
- package/dist/core/broker/index.d.ts +21 -0
- package/dist/core/broker/index.d.ts.map +1 -0
- package/dist/core/broker/index.js +33 -0
- package/dist/core/broker/index.js.map +1 -0
- package/dist/core/broker/ps.d.ts +20 -0
- package/dist/core/broker/ps.d.ts.map +1 -0
- package/dist/core/broker/ps.js +55 -0
- package/dist/core/broker/ps.js.map +1 -0
- package/dist/core/broker/types.d.ts +45 -0
- package/dist/core/broker/types.d.ts.map +1 -0
- package/dist/core/broker/types.js +19 -0
- package/dist/core/broker/types.js.map +1 -0
- package/dist/core/browser/cdp.d.ts.map +1 -1
- package/dist/core/browser/cdp.js.map +1 -1
- package/dist/core/browser/politica.d.ts.map +1 -1
- package/dist/core/browser/politica.js.map +1 -1
- package/dist/core/browser/sesion.d.ts.map +1 -1
- package/dist/core/browser/sesion.js.map +1 -1
- package/dist/core/browser/tools.d.ts.map +1 -1
- package/dist/core/browser/tools.js.map +1 -1
- package/dist/core/cache-stats.d.ts.map +1 -1
- package/dist/core/cache-stats.js.map +1 -1
- package/dist/core/capability/capability.test.d.ts +12 -0
- package/dist/core/capability/capability.test.d.ts.map +1 -0
- package/dist/core/capability/capability.test.js +258 -0
- package/dist/core/capability/capability.test.js.map +1 -0
- package/dist/core/capability/fs.d.ts +32 -0
- package/dist/core/capability/fs.d.ts.map +1 -0
- package/dist/core/capability/fs.js +106 -0
- package/dist/core/capability/fs.js.map +1 -0
- package/dist/core/capability/index.d.ts +68 -0
- package/dist/core/capability/index.d.ts.map +1 -0
- package/dist/core/capability/index.js +258 -0
- package/dist/core/capability/index.js.map +1 -0
- package/dist/core/capability/types.d.ts +168 -0
- package/dist/core/capability/types.d.ts.map +1 -0
- package/dist/core/capability/types.js +16 -0
- package/dist/core/capability/types.js.map +1 -0
- package/dist/core/carga-plugins/index.d.ts +49 -0
- package/dist/core/carga-plugins/index.d.ts.map +1 -0
- package/dist/core/carga-plugins/index.js +85 -0
- package/dist/core/carga-plugins/index.js.map +1 -0
- package/dist/core/carga-plugins/invalidacion.d.ts +60 -0
- package/dist/core/carga-plugins/invalidacion.d.ts.map +1 -0
- package/dist/core/carga-plugins/invalidacion.js +94 -0
- package/dist/core/carga-plugins/invalidacion.js.map +1 -0
- package/dist/core/carga-plugins/paralelo.d.ts +48 -0
- package/dist/core/carga-plugins/paralelo.d.ts.map +1 -0
- package/dist/core/carga-plugins/paralelo.js +47 -0
- package/dist/core/carga-plugins/paralelo.js.map +1 -0
- package/dist/core/colaboracion/autoresearch.d.ts +56 -0
- package/dist/core/colaboracion/autoresearch.d.ts.map +1 -0
- package/dist/core/colaboracion/autoresearch.js +95 -0
- package/dist/core/colaboracion/autoresearch.js.map +1 -0
- package/dist/core/colaboracion/index.d.ts +10 -0
- package/dist/core/colaboracion/index.d.ts.map +1 -0
- package/dist/core/colaboracion/index.js +7 -0
- package/dist/core/colaboracion/index.js.map +1 -0
- package/dist/core/colaboracion/kernels.d.ts +63 -0
- package/dist/core/colaboracion/kernels.d.ts.map +1 -0
- package/dist/core/colaboracion/kernels.js +99 -0
- package/dist/core/colaboracion/kernels.js.map +1 -0
- package/dist/core/colaboracion/rele/index.d.ts +8 -0
- package/dist/core/colaboracion/rele/index.d.ts.map +1 -0
- package/dist/core/colaboracion/rele/index.js +6 -0
- package/dist/core/colaboracion/rele/index.js.map +1 -0
- package/dist/core/colaboracion/rele/rele-servidor.d.ts +69 -0
- package/dist/core/colaboracion/rele/rele-servidor.d.ts.map +1 -0
- package/dist/core/colaboracion/rele/rele-servidor.js +197 -0
- package/dist/core/colaboracion/rele/rele-servidor.js.map +1 -0
- package/dist/core/colaboracion/rele/suscriptor.d.ts +31 -0
- package/dist/core/colaboracion/rele/suscriptor.d.ts.map +1 -0
- package/dist/core/colaboracion/rele/suscriptor.js +173 -0
- package/dist/core/colaboracion/rele/suscriptor.js.map +1 -0
- package/dist/core/colaboracion/sesion-colaborativa.d.ts +61 -0
- package/dist/core/colaboracion/sesion-colaborativa.d.ts.map +1 -0
- package/dist/core/colaboracion/sesion-colaborativa.js +127 -0
- package/dist/core/colaboracion/sesion-colaborativa.js.map +1 -0
- package/dist/core/commits/agentic.d.ts +101 -0
- package/dist/core/commits/agentic.d.ts.map +1 -0
- package/dist/core/commits/agentic.js +268 -0
- package/dist/core/commits/agentic.js.map +1 -0
- package/dist/core/commits/changelog.d.ts +37 -0
- package/dist/core/commits/changelog.d.ts.map +1 -0
- package/dist/core/commits/changelog.js +155 -0
- package/dist/core/commits/changelog.js.map +1 -0
- package/dist/core/commits/diff.d.ts.map +1 -0
- package/dist/core/commits/diff.js.map +1 -0
- package/dist/core/commits/git.d.ts +43 -0
- package/dist/core/commits/git.d.ts.map +1 -0
- package/dist/core/commits/git.js +61 -0
- package/dist/core/commits/git.js.map +1 -0
- package/dist/core/commits/split.d.ts +45 -0
- package/dist/core/commits/split.d.ts.map +1 -0
- package/dist/core/commits/split.js +128 -0
- package/dist/core/commits/split.js.map +1 -0
- package/dist/core/compactacion/comandos.d.ts +53 -0
- package/dist/core/compactacion/comandos.d.ts.map +1 -0
- package/dist/core/compactacion/comandos.js +155 -0
- package/dist/core/compactacion/comandos.js.map +1 -0
- package/dist/core/compactacion/extension.d.ts +28 -0
- package/dist/core/compactacion/extension.d.ts.map +1 -0
- package/dist/core/compactacion/extension.js +159 -0
- package/dist/core/compactacion/extension.js.map +1 -0
- package/dist/core/compactacion/handoff.d.ts +61 -0
- package/dist/core/compactacion/handoff.d.ts.map +1 -0
- package/dist/core/compactacion/handoff.js +139 -0
- package/dist/core/compactacion/handoff.js.map +1 -0
- package/dist/core/compactacion/index.d.ts +15 -0
- package/dist/core/compactacion/index.d.ts.map +1 -0
- package/dist/core/compactacion/index.js +15 -0
- package/dist/core/compactacion/index.js.map +1 -0
- package/dist/core/compactacion/prune.d.ts +38 -0
- package/dist/core/compactacion/prune.d.ts.map +1 -0
- package/dist/core/compactacion/prune.js +81 -0
- package/dist/core/compactacion/prune.js.map +1 -0
- package/dist/core/compactacion/shake.d.ts +40 -0
- package/dist/core/compactacion/shake.d.ts.map +1 -0
- package/dist/core/compactacion/shake.js +106 -0
- package/dist/core/compactacion/shake.js.map +1 -0
- package/dist/core/compactacion/tipos.d.ts +54 -0
- package/dist/core/compactacion/tipos.d.ts.map +1 -0
- package/dist/core/compactacion/tipos.js +44 -0
- package/dist/core/compactacion/tipos.js.map +1 -0
- package/dist/core/compactar/index.d.ts.map +1 -1
- package/dist/core/compactar/index.js.map +1 -1
- package/dist/core/compactar/registro-denso.d.ts.map +1 -1
- package/dist/core/compactar/registro-denso.js.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/index.d.ts.map +1 -1
- package/dist/core/compaction/index.js.map +1 -1
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/computer/captura.d.ts.map +1 -1
- package/dist/core/computer/captura.js.map +1 -1
- package/dist/core/computer/driver.d.ts.map +1 -1
- package/dist/core/computer/driver.js.map +1 -1
- package/dist/core/computer/motor/actions.d.ts.map +1 -1
- package/dist/core/computer/motor/actions.js.map +1 -1
- package/dist/core/computer/motor/bridge.d.ts +2 -2
- package/dist/core/computer/motor/bridge.d.ts.map +1 -1
- package/dist/core/computer/motor/bridge.js.map +1 -1
- package/dist/core/computer/motor/cdp.d.ts.map +1 -1
- package/dist/core/computer/motor/cdp.js.map +1 -1
- package/dist/core/computer/motor/config.d.ts.map +1 -1
- package/dist/core/computer/motor/config.js.map +1 -1
- package/dist/core/computer/motor/contract.d.ts.map +1 -1
- package/dist/core/computer/motor/contract.js.map +1 -1
- package/dist/core/computer/motor/note.d.ts.map +1 -1
- package/dist/core/computer/motor/note.js.map +1 -1
- package/dist/core/computer/motor/outline.d.ts.map +1 -1
- package/dist/core/computer/motor/outline.js.map +1 -1
- package/dist/core/computer/motor/output.d.ts.map +1 -1
- package/dist/core/computer/motor/output.js.map +1 -1
- package/dist/core/computer/motor/permissions.d.ts.map +1 -1
- package/dist/core/computer/motor/permissions.js.map +1 -1
- package/dist/core/computer/motor/platform/architecture.d.ts.map +1 -1
- package/dist/core/computer/motor/platform/architecture.js.map +1 -1
- package/dist/core/computer/motor/platform/coerce.d.ts.map +1 -1
- package/dist/core/computer/motor/platform/coerce.js.map +1 -1
- package/dist/core/computer/motor/platform/index.d.ts.map +1 -1
- package/dist/core/computer/motor/platform/index.js.map +1 -1
- package/dist/core/computer/motor/platform/linux/backend.d.ts.map +1 -1
- package/dist/core/computer/motor/platform/linux/backend.js.map +1 -1
- package/dist/core/computer/motor/platform/linux/helper.d.ts.map +1 -1
- package/dist/core/computer/motor/platform/linux/helper.js.map +1 -1
- package/dist/core/computer/motor/platform/macos/backend.d.ts.map +1 -1
- package/dist/core/computer/motor/platform/macos/backend.js.map +1 -1
- package/dist/core/computer/motor/platform/macos/browser.d.ts.map +1 -1
- package/dist/core/computer/motor/platform/macos/browser.js.map +1 -1
- package/dist/core/computer/motor/platform/macos/helper.d.ts.map +1 -1
- package/dist/core/computer/motor/platform/macos/helper.js.map +1 -1
- package/dist/core/computer/motor/platform/macos/permissions.d.ts.map +1 -1
- package/dist/core/computer/motor/platform/macos/permissions.js.map +1 -1
- package/dist/core/computer/motor/platform/types.d.ts.map +1 -1
- package/dist/core/computer/motor/platform/types.js.map +1 -1
- package/dist/core/computer/motor/platform/windows/backend.d.ts.map +1 -1
- package/dist/core/computer/motor/platform/windows/backend.js.map +1 -1
- package/dist/core/computer/motor/platform/windows/helper.d.ts.map +1 -1
- package/dist/core/computer/motor/platform/windows/helper.js.map +1 -1
- package/dist/core/computer/motor/root-selection.d.ts.map +1 -1
- package/dist/core/computer/motor/root-selection.js.map +1 -1
- package/dist/core/computer/motor/runtime.d.ts.map +1 -1
- package/dist/core/computer/motor/runtime.js.map +1 -1
- package/dist/core/computer/motor/state.d.ts.map +1 -1
- package/dist/core/computer/motor/state.js.map +1 -1
- package/dist/core/computer/motor/view.d.ts.map +1 -1
- package/dist/core/computer/motor/view.js.map +1 -1
- package/dist/core/computer/motor-ada.d.ts.map +1 -1
- package/dist/core/computer/motor-ada.js.map +1 -1
- package/dist/core/computer/politica.d.ts.map +1 -1
- package/dist/core/computer/politica.js.map +1 -1
- package/dist/core/computer/tools.d.ts.map +1 -1
- package/dist/core/computer/tools.js.map +1 -1
- package/dist/core/config/quarantine.d.ts +57 -0
- package/dist/core/config/quarantine.d.ts.map +1 -0
- package/dist/core/config/quarantine.js +161 -0
- package/dist/core/config/quarantine.js.map +1 -0
- package/dist/core/config-viva/ambito.d.ts +46 -0
- package/dist/core/config-viva/ambito.d.ts.map +1 -0
- package/dist/core/config-viva/ambito.js +62 -0
- package/dist/core/config-viva/ambito.js.map +1 -0
- package/dist/core/config-viva/cache-negativa.d.ts +50 -0
- package/dist/core/config-viva/cache-negativa.d.ts.map +1 -0
- package/dist/core/config-viva/cache-negativa.js +78 -0
- package/dist/core/config-viva/cache-negativa.js.map +1 -0
- package/dist/core/config-viva/headers-vivos.d.ts +41 -0
- package/dist/core/config-viva/headers-vivos.d.ts.map +1 -0
- package/dist/core/config-viva/headers-vivos.js +43 -0
- package/dist/core/config-viva/headers-vivos.js.map +1 -0
- package/dist/core/config-viva/index.d.ts +16 -0
- package/dist/core/config-viva/index.d.ts.map +1 -0
- package/dist/core/config-viva/index.js +16 -0
- package/dist/core/config-viva/index.js.map +1 -0
- package/dist/core/config-viva/proveedor.d.ts +48 -0
- package/dist/core/config-viva/proveedor.d.ts.map +1 -0
- package/dist/core/config-viva/proveedor.js +78 -0
- package/dist/core/config-viva/proveedor.js.map +1 -0
- package/dist/core/context-breakdown.d.ts.map +1 -1
- package/dist/core/context-breakdown.js.map +1 -1
- package/dist/core/credenciales/cliente.d.ts.map +1 -1
- package/dist/core/credenciales/cliente.js.map +1 -1
- package/dist/core/credenciales/pool.d.ts +36 -1
- package/dist/core/credenciales/pool.d.ts.map +1 -1
- package/dist/core/credenciales/pool.js +56 -7
- package/dist/core/credenciales/pool.js.map +1 -1
- package/dist/core/credenciales/ranking.d.ts +56 -0
- package/dist/core/credenciales/ranking.d.ts.map +1 -0
- package/dist/core/credenciales/ranking.js +94 -0
- package/dist/core/credenciales/ranking.js.map +1 -0
- package/dist/core/credenciales/ratelimit.d.ts +54 -0
- package/dist/core/credenciales/ratelimit.d.ts.map +1 -0
- package/dist/core/credenciales/ratelimit.js +116 -0
- package/dist/core/credenciales/ratelimit.js.map +1 -0
- package/dist/core/credenciales/reposo.d.ts.map +1 -1
- package/dist/core/credenciales/reposo.js.map +1 -1
- package/dist/core/credenciales/servidor.d.ts +8 -0
- package/dist/core/credenciales/servidor.d.ts.map +1 -1
- package/dist/core/credenciales/servidor.js +9 -1
- package/dist/core/credenciales/servidor.js.map +1 -1
- package/dist/core/defaults.d.ts.map +1 -1
- package/dist/core/defaults.js.map +1 -1
- package/dist/core/descubrimiento/comandos.d.ts.map +1 -1
- package/dist/core/descubrimiento/comandos.js.map +1 -1
- package/dist/core/descubrimiento/mcp.d.ts +12 -0
- package/dist/core/descubrimiento/mcp.d.ts.map +1 -1
- package/dist/core/descubrimiento/mcp.js +32 -0
- package/dist/core/descubrimiento/mcp.js.map +1 -1
- package/dist/core/descubrimiento/reglas.d.ts.map +1 -1
- package/dist/core/descubrimiento/reglas.js.map +1 -1
- package/dist/core/descubrimiento/runtimes/index.d.ts +24 -0
- package/dist/core/descubrimiento/runtimes/index.d.ts.map +1 -0
- package/dist/core/descubrimiento/runtimes/index.js +109 -0
- package/dist/core/descubrimiento/runtimes/index.js.map +1 -0
- package/dist/core/descubrimiento/runtimes/litellm.d.ts +12 -0
- package/dist/core/descubrimiento/runtimes/litellm.d.ts.map +1 -0
- package/dist/core/descubrimiento/runtimes/litellm.js +185 -0
- package/dist/core/descubrimiento/runtimes/litellm.js.map +1 -0
- package/dist/core/descubrimiento/runtimes/lm-studio.d.ts +13 -0
- package/dist/core/descubrimiento/runtimes/lm-studio.d.ts.map +1 -0
- package/dist/core/descubrimiento/runtimes/lm-studio.js +142 -0
- package/dist/core/descubrimiento/runtimes/lm-studio.js.map +1 -0
- package/dist/core/descubrimiento/runtimes/ollama.d.ts +8 -0
- package/dist/core/descubrimiento/runtimes/ollama.d.ts.map +1 -0
- package/dist/core/descubrimiento/runtimes/ollama.js +96 -0
- package/dist/core/descubrimiento/runtimes/ollama.js.map +1 -0
- package/dist/core/descubrimiento/runtimes/tipos.d.ts +47 -0
- package/dist/core/descubrimiento/runtimes/tipos.d.ts.map +1 -0
- package/dist/core/descubrimiento/runtimes/tipos.js +10 -0
- package/dist/core/descubrimiento/runtimes/tipos.js.map +1 -0
- package/dist/core/descubrimiento/skills.d.ts.map +1 -1
- package/dist/core/descubrimiento/skills.js.map +1 -1
- package/dist/core/diagnostics.d.ts.map +1 -1
- package/dist/core/diagnostics.js.map +1 -1
- package/dist/core/dificultad/clasificador.d.ts.map +1 -1
- package/dist/core/dificultad/clasificador.js.map +1 -1
- package/dist/core/edicion/diario.d.ts.map +1 -1
- package/dist/core/edicion/diario.js.map +1 -1
- package/dist/core/edicion/hashline.d.ts.map +1 -1
- package/dist/core/edicion/hashline.js.map +1 -1
- package/dist/core/edicion/hueco.d.ts.map +1 -1
- package/dist/core/edicion/hueco.js.map +1 -1
- package/dist/core/edicion/ipynb.d.ts +51 -0
- package/dist/core/edicion/ipynb.d.ts.map +1 -0
- package/dist/core/edicion/ipynb.js +110 -0
- package/dist/core/edicion/ipynb.js.map +1 -0
- package/dist/core/edicion/limpiar-carga.d.ts.map +1 -1
- package/dist/core/edicion/limpiar-carga.js.map +1 -1
- package/dist/core/edicion/observador.d.ts.map +1 -1
- package/dist/core/edicion/observador.js.map +1 -1
- package/dist/core/edicion/parecido.d.ts.map +1 -1
- package/dist/core/edicion/parecido.js.map +1 -1
- package/dist/core/edicion/parseo.d.ts.map +1 -1
- package/dist/core/edicion/parseo.js.map +1 -1
- package/dist/core/edicion/portapapeles.d.ts +28 -0
- package/dist/core/edicion/portapapeles.d.ts.map +1 -0
- package/dist/core/edicion/portapapeles.js +49 -0
- package/dist/core/edicion/portapapeles.js.map +1 -0
- package/dist/core/edicion/reparacion.d.ts.map +1 -1
- package/dist/core/edicion/reparacion.js.map +1 -1
- package/dist/core/edicion/rutas-difusas.d.ts +44 -0
- package/dist/core/edicion/rutas-difusas.d.ts.map +1 -0
- package/dist/core/edicion/rutas-difusas.js +93 -0
- package/dist/core/edicion/rutas-difusas.js.map +1 -0
- package/dist/core/edicion/sangria.d.ts.map +1 -1
- package/dist/core/edicion/sangria.js.map +1 -1
- package/dist/core/edicion/tipos.d.ts.map +1 -1
- package/dist/core/edicion/tipos.js.map +1 -1
- package/dist/core/engine-personality.d.ts.map +1 -1
- package/dist/core/engine-personality.js.map +1 -1
- package/dist/core/errores/proveedor.d.ts.map +1 -1
- package/dist/core/errores/proveedor.js.map +1 -1
- package/dist/core/estructural/buscar.d.ts.map +1 -1
- package/dist/core/estructural/buscar.js.map +1 -1
- package/dist/core/estructural/editar.d.ts.map +1 -1
- package/dist/core/estructural/editar.js.map +1 -1
- package/dist/core/estructural/tools.d.ts.map +1 -1
- package/dist/core/estructural/tools.js.map +1 -1
- package/dist/core/event-bus.d.ts.map +1 -1
- package/dist/core/event-bus.js.map +1 -1
- package/dist/core/exec.d.ts.map +1 -1
- package/dist/core/exec.js.map +1 -1
- package/dist/core/experimental.d.ts.map +1 -1
- package/dist/core/experimental.js.map +1 -1
- package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
- package/dist/core/export-html/ansi-to-html.js.map +1 -1
- package/dist/core/export-html/index.d.ts.map +1 -1
- package/dist/core/export-html/index.js +183 -13
- package/dist/core/export-html/index.js.map +1 -1
- package/dist/core/export-html/template.css +88 -4
- package/dist/core/export-html/template.html +3 -1
- package/dist/core/export-html/template.js +84 -0
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
- package/dist/core/export-html/tool-renderer.js.map +1 -1
- package/dist/core/extensiones/suplantacion.d.ts.map +1 -1
- package/dist/core/extensiones/suplantacion.js.map +1 -1
- package/dist/core/extensiones/vigilancia.d.ts.map +1 -1
- package/dist/core/extensiones/vigilancia.js.map +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.map +1 -1
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/extensions/wrapper.d.ts.map +1 -1
- package/dist/core/extensions/wrapper.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/gc/archivo-frio.d.ts +33 -0
- package/dist/core/gc/archivo-frio.d.ts.map +1 -0
- package/dist/core/gc/archivo-frio.js +152 -0
- package/dist/core/gc/archivo-frio.js.map +1 -0
- package/dist/core/gc/blobs-gc.d.ts +25 -0
- package/dist/core/gc/blobs-gc.d.ts.map +1 -0
- package/dist/core/gc/blobs-gc.js +143 -0
- package/dist/core/gc/blobs-gc.js.map +1 -0
- package/dist/core/gc/index.d.ts +42 -0
- package/dist/core/gc/index.d.ts.map +1 -0
- package/dist/core/gc/index.js +50 -0
- package/dist/core/gc/index.js.map +1 -0
- package/dist/core/gc/lock.d.ts +19 -0
- package/dist/core/gc/lock.d.ts.map +1 -0
- package/dist/core/gc/lock.js +48 -0
- package/dist/core/gc/lock.js.map +1 -0
- package/dist/core/gc/reconciliacion.d.ts +19 -0
- package/dist/core/gc/reconciliacion.d.ts.map +1 -0
- package/dist/core/gc/reconciliacion.js +102 -0
- package/dist/core/gc/reconciliacion.js.map +1 -0
- package/dist/core/gc/wal.d.ts +15 -0
- package/dist/core/gc/wal.d.ts.map +1 -0
- package/dist/core/gc/wal.js +44 -0
- package/dist/core/gc/wal.js.map +1 -0
- package/dist/core/harness/fuentes-de-contexto.d.ts.map +1 -1
- package/dist/core/harness/fuentes-de-contexto.js.map +1 -1
- package/dist/core/harness/refine.d.ts.map +1 -1
- package/dist/core/harness/refine.js.map +1 -1
- package/dist/core/harness/store.d.ts.map +1 -1
- package/dist/core/harness/store.js.map +1 -1
- package/dist/core/higiene/index.d.ts +8 -0
- package/dist/core/higiene/index.d.ts.map +1 -0
- package/dist/core/higiene/index.js +8 -0
- package/dist/core/higiene/index.js.map +1 -0
- package/dist/core/higiene/managed-timers.d.ts +19 -0
- package/dist/core/higiene/managed-timers.d.ts.map +1 -0
- package/dist/core/higiene/managed-timers.js +68 -0
- package/dist/core/higiene/managed-timers.js.map +1 -0
- package/dist/core/higiene/race-handler.d.ts +7 -0
- package/dist/core/higiene/race-handler.d.ts.map +1 -0
- package/dist/core/higiene/race-handler.js +32 -0
- package/dist/core/higiene/race-handler.js.map +1 -0
- package/dist/core/higiene/withHostGuard.d.ts +27 -0
- package/dist/core/higiene/withHostGuard.d.ts.map +1 -0
- package/dist/core/higiene/withHostGuard.js +79 -0
- package/dist/core/higiene/withHostGuard.js.map +1 -0
- package/dist/core/hooks/contract.d.ts.map +1 -1
- package/dist/core/hooks/contract.js.map +1 -1
- package/dist/core/hooks/runner.d.ts.map +1 -1
- package/dist/core/hooks/runner.js.map +1 -1
- package/dist/core/hooks/session-hooks.d.ts.map +1 -1
- package/dist/core/hooks/session-hooks.js.map +1 -1
- package/dist/core/hooks-ts/cargador.d.ts +29 -0
- package/dist/core/hooks-ts/cargador.d.ts.map +1 -0
- package/dist/core/hooks-ts/cargador.js +51 -0
- package/dist/core/hooks-ts/cargador.js.map +1 -0
- package/dist/core/hooks-ts/index.d.ts +25 -0
- package/dist/core/hooks-ts/index.d.ts.map +1 -0
- package/dist/core/hooks-ts/index.js +25 -0
- package/dist/core/hooks-ts/index.js.map +1 -0
- package/dist/core/hooks-ts/runner.d.ts +40 -0
- package/dist/core/hooks-ts/runner.d.ts.map +1 -0
- package/dist/core/hooks-ts/runner.js +95 -0
- package/dist/core/hooks-ts/runner.js.map +1 -0
- package/dist/core/hooks-ts/tipos.d.ts +69 -0
- package/dist/core/hooks-ts/tipos.d.ts.map +1 -0
- package/dist/core/hooks-ts/tipos.js +90 -0
- package/dist/core/hooks-ts/tipos.js.map +1 -0
- package/dist/core/http-dispatcher.d.ts.map +1 -1
- package/dist/core/http-dispatcher.js.map +1 -1
- package/dist/core/importar/formatos.d.ts.map +1 -1
- package/dist/core/importar/formatos.js.map +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/interactivo/deteccion.d.ts.map +1 -1
- package/dist/core/interactivo/deteccion.js.map +1 -1
- package/dist/core/interactivo/sesion.d.ts.map +1 -1
- package/dist/core/interactivo/sesion.js.map +1 -1
- package/dist/core/interactivo/tools.d.ts.map +1 -1
- package/dist/core/interactivo/tools.js.map +1 -1
- package/dist/core/keybindings.d.ts +170 -170
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/lectura/mapa.d.ts.map +1 -1
- package/dist/core/lectura/mapa.js.map +1 -1
- package/dist/core/lectura/pdf.d.ts.map +1 -1
- package/dist/core/lectura/pdf.js.map +1 -1
- package/dist/core/lectura/sniffer.d.ts +54 -0
- package/dist/core/lectura/sniffer.d.ts.map +1 -0
- package/dist/core/lectura/sniffer.js +106 -0
- package/dist/core/lectura/sniffer.js.map +1 -0
- package/dist/core/limpieza/comprobadores.d.ts +16 -2
- package/dist/core/limpieza/comprobadores.d.ts.map +1 -1
- package/dist/core/limpieza/comprobadores.js +200 -6
- package/dist/core/limpieza/comprobadores.js.map +1 -1
- package/dist/core/limpieza/flujo.d.ts +36 -0
- package/dist/core/limpieza/flujo.d.ts.map +1 -0
- package/dist/core/limpieza/flujo.js +89 -0
- package/dist/core/limpieza/flujo.js.map +1 -0
- package/dist/core/limpieza/parseo.d.ts.map +1 -1
- package/dist/core/limpieza/parseo.js.map +1 -1
- package/dist/core/limpieza/peso.d.ts +17 -0
- package/dist/core/limpieza/peso.d.ts.map +1 -0
- package/dist/core/limpieza/peso.js +52 -0
- package/dist/core/limpieza/peso.js.map +1 -0
- package/dist/core/limpieza/pool.d.ts +44 -0
- package/dist/core/limpieza/pool.d.ts.map +1 -0
- package/dist/core/limpieza/pool.js +123 -0
- package/dist/core/limpieza/pool.js.map +1 -0
- package/dist/core/limpieza/reparacion.d.ts +19 -2
- package/dist/core/limpieza/reparacion.d.ts.map +1 -1
- package/dist/core/limpieza/reparacion.js +95 -8
- package/dist/core/limpieza/reparacion.js.map +1 -1
- package/dist/core/limpieza/tablero.d.ts +47 -0
- package/dist/core/limpieza/tablero.d.ts.map +1 -0
- package/dist/core/limpieza/tablero.js +78 -0
- package/dist/core/limpieza/tablero.js.map +1 -0
- package/dist/core/limpieza/tipos.d.ts +25 -0
- package/dist/core/limpieza/tipos.d.ts.map +1 -1
- package/dist/core/limpieza/tipos.js.map +1 -1
- package/dist/core/lsp/cliente.d.ts +7 -0
- package/dist/core/lsp/cliente.d.ts.map +1 -1
- package/dist/core/lsp/cliente.js +4 -2
- package/dist/core/lsp/cliente.js.map +1 -1
- package/dist/core/lsp/descubrimiento.d.ts.map +1 -1
- package/dist/core/lsp/descubrimiento.js.map +1 -1
- package/dist/core/lsp/ediciones.d.ts.map +1 -1
- package/dist/core/lsp/ediciones.js.map +1 -1
- package/dist/core/lsp/extension.d.ts +9 -0
- package/dist/core/lsp/extension.d.ts.map +1 -1
- package/dist/core/lsp/extension.js +60 -4
- package/dist/core/lsp/extension.js.map +1 -1
- package/dist/core/lsp/formato.d.ts +72 -0
- package/dist/core/lsp/formato.d.ts.map +1 -0
- package/dist/core/lsp/formato.js +117 -0
- package/dist/core/lsp/formato.js.map +1 -0
- package/dist/core/lsp/tools.d.ts +3 -3
- package/dist/core/lsp/tools.d.ts.map +1 -1
- package/dist/core/lsp/tools.js.map +1 -1
- package/dist/core/lsp/writethrough.d.ts +165 -0
- package/dist/core/lsp/writethrough.d.ts.map +1 -0
- package/dist/core/lsp/writethrough.js +282 -0
- package/dist/core/lsp/writethrough.js.map +1 -0
- package/dist/core/marketplace/catalogo.d.ts +32 -0
- package/dist/core/marketplace/catalogo.d.ts.map +1 -0
- package/dist/core/marketplace/catalogo.js +122 -0
- package/dist/core/marketplace/catalogo.js.map +1 -0
- package/dist/core/marketplace/doctor.d.ts +47 -0
- package/dist/core/marketplace/doctor.d.ts.map +1 -0
- package/dist/core/marketplace/doctor.js +155 -0
- package/dist/core/marketplace/doctor.js.map +1 -0
- package/dist/core/marketplace/features.d.ts +22 -0
- package/dist/core/marketplace/features.d.ts.map +1 -0
- package/dist/core/marketplace/features.js +70 -0
- package/dist/core/marketplace/features.js.map +1 -0
- package/dist/core/marketplace/index.d.ts +33 -0
- package/dist/core/marketplace/index.d.ts.map +1 -0
- package/dist/core/marketplace/index.js +33 -0
- package/dist/core/marketplace/index.js.map +1 -0
- package/dist/core/marketplace/instalar.d.ts +27 -0
- package/dist/core/marketplace/instalar.d.ts.map +1 -0
- package/dist/core/marketplace/instalar.js +50 -0
- package/dist/core/marketplace/instalar.js.map +1 -0
- package/dist/core/mcp/client.d.ts.map +1 -1
- package/dist/core/mcp/client.js.map +1 -1
- package/dist/core/mcp/manager.d.ts.map +1 -1
- package/dist/core/mcp/manager.js.map +1 -1
- package/dist/core/mcp/oauth.d.ts +138 -0
- package/dist/core/mcp/oauth.d.ts.map +1 -0
- package/dist/core/mcp/oauth.js +348 -0
- package/dist/core/mcp/oauth.js.map +1 -0
- package/dist/core/mcp/tools.d.ts.map +1 -1
- package/dist/core/mcp/tools.js.map +1 -1
- package/dist/core/memoria/almacen.d.ts +56 -0
- package/dist/core/memoria/almacen.d.ts.map +1 -0
- package/dist/core/memoria/almacen.js +214 -0
- package/dist/core/memoria/almacen.js.map +1 -0
- package/dist/core/memoria/dr/respaldo.d.ts +34 -0
- package/dist/core/memoria/dr/respaldo.d.ts.map +1 -0
- package/dist/core/memoria/dr/respaldo.js +133 -0
- package/dist/core/memoria/dr/respaldo.js.map +1 -0
- package/dist/core/memoria/embeddings.d.ts +21 -0
- package/dist/core/memoria/embeddings.d.ts.map +1 -0
- package/dist/core/memoria/embeddings.js +87 -0
- package/dist/core/memoria/embeddings.js.map +1 -0
- package/dist/core/memoria/grafo.d.ts +56 -0
- package/dist/core/memoria/grafo.d.ts.map +1 -0
- package/dist/core/memoria/grafo.js +143 -0
- package/dist/core/memoria/grafo.js.map +1 -0
- package/dist/core/memoria/redaccion.d.ts +32 -0
- package/dist/core/memoria/redaccion.d.ts.map +1 -0
- package/dist/core/memoria/redaccion.js +76 -0
- package/dist/core/memoria/redaccion.js.map +1 -0
- package/dist/core/memoria/servidor/almacen-json.d.ts +26 -0
- package/dist/core/memoria/servidor/almacen-json.d.ts.map +1 -0
- package/dist/core/memoria/servidor/almacen-json.js +90 -0
- package/dist/core/memoria/servidor/almacen-json.js.map +1 -0
- package/dist/core/memoria/servidor/servidor.d.ts +43 -0
- package/dist/core/memoria/servidor/servidor.d.ts.map +1 -0
- package/dist/core/memoria/servidor/servidor.js +195 -0
- package/dist/core/memoria/servidor/servidor.js.map +1 -0
- package/dist/core/memoria/servidor/tipos.d.ts +44 -0
- package/dist/core/memoria/servidor/tipos.d.ts.map +1 -0
- package/dist/core/memoria/servidor/tipos.js +12 -0
- package/dist/core/memoria/servidor/tipos.js.map +1 -0
- package/dist/core/memoria/tipos.d.ts +63 -0
- package/dist/core/memoria/tipos.d.ts.map +1 -0
- package/dist/core/memoria/tipos.js +14 -0
- package/dist/core/memoria/tipos.js.map +1 -0
- package/dist/core/memory-engine/audit-export.d.ts.map +1 -1
- package/dist/core/memory-engine/audit-export.js.map +1 -1
- package/dist/core/memory-engine/audit-indice.d.ts.map +1 -1
- package/dist/core/memory-engine/audit-indice.js.map +1 -1
- package/dist/core/memory-engine/audit.d.ts.map +1 -1
- package/dist/core/memory-engine/audit.js.map +1 -1
- package/dist/core/memory-engine/engine.d.ts +7 -0
- package/dist/core/memory-engine/engine.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/core/memory-engine/keychain.d.ts.map +1 -1
- package/dist/core/memory-engine/keychain.js.map +1 -1
- package/dist/core/memory-engine/observation-store.d.ts +1 -0
- package/dist/core/memory-engine/observation-store.d.ts.map +1 -1
- package/dist/core/memory-engine/observation-store.js.map +1 -1
- package/dist/core/memory-engine/refinements.d.ts.map +1 -1
- package/dist/core/memory-engine/refinements.js.map +1 -1
- package/dist/core/memory-engine/scanner.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/core/memory-engine/session-indexer.d.ts.map +1 -1
- package/dist/core/memory-engine/session-indexer.js.map +1 -1
- package/dist/core/memory-engine/tools.d.ts.map +1 -1
- package/dist/core/memory-engine/tools.js.map +1 -1
- 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.map +1 -1
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js.map +1 -1
- package/dist/core/metaharness/cli.d.ts +19 -0
- package/dist/core/metaharness/cli.d.ts.map +1 -0
- package/dist/core/metaharness/cli.js +171 -0
- package/dist/core/metaharness/cli.js.map +1 -0
- package/dist/core/metaharness/comparar.d.ts +21 -0
- package/dist/core/metaharness/comparar.d.ts.map +1 -0
- package/dist/core/metaharness/comparar.js +64 -0
- package/dist/core/metaharness/comparar.js.map +1 -0
- package/dist/core/metaharness/ejecutar.d.ts +70 -0
- package/dist/core/metaharness/ejecutar.d.ts.map +1 -0
- package/dist/core/metaharness/ejecutar.js +249 -0
- package/dist/core/metaharness/ejecutar.js.map +1 -0
- package/dist/core/metaharness/tipos.d.ts +142 -0
- package/dist/core/metaharness/tipos.d.ts.map +1 -0
- package/dist/core/metaharness/tipos.js +17 -0
- package/dist/core/metaharness/tipos.js.map +1 -0
- package/dist/core/model-config.d.ts +8 -8
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/models-store.d.ts.map +1 -1
- package/dist/core/models-store.js.map +1 -1
- package/dist/core/muestreo-restringido.d.ts.map +1 -1
- package/dist/core/muestreo-restringido.js.map +1 -1
- package/dist/core/orphan-process-journal.d.ts.map +1 -1
- package/dist/core/orphan-process-journal.js.map +1 -1
- package/dist/core/output-guard.d.ts.map +1 -1
- package/dist/core/output-guard.js.map +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/parche/aplicar.d.ts +19 -0
- package/dist/core/parche/aplicar.d.ts.map +1 -0
- package/dist/core/parche/aplicar.js +243 -0
- package/dist/core/parche/aplicar.js.map +1 -0
- package/dist/core/parche/parser.d.ts +38 -0
- package/dist/core/parche/parser.d.ts.map +1 -0
- package/dist/core/parche/parser.js +217 -0
- package/dist/core/parche/parser.js.map +1 -0
- package/dist/core/parche/registro.d.ts +12 -0
- package/dist/core/parche/registro.d.ts.map +1 -0
- package/dist/core/parche/registro.js +58 -0
- package/dist/core/parche/registro.js.map +1 -0
- package/dist/core/perfiles/index.d.ts +22 -0
- package/dist/core/perfiles/index.d.ts.map +1 -0
- package/dist/core/perfiles/index.js +21 -0
- package/dist/core/perfiles/index.js.map +1 -0
- package/dist/core/perfiles/resolver.d.ts +51 -0
- package/dist/core/perfiles/resolver.d.ts.map +1 -0
- package/dist/core/perfiles/resolver.js +329 -0
- package/dist/core/perfiles/resolver.js.map +1 -0
- package/dist/core/perfiles/tipos.d.ts +69 -0
- package/dist/core/perfiles/tipos.d.ts.map +1 -0
- package/dist/core/perfiles/tipos.js +98 -0
- package/dist/core/perfiles/tipos.js.map +1 -0
- package/dist/core/pi-manifest.d.ts.map +1 -1
- package/dist/core/pi-manifest.js.map +1 -1
- package/dist/core/privacidad/categorias-especiales.d.ts.map +1 -1
- package/dist/core/privacidad/categorias-especiales.js +4 -0
- package/dist/core/privacidad/categorias-especiales.js.map +1 -1
- package/dist/core/privacidad/tapar.d.ts.map +1 -1
- package/dist/core/privacidad/tapar.js.map +1 -1
- package/dist/core/project-memory.d.ts.map +1 -1
- package/dist/core/project-memory.js.map +1 -1
- package/dist/core/project-trust.d.ts.map +1 -1
- package/dist/core/project-trust.js.map +1 -1
- package/dist/core/prompt-cache/diagnostics.d.ts.map +1 -1
- package/dist/core/prompt-cache/diagnostics.js.map +1 -1
- package/dist/core/prompt-cache/index.d.ts.map +1 -1
- package/dist/core/prompt-cache/index.js.map +1 -1
- package/dist/core/prompt-cache/payload.d.ts.map +1 -1
- package/dist/core/prompt-cache/payload.js.map +1 -1
- package/dist/core/prompt-cache/stabilize.d.ts.map +1 -1
- package/dist/core/prompt-cache/stabilize.js.map +1 -1
- package/dist/core/prompt-cache/stats.d.ts.map +1 -1
- package/dist/core/prompt-cache/stats.js.map +1 -1
- package/dist/core/prompt-eleccion.d.ts.map +1 -1
- package/dist/core/prompt-eleccion.js.map +1 -1
- package/dist/core/prompt-optimizer.d.ts.map +1 -1
- package/dist/core/prompt-optimizer.js.map +1 -1
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/prompt-templates.js.map +1 -1
- package/dist/core/prompts/montar.d.ts.map +1 -1
- package/dist/core/prompts/montar.js.map +1 -1
- package/dist/core/prompts/plantilla.d.ts.map +1 -1
- package/dist/core/prompts/plantilla.js.map +1 -1
- package/dist/core/proveedores-registry/definiciones.d.ts +15 -0
- package/dist/core/proveedores-registry/definiciones.d.ts.map +1 -0
- package/dist/core/proveedores-registry/definiciones.js +22 -0
- package/dist/core/proveedores-registry/definiciones.js.map +1 -0
- package/dist/core/proveedores-registry/index.d.ts +14 -0
- package/dist/core/proveedores-registry/index.d.ts.map +1 -0
- package/dist/core/proveedores-registry/index.js +13 -0
- package/dist/core/proveedores-registry/index.js.map +1 -0
- package/dist/core/proveedores-registry/resolver.d.ts +25 -0
- package/dist/core/proveedores-registry/resolver.d.ts.map +1 -0
- package/dist/core/proveedores-registry/resolver.js +69 -0
- package/dist/core/proveedores-registry/resolver.js.map +1 -0
- package/dist/core/proveedores-registry/tipos.d.ts +47 -0
- package/dist/core/proveedores-registry/tipos.d.ts.map +1 -0
- package/dist/core/proveedores-registry/tipos.js +15 -0
- package/dist/core/proveedores-registry/tipos.js.map +1 -0
- package/dist/core/provider-attribution.d.ts.map +1 -1
- package/dist/core/provider-attribution.js.map +1 -1
- package/dist/core/provider-composer.d.ts.map +1 -1
- package/dist/core/provider-composer.js.map +1 -1
- package/dist/core/radius.d.ts.map +1 -1
- package/dist/core/radius.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/remoto/destino.d.ts.map +1 -1
- package/dist/core/remoto/destino.js.map +1 -1
- package/dist/core/remoto/ejecutor.d.ts.map +1 -1
- package/dist/core/remoto/ejecutor.js.map +1 -1
- package/dist/core/remoto/ficheros.d.ts.map +1 -1
- package/dist/core/remoto/ficheros.js.map +1 -1
- package/dist/core/remoto/registro-extension.d.ts.map +1 -1
- package/dist/core/remoto/registro-extension.js.map +1 -1
- package/dist/core/remoto/tools.d.ts.map +1 -1
- package/dist/core/remoto/tools.js.map +1 -1
- package/dist/core/reparacion/index.d.ts +2 -0
- package/dist/core/reparacion/index.d.ts.map +1 -0
- package/dist/core/reparacion/index.js +2 -0
- package/dist/core/reparacion/index.js.map +1 -0
- package/dist/core/reparacion/reparar-hunk.d.ts +27 -0
- package/dist/core/reparacion/reparar-hunk.d.ts.map +1 -0
- package/dist/core/reparacion/reparar-hunk.js +139 -0
- package/dist/core/reparacion/reparar-hunk.js.map +1 -0
- package/dist/core/resolve-config-value.d.ts.map +1 -1
- package/dist/core/resolve-config-value.js.map +1 -1
- package/dist/core/resource-loader.d.ts +13 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +7 -4
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/revision/dispositions.d.ts +86 -0
- package/dist/core/revision/dispositions.d.ts.map +1 -0
- package/dist/core/revision/dispositions.js +137 -0
- package/dist/core/revision/dispositions.js.map +1 -0
- package/dist/core/revision/hallazgo.d.ts.map +1 -1
- package/dist/core/revision/hallazgo.js.map +1 -1
- package/dist/core/revision/procedencia.d.ts +63 -0
- package/dist/core/revision/procedencia.d.ts.map +1 -0
- package/dist/core/revision/procedencia.js +72 -0
- package/dist/core/revision/procedencia.js.map +1 -0
- package/dist/core/revision/publicar.d.ts +26 -0
- package/dist/core/revision/publicar.d.ts.map +1 -0
- package/dist/core/revision/publicar.js +34 -0
- package/dist/core/revision/publicar.js.map +1 -0
- package/dist/core/revision/revisor.d.ts.map +1 -1
- package/dist/core/revision/revisor.js.map +1 -1
- package/dist/core/revision/sarif.d.ts.map +1 -1
- package/dist/core/revision/sarif.js.map +1 -1
- package/dist/core/router-uris/index.d.ts +12 -0
- package/dist/core/router-uris/index.d.ts.map +1 -0
- package/dist/core/router-uris/index.js +12 -0
- package/dist/core/router-uris/index.js.map +1 -0
- package/dist/core/router-uris/router.d.ts +2 -0
- package/dist/core/router-uris/router.d.ts.map +1 -0
- package/dist/core/router-uris/router.js +2 -0
- package/dist/core/router-uris/router.js.map +1 -0
- package/dist/core/runtime-credentials.d.ts.map +1 -1
- package/dist/core/runtime-credentials.js.map +1 -1
- package/dist/core/rutas/envoltorio.d.ts +20 -0
- package/dist/core/rutas/envoltorio.d.ts.map +1 -0
- package/dist/core/rutas/envoltorio.js +48 -0
- package/dist/core/rutas/envoltorio.js.map +1 -0
- package/dist/core/rutas/index.d.ts +11 -0
- package/dist/core/rutas/index.d.ts.map +1 -0
- package/dist/core/rutas/index.js +11 -0
- package/dist/core/rutas/index.js.map +1 -0
- package/dist/core/rutas/router.d.ts +82 -0
- package/dist/core/rutas/router.d.ts.map +1 -0
- package/dist/core/rutas/router.js +161 -0
- package/dist/core/rutas/router.js.map +1 -0
- package/dist/core/scheduler/scheduler.d.ts.map +1 -1
- package/dist/core/scheduler/scheduler.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/secretos/extension.d.ts +31 -0
- package/dist/core/secretos/extension.d.ts.map +1 -0
- package/dist/core/secretos/extension.js +64 -0
- package/dist/core/secretos/extension.js.map +1 -0
- package/dist/core/secretos/index.d.ts +75 -0
- package/dist/core/secretos/index.d.ts.map +1 -0
- package/dist/core/secretos/index.js +385 -0
- package/dist/core/secretos/index.js.map +1 -0
- package/dist/core/secretos/message-transform.d.ts +44 -0
- package/dist/core/secretos/message-transform.d.ts.map +1 -0
- package/dist/core/secretos/message-transform.js +246 -0
- package/dist/core/secretos/message-transform.js.map +1 -0
- package/dist/core/secretos/obfuscator.d.ts +30 -0
- package/dist/core/secretos/obfuscator.d.ts.map +1 -0
- package/dist/core/secretos/obfuscator.js +1182 -0
- package/dist/core/secretos/obfuscator.js.map +1 -0
- package/dist/core/secretos/placeholder-scan.d.ts +96 -0
- package/dist/core/secretos/placeholder-scan.d.ts.map +1 -0
- package/dist/core/secretos/placeholder-scan.js +433 -0
- package/dist/core/secretos/placeholder-scan.js.map +1 -0
- package/dist/core/secretos/placeholder.d.ts +95 -0
- package/dist/core/secretos/placeholder.d.ts.map +1 -0
- package/dist/core/secretos/placeholder.js +283 -0
- package/dist/core/secretos/placeholder.js.map +1 -0
- package/dist/core/secretos/regex.d.ts +3 -0
- package/dist/core/secretos/regex.d.ts.map +1 -0
- package/dist/core/secretos/regex.js +19 -0
- package/dist/core/secretos/regex.js.map +1 -0
- package/dist/core/secretos/replacement.d.ts +83 -0
- package/dist/core/secretos/replacement.d.ts.map +1 -0
- package/dist/core/secretos/replacement.js +211 -0
- package/dist/core/secretos/replacement.js.map +1 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts.map +1 -1
- package/dist/core/sesion/cerrar-llamadas-abiertas.js.map +1 -1
- package/dist/core/sesion/journal-tree.d.ts +73 -0
- package/dist/core/sesion/journal-tree.d.ts.map +1 -0
- package/dist/core/sesion/journal-tree.js +241 -0
- package/dist/core/sesion/journal-tree.js.map +1 -0
- package/dist/core/sesion/turn-recovery.d.ts +48 -0
- package/dist/core/sesion/turn-recovery.d.ts.map +1 -0
- package/dist/core/sesion/turn-recovery.js +182 -0
- package/dist/core/sesion/turn-recovery.js.map +1 -0
- package/dist/core/session-cwd.d.ts.map +1 -1
- package/dist/core/session-cwd.js.map +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-diagnostics.d.ts.map +1 -1
- package/dist/core/settings-diagnostics.js.map +1 -1
- package/dist/core/settings-manager.d.ts +2 -2
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/share/cifrado.d.ts +39 -0
- package/dist/core/share/cifrado.d.ts.map +1 -0
- package/dist/core/share/cifrado.js +81 -0
- package/dist/core/share/cifrado.js.map +1 -0
- package/dist/core/share/exportar.d.ts +69 -0
- package/dist/core/share/exportar.d.ts.map +1 -0
- package/dist/core/share/exportar.js +247 -0
- package/dist/core/share/exportar.js.map +1 -0
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/source-info.d.ts.map +1 -1
- package/dist/core/source-info.js.map +1 -1
- package/dist/core/stream-guard/guardia.d.ts +45 -0
- package/dist/core/stream-guard/guardia.d.ts.map +1 -0
- package/dist/core/stream-guard/guardia.js +100 -0
- package/dist/core/stream-guard/guardia.js.map +1 -0
- package/dist/core/stream-guard/index.d.ts +9 -0
- package/dist/core/stream-guard/index.d.ts.map +1 -0
- package/dist/core/stream-guard/index.js +7 -0
- package/dist/core/stream-guard/index.js.map +1 -0
- package/dist/core/stream-guard/replay.d.ts +39 -0
- package/dist/core/stream-guard/replay.d.ts.map +1 -0
- package/dist/core/stream-guard/replay.js +68 -0
- package/dist/core/stream-guard/replay.js.map +1 -0
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/telemetria/otlp.d.ts.map +1 -1
- package/dist/core/telemetria/otlp.js.map +1 -1
- package/dist/core/telemetry/otel-genai.d.ts +44 -0
- package/dist/core/telemetry/otel-genai.d.ts.map +1 -0
- package/dist/core/telemetry/otel-genai.js +124 -0
- package/dist/core/telemetry/otel-genai.js.map +1 -0
- package/dist/core/telemetry.d.ts.map +1 -1
- package/dist/core/telemetry.js.map +1 -1
- package/dist/core/terminal/backlog-guard.d.ts +53 -0
- package/dist/core/terminal/backlog-guard.d.ts.map +1 -0
- package/dist/core/terminal/backlog-guard.js +122 -0
- package/dist/core/terminal/backlog-guard.js.map +1 -0
- package/dist/core/terminal/conpty.d.ts +29 -0
- package/dist/core/terminal/conpty.d.ts.map +1 -0
- package/dist/core/terminal/conpty.js +67 -0
- package/dist/core/terminal/conpty.js.map +1 -0
- package/dist/core/terminal/conptyChunking.d.ts +2 -0
- package/dist/core/terminal/conptyChunking.d.ts.map +1 -0
- package/dist/core/terminal/conptyChunking.js +2 -0
- package/dist/core/terminal/conptyChunking.js.map +1 -0
- package/dist/core/terminal/index.d.ts +5 -0
- package/dist/core/terminal/index.d.ts.map +1 -0
- package/dist/core/terminal/index.js +5 -0
- package/dist/core/terminal/index.js.map +1 -0
- package/dist/core/terminal/loop-watchdog.d.ts +43 -0
- package/dist/core/terminal/loop-watchdog.d.ts.map +1 -0
- package/dist/core/terminal/loop-watchdog.js +117 -0
- package/dist/core/terminal/loop-watchdog.js.map +1 -0
- package/dist/core/terminal/runner.d.ts +55 -0
- package/dist/core/terminal/runner.d.ts.map +1 -0
- package/dist/core/terminal/runner.js +102 -0
- package/dist/core/terminal/runner.js.map +1 -0
- package/dist/core/timings.d.ts.map +1 -1
- package/dist/core/timings.js.map +1 -1
- package/dist/core/tools/apply_patch.d.ts +29 -0
- package/dist/core/tools/apply_patch.d.ts.map +1 -0
- package/dist/core/tools/apply_patch.js +54 -0
- package/dist/core/tools/apply_patch.js.map +1 -0
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/coercion-argumentos.d.ts.map +1 -1
- package/dist/core/tools/coercion-argumentos.js.map +1 -1
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- 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 +43 -1
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
- package/dist/core/tools/file-mutation-queue.js.map +1 -1
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/json-tolerante.d.ts.map +1 -1
- package/dist/core/tools/json-tolerante.js.map +1 -1
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/noop-loop-guard.d.ts +46 -0
- package/dist/core/tools/noop-loop-guard.d.ts.map +1 -0
- package/dist/core/tools/noop-loop-guard.js +57 -0
- package/dist/core/tools/noop-loop-guard.js.map +1 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -1
- package/dist/core/tools/output-accumulator.js.map +1 -1
- package/dist/core/tools/path-utils.d.ts.map +1 -1
- package/dist/core/tools/path-utils.js.map +1 -1
- package/dist/core/tools/project-memory-tool.d.ts.map +1 -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.map +1 -1
- package/dist/core/tools/render-utils.d.ts.map +1 -1
- package/dist/core/tools/render-utils.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/tools/truncate.d.ts.map +1 -1
- package/dist/core/tools/truncate.js.map +1 -1
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js.map +1 -1
- package/dist/core/trust-manager.d.ts.map +1 -1
- package/dist/core/trust-manager.js.map +1 -1
- package/dist/core/ttsr/captura.d.ts +72 -0
- package/dist/core/ttsr/captura.d.ts.map +1 -0
- package/dist/core/ttsr/captura.js +183 -0
- package/dist/core/ttsr/captura.js.map +1 -0
- package/dist/core/ttsr/index.d.ts +24 -0
- package/dist/core/ttsr/index.d.ts.map +1 -0
- package/dist/core/ttsr/index.js +57 -0
- package/dist/core/ttsr/index.js.map +1 -0
- package/dist/core/ttsr/preview.d.ts +48 -0
- package/dist/core/ttsr/preview.d.ts.map +1 -0
- package/dist/core/ttsr/preview.js +83 -0
- package/dist/core/ttsr/preview.js.map +1 -0
- package/dist/core/turno-vacio/detectar.d.ts.map +1 -1
- package/dist/core/turno-vacio/detectar.js.map +1 -1
- package/dist/core/undo/journal.d.ts.map +1 -1
- package/dist/core/undo/journal.js.map +1 -1
- package/dist/core/urls-internas/auditoria.d.ts.map +1 -1
- package/dist/core/urls-internas/auditoria.js.map +1 -1
- package/dist/core/urls-internas/boveda.d.ts.map +1 -1
- package/dist/core/urls-internas/boveda.js.map +1 -1
- package/dist/core/urls-internas/lector.d.ts +14 -10
- package/dist/core/urls-internas/lector.d.ts.map +1 -1
- package/dist/core/urls-internas/lector.js +50 -36
- package/dist/core/urls-internas/lector.js.map +1 -1
- package/dist/core/urls-internas/memoria.d.ts.map +1 -1
- package/dist/core/urls-internas/memoria.js.map +1 -1
- package/dist/core/urls-internas/parse.d.ts +6 -13
- package/dist/core/urls-internas/parse.d.ts.map +1 -1
- package/dist/core/urls-internas/parse.js +6 -17
- package/dist/core/urls-internas/parse.js.map +1 -1
- package/dist/core/urls-internas/reglas.d.ts.map +1 -1
- package/dist/core/urls-internas/reglas.js.map +1 -1
- package/dist/core/usage/aggregate.d.ts +1 -0
- package/dist/core/usage/aggregate.d.ts.map +1 -1
- package/dist/core/usage/aggregate.js +1 -1
- package/dist/core/usage/aggregate.js.map +1 -1
- package/dist/core/usage/cuota/anthropic.d.ts.map +1 -1
- package/dist/core/usage/cuota/anthropic.js.map +1 -1
- package/dist/core/usage/cuota/cache.d.ts.map +1 -1
- package/dist/core/usage/cuota/cache.js.map +1 -1
- package/dist/core/usage/cuota/github-copilot.d.ts.map +1 -1
- package/dist/core/usage/cuota/github-copilot.js.map +1 -1
- package/dist/core/usage/cuota/google-gemini.d.ts.map +1 -1
- package/dist/core/usage/cuota/google-gemini.js.map +1 -1
- package/dist/core/usage/cuota/index.d.ts.map +1 -1
- package/dist/core/usage/cuota/index.js.map +1 -1
- package/dist/core/usage/cuota/openai-codex.d.ts.map +1 -1
- package/dist/core/usage/cuota/openai-codex.js.map +1 -1
- package/dist/core/usage/cuota/openrouter.d.ts.map +1 -1
- package/dist/core/usage/cuota/openrouter.js.map +1 -1
- package/dist/core/usage/cuota/tipos.d.ts.map +1 -1
- package/dist/core/usage/cuota/tipos.js.map +1 -1
- package/dist/core/usage/index.d.ts +11 -0
- package/dist/core/usage/index.d.ts.map +1 -0
- package/dist/core/usage/index.js +11 -0
- package/dist/core/usage/index.js.map +1 -0
- package/dist/core/usage/multi.d.ts +62 -0
- package/dist/core/usage/multi.d.ts.map +1 -0
- package/dist/core/usage/multi.js +122 -0
- package/dist/core/usage/multi.js.map +1 -0
- package/dist/core/usage/redaccion.d.ts +48 -0
- package/dist/core/usage/redaccion.d.ts.map +1 -0
- package/dist/core/usage/redaccion.js +72 -0
- package/dist/core/usage/redaccion.js.map +1 -0
- package/dist/core/usage-totals.d.ts.map +1 -1
- package/dist/core/usage-totals.js.map +1 -1
- package/dist/core/utils/atomic-write.d.ts +55 -0
- package/dist/core/utils/atomic-write.d.ts.map +1 -0
- package/dist/core/utils/atomic-write.js +293 -0
- package/dist/core/utils/atomic-write.js.map +1 -0
- package/dist/core/utils/git.d.ts +24 -0
- package/dist/core/utils/git.d.ts.map +1 -0
- package/dist/core/utils/git.js +107 -0
- package/dist/core/utils/git.js.map +1 -0
- package/dist/core/utils/logger.d.ts +26 -0
- package/dist/core/utils/logger.d.ts.map +1 -0
- package/dist/core/utils/logger.js +104 -0
- package/dist/core/utils/logger.js.map +1 -0
- package/dist/core/utils/shell-snapshot.d.ts +21 -0
- package/dist/core/utils/shell-snapshot.d.ts.map +1 -0
- package/dist/core/utils/shell-snapshot.js +32 -0
- package/dist/core/utils/shell-snapshot.js.map +1 -0
- package/dist/core/utils/startup-watchdog.d.ts +11 -0
- package/dist/core/utils/startup-watchdog.d.ts.map +1 -0
- package/dist/core/utils/startup-watchdog.js +34 -0
- package/dist/core/utils/startup-watchdog.js.map +1 -0
- package/dist/core/utils/tls-ca-shim.d.ts +17 -0
- package/dist/core/utils/tls-ca-shim.d.ts.map +1 -0
- package/dist/core/utils/tls-ca-shim.js +33 -0
- package/dist/core/utils/tls-ca-shim.js.map +1 -0
- package/dist/core/web/agregador.d.ts +67 -0
- package/dist/core/web/agregador.d.ts.map +1 -0
- package/dist/core/web/agregador.js +182 -0
- package/dist/core/web/agregador.js.map +1 -0
- package/dist/core/web/busqueda-nativa.d.ts.map +1 -1
- package/dist/core/web/busqueda-nativa.js.map +1 -1
- package/dist/core/web/consulta.d.ts +53 -0
- package/dist/core/web/consulta.d.ts.map +1 -0
- package/dist/core/web/consulta.js +213 -0
- package/dist/core/web/consulta.js.map +1 -0
- package/dist/core/web/destino.d.ts +11 -0
- package/dist/core/web/destino.d.ts.map +1 -1
- package/dist/core/web/destino.js +35 -0
- package/dist/core/web/destino.js.map +1 -1
- package/dist/core/web/load-page.d.ts +52 -0
- package/dist/core/web/load-page.d.ts.map +1 -0
- package/dist/core/web/load-page.js +221 -0
- package/dist/core/web/load-page.js.map +1 -0
- package/dist/core/web/proveedores/brave.d.ts.map +1 -1
- package/dist/core/web/proveedores/brave.js.map +1 -1
- package/dist/core/web/proveedores/claves.d.ts.map +1 -1
- package/dist/core/web/proveedores/claves.js.map +1 -1
- package/dist/core/web/proveedores/duckduckgo.d.ts.map +1 -1
- package/dist/core/web/proveedores/duckduckgo.js.map +1 -1
- package/dist/core/web/proveedores/ecosia.d.ts.map +1 -1
- package/dist/core/web/proveedores/ecosia.js.map +1 -1
- package/dist/core/web/proveedores/exa.d.ts.map +1 -1
- package/dist/core/web/proveedores/exa.js.map +1 -1
- package/dist/core/web/proveedores/mojeek.d.ts.map +1 -1
- package/dist/core/web/proveedores/mojeek.js.map +1 -1
- package/dist/core/web/proveedores/navegador.d.ts.map +1 -1
- package/dist/core/web/proveedores/navegador.js.map +1 -1
- package/dist/core/web/proveedores/registro.d.ts.map +1 -1
- package/dist/core/web/proveedores/registro.js.map +1 -1
- package/dist/core/web/proveedores/searxng.d.ts.map +1 -1
- package/dist/core/web/proveedores/searxng.js.map +1 -1
- package/dist/core/web/proveedores/serper.d.ts.map +1 -1
- package/dist/core/web/proveedores/serper.js.map +1 -1
- package/dist/core/web/proveedores/tavily.d.ts.map +1 -1
- package/dist/core/web/proveedores/tavily.js.map +1 -1
- package/dist/core/web/proveedores/tipos.d.ts.map +1 -1
- package/dist/core/web/proveedores/tipos.js.map +1 -1
- package/dist/core/web/registro-red.d.ts.map +1 -1
- package/dist/core/web/registro-red.js.map +1 -1
- package/dist/core/web/scrapers/cisa-kev.d.ts.map +1 -1
- package/dist/core/web/scrapers/cisa-kev.js.map +1 -1
- package/dist/core/web/scrapers/crates-io.d.ts.map +1 -1
- package/dist/core/web/scrapers/crates-io.js.map +1 -1
- package/dist/core/web/scrapers/docs-rs.d.ts.map +1 -1
- package/dist/core/web/scrapers/docs-rs.js.map +1 -1
- package/dist/core/web/scrapers/github.d.ts.map +1 -1
- package/dist/core/web/scrapers/github.js.map +1 -1
- package/dist/core/web/scrapers/go-pkg.d.ts.map +1 -1
- package/dist/core/web/scrapers/go-pkg.js.map +1 -1
- package/dist/core/web/scrapers/hex.d.ts.map +1 -1
- package/dist/core/web/scrapers/hex.js.map +1 -1
- package/dist/core/web/scrapers/maven.d.ts.map +1 -1
- package/dist/core/web/scrapers/maven.js.map +1 -1
- package/dist/core/web/scrapers/mdn.d.ts.map +1 -1
- package/dist/core/web/scrapers/mdn.js.map +1 -1
- package/dist/core/web/scrapers/npm.d.ts.map +1 -1
- package/dist/core/web/scrapers/npm.js.map +1 -1
- package/dist/core/web/scrapers/nuget.d.ts.map +1 -1
- package/dist/core/web/scrapers/nuget.js.map +1 -1
- package/dist/core/web/scrapers/nvd.d.ts.map +1 -1
- package/dist/core/web/scrapers/nvd.js.map +1 -1
- package/dist/core/web/scrapers/pypi.d.ts.map +1 -1
- package/dist/core/web/scrapers/pypi.js.map +1 -1
- package/dist/core/web/scrapers/registro.d.ts.map +1 -1
- package/dist/core/web/scrapers/registro.js.map +1 -1
- package/dist/core/web/scrapers/rubygems.d.ts.map +1 -1
- package/dist/core/web/scrapers/rubygems.js.map +1 -1
- package/dist/core/web/scrapers/stackoverflow.d.ts.map +1 -1
- package/dist/core/web/scrapers/stackoverflow.js.map +1 -1
- package/dist/core/web/scrapers/tipos.d.ts.map +1 -1
- package/dist/core/web/scrapers/tipos.js.map +1 -1
- package/dist/core/web/texto.d.ts.map +1 -1
- package/dist/core/web/texto.js.map +1 -1
- package/dist/core/web/tools.d.ts +1 -8
- package/dist/core/web/tools.d.ts.map +1 -1
- package/dist/core/web/tools.js +2 -33
- package/dist/core/web/tools.js.map +1 -1
- package/dist/core/wiki/almacen.d.ts.map +1 -1
- package/dist/core/wiki/almacen.js.map +1 -1
- package/dist/core/wiki/citas.d.ts.map +1 -1
- package/dist/core/wiki/citas.js.map +1 -1
- package/dist/core/workflows/agent-runner.d.ts.map +1 -1
- package/dist/core/workflows/agent-runner.js.map +1 -1
- package/dist/core/workflows/builtins.d.ts.map +1 -1
- package/dist/core/workflows/builtins.js.map +1 -1
- package/dist/core/workflows/contrato/esquema.d.ts.map +1 -1
- package/dist/core/workflows/contrato/esquema.js.map +1 -1
- package/dist/core/workflows/contrato/reparar-argumentos.d.ts.map +1 -1
- package/dist/core/workflows/contrato/reparar-argumentos.js.map +1 -1
- package/dist/core/workflows/contrato/validador.d.ts.map +1 -1
- package/dist/core/workflows/contrato/validador.js.map +1 -1
- package/dist/core/workflows/contrato/yield.d.ts.map +1 -1
- package/dist/core/workflows/contrato/yield.js.map +1 -1
- package/dist/core/workflows/goal-engine/engine.d.ts +5 -0
- package/dist/core/workflows/goal-engine/engine.d.ts.map +1 -1
- package/dist/core/workflows/goal-engine/engine.js.map +1 -1
- package/dist/core/workflows/goal-engine/errors.d.ts.map +1 -1
- package/dist/core/workflows/goal-engine/errors.js.map +1 -1
- package/dist/core/workflows/goal-engine/index.d.ts.map +1 -1
- package/dist/core/workflows/goal-engine/index.js.map +1 -1
- package/dist/core/workflows/goal-engine/persistence.d.ts.map +1 -1
- package/dist/core/workflows/goal-engine/persistence.js.map +1 -1
- package/dist/core/workflows/goal-engine/prompts.d.ts.map +1 -1
- package/dist/core/workflows/goal-engine/prompts.js.map +1 -1
- package/dist/core/workflows/goal-engine/state.d.ts.map +1 -1
- package/dist/core/workflows/goal-engine/state.js.map +1 -1
- package/dist/core/workflows/goal-engine/tools.d.ts.map +1 -1
- package/dist/core/workflows/goal-engine/tools.js.map +1 -1
- package/dist/core/workflows/goal-engine/types.d.ts.map +1 -1
- package/dist/core/workflows/goal-engine/types.js.map +1 -1
- package/dist/core/workflows/goal-engine/worktree-fingerprint.d.ts.map +1 -1
- package/dist/core/workflows/goal-engine/worktree-fingerprint.js.map +1 -1
- package/dist/core/workflows/graph-sync.d.ts.map +1 -1
- package/dist/core/workflows/graph-sync.js.map +1 -1
- package/dist/core/workflows/graph.d.ts.map +1 -1
- package/dist/core/workflows/graph.js.map +1 -1
- package/dist/core/workflows/index.d.ts +6 -0
- package/dist/core/workflows/index.d.ts.map +1 -1
- package/dist/core/workflows/index.js +3 -0
- package/dist/core/workflows/index.js.map +1 -1
- package/dist/core/workflows/journal.d.ts.map +1 -1
- package/dist/core/workflows/journal.js.map +1 -1
- package/dist/core/workflows/manager.d.ts.map +1 -1
- package/dist/core/workflows/manager.js.map +1 -1
- package/dist/core/workflows/provider-caps.d.ts +103 -0
- package/dist/core/workflows/provider-caps.d.ts.map +1 -0
- package/dist/core/workflows/provider-caps.js +235 -0
- package/dist/core/workflows/provider-caps.js.map +1 -0
- package/dist/core/workflows/resolve-script.d.ts.map +1 -1
- package/dist/core/workflows/resolve-script.js.map +1 -1
- package/dist/core/workflows/runtime.d.ts.map +1 -1
- package/dist/core/workflows/runtime.js.map +1 -1
- package/dist/core/workflows/save-as-skill.d.ts.map +1 -1
- package/dist/core/workflows/save-as-skill.js.map +1 -1
- package/dist/core/workflows/shared-store.d.ts.map +1 -1
- package/dist/core/workflows/shared-store.js.map +1 -1
- package/dist/core/workflows/soft-budget.d.ts +27 -0
- package/dist/core/workflows/soft-budget.d.ts.map +1 -0
- package/dist/core/workflows/soft-budget.js +47 -0
- package/dist/core/workflows/soft-budget.js.map +1 -0
- package/dist/core/workflows/subagent-host.d.ts.map +1 -1
- package/dist/core/workflows/subagent-host.js.map +1 -1
- package/dist/core/workflows/tool-scheduling.d.ts +47 -0
- package/dist/core/workflows/tool-scheduling.d.ts.map +1 -0
- package/dist/core/workflows/tool-scheduling.js +102 -0
- package/dist/core/workflows/tool-scheduling.js.map +1 -0
- package/dist/core/workflows/tool-workflow.d.ts.map +1 -1
- package/dist/core/workflows/tool-workflow.js.map +1 -1
- package/dist/core/workflows/types.d.ts.map +1 -1
- package/dist/core/workflows/types.js.map +1 -1
- package/dist/core/workflows/worktree.d.ts.map +1 -1
- package/dist/core/workflows/worktree.js.map +1 -1
- package/dist/extensions/index.d.ts.map +1 -1
- package/dist/extensions/index.js.map +1 -1
- package/dist/extensions/llama/client.d.ts.map +1 -1
- package/dist/extensions/llama/client.js.map +1 -1
- package/dist/extensions/llama/huggingface.d.ts.map +1 -1
- package/dist/extensions/llama/huggingface.js.map +1 -1
- package/dist/extensions/llama/index.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/extensions/llama/ui.d.ts.map +1 -1
- package/dist/extensions/llama/ui.js.map +1 -1
- package/dist/extensions/remoto/index.d.ts.map +1 -1
- package/dist/extensions/remoto/index.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +71 -3
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js.map +1 -1
- package/dist/modes/acp/acp-mode.d.ts.map +1 -1
- package/dist/modes/acp/acp-mode.js.map +1 -1
- package/dist/modes/acp/events.d.ts.map +1 -1
- package/dist/modes/acp/events.js.map +1 -1
- package/dist/modes/index.d.ts.map +1 -1
- package/dist/modes/index.js.map +1 -1
- package/dist/modes/interactive/components/armin.d.ts.map +1 -1
- package/dist/modes/interactive/components/armin.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-entry.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
- package/dist/modes/interactive/components/daxnuts.js.map +1 -1
- package/dist/modes/interactive/components/diff.d.ts.map +1 -1
- package/dist/modes/interactive/components/diff.js.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
- package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
- package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-editor.js.map +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-input.js.map +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-selector.js.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/home-screen.d.ts +2 -0
- package/dist/modes/interactive/components/home-screen.d.ts.map +1 -1
- package/dist/modes/interactive/components/home-screen.js +5 -6
- package/dist/modes/interactive/components/home-screen.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -1
- package/dist/modes/interactive/components/markdown-transform.js.map +1 -1
- package/dist/modes/interactive/components/mermaid.d.ts.map +1 -1
- package/dist/modes/interactive/components/mermaid.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/prompt-optimization.d.ts.map +1 -1
- package/dist/modes/interactive/components/prompt-optimization.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-submenu.js.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
- package/dist/modes/interactive/components/status-indicator.js.map +1 -1
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/theme-selector.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector.js.map +1 -1
- package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/trust-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
- package/dist/modes/interactive/external-editor.d.ts.map +1 -1
- package/dist/modes/interactive/external-editor.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +19 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +29 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -1
- package/dist/modes/interactive/model-catalog-refresh.js.map +1 -1
- package/dist/modes/interactive/model-search.d.ts.map +1 -1
- package/dist/modes/interactive/model-search.js.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts +2 -2
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/json-event.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/modes/rpc/jsonl.d.ts.map +1 -1
- package/dist/modes/rpc/jsonl.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- 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.map +1 -1
- package/dist/rpc-entry.d.ts.map +1 -1
- package/dist/rpc-entry.js +0 -0
- package/dist/rpc-entry.js.map +1 -1
- package/dist/server/attach.d.ts.map +1 -1
- package/dist/server/attach.js.map +1 -1
- package/dist/server/create-harness.d.ts.map +1 -1
- package/dist/server/create-harness.js.map +1 -1
- package/dist/server/extension-ops.d.ts.map +1 -1
- package/dist/server/extension-ops.js.map +1 -1
- package/dist/server/pi-server-service.d.ts.map +1 -1
- package/dist/server/pi-server-service.js.map +1 -1
- package/dist/server/scheduler-tick.d.ts.map +1 -1
- package/dist/server/scheduler-tick.js.map +1 -1
- package/dist/server/serve.d.ts.map +1 -1
- package/dist/server/serve.js.map +1 -1
- package/dist/server/transcript.d.ts.map +1 -1
- package/dist/server/transcript.js.map +1 -1
- package/dist/telegram/api.d.ts +6 -0
- package/dist/telegram/api.d.ts.map +1 -1
- package/dist/telegram/api.js.map +1 -1
- package/dist/telegram/bridge.d.ts.map +1 -1
- package/dist/telegram/bridge.js.map +1 -1
- package/dist/telegram/journal.d.ts.map +1 -1
- package/dist/telegram/journal.js.map +1 -1
- package/dist/telegram/servidor.d.ts.map +1 -1
- package/dist/telegram/servidor.js.map +1 -1
- package/dist/utils/abort.d.ts.map +1 -1
- package/dist/utils/abort.js.map +1 -1
- package/dist/utils/ansi.d.ts.map +1 -1
- package/dist/utils/ansi.js.map +1 -1
- package/dist/utils/changelog.d.ts.map +1 -1
- package/dist/utils/changelog.js.map +1 -1
- package/dist/utils/child-process.d.ts.map +1 -1
- package/dist/utils/child-process.js.map +1 -1
- package/dist/utils/clipboard-image.d.ts.map +1 -1
- package/dist/utils/clipboard-image.js.map +1 -1
- package/dist/utils/clipboard-native.d.ts.map +1 -1
- package/dist/utils/clipboard-native.js.map +1 -1
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/deprecation.d.ts.map +1 -1
- package/dist/utils/deprecation.js.map +1 -1
- package/dist/utils/exif-orientation.d.ts.map +1 -1
- package/dist/utils/exif-orientation.js.map +1 -1
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/fs-watch.d.ts.map +1 -1
- package/dist/utils/fs-watch.js.map +1 -1
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/html.d.ts.map +1 -1
- package/dist/utils/html.js.map +1 -1
- package/dist/utils/image-convert.d.ts.map +1 -1
- package/dist/utils/image-convert.js.map +1 -1
- package/dist/utils/image-process.d.ts.map +1 -1
- package/dist/utils/image-process.js.map +1 -1
- package/dist/utils/image-resize-core.d.ts.map +1 -1
- package/dist/utils/image-resize-core.js.map +1 -1
- package/dist/utils/image-resize-worker.d.ts.map +1 -1
- package/dist/utils/image-resize-worker.js.map +1 -1
- package/dist/utils/image-resize.d.ts.map +1 -1
- package/dist/utils/image-resize.js.map +1 -1
- package/dist/utils/json.d.ts.map +1 -1
- package/dist/utils/json.js.map +1 -1
- package/dist/utils/management-http.d.ts.map +1 -1
- package/dist/utils/management-http.js.map +1 -1
- package/dist/utils/mime.d.ts.map +1 -1
- package/dist/utils/mime.js.map +1 -1
- package/dist/utils/open-browser.d.ts.map +1 -1
- package/dist/utils/open-browser.js.map +1 -1
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/photon.d.ts.map +1 -1
- package/dist/utils/photon.js.map +1 -1
- package/dist/utils/pi-user-agent.d.ts.map +1 -1
- package/dist/utils/pi-user-agent.js.map +1 -1
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/sleep.d.ts.map +1 -1
- package/dist/utils/sleep.js.map +1 -1
- package/dist/utils/syntax-highlight.d.ts.map +1 -1
- package/dist/utils/syntax-highlight.js.map +1 -1
- package/dist/utils/text.d.ts.map +1 -1
- package/dist/utils/text.js.map +1 -1
- package/dist/utils/tool-result-images.d.ts.map +1 -1
- package/dist/utils/tool-result-images.js.map +1 -1
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js.map +1 -1
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js.map +1 -1
- package/dist/utils/windows-self-update.d.ts.map +1 -1
- package/dist/utils/windows-self-update.js.map +1 -1
- package/docs/development-fork.md +170 -0
- package/docs/docs.json +25 -0
- package/docs/modules-infraestructura.md +115 -0
- package/docs/modules-motor.md +160 -0
- package/docs/modules-producto.md +179 -0
- package/docs/modules-seguridad.md +158 -0
- package/package.json +113 -113
- package/dist/core/commit/diff.d.ts.map +0 -1
- package/dist/core/commit/diff.js.map +0 -1
- package/dist/core/commit/mensaje.d.ts +0 -80
- package/dist/core/commit/mensaje.d.ts.map +0 -1
- package/dist/core/commit/mensaje.js +0 -207
- package/dist/core/commit/mensaje.js.map +0 -1
- /package/dist/core/{commit → commits}/diff.d.ts +0 -0
- /package/dist/core/{commit → commits}/diff.js +0 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* C02 — append-only AUTO: cableado por la API pública de extensiones,
|
|
3
|
+
* a coste cero contra el presupuesto de sincronización (este directorio no
|
|
4
|
+
* existe en upstream). Mismo patrón que `core/secretos/extension.ts` y LSP-01:
|
|
5
|
+
*
|
|
6
|
+
* ada-cli -e packages/coding-agent/src/core/appendonly/extension.ts
|
|
7
|
+
*
|
|
8
|
+
* Un gancho, ya emitido por el runner sin tocar upstream:
|
|
9
|
+
*
|
|
10
|
+
* - `context` (`runner.emitContext`, invocado desde `transformContext` en cada
|
|
11
|
+
* petición al proveedor): si `appendOnlyAutoPara(ctx.model.baseUrl,
|
|
12
|
+
* ctx.model.id)` decide que el proveedor activo reaprovecha prefijo
|
|
13
|
+
* (deepseek, loopback, RFC1918), construye/reusa un AppendOnlyContextManager
|
|
14
|
+
* y refleja en él los mensajes salientes. El manager queda disponible como
|
|
15
|
+
* libro mayor del contexto: `prefijoEstable()` fija la frontera de
|
|
16
|
+
* prompt-cache y `integrarConPruning(mgr, guard)` da a banco/pruning el
|
|
17
|
+
* cachePrefixLen correcto. Los mensajes NO se modifican: append-only es una
|
|
18
|
+
* contabilidad y garantía de inmutabilidad, no un transform.
|
|
19
|
+
*
|
|
20
|
+
* Si el modelo/baseUrl cambia a un proveedor sin prefix reuse, o el historial
|
|
21
|
+
* se encoge (navegación de árbol a otra rama), el estado se descarta: el
|
|
22
|
+
* manager solo tiene sentido mientras el stream de mensajes crece por append.
|
|
23
|
+
*
|
|
24
|
+
* Migrar a builtin sería una línea en `builtInExtensions` el día que haya
|
|
25
|
+
* margen — este fichero no cambia.
|
|
26
|
+
*/
|
|
27
|
+
import { AppendOnlyContextManager } from "./append-only-context.js";
|
|
28
|
+
import { appendOnlyAutoPara } from "./auto.js";
|
|
29
|
+
export default function appendOnlyAutoExtension(pi) {
|
|
30
|
+
let estado;
|
|
31
|
+
pi.on("context", (event, ctx) => {
|
|
32
|
+
const decision = appendOnlyAutoPara(ctx.model?.baseUrl, ctx.model?.id);
|
|
33
|
+
if (!decision.activo) {
|
|
34
|
+
estado = undefined;
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
const mensajes = event.messages;
|
|
38
|
+
// El historial se encogió (cambio de rama/sesión): empezar libro nuevo.
|
|
39
|
+
if (estado && mensajes.length < estado.reflejados)
|
|
40
|
+
estado = undefined;
|
|
41
|
+
estado ??= { mgr: new AppendOnlyContextManager({ idPrefix: "ao-" }), reflejados: 0 };
|
|
42
|
+
for (let i = estado.reflejados; i < mensajes.length; i += 1) {
|
|
43
|
+
estado.mgr.append(mensajes[i]);
|
|
44
|
+
estado.reflejados += 1;
|
|
45
|
+
}
|
|
46
|
+
// Congelar la frontera de prompt-cache para este turno.
|
|
47
|
+
estado.mgr.prefijoEstable();
|
|
48
|
+
return undefined;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../src/core/appendonly/extension.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAQ/C,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAAgB;IAC/D,IAAI,MAA8B,CAAC;IAEnC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC/B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACtB,MAAM,GAAG,SAAS,CAAC;YACnB,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,wEAAwE;QACxE,IAAI,MAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU;YAAE,MAAM,GAAG,SAAS,CAAC;QACtE,MAAM,KAAK,EAAE,GAAG,EAAE,IAAI,wBAAwB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;QACrF,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAsD,CAAC,CAAC;YACpF,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;QACxB,CAAC;QACD,wDAAwD;QACxD,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IAClB,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AppendOnly — AG2 (Fase 1). Barril público del paquete.
|
|
3
|
+
*
|
|
4
|
+
* Consumidores previstos (integración por extensión, sin hunks upstream):
|
|
5
|
+
* - banco/pruning.ts: `prefijoEstable().hasta` como cachePrefixLen protegido.
|
|
6
|
+
* - compactacion/ (prune/shake/handoff): operar solo sobre `contextoActivo()`;
|
|
7
|
+
* persistencia vía `serializarAJournal()` + `reconstruirDesde()`.
|
|
8
|
+
*/
|
|
9
|
+
export { AppendOnlyContextManager, type AppendOnlyOptions, type EntradaContexto, type PrefijoEstable, type TipoEntrada, } from "./append-only-context.ts";
|
|
10
|
+
import type { PruningGuard } from "../banco/pruning.ts";
|
|
11
|
+
import type { AppendOnlyContextManager } from "./append-only-context.ts";
|
|
12
|
+
export { appendOnlyAutoPara, type DecisionAppendOnlyAuto } from "./auto.ts";
|
|
13
|
+
/**
|
|
14
|
+
* Longitud de prefijo protegido expresada en MENSAJES ACTIVOS (lo que consume
|
|
15
|
+
* PruningGuard.prune como cachePrefixLen).
|
|
16
|
+
*
|
|
17
|
+
* Sin compactación es 1:1: cada entrada del manager es un mensaje enviado, así
|
|
18
|
+
* que `prefijoEstable().hasta` entradas == ese número de mensajes iniciales.
|
|
19
|
+
*
|
|
20
|
+
* Con compactación, el contexto activo es [resumen] + entradas vivas desde el
|
|
21
|
+
* puntero: el resumen ocupa el índice `puntero`, de modo que el prefijo
|
|
22
|
+
* congelado cubre `hasta` entradas == `hasta - puntero` mensajes activos
|
|
23
|
+
* (el propio resumen más las vivas que ya formaban parte del prefijo).
|
|
24
|
+
* Si la congelación es anterior al último resumen, no hay solape y es 0.
|
|
25
|
+
*/
|
|
26
|
+
export declare function longitudPrefijoProtegido(mgr: AppendOnlyContextManager): number;
|
|
27
|
+
/** Vista podadora consciente del prefijo estable: nunca poda dentro de él. */
|
|
28
|
+
export interface EnlacePruning {
|
|
29
|
+
/** cachePrefixLen actual (mensajes activos protegidos). */
|
|
30
|
+
longitudPrefijo(): number;
|
|
31
|
+
/** Poda solo el sufijo `[longitudPrefijo(), mensajes.length)`. */
|
|
32
|
+
podar<T>(mensajes: T[]): T[];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* C02 — consumidor real mínimo: alimenta un PruningGuard (banco/pruning.ts,
|
|
36
|
+
* que ya cita este prefijo en su cabecera) con `prefijoEstable()` para que el
|
|
37
|
+
* prune sea cache-aware de verdad: se poda el sufijo, y el prefijo estable que
|
|
38
|
+
* sostiene el prompt-cache queda intacto byte a byte.
|
|
39
|
+
*/
|
|
40
|
+
export declare function integrarConPruning(mgr: AppendOnlyContextManager, podador: PruningGuard): EnlacePruning;
|
|
41
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/appendonly/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACN,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,WAAW,GAChB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,EAAE,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAE5E;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,wBAAwB,GAAG,MAAM,CAI9E;AAED,8EAA8E;AAC9E,MAAM,WAAW,aAAa;IAC7B,2DAA2D;IAC3D,eAAe,IAAI,MAAM,CAAC;IAC1B,kEAAkE;IAClE,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,wBAAwB,EAAE,OAAO,EAAE,YAAY,GAAG,aAAa,CAKtG"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AppendOnly — AG2 (Fase 1). Barril público del paquete.
|
|
3
|
+
*
|
|
4
|
+
* Consumidores previstos (integración por extensión, sin hunks upstream):
|
|
5
|
+
* - banco/pruning.ts: `prefijoEstable().hasta` como cachePrefixLen protegido.
|
|
6
|
+
* - compactacion/ (prune/shake/handoff): operar solo sobre `contextoActivo()`;
|
|
7
|
+
* persistencia vía `serializarAJournal()` + `reconstruirDesde()`.
|
|
8
|
+
*/
|
|
9
|
+
export { AppendOnlyContextManager, } from "./append-only-context.js";
|
|
10
|
+
export { appendOnlyAutoPara } from "./auto.js";
|
|
11
|
+
/**
|
|
12
|
+
* Longitud de prefijo protegido expresada en MENSAJES ACTIVOS (lo que consume
|
|
13
|
+
* PruningGuard.prune como cachePrefixLen).
|
|
14
|
+
*
|
|
15
|
+
* Sin compactación es 1:1: cada entrada del manager es un mensaje enviado, así
|
|
16
|
+
* que `prefijoEstable().hasta` entradas == ese número de mensajes iniciales.
|
|
17
|
+
*
|
|
18
|
+
* Con compactación, el contexto activo es [resumen] + entradas vivas desde el
|
|
19
|
+
* puntero: el resumen ocupa el índice `puntero`, de modo que el prefijo
|
|
20
|
+
* congelado cubre `hasta` entradas == `hasta - puntero` mensajes activos
|
|
21
|
+
* (el propio resumen más las vivas que ya formaban parte del prefijo).
|
|
22
|
+
* Si la congelación es anterior al último resumen, no hay solape y es 0.
|
|
23
|
+
*/
|
|
24
|
+
export function longitudPrefijoProtegido(mgr) {
|
|
25
|
+
const prefijo = mgr.prefijoEstable();
|
|
26
|
+
if (mgr.punteroCompactacion === null)
|
|
27
|
+
return prefijo.hasta;
|
|
28
|
+
return Math.max(0, prefijo.hasta - mgr.punteroCompactacion);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* C02 — consumidor real mínimo: alimenta un PruningGuard (banco/pruning.ts,
|
|
32
|
+
* que ya cita este prefijo en su cabecera) con `prefijoEstable()` para que el
|
|
33
|
+
* prune sea cache-aware de verdad: se poda el sufijo, y el prefijo estable que
|
|
34
|
+
* sostiene el prompt-cache queda intacto byte a byte.
|
|
35
|
+
*/
|
|
36
|
+
export function integrarConPruning(mgr, podador) {
|
|
37
|
+
return {
|
|
38
|
+
longitudPrefijo: () => longitudPrefijoProtegido(mgr),
|
|
39
|
+
podar: (mensajes) => podador.prune(mensajes, longitudPrefijoProtegido(mgr)),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/appendonly/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACN,wBAAwB,GAKxB,MAAM,0BAA0B,CAAC;AAKlC,OAAO,EAAE,kBAAkB,EAA+B,MAAM,WAAW,CAAC;AAE5E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAA6B;IACrE,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;IACrC,IAAI,GAAG,CAAC,mBAAmB,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC,KAAK,CAAC;IAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAC7D,CAAC;AAUD;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAA6B,EAAE,OAAqB;IACtF,OAAO;QACN,eAAe,EAAE,GAAG,EAAE,CAAC,wBAAwB,CAAC,GAAG,CAAC;QACpD,KAAK,EAAE,CAAI,QAAa,EAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,wBAAwB,CAAC,GAAG,CAAC,CAAC;KACxF,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generados.d.ts","sourceRoot":"","sources":["../../../src/core/aprobacion/generados.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,eAAe;IAC/B,
|
|
1
|
+
{"version":3,"file":"generados.d.ts","sourceRoot":"","sources":["../../../src/core/aprobacion/generados.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,eAAe;IAC/B,mFAAmF;IACnF,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAkCD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAYzE;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,MAAM,CAS7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generados.js","sourceRoot":"","sources":["../../../src/core/aprobacion/generados.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAQH;;;;;;;;;;;;GAYG;AACH,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B;;;;;;GAMG;AACH,MAAM,UAAU,GAAa;IAC5B,eAAe;IACf,sCAAsC;IACtC,wEAAwE;IACxE,oIAAoI;IACpI,+CAA+C;IAC/C,+CAA+C;CAC/C,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB
|
|
1
|
+
{"version":3,"file":"generados.js","sourceRoot":"","sources":["../../../src/core/aprobacion/generados.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAQH;;;;;;;;;;;;GAYG;AACH,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B;;;;;;GAMG;AACH,MAAM,UAAU,GAAa;IAC5B,eAAe;IACf,sCAAsC;IACtC,wEAAwE;IACxE,oIAAoI;IACpI,+CAA+C;IAC/C,+CAA+C;CAC/C,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAChD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAC9F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,yEAAyE;QACzE,wEAAwE;QACxE,uEAAuE;QACvE,8CAA8C;QAC9C,IAAI,CAAC,0CAA0C,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,SAAS;QACtE,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IACxG,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,KAAsB;IACpE,OAAO;QACN,eAAe,IAAI,uCAAuC,KAAK,CAAC,MAAM,WAAW;QACjF,OAAO,KAAK,CAAC,KAAK,EAAE;QACpB,mFAAmF;QACnF,qFAAqF;QACrF,oEAAoE;QACpE,2EAA2E;KAC3E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"politica-de-maquina.d.ts","sourceRoot":"","sources":["../../../src/core/aprobacion/politica-de-maquina.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAKjD,MAAM,WAAW,iBAAiB;IACjC,2EAA2E;IAC3E,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,8EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,oFAA4E;AAC5E,MAAM,WAAW,iBAAiB;IACjC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;IAC5C,kFAAkF;IAClF,oBAAoB,EAAE,OAAO,CAAC;IAC9B,uEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;CACd;AAED,qEAAqE;AACrE,wBAAgB,gBAAgB,CAAC,UAAU,GAAE,MAAM,CAAC,QAA2B,EAAE,OAAO,oBAAc,GAAG,MAAM,CAY9G;AAMD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,SAAqB,GAAG,iBAAiB,CAyElF;AA8BD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,GAAG,WAAW,CAQzF;AAWD,wBAAgB,iBAAiB,IAAI,iBAAiB,CAMrD;AAED,uDAAsD;AACtD,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C","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"]}
|
|
1
|
+
{"version":3,"file":"politica-de-maquina.d.ts","sourceRoot":"","sources":["../../../src/core/aprobacion/politica-de-maquina.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAKjD,MAAM,WAAW,iBAAiB;IACjC,2EAA2E;IAC3E,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IACjC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;IAC5C,kFAAkF;IAClF,oBAAoB,EAAE,OAAO,CAAC;IAC9B,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;CACd;AAED,qEAAqE;AACrE,wBAAgB,gBAAgB,CAAC,UAAU,GAAE,MAAM,CAAC,QAA2B,EAAE,OAAO,oBAAc,GAAG,MAAM,CAY9G;AAMD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,SAAqB,GAAG,iBAAiB,CAyElF;AA8BD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,GAAG,WAAW,CAQzF;AAWD,wBAAgB,iBAAiB,IAAI,iBAAiB,CAMrD;AAED,sDAAsD;AACtD,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"politica-de-maquina.js","sourceRoot":"","sources":["../../../src/core/aprobacion/politica-de-maquina.ts"],"names":[],"mappings":"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","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"]}
|
|
1
|
+
{"version":3,"file":"politica-de-maquina.js","sourceRoot":"","sources":["../../../src/core/aprobacion/politica-de-maquina.ts"],"names":[],"mappings":"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"}
|
|
@@ -86,5 +86,5 @@ export interface EntradaDecision {
|
|
|
86
86
|
export declare function leerDenegadas(config: {
|
|
87
87
|
permissions?: Record<string, unknown>;
|
|
88
88
|
} | undefined): string[];
|
|
89
|
-
export declare function decidir({ tool, args, modo, agentDir, home, denegadas, maquina: maquinaDada }: EntradaDecision): Decision;
|
|
89
|
+
export declare function decidir({ tool, args, modo, agentDir, home, denegadas, maquina: maquinaDada, }: EntradaDecision): Decision;
|
|
90
90
|
//# sourceMappingURL=politica.d.ts.map
|
|
@@ -1 +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"]}
|
|
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,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAC;IACjB,qFAAqF;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,2EAA2E;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,GACpB,EAAE,eAAe,GAAG,QAAQ,CA4G5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"politica.js","sourceRoot":"","sources":["../../../src/core/aprobacion/politica.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Aprobación por herramienta.\n *\n * Antes de esto no había política ninguna: `beforeToolCall` disparaba los hooks\n * del usuario y las extensiones, y `permissions.level` —que existe en settings\n * desde siempre— solo lo leían los propios hooks. Ninguna tool se consultaba\n * contra él. Es decir, el nivel de permisos no gobernaba los permisos.\n *\n * El orden de las comprobaciones ES la propiedad de seguridad, y por eso está\n * escrito de arriba abajo en `decidir()` y no repartido:\n *\n * 1. Rutas protegidas — denegado SIEMPRE, incluso en `yolo`, no configurable\n * 2. Deny del usuario — denegado SIEMPRE, incluso en `yolo`\n * 3. Modo de la sesión — plan / manual / auto / yolo\n *\n * Que 1 y 2 vayan por delante del modo es lo que hace que el argumento de\n * cumplimiento se sostenga: una política que el propio agente puede desactivar\n * pidiendo `yolo` no es una política, es una sugerencia.\n *\n * Lo desconocido cuenta como ejecución. Una tool de MCP o de una extensión que\n * nadie ha clasificado no puede colarse por el carril de lectura por no estar\n * en ninguna lista.\n */\n\nimport { readFileSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { CONFIG_DIR_NAME } from \"../../config.ts\";\nimport { DIR_INDICE, DIR_SESION } from \"../audit/rutas.ts\";\nimport { suplantadaPor } from \"../extensiones/suplantacion.ts\";\nimport { marcaDeGenerado, motivoDeGenerado } from \"./generados.ts\";\nimport { type LecturaDePolitica, politicaDeMaquina, recortarModo } from \"./politica-de-maquina.ts\";\n\n/**\n * Segmento `.../<CONFIG_DIR_NAME>/agent/` de CUALQUIER instalación de Ada,\n * no solo `agentDir` (que es la de ESTE equipo).\n *\n * Con `--remoto` los argumentos de `read`/`write`/`bash` pueden nombrar un\n * `auth.json` o un `vault/` que viven en OTRA máquina — el destino de SSH,\n * el contenedor de Docker, la distro de WSL — con su propio `$HOME` y por\n * tanto un `agentDir` que `rutaProtegida` nunca conoce. Comprobar el\n * segmento en vez del prefijo completo protege ambos sin necesitar el\n * `agentDir` del destino, que esta política no tiene forma de calcular.\n */\nconst SEGMENTO_AGENTE_ADA = `/${CONFIG_DIR_NAME}/agent/`;\n\nexport type NivelTool = \"lectura\" | \"escritura\" | \"ejecucion\";\nexport type ModoPermiso = \"plan\" | \"manual\" | \"auto\" | \"yolo\";\nexport type VeredictoAprobacion = \"permitida\" | \"denegada\" | \"preguntar\";\n\nexport interface Decision {\n\tveredicto: VeredictoAprobacion;\n\t/** Qué regla decidió. Va al libro de sesión, así que tiene que ser estable. */\n\tpolitica: string;\n\t/** Texto para el modelo y para el usuario. Vacío cuando no hay nada que explicar. */\n\tmotivo: string;\n}\n\n/** Tools que solo miran. */\nconst LECTURA = new Set([\n\t\"read\",\n\t\"ls\",\n\t\"find\",\n\t\"grep\",\n\t\"ast_search\",\n\t\"session_search\",\n\t\"web_fetch\",\n\t\"web_search\",\n\t\"memory_search\",\n\t\"memory_list\",\n\t\"graph_query\",\n\t\"ask_user_question\",\n\t\"todo_read\",\n]);\n\n/** Tools que cambian estado nuestro, pero no ejecutan nada del sistema. */\nconst ESCRITURA = new Set([\n\t\"edit\",\n\t\"write\",\n\t\"ast_edit\",\n\t\"memory_add\",\n\t\"memory_replace\",\n\t\"memory_remove\",\n\t\"update_project_memory\",\n\t\"scratchpad\",\n\t\"todo\",\n\t\"todo_write\",\n\t\"graph_add\",\n]);\n\n/**\n * ¿Este nombre es de una tool NUESTRA cuyo nivel de confianza da esta política?\n *\n * Lo consulta el registro de extensiones para saber si `registerTool` está\n * suplantando una builtin. `bash` va aparte porque no está en ninguna de las dos\n * listas —lo desconocido ya es ejecución— pero suplantarlo importa igual: el\n * usuario tiene que ver que el `bash` que corre no es el nuestro.\n */\nexport function esNombreDeToolNuestra(tool: string): boolean {\n\treturn LECTURA.has(tool) || ESCRITURA.has(tool) || tool === \"bash\";\n}\n\n/**\n * El nivel de una herramienta. Lo que no está clasificado es ejecución.\n *\n * Falla cerrado a propósito: el coste de equivocarse hacia arriba es una\n * pregunta de más; hacia abajo, es una tool desconocida corriendo sola.\n */\nexport function nivelDe(tool: string): NivelTool {\n\t// Una builtin suplantada por una extensión NO hereda su nivel.\n\t//\n\t// Comprobado ejecutando: una extensión registra `read`, el loader la pone\n\t// encima de la nuestra y el modelo sigue creyendo que llama a la de Ada. Con\n\t// `LECTURA.has(\"read\")` por delante, ese `read` —que puede hacer lo que\n\t// quiera— se permitía siempre y en cualquier modo. Devolver \"ejecucion\" lo\n\t// devuelve al carril de lo desconocido, que es lo que es.\n\tif (suplantadaPor(tool)) return \"ejecucion\";\n\tif (LECTURA.has(tool)) return \"lectura\";\n\tif (ESCRITURA.has(tool)) return \"escritura\";\n\treturn \"ejecucion\";\n}\n\n/** Un directorio protegido aparece como segmento completo de la ruta. */\nfunction contieneSegmento(texto: string, segmento: string): boolean {\n\treturn texto.includes(`/${segmento}/`);\n}\n\n/**\n * ¿El texto nombra el directorio `dir` colgado de `base`, con barra final o sin\n * ella?\n *\n * La comprobación anterior solo miraba `base/dir/`, y por ahí se colaba justo el\n * caso peor. Comprobado ejecutando `decidir`:\n *\n * rm -rf <agentDir>/vault/ -> denegada ruta-protegida\n * rm -rf <agentDir>/vault -> PERMITIDA modo-yolo\n *\n * Es decir, el borrado entero del vault con un comando, porque el nombre de un\n * directorio no lleva barra al final cuando se lo pasas a `rm`. Se arregla aquí,\n * en la comprobación compartida, y no en cada llamada: la misma trampa valía\n * para el vault, para el libro y para cualquier directorio que se añada mañana.\n *\n * El caso sin barra se mide sobre el token y con el final exacto para no\n * llevarse por delante `vault-ejemplo` ni `sesiones/`. Se recorta la puntuación\n * de shell del final porque `rm -rf x/vault;` y `rm -rf x/vault)` son el mismo\n * comando con otro adorno.\n */\nfunction nombraDirectorio(texto: string, base: string, dir: string): boolean {\n\tif (texto.includes(`${base}${dir}/`)) return true;\n\treturn texto.split(/[\\s\"'`]+/).some((t) => t.replace(/[;,)&|>]+$/, \"\").endsWith(`${base}${dir}`));\n}\n\n/**\n * Deja la ruta en la forma con la que se compara.\n *\n * Sin esto la política era papel mojado, y se descubrió EJECUTANDO el producto:\n * el modelo escribe `~/.ada/agent/vault/…`, la tool expande la tilde por dentro\n * y abre el fichero, mientras que la política —que solo ve los argumentos\n * crudos— comparaba contra la ruta absoluta y no reconocía nada. El vault se\n * leyó entero con la política activada y todas las pruebas en verde, porque\n * todas usaban rutas absolutas.\n *\n * Se sustituye en TODO el texto y no solo al principio porque `bash` recibe una\n * línea entera, donde el `~` va detrás del comando.\n */\nfunction normalizar(texto: string, home: string): string {\n\treturn texto.replaceAll(\"$HOME/\", `${home}/`).replaceAll(\"~/\", `${home}/`);\n}\n\n/**\n * Si el texto nombra algo que no se puede tocar, devuelve por qué.\n *\n * Se mira el texto y no una \"ruta\" porque los argumentos no tienen un nombre\n * común (`path`, `file_path`, `command`…) y porque `bash` recibe una línea de\n * shell entera. Para `bash` esto es MEJOR ESFUERZO y hay que decirlo: quien\n * contiene de verdad un comando es el sandbox del sistema operativo, no esta\n * comprobación. Aquí se para lo evidente, que es lo que hace un agente\n * despistado; lo deliberado lo para el kernel.\n */\nfunction rutaProtegida(texto: string, agentDir: string, escribiendo: boolean): string | null {\n\tif (nombraDirectorio(texto, `${agentDir}/`, \"vault\")) return \"el vault cifrado\";\n\t// Generaliza lo de arriba a un vault de Ada en OTRA máquina (ver\n\t// `SEGMENTO_AGENTE_ADA`): mismo motivo, sin depender del `agentDir` local.\n\tif (nombraDirectorio(texto, SEGMENTO_AGENTE_ADA, \"vault\"))\n\t\treturn \"el vault cifrado (de este equipo o de un destino remoto)\";\n\n\t// El libro de auditoría y su índice.\n\t//\n\t// Agujero real, y el más grave que hemos tenido: la política protegía el\n\t// vault y el `auth.json` y dejaba al agente escribir y BORRAR libremente en\n\t// `<agentDir>/sesion/`, que es donde está el registro de lo que ha hecho. Es\n\t// decir, el sujeto de la auditoría tenía permiso de escritura sobre la\n\t// auditoría. Comprobado ejecutando `decidir`: `rm -rf <agentDir>/sesion/`\n\t// salía `permitida`.\n\t//\n\t// Denegado también para LEER, igual que el vault: el libro guarda hashes y\n\t// rutas de todo lo que ha pasado por la sesión, y no hay ninguna tarea\n\t// legítima del agente que necesite leerlo por el sistema de ficheros. Quien\n\t// tiene que verlo lo ve por `ada-cli audit show`, por `audit://` o por el\n\t// panel, que no pasan por esta política porque no son el agente.\n\tfor (const dir of [DIR_SESION, DIR_INDICE]) {\n\t\tif (nombraDirectorio(texto, `${agentDir}/`, dir)) return \"el libro de auditoría de la sesión\";\n\t\tif (nombraDirectorio(texto, SEGMENTO_AGENTE_ADA, dir)) {\n\t\t\treturn \"el libro de auditoría de la sesión (de este equipo o de un destino remoto)\";\n\t\t}\n\t}\n\n\t// Las credenciales de los proveedores, que viven EN CLARO en `auth.json`.\n\t//\n\t// Agujero real y propio: la primera versión de esta política protegía el\n\t// vault, las claves SSH, AWS y los `.env`, y dejaba abierto justo el fichero\n\t// donde están las claves con las que corre el agente. Se comprobó\n\t// ejecutando el producto y las leyó todas. Proteger la caja fuerte y dejar\n\t// las llaves encima no protege nada.\n\t//\n\t// Se compara con el nombre de fichero COMPLETO para no llevarse por delante\n\t// `auth.json.example`, `auth-storage.ts` ni `auth.md`, que son código y\n\t// documentación que el agente sí tiene que poder leer.\n\tfor (const parte of texto.split(/[\\s\"'`]+/)) {\n\t\tconst base = parte.slice(parte.lastIndexOf(\"/\") + 1);\n\t\tif (parte.includes(`${agentDir}/`) && base === \"auth.json\") return \"las credenciales de los proveedores\";\n\t\t// Igual, pero para el `auth.json` de un Ada corriendo en el DESTINO de\n\t\t// `--remoto`: no comparte `agentDir` con este equipo, así que el\n\t\t// segmento genérico es la única forma de reconocerlo.\n\t\tif (parte.includes(SEGMENTO_AGENTE_ADA) && base === \"auth.json\") {\n\t\t\treturn \"las credenciales de los proveedores (de este equipo o de un destino remoto)\";\n\t\t}\n\t\t// Y las de las otras herramientas: están en el mismo portátil y sirven\n\t\t// para lo mismo. Si el agente no ve las nuestras, no hay motivo para que\n\t\t// vea las de Claude Code, Codex, gh, Docker o kubectl.\n\t\tif (base === \".credentials.json\" || base === \".netrc\") return \"credenciales de otra herramienta\";\n\t\tif (contieneSegmento(parte, \".codex\") && base === \"auth.json\") return \"las credenciales de Codex\";\n\t\tif (contieneSegmento(parte, \"gh\") && base === \"hosts.yml\") return \"las credenciales de GitHub CLI\";\n\t\tif (contieneSegmento(parte, \".docker\") && base === \"config.json\") return \"las credenciales de Docker\";\n\t\tif (contieneSegmento(parte, \".kube\") && base === \"config\") return \"el acceso al clúster de Kubernetes\";\n\t}\n\n\tif (contieneSegmento(texto, \".ssh\")) return \"las claves SSH\";\n\tif (contieneSegmento(texto, \".gnupg\")) return \"las claves GPG\";\n\tif (contieneSegmento(texto, \".aws\")) return \"las credenciales de AWS\";\n\n\t// `.env` como nombre de fichero completo, no como prefijo: `.environment.ts`\n\t// es código normal y denegarlo dejaría medio proyecto ilegible sin que nadie\n\t// entendiera por qué.\n\tfor (const parte of texto.split(/[\\s\"'`]+/)) {\n\t\tconst base = parte.slice(parte.lastIndexOf(\"/\") + 1);\n\t\tif (base === \".env\" || base.startsWith(\".env.\")) return \"un fichero de entorno\";\n\t}\n\n\t// La configuración del agente se puede LEER pero no escribir. El\n\t// CVE-2026-25725 de Claude Code fue exactamente esto: código dentro del\n\t// sandbox creaba un settings.json e inyectaba hooks `SessionStart` que\n\t// corrían FUERA. Nuestro settings.json también ejecuta hooks.\n\tif (escribiendo && (texto.includes(`${agentDir}/settings.json`) || texto.includes(`${agentDir}/hooks`))) {\n\t\treturn \"la configuración del agente, que ejecuta hooks\";\n\t}\n\treturn null;\n}\n\n/** Todas las cadenas de los argumentos, a cualquier profundidad. */\nfunction cadenasDe(valor: unknown, acumulado: string[] = []): string[] {\n\tif (typeof valor === \"string\") acumulado.push(valor);\n\telse if (Array.isArray(valor)) for (const v of valor) cadenasDe(v, acumulado);\n\telse if (valor && typeof valor === \"object\") for (const v of Object.values(valor)) cadenasDe(v, acumulado);\n\treturn acumulado;\n}\n\nexport interface EntradaDecision {\n\ttool: string;\n\targs: Record<string, unknown>;\n\tmodo: ModoPermiso;\n\tagentDir: string;\n\t/**\n\t * Directorio del usuario, para resolver `~` y `$HOME` antes de comparar.\n\t *\n\t * Opcional y con `homedir()` por defecto para que el punto de llamada no\n\t * tenga que importarlo: `agent-session.ts` es de upstream y está en el tope\n\t * del presupuesto de fork, donde un `import` nuevo cuesta un hunk. Las\n\t * pruebas lo pasan siempre, así que siguen siendo deterministas.\n\t */\n\thome?: string;\n\t/** Tools que el usuario ha denegado explícitamente en su configuración. */\n\tdenegadas?: string[];\n\t/**\n\t * La política de máquina, para las pruebas.\n\t *\n\t * Opcional, y por defecto la del sistema. NO se lee de una variable de\n\t * entorno a propósito: una variable la pone el propio usuario, así que sería\n\t * la puerta trasera que anula toda la política de un `export`. Quien ya\n\t * ejecuta código en este proceso puede saltársela igual —la frontera es el\n\t * proceso, no esta función—, pero no debe haber un camino cómodo.\n\t */\n\tmaquina?: LecturaDePolitica;\n}\n\n/**\n * Lee `permissions.denied` de la configuración, tolerando que no exista.\n *\n * El bloque `permissions` es un `Record<string, unknown>` en settings, así que\n * lo que hay ahí no está tipado y puede ser cualquier cosa: se filtra a cadenas\n * en vez de confiar. Una entrada mal escrita tiene que perderse ella sola, no\n * tumbar la política entera y con ella la sesión.\n */\nexport function leerDenegadas(config: { permissions?: Record<string, unknown> } | undefined): string[] {\n\tconst lista = (config?.permissions as { denied?: unknown } | undefined)?.denied;\n\treturn Array.isArray(lista) ? lista.filter((x): x is string => typeof x === \"string\") : [];\n}\n\nexport function decidir({\n\ttool,\n\targs,\n\tmodo,\n\tagentDir,\n\thome,\n\tdenegadas,\n\tmaquina: maquinaDada,\n}: EntradaDecision): Decision {\n\tconst casa = home ?? homedir();\n\tconst nivel = nivelDe(tool);\n\n\t// 1. Rutas protegidas. Por delante de todo lo demás, incluido `yolo`.\n\t// `ejecucion` cuenta como escritura: un `bash` puede reescribir el\n\t// settings.json igual de bien que un `write`.\n\tconst escribiendo = nivel !== \"lectura\";\n\tfor (const cadena of cadenasDe(args)) {\n\t\tconst que = rutaProtegida(normalizar(cadena, casa), agentDir, escribiendo);\n\t\tif (que) {\n\t\t\treturn {\n\t\t\t\tveredicto: \"denegada\",\n\t\t\t\tpolitica: \"ruta-protegida\",\n\t\t\t\tmotivo: `Denegado: ${que}. No es configurable y no cambia con el modo de permisos. Si el usuario necesita ese dato, pídeselo.`,\n\t\t\t};\n\t\t}\n\t}\n\n\t// 2. Ficheros generados. Escribir en uno es trabajo que desaparece en la\n\t// siguiente regeneración, y entre medias deja la fuente y el generado\n\t// diciendo cosas distintas.\n\t//\n\t// Va después de las rutas protegidas y antes del modo, porque no es\n\t// negociable por comodidad — pero sí lo levanta el usuario diciéndolo, y\n\t// el mensaje se lo explica al modelo para que lo pida en vez de insistir.\n\tif (escribiendo) {\n\t\tfor (const cadena of cadenasDe(args)) {\n\t\t\t// El filtro es \"se puede abrir\", no \"parece una ruta\".\n\t\t\t//\n\t\t\t// La versión anterior exigía una barra, y con eso `edit` sobre\n\t\t\t// `api.pb.go` —sin directorio— se colaba entera: la guarda estaba\n\t\t\t// puesta, las pruebas en verde, y el fichero generado se editó igual.\n\t\t\t// Solo salió ejecutando el CLI de verdad.\n\t\t\t//\n\t\t\t// Lo que sí se descarta antes de tocar el disco es lo que no puede ser\n\t\t\t// un nombre de fichero: contenido con saltos de línea (el `new_string`\n\t\t\t// de una edición) o cadenas absurdamente largas.\n\t\t\tif (cadena.length === 0 || cadena.length > 400 || cadena.includes(\"\\n\")) continue;\n\t\t\tlet contenido: string;\n\t\t\ttry {\n\t\t\t\tcontenido = readFileSync(normalizar(cadena, casa), \"utf-8\");\n\t\t\t} catch {\n\t\t\t\tcontinue; // no existe o no es un fichero: no hay nada que proteger\n\t\t\t}\n\t\t\tconst marca = marcaDeGenerado(contenido);\n\t\t\tif (marca) {\n\t\t\t\treturn { veredicto: \"denegada\", politica: \"fichero-generado\", motivo: motivoDeGenerado(cadena, marca) };\n\t\t\t}\n\t\t}\n\t}\n\n\t// 3. Lo que el usuario ha denegado. También sobrevive a `yolo`: si no,\n\t// \"denegar\" significaría \"denegar hasta que al agente le convenga\".\n\tif (denegadas?.includes(tool)) {\n\t\treturn {\n\t\t\tveredicto: \"denegada\",\n\t\t\tpolitica: \"deny-de-usuario\",\n\t\t\tmotivo: `Denegado: el usuario ha desactivado \\`${tool}\\` en su configuración.`,\n\t\t};\n\t}\n\n\t// 4. La política de MÁQUINA, que el usuario no puede editar.\n\t//\n\t// Va aquí y no en cada llamante porque `decidir()` la invocan siete\n\t// sitios: un techo que haya que acordarse de poner en cada uno no es un\n\t// techo. Y va antes del modo porque su único poder es recortarlo.\n\t//\n\t// Los dos ámbitos que había —global y proyecto— son ficheros del propio\n\t// usuario, así que la línea con la que el CISO prohíbe `yolo` la borraba\n\t// él mismo con un editor de texto. Ver `politica-de-maquina.ts`.\n\tconst maquina = maquinaDada ?? politicaDeMaquina();\n\tif (maquina.politica?.denegadas?.includes(tool)) {\n\t\treturn {\n\t\t\tveredicto: \"denegada\",\n\t\t\tpolitica: \"deny-de-maquina\",\n\t\t\tmotivo:\n\t\t\t\t`Denegado: \\`${tool}\\` está desactivada por la política de este equipo` +\n\t\t\t\t(maquina.politica.motivo ? `: ${maquina.politica.motivo}` : \".\") +\n\t\t\t\t\" No la levanta el modo de permisos ni la configuración del usuario.\",\n\t\t};\n\t}\n\tconst efectivo = recortarModo(modo, maquina);\n\n\t// 5. El modo de la sesión, ya recortado.\n\tif (nivel === \"lectura\") return { veredicto: \"permitida\", politica: `modo-${efectivo}`, motivo: \"\" };\n\n\t// Que el recorte se NOMBRE en `politica` no es cosmético: ese campo va al\n\t// libro de sesión, así que un auditor puede ver que la decisión la tomó la\n\t// política del equipo y no la preferencia del usuario.\n\tconst sufijo = efectivo === modo ? \"\" : \"-por-politica-de-maquina\";\n\n\tswitch (efectivo) {\n\t\tcase \"plan\":\n\t\t\treturn {\n\t\t\t\tveredicto: \"denegada\",\n\t\t\t\tpolitica: `modo-plan${sufijo}`,\n\t\t\t\tmotivo: \"En modo plan no se actúa: propón el cambio en vez de aplicarlo.\",\n\t\t\t};\n\t\tcase \"manual\":\n\t\t\treturn { veredicto: \"preguntar\", politica: `modo-manual${sufijo}`, motivo: \"\" };\n\t\tcase \"auto\":\n\t\t\treturn nivel === \"escritura\"\n\t\t\t\t? { veredicto: \"permitida\", politica: `modo-auto${sufijo}`, motivo: \"\" }\n\t\t\t\t: { veredicto: \"preguntar\", politica: `modo-auto${sufijo}`, motivo: \"\" };\n\t\tdefault:\n\t\t\treturn { veredicto: \"permitida\", politica: `modo-yolo${sufijo}`, motivo: \"\" };\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"politica.js","sourceRoot":"","sources":["../../../src/core/aprobacion/politica.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atajos.d.ts","sourceRoot":"","sources":["../../../src/core/arranque/atajos.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAoBH;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAE9D;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"atajos.d.ts","sourceRoot":"","sources":["../../../src/core/arranque/atajos.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAoBH;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAE9D;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6D5D"}
|
|
@@ -69,6 +69,26 @@ export async function arrancar(args) {
|
|
|
69
69
|
console.log(VERSION);
|
|
70
70
|
return;
|
|
71
71
|
}
|
|
72
|
+
// Atajo 1b: `ada ps` — broker por proyecto inspeccionable.
|
|
73
|
+
// Vive aquí y no en `runServeCommand` para no añadir un hunk a
|
|
74
|
+
// `src/cli/serve-command.ts` (upstream-owned). El coste de este atajo
|
|
75
|
+
// es cero hunks: este fichero es Ada-owned.
|
|
76
|
+
if (args[0] === "ps" || args[0] === "broker-ps") {
|
|
77
|
+
const { getBroker } = await import("../broker/index.js");
|
|
78
|
+
const { runPs } = await import("../broker/ps.js");
|
|
79
|
+
const json = args.includes("--json");
|
|
80
|
+
const reap = args.includes("--reap");
|
|
81
|
+
const broker = getBroker();
|
|
82
|
+
if (reap) {
|
|
83
|
+
const result = broker.reapOrphans();
|
|
84
|
+
console.log(result.narrativa);
|
|
85
|
+
if (json)
|
|
86
|
+
console.log(JSON.stringify({ reaped: result.reaped }, null, 2));
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
console.log(runPs(broker, { json }));
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
72
92
|
// `--offline` tiene que estar puesto en el entorno antes de que cualquier
|
|
73
93
|
// módulo lo lea. Es lo mismo que hace `main()` en sus primeras líneas; se
|
|
74
94
|
// repite aquí porque los subcomandos del atajo 2 ya no pasan por allí.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atajos.js","sourceRoot":"","sources":["../../../src/core/arranque/atajos.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH;;;;;;;;;GASG;AACH,KAAK,UAAU,eAAe
|
|
1
|
+
{"version":3,"file":"atajos.js","sourceRoot":"","sources":["../../../src/core/arranque/atajos.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exportacion.d.ts","sourceRoot":"","sources":["../../../src/core/audit/exportacion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,MAAM,OAAO,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7E,wBAAgB,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAwB1E;AA+DD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC7B,QAAQ,EAAE,eAAe,EAAE,EAC3B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,OAAO,EACjB,KAAK,SAA2B,GAC9B,MAAM,CAiNR","sourcesContent":["/**\n * El libro de sesión convertido en un documento que un DPO puede archivar.\n *\n * El libro (`libro.ts`) es JSONL encadenado: perfecto para verificar, ilegible\n * para quien tiene que responder a una inspección. Un delegado de protección de\n * datos hace dos preguntas concretas y ninguna se contesta leyendo hashes:\n *\n * · ¿QUÉ FICHEROS se trataron? (art. 30 RGPD, registro de actividades)\n * · ¿QUÉ SALIÓ DE LA MÁQUINA y hacia dónde? (art. 44 y siguientes)\n *\n * Sale Markdown y no JSON a propósito: el requisito es \"un fichero que se pueda\n * releer sin nuestro CLI\", y un JSONL con hashes no lo cumple aunque\n * técnicamente se pueda abrir. Texto plano, tablas, y las limitaciones escritas\n * dentro del propio documento.\n *\n * Dos cosas que conviene no deshacer:\n *\n * 1. **Minimización.** Aquí no se reconstruye nada que el libro no guarde ya. El\n * libro guarda del fichero su hash antes y después, nunca el texto, así que\n * este informe tampoco puede tenerlo. Y por si acaso se vuelve a pasar\n * `redactSensitive` sobre el documento entero: es el artefacto que SALE de la\n * máquina y se archiva, y una entrada escrita antes de que existiera un patrón\n * de redacción no puede convertirse en una fuga al exportarla.\n * 2. **Tres estados, no dos.** \"No hubo transferencias\" y \"no se pudo\n * determinar\" no son lo mismo, y un informe que saliera vacío en los dos casos\n * haría pasar por limpia una sesión cuya cadena está rota. La ausencia de un\n * registro solo prueba algo si el registro es completo y verificable: si la\n * cadena no verifica, si el libro está vacío o si la lectura se topó con el\n * tope, este informe dice que no lo sabe en vez de afirmar que no pasó nada.\n */\n\nimport { redactSensitive } from \"../memory-engine/security.ts\";\nimport type { EntradaDelLibro, Veredicto } from \"./libro.ts\";\n\n/**\n * ¿Podemos afirmar que algo NO ocurrió?\n *\n * Es el tipo que impide colapsar los tres estados en dos. Solo con\n * `{ sabemos: true }` tiene sentido escribir \"no hubo transferencias\"; en los\n * demás casos el informe dice qué le falta para saberlo.\n */\nexport type Certeza = { sabemos: true } | { sabemos: false; porque: string };\n\nexport function certezaDe(veredicto: Veredicto, truncado: boolean): Certeza {\n\tif (truncado) {\n\t\treturn {\n\t\t\tsabemos: false,\n\t\t\tporque:\n\t\t\t\t\"la lectura del libro alcanzó su tope de entradas, así que hay registros anteriores que este informe no ha mirado.\",\n\t\t};\n\t}\n\tif (!veredicto.valido) {\n\t\treturn {\n\t\t\tsabemos: false,\n\t\t\tporque:\n\t\t\t\t`la cadena de hashes NO verifica${veredicto.alteradaEn ? ` (falla en la entrada del ${fecha(veredicto.alteradaEn)})` : \"\"}. ` +\n\t\t\t\t\"Sobre un libro alterado, la ausencia de un registro no prueba que el hecho no ocurriera: puede haberse borrado.\",\n\t\t};\n\t}\n\tif (veredicto.comprobadas === 0) {\n\t\treturn {\n\t\t\tsabemos: false,\n\t\t\tporque:\n\t\t\t\t\"el libro está vacío. No hay registro de actividad, que no es lo mismo que un registro de que no hubo actividad.\",\n\t\t};\n\t}\n\treturn { sabemos: true };\n}\n\n/** Escapa lo que va dentro de una celda para que no rompa la tabla. */\nfunction celda(valor: unknown): string {\n\tif (valor === null || valor === undefined || valor === \"\") return \"—\";\n\treturn String(valor)\n\t\t.replace(/\\|/g, \"\\\\|\")\n\t\t.replace(/[\\r\\n]+/g, \" \");\n}\n\nfunction tabla(cabeceras: string[], filas: string[][]): string {\n\treturn [\n\t\t`| ${cabeceras.join(\" | \")} |`,\n\t\t`| ${cabeceras.map(() => \"---\").join(\" | \")} |`,\n\t\t...filas.map((f) => `| ${f.map(celda).join(\" | \")} |`),\n\t].join(\"\\n\");\n}\n\n/**\n * Una sección con su tercer estado.\n *\n * `nadaOcurrio` es la frase afirmativa (\"No hubo transferencias\"); solo se\n * imprime cuando la certeza lo permite. Si no, se imprime por qué no se sabe.\n */\nfunction seccion(\n\ttitulo: string,\n\tbase: string,\n\tcabeceras: string[],\n\tfilas: string[][],\n\tnadaOcurrio: string,\n\tcerteza: Certeza,\n\t/**\n\t * Hasta dónde llega la observación de esta sección. Se rinde SIEMPRE.\n\t *\n\t * Antes el alcance viajaba dentro de `nadaOcurrio`, que solo se imprime\n\t * cuando la tabla está vacía. Es decir: la advertencia de «hay caminos que no\n\t * miro» desaparecía justo cuando había datos, y el DPO leía una tabla de\n\t * transferencias con pinta de completa y ninguna salvedad. La salvedad\n\t * importa MÁS con filas que sin ellas: sin filas se está afirmando una\n\t * ausencia, con filas se está insinuando una lista exhaustiva.\n\t */\n\talcance?: string,\n): string {\n\tconst cuerpo =\n\t\tfilas.length > 0\n\t\t\t? tabla(cabeceras, filas)\n\t\t\t: certeza.sabemos\n\t\t\t\t? `**${nadaOcurrio}.** El libro está completo y su cadena verifica, así que esta ausencia es un dato, no un hueco.`\n\t\t\t\t: `**No se pudo determinar.** No se puede afirmar que ${nadaOcurrio.toLowerCase()}: ${certeza.porque}`;\n\treturn `## ${titulo}\\n\\n_${base}_\\n\\n${cuerpo}${alcance ? `\\n\\n> **Alcance de esta sección.** ${alcance}` : \"\"}`;\n}\n\n/** Fecha y hora sin la parte de milisegundos, que a un DPO no le dice nada. */\nfunction fecha(ts: string): string {\n\treturn ts.replace(\"T\", \" \").replace(/\\.\\d+Z$/, \"Z\");\n}\n\ntype Suceso = Record<string, unknown>;\n\nfunction esTipo(e: EntradaDelLibro, tipo: string): boolean {\n\treturn e.suceso.tipo === tipo;\n}\n\n/**\n * Rinde el informe.\n *\n * `entradas` debe venir de más antigua a más reciente (`libro.leer` las da al\n * revés). `truncado` es true si la lectura se topó con su límite, porque\n * entonces no se puede afirmar ninguna ausencia.\n */\nexport function informeParaDpo(\n\tentradas: EntradaDelLibro[],\n\tveredicto: Veredicto,\n\ttruncado: boolean,\n\tahora = new Date().toISOString(),\n): string {\n\tconst certeza = certezaDe(veredicto, truncado);\n\tconst sesiones = [...new Set(entradas.map((e) => e.sesion))];\n\n\tconst integridad = veredicto.valido\n\t\t? `**Cadena de hashes ÍNTEGRA** — ${veredicto.comprobadas} entrada(s) reverificadas de punta a punta.`\n\t\t: `**CADENA ALTERADA** tras ${veredicto.comprobadas} entrada(s) correctas` +\n\t\t\t(veredicto.alteradaEn ? `, en la del ${fecha(veredicto.alteradaEn)}` : \"\") +\n\t\t\t(veredicto.ficheroAlterado ? ` (fichero \\`sesion/${veredicto.ficheroAlterado}\\`)` : \"\") +\n\t\t\t\". Las entradas anteriores a esa siguen siendo fiables; a partir de ahí, no.\";\n\n\tconst partes: string[] = [\n\t\t\"# Registro de actividades de tratamiento — Ada\",\n\t\t[\n\t\t\t`- **Generado:** ${fecha(ahora)}`,\n\t\t\t`- **Entradas del libro:** ${entradas.length}${truncado ? \" (lectura truncada por el tope)\" : \"\"}`,\n\t\t\t`- **Sesiones cubiertas:** ${sesiones.length > 0 ? sesiones.map((s) => `\\`${s}\\``).join(\", \") : \"ninguna\"}`,\n\t\t\t`- **Periodo:** ${entradas.length > 0 ? `${fecha(entradas[0].ts)} → ${fecha(entradas[entradas.length - 1].ts)}` : \"—\"}`,\n\t\t].join(\"\\n\"),\n\t\t`## Prueba de integridad\\n\\n${integridad}`,\n\n\t\tseccion(\n\t\t\t\"1. Ficheros tratados\",\n\t\t\t\"Art. 30 RGPD — registro de actividades de tratamiento. Del fichero consta su HASH antes y después, nunca su contenido.\",\n\t\t\t[\"Fecha\", \"Fichero\", \"Hash antes\", \"Hash después\", \"Vía\", \"Base\"],\n\t\t\tentradas\n\t\t\t\t.filter((e) => esTipo(e, \"fichero\"))\n\t\t\t\t.map((e) => {\n\t\t\t\t\tconst s = e.suceso as Suceso;\n\t\t\t\t\treturn [\n\t\t\t\t\t\tfecha(e.ts),\n\t\t\t\t\t\tString(s.ruta ?? \"\"),\n\t\t\t\t\t\ts.antes === null ? \"(no existía)\" : celda(s.antes),\n\t\t\t\t\t\ts.despues === null ? \"(borrado)\" : celda(s.despues),\n\t\t\t\t\t\tcelda(s.tool),\n\t\t\t\t\t\t\"ejecución solicitada por el usuario en la sesión\",\n\t\t\t\t\t];\n\t\t\t\t}),\n\t\t\t\"No se trató ningún fichero\",\n\t\t\tcerteza,\n\t\t),\n\n\t\tseccion(\n\t\t\t\"2. Transferencias de datos fuera de la máquina\",\n\t\t\t\"Art. 44 y ss. RGPD — destinatarios. Consta el DOMINIO de destino; nunca la ruta ni los parámetros, que es donde viajan los tokens.\",\n\t\t\t[\"Fecha\", \"Destino\", \"Resultado\", \"Motivo\"],\n\t\t\tentradas\n\t\t\t\t.filter((e) => esTipo(e, \"red\"))\n\t\t\t\t.map((e) => {\n\t\t\t\t\tconst s = e.suceso as Suceso;\n\t\t\t\t\treturn [fecha(e.ts), String(s.dominio ?? \"\"), s.permitido ? \"permitida\" : \"BLOQUEADA\", celda(s.motivo)];\n\t\t\t\t}),\n\t\t\t// La frase dice su ALCANCE, y no es un matiz de estilo.\n\t\t\t//\n\t\t\t// El `fetchImpl` vigilado que produce estos sucesos lo reciben el fetch\n\t\t\t// genérico, los scrapers y los proveedores de búsqueda — las tools web.\n\t\t\t// NO lo reciben (comprobado con `grep -c anotarRed`, cero en los tres):\n\t\t\t// el cliente MCP (`core/mcp/client.ts`, que sí acepta `fetchImpl` y hoy\n\t\t\t// no se le pasa), el broker de blobs y la API de Telegram.\n\t\t\t//\n\t\t\t// Un DPO estricto diría que hablar con un MCP remoto ES una\n\t\t\t// transferencia, y tendría razón. Escribir \"No hubo transferencias\" a\n\t\t\t// secas sería afirmar una ausencia que este registro no puede sostener:\n\t\t\t// «no lo he mirado» vendido como «no hay», en el documento donde eso se\n\t\t\t// paga más caro. Mientras la cobertura no sea completa, la frase nombra\n\t\t\t// lo que sí cubre y quien lea el informe puede juzgar el resto.\n\t\t\t// La frase sigue diciendo su ALCANCE, y sigue sin ser un matiz de estilo.\n\t\t\t//\n\t\t\t// Cubierto: el fetch genérico, los scrapers, los proveedores de búsqueda\n\t\t\t// y —desde `core/web/registro-red.ts`— el cliente MCP, que es el que un\n\t\t\t// DPO preguntaría primero porque habla con servidores de terceros.\n\t\t\t//\n\t\t\t// Fuera todavía, MEDIDO recorriendo cada `fetch(` del código y no\n\t\t\t// copiado del comentario anterior —que decía «el broker de ficheros\n\t\t\t// grandes y Telegram» y no era la lista real—:\n\t\t\t//\n\t\t\t// modes/interactive/interactive-mode.ts:1326 aviso a pi.dev\n\t\t\t// extensions/llama/huggingface.ts:76 descarga de modelos\n\t\t\t// extensions/llama/client.ts:171,216 servidor llama\n\t\t\t// core/credenciales/cliente.ts:62,79 broker de credenciales\n\t\t\t// cli/telemetria-command.ts colector OTLP (--enviar)\n\t\t\t//\n\t\t\t// (`computer/motor/{bridge,cdp}.ts` y `utils/management-http.ts` van a\n\t\t\t// 127.0.0.1: no salen de la máquina y no son transferencias.)\n\t\t\t//\n\t\t\t// Mientras queden caminos sin cubrir, la salvedad nombra lo que sí\n\t\t\t// sostiene, y se rinde TAMBIÉN cuando la tabla tiene filas: con datos\n\t\t\t// se está insinuando una lista exhaustiva, que es peor que declarar una\n\t\t\t// ausencia.\n\t\t\t\"No hubo transferencias por los caminos que este registro observa\",\n\t\t\tcerteza,\n\t\t\t\"esta tabla cubre las herramientas web (fetch, scrapers y buscadores) y los servidores \" +\n\t\t\t\t\"MCP. Quedan FUERA, medido recorriendo cada llamada a `fetch` del código: el aviso de \" +\n\t\t\t\t\"instalación a `pi.dev` (activado por defecto; se apaga con `PI_OFFLINE`, `PI_TELEMETRY=0` \" +\n\t\t\t\t\"o `enableInstallTelemetry: false`), las descargas de modelos de Hugging Face, el \" +\n\t\t\t\t\"servidor llama, el broker de credenciales y el envío al colector OTLP de \" +\n\t\t\t\t\"`ada-cli telemetria --enviar` (que manda forma y nunca contenido, pero sale igual de \" +\n\t\t\t\t\"esta máquina). Sobre esos caminos este informe no afirma \" +\n\t\t\t\t\"nada, ni que hubo transferencias ni que no las hubo. Una lista que parece exhaustiva y \" +\n\t\t\t\t\"no lo es engaña más que una ausencia declarada.\",\n\t\t),\n\n\t\tseccion(\n\t\t\t\"3. Modelos invocados (encargados del tratamiento)\",\n\t\t\t\"Art. 28 RGPD — cada llamada a un modelo remoto es un tratamiento por cuenta de un tercero. Consta el proveedor y el volumen, nunca el contenido del prompt.\",\n\t\t\t[\"Fecha\", \"Proveedor\", \"Modelo\", \"Tokens entrada\", \"Tokens salida\", \"Fin\"],\n\t\t\tentradas\n\t\t\t\t.filter((e) => esTipo(e, \"modelo\"))\n\t\t\t\t.map((e) => {\n\t\t\t\t\tconst s = e.suceso as Suceso;\n\t\t\t\t\treturn [\n\t\t\t\t\t\tfecha(e.ts),\n\t\t\t\t\t\tcelda(s.proveedor),\n\t\t\t\t\t\tcelda(s.modelo),\n\t\t\t\t\t\tcelda(s.entrada),\n\t\t\t\t\t\tcelda(s.salida),\n\t\t\t\t\t\tcelda(s.motivoParada),\n\t\t\t\t\t];\n\t\t\t\t}),\n\t\t\t\"No se invocó ningún modelo\",\n\t\t\tcerteza,\n\t\t),\n\n\t\tseccion(\n\t\t\t\"4. Comandos ejecutados\",\n\t\t\t\"Trazabilidad de la actuación automatizada. `origen` distingue lo que decidió el agente de lo que tecleó la persona.\",\n\t\t\t[\"Fecha\", \"Comando\", \"Código\", \"Origen\", \"Encierro\"],\n\t\t\tentradas\n\t\t\t\t.filter((e) => esTipo(e, \"comando\"))\n\t\t\t\t.map((e) => {\n\t\t\t\t\tconst s = e.suceso as Suceso;\n\t\t\t\t\tconst argv = Array.isArray(s.argv) ? s.argv.join(\" \") : \"\";\n\t\t\t\t\treturn [\n\t\t\t\t\t\tfecha(e.ts),\n\t\t\t\t\t\t`\\`${celda(argv.slice(0, 120))}\\``,\n\t\t\t\t\t\tcelda(s.codigo),\n\t\t\t\t\t\ts.origen === \"usuario\" ? \"usuario\" : \"agente\",\n\t\t\t\t\t\tcelda(s.sandbox),\n\t\t\t\t\t];\n\t\t\t\t}),\n\t\t\t\"No se ejecutó ningún comando\",\n\t\t\tcerteza,\n\t\t),\n\n\t\tseccion(\n\t\t\t\"5. Herramientas y decisiones de política\",\n\t\t\t\"Art. 12 AI Act — qué se permitió y con qué base. `Base` es la regla de la política de aprobación que dejó pasar la llamada.\",\n\t\t\t[\"Fecha\", \"Herramienta\", \"Resultado\", \"Decisión\", \"Base\"],\n\t\t\tentradas\n\t\t\t\t.filter((e) => esTipo(e, \"tool\"))\n\t\t\t\t.map((e) => {\n\t\t\t\t\tconst s = e.suceso as Suceso;\n\t\t\t\t\treturn [fecha(e.ts), celda(s.nombre), s.ok ? \"ok\" : \"ERROR\", celda(s.decision), celda(s.motivo)];\n\t\t\t\t}),\n\t\t\t\"No se ejecutó ninguna herramienta\",\n\t\t\tcerteza,\n\t\t),\n\n\t\tseccion(\n\t\t\t\"6. Credenciales utilizadas\",\n\t\t\t\"Quién usó qué cuenta y cuándo. Consta el identificador de la credencial, jamás su valor.\",\n\t\t\t[\"Fecha\", \"Acción\", \"Proveedor\", \"Credencial\", \"Resultado\", \"Cliente\"],\n\t\t\tentradas\n\t\t\t\t.filter((e) => esTipo(e, \"credencial\"))\n\t\t\t\t.map((e) => {\n\t\t\t\t\tconst s = e.suceso as Suceso;\n\t\t\t\t\treturn [\n\t\t\t\t\t\tfecha(e.ts),\n\t\t\t\t\t\tcelda(s.accion),\n\t\t\t\t\t\tcelda(s.proveedor),\n\t\t\t\t\t\ts.credencialId === null ? \"(ninguna activa)\" : celda(s.credencialId),\n\t\t\t\t\t\tcelda(s.resultado),\n\t\t\t\t\t\tcelda(s.cliente),\n\t\t\t\t\t];\n\t\t\t\t}),\n\t\t\t\"No se utilizó ninguna credencial\",\n\t\t\tcerteza,\n\t\t),\n\n\t\t[\n\t\t\t\"## Minimización de datos\",\n\t\t\t\"\",\n\t\t\t\"Este documento contiene la FORMA de lo que ocurrió, no su contenido. En concreto NO incluye:\",\n\t\t\t\"\",\n\t\t\t\"- el contenido de ningún fichero del usuario (solo el hash SHA-256 truncado de antes y después);\",\n\t\t\t\"- el texto de ningún prompt ni respuesta del modelo (solo el recuento de tokens);\",\n\t\t\t\"- ninguna credencial, clave ni token (solo el identificador de la credencial usada);\",\n\t\t\t\"- ninguna ruta ni parámetro de las URL a las que se salió (solo el dominio de destino).\",\n\t\t\t\"\",\n\t\t\t\"Un registro de cumplimiento que copiara los datos tratados sería un segundo almacén de justo\",\n\t\t\t\"aquello que el RGPD manda minimizar.\",\n\t\t].join(\"\\n\"),\n\n\t\t[\n\t\t\t\"## Qué NO prueba este documento\",\n\t\t\t\"\",\n\t\t\t\"- La cadena de hashes prueba **integridad interna** (que el libro no se editó ni reordenó), no **procedencia**:\",\n\t\t\t\" no acredita quién lo generó ni en qué máquina. Para no-repudio hace falta firma con clave gestionada (HSM).\",\n\t\t\t\"- Borrar el fichero de una sesión completa no lo detecta la cadena; sí detecta cualquier modificación dentro de una sesión.\",\n\t\t\t\"- El informe refleja lo que el agente registró. No es una auditoría independiente del código resultante.\",\n\t\t].join(\"\\n\"),\n\t];\n\n\t// Segunda pasada de redacción sobre el documento ya rendido. El libro ya\n\t// redacta al escribir, pero este es el artefacto que SALE de la máquina y se\n\t// archiva: una entrada anotada antes de que existiera un patrón no puede\n\t// convertirse en una fuga al exportarla. Sobre Markdown no hay nada que\n\t// romper, así que lo peor que puede pasar es que redacte de más.\n\treturn redactSensitive(`${partes.join(\"\\n\\n\")}\\n`, \"strict\");\n}\n"]}
|
|
1
|
+
{"version":3,"file":"exportacion.d.ts","sourceRoot":"","sources":["../../../src/core/audit/exportacion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,MAAM,OAAO,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7E,wBAAgB,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAwB1E;AA+DD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC7B,QAAQ,EAAE,eAAe,EAAE,EAC3B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,OAAO,EACjB,KAAK,SAA2B,GAC9B,MAAM,CAmNR"}
|
|
@@ -171,7 +171,8 @@ export function informeParaDpo(entradas, veredicto, truncado, ahora = new Date()
|
|
|
171
171
|
// extensions/llama/client.ts:171,216 servidor llama
|
|
172
172
|
// core/credenciales/cliente.ts:62,79 broker de credenciales
|
|
173
173
|
// cli/telemetria-command.ts colector OTLP (--enviar)
|
|
174
|
-
//
|
|
174
|
+
// cli/update-cli.ts auto-actualización
|
|
175
|
+
// core/blobs/uploaders.ts espejo público de blobs
|
|
175
176
|
// (`computer/motor/{bridge,cdp}.ts` y `utils/management-http.ts` van a
|
|
176
177
|
// 127.0.0.1: no salen de la máquina y no son transferencias.)
|
|
177
178
|
//
|
|
@@ -183,9 +184,10 @@ export function informeParaDpo(entradas, veredicto, truncado, ahora = new Date()
|
|
|
183
184
|
"MCP. Quedan FUERA, medido recorriendo cada llamada a `fetch` del código: el aviso de " +
|
|
184
185
|
"instalación a `pi.dev` (activado por defecto; se apaga con `PI_OFFLINE`, `PI_TELEMETRY=0` " +
|
|
185
186
|
"o `enableInstallTelemetry: false`), las descargas de modelos de Hugging Face, el " +
|
|
186
|
-
"servidor llama, el broker de credenciales
|
|
187
|
+
"servidor llama, el broker de credenciales, el envío al colector OTLP de " +
|
|
187
188
|
"`ada-cli telemetria --enviar` (que manda forma y nunca contenido, pero sale igual de " +
|
|
188
|
-
"esta máquina)
|
|
189
|
+
"esta máquina) y la auto-actualización (`ada-cli update`, descarga del binario del " +
|
|
190
|
+
"canal de releases con SHA-256 verificado). Sobre esos caminos este informe no afirma " +
|
|
189
191
|
"nada, ni que hubo transferencias ni que no las hubo. Una lista que parece exhaustiva y " +
|
|
190
192
|
"no lo es engaña más que una ausencia declarada."),
|
|
191
193
|
seccion("3. Modelos invocados (encargados del tratamiento)", "Art. 28 RGPD — cada llamada a un modelo remoto es un tratamiento por cuenta de un tercero. Consta el proveedor y el volumen, nunca el contenido del prompt.", ["Fecha", "Proveedor", "Modelo", "Tokens entrada", "Tokens salida", "Fin"], entradas
|